Skip to content

Stage the references on policyengine-us 2.60.0 for the next board release - #242

Merged
MaxGhenis merged 4 commits into
mainfrom
engine-upgrade-2026-10-22
Oct 23, 2026
Merged

MaxGhenis merged 4 commits into
mainfrom
engine-upgrade-2026-10-22

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

What this does

It moves PolicyBench's frozen US references from policyengine-us 2.41.0 to 2.60.0, the newest PyPI release when the sweep began (01:45:50 UTC on 2026-10-23). It follows the method and records of reference_audit/2026-10-12-engine-upgrade/ (Max, 2026-09-28: "we should be using the latest pe for this always!").

The build is staged for the next board release in reference_audit/2026-10-22-engine-upgrade/reference-build/. That directory holds the regenerated reference_outputs.csv, the exclusion record, and the sidecar with its fourth engine_upgrade revision. The published board (release 20261014) and its snapshot stay on 2.41.0 until the next board release installs the build, re-scores and re-freezes. The README gives the install steps.

What changes (1,984 outputs)

Output 2.41.0 2.60.0 Why
scenario_031 (CA) SNAP $0 $288 policyengine-us#10036 removes the net income test from California's MCE (CDSS ACL 12-62, 13-32, 14-56, 15-42). This one-person elderly household is categorically eligible, and its $0 calculated benefit becomes the $24/month minimum (7 U.S.C. 2017(a)). A blind Opus reference-adversary judge also ruled the $0 reference_wrong.
scenario_028 (PA) free school meals 0 1 policyengine-us#10238 models Pennsylvania's universal free breakfast (Act 33 of 2023, 24 P.S. § 13-1337.1(c.2)). Lunch stays paid.
scenario_117 (AR) free school meals 0 1 #10238, Arkansas Act 123 of 2025 (A.C.A. § 6-18-722(f)), from SY 2025-26.
scenario_123 (PA) free school meals 0 1 #10238, Pennsylvania Act 33 of 2023.

The output definition is "whether PolicyEngine returns positive annual free school meal support". Both breakfast statutes are standing law enacted before the 2026-07-03 freeze. Neither is unconditional: Pennsylvania reimburses participating schools to the extent funds are available, and Arkansas gives the breakfast on request. #10238 assumes a student at a covered school and models neither condition, and the bases and narratives say so.

The record still has 49 exclusions, so each model is still scored on 1,935 outputs.

Exclusions: none regenerated, 16 rechecked

Departure from the brief: the four r24 outputs stay excluded.

scenario_002, 107 and 121 federal income tax and scenario_121 state income tax land exactly on their records' alternative values: $1,890.30, $211.23, $875.34 and $212.23 (#10185, released in 2.50.0).

Those records are not engine defects. They are reference_depends_on_unlisted_input: the prompt lists only "disability benefits" and does not say who paid for the coverage, and that decides taxability (26 U.S.C. 105(a); 104(a)(3)). reference_audit/2026-09-22/root_causes.json classes r24 as unlisted_input. #10185 reaches the employer-paid reading through a new input, tax_exempt_disability_benefits, that defaults to zero.

The builder regenerates only engine-defect records. The 2026-10-12 upgrade kept scenario_080, 052 and 081 excluded on the same ground: an engine release does not settle facts the prompt leaves unstated. So the four keep their decided $0 and are rechecked.

Scoring them on the engine's default is a methodology call, queued for Max.

The other twelve rechecks:

  • scenario_118 SNAP moves from $2,868 to $2,400. #10158 models New York's SSI state supplement ($87 a month), which counts as SNAP income. The record's unlisted input (whether the mortgage is on the home) still decides it.
  • Eleven others keep 2.41.0's values. They are rechecked because their decided values differ from the engine's, as in every upgrade.

Engine releases

