Repository navigation
DynaSim exercise 2 (Track U) continued: invented data + dry run, diagnostics, registered entry, two referee passes (u1-draft-5; no real-data statistic) - #458
Merged
Conversation
…st, U6, F17, registered entry Continues the partial Track U build of #456 (plan critical-path-uniform-cut-20260923.md, items U5, U9 and U10, rows U6 and U-inst, field F17). Nothing here computes a poverty statistic on PSID data; the registered entry point refuses to run (the specification is a draft, d189 and d194 are open, the 2005/2007 wealth supplements are not staged, and no #42 registration exists). - cohorts/age67.py: institution_income_rule for row U-inst (builder default family_of_record, pending the referee; alternative excluded): an institutionalized member takes the family unit whose interview number its record carries, as an OFUM with no co-resident spouse. The PSID collects no income for persons in institutions (ER34137-ER34143 are inapplicable for them) and attaches their record to the family they left (2011 User Guide 2.4). The builder also records an "invented" provenance kind for frames that hash to the digest their invented provenance carries. - estimates/adjusted_poverty.py: cut_start_year (default None, every observation cut) builds row U6; with 2004 an observation is cut only when its member turns 67 in or after 2004, so U1's 1936 birth year is uncut and gets no SSI response. birth_year is now a required column. The start year is pending plan decision 8. - uniform_cut_track_u/ (new package): rows.py (the registered rows as spec overrides, held equal to the specification block), invented.py (U5: a seeded INVENTED age-67 population in the reader shapes whose income and WEALTH1 identities hold exactly, an INVENTED threshold table, and re-generation checks), runner.py (the row pipeline with provenance guards and the F17 official-concept diagnostic), diagnostics.py (F17 Social Security, SSI and WEALTH1 summaries against the committed SSA Supplement 2025 Table 5.A4 snapshot and the committed federal benefit rates; imports neither the income concept nor the tabulation). - scripts/track_u_dry_run.py (U9), scripts/run_track_u_registered.py (U10 entry point: #42 comment pointer, registered commit on a clean tree, ratified block with nothing awaiting or blocking, pinned Census capture, every wave's WEALTH1; exclusive artifact creation), and scripts/track_u_component_diagnostics.py (F17 components on the staged PSID, no threshold). - docs/design/boomers2004_uniform_cut_comparison.md: u1-draft-3. - New modules registered in POST_REVIEW_SOURCE_EXCLUSIONS, the pinned tuple and the reachability guard; tier counts recollected (7,414). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…(u1-draft-4) Applies the independent referee report EVID/boomers2004-referee-20260924.md (SHA-256 b083fb2638787c204d09324a16fbbc5fa09cfc191e0450bcadb7d44f1647b2b6), which refereed u1-draft-2 at 8d7e743, to the specification, code and tests. Each required change was checked against its source before it was applied: the Report's lists of tables and printed pp. 19-24 (the range RESTRICTED-FILES.md clears), the PSID codebooks and formats, the eCFR text of 20 CFR 416.1112, 416.1121, 416.1124, 416.1163 and 416.1205, the nine SSA COLA notices in the Federal Register, the committed life tables, and a design count on the staged individual file. No income concept, threshold or poverty statistic was computed on PSID data; the specification stays a draft (d189, the fallback rule and ratification pending). - adjusted_poverty: retirement_account_income_rule (F4a, default remove_head: HEAD ANNUITIES, "Head's Income from Annuities and IRAs" in 2005-2011, plus HEAD IRAS in 2013, removed under replace); farm_asset_share (F4b, default 0.5 of positive farm income and the whole loss); annuity_lives defaults to fu_head_rule, priced on the head and the head's co-resident legal spouse (code 20 or 90); 0.02 is the real-rate sensitivity; pending decisions updated. - age67: unresolved_marital_status defaults to relationship_code (R9) and annuitant_age_source to derived_birth_year, with the birth-year law extended to in-family heads and spouses outside the universe (R8); row U0-F (1941, 1943, 1945); head and head-spouse annuitant columns, marital_resolution and age sources; threshold-free counts of farm and head retirement-account income in the structural summary. - uniform_cut_tabulation: the design SE is a domain estimator on the full sample design (design_se_domain; z = 0 outside the cell; R10). - uniform_cut_track_u: row U0-F and the fallback headline rule (rows that need a wave without WEALTH1 are reported blocked with counts); the runner's design frame; NAMED_DELTAS held equal to section 12; the invented generator adds relationship-code couples, code-90 husbands, farm, annuity and IRA income, and interview ages. - run_track_u_registered.py: --headline-row must equal the fallback rule's row for the staged PSID; the dry run reports the fallback as staged today. family_income notes the 2005-2011 HEAD ANNUITIES label. - Specification u1-draft-4 (the referee asked for draft-3, already used on this branch): sections 1-19 revised, new 10a (comparison and acceptance); section 17 records the pass: R1-R17 applied, R11 in part (row U-inst kept, since u1-draft-3 gave it an income rule), O1 not adopted with reasons, open questions 9-14. - Tier counts recollected (7,434). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ft-4 structural counts - uniform_cut_tabulation.pending_decisions(): the design SE domain (full_sample_design, alternative tabulated_rows; referee Q5/R10) and the cells (plan decision 2(b)); the runner and the dry run carry them with the income-concept and builder decisions. - Specification u1-draft-4, sections 3, 14, 16 and 19: the structural counts recollected under the new rules on the staged PSID (counts only; evidence EVID/track-u-structure-u1d4-20260924/): 1 of the 35 unresolved U0 marital states resolves by relationship code (U1: 3 of 98); every annuitant age came from a derived birth year; among the 320 computable U0 observations, 5 have family farm income and 18 head annuity or IRA income (U1: 9 and 66 of 857). The dry-run evidence for this draft is EVID/track-u-dry-run-u1d4-20260924/. - Tier counts recollected (7,435). No income concept, threshold or poverty statistic was computed on PSID data. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…er bound" labels Independent review of 310c53a..5e32237 (Track U continuation and the first referee pass, u1-draft-4). - uniform_cut_track_u.runner._check_parameters: a registered_real run compared the thresholds' recorded SHA-256 with adjusted_poverty.THRESHOLDS_SHA256, which is None until the Census capture is committed, so a table labelled "census_capture" whose provenance omitted its SHA-256 (or recorded None) passed the check (None == None). The check now refuses every table while the pin is unset. Regression tests: the unpinned cases are refused, and with an invented pin a table recording it passes while others are refused. - adjusted_poverty.SSI_RULES and uniform_cut_track_u.rows (row U3): the descriptions still called U3 "an upper bound"; the specification (sections 8 and 11, referee suggestion O4) calls it the largest SSI response of the three registered rules and not a bound on DYNASIM's simulation. The run artifact now carries the specification's wording. - Tier counts recollected (7,436). No income concept, threshold or poverty statistic was computed on PSID data. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Independent adversarial review of 310c53a..c51e7c7 (Track U continuation and the first referee pass, u1-draft-4). No rule, default or row changes; the behaviour tests pin what the corrected text says. - adjusted_poverty module text: row U3 was still called "an upper bound" across a line break after c51e7c7 dropped the label from SSI_RULES and the rows; it now uses the specification's wording (referee O4). Regression test collapses whitespace before searching the module text, SSI_RULES, the row descriptions and the specification. - Specification section 9 said every member of a family unit gets the same B, R and T under fu_head_rule; under row U6 the cut follows each member's age-67 year (cut_applies), so two members of one family unit can get different R. The section now names the U4 and U6 exceptions. Tests: an invented family with 1936 and 1938 members under cut_start_year=2004, and a text check of section 9. - age67._annuitant_birth_years and specification section 5 said the R8 extension seeds a person from the earliest wave in which they are in a family; the code seeds from the earliest wave in which they hold a head, spouse or partner code (or, for a marriage-history spouse, are in a family). The text now states the implemented rule and records a review count on the staged PSID: every in-family person with those codes has a positive weight in 2005-2013, so the extension adds no one to U0 or U1. Test: an invented zero-weight wife who is an OFUM earlier keeps the seed of her first spouse-coded wave. - Specification section 3 listed code 90 beside the role codes; the builder's role for a code-90 legal husband is OFUM (U4 keeps him on the family-unit basis), which the section and question 11 now say, with a review count of 2 U0 and 4 U1 such observations. - family_income module text: an over-length line reflowed. - Tier counts recollected (7,440). Review counts on the staged PSID were structural only (relationship codes, universe membership, design strata); no income concept, threshold or poverty statistic was computed on PSID data. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Brings in the statutory AIME module (ss/statutory_aime.py) and the Track C repair. Conflicts resolved by keeping both sides: the Track U and statutory-AIME entries in POST_REVIEW_SOURCE_EXCLUSIONS and in the pinned tuple of test_birth_evidence_artifact.py (the reachability guard merged cleanly). tests/tier_counts.json and tests/README-tiers.md were recollected with recount-tiers.py: unit 3,109, artifact 2,848, integration_psid 863, reproduction_legacy 520, oracle_policyengine 163, total 7,503. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… (u1-draft-5) Second referee report boomers2004-referee-2-20260924.md (SHA-256 2113ba9b...d5af2) on u1-draft-4 (37a94ea): ratifiable after S1-S9. Each change was checked against the cleared exercise-2 definitions extract (a3978b68...0384), the u1d4 structural counts, the PSID 1968 family codebook, the family_income transfer labels or the Census poverty-measures page before it was applied. - S1: section 1 states the target as the cleared extract defines it (the 1936-45 column, 36 rows, whole-number cells, the 2004 start and no behavioural response). - S2: cells are the Report's Total, Gender, Marital Status and Gender and Marital Status rows. age67 emits marital_status_4 (married, widowed, divorced, never_married, unclassified); the tabulation's cells, REPORT_ROWS and unclassified_marital_cells ("excluded_counted") follow, non_married is gone, and the official-concept diagnostic uses the same cells. - S3: the other 21 rows are named omissions (NOT_COMPUTED_REPORT_ROWS, listed in the run artifact); corrected to say only the own lifetime-earnings measure is stated to include uncovered earnings. - S4: the comparator interval is +/-0.5 per level and 1 for the difference. - S5: cut_start_year defaults to 2004; row U6 is withdrawn. - S6: named deltas drop "imputed rent excluded" and add the income-source and unresolved-marital deltas. - S7: row U-inst is withdrawn; institution_income_rule defaults to "excluded" (the referee's Q9 answer). - S8: U2-F ... U10-F register each one-field alternative on U0-F's population, awaiting the fallback rule. - S9: the extract, the pass and the S-item dispositions are recorded (section 17.3; referee_passes gains the second entry). Optional O2-O6 and O9 applied; O1 left to the freeze. The runner records the spouse's age source. No income, threshold or poverty status was computed on PSID data. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Recollected the structural counts under the u1-draft-5 code (b862d2d; evidence track-u-structure-u1d5-20260924, counts only) and built each row with the withdrawn U-inst settings. Admitting institutions adds one U0 observation (a 1937-born person in no wave's in-family universe, in an institution in 2005) and none to U0-F, so the second referee's S7 premise that U-inst adds nothing holds for U0-F only. The withdrawal stands on the Census and Q9 reasons; section 3, section 11, the named delta (runner.NAMED_DELTAS and section 12), section 17 and the age67 and rows texts now say so. Section 3 records the four-way marital counts by sex, the annuitant age sources (no wave-age fallback), the code-90 husband counts (the family file records no AGE OF WIFE for them; question 11, O7) and the 2013 HEAD ANNUITIES and HEAD IRAS counts (question 14, O8); section 4 states U4's size rule for a female head with a legal husband. No income, threshold or poverty status was computed on PSID data. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The builder's last step, left uncommitted when its session hit a usage limit: spec section 14 lists EVID/track-u-dry-run-u1d5-20260924/ (run at 4666857), and the tier manifest counts the tests 4666857 added (unit 3,125; total 7,519). The tier-policy test passes on a full collection; black and ruff are clean. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…1-draft-5 texts Independent review of the second referee pass (37a94ea..1fa6e60). - Section 15: withdrawing row U6 removed the block's only "awaiting" for plan decision 8, which adjusted_poverty.pending_decisions (the cut_start_year decision) and section 16 still list as awaiting Max's confirmation of the scorecard's "from 2004" wording. The cut block now carries that "awaiting", so the registered run's ratification scan refuses the block until Max rules. A new test holds every code decision awaiting Max (ssi_rule, cut_start_year) to an "awaiting" key the scan finds; it fails on 1fa6e60. - Builder boundary: it said RESTRICTED-FILES.md did not yet hold the 2026-09-24 16:10 changelog entry for the cleared extract's values scan; the file now holds it (values scan clean, 0 genuine leaks, 0 unclassified). A test holds the sentence to the file; it fails on 1fa6e60. - Section 16 lists the decisions awaiting Max without a card one per line, so decision 8 and the fallback rule no longer read as one item; section 11 no longer says every registered row is computed (under the fallback rule the rows defined on U0 or U1 are reported as blocked); section 14 records that the invented dry run re-run at 1fa6e60 equals the u1d5 evidence except for the commit and output path. - Tier manifest recollected (unit 3,127; total 7,521). No rule, default or row changed. No income, threshold, annuity or poverty status was computed on PSID data. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This branch was successfully deployed
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.
This PR continues DynaSim exercise 2 ("Track U": a uniform 13% benefit cut, and the change in adjusted poverty at age 67 for the 1936–45 cohorts) after #456. It adds the rest of the Track U work that could be built without Max's rulings, and applies two independent referee passes to the spec. The spec is now
u1-draft-5, still a draft.Nothing here computes a poverty status, threshold, annuity or rate on PSID data. The PSID-facing code produces structural counts only. The registered entry point refuses to run without a ratified spec and an issue #42 registration pointer.
What it adds
uniform_cut_track_u/invented.pybuilds a seeded invented age-67 population. Invented inputs are labelled as invented, regenerated from their seed, and refused on the registered path.scripts/track_u_dry_run.pyruns the pipeline end to end on invented data, headed INVENTED DATA - NOT A COMPARISON.track_u_component_diagnostics.pysummarises PSID Social Security, SSI and WEALTH1 amounts against published aggregates. It computes no poverty threshold. A runtime check refuses the run if the income concept or the tabulation is loaded.scripts/run_track_u_registered.pymirrors Track A's. It refuses without a Candidate 2 design: latent-permanent conditioned chained QRF (research memo) #42 pointer, the registered commit and a clean tree, a ratified §15 with nothing awaiting, or Census thresholds whose hash is pinned. A--headline-rowargument must match the wealth-supplement staging.boomers2004-referee-20260924.md, R1–R17):boomers2004-referee-2-20260924.md, S1–S9), checked against the cleared definitions extract:cut_start_year = 2004is the primary, following the Report's "beginning in 2004";POST_REVIEW_SOURCE_EXCLUSIONS, the pinned tuple and the reachability guard. Master (Oracle: statutory computation years (42 USC 415(b)(2)); repair Track C AIME agreement (7,486/7,486 with Axiom) #457) is merged in, and the tier manifest is recollected.Review
Each referee application was independently reviewed by an Opus 5.5 agent.
subfleet-briefs-20260924/tracku-review-report.md, VERDICT: APPROVE) fixed one defect and three texts in bc82604, adding two regression tests.RESTRICTED-FILES.mdclears. The cleared exercise-2 extract passed a values scan with no leaks.Still pending (Max)
🤖 Generated with Claude Code