Skip to content

Ready the tool pilot's v2-pilot run: prompt fixes, a no-tools arm, web timeout - #239

Merged
MaxGhenis merged 2 commits into
mainfrom
tool-pilot-v2-ready
Oct 22, 2026
Merged

MaxGhenis merged 2 commits into
mainfrom
tool-pilot-v2-ready

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

This readies the 100-household run (Max, 2026-10-21, d1800): GPT-6 Sol, Claude Opus 5.5 and Gemini 4 Argon, each in four arms (no tools, PE tool, web, web+PE), on the v2-pilot wording, with the web arms told not to search for PolicyBench. It is internal pilot tooling only: no board condition, published number or release changes.

v2-pilot wording fixes

Each fix comes from the pilot's misses and is checked against policyengine-us 2.41.0 or the reference rule.

The law date. The prompt now says: "Apply the law and program parameters published before July 3, 2026. Where a 2026 amount had not been published by then, use the latest amount published before that date (for example, a state's 2025 inflation-adjusted amounts, or the IRS's 2025 optional sales tax tables). For SNAP, keep the fiscal year 2026 allotments, deductions, utility allowances and asset limits through December 2026; the income limits use the 2026 HHS poverty guidelines from October 2026."

  • This is the reference sidecar's rule, with the holds each fix module describes.
  • The web arms had applied SNAP's FY2027 values.

Relabeled facts.

  • "employer sponsored insurance premiums" now reads "employer-paid health insurance premiums (paid by the employer, not by the household)", as the engine documents the variable. It appears 49 times, in 42 households. No scored reference reads it.
  • "spm unit energy subsidy" now reads "home energy assistance received". It appears in 5 households, and no scored reference reads it.

Idaho. The state income tax definition now names Idaho's $10 permanent building fund tax, the one non-income-tax entry in the engine's state tax list. All three Idaho households owe it.

Harness

The no-tools arm. --arm none sends the board's own first request: the forced answer function, or Opus's JSON reply with no tools and no cache mark. A differential test checks the whole request, key for key, against eval_no_tools' builders for all 100 households and three contracts. Repairs follow the pilot's loop.

A live check on the v1 wording reproduced the frozen board rows on 10 households:

Model Live no-tools Frozen board row Exact outputs (live / board)
Gemini 4 Argon 84.8% 84.4% 216 / 216
GPT-6 Sol 97.1% 96.7% 225 / 224
Claude Opus 5.5 94.1% 94.1% 224 / 224

Web arms.

  • They use a 900 s request timeout, and a timed-out web request isn't retried; a resume pass reruns the household.
  • Argon's web-only arm never finished scenario_005 within the board's 300 s.

Engine workers. Arms without the calculator start none.

Review and tests

  • Tests: 147 passed. Eight planted bugs were each caught.
  • Review r1 (Opus 5.5, because the Codex lanes were closed): REQUEST_CHANGES. The law-date fallback and the SNAP wording were the blocking points, and both are fixed in 274527b. Review r2 is pending.

🤖 Generated with Claude Code

…b timeout

Max (2026-10-21, d1800): run all three models in all four arms on 100
households, on the v2-pilot wording.

v2-pilot wording, from the pilot's misses, each checked against
policyengine-us 2.41.0 or the reference rule:
- Law date: "Apply the law and program parameters published before July 3,
  2026; for SNAP, use the fiscal year 2026 values for all of 2026". That is
  the reference rule; the web arms had applied SNAP's FY2027 values.
- "employer sponsored insurance premiums" now reads "employer-paid health
  insurance premiums (paid by the employer, not by the household)", as the
  engine documents the variable. Web arms had deducted them.
- "spm unit energy subsidy" now reads "home energy assistance received".
- The state income tax definition names Idaho's $10 permanent building fund
  tax, the one extra in the engine's state tax list.

Run options:
- --arm none sends the board's own no-tools request: the forced answer
  function, or Opus's JSON reply with no tools key. A differential test
  checks it against eval_no_tools' builders for all three contracts.
- Web arms use a 900 s request timeout. Argon's web-only arm never finished
  scenario_005 within the board's 300 s.
- Arms without the calculator start no engine workers.

Tests: 144 passed. Five planted bugs were each caught.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@vercel

vercel Bot commented Oct 22, 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 22, 2026 11:17am UTC

Request Review

- Law date: the sentence now gives the reference's fallback. Where no 2026
  amount was published before July 3, 2026, the latest earlier one applies
  (California, Idaho, Maryland, Michigan and Minnesota amounts, and the IRS
  2025 sales tax tables, per each fix module's rule). It also states SNAP's
  hold precisely: FY2026 allotments, deductions, utility allowances and asset
  limits through December, with income limits on the 2026 poverty guidelines
  from October ("Not held: the poverty guideline").
- Web arms don't retry a timed-out request. Three 900 s attempts would hold
  a worker for 45 minutes; the household ends as provider_error, which a
  resume reruns.
- The no-tools arm marks no prompt-cache breakpoint, as the board's request
  marks none, and records its first turn as forced. The differential test now
  compares the whole first request with the board's, key for key, across
  all 100 households and three contracts.
- The energy relabel's comment now states the engine's mechanism: it deems
  the utility allowance from the state flag and never reads the amount.
- The manifest records the timeout actually sent. Error records carry the
  arm and prompt keys that resume and score check.

Tests: 147 passed. Three more planted bugs were each caught.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@MaxGhenis
MaxGhenis marked this pull request as ready for review October 22, 2026 11:20
@MaxGhenis

Copy link
Copy Markdown
Contributor Author

Merging at 274527b.

  • CI: app, lint and test all pass on this head (run 39769251294).

  • Reviews (Opus 5.5, because the Codex lanes were closed):

    • r1 REQUEST_CHANGES: the law-date fallback and the SNAP split. Fixed in 274527b.
    • r2 AGREE at this head.

    Both are in ~/reviews/policybench-tool-pilot-2026-10/web-arms/review/pr239/.

  • Left as they are (r2 nits, cosmetic):

    • A comment cites the fix modules for the reference rule; the sidecar is the fuller source.
    • The manifest key web_timeouts_retried would read better as timeouts_retried.
    • The web-arm manifest records the constant 900 s, which equals the timeout sent for all three models.
  • The 100-household run (d1800) started at 11:20Z from this exact commit.

This is internal pilot tooling only. No board condition, published number or release changes.

🤖 Generated with Claude Code

@MaxGhenis
MaxGhenis merged commit 12cfb98 into main Oct 22, 2026
5 checks passed
@MaxGhenis
MaxGhenis deleted the tool-pilot-v2-ready branch October 22, 2026 11:37

This branch was successfully deployed

1 active deployment
Preview — 274527b9 Deployed Oct 22, 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