Each named PR (#10036, #10158, #10185, #10238) is an ancestor of 2.60.0's release commit, 2bc4ccc970.

A first sweep on 2.59.0 (19:49 UTC on 2026-10-22) was cut off by a host restart. When the session resumed, 2.60.0 had been published and moved the three school-meal flags (#10238 is not in 2.59.0). So the sweep began again on 2.60.0; verification/superseded_2_59_0.json keeps the record.

Publication check: 2.60.0 was still PyPI's newest release at 02:11 UTC (verification/sweep_timing.json). The next release reruns the check before it publishes.

Invariants (stated, and tested in tests/test_build_references_upgrade_1022.py)

  • No silent move. Every output that moves beyond the exact-match tolerance from its base reference is named by exactly one action: approved, regenerated, new exclusion or rechecked. Otherwise the builder refuses. A Hypothesis test checks that the draft places every moved output exactly once.
  • Rule 5. An excluded output keeps its decided value. Only an engine-defect record that lands within $1 of its audited target can be regenerated, and an unlisted-input record never is.
  • Byte preservation. Every unchanged CSV row and every earlier sidecar revision keeps its bytes.
  • Order independence. The records do not depend on the order of the actions' lists.
  • Differential reproduction. Re-planning the committed computed.csv with final_actions.json and writing it with the committed provenance reproduces the committed CSV, sidecar, exclusion record and traces byte for byte. No engine is needed.
  • Pinned provenance. The sidecar pins the builder, harness and actions by sha256. The build's computed.csv is byte-identical to the sweep's first output and gives every scored reference.
  • Reviewed draft. final_actions.json is the drafter's output with figures added. It has the same placements, values and causes.
  • Narratives. They are hand-corrected from the traces (no LLM writer call), and each figure is checked against the trace.

Tests

  • new suites: 137 passed (tests/test_build_references_upgrade_1022.py, tests/test_sweep_timing_1022.py)
  • full suite (pytest -m "not slow") on the locked 2.41.0 environment: 5,452 passed, 58 skipped, 0 failed
  • CI
  • independent review r1 (GPT-6.1 Sol, at 830c7ae): APPROVE. It agrees the four r24 cells stay excluded. Its one minor finding (overstated breakfast statutes) and one nit (031's January–September figures) are fixed in 87f40d5.
  • r2 delta review of the fixes (GPT-6.1 Sol, at 87f40d5): APPROVE. Both findings are resolved, and nothing new is wrong.

The release commit 2bc4ccc970, built from source, gives the wheel's 1,984 outputs byte for byte (verification/release_commit_check.json).

🤖 Generated with Claude Code

MaxGhenis and others added 2 commits October 22, 2026 22:14
…ease

The fourth engine upgrade of PolicyBench's US references, from 2.41.0 to
2.60.0, the newest PyPI release when the sweep began (01:45:50 UTC,
2026-10-23). The build is staged in reference_audit/2026-10-22-engine-upgrade/
build/; the published board (release 20261014) stays on 2.41.0 until the next
board release installs it.

- Four scored references change, each approved: scenario_031 SNAP $0 to $288
  (#10036, California MCE without the net income test; one-person minimum
  allotment) and the free school meals flag of scenario_028, 117 and 123,
  0 to 1 (#10238, Pennsylvania and Arkansas universal free breakfast).
- No exclusion is regenerated. The four r24 outputs (scenario_002, 107, 121
  federal; 121 state) land on their records' alternative values (#10185), but
  their records are unlisted-input exclusions: the prompt does not say who
  paid for the disability coverage, and the engine reaches the alternative by
  a default. They stay excluded with 12 other rechecks (scenario_118 SNAP moves
  on #10158, New York's SSI supplement).
- 49 exclusion records, 1,935 scored outputs, unchanged.
- A first sweep on 2.59.0 was cut off by a host restart; 2.60.0 differs from it
  on the three school-meal flags, so the sweep began again on 2.60.0.
- Publication check: 2.60.0 still the newest release at 02:11 UTC.

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

.gitignore excludes every build/ directory, so the first commit left the
staged reference files out. The copy is now reference-build/, the name the
release drivers give an installed build's copy. The builder's docstring names
the directory, so the build was run again on 2.60.0: every file is
byte-identical except the sidecar's builder sha256 and time, and the
publication check was rerun (2.60.0 still the newest release).

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

vercel Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

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

Project Deployment Actions Updated
policybench-site Ready Ready Preview Oct 23, 2026 2:34am UTC

Request Review

Built from source, 2bc4ccc970 gives a computed.csv byte-identical to the
wheel's on all 1,984 outputs, as the 2026-10-12 audit checked for 2.41.0
(verification/release_commit_check.json, with a test).

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

Review r1 (GPT-6.1 Sol, APPROVE at 830c7ae) findings:

1. (minor) "every public school student" overstated both statutes. The bases
   and narratives now say Pennsylvania reimburses participating schools to the
   extent funds are available and Arkansas gives the breakfast on request, and
   that #10238 assumes a student at a covered school without either condition.
2. (nit) scenario_031's figures were January-September's. The basis and the
   narrative now give $1,304.17 and $2,608.33 through September and $1,330 and
   $2,660 from October; the household is eligible and gets $24 in every month.

The build was run again on 2.60.0: the reference CSV, exclusion record,
computed.csv and traces are byte-identical; the sidecar's actions sha256 and
time change. Publication check rerun (2.60.0 still the newest release).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis
MaxGhenis marked this pull request as ready for review October 23, 2026 02:37
@MaxGhenis

Copy link
Copy Markdown
Contributor Author

Merge audit (head 87f40d5):

  • CI: green on this head (lint, test 11m40s, app, Vercel). gh pr checks exits 0; mergeable, state CLEAN.
  • Independent review: GPT-6.1 Sol (Subfleet, read-only).
    • r1 at 830c7ae: APPROVE, with one minor and one nit, both fixed in 87f40d5.
    • r2 at 87f40d5: APPROVE.
    • Verdicts: ~/reviews/policybench-engine-upgrade-2026-10-22/review/r1_out.md and r2_out.md.
  • Local:
    • full suite on the locked policyengine-us 2.41.0 environment: 5,452 passed, 58 skipped, 0 failed;
    • new suites at head: 137 passed.
  • Publication check: PyPI's newest is still 2.60.0 at 02:49 UTC. Nothing published changes: the build is staged for the next board release.
  • Open, and not a merge blocker: d1878 asks whether to score the four r24 cells at the engine's employer-paid default. This build keeps them excluded, as the method does.

@MaxGhenis
MaxGhenis merged commit 719a6e9 into main Oct 23, 2026
5 checks passed
@MaxGhenis
MaxGhenis deleted the engine-upgrade-2026-10-22 branch October 23, 2026 02:50

This branch was successfully deployed

1 active deployment
Preview — 87f40d57 Deployed Oct 23, 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