Markdown for LLMs
nb-07 solutions — A document is not yet a proven fact
The source Markdown for this article. Copy it into your assistant or download it as a text file.
# nb-07 solutions — A document is not yet a proven fact *Checkable against `law test packs/examples/language-demo/register` (9 checked, 9 passed). Identifiers and code as written.* ## 1. Which conjunct fails without verification? **Answer: `authentic(d, "urn:demo:northbridge:verifier", "verified")`.** The `Accept` rule needs all five conjuncts: `edge`, `evidence_status`, `authentic`, `available`, `current`. The stored record supplies the document and its status, and the `support` line supplies the link — but only a `verification` declaration with a matching document hash, verifier URN and outcome `verified` can support the `authentic` conjunct. With the `verification VPass` block deleted, nothing feeds `authentic`, so `Accept` never fires and `accepted(e)` is never derived. Record plus link are transport: they say *what the paper claims*, never *who checked it*. ## 2. What does the missing policy line switch off? **Answer: `evidence_policy FilePolicy` in the context; it switches off the entire acceptance computation.** Without the policy selection, the engine never runs `FilePolicy` at all — the hand-asserted `edge`, `evidence_status`, `authentic`, `available` and `current` facts are ordinary assertions with no rule consuming them, because the only rule that would consume them (`Accept`) is wired into the unselected policy. Support stays transport: filed, hashed and linked, but never evaluated. One context line is the on/off switch for the whole pipeline. ## 3. Why silence instead of an error — and what if protection were lifted? **Answer: protection discards the assertion route rather than forbidding it with an error, so the fact simply has no lawful source and the question is `NEITHER`. If `residency_proof` were removed from `protects`, the bare `assert` would become a lawful source again and `ProofAdmits` would derive `resident_admitted(ann)`: `TRUE_ONLY`.** Protection is a routing rule, not a type error: it says "this predicate may enter only through the evidence pipeline". The assertion is ignored as a source, no derivation fires, and the engine reports the honest outcome for an unsupported question — `NEITHER`. Lifting protection restores assertion as a source, which is exactly how the unprotected closure facts in nb-06 enter. ## 4. Refuting document: status and the deciding word **Answer: `FALSE_ONLY`; the deciding word is `refutes`.** The scenario links the verified document with `support DenyDoc refutes residency_proof(...)` instead of `supports`. A verified refuting document runs the same pipeline in the opposite direction: acceptance of a document that speaks *against* the claim yields an explicit negative, hence `FALSE_ONLY` rather than the `NEITHER` of a missing chain. One word flips the polarity of the whole result. ## How to verify ```sh law test packs/examples/language-demo/register ``` Expected: `итого: 9 проверено, 9 прошли, 0 не прошли, 0 не исполнены`. The deciding tests are `policy selected, authenticity pinned` (`TRUE_ONLY`), `without pinned authenticity support is rejected` (`NEITHER`), `without a policy support stays transport` (`NEITHER`), `bare assertion of the protected under a policy` (`NEITHER`), and `refuting document` (`FALSE_ONLY`).