Skip to content

Registration 18 (A-COLA) build: stage 1 on master, stage 2 and close-out - #571

Closed
MaxGhenis wants to merge 6 commits into
masterfrom
acola-reg18-build-20261024
Closed

MaxGhenis wants to merge 6 commits into
masterfrom
acola-reg18-build-20261024

Conversation

@MaxGhenis

Copy link
Copy Markdown
Contributor

WIP. Do not merge. The coordinator lands this after independent review and the tier-count slot.

This is milestone F0 of the mortality, groups and financing lane: the build of Registration 18's A-COLA trust-fund test. It does two things:

  • puts the stage-1 build on master;
  • adds stage 2 and the close-out.

It runs nothing on real data and opens no comparator.

Sources

Commits

  1. b1b2561f: replays stage 1 (9de858d0) onto master with git cherry-pick.
    • The two tier files conflicted and keep master's version. They are recounted in the last commit.
    • The other 24 files are byte-identical to 9de858d0. The stage-2 builder audited them and found no bug.
  2. 75ef143a: scripts/compare_acola.py, the standard-library comparison program for the validation lane after the seal opens. Its tests use wholly invented source values.
  3. d17d1d00: mechanism-L equivalence.
    • scripts/acola_mechanism_l_equivalence.py runs rows C0, C1 and M0–M4 on a seeded invented population: 69 people per row, 483 records.
    • The golden file was produced at the registered code commit dd222b9 in a temporary git worktree, and the HEAD test reproduces it bit for bit.
    • The SHA-256s are 07c59d69…87de for the golden file and 5d7eef14…7a27 for the script.
    • No REG18_MECHANISM_DRIFT.
  4. 1b4923b3: stage 1's TR 2026 Table V.C1 capture and master's data/tr2026 accessor agree on the intermediate COLAs effective December 2027–2029.
  5. e422ad55: a test on invented late claimants born 1917–1942 pins mechanism L's legacy 48-month delayed-credit cap. It ships with the design note docs/design/acola_trust_fund_implementation.md, whose section "Disclosures for the second registration comment" goes to Max for the second Candidate 2 design: latent-permanent conditioned chained QRF (research memo) #42 comment.
  6. f78efbc6: the five acola_track sources join POST_REVIEW_SOURCE_EXCLUSIONS, and the tiers are recounted.

Invariants

The design note's "Arithmetic and invariants" section states these, and the tests check them. Every input is invented.

  • Accounting:
    • component totals sum to each scenario's total;
    • the baseline total equals its OASI and DI parts;
    • P equals the baseline-share-weighted OASI and DI P wherever both denominators are positive;
    • a zero component denominator makes that P undefined, not zero.
  • Zero reform: every change statistic, falling share and null is zero, and benefit-level medians stay equal and positive.
  • Equal memberships: equal scenario memberships imply that P equals the ratio of means, within floating tolerance.
  • Weighted median:
    • it is the exact half-weight midpoint, using Fraction weights;
    • it is invariant to permutation and bounded by its range;
    • ties and zero weights are handled exactly.
  • Determinism: fixed seeds give the same output, shared draw states are used, and the legacy source pins are exact. No missing draw becomes an empty completed draw.
  • Comparison arithmetic:
    • it is done in Decimal;
    • the four-corner tests check containment, monotonicity and positive denominators;
    • interval subtraction is [a,b] − [c,d] = [a−d, b−c];
    • seal files are checked before any comparison;
    • no acceptance threshold or verdict is computed.
  • Intended exceptions:
    • Dual entitlement can raise a spouse's excess by more than the claimant's own cut, so individual benefits and P can rise under a cut. That exception is tested explicitly, with no universal tolerance.
    • Worker bounds allow the dime-rounding losses each case accrues.

Checks

Run by the lane session at f78efbc6's tree, with an empty PSID root:

