Flip ratified gate-2 amendment 1 live: mean-over-draws estimator (prospective only) - #97
Merged
Merged
Conversation
…spective only) Moves gate-2's ratified amendment 1 from the amendment_proposed object into the locked protocol. Per-cell scoring goes from ONE frozen simulation draw to the MEAN over K=20 pre-registered draws (numpy default_rng(5200 + k), k=0..19) of the cell RATE, scored |ln(rbar_candidate,s / rate_a,s)| at BYTE-IDENTICAL tolerances and the same 46-cell, 4-of-5-seed conjunction. Only the candidate statistic changes; the error budget does not (all 46 tolerances, the power cap, governance, scope, and external anchors are byte-identical to origin/master). Ceremony (mirrors the gate-1 amendment-2 flip #69 and the gate-2 lock flip #81): adversarial round AMEND (PR 96 comment 4915412987) -> fixes 5b70840 (comment 4916048161) -> verification RATIFY AS-IS (comment 4916419901) -> ratified by merge of PR 96 (merge commit fec27eb) under the maintainer's standing campaign directive of 2026-07-07, full ceremony. The five locked-text edits (flip_on_ratification.flip_edits, applied exactly): - protocol.candidate: one frozen replicate -> K=20 draws at default_rng(5200 + k); records the committed 4200+s registration history and the new 5200+k convention explicitly (registration_divergence resolved). - statistic: r_candidate,s -> rbar_candidate,s (the mean over K=20 draws of the cell rate). - protocol.pass_rule: r_candidate,s -> rbar_candidate,s (mean of the cell RATE across draws, then |ln(rbar / rate_a)|). - protocol.faithful_candidate_oc: basis note added -- the draw-noise-free half-normal basis now MATCHES the estimator; p_seed_pass 0.9404 / p_gate_pass_4_of_5 0.9685 stand unchanged (unachievable under the single-draw estimator, finding 1). - protocol.pass_rule: the stray "DRAFT" label removed. Also carries the ratified fresh_run_artifact_schema (the candidate-10 run contract: per_draw_per_cell_rates [20,46,5]; undefined-draw INVALIDATES the run; report-only per-draw dispersion) into the live protocol, adds gate_2's first amendment_history entry (id 2026-07-08-mean-over-draws-estimator, flipped_live: this pull request), and removes amendment_proposed (preserved in git history at the ratification merge fec27eb). PROSPECTIVE ONLY (no_self_rescue): no committed run's verdict changes; candidates 1-9 stand FAIL. The single-draw estimator contradicted the locked block's own ratified OC basis; K=20 mean-over-draws restores ~0.939 / 0.967 ~= the ratified 0.9404 / 0.9685. Tests rewired locked-hot (the gate-1 amendment-2 lesson): the load-bearing guarantees -- the K=20 / 5200+k convention, the artifact schema, the OC basis, the history entry with all four ceremony pointers, and prospective-no-verdict-change vs the nine committed artifacts -- rebind to their LIVE post-flip locations in a new "Gate-2 amendment 1 RATIFIED bindings" section. Proposal-object tests stay dormant-safe (guarded on proposal_number == 1, so a future proposal != 1 never reactivates them); the two tests that asserted the OLD locked text are updated to the new live text. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This was referenced Jul 8, 2026
MaxGhenis
added a commit
that referenced
this pull request
Jul 8, 2026
…r the amended mean-over-20-draws estimator; observed-residual count + age-band remarriage deltas; designed count-cell cancellation asymmetric (male net +0.025 ln 4/5, female net +0.044 ln 3/5), share_widowed.75+|female holds the gate 4/5 (#42 comment 4917059482) (#98) The first fresh gate-2 registration scored under the amended mean-over-K=20-draws estimator (gates.yaml gate_2 amendment 1, ratified 2026-07-08, flipped live #97). Frozen spec: issue #42 comment 4917059482. One-shot; published REGARDLESS of verdict. VERDICT: gate_2_pass=False, 1/5 seeds pass (only seed 1). Runtime 168s (K=20 draws x 5 seeds); no undefined draw. Spec = candidate 8 + two deltas, under the amended estimator: * Delta 1 (candidate 9's, unchanged): observed undatable-marriage lifetime-count initial state R = n_marriages - datable in-exposure marriage events (the forensics Q1 residual), RNG-neutral; observed_residual_counts / _delta1_reconciliation imported from candidate 9. Reconciled to remainder 0.0 train-side before the one-shot (per-person identity max 0.0; aggregate max remainder 2.9e-16). * Delta 2 (new): age-band-conditioned remarriage by ego age band (18-34/35-49/50+) x years-since-dissolution x origin x sex, same add-one smoothing (wbar_diss), candidate 8's order-bit stratum and aggregate-preservation rescale REMOVED. Fertility = candidate 8's kernel, unchanged. * Precheck bit-exact (ref-moment dev 0.0, rate_a dev 0.0, holdout sha256 all match). Amended estimator + fresh_run_artifact_schema: rbar_candidate,s = mean over K=20 draws (default_rng(5200+k), k=0..19) of the cell rate; score |ln(rbar/rate_a,s)| scored once. The artifact commits the [20,46,5] per-draw per-cell rate cube (rbar recomputable cell-by-cell), the undefined-draw check (run_invalidated=False, 0 undefined), and report-only per-draw dispersion (per-cell sd + worst-draw |ln|). Failing gated cells (rbar-score/tol): * share_widowed.75+|female seeds 0,2,3,4 (0.231/0.196/0.245/0.192, tol 0.185) -- an elderly-widow-stock LEVEL cell neither delta addresses; it independently holds the gate on 4/5 seeds (decider: broader than the registered modal + delta-targeted cells). * mean_lifetime_marriages|female seeds 2,4 (0.064/0.067, tol 0.051). * mean_lifetime_marriages|male seed 2 (0.052, tol 0.047). * completed_fertility.c1970s seed 2 (0.182, tol 0.171). All 4 gated remarriage cells pass 5/5 (the flagged thin-50+ risk did not bite; only one <20-py cell, age18-34|ysd2|widowed|male, no gated failure). Count-cell tilt vs design (residual +0.046, over-production -0.046, net ~0) was ASYMMETRIC (designed_cancellation_succeeded=False): male net +0.025 ln (4/5, delta 2 removed ~half the over-production) but female net +0.044 ln (3/5, delta 2 removed almost none). The over-production age conditioning targets is male-heavier; delta 1's residual is present for both sexes, so on the low-rate_a seeds (2,4) where c8 was near-perfect the female residual pushes the cell out -- the registration's flagged modal failure. Per-draw dispersion (report-only): 33 cell-seed instances where the worst single draw would clip the tolerance but the 20-draw mean passes -- the draw noise the amended estimator averages out, vindicating amendment 1 on this evidence. Adds scripts/run_gate2_candidate10.py, runs/gate2_hazard_v10.json, tests/test_gate2_candidate10.py (consistency + schema conformance + rbar recompute from per-draw rates + live seed-0 single-draw pin + faithful-copy attestation). Updates test_gates_derivations.py's prospective-amendment no_self_rescue check to include candidate 10 (10 committed gate-2 runs, all still gate_2_pass false). Pre-registered forecast was P(pass) 0.65-0.75. Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
MaxGhenis
added a commit
that referenced
this pull request
Jul 10, 2026
…ro threshold movement) (#112) Moves gate-2's ratified amendment 2 (the tranche split) from the amendment_proposed object into the locked block. STRUCTURAL, zero threshold movement: the locked gate_2.thresholds scored surface is byte-identical to origin/master -- all 46 gated cells, every tolerance and derivation, the option-(a) protocol, the ln(1.5) power cap, and the 4-of-5 seed conjunction unchanged (verified at full-subtree granularity). Only naming, scope prose, the certification map, the unlocked sibling stubs, one governance rule, and the history changed. Ceremony (mirrors flips #69, #81, #97): adversarial round AMEND BEFORE RATIFYING (PR 111 comment 4930448912) -> fixes 81ea41e (comment 4930615774) -> verification RATIFY AS-IS (comment 4930753295) -> ratified by merge of PR 111 (merge commit 8a4a240) under the maintainer's standing campaign directive of 2026-07-07, full ceremony. The six locked-text edits (flip_on_ratification.flip_edits, applied exactly): - description: first clause re-scoped so tranche 2a claims only mh85_23 + cah85_23 (+ ind2023er deaths); household-composition/MX23REL -> gate_2b. - description_formula_clause: the "computes exactly" statutory-formula oracle clause (#78/#80) RETAINED verbatim (fix C1). - holdout_basis: [mh85_23, cah85_23, MX23REL] -> [mh85_23, cah85_23]; MX23REL -> gate_2b.holdout_basis. - scope_note: provision_class_coverage prose gains explicit tranche ids (2a/2b/2c); the certification_scope map is promoted into the locked scope. - scope_note_draft_label: "This DRAFT tranche covers..." relabeled to "tranche 2a_marital_fertility covers...". - scope_note_holdout_xref: the caregiver "named in holdout_basis but not scored in this draft" cross-reference re-pointed to the unlocked gate_2b. The five flip_additions: tranche_id 2a_marital_fertility inside thresholds; gate_2b (relationship_household) and gate_2c (marriage_earnings_joint) UNLOCKED sibling tranches (locked: false, no floor, no scored run, each with its own future lock ceremony naming the verification round); the certification_scope map promoted into the locked scope; and the standing governance rule description_claims_exactly_the_scored_surface promoted into gate_2.governance.amendment_rules (attributed to review #106 finding 4 / PR #111 finding 8), binding 2b/2c/gate_3. gate_2.name ("family and benefit outputs") retained per its C3 disposition (the tranche container). Also applies the two verification-round flip-time nits (comment 4930753295): the 2b bullet-3 legend quote spacing normalized to "poverty/household" to match the derivation_basis quote; and COLA qualified in the A2 own-record example list (its levels ride the Phase-B claiming/mortality components -- #74 marks CA, M, DI; #78 covers CA, M/DI uncertified -- so it is not a pure gate-1 + oracle surface, though still outside the 2a/2b/2c tranches). Adds gate_2's second amendment_history entry (id 2026-07-09-tranche-split; all four ceremony pointers; content: ZERO THRESHOLD MOVEMENT, verdicts v1-v15 FAIL and v16 PASS stand as tranche-2a verdicts, citing #106 finding 4 and the candidate-16 pass #109), and removes amendment_proposed (preserved in git history at the ratification merge 8a4a240). PROSPECTIVE / STRUCTURAL ONLY (no_self_rescue): a naming + certification-scope amendment has no verdict to rescue and re-scores nothing; candidate 16 stays PASS (4/5), candidates 1-15 stay FAIL, as tranche-2a verdicts. Tests rewired locked-hot: the re-scoped description/holdout_basis, tranche_id, the promoted certification_scope map (per-class requires_tranche + coverage tokens bound EXACTLY, both nits asserted), the gate_2b/gate_2c stubs, the promoted standing rule, and the second history entry with all four pointers rebind at their LIVE post-flip locations in a new "Gate-2 amendment 2 RATIFIED bindings" section. The proposal-object tests stay dormant-safe (guarded on proposal_number == 2, so they skip once amendment_proposed is gone), and the D1 merge-safe guard naturally skips post-flip. Full suite: 1319 passed, 68 skipped, 0 failed (-n 8); black -l 79 + ruff clean. Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Flip ratified gate-2 amendment 1 live: mean-over-draws estimator
Authorized follow-up flip for gate-2 amendment 1, ratified by merge of #96
(merge commit
fec27eb51) after the full ceremony: adversarial round AMENDBEFORE RATIFYING (comment 4915412987)
-> fixes
5b70840(comment 4916048161)-> verification RATIFY AS-IS (comment 4916419901).
Mirrors the gate-1 amendment-2 flip (#69) and the gate-2 lock flip (#81).
The estimator moves per-cell scoring from one frozen simulation draw to
the mean over K=20 pre-registered draws (
numpy default_rng(5200 + k),k=0..19) of the cell rate, scored
|ln(rbar_candidate,s / rate_a,s)|.Tolerances, the power cap, the 46-cell membership, and the 4-of-5-seed
conjunction are byte-identical to
origin/master— only the candidatestatistic changes. A structured diff of the
thresholdssubtree confirms theonly changes are the five prose fields below; all 46 tolerances are unchanged.
The five locked-text edits (
flip_on_ratification.flip_edits, applied exactly)protocol.candidatedefault_rng(5200 + k), 20-draw mean cell rate; records the committed4200 + sregistration history and the new5200 + kconvention explicitly (registration_divergenceresolved)statisticr_candidate,s->rbar_candidate,s(mean over K=20 draws of the cell rate)protocol.pass_ruler_candidate,s->rbar_candidate,s; mean of the cell RATE across draws, then|ln(rbar / rate_a)|protocol.faithful_candidate_ocp_seed_pass 0.9404/p_gate_pass_4_of_5 0.9685stand unchanged (unachievable under the single-draw estimator, finding 1)protocol.pass_ruleAlso carries the ratified
fresh_run_artifact_schema(candidate-10 runcontract:
per_draw_per_cell_ratesshape[20, 46, 5]; undefined-drawINVALIDATES the run; report-only per-draw dispersion) into the live
protocol, and removesamendment_proposed(preserved in git history at theratification merge
fec27eb51).amendment_historyentrygate_2 gets its first entry:
id: 2026-07-08-mean-over-draws-estimator,flipped_live: this pull request, with all four ceremony pointers(review 4915412987 / fixes 5b70840 + comment 4916048161 / verification
4916419901 / ratifying merge PR 96
fec27eb51). PROSPECTIVE ONLY(
no_self_rescue): no committed run's verdict changes; candidates 1-9 standFAIL. The single-draw estimator contradicted the ratified OC basis; K=20
restores ~0.939 / 0.967 ~= the ratified 0.9404 / 0.9685. Evidence chain: #94
(chronic-cell forensics) and the candidate 1-9 ladder (issue #42).
Locked-hot test rewiring (
tests/test_gates_derivations.py)The gate-1 amendment-2 lesson: ratified bindings must stay hot, not go
dormant with the proposal object. The gate-2 amendment block keyed off
amendment_proposedand would go silently dormant on removal. This PR:load-bearing guarantees to their LIVE post-flip locations: the K=20 / 5200+k
convention, the artifact schema, the OC basis, the history entry with all
four ceremony pointers, and prospective-no-verdict-change vs the nine
committed artifacts (
runs/gate2_hazard_v1..v9.json, allgate_2_passfalse).
_gate2_amendment()now guards onproposal_number == 1(the gate-1_amendment_2pattern), so a future gate-2 proposal (number != 1) neverreactivates these proposal-1-specific bindings.
(
flip_edits'locked_text_nowpresence, "one replicate, simulationseed s") — the live-text verification now asserts the new amended text
in the ratified section.
Verification
black -l 79clean;ruffclean..venv).🤖 Generated with Claude Code