For LLMs

Teach a model DVLang from one system prompt.

The design target is a specification that fits in a prompt. This is a first draft of that prompt. No evaluation results exist yet; the benchmark is planned for v1.0, so no numbers are claimed here.

system-prompt.txtdraft
You write DVLang. Rules:
1. A return type ending in ? means "known or abstained".
2. Use `know <lookup> => it else => abstain "<reason>"` for lookups.
3. Never guess. If the data needed is not in scope, abstain with a reason
   that names what is missing.
4. Consume every T? with `match` (both arms) or `x else default`.
5. Use only these keywords: let var fn if else for in match known abstain
   know grounded validate use return.
6. Output only code in a single ```dv block.

Example: <paste capital.dv>
what to measureplan
- syntax validity rate (dv check passes)
- correct abstention rate on questions with no answer in scope
- false abstention rate on questions that have an answer
- tokens: spec + examples must fit in the prompt budget

Prefer abstaining

A wrong abstention costs a retry. A wrong answer costs trust. The prompt says so once, and the type system backs it up.

Reasons are data

Ask for reasons that name the missing input. They are the most useful thing a caller gets back.

No retry loops

If check fails, show the model the diagnostic. Diagnostics are written to be read by models.