Repository navigation
U2 births: count out seeds outside the birth law's support (d1724) - #552
Merged
Merged
Conversation
The d1649 step-4 pass stopped in derive_u2_births: career's derived-age clause asserts a seed-derived birth year in [1889, 2016], and U2's universe takes every positive-weight in-family person at any age. Before the law runs, count out each universe person whose birth year only the seed coordinate could give (the law, run without seeds, leaves them unresolved) and whose seed implies a year before 1889 or after 2016. The law's precedence is unchanged: a marriage-history or earnings year wins whatever the seed implies. Seed codes 1, 999 and 0 stay on their existing paths. A counted-out person never re-enters through the annuitant extension, whose own row filter already keeps it inside the support. Each side's count is disclosed per row as n_seed_birth_year_counted_out and decides nothing. career.py is unchanged. Two invented variants (outside and at the bounds) and a new test module cover both sides, the 1889 and 2016 boundaries, the disclosed counts, that nothing else changes, and a per-person career oracle property. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
§3 keeps its draft-3 lines (the registries cite them), so the note d1724 names stands in a new §16d, as §§16b-16c amend §3: the count-out rule, how the ruling's words are read (only persons the seed would date, so the law's precedence is kept), why no cohort member is lost, Track M's precedent and the disclosure. §17 and §20 step 4 point to it; step 4 records the stopped d1649 pass and the one further pass d1724 allows; §19 logs the change. The d1090 record test cuts §16c at §16d, §16d is pinned line by line with 16 mutations, and the spec pin moves. The invented variants' members now join, in their first wave, families that supply a U1 observation in that wave. Tiers by collection: unit 9,916 -> 9,941, integration_psid 1,423 -> 1,441 (total 16,463). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… seed At the coordinating session's request (d1724's purpose: step 4 runs once more). career.derive_birth_years refuses, after its loop, any seed age code but 1-125 and 999; the d1649 assertion masked that. For a person only the seed would date: a seed whose code the law refuses (0, which the individual file documents as Inap., or any code outside 1-125 and 999) is replaced by the earliest presence aged 2-125 whose implied year lies in 1889-2016; a person with none is counted out under seed_age_0 or no_valid_seed_age. Disclosed per row with the bound counts, plus n_seed_birth_year_reseeded. Codes 1 and 999 and the law's precedence are unchanged; career.py is unchanged. The invented variants become seed_births_counted_out (every reason) and seed_births_every_case (plus the 1889/2016 members and two cohort members re-seeded past codes 0 and 998). Tests cover each reason, the re-seed, the masked refusal without the rule, and a per-person career oracle over refused codes; 21 mutants each fail a test. §16d and §19 state the widened rule; the spec pin moves. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Tiers by collection at the merged head: unit 9,956, integration_psid 1,445 (artifact, reproduction_legacy and oracle unchanged; total 16,482). The disclosure mutation now names "Each reason's count". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Tests: re-seeding at both ends of the support ({2017: 0, 2019: 2} ->
2016; {2013: 998, 2015: 125} -> 1889), and the extension's code-0
filter where the implied year lies inside the support (2015). The
review's three surviving mutants now fail; the mutation check is
24/24.
- §16d and §19 record that the coordinating session asked for code 0
to be counted out at once, and that re-seeding it is this change's
choice (code 0 is documented as Inap.); a pinned mutation guards it.
The infant and annuitant-fallback sentences are corrected. Spec pin
moves.
- The structure script's docstring lists every reason and the
re-seeded count; derive_u2_births no longer reuses `present`.
- Exposure record names the review lane. Tiers: unit 9,958,
integration_psid 1,446.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e declined Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Max approved widening the rule to refused seed codes, re-seeding included, on 2026-10-20 (noted on d1724). §16d's ruled line and its reading paragraph, and the §19 entry, now cite that approval in place of the coordinating session's request, and keep the record that the session first asked for code 0 to be counted out at once. Two pinned mutations guard the approval clauses; spec pin moves. Tiers: integration_psid 1,447 (total 16,486). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The coordinating session confirmed that Max's 2026-10-20 approval (noted on d1724) named code 0 (Inap.) explicitly as re-seeded from the earliest presence the law can date. §16d now states that approval as the operative line and keeps the earlier count-out request only as a parenthetical; §19 states the approval alone. A pinned mutation guards the code-0 clause; spec pin moves. Tiers: integration_psid 1,448 (total 16,487). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- §16d and §19 say that the widening described to Max also named code 999 (DK/NA) as refused; the law leaves 999 unresolved, so the rule keeps it on that path, narrower than described (the correction noted on d1724). A pinned mutation guards it. - §16d says re-seeding "can keep" a cohort member, not "keeps" one. - The exposure record lists d1724's two notes among the lane's reads and how it learned of the approval. - Spec pin moves; tiers: integration_psid 1,450 (total 16,489). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis
marked this pull request as ready for review
October 20, 2026 17:23
Contributor
Author
|
Merge audit (d1724). Merged with a merge commit as
|
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.
Ruling d1724: fix U2's birth universe so §20 step 4 can run once more. Code and invented data only; no PSID record was read.
career.pyis byte-unchanged.Why
The d1649 step-4 structure run (2026-10-19,
640adccf) stopped incohort.derive_u2_births, before writing any output.career.derive_birth_yearsasserts that a birth year derived from a seed coordinate (age code 2–125) lies in [1889, 2016]. U2's universe takes every positive-weight, in-family person at any age, so a young child in a late wave, or an age code of 124–125 in 2013, reaches that assertion. The law also refuses, after its loop, every seed age code except 1–125 and 999. The assertion would have masked that refusal; the individual file's code 0 (Inap.) can reach it.The rule (
cohort._seed_for_the_law; spec §16d)It applies only to persons whose birth year only the seed could give. Those are the persons the law, run without seed coordinates, leaves unresolved. For them:
seed_age_0(first code 0) orno_valid_seed_age.before_1889orafter_2016.Everyone else keeps the law's precedence and record: a marriage-history or earnings year still wins, and codes 1 and 999 stay unresolved. A counted-out person never re-enters through the annuitant extension. That extension already seeds only presences the law accepts.
Disclosure: every row's structural counts carry
n_seed_birth_year_counted_out(four keys) andn_seed_birth_year_reseeded. Each count decides nothing.Reading choices (agreed with the coordinator; the widening approved by Max on 2026-10-20, noted on d1724):
Invariants (tested)
careerrun on that person alone. This is a Hypothesis property over every age code, bound and history/earnings mix, plus pinned examples.derive_u2_birthscompletes on a fixture holding every case. The dry-run variant runs U1 and its income rows end to end.derive_u2_birthsfrom Git. Master raises on the counted-out fixture.Spec
§3's lines are pinned to draft 3, so the "§3 note" is a new §16d. The d1090 record test now cuts §16c's record at §16d and requires a unique §16d heading. §16d is pinned line by line, with 21 text mutations. §17 points to §16d. §20 step 4 records that the d1649 pass stopped with no output and that d1724 authorizes one more pass. The §19 entry, the spec pin (
u1_identity.json) and the exposure record are updated.Checks
EV/rulings-records-20261019-d1724/mutate.py): 24/24 killed. That includes the three mutants that survived the first review: re-seed support narrowed at both ends, narrowed at 2016 only, and the extension admitting code 0.derive_u2_birthsfrom Git: identical results on the base and all earlier invented variants. Master raises on both new variants. The first reviewer's 600-case random differential found no case where only this PR raises.e0a731ae9,916 / 4,253 / 1,423 / 520 / 308. This head (aa597e24): unit 9,958, artifact 4,253, integration_psid 1,450, 520, 308 (total 16,489).Reviews (records:
EV/rulings-records-20261019-d1724/)20261020-030251-d1724-review-552b, Opus 5.5 (no Codex lane free): APPROVE at8a6a8192, with test gaps and record points. Addressed in068ee2e2; one point declined (the version line is pinned by the d1090 check).20261020-045107-d1724-review-552-delta, GPT-6.1 Sol: APPROVE at068ee2e2, one nit. Fixed in88f3a172.20261020-051420-d1724-review-552-delta2(one-line exposure-record fix): APPROVE at88f3a172.20261020-114816-d1724-review-552-delta3b, Opus 5.5: REQUEST_CHANGES at5dfc8413. It found that §16d left out the 999 divergence from the description Max approved, plus two wording points. Fixed inaa597e24.20261020-130902-d1724-review-552-delta4, GPT-6.1 Sol: APPROVE ataa597e24, with no findings.axiom: n/a: U2 cohort-construction code and specification records, no policy rule
🤖 Generated with Claude Code