Skip to content

Leaderboard re-score: replay Fara-7B's first half - #1837

Merged
abrichr merged 3 commits into
mainfrom
claude/leaderboard-fara-replay
Nov 4, 2026
Merged

abrichr merged 3 commits into
mainfrom
claude/leaderboard-fara-replay

Conversation

@abrichr

@abrichr abrichr commented Nov 4, 2026

Copy link
Copy Markdown
Member

Follows #1795. Fara-7B's first half (57 rows, P01–A06, stack 9820) ran before the verifier's token fix, so most of its live checks failed with HTTP 401. This PR replays them on the frozen server state, the same way #1795 replays claude and openai. It runs no new agent.

Pre-registered first. PREREGISTRATION-FARA.md and SHA256SUMS-FARA were committed (22429e7) before any Fara verdict was computed. Every pinned file is unchanged in the results commit and on current main.

Column Sensitivity Specificity
live 15/15 1/2 (the miss is HTTP 401)
main, operations, operations-v2 15/15 [Wilson 0.80, 1.00] 2/2 [0.34, 1.00]
  • Fidelity gate: 4/4. These are the only Fara rows the live verifier judged.
  • Few truthful successes: Fara said DONE on 17 of 57 runs and was wrong on 15. This half therefore tells us little about specificity.
  • Unlabelled flags: 5 runs with no DONE claim are flagged because Fara wrote after the check. They count in neither metric.

Changes

  • Inputs: inputs/frozen-9820.jsonl.gz and inputs/rows-fara.jsonl.gz, from Write leaderboard: computer-use agents in Medplum's web app, pre-registered #1737 at 01854c3; each row keeps its source path and sha256. Fara's times are merged into inputs/times.json.
  • rescore.py: a fara: 9820 stack, plus CHECKED_BEFORE, which skips Fara rows checked at or after 2026-11-04 11:55 UTC (those have live verdicts). The default agents are still claude and openai.
  • score_rescore.py: --agent; the default is still the pre-registered pair.
  • Results: results/*-fara.json, plus a section in RESULTS.md and the inventory entries. The claude and openai results are not re-run.

Public-data check: the frozen rows and dumps hold only synthetic bench-project records, example.org and .invalid emails, and no tokens or secrets.

@abrichr

abrichr commented Nov 4, 2026

Copy link
Copy Markdown
Member Author

Independent adversarial review: APPROVE, no blockers

A separate agent with no part in writing this change reviewed head e59fbd0 read-only.

Claims checked

  • The pre-registration commit is the parent of the results commit, and the results commit changes no file pinned in SHA256SUMS-FARA; shasum -c passes.
  • All 57 rows match their source blobs at 01854c3: sha256 and every field. None are missing or extra. frozen-9820.jsonl.gz is byte-identical to that commit's copy.
  • The 69 fara keys equal file-times.json, and all 408 existing keys are unchanged.
  • The default agents and scoring are unchanged for claude and openai. The UTC cutoff is correct and skips none of the 57 rows.
  • RESULTS.md, README.md and the PR body match score-fara.json. A re-run of --contracts operations reproduces all 57 rows.
  • No secrets, real-looking PHI or private names are in the data.

Minor items and responses

  • Live 15/15 comes from 401 failures, not detection. Fixed in 319b4d8: the table and text now say so.
  • Commit dates one second apart. The rebase onto main after Verifier specificity: operation semantics as contract data, and the leaderboard re-scored #1795's squash merge rewrote the committer dates. The author dates (67 s apart) and the original pre-rebase commits (40f03d9, then 2d3c50c) keep the order.
  • Cutoff time. The 11:55 UTC start of the second half comes from the leaderboard harness's operator. The cutoff only matters for rows after it, and none of the 57 rows is later than 11:44:52 UTC.
  • "Median steps 52" is unchecked. It is the steps field of score_rescore.py's outcome vector, printed in its output.

@abrichr
abrichr merged commit 6904562 into main Nov 4, 2026
46 checks passed
@abrichr
abrichr deleted the claude/leaderboard-fara-replay branch November 4, 2026 12:14
abrichr added a commit that referenced this pull request Nov 9, 2026
…stered (#1737)

* Write leaderboard harness: computer-use agents in the Medplum app, scored by the end-state oracle

* Leaderboard: own-agent hook, pinned proxy port, README, protocol counts

* Leaderboard protocol v1: limits from practice runs, per-agent shares, Gemini and Nova Act not run

* Leaderboard: wait for host load under 35 before each run, record it; deviations log

* Leaderboard: renew the Medplum session before each run; rerun signed-out runs (deviation 3)

* Leaderboard deviations: time of deviation 3

* Leaderboard results: openai, all 111 scored runs, evidence and excluded signed-out runs

* Leaderboard results: claude, all 111 scored runs, evidence and excluded signed-out runs

* Leaderboard: results report for claude and openai; scored table, spend ledger, fara rows so far

* CAPABILITIES: write leaderboard row; refresh llms-full

* CAPABILITIES: leaderboard status

* Flow packaging: register the leaderboard results folder as published evidence and keep it out of the wheel and sdist

* Leaderboard: renew the verifier's token; replay the shadow column (deviation 4)

The verifier's read token expired an hour into each process, so its live
verdicts on 92 claude and 71 openai rows were unreadable. The end-state
check uses a renewed admin token, so the three metrics are unchanged. The
shadow column now uses verdicts replayed from Medplum's stored history
(verifier-specificity, #1795): flagged 25/28 and 30/33, false flags 26/72
and 11/68.

* Leaderboard: fara rows so far and their file times, for the shadow replay

* Leaderboard: fara first half (P01-A06) done; its Medplum history and file times for the shadow replay

* Leaderboard: deviation 2 notes fara's second process ran on 9820 (disk gate)

* Leaderboard: fara first-half shadow verdicts replayed (#1837)

* Leaderboard: Fara-7B scored (110 runs); report, CAPABILITIES

Said done with the record wrong in 18.2% (CI 10.0-27.0), 20 of 22 claims
wrong; 84 runs reached the 40-minute limit at a median 46 s per local
model call. r2 A08 excluded (harness failed it three times while the
database recovered). Five runs that overlapped a database restart are
kept and listed in results/fara/db-restarts.json.

* fix(leaderboard): count each bootstrap draw as its own case; block off-app navigation

score.py pooled the runs of a case drawn twice under one id, so pass^3
intervals counted a 2-of-3 case drawn twice as 4 of 6. Each draw now gets
its own id. Regenerated LEADERBOARD.json/md: point estimates unchanged,
pass^3 intervals claude 45.8-69.6 -> 40.5-73.0, openai 50.0-73.9 ->
46.0-78.4, fara 0.0-1.1 -> 0.0-0.0.

browser.py now aborts any navigation to another origin (click, key,
script, pop-up, goto) inside the browser and logs it; Screen.goto refuses
other origins. Deviations 5 and 6 record both, with what the retained
evidence shows. Fix ruff errors in file_times.py. Add
tests/test_write_leaderboard.py.

* fix: disable argparse abbreviations in the Medplum leaderboard runner
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