Skip to content

Re-judge five audit verdicts the judge-isolation audit could not clear (release dashboard-data-20261013b) - #218

Merged
MaxGhenis merged 15 commits into
mainfrom
judge-isolation-20260930b
Oct 14, 2026
Merged

MaxGhenis merged 15 commits into
mainfrom
judge-isolation-20260930b

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Release dashboard-data-20261013b: re-judges five audit verdicts that a 2026-09-30 audit of the judges' transcripts could not clear, and changes nothing else. It sits on release dashboard-data-20261013 (#217, bc305793). The Gemini 4 Argon release will take this one as its base.

Why

The audit bound each of the 1,342 published verdicts across two audit trees to the transcript that produced it (docs/judge_isolation_2026-09-30/REPORT.md). An independent re-implementation agreed on every row. Five verdicts cannot be presented as independent of the decisions published beside them, and every release since has carried them over unchanged:

Case Finding
086 federal_refundable_credits Its 2026-09-05 judge launched a Workflow whose agents searched the repo and read this case's earlier published case note and row annotations.
045 snap Its 2026-09-24 judge ran in a git checkout. The checkout's git status, injected into the judge's context, named this case's r33 exclusion and fix.
014 federal_refundable_credits, 015 federal_refundable_credits, 015 head_medicaid_eligible No transcript holds the published verdict's text.

No decision, exclusion or wording amendment rests on any of the five.

