Skip to content

Open population design: births, migration, alignment and the long horizon - #557

Merged
MaxGhenis merged 14 commits into
masterfrom
open-population-design-20261021
Oct 24, 2026
Merged

MaxGhenis merged 14 commits into
masterfrom
open-population-design-20261021

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Approved design. Nothing is built in this PR. Max authorized the open-population lane on 21 October 2026 (d1802) and approved this design on 23 October 2026 (d1925, "Approve as recommended") at revision 11, file SHA-256 b5496c13a7f768b504226ff374d8c23ded3daa26b39aa16d89c0fe750988e8f7. Revision 12 records his rulings and the coordinator's in §10, and states the death-alignment boundary (the mortality lane's SM owns death alignment; OP6 selects no deaths). Revision 13 applies the two delta reviews. The demographic phase is authorized; its builds run in separate PRs (OP1 #566, OP0.1 #567).

What it adds

  • docs/design/open_population.md (revision 13): the design for four parity-ledger rows (births; immigration and emigration; alignment and a representative population; projections beyond 2030), modeled on Track B revision 3.
    • 15 milestone rows in two phases, 140–216 engineer-days (estimate). The demographic phase (76–113 d) needs no forward earnings and starts now. The economic phase (64–103 d) waits on Track B's H, B3, B4 and J, so it is approved once a B2 successor passes and Track B's B0.2 freezes J's record.
    • Entrant initialization, which Track B §3.3 left unpriced, is its own row, OP8: 26–41 d (estimate), with its data sources and what it delivers to each Track B milestone (§3.5). With the demographic packets it builds on, the full price is 35–54 d. Insured status comes from Track B's insured-status rule (rules lane, under d1802), which OP8(d) consumes through an interface in §6.1.
    • Data sources and access per gate, ledger rows closed per milestone, interfaces with Track B (H, B4, J, I, B7, G), the mortality lane (Design: mortality, groups and financing lane (priced milestones, approved under d1922) #558) and the Microcosm start, invariants with property-based tests, risks and kill criteria, and the ten decisions §10 records rulings on.
  • docs/design/open_population_evidence/horizon_dependence.py and its output: an invented-data run of the existing loop showing that scheduled entrants make a projection's early years depend on its end year (closed runs do not).

Reviews

  • Full reviews (Subfleet, GPT-6.1 Sol): REVISE on revisions 5, 6 and 9; APPROVE on revision 10 (commit 805e478f; 376e7e25 after the branch's 24 October rewrite). Revision 11 added that review's two clarifications in its words.
  • Delta reviews of revisions 11 and 12: GPT-6.1 Sol, APPROVE with three minor findings; Opus 5.5, one finding the coordinator ruled minor plus eight minor findings, one of them (finding 9) outside the design. Revision 13 applies them; §12 maps each finding to its resolution. A gate check of revision 13 (Opus 5.5, in session) returned APPROVE at 9b38c64a with five minor wording findings, left for a follow-up.
  • Reviews are at ~/reviews/open-population-20261021/review-r5 to review-r9.

Checks

  • Every mechanism claim cites code or a design read at a stated commit, or a file hash; §11 lists files read and exposure.
  • No restricted file opened; no real-data outcome computed.
  • Docs and an invented-data script only: no src/, tests/, gates.yaml, runs/ or tests/tier_counts.json change.
  • The coordinator merges this PR.

🤖 Generated with Claude Code

A priced design for the open-population lane (d1802) of the DYNASIM
parity plan: births with both parent links, immigration and emigration,
alignment to OACT's demographic and labor targets, and projections past
2030. Sixteen milestones in two phases (130-199 engineer-days, an
estimate), the entrant-initialization price Track B section 3.3 left
open, data sources per gate, interfaces with Track B (H, B4, J) and the
Microcosm start, risks and kill criteria. Docs only; nothing is built.

Adds an invented-data script showing that scheduled entrants make a
projection's early years depend on its end year.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vercel

vercel Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
social-security-model Ready Ready Preview Oct 24, 2026 2:47pm UTC

Request Review

OP3 and OP4 also unlock OP2(c); the horizon record is defined in
section 5.2; section 11 lists the files cited from search matches.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis and others added 4 commits October 21, 2026 10:27
Entrant initialization, which Track B's design section 3.3 left
unpriced, is now one milestone row (OP8, 25-39 engineer-days, an
estimate) with its data sources and what it delivers to each Track B
milestone, so Track B's B0.2 audit (draft PR #554) can cite it. The
former OP8 and OP9 merge into it with a new sub-part for starting
states in Track B's schemas; later rows are renumbered. The economic
schedule now assumes B0.2 freezes before a B2 successor passes, and
section 6.4 adds the two restricted-files entries of 21 October.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The insured-status rule has an owner: under d1802, Track B's rules
lane builds it as a separate PR once #530 merges. OP8(d) now consumes
it through an interface in section 6.1 that states how the pre-entry
covered-work convention enters the quarters-of-coverage count (zero-
and four-filled calls, with an undetermined status where they differ).
Drops revision 2's decision 7 and its scale estimate for the rule.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The insured-status interface now follows the rules lane's design:
per-year provenance (OBSERVED, CONVENTION_FILLED with a convention id,
UNKNOWN), with the rule bounding UNKNOWN years and refusing by name
where the bounds disagree. OP0 and section 5.2 adopt the shared
holdout registry in Track B's B0.2 exposure record: J's candidate
years first, OP0.2 picks gate_ssa_totals' years from what remains,
and shared years are disclosed by name in both registrations.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Cites the shared holdout registry by path, commit and SHA-256
(docs/design/track_b_holdout_registry.json at e1c3c1e, schema v1),
records the supplement-2023, DI ASR 2023 and Census 2023 tables gate w1
already used as exposure for gate_ssa_totals, and adds the insured-status
rule's relayed flag and refusal names to the single-call interface.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Answers the twelve findings of review r5 (REVISE): corrects the M6
fertility mechanism and OP2's differential test; treats gate_birth as
regression evidence by default because NCHS's 2016-2024 rates are
already in the repository; adds OP3's timing and exposure bridge;
names the non-quarter facts insured status needs (section 214(c),
blindness, prior disability periods), checked against the statute and
POMS; fences the EPUF arm of gate_young_earn; makes OP12 gate unaligned
totals so every gate stays unaligned unless Max makes an exception;
narrows ledger closure; adds OP5/OP7 date and link conventions and
source-specific tolerance classes. Total 140-216 engineer-days
(estimate). Section 12 maps each finding to its resolution.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Revision 8 reverts revision 7; no milestone is blocked and no
estimate changes. Section 2.10 notes that PSID use follows the
project's data-access record.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Answers review r6 (REVISE; four major, five minor): section 214(c)
applies only to noncitizens whose first SSN was assigned on or after
1 January 2004 (POMS RS 00301.102, checked), with the date as an input
with provenance; candidate-side uncertainty is set per gate; the young-
earnings gate admits ages 18-24 only and leaves the hand-off at 25 open;
OP12 and OP11b respect the Microcosm start's hold on spouse and survivor
results; OP9's final replay waits for OP8; plus the review's minor
wording, invariant and citation fixes. No estimate changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Answers review r7 (REVISE; one major, four minor): the original SSN
assignment date stays UNKNOWN under both pre-entry earnings conventions,
since first entry does not establish it; the POMS RS 00301.102 citation
covers B.1-B.5 and workers not yet assigned a number; the summary and
section 8 state OP0's wait for J's reservation and OP0.2's earlier
finish; the widowhood invariant is limited to surviving spouses; and
OP11b's withheld outputs are limited to spouse and survivor types. No
estimate changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 23, 2026
1. Preparation artifacts as scored evidence (medium). Scored runs are now a
   controlled list in code, SCORED_RUNS {path: (gate, sha256)}. Evidence must
   name a listed run that belongs to the entry's gate, and the committed
   blob must match the pinned SHA-256. Floor builders, candidate lists and
   dry runs are not listed, so they are rejected.
2. Import cutoff by pathname (medium). Historical imports are limited to
   HISTORICAL_IMPORT_GATES, a code-level list, and start as used. Content
   is pinned by hash, so renames, re-adds and merge-created registries
   cannot launder a future gate's evidence into an import.
3. Registration after scoring (medium). Committed.registered_at walks the
   registry's first-parent history; a registration must be on record at a
   commit where its scored run was not yet committed.
4. History checks (medium). history_problems validates each snapshot
   against its own commit's tree (evidence, citations, identifiers,
   completion record), admits a new registry against empty_like, and skips
   invalid snapshots as predecessors.
5. Rebase merging (medium). The committed module now checks every commit
   on the pull request branch (full=False), so a rebase cannot introduce
   an unchecked change and restoration.
6. Terminal-status mutant (low). The unit tests enumerate the permitted
   transitions independently (EXPECTED_TRANSITIONS) and check terminal
   statuses; used -> withdrawn is now killed.
7. Malformed inputs (low). Decoding, NUL and '..' paths, oversized line
   numbers, non-mapping registries and malformed predecessors return
   problems instead of raising.

Seeded entries: H005 cites gates.yaml:4311-4327 for its Census labels;
H003 cites the open-population design as PR #557 (draft).

Mutations: 53 of 53 killed (restored source sha256 aae22b1d...).
Tests: 98 passed, 2 skipped. Tier counts: unit 10,048 (+16), artifact
4,263 (+2).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review r8 returned APPROVE on revision 10 and asked for two minor
clarifications, added here in its words: the economic schedule assumes
Track B's I and any required observational timing gate are ready, and
OP11b's estimate covers beneficiaries, benefits and Social Security
income only. No other change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… boundary

Max approved revision 11 (ruling d1925, "Approve as recommended"). This
revision records his answers and the coordinator's rulings in §10, and
states the death-alignment boundary of ruling d1922: the mortality lane's
SM owns death alignment, so OP6 selects no deaths and consumes SM's
mortality as given (§3.1, §3.3, §4, §5.4, §6.4, §7). It also lists the
entrant attributes the mortality lane's design (#558 §7.2) asks for as
unpriced. No estimate changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The status line again cites the file hash Max approved at revision 11
(ruling d1925), and notes that the branch's rewritten revision-11 commit
differs from that text only in four data-access lines.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Applies the minor findings of the two delta reviews of revisions 11 and
12 (GPT-6.1 Sol, APPROVE; Opus 5.5, one finding the coordinator ruled
minor):

- cite #558 by path, section 7.2 and the file hash Max approved, not by
  commit;
- keep Max's ruling d1922 apart from the coordinator's death-alignment
  boundary in section 10, section 6.4 and the revision log;
- state the section 7 death property per year, on each replay's own
  roster, and limit fidelity to the margins OP6 or OP9 selects or scales;
- name #558's newborn and immigrant attribute requests separately and
  say where its other requests are met;
- drop section 8's preapproval wording;
- add the revision-12 reading record and amend the revision log;
- add section 12's table for both reviews.

No estimate changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 24, 2026
- Landscape: public HRS counts as available for the estimands it
  supplies, and its use follows the project's data-access record.
  Restricted HRS-SSA access, eligibility and lead time remain to be
  verified.
- Plan: the open-population design approved in d1925 (PR #557, question
  5) publishes every projected year past 2030 as conditional on named
  assumptions, with drift diagnostics, never as a validated forecast,
  and registers its 2050, 2065 and 2070 DYNASIM comparisons as
  report-only and blind. This bears on B7's target years and J's record.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis
MaxGhenis merged commit f8ffc7d into master Oct 24, 2026
12 checks passed
@MaxGhenis

Copy link
Copy Markdown
Contributor Author

Merged by the Microcosm Dynamics coordinator at head 9b38c64 (merge commit f8ffc7d), 2026-10-24 15:46Z.

Gates at merge:

  • gh pr checks exit 0 on the latest run (lint, build, pytest 3.14 and all four shards, graph-integration).
  • MERGEABLE (clean), not a draft, no CHANGES_REQUESTED review.
  • Independent check: an Opus 5.5 review (r10) approved 9b38c64; the coordinator confirmed its verdict line.
  • Docs and a design-evidence script only; no tier-count change, so the tier slot was not needed.

Follow-up owed by the lane: a revision-14 PR for r10's five minor wording findings, with its own review.

MaxGhenis added a commit that referenced this pull request Oct 24, 2026
…known gaps

- Tracking and next-step cells for the twelve rows the mortality,
  groups and financing (#558), income-and-resources (#559) and
  open-population (#557) designs cover, citing their merged files.
- The poverty row records U2's completed second structural pass and
  its ratification by #556's merge; next are the evidence file, a
  fresh forecast and the #42 registration.
- Known gaps keeps only what no issue, PR or approved design plans.
- Rulings d1922, d1923 and d1925; link refs for #556, #566–#568, #570.
- Scorecard: the wealth row names the approved design; progress page
  regenerated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch was successfully deployed

1 active deployment
Preview — 9b38c64a Deployed Oct 24, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant