I think there is a gap in the ratified 4.2 bytes (sha256 68cc5c9b7164b33dffcf7b705a0d1301fe108c647d35638fec61d52d29b2775a). Nothing ratified is falsified and no replay breaks, but in at least 3 places the spec requires a kind of citation that's impossible.
Section 5 gives a clause exactly one identifier (its SAID): "A clause is the committed unit of law: SAID-addressed bytes in the GEL, carrying one or more predicates and their codomain mapping — the citable atom that grounds cite and disclosure binds to" (L1198-1201).
Three places seem to need something else.
A defeated finding "SHALL carry its defeater class and its citation: the violated or superseding clause's identifier" (L1641-1643). Take the merit case, where the citation is the violated clause. A SAID names those bytes exactly and tells the party who lost nothing else. There is no way to look the clause up, and no way to tell whether it is the same rule they read last year under a different edition. Amend it and the SAID changes, so the two versions are digests with nothing joining them. The same holds for the clauses a pending finding names as making a requirement required (L1647-1651), which is a record and also an instruction to somebody who now has to go and read the rule.
(BTW, checking that span turned up something adjacent. Section 8.1 says the ground of a defeated finding is "the citation of the defeating clause or superseding act" (L1519-1521), holding clause and act apart. Section 8.3 asks for "the violated or superseding clause's identifier" (L1641-1643), which makes both of them clauses. An act is not a clause under section 5's ladder, and the superseded class is glossed "a later lawful act displaced the subject" (L1775), which agrees with 8.1 rather than 8.3. I may be missing something. But it looks like the payload rule asks for the identifier of a thing its own class definition calls an act.)
The covenant seal is second case. Section 10 says what the construct is for: "What the seal irreducibly does is name the clause set a successor is answerable to, forward, at a committed coordinate — the promise survives amendment; the seal carries the question, and the fold supplies the answer" (L2032-2034). A promise that outlives amendment has to name provisions. It cannot name bytes, because the same section rules that "where byte equality is achievable, the digest seal is the honest kind, and a covenant seal over digest-sealable content is itself a defect" (L2039-2041). A covenant seal over SAIDs is a digest seal with the wrong label on it. What the text says instead is that the sealed set "names clause identifiers into the sealing domain's designated governance registry; a portable clause language ... is chartered to the encoding round and not designed here" (L2041-2045). The thing the seal needs is named and deferred in the same sentence. And a covenant seal is written by a different domain, which has no way to repair it later when the sealed domain's law moves.
Canonical selection is the third example. "Where multiple defeats are simultaneously available for one question, the finding SHALL cite the lexicographic minimum of (defeater-class rank, citation identifier, subcode)" (L1766-1769). Over SAIDs the middle term sorts digests. Two verifiers agree, which is what the rule is for, but the party who lost is shown an arbitrary one of the defeats against them. Underneath it sits the subcode, "assigned by the cited clause's own committed enumeration; where the clause defines none, the subcode is empty and orders last" (L1776-1779): a numbering scheme inside a clause, optional, unnamed, and left to each domain to invent. That is the missing piece showing up small.
I'm not claiming that any ratified sentence is wrong. Each of the three sites is coherent on its own and simply assumes something the document never defines. Replay is fine, because a finding's ground names bytes and bytes are what replay needs. The section 7 aggregate construction (L1475-1495) is untouched.
Here's my proposal for a repair. Give law a second kind of reference, besides a SAID: a locator, the committed name of a provision, steady across every revision of that provision's bytes, assigned when the block is drafted, carried inside the block's own SAID preimage, and never reused within a lineage even after repeal. The two ways of referencing do different work. The SAID says which bytes and therefore which content. The locator says which stable topic, in a way that the topic can be found by ordinary human lookup. A locator joined to a law head is the form that can travel, and the clause SAID comes back out of that pair by a fold over the GEL, so there is no resolver, no registry, and nobody to trust. That is what makes the construct admissible here, and it fits the room L1645-1646 already leaves for a citation that is "explicit or uniquely re-derivable from a committed referent."
The rule underneath it is short. Evidence cites bytes; law cites provisions. A citation that has to be immune to amendment names a SAID. A citation that has to survive amendment names a locator. A record that is a fact and an instruction at once carries both.
None of this is new. The Akoma Ntoso naming convention (OASIS Standard, 2019-02-21, https://docs.oasis-open.org/legaldocml/akn-nc/v1.0/akn-nc-v1.0.html) splits Work from Expression for this reason, and says that acts citing other acts cite at Work level whatever the version. Statute does the same with a permanent section number and an edition date, and amending bills carry the pair in the open. Utah's bill headers read "AMENDS: 36-12-12, as last amended by Chapter 55, Laws of Utah 1993." That is the locator plus prior version the superseded class is missing.
A draft seed with a candidate grammar, the pinning rule, and the site-by-site application sits at spec/custos-4.3-seed-locators.md on branch spec/4.3-seed-locators. I offer it to the #77 docket. It is unpinned until declared final, and the drafting authority owns the wording.
One thing about order. The seed has three parts and they do not have to arrive together. The rule above is independent of the rest. A block format for the successor's own bytes can be checked by machine. But handing out locators to this document's provisions should wait for the clean-root decision that #77 lists last because it frames the rest. A locator is only worth having once it holds still, and naming strata that may be excised is premature and wasteful.
Relates to #77 (offered as a founding input), #80 (complementary, in that the other finding is about where the seal's kind is written and this one about how its clause set is named), #75, and #57.
I think there is a gap in the ratified 4.2 bytes (sha256 68cc5c9b7164b33dffcf7b705a0d1301fe108c647d35638fec61d52d29b2775a). Nothing ratified is falsified and no replay breaks, but in at least 3 places the spec requires a kind of citation that's impossible.
Section 5 gives a clause exactly one identifier (its SAID): "A clause is the committed unit of law: SAID-addressed bytes in the GEL, carrying one or more predicates and their codomain mapping — the citable atom that grounds cite and disclosure binds to" (L1198-1201).
Three places seem to need something else.
A defeated finding "SHALL carry its defeater class and its citation: the violated or superseding clause's identifier" (L1641-1643). Take the merit case, where the citation is the violated clause. A SAID names those bytes exactly and tells the party who lost nothing else. There is no way to look the clause up, and no way to tell whether it is the same rule they read last year under a different edition. Amend it and the SAID changes, so the two versions are digests with nothing joining them. The same holds for the clauses a pending finding names as making a requirement required (L1647-1651), which is a record and also an instruction to somebody who now has to go and read the rule.
The covenant seal is second case. Section 10 says what the construct is for: "What the seal irreducibly does is name the clause set a successor is answerable to, forward, at a committed coordinate — the promise survives amendment; the seal carries the question, and the fold supplies the answer" (L2032-2034). A promise that outlives amendment has to name provisions. It cannot name bytes, because the same section rules that "where byte equality is achievable, the digest seal is the honest kind, and a covenant seal over digest-sealable content is itself a defect" (L2039-2041). A covenant seal over SAIDs is a digest seal with the wrong label on it. What the text says instead is that the sealed set "names clause identifiers into the sealing domain's designated governance registry; a portable clause language ... is chartered to the encoding round and not designed here" (L2041-2045). The thing the seal needs is named and deferred in the same sentence. And a covenant seal is written by a different domain, which has no way to repair it later when the sealed domain's law moves.
Canonical selection is the third example. "Where multiple defeats are simultaneously available for one question, the finding SHALL cite the lexicographic minimum of (defeater-class rank, citation identifier, subcode)" (L1766-1769). Over SAIDs the middle term sorts digests. Two verifiers agree, which is what the rule is for, but the party who lost is shown an arbitrary one of the defeats against them. Underneath it sits the subcode, "assigned by the cited clause's own committed enumeration; where the clause defines none, the subcode is empty and orders last" (L1776-1779): a numbering scheme inside a clause, optional, unnamed, and left to each domain to invent. That is the missing piece showing up small.
I'm not claiming that any ratified sentence is wrong. Each of the three sites is coherent on its own and simply assumes something the document never defines. Replay is fine, because a finding's ground names bytes and bytes are what replay needs. The section 7 aggregate construction (L1475-1495) is untouched.
Here's my proposal for a repair. Give law a second kind of reference, besides a SAID: a locator, the committed name of a provision, steady across every revision of that provision's bytes, assigned when the block is drafted, carried inside the block's own SAID preimage, and never reused within a lineage even after repeal. The two ways of referencing do different work. The SAID says which bytes and therefore which content. The locator says which stable topic, in a way that the topic can be found by ordinary human lookup. A locator joined to a law head is the form that can travel, and the clause SAID comes back out of that pair by a fold over the GEL, so there is no resolver, no registry, and nobody to trust. That is what makes the construct admissible here, and it fits the room L1645-1646 already leaves for a citation that is "explicit or uniquely re-derivable from a committed referent."
The rule underneath it is short. Evidence cites bytes; law cites provisions. A citation that has to be immune to amendment names a SAID. A citation that has to survive amendment names a locator. A record that is a fact and an instruction at once carries both.
None of this is new. The Akoma Ntoso naming convention (OASIS Standard, 2019-02-21, https://docs.oasis-open.org/legaldocml/akn-nc/v1.0/akn-nc-v1.0.html) splits Work from Expression for this reason, and says that acts citing other acts cite at Work level whatever the version. Statute does the same with a permanent section number and an edition date, and amending bills carry the pair in the open. Utah's bill headers read "AMENDS: 36-12-12, as last amended by Chapter 55, Laws of Utah 1993." That is the locator plus prior version the superseded class is missing.
A draft seed with a candidate grammar, the pinning rule, and the site-by-site application sits at spec/custos-4.3-seed-locators.md on branch spec/4.3-seed-locators. I offer it to the #77 docket. It is unpinned until declared final, and the drafting authority owns the wording.
One thing about order. The seed has three parts and they do not have to arrive together. The rule above is independent of the rest. A block format for the successor's own bytes can be checked by machine. But handing out locators to this document's provisions should wait for the clean-root decision that #77 lists last because it frames the rest. A locator is only worth having once it holds still, and naming strata that may be excised is premature and wasteful.
Relates to #77 (offered as a founding input), #80 (complementary, in that the other finding is about where the seal's kind is written and this one about how its clause set is named), #75, and #57.