What the release does

  • Re-judging: each of the five was re-judged by Claude Opus 5.5 on judge template v2 through scripts/run_audit_claude.sh. Each judge ran in an empty directory outside git, with no tools, an allowlisted environment and the pb-judge token login. Every transcript passes the release driver's checks, plus a session-id binding. All five were judged in one round.
  • Results: none flags the reference, every case note stays llm_error, every model row keeps its failure source (kimi-k2.6's two rows stay parse_contract_failure, the rest llm_error), and three model rows change subtype. So there is no new reference question to rule on.
  • Wording: two independent reviewers (Claude Opus 5.5 and GPT-6.1 Sol) read the 26 new texts against each case's prompt and policyengine-us 2.41.0, and the round-1 review of this PR found three more scenario_015 Medicaid texts and a misstated EITC end point in scenario_014. Fourteen corrections are applied as listed wording amendments (docs/release_20261013b/wording_amendments.json), each checked again against the engine. For scenario_015's Medicaid pathway that check was a calculation of the household on policyengine-us 2.41.0: the head is not SSI-disabled because $3,750 a month of earnings exceeds the $1,690 substantial gainful activity limit, the pathway's income test passes, and the asset test fails ($584,850 against $2,000). The result is the same with the unlisted meets_ssi_disability_criteria input unset, False or True, so the reference does not rest on it. The committed amendments record is release 20261013's with these fourteen appended.
  • Payload 0a4b754a4ce3b249e0608efac62e52646e4c6f33c6a28c1a496c4c9fda49b507 (130,982,477 bytes):
    • every section but scenarioPredictions is byte-identical to release 20261013's, including every model's modelStats, the program stats, the heatmap and the exclusions;
    • inside it, 45 annotation fields change, all in the five cases.
    • The annotation CSVs are release 20261013's committed bytes with only the five cases' records replaced: 21 model rows and five case notes.
  • Judge tally: Claude Opus 5 goes from 93 to 92, GPT-5.6 Sol from 269 to 266, and Claude Opus 5.5 from 315 to 319. The paper and the benchmark card say so; the paper is re-rendered and re-pinned.
  • Seed: docs/release_20261013b/seed_digest.csv records the new judged tree, all 677 cases. The tree is archived at ~/reviews/policybench-judge-isolation/stage-audit-20261013b for the next release.

The driver is scripts/release_20261013b.py (prepare, judge, collect, export, freeze), modelled on scripts/release_20261006.py. Design, gates and commands are in docs/release_20261013b/design.md.

Invariants (enforced by the driver, tested in tests/test_release_20261013b.py)

  • Every verdict outside the five keeps its bytes; the seed must be release 20261013's tree, case for case.
  • No model, answer, reference, exclusion, adjudication or serving row changes. modelStats, the program stats and the heatmap are byte-identical.
  • The payload may differ only at scenarioPredictions/<one of the five>/<model>/{annotation, failureSource, failureSubtype, caseAnnotation, caseFailureSources, caseFailureSubtypes}. Two exports must give the same bytes.
  • Annotation records outside the five keep their bytes and order. Within the five, no record is added, dropped or reordered, and only the verdict-decided columns may change. Comparison is as text, so a blank field is blank on both sides.
  • Each re-judge's transcript belongs to its sidecar's session and opens with exactly its prompt. Its one accepted structured answer is exactly the verdict, and it shows no tool call, account data, git status or skill.
  • A re-judge that flags the reference, or leaves a scored row outside llm_error, parse_contract_failure and budget_exhausted_at_ceiling, stops the release for Max (reference_questions).
  • The freeze starts only from release 20261013's working tree (verify_base_working_tree), and after it writes, the pointer is the one it wrote and the manifest moves only in the release's paths.
  • The receipt binds every input and every verdict set aside; the freeze refuses anything changed since export.

Tests:

  • Hypothesis properties on the payload diff.
  • Splice round trips with blank fields, quoted commas, multi-line fields and Unicode line separators.
  • Every sidecar and transcript rejection path.
  • The retry and stop paths of the judge loop.
  • prepare: a faithful stage, and each refusal (seed, audited verdict, base pointer, grounding, decision/exclusion/amendment overlap, v1 header, and a render that changes more than the header).
  • collect's reference-question stop for every non-model-error failure source in the schema.
  • The freeze's working-tree checks and the receipt's changed-file, outside-path and set-aside branches.
  • Checks on the committed frozen state against release 20261013.

Status

This release adds no site note: it changes no model, reference, exclusion or score. The paper and the benchmark card record the re-judge.

🤖 Generated with Claude Code

MaxGhenis and others added 4 commits October 13, 2026 13:07
Binds each of the 1,342 verdicts in release 20260929's audit tree and the
previous release's tree to the transcript that produced it, and lists every
tool call. One published judge used tools (086 federal refundable credits),
one saw its case's exclusion history through git status (045 snap), and three
Codex verdicts have no transcript that holds their text. An independent
re-implementation agrees on every row.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Re-judges exactly the five carried-over verdicts the judge-isolation audit
found, with the isolated runner, and refuses any other change: carried-over
verdicts, the adjudication record, references, predictions and serving
evidence stay release 20260930's, every modelStats entry stays byte-identical,
and the payload may differ only in the five cases' annotation fields.

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

- triage splices the five cases' records into release 20260930's committed
  CSV bytes instead of regenerating the files, so wording amendments and
  blank fields keep their bytes; records compare as text, field by field,
  and only the columns a verdict decides may change
- export and the freeze re-check every annotation file against the base and
  against annotation-changes.json
- the freeze checks the working tree is release 20260930's before writing,
  restores the wording-amendment record the snapshot freezer drops, and
  allows manifest changes only in this release's scope
- each re-judge's transcript must belong to its session, open with its
  prompt, end with its verdict and come from Opus 5.5; the sidecar must name
  Opus 5.5 as requested and record a judging time
- a re-judge that fails is set aside and judged again, up to three rounds;
  everything set aside is pinned
- prepare validates the stage path and refuses base-stage audit files the
  receipt does not bind

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

vercel Bot commented Oct 13, 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 14, 2026 5:54am UTC

Request Review

MaxGhenis and others added 5 commits October 13, 2026 13:24
One script, modelled on release_20261006.py: prepare, judge, collect, export
and freeze. The bundle comes from git at the base commit and the audit tree
from release 20261013's archived seed, checked against the committed seed
digest and judge provenance. The five cases render on judge template v2
through prepare_audit; the transcript checks are finish_musewonder's, plus a
session-id binding.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis and others added 2 commits October 13, 2026 14:25
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Payload c06177e65913fa7886c239f776483982a140cc126e18e734b443dc890b74ea32
(130,982,273 bytes). Every payload section but scenarioPredictions is release
20261013's; 45 annotation fields change in five cases (21 model annotations,
five case notes, three llm_error subtypes), with eleven listed wording
amendments applied. The judge tally moves by four: Claude Opus 5 93 to 92,
GPT-5.6 Sol 269 to 266, Claude Opus 5.5 315 to 319. The paper is re-rendered
for those counts and re-pinned.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis MaxGhenis changed the title Re-judge five carried-over verdicts the judge-isolation audit could not clear Re-judge five audit verdicts the judge-isolation audit could not clear (release dashboard-data-20261013b) Oct 13, 2026
MaxGhenis added a commit that referenced this pull request Oct 13, 2026
…dd the app labels

