diff --git a/docs/parity-ledger.md b/docs/parity-ledger.md index 30086984..9b839ae5 100644 --- a/docs/parity-ledger.md +++ b/docs/parity-ledger.md @@ -18,7 +18,11 @@ cover, the poverty row's U2 entry and the known gaps at `f8ffc7d9` the same day. The rows on covered earnings, births, alignment, poverty, and national costs and financing, and step 1 of the critical path, were re-verified at `9967dfd6` on 25 October 2026, and P2's entries -in the forward-earnings row and step 2 at `9a344a1a`, after P2 merged.* +in the forward-earnings row and step 2 at `9a344a1a`, after P2 merged. +The rows on mortality differences, education, births, immigration and +emigration, SSI, and wealth, pensions and other income were re-verified +at `0f69bbb2` on 26 October 2026, after SM1, OP1 and the first part of +D1 merged.* ## Bottom line @@ -105,7 +109,7 @@ them. Paths are relative to the repository root. | Work limitation | Models work-limiting disability from demographic and economic characteristics ([DYNASIM3 primer][d3]). | *Gate passed, not used in a blind test.* Gate m4 passes in 5 of 5 seeds (`runs/gate_m4_hazard_v1.json`), and gate m6 also gates its incidence and recovery. Its SSA anchors test age shape and exit composition, not disability insurance (DI) levels. The blind projections use a separate DI component and read work-limitation reports only to classify people at the start. | Work limitation linked to employment and to DI awards in the same simulated people, checked against PSID reports and SSA award statistics. | None for the link; Track B's B4 sets limits on DI outcomes (d515), and B4 waits on a successor to B2 (d1659) | Decide whether projected DI awards should depend on work-limitation status; if so, register a joint gate. | | Disability insurance entitlement | Models DI applications and awards and computes disability benefits ([DYNASIM3 primer][d3]). | *Used in a blind test, ungated.* Exercises 1 and 3 draw awards and recoveries from rates fitted on data through 2008, convert each entitled disabled worker, with no draw, in the year they reach full retirement age, and never check insured status (`src/populace_dynamics/engine/di_entitlement.py`). A report-only check against SSA's 2023 statistics runs on a synthetic population (`runs/di_entitlement_asr2023_validation_v1.json`). The statutory DI computation-years rerun (Track A v2, `src/populace_dynamics/track_a_v2/`) is merged, has run only on invented data and is not registered. | Awards, recoveries, deaths, conversions, beneficiary counts and benefit amounts on the projected population against SSA statistics, with disability-insured status, statutory computation years and stocks that reconcile with flows. | d479, d513; [#42][i42] | Register Track A v2 on #42 and run it once. It computes delayed credits through the oracle, so its registration must use the statutory window or disclose the 48-month cap (see the row on a worker's own benefit). Then register a DI entitlement gate on the PSID cohort. | | Mortality and its improvement over time | Projects deaths with trends over time, socioeconomic differences and a separate process for disabled workers ([DYNASIM3 primer][d3]), aligned to targets from SSA's actuaries ([DYNASIM4 fact sheet][d4]). | *Used in a blind test, ungated.* Exercises 1 and 3 scale SSA's 2004 period life table by two ratios from the 2008 Trustees Report, one under 65 and one at 65 and over, the same for men and women (`src/populace_dynamics/cola_track_a/mortality.py`); disabled workers die at DI rates. Gate m6 certifies nothing about mortality drift, and its SSA/NCHS mortality anchor is marked not supplied in the passing run. | Projected death probabilities and life expectancy by single year of age and sex against OACT's tables over held-out years; disabled-worker deaths against SSA counts; deaths kept apart from survey attrition at the oldest ages. | [#74][i74], [#113][i113] | Supply gate m6's mortality anchor, then replace the two-ratio method with OACT's single-age death probabilities, which the 2026 baseline already loads (`src/populace_dynamics/baselines/tr2026_intermediate.py`). | -| Mortality differences by income, education and race | Models mortality differences by socioeconomic characteristics ([DYNASIM3 primer][d3]). | *None.* No mortality model in the repository conditions on income, education or race. The general models use age and sex. Disabled workers die at DI rates by age and sex; under the optional select-and-ultimate basis those rates also depend on age at award and the years since, but the default and the blind tests use attained age only (`src/populace_dynamics/engine/di_entitlement_rates.py`). A comparison of PSID death rates with NCHS rates by age and sex is report-only (`runs/mortality_floors_v1.json`). | Survival gradients by lifetime earnings, education and race and ethnicity against published SSA and NCHS evidence, and the lifetime-benefit differences that follow. | `docs/design/mortality_groups_financing.md` ([#558][pr558], approved under d1922); SM1 in review as [#570][pr570]; [#74][i74] | Build SM1, S0.1 and SM2 now; SM3, the gate on recorded PSID deaths, follows a ruling (mortality design §3.4). | +| Mortality differences by income, education and race | Models mortality differences by socioeconomic characteristics ([DYNASIM3 primer][d3]). | *None* for a gradient: no model in the repository estimates or applies a mortality difference by income, education or race. SM1's mechanism, merged in [#570][pr570], scales death probabilities by relative risks for lifetime earnings, education, and race and Hispanic origin, normalized so that each single-age, sex and year cell keeps the baseline's expected deaths; rows of disabled-worker origin keep the baseline's probability for the DI adapter (`src/populace_dynamics/mortality_ses/`). It ships no coefficients, and its tests use invented ones. No projection, runner or gate calls it: outside its own tests, only the birth-evidence script's exclusion list and its test name it (`docs/design/mortality_ses_sm1.md`, `tests/estimates/test_birth_evidence_artifact.py`). The general models use age and sex. Disabled workers die at DI rates by age and sex; under the optional select-and-ultimate basis those rates also depend on age at award and the years since, but the default and the blind tests use attained age only (`src/populace_dynamics/engine/di_entitlement_rates.py`). A comparison of PSID death rates with NCHS rates by age and sex is report-only (`runs/mortality_floors_v1.json`). | Survival gradients by lifetime earnings, education and race and ethnicity against published SSA and NCHS evidence, and the lifetime-benefit differences that follow. | `docs/design/mortality_groups_financing.md` ([#558][pr558], approved under d1922); SM1, merged in [#570][pr570]; S0.1 for SM2 to SM4, ED1 and ED2, a draft in review as [#588][pr588]; [#74][i74] | Merge S0.1, the source, exposure, access and power audit for these gates ([#588][pr588]), and build SM2 now; SM3, the gate on recorded PSID deaths, follows a ruling (mortality design §3.4). | | Claiming | Claiming depends on benefit amounts, spouse characteristics and policy parameters, with separate equations by earnings relative to the earnings test's exempt amount ([DYNASIM3 primer][d3]). | *Used in a blind test, ungated.* Exercises 1 and 3 draw a whole-year claim age from SSA's distribution of retired-worker awards by sex and year, reusing the 2008 distribution for later years (`src/populace_dynamics/engine/claiming.py`). No claim responds to a reform; exercise 3's two registered claiming alternatives are stylized delays. | A monthly claiming hazard on insured people who have not yet claimed, reproducing held-out SSA award flows (B6a); separately, a response to policy identified from real policy changes, with placebo tests (B6b). | d515 | Register a baseline claiming test on held-out years of SSA's award table once insured status exists. | ### Family and population @@ -113,9 +117,9 @@ them. Paths are relative to the repository root. | Capability | What DYNASIM does | Our status | Test that would show parity | Tracking | Next step | |-----------|----------------|------------------------|---------------|--------|-----------| | Marriage, divorce and widowhood | Projects marriage, divorce, remarriage and widowhood ([DYNASIM4 fact sheet][d4]; [overview][ov]). | *Gate passed, not used in a blind test.* Gates 2, 2b and 2c pass in 4 of 5 seeds each, and gate m6 scores first-marriage, divorce and remarriage flows over 2015–2019. The blind projections draw no marriage or divorce: a person is widowed only when a spouse in the cohort dies (`src/populace_dynamics/cola_track_a/adapters.py`), so 552 married members of the 2011-wave cohort whose spouses are outside it, and 80 with no linked spouse, are never widowed (`runs/replication_urban2010_cola_v1.json`). | The gated marriage and divorce models inside the projection, with redrawn starting states and spouses outside the cohort simulated; flows, durations, spouse links and the resulting spouse and survivor benefits, scored by a registered projection gate (B4). | d515 | Register B4 once B3, B3L and the history recorder H exist. All three wait on a successor to B2 (d1659). | -| Education | Projects educational attainment from cross-tabulations by age, race, sex and parents' education, estimated on the NLSY and CPS ([DYNASIM3 primer][d3]). | *None* for transitions: the engine's eight modules (mortality, aging, marital core, fertility, disability, earnings, claiming and household composition; `src/populace_dynamics/engine/loop.py`) include no education step. Completed education is read from the PSID as a fixed attribute for group breakdowns (`src/populace_dynamics/data/group_attributes_psid.py`, from [#513][pr513]). | Projected attainment by birth cohort and sex against Census and ACS attainment tables, and its effect on later earnings and mortality where those depend on it. | `docs/design/mortality_groups_financing.md` ([#558][pr558], approved under d1922) | Build ED1 now; ED2, the gate, waits on the Microcosm start and the open population's entrants (mortality design §3.4). | -| Births | Adds people through births and aligns fertility to targets from SSA's actuaries ([DYNASIM4 fact sheet][d4]). | *Gate passed* for fertility rates (gate 2). *Report-only* for newborns entering a projection: gate m6's engine adds them (316 in its reference draw) and scores none. The blind projections add no newborns. A newborn gets a link to the mother, her household and her weight, and no father link. An opt-in, report-only birth step can draw births from the 2026 Trustees' or CBO's fertility schedule (`src/populace_dynamics/baselines/fertility.py`); no registered test uses it, and nothing aligns the gated fertility model to those targets. | Projected births against vital statistics; newborns' links to both parents, households and starting states; their entry into later earnings, disability and benefit processes. | `docs/design/open_population.md` ([#557][pr557], approved under d1925); [#412][i412] | Build the demographic phase: OP0.1's source, exposure, access and power audit merged ([#567][pr567]), and OP1's harness is in review ([#566][pr566]); OP2 links newborns to both parents and scores `gate_birth` (open-population design §3). | -| Immigration and emigration | Adds immigrants and models emigration ([DYNASIM4 fact sheet][d4]). | *Built, ungated*, and never run on real data. A scheduled-entrant module labels itself report-only (`src/populace_dynamics/engine/entrant_schedule.py`), but its readers for arrival totals and donor records were not carried over, no committed run has added an immigrant, and entrants get no earnings, disability, claiming or entitlement processes (`src/populace_dynamics/engine/entrant_domains.py`). The US engine has no emigration. | Arrivals and departures sized to OACT's assumptions; entrants' covered-work histories and insured status; their benefit receipt against SSA statistics. | `docs/design/open_population.md` ([#557][pr557], approved under d1925); [#412][i412]; design PR [#218][pr218] closed unmerged | Build OP3's arrivals and OP4's emigration law in the demographic phase; entrants' histories (OP8) wait for the economic phase (open-population design §3). | +| Education | Projects educational attainment from cross-tabulations by age, race, sex and parents' education, estimated on the NLSY and CPS ([DYNASIM3 primer][d3]). | *None* for transitions: the engine's eight modules (mortality, aging, marital core, fertility, disability, earnings, claiming and household composition; `src/populace_dynamics/engine/loop.py`) include no education step. Completed education is read from the PSID as a fixed attribute for group breakdowns (`src/populace_dynamics/data/group_attributes_psid.py`, from [#513][pr513]). | Projected attainment by birth cohort and sex against Census and ACS attainment tables, and its effect on later earnings and mortality where those depend on it. | `docs/design/mortality_groups_financing.md` ([#558][pr558], approved under d1922); S0.1's audit for ED1 and ED2, a draft in review as [#588][pr588] | Merge S0.1 ([#588][pr588]) and build ED1 now; ED2, the gate, waits on the Microcosm start and the open population's entrants (mortality design §3.4). | +| Births | Adds people through births and aligns fertility to targets from SSA's actuaries ([DYNASIM4 fact sheet][d4]). | *Gate passed* for fertility rates (gate 2). *Report-only* for newborns entering a projection: gate m6's engine adds them (316 in its reference draw) and scores none. The blind projections add no newborns. OP1's harness, merged in [#566][pr566], records each newborn the fertility step adds as a birth in a stock-flow account it checks every year; it draws no births of its own, admits no birth law and has run on invented data only (`src/populace_dynamics/open_population/births.py`, `docs/design/open_population_evidence/op1_report.md`). A newborn gets a link to the mother, her household and her weight, and no father link. An opt-in, report-only birth step can draw births from the 2026 Trustees' or CBO's fertility schedule (`src/populace_dynamics/baselines/fertility.py`); no registered test uses it, and nothing aligns the gated fertility model to those targets. | Projected births against vital statistics; newborns' links to both parents, households and starting states; their entry into later earnings, disability and benefit processes. | `docs/design/open_population.md` ([#557][pr557], approved under d1925); [#412][i412] | Build the rest of the demographic phase: OP0.1's source, exposure, access and power audit ([#567][pr567]) and OP1's harness ([#566][pr566]) have merged; OP2 links newborns to both parents and scores `gate_birth` (open-population design §3). | +| Immigration and emigration | Adds immigrants and models emigration ([DYNASIM4 fact sheet][d4]). | *Built, ungated*, and never run on real data. A scheduled-entrant module labels itself report-only (`src/populace_dynamics/engine/entrant_schedule.py`), but its readers for arrival totals and donor records were not carried over, no committed run has added an immigrant, and entrants get no earnings, disability, claiming or entitlement processes (`src/populace_dynamics/engine/entrant_domains.py`). The US engine has no emigration law. OP1's harness ([#566][pr566]) wraps the engine's existing entry seam, labeling each scheduled entrant with its entry year and declaring it in the yearly stock-flow account, and adds an emigration seam: it can draw emigration among each year's survivors from a hazard the caller supplies. Emigration is off by default, and it is refused unless marital transitions are switched off, because Track A's marital adapter infers widowhood from a spouse's absence (`src/populace_dynamics/open_population/schedule.py`, `exits.py`). It has run on invented data only. | Arrivals and departures sized to OACT's assumptions; entrants' covered-work histories and insured status; their benefit receipt against SSA statistics. | `docs/design/open_population.md` ([#557][pr557], approved under d1925); [#412][i412]; design PR [#218][pr218] closed unmerged | Build OP3's arrivals and OP4's emigration law, with the exit-aware relational updates emigration needs (a spouse who emigrates leaves the marriage as abroad, never as a death), in the demographic phase; entrants' histories (OP8) wait for the economic phase (open-population design §3). | | Starting population | Starts from a representative sample built mainly from the Survey of Income and Program Participation, with histories drawn from survey and administrative records ([DYNASIM4 fact sheet][d4]; [overview][ov]). | *Used in a blind test* for closed PSID cohorts: all four comparisons start from PSID members with the PSID's own weights. *None* for a projection started from Microcosm's population: a plan and a draft registration exist (`docs/plans/microcosm-start.md`, `docs/plans/microcosm-start-registration-draft.md`), with no code. Registration 19 ran a static, report-only SSI analysis on Microcosm's frame and disclosed a frame defect; its code merged in [#511][pr511] (`runs/pe_us_depletion_cut_population_v1.json`). Microcosm fixed that defect in its build code ([microcosm#1186][mc1186]), and four more frame defects are open: [microcosm#1212][mc1212], [#1213][mc1213], [#1214][mc1214] and [#1215][mc1215]. | Starting earnings histories (H1), the starting population against SSA counts, gate 3's first-year cells, then an end-to-end projection and reform comparison started from Microcosm. | d947 (parked); [#511][pr511]; [microcosm#1178][mc1178], [microcosm#1186][mc1186] | Post the Microcosm-start registration (d947), then build the frame reader. | | Alignment and a representative population | Aligns fertility, mortality, disability, immigration and labor force participation to targets from SSA's actuaries ([DYNASIM4 fact sheet][d4]). | *None* for alignment: the engine has no alignment step, and gate m6 records its alignment report as not computed. *Gate passed, not used in a blind test*, for transport: gate w1 places the PSID-fitted processes on Microcosm's CPS-based frame and matches 43 cross-sectional cells and one ordering check (`runs/gate_w1_candidate4_v1.json`, `runs/NOTES-gate_w1_candidate4.md`). It certifies no transition, and its SSA benefit cells are report-only. | An alignment step to the actuaries' demographic and labor targets that keeps households consistent, with its displacement from the unaligned path published; gated SSA benefit and payment totals. | `docs/design/open_population.md` ([#557][pr557], approved under d1925); [#151][i151]; design PR [#217][pr217] closed unmerged; [#531][i531], which reports that w1's family-A marital and household targets come from a frame that [microcosm#1212][mc1212] finds skewed toward couples, and d1406 (open) on how to amend them. w1's committed run is unchanged | Build OP6's alignment layer and OP7's `gate_pop` in the demographic phase. Under revision 14's design, OP6 will align births and emigration and leave death draws to the mortality adapter the mortality lane chooses: the baseline's, or SM once admitted. SM is designed to preserve the baseline's expected deaths within each age, sex and year cell, up to a logged clipping residual (open-population design §6.4, revision 14 in [#576][pr576]; mortality design §6). OP12's gated benefit totals wait for the economic phase (open-population design §3). | @@ -134,8 +138,8 @@ them. Paths are relative to the repository root. | Capability | What DYNASIM does | Our status | Test that would show parity | Tracking | Next step | |-----------|----------------|------------------------|---------------|--------|-----------| -| Supplemental Security Income (SSI) | Applies SSI's income and resource rules and models eligibility, participation and benefits ([DYNASIM3 primer][d3]). | *Used in a blind test*, static. Exercise 2 offsets the cut for people who already report SSI and enrolls no one new (`src/populace_dynamics/estimates/adjusted_poverty.py`); in its committed run, the registered alternative SSI rules leave the headline unchanged. Registration 19 computed SSI's asset test on Microcosm's frame through PolicyEngine-US, static and report-only, with a disclosed frame defect; its code merged in [#511][pr511]. Microcosm fixed that defect in its build code ([microcosm#1186][mc1186]); Registration 19 has not been rerun. [microcosm#1215][mc1215], open, concerns resources on the same frame. Nothing projects SSI. | Eligibility, resource, deeming and state-supplement worked examples; participation against SSA caseloads by age and type; then projected caseloads, payments and the poverty effect of a Social Security cut. | `docs/design/income_and_resources.md` ([#559][pr559], Tier 1 approved under d1923); [#511][pr511]; d905, d1414 (open); [microcosm#1178][mc1178], [microcosm#1186][mc1186], [microcosm#1215][mc1215] | Register and run the rerun once a rebuilt, certified frame exists, and settle d1414 on a Registration 19 addendum. For projected SSI, build SSI0–SSI5R under Tier 1, starting with the input contract and the statutory worked examples (income design §4). | -| Wealth, pensions and other income | Projects pension coverage and benefits, retirement-account balances and withdrawals, asset income and wealth ([DYNASIM4 fact sheet][d4]; [overview][ov]). | *Used in a blind test* for reported wealth only: exercise 2 turns PSID-reported wealth into an annuity income (`src/populace_dynamics/estimates/adjusted_poverty.py`). *None* for projection: the model projects no wealth, pensions or asset income. | Projected pension coverage and benefits, account balances and drawdowns, asset income and wealth by cohort and lifetime-earnings group, first against later PSID waves the model did not see, then against DYNASIM's published tables. | `docs/design/income_and_resources.md` ([#559][pr559], Tier 1 approved under d1923); [#45][i45] reserves balance-sheet state for capital gains | Build WP1–WP6 under Tier 1: starting states, plan rules and a transition model that WP-G scores on later PSID waves it did not see (income design §4). | +| Supplemental Security Income (SSI) | Applies SSI's income and resource rules and models eligibility, participation and benefits ([DYNASIM3 primer][d3]). | *Used in a blind test*, static. Exercise 2 offsets the cut for people who already report SSI and enrolls no one new (`src/populace_dynamics/estimates/adjusted_poverty.py`); in its committed run, the registered alternative SSI rules leave the headline unchanged. Registration 19 computed SSI's asset test on Microcosm's frame through PolicyEngine-US, static and report-only, with a disclosed frame defect; its code merged in [#511][pr511]. Microcosm fixed that defect in its build code ([microcosm#1186][mc1186]); Registration 19 has not been rerun. [microcosm#1215][mc1215], open, concerns resources on the same frame. Nothing projects SSI. | Eligibility, resource, deeming and state-supplement worked examples; participation against SSA caseloads by age and type; then projected caseloads, payments and the poverty effect of a Social Security cut. | `docs/design/income_and_resources.md` ([#559][pr559], Tier 1 approved under d1923); [#511][pr511]; d905, d1414 (open); [microcosm#1178][mc1178], [microcosm#1186][mc1186], [microcosm#1215][mc1215]; drafts in review: SSI0 ([#573][pr573]); SIPP readers that include SSI receipt and amounts (D2, [#581][pr581]); and part 1 of the aggregate-table readers, which includes POMS's annual state-supplement payment charts, with SSA's SSI tables left to part 2 (D4, [#574][pr574]) | Register and run the rerun once a rebuilt, certified frame exists, and settle d1414 on a Registration 19 addendum. For projected SSI, build SSI0–SSI5R under Tier 1, starting with the input contract and the statutory worked examples (income design §4). SSI0, the federal interface to PolicyEngine-US with its source-to-input contract, is in review ([#573][pr573]). | +| Wealth, pensions and other income | Projects pension coverage and benefits, retirement-account balances and withdrawals, asset income and wealth ([DYNASIM4 fact sheet][d4]; [overview][ov]). | *Used in a blind test* for reported wealth only: exercise 2 turns PSID-reported wealth into an annuity income (`src/populace_dynamics/estimates/adjusted_poverty.py`). *None* for projection: the model projects no wealth, pensions or asset income. The first part of D1, merged in [#575][pr575], reads the PSID family files' income items for 1999, 2001, 2003 and 2015–2023 and their wealth items for 2015–2023 through a registry of 1,463 fields. Before reading, it checks the wave's setup file against its pinned SHA-256 and every field's label and columns against that file; each field also records its page in the wave's pinned codebook (`src/populace_dynamics/data/psid_income_wealth.py`, `psid_income_wealth_registry.py`). Its tests use invented records, and nothing calls it yet. | Projected pension coverage and benefits, account balances and drawdowns, asset income and wealth by cohort and lifetime-earnings group, first against later PSID waves the model did not see, then against DYNASIM's published tables. | `docs/design/income_and_resources.md` ([#559][pr559], Tier 1 approved under d1923); [#575][pr575]; drafts in review: WP2's retirement-plan rules ([#572][pr572]), SIPP readers (D2, [#581][pr581]) and part 1 of the aggregate-table readers (D4, [#574][pr574]); an HRS addendum to the design, which awaits the maintainer's ruling ([#579][pr579]); [#45][i45] reserves balance-sheet state for capital gains | Finish D1's later parts, the wealth supplements and the pension items, and build WP1–WP6 under Tier 1: starting states, plan rules and a transition model that WP-G scores on later PSID waves it did not see (income design §4). | | Poverty and income distribution | Reports poverty, adequacy and distributional effects of reforms from projected family income ([Five Democratic Approaches][fd]). | *Used in a blind test*, static. Exercise 2 computes adjusted poverty at 67 on incomes the PSID recorded: a 13 percent cut raises it 0.46 percentage points in the model and 2 points in DYNASIM3, a registered comparison with no pass or fail rule. Nothing projects family income. The follow-on test for the 1946–55 cohort (U2) is ratified but not registered. Its source loader reports no blockers ([#524][pr524], [#540][pr540]). Its structural pass on real PSID records, which computes structural and reconciliation counts and the named F17 component summaries but no poverty, stopped once in the birth law (d1649) and, under d1724 and after [#552][pr552], ran once more and completed with no mapping or reconciliation failure. [#556][pr556] fixed its final parameter block, and its merge ratified the specification (steps 4 to 6 of its execution record). [#577][pr577] committed the pre-registration evidence record the specification pins. Step 7's fresh forecast was frozen and independently checked in the lane's evidence folder, outside the repository, so a reader can't check it here yet. | The comparator's income definition, unit, thresholds and ages, with uncertainty; for full parity, poverty and adequacy on projected family income by cohort and group. | [#524][pr524], [#525][pr525], [#539][pr539], [#540][pr540], [#542][pr542], [#544][pr544], [#546][pr546], [#552][pr552], [#556][pr556], [#577][pr577]; d637, d745, d1090, d1242, d1597, d1649, d1724 | Post the #42 registration (step 8), which is Max's, then run the one-shot, which publishes its result whatever the outcome. | | Results by group | Urban's published DYNASIM output reports income for people 62 and older by age, sex, race and ethnicity, education and lifetime earnings ([Urban's DYNASIM output][out]); SSA's MINT adds rows by beneficiary type. | *Used in a blind test*, in part. Exercise 2 computes 15 of its source report's 36 rows and names the 21 it omits: race and ethnicity, education, labor-force experience, and own and shared lifetime earnings (`src/populace_dynamics/estimates/uniform_cut_tabulation.py`). Exercises 1 and 3 report by age and exercise 4 by sex. MINT's beneficiary-type classification is built (`src/populace_dynamics/group_breakdowns/common.py`); rows that need projected household income or poverty status are not computed (`docs/design/nasi_projection_groups_posthoc.md`). [#513][pr513], merged on 11 October, adds MINT's group categories as code only; no real-data group run is registered. | For each comparison, every cell DYNASIM or MINT publishes for that table, with the same definitions and denominators. | `docs/design/mortality_groups_financing.md` ([#558][pr558], approved under d1922); [#513][pr513]; [#367][i367] | Build GR1's group-definition registry and GR2a's constructors now; GR3's group runs of the four tests follow Max's rulings on their #42 registrations (mortality design §3.4). | | Behavioral responses to reform | Published DYNASIM4 analyses include assumed responses of wages, compensation and investment income to tax changes ([Five Democratic Approaches][fd]). | *None* for estimated responses. Exercise 3's registered claiming alternatives delay projected claims by the rise in the retirement age, capped at age 70; one of them moves only claims at 65 or later (`src/populace_dynamics/fra68_track/benefits.py`). Both are stylized assumptions with no quasi-experimental basis. | Claiming responses estimated from real policy changes and backtested against observed shifts after past increases in the retirement age; earnings and investment-income responses with their own registered estimates. | d515, which defers any claiming-response build until data identify one | Name, in a registration, the policy variation a claiming-response estimate would use. | @@ -431,10 +435,17 @@ cite repository paths, pull requests, issues and public URLs only. [pr567]: https://github.com/PolicyEngine/microcosm-dynamics/pull/567 [pr568]: https://github.com/PolicyEngine/microcosm-dynamics/pull/568 [pr570]: https://github.com/PolicyEngine/microcosm-dynamics/pull/570 +[pr572]: https://github.com/PolicyEngine/microcosm-dynamics/pull/572 +[pr573]: https://github.com/PolicyEngine/microcosm-dynamics/pull/573 +[pr574]: https://github.com/PolicyEngine/microcosm-dynamics/pull/574 +[pr575]: https://github.com/PolicyEngine/microcosm-dynamics/pull/575 [pr576]: https://github.com/PolicyEngine/microcosm-dynamics/pull/576 [pr577]: https://github.com/PolicyEngine/microcosm-dynamics/pull/577 [pr578]: https://github.com/PolicyEngine/microcosm-dynamics/pull/578 +[pr579]: https://github.com/PolicyEngine/microcosm-dynamics/pull/579 +[pr581]: https://github.com/PolicyEngine/microcosm-dynamics/pull/581 [pr583]: https://github.com/PolicyEngine/microcosm-dynamics/pull/583 [pr584]: https://github.com/PolicyEngine/microcosm-dynamics/pull/584 [pr585]: https://github.com/PolicyEngine/microcosm-dynamics/pull/585 [pr586]: https://github.com/PolicyEngine/microcosm-dynamics/pull/586 +[pr588]: https://github.com/PolicyEngine/microcosm-dynamics/pull/588