Skip to content

Amendment 20 to the covered-earnings correction design (dual-authority successor law) - #405

Draft
MaxGhenis wants to merge 16 commits into
masterfrom
claude/ce-design-amendment20
Draft

Amendment 20 to the covered-earnings correction design (dual-authority successor law)#405
MaxGhenis wants to merge 16 commits into
masterfrom
claude/ce-design-amendment20

Conversation

@MaxGhenis

Copy link
Copy Markdown
Contributor

Summary

The §34 Amendment-20 draft: the consolidated two-arm evidence-campaign law (missing-reason dispositions arm + purpose-authority arm over shared source infrastructure, per the 2026-08-15 charter) plus all 18 law-gap sweep dispositions from #403 — the nine CONFIRMED seams cured (incl. the §26.10.3 lifecycle-timing supersession that made the charter unratifiable as written, the §31.3↔§28.2.1 ratification join, and the 46 singleton-field-token violations blocking R04), and every SUSPECTED item either cured or enacted as a chartered probe.

Four ordered commits: §34 draft → validation contracts → historical-pin preservation → lawful-stop documentation. Draft report: sol-ce-amend20-draft-report.md (charter-conformance table, cure-coverage table, supersession self-audit).

Terminal posture (per §32.8/§33.9 precedent): prospective, unratified, inoperative. The documented continuation is the nine-step A4 source-identity sequence, recomputed manifest/pin fixpoint, final battery, same-state scratch execution, external v2 receipt, two closure-admissible verdicts (attestation triple required per the #396 lesson), operator merge, closure, and the real revision-22 repin.

Draft-stage checks all pass (targeted, inherited, full-file, collection, public boundary, black, ruff, whitespace). Operative prefix, gates.yaml, runs/, committed artifacts untouched.

Drafted by sol per the charter + #403; referee round 1 dispatching.

🤖 Generated with Claude Code

@vercel

vercel Bot commented Aug 17, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
social-security-model Ready Ready Preview Aug 21, 2026 12:20am

Request Review

@MaxGhenis

Copy link
Copy Markdown
Contributor Author

Coordination note for the A20 draft lane: the 00:22 pre-staged draft skeleton and this PR are the same plan — §34 here already implements the skeleton's limbs and TBD-until-A4 discipline, with four banked referee rounds (dual RATIFY at 69d0e55). Reconciliation and requests: ~/m6-sol-lanes/e8-ops/sol-ce-a20-draft-reconciliation-note.md. Key A4-gate item: verify every evidence-dependent count in §34 is a freeze-slot, not enacted prose; land any charter deltas as fix-4 here rather than a parallel draft.

🤖 Generated with Claude Code

@MaxGhenis

Copy link
Copy Markdown
Contributor Author

CI triage (fix-4 item for the A20 lane):

Current #405 check failures decompose as:

  • lint / build / deploy: cancellation artifacts (03:03Z, repo concurrency group) — rerun, not real.
  • pytest-shard (3.14, 2/4): real setup ERRORs across the A12/A13-era rq-catalog test family (test__fresh_rebuild__covers_all_81_documents…, seal bindings, sweeps, semantic gate). Two distinct aborts:
    • covered_earnings_correction_registry.RegistrationAborted: covered-earnings design differs across worktree and HEAD or violates the ratified-prefix/prospective-suffix boundary
    • validate_amendment13_execution_law.LawError: registry ratification closure binding is missing

Hypothesis: the draft's edits to scripts/covered_earnings_correction_registry.py put the registry in a state whose ratification context demands an A20 closure binding that lawfully cannot exist pre-ratification, breaking the catalog fixtures' _public_registry_ratification_context on the prospective-suffix branch. These tests are outside the -k "amendment18 or amendment19 or amendment20" batteries the referee rounds ran, and the draft lane's Stage-7 hygiene did collection, not execution, on the full suite — so this survived four RATIFY-bound rounds undetected.

Fix-4 shape (for the orchestrator lane per the board): either (a) defer the registry-side changes to the revision-22 repin ceremony (keeping the draft's registry byte-identical to master until activation, matching the A17/A18/A19 precedent where repins — not drafts — touch the registry), or (b) make the catalog fixtures' ratification-context loader prospective-suffix-aware. Precedent favors (a). Full-suite CI green on the branch should be a round-5 gate.

🤖 Generated with Claude Code

@MaxGhenis

Copy link
Copy Markdown
Contributor Author

fix-4 triage correction + fix-4a implementation (amendment/ceremony lane):

My 08/18 hypothesis was wrong on the mechanism. The draft never edited scripts/covered_earnings_correction_registry.py (its diff vs merge-base touches six files; the registry is not among them). What actually happens:

  • The draft pins the fail-closed architecture: current_production.reject_unratified_a20_suffix: true, the registry module byte-pinned via A20_PRODUCTION_REGISTRY_IDENTITY (blob 92a24e3a…, 55,473 bytes), production_registry_changed_by_draft: false, and the C20 receipt schema reserving the registry change to the repin's scratch transition.
  • At revision 21 the registry's suffix allowance is the vestigial A19 clause (gated DESIGN_REVISION == 20), so design_binding() lawfully aborts on any tree carrying the A20 suffix. Every A13-era catalog family funnels through _public_registry_ratification_context → the 120 shard-2 setup errors. The A19 generation avoided this by having the draft itself open the registry's suffix window (Amendment 19 to the covered-earnings correction design (source-hierarchy member-construction cure) #398, "Support ordered Amendment 19 design suffix") — an architecture this draft deliberately abandoned, without providing the interregnum resolution path the abandonment requires. Post-merge, master would carry the same unregistrable state until the repin.

fix-4a (validator-side cure; registry untouched, byte-pin preserved):

  1. _interregnum_amendment20_design_binding() in the a13 script: fast-path registry.design_binding(); on RegistrationAborted it accepts exactly one tree state — registry pins still at revision 21 (self-disarms at the revision-22 repin), worktree == HEAD, and the full immutable-prefix authentication of _amendment20_text (pinned 4,025,587-byte prefix by SHA-256 + blob OID, single boundary, single \n## , terminal LF) — then answers with the registry's own revision-21 identity (RATIFICATION_CLOSURE_BINDINGS verbatim). Any other deviation re-raises the abort.
  2. validate_ratification_operativity: interregnum branch — terminal_amendment == revision − 1 accepted only at revision 21 with _amendment20_text re-authentication; ordinary revision − 2 law unchanged otherwise.
  3. §34.9.1 pin row for scripts/validate_amendment13_execution_law.py repinned (blob 6a09abf1…, 658,135 bytes, SHA f835f94a…); the §34.9.1 semantic projection normalizes exactly the ten pin captures, so the normalized semantic digest is unchanged by construction.

Local: previously-failing sweep family 22/22; full battery + four remaining families running, results on the fix-4 commit.

fix-4b (purpose gate, per the adjudication-arm delta's options a/b/c): option (b) selected — ontology completion through §34.4.2's pre-authorized "source-backed ontology projection" route: an explicit source_underdetermined arm makes the purpose relation total, U == 0 over the completed ontology becomes reachable and honest, exact-row agreement is replaced by reconciled-outcome gating with Jaccard ≥ 90% demoted to a calibration diagnostic, and the underdetermined census becomes an A4 freeze-slot. (a) rejected: partial authority reopens the Reading-A foreclosure and demands partial-relation R04/R05 re-enactment. (c) (PSID machine-readable metadata) remains the upgrade path: each later determination migrates a prompt out of the underdetermined arm through the normal evidence path. The route deliberately does NOT reuse no_applicable_purpose — mapping underdetermination onto a determined negative is what §34.4.2 forbids ("silence or ontology inconvenience cannot create that arm"). Per §34.4.2 the same draft must change the selector, O_P, expansion, joins, projections, and mutations coherently; that enactment lands as the fix-4b commit, then full-suite CI green gates round 5.

The draft pins the fail-closed registry posture (production registry
byte-pinned, registry changes reserved to the revision-22 repin's
scratch transition) but omitted any lawful way for A13-era consumers
to resolve the ratified identity on a tree carrying the prospective
Amendment-20 suffix, so every rq-catalog family aborted at setup on
shard 2 and post-merge master would stay unregistrable until the
repin. Cure on the validator side, registry untouched:

- _interregnum_amendment20_design_binding() accepts exactly the
  pinned revision-21 prefix plus one lawful Amendment-20 suffix
  (worktree equal to HEAD plus complete _amendment20_text
  authentication) and answers with the registry's own revision-21
  identity; every other deviation re-raises the registration abort,
  and the revision-22 repin disarms the branch permanently.
- validate_ratification_operativity accepts terminal == revision - 1
  only at revision 21 with re-authentication; ordinary revision - 2
  law unchanged elsewhere.
- test__closure__real_public_path_adapts_at_revision16 distinguishes
  the lawful interregnum signature (real public path succeeds,
  closure domain 13-19) from every other mismatch (still aborts).
- §34.9.1 pin rows repinned for the two edited files; the semantic
  projection normalizes the ten pin captures, so the normalized
  semantic digest is unchanged by the repin.

Full battery 219 collected; previously failing A13-era families
green. Fix-4b (purpose-gate ontology completion per the adjudication
arm's delta, option b) follows separately.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
MaxGhenis and others added 2 commits August 19, 2026 20:15
Two registry estimates tests pinned the Amendment-19-era assumption
that the worktree design always equals the ratified bytes and that
design_binding() succeeds on a draft tree. They now accept either the
pristine steady state or exactly one authenticated Amendment-20
suffix over the byte-identical revision-21 prefix, asserting in the
interregnum that the production gate still rejects registration while
the validator's interregnum resolver answers with the same
revision-21 identity. No pinned file changed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Fix-4b grew the pinned battery from 219 to 220 tests; the battery
module is artifact-tier, so the tier-policy manifest's artifact count
moves 2686 -> 2687. Every other tier is unchanged, matching the CI
census exactly.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@MaxGhenis

Copy link
Copy Markdown
Contributor Author

Round 5: dual RATIFY on the fix-4 stack.

Two independent referees audited 69d0e55..c580171 (fix-4a interregnum resolution, fix-4b purpose-gate ontology completion, fix-4c estimates-test interregnum awareness, fix-4d tier census) under the closure-round format. Both returned # RATIFY with matching rederived attestation triples for the candidate design at c580171: 4,170,813 bytes, raw SHA-256 cb7c96b0b9b2fcf85fd13bf1e7be5de927f2427eb0fb232d45586174018528aa, blob 5633652debd76805c6a39175bab01b7727f23b1f.

Both lanes independently confirmed: the production design_binding() still rejects the unratified suffix (the resolver widens nothing and answers only for the exact authenticated HEAD state, self-disarming at later-revision pins); malformed probes — mutated prefix byte, second Amendment-20 boundary, later-revision registry pins, operativity interregnum outside revision 21, and a source_underdeterminedno_applicable_purpose conflation vector — all rejected; §34.4.2's route conditions hold with every evidence-dependent count a freeze-slot; the A4 lawful-stop state is intact (null identities, readiness false); all §34.9.1 pins, the §34 semantic projection, the §34.12 manifest, and the 14-name mutation domain recompute exactly; the FULL 220-test pinned battery passes (subset batteries are no longer accepted in closure rounds — that practice is how the interregnum defect escaped rounds 1–4).

This round ran against full-suite CI green at c580171 (all four shards, fan-in, lint, build). The referee worktree diff after both lanes: zero tracked modifications.

Amendment 20 is now dual-RATIFIED through five rounds. The lane returns to its dormant hold: next act is the A4 evidence freeze, after which the staged C20 ceremony chain fires (receipt v2 strictly last → closure-admissible verdicts → operator merge → closure → revision-22 repin). Verdicts: sol-ce-amend20-r5-verdict.md / -r5b-verdict.md (ceremony record).

🤖 Generated with Claude Code

Lane A's round-6 audit reconstructed the authenticated 179-byte 1976
prompt occurrence and computed the two V4632 token intervals [98,103)
and [173,178): the tokens are five bytes, and the worked example's
'six-byte' description both misstates the authenticated bytes and
contradicts the governing minimality rule (a six-byte interval would
include a neighboring byte). The example and the fix-5 report now say
five-byte; no schema, preimage, validator, or census surface changes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@MaxGhenis

Copy link
Copy Markdown
Contributor Author

Rounds 6 + 6.1: fix-5 is dual-RATIFIED at f7670b2.

Round 6 (at db5176c) split: lane B RATIFY; lane A REJECT on exactly one finding — the §34.5.1 worked example called the V4632 tokens "six-byte" while the authenticated 1976 occurrence's two minimal intervals [98,103)/[173,178) are five bytes, contradicting the governing minimality rule. Lane A proved it by reconstructing the 179-byte occurrence (matched-bytes SHA verified) rather than trusting the text. Every other scoped check passed in both lanes: the 13-key schema with psid-prompt-field-evidence: preimage law, span-collapse/duplicate/nonminimal/wrong-domain malformed vectors all rejecting, the 46-disposition table unchanged with C68 still unresolved_multiple, pins and mutation-domain (738 bytes) exact, full battery 220/220.

The cure (f7670b2): "six-byte"→"five-byte" in the worked example and the fix-5 report, with the mandatory semantic-fixpoint consequence (A20_SECTION_SEMANTIC_SHA2569842e887…; §34.9.1 validator row repinned; the ten-capture normalization converged in one iteration). Full-suite CI green at f7670b2 (all four shards, fan-in, lint, build).

Round 6.1: dual RATIFY with matching rederived attestation triples for the design at f7670b2: 4,175,265 bytes, raw SHA-256 48eabe043187c4841c7906e1284ee41e381c265f4182ae784c10dbee116c1df7, blob 17f888351fd81c3191f1320c3a3e3051b6b28d2c — containment to exactly the two prose sites + one constant + one pin row verified, the V4632 intervals independently rederived, the fixpoint recomputed, fresh malformed-span probes rejected, battery 220/220 both lanes, referee worktree diff clean.

Amendment 20 stands dual-RATIFIED through six rounds with the limb-IV constructibility law (fix-5) enacted — the entry-21 milestone-B fix-5 gate is cleared. The lane returns to its dormant hold at the A4 evidence freeze. Verdicts: sol-ce-amend20-r6{,b}-verdict.md, -r61{,b}-verdict.md.

🤖 Generated with Claude Code

Two independent builder-v3 lanes derived divergent candidate-set
digests from the identical matched evidence relation, and the
comparator proved both lawful: §34.5.2's 'complete stable-unique
§34.5.1 projections in source order' underdetermines whether the
projection reads the final sorted relation or the construction
stream. The enacted example arrays (notably [V11649,V11648]) are
producible only by the construction stream, so the cure enacts that
reading explicitly: the candidate projection stream concatenates
direct-branch events in questionnaire-span then field-reconstruction
order, then question-token-branch events likewise, and both candidate
arrays project that one stream. Semantic fixpoint recomputed; §34.9.1
validator row repinned; no schema, ID-preimage, census, or mutation
surface changes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@MaxGhenis

Copy link
Copy Markdown
Contributor Author

Round 6.2: dual RATIFY at 86e6994 — the fix-5 arc is closed.

Fix-5.1 cured the last limb-IV determinism gap (the §34.5.2 candidate-projection order, proven underdetermined by two builder-v3 lanes deriving divergent digests from identical evidence). Both round-6.2 referees independently: derived the enacted [V11649,V11648] and [V11616,V11676] arrays from the now-explicit construction stream; rejected the sorted-relation reading as a malformed vector; recomputed the semantic fixpoint (32fdc956…) and all §34.9.1 pins; re-verified an r6.1 surface; and passed the full 220-test battery. Matching attestation triples: 4,175,644 bytes, raw SHA-256 1138952fe6c40f9a6c260bd447612946066ff688829699a2d790ecca847864b4, blob 743e90653362035a6173c1f76d1ce8ec623e3ff5. CI full green at 86e6994.

Amendment 20 stands dual-RATIFIED through rounds 1–6.2. The limb-IV relations (§34.5.1 evidence rows + §34.5.2 candidate sets) are now fully law-determined: independent builders must produce byte-identical digests. The lane returns to the A4 hold. Verdicts: sol-ce-amend20-r62{,b}-verdict.md.

🤖 Generated with Claude Code

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.

1 participant