Selection Result
tests/acola_track 288 passed
Legacy selection (the cleared brief's section 7 list) plus tests/track_a_v2/test_dry_run_protocol.py 490 passed, 2 skipped
Birth-evidence exclusion and reachability (-k post_review) 2 passed
Full collection, -k tiers_match_policy_manifest 1 passed

The builder also ran Black at 79 columns, Ruff and git diff --check over the 25 Python files it added or changed.

The dd222b9..origin/master diff of the mechanism-L paths adds two files, engine/forward_earnings_s1_v1.py and ss/statutory_delayed_credit.py, and changes no existing file.

Tiers (recount-tiers.py):

Tier Before After
unit 18,088 18,351
artifact 4,253 4,278
Total 24,619 24,907

This PR edits tests/tier_counts.json, so its merge waits for the coordinator's tier-count slot.

Coordination

These PRs overlap this one in the exclusion tuple: #562, #561, #560, #230 and #223. No protected benefit module overlaps.

Provenance

  • Builder: a Subfleet build lane (GPT-6.1 Sol, job 20261024-073819-mgf-f0-acola-stage2). Its sandbox could not write .git, so the lane session:
    • replayed and committed the work in the brief's steps;
    • reran the worktree equivalence the sandbox had blocked, recording it in the golden file's provenance;
    • reran the checks above.
  • Data: no PSID data file was opened, no real-data statistic was computed, and no d1408 script was run.

Plan

axiom: n/a: microsim-only registered test build

🤖 Generated with Claude Code

MaxGhenis and others added 6 commits October 24, 2026 10:47
Replays 9de858d0eaf14df7affd5d4e810568a6d41584e9 ("Build the A-COLA
trust fund test, stage 1 (Registration 18, d658)"), whose parent
75cd352 was 510 commits behind master, onto origin/master 2195258
with `git cherry-pick 9de858d0`.

Conflicts and how they were resolved:
- tests/tier_counts.json and tests/README-tiers.md: kept master's
  versions. Stage 1's counts were taken on its old base. The tiers are
  recounted at the end of this branch, after stage 2 adds its tests.
  Until then the tier-manifest check fails on this commit alone.

The other 24 files apply unchanged. They are byte-identical to
9de858d0, and the stage-2 builder found no bug in them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Adds scripts/compare_acola.py, a standard-library program for the validation lane after the seal opens. It fetches nothing, and it writes decimals as strings. It converts comparator records in the cleared brief's section-4 schema and the stage-1 dry-run artifacts into the registered comparisons. tests/acola_track/test_compare.py exercises it on wholly invented source values.

Built by a Subfleet build lane (GPT-6.1 Sol, job 20261024-073819-mgf-f0-acola-stage2) under the cleared builder brief and its 2026-10-24 addendum. That lane's sandbox could not write .git, so the lane session committed its working tree in steps.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
scripts/acola_mechanism_l_equivalence.py runs mechanism L for rows C0, C1 and M0-M4 on one fixed, seeded invented population: 69 people per row, 483 row-person records. It writes canonical JSON.

The golden file tests/acola_track/mechanism_l_dd222b9.json (SHA-256 07c59d69...87de) was produced at dd222b9 in a temporary git worktree (.equiv-dd222b9), with the script's SHA-256 5d7eef14...7a27. Imports were checked to resolve to the worktree's src. The builder's earlier git-archive export of the same commit gave the identical file; the provenance records both. The test recomputes at HEAD and asserts bit-identical equality. No REG18_MECHANISM_DRIFT.

Built by a Subfleet build lane (GPT-6.1 Sol, job 20261024-073819-mgf-f0-acola-stage2) under the cleared builder brief and its 2026-10-24 addendum. That lane's sandbox could not write .git, so the lane session committed its working tree in steps.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Checks that stage 1's Table V.C1 capture and master's data/tr2026 accessor give the same intermediate COLA increases effective December 2027, 2028 and 2029. Only the COLA rows are read from the accessor.

Built by a Subfleet build lane (GPT-6.1 Sol, job 20261024-073819-mgf-f0-acola-stage2) under the cleared builder brief and its 2026-10-24 addendum. That lane's sandbox could not write .git, so the lane session committed its working tree in steps.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Invented late claimants born 1917-1942 pin mechanism L's legacy 48-month delayed-credit cap (claiming.benefit_factor, reached from cola_track_a/benefits.py:345). The cap is disclosed before the run; see docs/errata/2026-10-11-delayed-credit-window.md and docs/design/d1408_delayed_credit_diagnostic.md. docs/design/acola_trust_fund_implementation.md maps the implementation and holds the section "Disclosures for the second registration comment".

Built by a Subfleet build lane (GPT-6.1 Sol, job 20261024-073819-mgf-f0-acola-stage2) under the cleared builder brief and its 2026-10-24 addendum. That lane's sandbox could not write .git, so the lane session committed its working tree in steps.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Adds stage 1's five acola_track sources to POST_REVIEW_SOURCE_EXCLUSIONS and its exact-tuple test, keeping master's existing entries. Recounts the tiers with recount-tiers.py and the empty PSID root: unit 18,088 -> 18,351, artifact 4,253 -> 4,278, total 24,619 -> 24,907. The tier-manifest check passes on full collection.

Built by a Subfleet build lane (GPT-6.1 Sol, job 20261024-073819-mgf-f0-acola-stage2) under the cleared builder brief and its 2026-10-24 addendum. That lane's sandbox could not write .git, so the lane session committed its working tree in steps.

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

vercel Bot commented Oct 24, 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:52pm UTC

Request Review

@MaxGhenis

Copy link
Copy Markdown
Contributor Author

Superseded by #585, a blind replay of this build. The builder tree stays on preserve/acola-f0-builder-tree-20261024 (0556744) until #585 lands. The blob-by-path comparison of the two heads (7 differing paths, all explained) is recorded in the lane's evidence folder.

@MaxGhenis MaxGhenis closed this Oct 25, 2026

This branch was successfully deployed

1 active deployment
Preview — f78efbc6 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