Commit 1d83a22
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
0 commit comments