- docs/argon/input_pins.json: the sha256 of each finished run's
  predictions.csv and run_state.json. Gemini 4 Argon's is the second board
  run, on the 32,768-token ceiling (card e4b4d05); Muse Spark 1.3's is its
  only board run (resumed at 95/100 after an app restart, same treatment).
- tests/test_freeze_argon.py: the synthetic stage stages both additions'
  runs, fingerprints, board rows and serving evidence; counts follow release
  20261013b (48 incumbents, 49 exclusions, 1,935 scored, 50 models).
- app/src/modelMeta.ts: labels, order and provider for both; Gemini 4 Argon
  becomes Google's frontier pick (Gemini 3.1 Pro Preview stays the fallback);
  Muse Wonder stays Meta's.
- policybench/paper_results.py: display names for both.

Still WIP: base pins wait on PR #218; staging, judging, export and freeze
not started.

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

The base is release dashboard-data-20261013b (PR #218: release 20261013
with five audit verdicts re-judged; its references, exclusions,
adjudications, predictions and serving config are 20261013's byte for
byte). This merges #218's frozen head (6a334d0) and pins it:

- BASE_TAG dashboard-data-20261013b; BASE_SHA256 c06177e6…, the payload
  at that head; BASE_COMMIT 6a334d0, to become #218's squash merge.
- The seed digest is docs/release_20261013b/seed_digest.csv, copied
  (0f599257…): release 20261013's 677 judged cases with the five
  re-judged written over them.

The stage prepared on these pins: 482 seed prompts unchanged, 195 changed
and 1 new, so 196 cases go to the Opus 5.5 judge. None of 20261013b's five
re-judged cases is among them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PR #210 allows only the audit tree check to call template_version_of.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis and others added 2 commits October 13, 2026 18:42
…t and pointer checks

Three scenario_015 Medicaid texts said or implied that the head fails
the disability pathway's income test. On policyengine-us 2.41.0 the
pathway's income test passes; the head is not SSI-disabled because
earnings exceed the substantial gainful activity limit, and assets fail
the $2,000 cap, whatever the unlisted meets_ssi_disability_criteria input
is. Amendments 1, 3 and 5 are rewritten and claude-sonnet-5's annotation
is amended. Two new amendments put the joint childless EITC end at
$26,820 in scenario_014.

The collect and freeze gates move into reference_questions and
verify_base_working_tree, with tests for them and for prepare's
refusals. The freeze re-checks the pointer after freeze_snapshot, and the
receipt must bind every verdict set aside.

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

Payload 0a4b754a4ce3b249e0608efac62e52646e4c6f33c6a28c1a496c4c9fda49b507
(130,982,477 bytes). Same five verdicts, classes and flags; only the
amended text in scenario_014 and scenario_015 differs from the previous
freeze.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 13, 2026
#218's round-1 review reworded the scenario_014 and scenario_015 records
(856 + 14 wording amendments). Its payload is now 0a4b754a…b507
(130,982,477 bytes), at head 6c44858. The seed digest and the judge
provenance are unchanged; references, exclusions, adjudications and
predictions stay release 20261013's.

Tests deferred: the host's heavy jobs are paused on battery. The stage is
re-prepared on the final base once judging finishes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Release 20261013b re-judges five audit verdicts on 20261013's numbers
and adds no note, so the newest note's release is 20261013 while the
live pointer names 20261013b. tests/test_notes.py already allows either;
this brings the app test in line. Test-only: no payload, annotation or
pointer change.

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

Copy link
Copy Markdown
Contributor Author

