Gate-2 candidate 9 (run 1): FAIL 0/5 — observed undatable-marriage count init + unsmoothed low-parity fertility - #95
Merged
Conversation
…unt initial state + unsmoothed low-parity fertility (#42 comment 4914111252) Candidate 8's spec (run_gate2_candidate8.py, #93) with EXACTLY two frozen deltas registered off the gate-2 forensics (#94): - DELTA 1 (RNG-neutral count add): each holdout person's simulated lifetime- marriage count initializes at their OBSERVED residual R = n_marriages minus the datable in-exposure first_marriage/remarriage transition-event count -- the forensics Q1 residual (undatable start/dissolution, out-of-window/under- age, separation-origin and MH-count-excess marriages) at per-person resolution -- then accumulates the simulated datable transitions. Verified BEFORE the one-shot: R + datable == n_marriages per person (remainder 0.0), and R aggregated over the ever-married denominator equals the forensics reference residual and its five buckets (max remainder 2.9e-16); residual non-negative, integer-valued; hazards untouched. - DELTA 2 (fertility threshold): parities 0->1 and 1->2 use the exact empirical single-year rate (no kernel) at ages 22-38 where cell exposure >= 200 weighted person-years, kernel elsewhere; higher parities unchanged. Discipline as c1-c8: bit-exact precheck reproduced the committed floor (ref/rate_a dev 0.0, holdout sha256 all match); delta-1 reconciliation hard- gated before scoring; ONE outer run; published regardless. Because delta 1 adds no draw and delta 2 moves only the fertility threshold (parity-independent draw sizes), the marriage draw stream is byte-identical to candidate 8: the 33 non-fertility, non-count gated cells match candidate 8 to 0.0 across all five seeds (identity_vs_candidate8). Outcome (FAIL 0/5, no seed clears all 46): - seed 0 (44/46): delta 2 broke asfr.20-24 (0.096->0.109 > 0.101, 5/5->4/5), and the byte-identical share_divorced.45-54|female held (0.2123 > 0.212). - seed 1 (45/46): delta 1 cured mean_lifetime_marriages|female, leaving only the byte-identical share_widowed.75+|female (0.2059 > 0.185). - seed 2 (43/46): delta 1 OVERSHOT both counts (male 0.024->0.051 > 0.047, female 0.001->0.061 > 0.051) -- the in-exposure over-production the forensics flagged -- and delta 2 left completed_fertility.c1970s failing (0.186->0.198 > 0.171). - seed 3 (45/46): delta 1 cured mean_lifetime_marriages|male, leaving only the byte-identical widowhood.75+|female (0.3915 > 0.373). - seed 4 (45/46): delta 1 overshot mean_lifetime_marriages|female (0.008->0.057 > 0.051). Movement vs candidate 8 (n_seeds_pass): mean_lifetime_marriages|male 3->4, mean_lifetime_marriages|female 4->3, completed_fertility.c1970s 4->4 (worse score), asfr.20-24 5->4; share_widowed.75+|female, share_divorced.45-54|female and widowhood.75+|female unchanged 4->4 (byte-identical). Net: delta 1 helps where the boundary under-produces and hurts where the hazards over-produce, and the three byte-identical elderly-widow/divorce-stock cells no delta can touch remain the structural blockers on seeds 0/1/3. Artifact runs/gate2_hazard_v9.json (registration pointer, both deltas, reconciliation record, forecast pointer). Tests tests/test_gate2_candidate9.py (consistency + delta-1 reconciliation + delta-2 footprint + byte-identity to c8 + live seed-0 pin). c1-c8 + forensics stay green; full suite 972 passed, 41 skipped. 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
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.
Verdict: FAIL — 0/5 seeds pass
Pre-registered one-shot run of gate-2 candidate 9, frozen spec issue #42 comment 4914111252. Published regardless of verdict; not merged.
Candidate 8's spec (
scripts/run_gate2_candidate8.py, #93) with exactly two deltas registered off the gate-2 forensics (#94):R = n_marriages − datable in-exposure first_marriage/remarriage events— the forensics Q1 residual (undatable start/dissolution, out-of-window/underage, separation-origin, MH-count-excess) at per-person resolution — then accumulates the simulated datable transitions. Hazards untouched; no draw perturbed.Seed conjunction
Gate rule: all 46 gated cells per seed AND ≥ 4 of 5 seeds. Result: 0/5 seeds → gate_2_pass = False.
Per-block pass counts (per seed)
Every failing gated cell (score / tolerance / seed)
asfr.20-24completed_fertility.c1970sDelta-1 reconciliation (verified before the one-shot)
R + datable == n_marriages: max abs residual 0.0 (remainder 0.0).Raggregated over the ever-married denominator == forensics reference residual == five-bucket sum: max abs remainder 2.91e-16 across all 5 train seeds × 2 sexes.runs/gate2_forensics_v1.json).Byte-identity to candidate 8
Delta 1 adds no draw and delta 2 moves only the fertility threshold (parity-independent draw sizes), so the marriage draw stream is identical to candidate 8. The 165 non-fertility, non-count gated cells (33 cells × 5 seeds) match candidate 8 to 0.0 deviation; only the fertility cells (delta 2) and the two lifetime-marriage counts (delta 1) move.
Movement vs candidate 8 (n_seeds_pass)
completed_fertility.c1970sasfr.15-19asfr.20-24Reading. Delta 1 raises
mean_lifetime_marriages|male(3/5→4/5, curing seeds 3–4) but overshoots where the hazards already over-produce in-exposure marriages (the forensics warning), draggingmean_lifetime_marriages|femaledown (4/5→3/5, failing seeds 2 and 4). Delta 2 does not clearcompleted_fertility.c1970sand breaksasfr.20-24on seed 0. The three byte-identical elderly-widow / divorce-stock cells the registered modal named (share_widowed.75+|female,widowhood.75+|female,share_divorced.45-54|female) hold exactly where candidate 8 failed them — no delta can touch them — and are the structural blockers on seeds 0/1/3.Discipline
runs/; published regardless.runs/gate2_hazard_v9.json(registration pointer, both deltas, reconciliation record, forecast pointer).tests/test_gate2_candidate9.py(consistency + delta-1 reconciliation + delta-2 footprint + byte-identity to c8 + live seed-0 pin + structural delta checks).black -l 79+ruffclean. c1–c8 + forensics tests stay green; full suite 972 passed, 41 skipped.Pre-registered forecast was P(pass) ≈ 0.40–0.50 with
share_widowed.75+|femaleas the modal blocker; the actual decider was broader — the byte-identical-to-c8 marital cells plus delta 1's overshoot held the gate below 4 passing seeds. 🤖 Generated with Claude Code