Skip to content

Commit 1d83a22

Browse files
MaxGhenisclaude
andauthored
M6 projection engine: design + temporal-holdout gate proposal (design review pending) (#170)
* M6 projection engine: design + temporal-holdout gate proposal Docs-only design record for roadmap #113 M6 (the projection engine), the last build before M7 trust-fund accounting. Adds docs/design/m6_projection_engine.md: - engine architecture: the wave-loop over the unified person-period panel, the per-period order of operations (mortality -> aging -> couple formation/dissolution -> fertility/roster -> disability -> earnings -> claiming -> household reconciliation), the module registries as the composition interface, W1 transport as period 0, and five named registry frictions against that order; - RNG discipline: a (draw x module x period x person) SeedSequence spawn tree extending the 5200+k convention with per-period disjointness and a separate split stream; - the gate_m6 temporal-holdout proposal: fit <= T*=2014, project 2015-2022, PSID-projected vs PSID-realized (no W1-style concept bridge), flow-gated with report-only stocks, a holdout half-split real-vs-real floor, families A/B/C, the one-shot rule, and the #42 pass-verification / search-size discipline; - the per-year W2 PolicyEngine seam, the M7 levels interface (interface only), explicit non-goals, and a numbered open-decisions list for adjudication. Edits no gates.yaml cell, builds no floor, writes no test; seeds the gate_m6 lock ceremony only. tier_counts.json untouched. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * M6 projection engine design: revision 1 (referee MAJOR REVISION) Address the fourteen design-referee findings (PR #170 comment 4953818376) and bind the ten-decision adjudication (comment 4953722912) into docs/design/m6_projection_engine.md: - §2.6 the R1-R3 composition derivation, pinned from code: the earnings QRF, disability, and claiming are all marital-blind, and fertility (step 4) reads married state, so the single marital core runs at step 3; candidate-9's internal ft.simulate (base_simulator.py:72-77) is bypassed by injecting step-3 marital state (R1 surgery) with a targeted re-certification note licensed by P2 + the 2c marginal-preservation guard (couple_formation_sim_v2.py:520-525); - decision 6 superseded (revises adjudication 6): the 2c tercile is person-constant career capacity (indexed_earnings_supply), not an annual level, so no lagged edge -- the modifier reads the permanent tercile at step 3; - §4.1 dual-axis shock-window pin (earnings reference years {2020,2022}, 2021 unobserved odd year; flow event years {2020,2021}); §4.2 gate-1 earnings QRF added to the refit enumeration + the spec-vs-fit distinction + spec-selection-on-full-sample disclosure + the biennial boundary rule; - §4.4 support-basis split (disability reproduction = temporal gate_m4 extension; mortality/marital forward-style) + symmetric presence-conditioning + attrition (friction F7); F6 weight semantics; §4.7 start-wave weight convention; §9 OC-before-lock weak-power pause, re-cert margin check, household-ID/weight rule, claiming-vintage freeze. Docs-only; no gates.yaml edit, no floor, no test. Stays a draft seeding the gate_m6 ceremony. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
1 parent 4359353 commit 1d83a22

1 file changed

Lines changed: 926 additions & 0 deletions

File tree

0 commit comments

Comments
 (0)