# nb-25 solutions — Capstone case *Checkable against `law test packs/examples/language-demo/capstone` (9 checked, 9 passed, 0 failed). Tool `law 0.1.0`, language `0.2`, semantics `law.core/0.2`, std `0.2.0`. Identifiers and code as written.* ## Exercise: Bob's five values Bob files: resident with a registered car, twelve-month term, filed 1 March, no hold, single filing copy. **Answer:** 1. `capstone_ready(Bob)` is `TRUE_ONLY` — residency plus car fires `permit_eligible` upstream (same shape as Ann's `resident driver is capstone-ready`). 2. `capstone_grant(Bob)` is `TRUE_ONLY` — readiness holds and no `capstone_hold` blocks the defeasible grant (same shape as `resident driver is granted without a hold`; contrast `a hold defeats the grant`, which differs by exactly that one fact). 3. `capstone_fee(12)` is `120 EUR` — twelve months at the shared `MONTHLY_RATE` of 10 EUR (same rate as `capstone fee for three months` at 30 EUR). 4. `CapstoneTrack(12)` is `0.2` — the first row matches (direct analogue of `capstone track rewards the long term`). 5. `capstone_due(Bob, @2026-04-01)` is `TRUE_ONLY` — thirty calendar days after the 1 March filing under `CAPSTONE_DAYS` (direct analogue of `capstone deadline thirty days after filing`). Run `law test packs/examples/language-demo/capstone`: `итого: 9 проверено, 9 прошли, 0 не прошли, 0 не исполнены; код 0` — all five predictions confirmed, suite green. The minimal change that would flip value 2 to `NEITHER` is adding one `capstone_hold` fact (cost 1, per the counterfactual in section 6 of the article). ## Mini-exercise 1: no car, no grant *Checkable on a scratch copy: 9 shipped tests plus the new probe, 10 checked, 10 passed, 0 failed — or by shape against the shipped suite.* **Answer:** both `NEITHER`. Readiness needs the vehicle conjunct (`without a car nothing is ready`), and the grant needs readiness (`probe: grant silent without a car`). The choice is conjunction all the way down: no link fires on a partial file, so silence propagates from eligibility to grant. ## Mini-exercise 2: Carol's single copy *Checkable on a scratch copy (`probe: single copy, no conflict`), same shape as the deadline test.* **Answer:** `TRUE_ONLY`, no issue. A key with one value is satisfied, so no `KEY_CONFLICT` arises — the single-copy shape of `capstone deadline thirty days after filing`, which derives 1 April from one filing. The conflict in step 2 is a property of the doubled input, not of filing as such. ## Mini-exercise 3: the hold lifts *Checkable by shape against the shipped pair.* **Answer:** `TRUE_ONLY`. The file returns to the `granted without a hold` shape: an `unless` defeater leaves no residue once its condition is gone. Contrast the naive strict denial, which would have written `FALSE_ONLY` into the record — silence lifts cleanly, denial would not. ## Mini-exercise 4: Narrow decides *Checkable by shape against the appeals suite (7/7).* **Answer:** `FALSE_ONLY`. The Narrow rule reads only `second_vehicle`, so eligibility is irrelevant under it — the same `FALSE_ONLY` shape as the `narrow reading` test, which asserts the vehicle alone. Choosing Narrow means the second car decides against the permit no matter how strong the rest of the file is. ## Mini-exercise 5: the 2026 rule asleep *Checkable by shape against the sourcetime suite (20/20).* **Answer:** `NEITHER`. The executed shape of `before entry into force the 2026 rule is silent`: the 2026 rule's window has not opened at `@2025-06-01`, so it does not participate no matter how complete the facts are. The old notice is a different predicate — it holds in its window, but the question asked about the new one. ## Integrative assignment: Bob's nine values plus three twists *Checkable against the three section 4 commands: capstone 9/9, appeals 7/7, sourcetime 20/20, all green.* **Answers:** 1. `capstone_ready(Bob)` is `TRUE_ONLY` — `resident driver is capstone-ready`. 2. `capstone_grant(Bob)` is `TRUE_ONLY` — `granted without a hold`. 3. The 1 March filing is `TRUE_ONLY` with `KEY_CONFLICT` — the conflict pair; the key reports, it does not deny. 4. Under the hold the grant is `NEITHER` with readiness `TRUE_ONLY` — `a hold defeats the grant` plus the surviving readiness probe; the `unless` gates one link. 5. After the hold is lifted the grant is `TRUE_ONLY` — defeater removed, grant follows readiness again. 6. `second_permit(Bob)` under Narrow is `FALSE_ONLY` — Narrow reads only the second vehicle. 7. `second_permit(Bob)` under Broad is `TRUE_ONLY` — Broad with eligibility. 8. The 2025 `eligibility_notice` is `NEITHER` — the 2026 rule is silent before entry into force. 9. `resident_admitted` is `NEITHER` at January office knowledge, `TRUE_ONLY` at March knowledge — admission follows `knowledge_time`, and the decision-day pair shows no other clock substitutes. **Three twists — name the construct:** (a) A suspension that blocks while recorded and vanishes when cleared → `unless` on the grant (step 3: removal without denial, no residue). (b) Two defensible readings of one term → named interpretations under an `exactly_one` group with case-level selection (step 4: disagreement named, no silent default). (c) A proof dated before the filing that arrives after the decision → knowledge-gated admission via the evidence policy, not a `legal_time` shift (step 5: the proof's date never was the question; the office's knowledge is).