spec: seed the 4.3 cycle with the locator — a second way to reference law - #88
spec: seed the 4.3 cycle with the locator — a second way to reference law#88dhh1128 wants to merge 7 commits into
Conversation
Custos gives law exactly one identity, the self-addressing digest, and then requires in three places a citation the digest cannot supply: the superseding clause's identifier in §8.3's defeated payload, the sealed clause set in §10 whose promise is meant to survive amendment, and the comparand of §8.3's canonical selection. The seed adds a locator — the committed, permanent name of a provision, carried inside the block's own SAID preimage, never reused — and the pinned form locator@lawhead that travels. The governing rule is that evidence cites bytes and law cites provisions. Includes the carriage repairs the scheme needs in this document's own text: bracketed locator tokens, one line per block, normative bullets replaced by locator-labelled blocks, and <dfn> for defining instances. Finding unfiled and ruling owed; both noted in the seed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Daniel Hardman <daniel.hardman@gmail.com>
The seed argued for one line per block and was itself wrapped at eighty columns, which was consistency with its twenty-four siblings standing in for a reason. Reflowed, so the drafting authority can judge the format by reading the proposal rather than a four-line sample inside it. Verified lossless: 2835 words before and after, ignoring blockquote markers. Doing it surfaced a better argument than the aesthetic one. Every 4.2 seed splits a sha256 pin digest across a line boundary, so the digest cannot be selected, grepped, or verified as a token without being repaired by hand first — and reading rule 2 says a pin names exact bytes. This seed had inherited the same defect in its own header; fixed here. The ratified 4.2 itself is clean, so the damage is confined to the seed corpus. tools/check-block-lines.py enforces the rule: outside fenced code blocks, every non-blank line must begin a block, and a line that begins none is a soft-wrap continuation. Scope is version-gated at 4.3 rather than kept as a grandfather list, so a new file is covered by default and migrating an old edition means reflowing it, not editing the script. Wired into verify.yml. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Daniel Hardman <daniel.hardman@gmail.com>
…icholas-Keystate#86) Section 15 makes "the bytes fail the committed corpus form" a conviction kind and glosses the form as ordering and corpus identity. Nothing in the ratified text says which characters may appear — no hits for unicode, utf-8, codepoint, charset, or any form of normaliz. That leaves a clause free to read one way and hash another. check-corpus-characters.py refuses four things: the two bidirectional overrides that force displayed order to differ from logical order (the Trojan Source class, CVE-2021-42574), the four invisibles that let two clauses render alike and hash differently, stray control characters, and text not already in NFC, which would otherwise give one rendering several possible digests. It refuses rather than repairs, because stripping an override would silently produce a clause nobody wrote. Not version-gated: the whole corpus passes today, so there is no migration to stage. Confusable detection is deliberately absent — a Cyrillic word can render as a Latin one with no script mixing at all, so per-word script mixing is the wrong test, and UTS Nicholas-Keystate#39 skeletons need Unicode data the standard library does not carry. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Daniel Hardman <daniel.hardman@gmail.com>
…inding Nicholas-Keystate#86)" This reverts commit 2c8e6ce. Signed-off-by: Daniel Hardman <daniel.hardman@gmail.com>
… drafting The seed was written before the finding existed and said so in three places. It exists now, so say which one it discharges. The ruling is still owed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Daniel Hardman <daniel.hardman@gmail.com>
The block format is provable where the locator scheme is argued, and honoring that split means they cannot share a branch. check-block-lines.py and its verify step move to spec/4.3-seed-block-format, which discharges finding Nicholas-Keystate#90. The seed here stays reflowed as the pilot for that format. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Daniel Hardman <daniel.hardman@gmail.com>
…te#85) Repair 4 carried three separable things and none of them is the locator scheme. One line per block leaves as finding Nicholas-Keystate#90 with its own seed, since a reflow is provable where this is argued. The locator's own carriage — bracketed tokens, and dropping bullets so the locator carries the enumeration — is offered separately and held on the clean-root decision. <dfn> is withdrawn until a term test exists. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Daniel Hardman <daniel.hardman@gmail.com>
Nicholas-Keystate
left a comment
There was a problem hiding this comment.
Substance-gate review at the branch bytes, against finding #85 and the ratified spans.
The finding holds, all three sites verified. §5 gives law one identity (the SAID, L1198-1201); §8.3's defeated payload, §10's covenant seal, and canonical selection each consume an identity kind the document never defines. The sharpest limb is the one the finding states quietly: the superseded defeater class describes a relation — "a later lawful act displaced the subject" — that SAID-only identity cannot carry, because amendment changes bytes, bytes are the identity, and the amended clause and its predecessor are two unrelated digests. The relation the class names is inexpressible in the record as ratified. That is a real gap, not a style complaint. (The 8.1-vs-8.3 clause/act discrepancy the finding flags in passing is a second, separable defect and should get its own line in the docket rather than riding this one silently.)
The repair's core rule is spec-grade: evidence cites bytes; law cites provisions; a record that is both fact and instruction carries both. The site-by-site table is the best part of the seed — the finding's ground stays SAID-only (immutable fact), the defeated payload carries both (fact + instruction to the losing party), the covenant seal carries locators (the promise that survives amendment), the amending enactment carries locator + prior-version SAID (Utah's own bill-header form, and exactly the payload the superseded class was missing).
The pinned-locator discipline is what makes it admissible here. locator@lawhead resolves by a fold over the GEL — no resolver, no registry, no editorial authority — and slots into §8.3's existing "uniquely re-derivable from a committed referent" allowance without amending it. The unpinned form is correctly banned from findings, receipts, and seals: resolving it would consult law-in-force at read time, the ambient input §8.3 already forbids. The Akoma Ntoso citation is apt (Work/Expression is this distinction, standardized), and the refusal of its "current at access time" default is exactly right for this record.
Checked against the coinage test (#87), and it passes all three survival prongs: an implementation must emit it (it rides in payloads the conformance predicate compares); it names a distinction ordinary language cannot make here (which-bytes vs which-provision — the document holds it at every site the seed touches); and it aligns with a cited standard's vocabulary rather than coining against it. "Locator" also imports no tone — it is a plain word doing plain work. The seed's own withdrawal of <dfn> pending a term test shows the same discipline the finding asks for.
Four things the ruling should weigh, stated for the drafting authority:
- Non-reuse is load-bearing and correctly priced. Tombstones-forever plus the
-insertion grammar means consecutive numbering is a first-draft property only. The seed says this out loud rather than promising tidiness it cannot deliver — right posture. - The locator-mismatch refusal is a genuine fourth member of §10's conviction family, mechanical, and the naming rule extends cleanly.
- The two unsettled consequences are real ruling surface, not details: canonical selection ordered by locator instead of digest is a behavior change (defensible-to-the-defeated vs arbitrary-but-deterministic — the second wants to lose, but it wants a ruling); and the subcode's possible subsumption into locator suffixes would delete a ratified construct's "defines none" branch.
- §7's free gain is verified: a locator inside each salted sub-block makes a disclosed clause self-resolving, which the aggregate's membership proof alone does not supply.
Sequencing note, endorsed: the seed's own order discipline is correct — this rule can enter now; assigning locators to this document's own provisions waits on the clean-root decision (#92 held accordingly); the reflow cost belongs to #90's seed, already merged.
Ruling posture: this adds a definition to §5 and a reading rule to §4 — ruling-grade by the record's own standard, and the drafting authority's word is owed before merge. This review recommends adoption.
|
Your #85/#86/#90, the #92 seed, and the grade-2 citation-vs-carriage question from #77 are chartered for review as one doctrine question ahead of the 4.3 sitting. Everything is committed at The round runs as two administrations. Our side — two blind seats — is sealed; Exchange law (charter §"Structure"): verdict contents cross only after both sides seal. When your leg seals, post your digests; contents exchange on mutual readiness, and everything lands in the round dir. The README notes one post-verdict input also waits on our side — it crosses with our verdicts, same law. No deadline. The sitting consumes whatever is sealed when it convenes. If you'd rather not administer, say so plainly — our two seats then stand as the whole round, and the structure survives either answer. |
A 4.3 seed offering a locator — a second way to reference law, alongside the SAID. Normative content only; the carriage work that was originally bundled here now travels separately.
Section 5 gives a clause exactly one identifier, its SAID (L1198-1201). Three ratified spans then need something a digest cannot supply: the defeated payload's citation of a violated clause (L1641-1643), the covenant seal's promise to survive amendment over a clause set it cannot name by bytes (L2032-2045), and canonical selection's sort over a citation identifier (L1766-1779). Finding #85 carries the evidence.
Four repairs, and they are one object. A locator is the committed name of a provision, steady across every revision of its bytes, carried inside the block's own SAID preimage, never reused within a lineage even after repeal. A locator joined to a law head is the form that travels, and the clause SAID comes back out of that pair by a fold over the GEL, so no resolver and no registry. A locator mismatch joins §10's conviction family as a fourth refusal. And the governing rule, which is what an implementer will otherwise get wrong: evidence cites bytes, law cites provisions.
For domains the split is properties SHALL, spelling SHOULD — a domain whose corpus is already numbered conforms without renumbering anything, which is also what makes §10's chartered-out portable clause language honest.
Three things left this PR when the three-way split was honored. One line per block is #91, since a reflow is provable where this is argued. The locator's own carriage — bracketed tokens, and dropping markdown bullets — is #92 and is held on the clean-root decision.
<dfn>is withdrawn until a term test exists, because marking up whatever currently looks like a term would canonize the unearned coinages.This does not discharge #85. A seed is an input of record and a ruling is owed. Offered to the #77 docket.
Relates to #85, #77, #80, #90, #91, and #92.