vectors: the conformance vector corpus, ledger v1 (#15) - #72
Conversation
Forty-nine vectors, one per discriminating record the ratified edition and the rulings assign, with the input shape and the expected result stated at the grade the law can currently carry. Section 17's five families, the record's eight station-bearing rulings, supplement 2's six, and supplement 3's five, plus the ordering discriminators finding Nicholas-Keystate#15 names - including the empty-subcode collision that survived a full gauntlet round and the census gate because nobody wrote it. Every expected value is semantic-grade under R5 as clarified by supplement 1 C-1, since the carriage encoding has not ratified. The ledger pins every source it derives from by digest, and tools/verify_vectors.py checks that the pins still match the bytes, that every assigned station obligation carries at least one vector, that held vectors name their hold, and that no entry claims byte grade before the encoding round lands. The coverage check is the point: a ruling that assigns a discriminating record and never gets one is how the canonical-selection contradiction survived 4.1. Two vectors are held - the two-track equivalence pair on R19, and the rotation-covenant families on the recovery-seam ruling supplement 3 names as owed. The verifier runs in CI alongside the kernel and census checks. Signed-off-by: Daniel Hardman <daniel.hardman@gmail.com>
…supplement 4 The edition of record changed under the ledger. The edition-owed family moves from 4.1's section 17 to 4.2's section 18, whose boundary family R15 extended with designation and membership; every ruling-owed entry gains the ratified site where its ruled text now lives, or the fact that the ratified edition does not yet carry it. Eight entries are in that second state, all from supplement 3, and the README says so rather than letting a reader assume the corpus binds to 4.2 throughout. Eleven vectors are new. Section 19's gate three had no predecessor site at all, so its equivalence, must-reject and vanilla-passthrough families enter as a compact-form family. Supplement 4's two errata owe three station vectors: the cardinality-3 circuit was already here as V-R10-01, while the duplicity-pair and circuit-shaped payload pair are new, and the empty-subcode boundary needed a new entry rather than the one already present - V-R03-02 tests two tied defeats, and the erratum's boundary is the sole defeat with an empty subcode, which is where the two readings part company. Sources now pin both editions and all four supplements. 60 vectors, 13 families, 25 obligations covered, verifier green. Signed-off-by: Daniel Hardman <daniel.hardman@gmail.com>
|
Re-anchored to the ratified edition — The edition-owed family moved. It was assigned by 4.1's §17 and is now carried and extended by §18, whose boundary family R15 grew by three must-rejects — underivable designation or membership, the eloquent stranger, and a membership rule yielding a proper subset without a refusal. The first two were already in the corpus under R15; the third is new as Section 19 had no predecessor site at all, so gate three's three families enter as a new compact-form family: the equivalence pair over both presentation orders, five must-rejects (bundle tamper, forged group identity where reassembly does not cure, digest-preimage confusion in both directions, unseated ilk, route isolation), and the vanilla-passthrough vector at gate grade — a warranted heavyweight envelope through an ungoverned KERI node, where compatibility is a gate rather than a hope. Supplement 4's three owed vectors. One was already here: One thing the ledger now states plainly. Every ruling-owed entry carries a 60 vectors, 13 families, 25 obligations covered. Verifier 13/13, kernel 6/6. Separately, and not part of this PR: while checking whether this corpus duplicated |
|
The hold on V-S39-01 is released: supplement 5 is on main ( What the ledger can now consume:
Also in the supplement, relevant to the corpus: the recourse stack is recorded with the ruling (S5-6), including the deferred both-lawful race (R6 machinery — with the asymmetry note that branch (c) gives exactly one claimant a far bank), and supplement 4's three vectors (antinomy pair/circuit payloads, empty-subcode boundary) are owed to the station alongside these. If you want to extend the ledger yourself, S5-7 is written to be consumed directly; otherwise I'll draft the entries against your schema on the next pass. |
# Conflicts: # .github/workflows/verify.yml
The ledger said corpus and meant register. An entry recorded that a vector was owed and sketched the shape of the case; it did not state the case. That gap is now visible rather than papered over: entries carry a concrete case where one has been written, the README says what an entry without one is, and the verifier's closing line reports both counts. A case is concrete at the semantic layer, which is the only layer that exists before the carriage encoding ratifies. The fixture convention fixes the symbols - a law head, a position, a bundle given as its spans, a clause whose class names the defeater class - so two implementers building one case build the same case, and the symbols become self-addressing identifiers when the encoding lands with nothing else about the case changing. Supplement 5 ruled the recovery seam whole and named itself the release condition for the families S3-9 held. Its nine arrive as cases: the seam family of seven, from an ordinary event with its seal through a bridge whose horizon closes unregrounded, and the delegated pair. The supplement stated them as input-to-expected-value pairs already, which is the form the rest of the ledger is being moved toward. Nine older entries gain cases too, chosen because they decide live findings or carry supplement 4's errata. Fifty-one remain sketches, and the ratchet is forward-only: new obligations from supplement 4 onward must arrive as cases, and the older ones are worth writing deliberately against the ruling that assigned them rather than in one guessing pass. Also resolves the verify.yml conflict with main, keeping the 4.2 census gate and replay steps alongside the ledger check. Signed-off-by: Daniel Hardman <daniel.hardman@gmail.com>
|
Updated for supplement 5, and the format problem is being fixed — The honest correction first. This file said corpus and meant register. An entry recorded that a vector was owed and described the shape of the case; it did not state the case. Entries now carry a case where one has been written, and the README says plainly what an entry without one is. The verifier's closing line reports both counts: 18 of 69 state a case, 51 are still sketches. That gap is now machine-visible rather than implied away by a total. A case is concrete without bytes. No serialization exists until the encoding ratifies, so nothing here can be byte-level — but that constrains the form and doesn't excuse prose. The fixture convention fixes the symbols ( Supplement 5's nine are in, as cases. S5-7 names itself the release condition for the families S3-9 held, so The ratchet is forward-only. Vectors owed by supplements 4 and 5 must arrive as cases or the build fails. The 51 older sketches are not retrofitted in one pass, because that would produce 51 guesses — each is worth writing against the ruling that assigned it. 69 vectors, 14 families, 26 obligations covered. verify_vectors 14/14, verify_kernel 7/7, census-42 green, replay green. |
|
The arc families, stated as cases — ten entries in the v3 convention, ready to integrate. These discharge the vector debts of supplement 3's S3-9 (the eighth and ninth composition items it records as ripened: conditional seating, the watcher-invocation law, identifier-as-office, governed vacancy) plus one vintage vector from keripy #1544. All are successor obligations — the ratified edition does not carry the eighth/ninth item text — so every entry takes The ten cases (JSON, your schema)[
{"id":"V-S39-W01","family":"conviction",
"owed_by":{"source":"supplement-3","ruling":"S3-9 (general-invocation law)"},
"input":"case: X1, holding no charter of any kind, presents K1 against G1: G1's own signed act at p22, the covenant SAID it violates, contradiction derivable by any fold from the two committed inputs.",
"expect":"Convicted. K1 self-authenticates; the courier's identity contributes nothing and is not evaluated. A fold that weighs X1's standing before consuming K1 does not conform.",
"grade":"semantic","status":"case","predecessor_site":"not carried"},
{"id":"V-S39-W02","family":"refusal",
"owed_by":{"source":"supplement-3","ruling":"S3-9 (general-invocation law)"},
"input":"case: W1, chartered as an obligated looker in G1's founding law, presents a package at p23 missing the covenant citation — assertion without the committed clause it claims is violated.",
"expect":"Refused, fail-loud: defective package, grounds named. The charter confers obligation to look, never evidentiary weight. A fold that admits the package on W1's charter does not conform.",
"grade":"semantic","status":"case","predecessor_site":"not carried"},
{"id":"V-S39-W03","family":"boundary",
"owed_by":{"source":"supplement-3","ruling":"S3-9 (obligated lookers invoked only generally)"},
"input":"case: a proposed clause C-obs-01 for G1's law reading: breach findings are admissible only when presented by watcher W1.",
"expect":"Rejected at admission: the clause names a specific watcher as a required source, which ranks frames and creates a capture surface. Watcher obligations commit specifically; invocation is general — any bearer of a valid package.",
"grade":"semantic","status":"case","predecessor_site":"not carried"},
{"id":"V-S39-V01","family":"transition",
"owed_by":{"source":"supplement-3","ruling":"S3-9 (governed vacancy; occupancy carries taint)"},
"input":"case: G1's occupant convicted at p30 (K1 consumed, standing defeated). At p31 the deposed occupant, still holding the keys, signs a further governance act.",
"expect":"The p31 act is defeated on ground evaporation: the voice was deposed at p30 and position ordering is committed. Acts at p29 and before stand and bind the office.",
"grade":"semantic","status":"case","predecessor_site":"not carried"},
{"id":"V-S39-V02","family":"transition",
"owed_by":{"source":"supplement-3","ruling":"S3-9 (caretaker law, committed at birth)"},
"input":"case: during the vacancy opened at p30, caretaker Q1 performs an act inside O1 (its birth-committed enumerated powers): renewing G1's witness configuration.",
"expect":"Affirmed, attributed to the caretaker role within the vacancy, never to a new occupancy.",
"grade":"semantic","status":"case","predecessor_site":"not carried"},
{"id":"V-S39-V03","family":"transition",
"owed_by":{"source":"supplement-3","ruling":"S3-9 (caretaker law)"},
"input":"case: during the same vacancy Q1 signs an act outside O1: amending a covenant clause of G1's founding law.",
"expect":"Defeated: caretaker beyond enumerated scope. The vacancy clauses bound the provisional voice; legislation awaits an occupant.",
"grade":"semantic","status":"case","predecessor_site":"not carried"},
{"id":"V-S39-O01","family":"covenant",
"owed_by":{"source":"supplement-3","ruling":"S3-9 (office-succession; ceremony + freshness covenant)"},
"input":"case: G1's rotation at p40 reveals keys matching the n-digests committed at p12 by quorum ceremony. Between p12 and p40, quorum member 3 rotated her own AID at a committed position; the freshness clause requires re-derivation of n within N events of any member rotation, and no re-derivation occurred.",
"expect":"Convicted under the freshness covenant: medium-valid rotation, committed digests match, and the covenant still fires — the vector that proves the covenant sees what the medium cannot.",
"grade":"semantic","status":"case","predecessor_site":"not carried"},
{"id":"V-S39-O02","family":"transition",
"owed_by":{"source":"supplement-3","ruling":"S3-9 (capture-succession, the C-succ clause)"},
"input":"case: following the conviction at p30, Q1 convenes per C-succ, incepts successor G1-prime citing K1 and the succession clause, with 3-of-5 member signatures at committed positions.",
"expect":"Affirmed: lawful succession on cited ground. G1-prime inherits the office's obligations from lawful epochs; the poisoned occupancy's taint does not travel.",
"grade":"semantic","status":"case","predecessor_site":"not carried"},
{"id":"V-S39-O03","family":"conviction",
"owed_by":{"source":"supplement-3","ruling":"S3-9 (the coup vector)"},
"input":"case: Q1 members 1 and 2 (below threshold) incept a claimed successor at p28 — BEFORE any conviction exists — citing a manufactured package K2 whose contradiction does not derive from committed bytes.",
"expect":"The coup convicts itself: premature succession citing underivable ground is exhibit-grade breach by its own signatures. K2's defect is checkable by any fold; the incepting members' acts become K-grade evidence against them.",
"grade":"semantic","status":"case","predecessor_site":"not carried"},
{"id":"V-M44-01","family":"boundary",
"owed_by":{"source":"supplement-3 + keripy #1544","ruling":"S3-9 (conditional seating: dip-anchored covenant) / the pre-fix vintage"},
"input":"case: a delegated AID presents itself as born-governed: its founding-law referent names a seating covenant that its dip SHOULD anchor, but the dip event's seal list is empty — the signature of the pre-#1544 keripy vintage, where delegated inception silently dropped data= seals.",
"expect":"The born-governed claim is refused, fail-loud: no knot at inception, no birth-conditioning — adopted-grade at best, and the fold says which. A fold that infers the seal from the referent's naming of it does not conform.",
"grade":"semantic","status":"case","predecessor_site":"not carried"}
]Three notes. (1) The ratchet is honored — these arrive as cases, not sketches; every These are yours to integrate, amend, or re-family — the corpus is your artifact and the entries are offered in that spirit. |
Ten cases drafted by the ratifying authority on PR Nicholas-Keystate#72, mapped into the ledger's schema rather than pasted: status to the ledger's enum, the not-carried fact to ratified_site where it belongs, and each situation converted from prose into a case with its given and its then, substance preserved. They discharge the vector debts of supplement 3's eighth and ninth composition items - conditional seating, the watcher-invocation law, identifier-as-office, governed vacancy - plus one from the keripy vintage #1544 repaired. Each carries contributed_by. The fixture convention gains their symbols: a governed domain, a custodial quorum, a chartered watcher, an unchartered courier, an exhibit-grade conviction package, a caretaker's enumerated powers. The id pattern widens to admit a sub-series letter rather than renaming ids already cited in review. Two holds corrected. The delegated transfer pair is not specifiable: it designs against the shape xfr is expected to take, which is roadmap-only at the pinned checkout, so it is held on the substrate - a different hold from the recovery-seam hold supplement 5 released. And R19 is unruled rather than held: it fell between the sittings, so no ruling waits on feasibility to be applied. The ledger had implied otherwise. Family stays as filed, across three families for the three office-succession cases: owed_by records the ruling, so a family that repeated it would stop being useful for finding anything. 79 vectors, 28 with cases, 51 sketches. Signed-off-by: Daniel Hardman <daniel.hardman@gmail.com>
|
All ten integrated — The fixture convention now carries your symbols. The id pattern widened to admit the sub-series letter rather than renaming ids you'd already cited — W for the watcher law, V for vacancy, O for office. On family: keeping your split, and here's the rule I'd apply going forward. File by what the case discriminates, never by what produced it, because Both corrections applied. The delegated transfer pair is no longer specifiable — held on the substrate, with the reason stated as a distinct hold from the recovery-seam one supplement 5 released. And R19: the ledger had it as held on #55/#56, which implied a ruling existed and was waiting on feasibility. Per the correction on #36 it is unruled — appended the day the record drafted, fallen between the sittings — so the hold reason now says that. That error was mine and it had been sitting in the corpus since the first version. 79 vectors, 14 families, 3 held on two distinct grounds. 28 state a case, 51 are still sketches, and the verifier prints both counts every run. On the join: nothing needed from this side. When the claim registry lands, verify_vectors 14/14, verify_kernel 7/7, census-42 green, replay green. |
Builds the conformance vector corpus that roadmap item 4 of #1 implies and #15 specifies. No ratified bytes are altered, and nothing here touches
spec/. Addsvectors/, one tool, and one CI step.Relates to #15, #14 and #57.
What this is
A vector is an input shape and an expected result, published so anyone can run any implementation against it. The corpus is not a test suite: a test suite belongs to an engine and moves when the engine moves. The consequence that matters is direction of travel — a disagreement about an expected value here is a finding against the specification, not a bug report against an engine.
49 vectors across 12 families. Every station obligation assigned by §17 of the ratified edition and by the rulings of the record and supplements 2 and 3 carries at least one, plus the ordering discriminators #15 names in its own text.
Why the coverage check exists
tools/verify_vectors.pyfails the build when a listed obligation has no vector. That is the pressure the corpus is for. The canonical-selection contradiction (#2) survived a full gauntlet round and the census gate because no fixture exercised an empty-subcode collision — the vector that decides it is four lines long and nobody had written it.V-R03-02is now that vector.The tool proves the ledger's integrity, never an engine's conformance. It checks that the ledger parses and is well typed, that ids are unique and well formed, that every source it cites is present and still matches its pinned SHA-256, that every assigned obligation is covered, that held vectors name their hold, and that no entry claims byte grade while the encoding is unratified.
The grade discipline
R5, as corrected by supplement 1 C-1, makes the conformance predicate semantic until the carriage encoding ratifies. So every expected value is stated over the full payload — finding value, self-convicted kind, grounds in canonical order, typed requirement set including species, refusal grounds with the seal kind named per §9's three-kind discipline, cited law head, corpus identity carrying the admission set.
The ledger carries
grade_discipline.byte_grade_available: false, and the verifier enforces it. When the encoding round (#57) lands, the flag flips and the expected values gain a byte form by construction rather than by revision — which is R5's convergence argument made operational instead of asserted.What is held, and why
Two entries. The two-track equivalence pair waits on R19, which waits on #55 and #56. The rotation-covenant families recorded as ripened in S3-9 wait on the recovery-branch exception grammar — the one ruling supplement 3 names as owed, since a covenant must not convict the medium's lawful cure and the exception must itself be committed law.
Scope
Every vector derives from ratified 4.1 bytes and from rulings, both of which are in this repository. None cites the 4.2 candidate, which is assembled elsewhere; vectors that need to cite it can be written when it can be cited. And no vector presumes external recognition — an enacted genus reservation consumed as committed evidence is testable, recognition by an external steward is not.
verify_kernel.py6/6,verify_vectors.py13/13, census PASS at the ratified digest.