8. Language into law
Draft 1, the author session, 3 November 2026. Provenance tags as plan.md §2; the record is renavondata/jack at 6ebea1a.
The figure: Rex
Fuller's King Rex meant well. He abolished the old law and set out to make a new one, and failed eight times: he decided cases one at a time and made no rules; then he made rules and kept them secret; then he published them but applied them to acts already done; then they were unintelligible; then they contradicted each other; then they demanded the impossible; then he changed them so often that no subject could act on them; and finally, blaming his experts, he took the bench himself, judged every case and his judgements bore no relation to the code. His subjects never had a law, though they had a king who kept saying things. The point of the parable is that saying is not legislating. Between what the sovereign says and what binds there is a passage, and every step of it can fail. This chapter is that passage in jack: how a sentence in English becomes a refusal in a workflow, and how much of what was said ever arrived.
8.1 What we have, and what it cannot do
Every mechanism built so far was built from a text — a brief that pre-stated it, pins a reviewer named, code a builder wrote to the text — and every text began as a sentence someone said. The sovereign files a wish: "a stuck or red pull request goes back to its Builder, not to me" [assize #125, claude/guy-acts-6-13oct.csv, 12 October]. Counsel rules, or proposes a ruling: "C1 opens ledger-first". A reviewer writes: "the statistic was pre-stated before the world was". None of these is a rule. A rule, in this book's sense, is something that refuses; and a large language model given a sentence and asked to obey it is Rex's eighth failure made cheap — a judge whose judgements bear no necessary relation to the code, because the model that reads the rule is the party it binds. Chapter 4 §4.5 called this congruence, and said prompt-based harnesses fail it outright. The question is what does not.
8.2 The passage
The passage from a wish to a refusal has five stations on jack, and the record shows each.
A wish. The sovereign's preference, in his words, never scored [CHARTER §7]. On assize it was an issue labelled wish; on jack it is still a sentence to counsel, and a decision entry when it is a budget, a veto or a promotion [SPEC §5, decision kinds]. A wish binds nothing. What it does is name a value the rest of the passage must serve.
A brief. Counsel turns a wish, a ruling and the state of the record into a brief: a text with a fixed skeleton — precondition, purpose, scope, order of acts and the clock, the statistic with its null and its bet, the attack list, pre-stated criteria, the reviewer's pins each with a named mutant and a passing twin, a refusal list, stop-and-report conditions, deliverables, and counsel's own forecasts on the window [transcripts/BRIEF-C1b-draft.md, section list; BRIEF-C2a-draft.md]. The brief is where English stops being free: every criterion in it must be decidable from the log and the tree, so that status.py can print met or not without anyone reading prose [tools/status.py; CHARTER A2.4]. A brief that cannot be reduced to such lines is sent back by the next station.
A cold read. Before a brief binds anything it is read by a session of another model family that did not write it, filed through the runner, and the read returns BLOCK with findings or obligations [transcripts/REVIEW-C1b-v2.md … -v7.md; REVIEW-C2a-v1.md, -v2.md; REVIEW-C2b-v1.md … -v6.md]. Each finding is a sentence about a sentence — "a regrouping statistic", "a loosened success condition", "a permissive repair attribution" [REPORT.md, C1a §4.3, as transcript] — and each read carries a forecast on whether its finding stands, scored on the ledger as review.forecast [jack score @6ebea1a: five resolved, mean p 0.192, all 0]. The brief is cut to what the reads leave standing. Amendment A4 went through three versions this way [CHARTER A4, preamble]; the clerk's brief through seven.
A build to the text. A builder session writes code to the brief and nothing else, under a key that may touch neither the pins nor the vectors that will judge it [SPEC §10.8; CHARTER A2.9]; a reviewer session registers the pins — a mutant that must be killed and a twin that must pass — under a key that may touch nothing else. "Code is written to a text Guy has read; questions of what the charter allows are put to Guy as rulings and recorded" [CHARTER A2.10]. A builder that finds the text contradictory records a spec_conflict entry and stops; it does not make the tests pass [A2.9].
A refusal. The last station is the judge, which refuses; and the test that a sentence has arrived there is the pin: a rule exists when its mutant is killed. This is proplang's discipline, carried forward unchanged — "a green that cannot fail is a non-functional alarm" [chapter 14 §14.2] — and it is the compiler's output check. A brief names its pins before the window opens; the window's first criterion is that every one is KILLED with a passing twin in the tests run on main at the exit prefix [BRIEF-C1b §Pre-stated criteria; BRIEF-C2a §Pins, eighteen of them].
8.3 What stays in English, and why
Not everything compiles, and the design is explicit about what does not. The kernel reads a forecast's claim as a non-empty string and nothing more [SPEC §5]; what the claim means is settled by a resolver reading evidence, and the resolver is a session. So the passage from English to outcome runs through world types: a text, amended by proposal and never retroactively, that says for each type what outcome 1 means, what the evidence file is, and who may resolve — "Outcome 1 iff the screen's report … states the forecast's condition met in so many words"; "Outcome 1 iff the cited reports/ file in that repository, at a named commit, states it" [transcripts/world-types.md]. That is an event contract: English on both ends, a hash and a key in the middle. The C2a brief tightens it further for the two streams the value test uses — an event is identified by fields, its cutoff is a timestamp, its outcome is a comparison of two instants on a fetched page [BRIEF-C2a §Scope, the streams] — and "a forecast lacking the identity or cutoff fields of its stream is not an event of the statistic".
The decision fix is the other place English remains: its subject is free text naming what the sovereign repaired by hand [SPEC §5]. The kernel does not read it; the acts classifier and the W4 line count it. English is where a thing is named; the count is where it binds.
8.4 The measure: how much compiled
Fuller's eighth failure has a number in jack. tools/enforcement.json lists each principle the court claims to hold and names its enforcer as code or hand [tools/enforcement.json]; status.py prints the rows every window, and the clerk's brief made it a criterion that the rows that layer moved must read code [BRIEF-C1b §Pre-stated criteria, 7; status.py --subject C1b … @6b800e14, "map" lines]. At C1b's exit seven of nine rows read code — validity, admission, the irreversible, W1, W3, W4, A5 — and two read hand: that no party acts except through entries, enforced by sessions; and the election of proposers, which had no witness yet [tools/enforcement.json]. The map is the compiler's coverage report. It says, for each sentence the court believes about itself, whether a mutant would be killed.
Two further measures are less flattering and the book reports them. The code cap has moved four times against the pre-statement that preceded it — 4,500 to 5,500 in a day, then 6,200, 6,900, 7,800 — each a finding that a brief had estimated its own size wrong [SPEC §10, the paragraph before the scope block; seqs 5, 29, 197, 367]. And the procedure-to-object ratio, which chapter 2 §2.5 introduced as the court's guard against making court, is also a measure of this chapter's passage: every cold read, reply, brief version and amendment is a procedure entry, and the ratio ran at 127 : 32 in the ledger's first window before the world entered at scale [status.py --subject C1a … @6b800e14].
8.5 Why the compiler has people in it, and what that costs
The passage is not a program. Two of its five stations are sessions of language models — the cold read and the build — and one is a person. The book does not pretend otherwise, and the reason is chapter 2's: a brief's correctness is a semantic property, and no procedure decides it by inspection. What can be done is what the passage does: make every station leave an entry, score the stations that make claims (the reads' forecasts), separate the parties by key so that no station can pass its own output (the builder cannot touch the pins; the reviewer cannot touch the code), and measure the output by what it refuses. Rex's failures were failures of a man who had no passage at all; the court's are failures of stations, each visible, each with a number.
The cost is wall-clock time and the sovereign's attention, and both are counted. The clerk's brief cost seven reads at about an hour and three dollars each before it bound [REPORT.md, C1a §4.3, as transcript]; the amendments cost five pairs of entries in seventeen days [chapter 9]. What the passage buys is the only kind of law a self-modifying system can be governed by: one its subjects cannot read into something else.
8.6 What this chapter leaves open
A sentence can now become a refusal, and we can count how many did. But the sentences change. A wish is withdrawn, a brief is found wrong by its own window, a rule in the charter turns out to restart a test that must not restart. The compiled law has to change under itself — by its own procedure, forward only, with the irreversible gated — and chapter 9 shows it doing so five times.
8.7 What would show this chapter wrong
A row of the enforcement map reading code whose mutant is not killed, or a principle the court holds that has no row: the first is a false coverage claim, the second a sentence that never entered the passage. A brief criterion that status.py cannot print — English that did not reduce — which A2.4 forbids and a cold read should catch. A spec_conflict entry that a builder should have made and did not, visible as tests made to pass against a contradictory text. And the honest one: the passage's cost rising faster than its coverage — more reads, more versions, more cap moves per code row — which the acts tables and the ratio would show, and which is the predecessor's F7 arriving by another road.