Merge record for release dashboard-data-20261013b.

  • Max's ruling, d1510 (2026-10-14): publish once the round-2 GPT-6.1 Sol review agrees and CI is green.
  • Round 1: Claude Opus 5.5 requested changes. All of them were addressed in 0fcaeb1c and 80c68a85, and the release was re-frozen in 6c44858f.
  • Round 2: GPT-6.1 Sol approved at 6c44858f. Its two low, nonblocking test-fidelity findings are filed as a follow-up.
  • Delta 6c44858f..044418fa: test-only. app/tests/notes.test.ts now pins the newest note to release 20261013, because this release adds no note. Every Codex lane was on hold, so Claude Opus 5.5 checked it in-session and agreed. No payload, annotation, pointer or manifest change.
  • Release:
    • dashboard-data-20261013b was created with dashboard-data.json (0a4b754a4ce3b249e0608efac62e52646e4c6f33c6a28c1a496c4c9fda49b507, 130,982,477 bytes) and predictions.csv.gz (bb37b988…6746, 43,861,740 bytes, identical to 20261013's).
    • The downloaded sha256 matched the pointer.
    • The Vercel preview had failed before the upload; it was redeployed and passes.
  • CI at 044418fa: test, lint, app, paper and Vercel all pass, and the PR is MERGEABLE.
  • Local: 356 passed, 3 skipped (release, notes, paper, judge-template and runner tests).
  • Reference questions: none. No re-judge flags the reference, and no failure source changes.

Reviews and evidence are in ~/reviews/policybench-judge-isolation/pr-review/.

🤖 Generated with Claude Code

@MaxGhenis
MaxGhenis merged commit 2cb77a1 into main Oct 14, 2026
6 checks passed
@MaxGhenis
MaxGhenis deleted the judge-isolation-20260930b branch October 14, 2026 06:13
MaxGhenis added a commit that referenced this pull request Oct 14, 2026
Release 20261013b merged as 2cb77a1 (PR #218, 2026-10-14 06:10 UTC).
Its tree is #218's frozen head 6c44858 merged with the earlier main plus
one test-only commit (app/tests/notes.test.ts); the annotations,
snapshot, release-20261013b docs and reference audit are byte-identical
to 6c44858's, and the payload stays 0a4b754a... (130,982,477 bytes). So
the stage, prepared on 6c44858, keeps every input the driver reads from
the base. BASE_COMMIT and the test pins name 2cb77a1; the verdict
evidence names it; the freeze re-ran at the new pin and wrote the same
files.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 14, 2026
…ard-data-20261014, 50 models) (#221)

Release dashboard-data-20261014 adds Google's Gemini 4 Argon and Meta's Muse Spark 1.3, taking the board to 50 models. It builds on release 20261013b (#218).

- Gemini 4 Argon: 88.7% within $1 (#12 of 50), the best Gemini row. It uses the forced answer tool. A test fixed in advance found no significant reduction in reasoning under the forced tool (80 or 85 households forced, 82 auto), so there is no sensitivity row.
- Muse Spark 1.3: 87.2% (#18), #6 on the bounded score. It answers as JSON, because Meta rejects a forced tool.
- References, exclusions and incumbent scores are unchanged: policyengine-us 2.42.4, PyPI's newest at 04:03 UTC on 2026-10-14, gives 2.41.0's value for all 1,984 outputs. 49 outputs are excluded, leaving 1,935 scored per model.
- 196 re-opened cases were judged by Claude Opus 5.5 on judge template v2. Two developer triage decisions (the 2026-10-14 wave) keep their outputs scored: scenario_009's TCJA-sunset rows are model errors, and the scenario_064 Wisconsin reference is affirmed under Wis. Stat. 71.05(10)(c)2.
- The driver accepts triage decisions without an engine upgrade. The record gates refuse any decision the spec does not list.
- The manifest's flag tally counts a flag from any recorded verdict.
- The benchmark card discloses cache replay.

Independent review: GPT-6.1 Sol round 1 (REQUEST_CHANGES, fixed in eb8af75), Claude Opus 5.5 round 2 (APPROVE at c479e59), GPT-6.1 Sol round 3 on the delta (APPROVE at fc2de55).

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

This branch was successfully deployed

1 active deployment
Preview — 044418fa Deployed Oct 14, 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