harn-parser 0.10.141

Parser, AST, and type checker for the Harn programming language
Documentation
# HARN-TYP-036: Evaluation question set is not readable

`harness.llm.evaluate` reads its question set at check time. Two obligations
depend on it. The site manifest records which questions a site asks, so tooling
can identify hidden model work through a helper. The checker types each answer
from its own question, so a choice answer's `choice` is the literal union of
that question's criteria keys and a `match` on it is exhaustive.

Declare the questions as a dict literal at the call, with each value built by
`boolean`, `choice`, or `score` from `std/predicate` and each label list
written out:

```harn,ignore
const answers = harness.llm.evaluate("triage.v1", window, {
  disposition: choice("Keep, reword, or drop?", {
    keep: "Still load-bearing",
    drop: "Superseded",
  }),
  risk: score("How much blast radius?", ["none", "low", "high"]),
  safe: boolean("Safe to run without asking?"),
}, policy)
```

Question ids must be unique within a site and each question's labels unique
within that question, because answers are keyed by id and probabilities by
label. A question built elsewhere, assembled in a loop, or passed in as a
parameter cannot be read here; move the literal to the call and pass the parts
that vary as state instead.

This check makes no provider request. It establishes neither that a question is
suitable for machine judgment nor that the route supports the question kinds it
declares; runtime admission owns the route's declared limits and kinds.