Skip to content

spec: seed the 4.3 cycle with the locator — a second way to reference law - #88

Open
dhh1128 wants to merge 7 commits into
Nicholas-Keystate:mainfrom
dhh1128:spec/4.3-seed-locators
Open

spec: seed the 4.3 cycle with the locator — a second way to reference law#88
dhh1128 wants to merge 7 commits into
Nicholas-Keystate:mainfrom
dhh1128:spec/4.3-seed-locators

Conversation

@dhh1128

@dhh1128 dhh1128 commented Aug 26, 2026

Copy link
Copy Markdown
Collaborator

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.

dhh1128 and others added 7 commits August 26, 2026 18:36
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 Nicholas-Keystate left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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:

  1. 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.
  2. The locator-mismatch refusal is a genuine fourth member of §10's conviction family, mechanical, and the naming rule extends cleanly.
  3. 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.
  4. §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.

@Nicholas-Keystate

Copy link
Copy Markdown
Owner

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 reviews/rounds/text-identity-doctrine-2026-08-27/ (397f559): the charter, the seat-facing packet (five members unordered, five questions ending in a constructive exhibit), and your filings pinned as round bytes.

The round runs as two administrations. Our side — two blind seats — is sealed; our-side-readiness.txt in the round dir carries our verdicts' digests as the tamper-evident readiness signal (the real MANIFEST.txt is born at exchange, when the bytes it names are present). You administer the diversity leg: seats of your choosing, count and lineages your call, under your own convention, run against seat-packet.md as committed. Since you filed three of the five members, you run seats rather than sit — your filings enter as advocacy on the same footing as ours, per the packet's own warning.

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants