Skip to content

Count B2's persons per Max's d1242 ruling - #546

Merged
MaxGhenis merged 2 commits into
masterfrom
u2-d1242-b2-person-count-20261018
Oct 19, 2026
Merged

MaxGhenis merged 2 commits into
masterfrom
u2-d1242-b2-person-count-20261018

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Applies Max's ruling d1242 (2026-10-16, recorded in the decision ledger). B2's disclosed count is the number of code-90 and code-92 persons in 2019, 2021 and 2023 family units that would otherwise supply a U2 observation, as specification §16c proposed. Like B1's count, it is disclosed and decides nothing.

d1649 makes this change a precondition for the §20 step-4 pass: the pass runs once, at a master head containing #544 and this change. INVENTED DATA ONLY: no real PSID record was read, and no restricted file was opened.

Changes

  • sources.PERSON_COUNTED_EXCLUSIONS = (B1, B2). The cohort already collects each exclusion's members per wave in units that would otherwise supply an observation (cohort.py, the excluded_persons map), so this tuple was the only gate on which counts are disclosed.

  • test_u2_roles.py:

    • test_exclusion_counts_are_the_ones_section_16c_names now checks both counts against the raw-frame oracle, each within its own waves. On master's code it fails for U0 and U1.
    • test_earlier_dispositions_keep_precedence treats both counted exclusions alike. A unit whose would-be observation is disposed of earlier (a sex-unknown target in a B2 unit) no longer adds its code-90/92 member to B2's count. That matches the existing B1 case and the oracle.
  • Specification:

    • A §19 entry records the ruling. §16c, which records the proposal and is pinned by the d1090 record test, is unchanged.
    • u1_identity.json re-pins the specification's SHA-256.
  • Exposure record: a note on this change.

  • Review of 17e2a096 (REQUEST_CHANGES) answered in 743555d7:

    • F1: the invented data had one trigger per excluded unit, so no test could tell persons from units. A new variant, second_trigger_in_excluded_unit_2019, adds a second, sex-unknown code-92 member to one B2-excluded 2019 unit. Under both role contexts, the count test asserts that observations and dispositions are unchanged and that B2's 2019 count and distinct count each rise by one. The units and sexknown mutations, which survived the review, now fail.
    • F2: each counted exclusion is also disclosed as distinct persons across the waves (n_family_unit_exclusion_persons_distinct), against a raw-frame oracle; the per-wave counts sum to person-waves. The sources comment and the §19 entry say so, and the runner's disclosure test pins both keys.
    • N1: the precedence test's dead else branch is gone. N2: the sex-unknown variant's note mentions B2's count.

Tests

All runs used an audit hook refusing any PSID, evidence-directory or REFS access, with HOME and the PSID directory empty. The hook refused nothing.

  • tests/track_u2 plus the U2 data and birth-evidence files: 1,338 passed, 254 skipped.
  • Mutations at 743555d7: counting units, counting targets, skipping sex-unknown triggers, dropping code 92, and summing the per-wave counts in place of the distinct union. Each fails the count tests.
  • Tiers, recounted by collection, are unchanged: unit 9,916 and artifact 4,247, total 16,414. No tier file changes.
  • Black 26.5.1 (-l 79) and ruff are clean.

🤖 Generated with Claude Code

Max confirmed section 16c's proposed clarification on 2026-10-16
(d1242). B2's disclosed count is the number of code-90 and code-92
persons in 2019, 2021 and 2023 family units that would otherwise
supply a U2 observation. It is disclosed and decides nothing, as B1's
is.

- sources.PERSON_COUNTED_EXCLUSIONS now names B2 as well as B1. The
  cohort already collected each exclusion's members per wave in units
  that would otherwise supply an observation, so the tuple was the
  only gate.
- test_exclusion_counts_are_the_ones_section_16c_names checks both
  counts against the raw-frame oracle, each in its own waves. On the
  old code it fails for U0 and U1.
- test_earlier_dispositions_keep_precedence treats both counted
  exclusions alike. A unit whose would-be observation is disposed of
  earlier no longer adds its trigger member to B2's count either.
- Section 19 records the ruling. Section 16c, which the d1090 record
  test pins and which records the proposal, is unchanged. The
  specification's SHA-256 is re-pinned, and the exposure record notes
  the change.

