Skip to content

Record U2 §20 steps 2 and 3 and §17 items 4–7 and 9 - #544

Merged
MaxGhenis merged 4 commits into
masterfrom
u2-s20-steps-2-3-20261015
Oct 18, 2026
Merged

MaxGhenis merged 4 commits into
masterfrom
u2-s20-steps-2-3-20261015

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

Records U2 specification §20 steps 2 and 3 as complete and §17 items 4–7 and 9 as far as they are done, each with its evidence. It follows the round-3 closeout of milestone 2 (#525, merged as f7a84d0b). INVENTED DATA ONLY: no real PSID record was read, and no restricted file was opened.

Review round 1 and what changed

The first independent review (Claude Opus 5.5, at e6a71a3c) returned REQUEST_CHANGES with one blocker. §20 step 2 called implementation done, but #525's report still listed one item as due before step 4. The frame digest hashes pandas' dtype names and CSV text, so the step-4 pass and the registered one-shot must run under the same pandas version and string-inference setting.

97eda904 closes that item in code, as the review preferred:

  • cohort.frame_environment() returns {pandas_version, future_infer_string}.
  • The pre-registration evidence record moves to schema v2 and freezes that environment with the digest. check_preregistration_evidence requires exactly a nonempty version string and a bool.
  • loader.check_frame_environment refuses under any other environment:
    • a frozen load, before any PSID path is resolved;
    • a registered run, before the snapshot is built.
  • 13 new tests, all on invented data, all failing on master's code:
    • the record carries the environment;
    • each malformed environment is refused with its own message;
    • a Hypothesis property: the registered check passes only under the frozen environment;
    • a frozen load refuses another version or setting without resolving a PSID path.

The review's six should-fix items and its informational wording are applied as it phrased them. Those cover the §17 review paragraph, step 3's citations, step 2's manifest counts and citation, item 4's citations, the SSI test's root patch, and the §19 blindness line. The milestone-2 report marks the pandas item closed.

What changes

The specification changes only after §16a, which the d1090 record tests require.

Place Change
§20 step 2 Done: implementation (#487, #525 and this PR's frame environment), manifests (1,766 registry entries and 26 SSI and Census records, all RESOLVED and documentary), parameter capture (SSI, Track M, life tables pinned by hash)
§20 step 3 Done: independent mapping review (the milestone-1 adjudication, #486's verified corrections, and an independent review of every later registry change, each ending in APPROVE), invented tests, historical isolation, the exact U1 differential
§17 item 4 Done on the documents and invented data; real-record counts are the structural pass's
§17 item 5 Code pin checked; §15's pin is open until §20 step 5
§17 items 6 and 7 Done (the differential is evidence at f7a84d0b and runs again at ratification)
§17 item 9 Partly checked; the remaining equality checks wait for §20 step 5, which also empties §15's blocked_by
§17 review paragraph, §19 Updated; the §19 entry gains the blindness line and its exposure pointer

Other files:

  • u1_identity.json: re-pins the spec SHA-256.
  • D1090_FOLLOWERS: moves with item 9 and step 2.
  • test_u2_parameters.py::test_a_changed_ssi_capture_refuses: refuses a copy of the capture with equal JSON content and one added space. It fails with either pin check removed (DID NOT RAISE).
  • docs/design/u2_m2_u1_differential_f7a84d0.json: the differential at U2 M2 round-3 informational fixes: bind a registered run to its evidence record and rows #525's merge, equal in every check.

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, birth-evidence and legacy-manifest files: 1,345 passed, 254 skipped.
  • Tiers, recounted by collection: unit 9,900 (+13), artifact 4,245 (+1), total 16,396. The manifest check passes.
  • Black (26.5.1 and latest, -l 79) and ruff are clean.

Not in scope

🤖 Generated with Claude Code

Specification (lines after section 16a only):

- Section 20 step 2 (implementation, manifests, parameter capture) and
  step 3 (independent mapping review, invented tests, historical
  isolation, exact U1 differential evidence) are marked done, each with
  its evidence.
- Section 17 items 4, 6 and 7 are marked done; item 9 is partly
  checked; item 5 is checked.
- Section 19 records the revision.
- u1_identity.json re-pins the specification's SHA-256.
- test_adjudication_applied.py's D1090_FOLLOWERS move with the item-9
  and step-2 lines, so the d1090 record checks still hold whole lines.

Section 17 item 5: the code pins the U2 SSI capture by its SHA-256
(parameters.SSI_SHA256, diagnostics.SSI_SHA256), but no test fed its
loaders changed bytes of the capture. test_a_changed_ssi_capture_refuses
does now: a copy with one added space and equal JSON content refuses
both readers. The test fails if either pin comparison is removed.
Section 15's sha256 field still reads TO_VERIFY. Section 15 precedes
section 16a, so this revision may not edit it; section 20 step 5 writes
it when it materializes the final parameter block.

The U1 differential at #525's merge (f7a84d0) against 9cee242 is equal
in every check, its dry run included. It is committed as
docs/design/u2_m2_u1_differential_f7a84d0.json.

Tests: tests/track_u2 plus the U2 data, birth-evidence and
legacy-manifest files, 1,332 passed, 254 skipped, under a guard refusing
any PSID or evidence-directory access (nothing refused). Tiers,
recounted by collection: artifact 4,245 (+1), total 16,383.

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

vercel Bot commented Oct 16, 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 16, 2026 10:58pm UTC

Request Review

The independent review of e6a71a3 (Opus 5.5, REQUEST_CHANGES) blocked
on one point. Section 20 step 2 called implementation done, yet #525's
report still listed the pandas environment as due before step 4: the
frame digest hashes pandas' dtype names and CSV text, so the step-4
pass and the one-shot must run under the same pandas.

The fix closes it in code, as the review preferred:

- cohort.frame_environment() returns the pandas version and the
  future.infer_string setting.
- The pre-registration evidence record moves to schema v2 and freezes
  that environment with the digest. check_preregistration_evidence
  requires exactly a nonempty version string and a bool.
- loader.check_frame_environment refuses a frozen load (before any
  PSID path is resolved) and a registered run (before the snapshot)
  under any other environment.
- Tests: the record holds the environment; each malformed environment
  refuses with its own message; a property over invented versions and
  both settings shows the registered check passes only under the frozen
  environment; and a frozen load refuses another version or setting
  without resolving a PSID path. All 13 fail on master's code.

The review's should-fix items, as it worded them:

- Section 17's review paragraph no longer says the implementation is
  incomplete.
- Step 3 cites the reviews that ended in agreement: #486's verifier,
  d1090 round 4 and #524's final review, the d637 delta review and
  #540's gating review.
- Step 2's manifests are 1,766 registry entries plus 26 SSI and Census
  records, documentary findings, with the right test cited.
- Item 4 cites tests that check what it claims.
- The SSI test roots identity.ROOT at its copy, so only the pin can
  refuse.
- The section 19 entry gains the blindness line and its exposure
  pointer.
- Items 5, 7 and 9 and step 2 take the informational wording.

The spec's SHA-256 is re-pinned. D1090_FOLLOWERS moves with the item-9
and step-2 lines. The milestone-2 report marks the pandas item closed,
and the exposure record notes the follow-up.

tests/track_u2 plus the U2 data, birth-evidence and legacy-manifest
files: 1,345 passed, 254 skipped, under the PSID guard (nothing
refused). Tiers, recounted by collection: unit 9,900 (+13), total
16,396.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 16, 2026
…iers

Master gained #525, #534, #538, #543, #544-era changes and #545 since
this branch's base (9af5392). Conflicts were the two tier files only;
tests/track_u2/test_u2_loader.py, changed on both sides, merged cleanly:
the merged file is master's plus exactly this branch's one added test,
and this branch's plus exactly master's changes. Every other file equals
its one changing side.

Tier files rewritten from `pytest --collect-only -q -m <tier>` on the
merged tree: unit 9,902, artifact 4,244, integration_psid 1,423,
reproduction_legacy 520, oracle_policyengine 308 (16,397), which is
master's counts plus this branch's +1 unit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The #544 re-review (Opus 5.5, APPROVE at 97eda90) left informational
items, applied here:

- loader.check_frame_environment now normalizes its record first
  (check_preregistration_evidence), so a direct call compares only
  plain JSON data. A dict subclass whose comparisons always agree is
  refused. test_check_frame_environment_normalizes_its_record fails
  without the normalization.
- The step-4 structure pass records the interpreter, platform and
  package versions it ran under (environment in
  track-u2-structure.json), so the one-shot can be run under the same
  ones. The registered run's sidecar writes the same record. The pass
  may not import the runner, so it has its own _environment(), and a
  test holds the two equal and checks that build returns it.
- The binding provably covers the frame environment: a property over
  invented environments shows binding_sha256 changes exactly when the
  environment does.
- Docstrings of loader.load_u2_inputs, scripts/track_u2_structure.py
  and the registered preflight (item 8) name the new check.
- The two __all__ entries are in order.
- The exposure record notes the re-review's reading.

tests/track_u2 plus the U2 data, birth-evidence and legacy-manifest
files: 1,348 passed, 254 skipped, under the PSID guard (nothing
refused). Tiers, recounted by collection: unit 9,901 (+1), artifact
4,247 (+2), total 16,399.

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

- data/external/track_u2/u1_identity.json: both sides re-pinned the
  specification. The pin is recomputed from the merged specification,
  which keeps #542's section 19 line and this PR's section 17, 19 and
  20 edits.
- tests/tier_counts.json and tests/README-tiers.md: recounted by
  collection on the merged tree. Unit is 9,916 (master 9,902 + 14) and
  artifact 4,247 (master 4,244 + 3); integration_psid 1,423,
  reproduction_legacy 520 and oracle_policyengine 308 are unchanged.
  The total, 16,414, equals the full collection.

The specification and tests/track_u2/test_u2_loader.py auto-merged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis
MaxGhenis marked this pull request as ready for review October 16, 2026 22:58
@MaxGhenis
MaxGhenis merged commit 2ef1053 into master Oct 18, 2026
12 checks passed
@MaxGhenis

Copy link
Copy Markdown
Contributor Author

Merge audit: merged as 2ef10532 (a merge commit) at head 0dd22555, 2026-10-18T16:11Z.

Landing slot. The "Microcosm dynamics" coordinator assigned this PR the tier-count slot after #542 landed. Master was 7b4eec2d.

Merge with master (0dd22555, master 7b4eec2d, which includes #542 and #545).

  • The conflicts were the specification's SHA-256 pin, recomputed from the merged specification (77f30781…), and the two tier files.

  • The tier files were recounted by collection on the merged tree:

    Tier Count Change from master
    unit 9,916 +14
    artifact 4,247 +3
    integration_psid 1,423
    reproduction_legacy 520
    oracle_policyengine 308
    Total 16,414 equals the full collection
  • Merge delta (git patch-id --stable, excluding the conflicted files and the specification):

Independent reviews. All four were Claude Opus 5.5 reviewers with a shell, in a standalone clone with the PSID guard; the Codex lanes were held.

Run Range Verdict Outcome
20261016-140335-pr544-review e6a71a3c REQUEST_CHANGES One blocker: the pandas environment was still open before step 4. Six should-fix items.
20261016-152540-pr544-review-r2 97eda904 APPROVE The blocker was closed in code: the evidence record (schema v2) freezes the frame environment, and frozen loads and registered runs refuse any other. Every should-fix item was applied.
20261016-185803-pr544-delta-review 97eda904..0dd22555 APPROVE Nothing blocking and nothing to fix; three optional notes.

The reviews are in ~/reviews/pr525-closeout-20261015/out/.

Evidence at 0dd22555, under an audit hook refusing any PSID, evidence-directory or REFS access; the hook refused nothing:

  • the d1090 record tests and every tests/track_u2 file plus the U2 data and birth-evidence files: 1,338 passed, 254 skipped;
  • the legacy manifest: 11 passed;
  • the U1 differential against 9cee2423: equal in every check, the dry run included;
  • Black (26.5.1 and latest) and ruff: clean.

CI at 0dd22555: gh pr checks 544 exited 0 with every check passing; mergeable was MERGEABLE.

What this records:

  • §20 steps 2 and 3 are done.
  • §17 items 4, 6 and 7 are done, item 9 is partly checked, and item 5's code pin is checked.
  • The last implementation item before step 4, the frame environment, is closed in code.

What remains:

  • d1242 (B2 in sources.PERSON_COUNTED_EXCLUSIONS) follows as its own small PR.
  • The step-4 pass (d1649) runs in a dedicated session, once, after both PRs have landed.

Optional notes from the delta review, left as follow-ups:

  • The binding property test checks only the "changes" direction; the preflight tests cover the other.
  • A docstring sentence order in scripts/track_u2_structure.py.
  • _environment() could run before the load.

INVENTED DATA ONLY: no real PSID record was read, and no restricted file was opened.

This branch was successfully deployed

1 active deployment
Preview — 0dd22555 Deployed Oct 16, 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