tests/track_u2 plus the U2 data and birth-evidence files: 1,338
passed, 254 skipped, under the PSID guard (nothing refused). Tiers are
unchanged (unit 9,916, artifact 4,247; total 16,414).

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

vercel Bot commented Oct 18, 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 18, 2026 6:26pm UTC

Request Review

@MaxGhenis
MaxGhenis marked this pull request as ready for review October 18, 2026 16:15
F1: a new invented variant puts a second, sex-unknown code-92 member in
one B2-excluded 2019 unit. The count test asserts that every observation
and disposition is unchanged while B2's 2019 count and its distinct count
each rise by one, under both role contexts. The units and sexknown
mutations, which survived the review, now fail.

F2: each counted exclusion is also disclosed as distinct persons across
the waves (n_family_unit_exclusion_persons_distinct), checked against a
raw-frame oracle; the per-wave counts sum to person-waves. The sources
comment and the section 19 entry say so; the specification is re-pinned.

N1: the precedence test's dead else branch is gone. N2: the sex-unknown
variant's note mentions B2's count. The exposure record notes the reading.

INVENTED DATA ONLY.

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

Copy link
Copy Markdown
Contributor Author

Merge audit: merged as 640adccf (a merge commit) at head 743555d7, 2026-10-19T16:45:03Z.

Base. The PR was cut from 2ef10532 (#544's merge). Master moved twice before the merge:

Neither changes any file this PR changes. This PR adds no test function and leaves the tier files alone, so #549's counts stand. No tier-count slot was needed.

Independent reviews, each in a standalone clone with its own venv and the PSID guard:

  • Review of 17e2a096: REQUEST_CHANGES (Claude Opus 5.5, 20261018-121555-pr546-review).
    • F1 (blocking): every invented excluded unit held one trigger, so no test could tell persons from family units. The units and sexknown mutations survived.
    • F2: the per-wave counts sum to person-waves, not persons.
    • N1 to N4: nits.
  • Delta review of 17e2a096..743555d7: APPROVE, no open findings (GPT-6.1 Sol, 20261018-142607-pr546-delta-review).
    • F1, F2, N1 and N2 are closed; N3 and N4 stay as advised.
    • All five mutations are rejected: units, targets, sexknown, no92, and summing the per-wave counts in place of the distinct union.
    • The distinct-person disclosure is within d1242's scope and changes no decision.
    • Its guard log is empty.
    • Process deviation: the reviewer read lines of the committed specification outside its assigned ranges (lines 16–45 and 1911–1915: opening prose and an appendix mapping row). The specification is the pre-registration document, which isn't on the restricted list, and it holds no target values. Nothing was exposed.

Review outputs: ~/reviews/pr525-closeout-20261015/out/review-546.md, review-546-delta.md.

What landed:

  • sources.PERSON_COUNTED_EXCLUSIONS = (B1, B2), per Max's d1242.
  • A distinct-person form of each count (n_family_unit_exclusion_persons_distinct), next to the per-wave form. The runner discloses it per row.
  • A registered invented variant, second_trigger_in_excluded_unit_2019, that pins "persons, not units, of any recorded sex".
  • A §19 entry. The specification is re-pinned in u1_identity.json, and §16c is unchanged.
  • The exposure record notes this revision's reading.

Evidence at 743555d7, under the audit hook that refuses any open, listing, scan or glob under the PSID directory, the evidence directory or REFS, with HOME and POPULACE_DYNAMICS_PSID_DIR empty. The hook refused nothing:

  • every tests/track_u2 file plus the U2 data and birth-evidence files: 1,338 passed, 254 skipped, 0 failed;
  • tiers recounted by collection, unchanged: unit 9,916, artifact 4,247, integration_psid 1,423, reproduction_legacy 520, oracle_policyengine 308 (16,414);
  • the five mutations above each fail the count tests, and the real code passes;
  • Black 26.5.1 (-l 79) and ruff: clean.

CI at 743555d7: gh pr checks 546 exited 0, with every check passing; mergeable was MERGEABLE (CLEAN).

Blindness: invented data only. No real PSID record was read, and no restricted file was opened.

Next: this merge is d1649's last precondition for the §20 step-4 structural pass, together with #544 (2ef10532). The coordinator's pass card runs it in its own session.

@MaxGhenis
MaxGhenis deleted the u2-d1242-b2-person-count-20261018 branch October 19, 2026 16:47

This branch was successfully deployed

1 active deployment
Preview — 743555d7 Deployed Oct 18, 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