Skip to content

Newest Claude ids on every split: Opus 5.5 and Fable 5.1 - #261

Merged
jonfroehlich merged 28 commits into
mainfrom
claude-newest-ids
Oct 20, 2026
Merged

jonfroehlich merged 28 commits into
mainfrom
claude-newest-ids

Conversation

@jonfroehlich

@jonfroehlich jonfroehlich commented Oct 20, 2026 •

Copy link
Copy Markdown
Member

Runs claude-opus-5-5 (new) and claude-fable-5-1 (previously annapolis only) zero-shot on all 14 splits, juneau included. Both run at effort low on the first-party API. Everything was paid from the three subscriptions' monthly API credits, and each ledger row records the org that paid (api_account). The write-up is in docs/claude_newest_ids.md.

Results (paired 95% CIs are a pano bootstrap, RampNet − model)

  • Opus 5.5 is now the strongest challenger.
    • It scores 0.712 pooled F1 over the nine US cities, and RampNet leads it by 0.081. The previous best challenger was YOLO11l, 0.193 behind.
    • Fable 5.1 pools 0.607.
  • RampNet tops 11 of 14 splits.
    • Opus 5.5 beats it, with intervals that exclude zero, on laurens_mapillary (−0.136 [−0.216, −0.053]) and bayonne (−0.102 [−0.165, −0.040]).
    • Opus 5.5 on laurens_gsv and Fable 5.1 on bayonne score higher, but their intervals include zero, so they are reported as point estimates.
    • RampNet's lead over Opus 5.5 excludes zero on all 11 splits it tops; the narrowest is morgantown, +0.050 [+0.005, +0.097].
  • Juneau (Juneau, AK benchmark split (Mapillary, Trimble MX7): staging, GT review, scoring #254, pooled by Juneau (#254): reviewed, scored, registered as the ninth pooled US split #260): RampNet 0.803; Opus 5.5 0.727 (+0.076 [+0.028, +0.126]); Fable 5.1 0.673 (+0.131 [+0.080, +0.182]).
  • Opus 5.5 beats Fable 5.1 on all 14 splits.
    • The narrowest margin is juneau, +0.054.
    • Opus 5.5 uses about the same tokens per call and is about 2.5x cheaper per pano.
    • Loosening the match radius to 2x closes the gap by −6% to 53% (median about 40%). The rest is recall.
  • Caveat: every Claude number is a single run, with no seed variance, at effort low only.

Cost (list-price ledger estimates; the billing console is authoritative)

  • claude5: $95.35
  • claude-team: $450.99
  • claude20: $29.06 (juneau)
  • Campaign total: $575.40. The Team org's purchased credit was not touched.

Changes

  • pricing.py: claude-opus-5-5, read 2026-10-19, with a pinned test.
  • compare.py:
    • --api-account, with a fixed list of choices.
    • Exits 3 when a leg is not runnable or aborts. The ledger row is still written first.
  • A roster entry for Opus 5.5.
  • run_claude_legs_by_account.ps1, the per-org runner with a ledger budget cap.
    • It stops on a non-zero exit.
    • It is safe under PowerShell 5.1 and 7.
    • It defaults to the main checkout.
  • scripts/analysis/claude_newest_ids_261.py: paired CIs and the radius check. It reads only committed files, has a --check mode and is registered in check_all.py.
  • 28 published detection files, all --verify'd identical to the cache, plus the ledger rows.
  • Main merged in (brings Juneau (#254): reviewed, scored, registered as the ninth pooled US split #260). The scoreboard and derived artifacts are regenerated.
  • Dated "superseded" notes on every claim the new legs made false. The UChicago talk docs are kept as delivered on 2026-10-16.
  • Records Jon's 2026-10-19 decision to run Claude on manual_gold, reversing claude-opus-5 on manual_gold: recommend NOT running it alone, because the top challenger is not on that split either #144.

Review

  1. Independent review: Newest Claude ids on every split: Opus 5.5 and Fable 5.1 #261 (review)
  2. Fixes: d05bf4e, 08f7526, e4d48f9, 08d4ac6.
  3. Final re-review: ready to merge. Its text-only follow-ups are in ece4fc4.
  4. Test results: pytest -q 3,353 passed, 6 skipped. check_all.py --ci 22 passed.

🤖 Generated with Claude Code — Opus 5.5, claude-opus-5-5

jonfroehlich and others added 21 commits October 19, 2026 12:04
Prepares the newest-Claude-ids legs (Opus 5.5 and Fable 5.1 on every split,
manual_gold included) paid from the three subscriptions' monthly API credits.

- pricing.py: claude-opus-5-5 at $4/$20, cache read $0.20 (0.05x input),
  read off the platform pricing page 2026-10-19.
- compare.py: --api-account <label> writes api_account on each usage row, so
  each first-party org's Console bill can be reconciled against the ledger;
  serving_path alone cannot tell the three orgs apart. Label only, never the key.
- scoreboard.py: display name for the Opus 5.5 leg. The roster entry waits for
  published detections, which the roster tests require.

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

Committed mid-campaign so nothing finished lives only on one disk.

- analysis_out/usage_log.jsonl: the 18 rows for this campaign so far
  (2026-10-19), each tagged with the org that paid via api_account.
- benchmark/model_detections/: Fable 5.1 on the 10 city splits and Opus 5.5
  on the 7 finished ones, exported from the cache and --verify'd identical
  (18 of 18 pairs, the existing Fable annapolis file included).
- rampnet/roster.py: claude-opus-5-5 (effort low, anthropic), standing=False.
- scripts/model_comparison/run_claude_legs_by_account.ps1: the per-org runner
  with the ledger budget cap, as committed (the runs used a scratch copy with
  the main-checkout path hardcoded; same logic).
- docs/claude_newest_ids.md: results so far, cost per org, and the radius
  analysis (about half of Opus 5.5's lead is point placement, the rest recall).

Known red: 10 tests pin generated artifacts (scoreboard JSON/doc, roster table
in the docs, published-file count) that are regenerated once the full set is
in. Still running: Opus 5.5 on 4 city splits, Fable 5.1 on manual_gold;
Opus 5.5 on manual_gold not started.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fable 5.1 manual_gold: P 0.681 R 0.600 F1 0.638 over 1,000 panos, $167.92,
5.0 h, Team org. Opus 5.5 morgantown: F1 0.785 vs Fable 5.1's 0.661, the 8th
paired split Opus 5.5 leads. Both exports --verify'd identical to the cache.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
paterson 0.742, richmond 0.738, sao_paulo 0.646 (Fable 5.1: 0.666, 0.628,
0.503). Opus 5.5 now leads Fable 5.1 on every city split, median +0.110 F1.
claude5 org total $86.82 of its $100. Exports --verify'd identical (23/23).
Opus 5.5 manual_gold moved from claude20 to the Team org, whose credit
expires first; it is running.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Opus 5.5 manual_gold: P 0.719 R 0.725 F1 0.722 over 1,000 panos (Fable 5.1:
0.638), $67.99 on the Team org, whose campaign total is $429.75 of $500.
Every planned leg has now run; 24/24 published files --verify'd identical.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The log footnote printed RampNet's 'lead' as a negative number once
claude-opus-5-5 outscored RampNet on the two Laurens arms. Say which leg
is ahead and by how much instead.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Both legs now cover all 12 splits (2026-10-19). Numbers from
docs/claude_newest_ids.md and docs/model_scoreboard.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Both legs reach 8/8 pooled coverage and enter the headline table.
Claude Opus 5.5 (low) is now the best challenger with full pooled
coverage (0.710; RampNet leads by 0.082) and beats RampNet on both
Laurens arms. Hand prose updated to the board: leg counts, the headline
lead, finding 1 (best zero-shot VLM now above YOLO11l), the finding 2
ranges, the annapolis bullet, the RampNet-tops count (11 of 13), the
manual_gold reversal of #144. Tests: Fable 5.1 leaves the partial set,
new pins for the two legs' pooled numbers, mutation targets moved to
the new sentences.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
test_claude_published_legs now re-derives every P/R/F1 of the
Opus 5.5 / Fable 5.1 legs from the committed detections, checks the
write-up's results and cost tables against them and the ledger, scopes
the #156 Fable cost test to its 2026-09-05 annapolis rows, and reads
manual_gold GT from manual_labels. Fixes the Opus 5.5 manual_gold cost
in the doc ($67.98 per the ledger, was $67.99).

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

model_comparison.md: seven off-roster Claude legs, per-leg coverage, the
2026-10-19 manual_gold reversal of #144, roster table row, regenerated
city-table footnotes, and dated notes where Opus 5.5 supersedes a claim
(Laurens finding 1, the rig test, the scope-of-claim paragraph).
claude_legs_122.md: pointers where the Fable 'not taken' statements and
the strongest-on-annapolis sentence are superseded.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
cascade_cost_35 --summary lists the new legs as not-run pairs;
eval_protocol_150 reproduction.json gains their cells; laurens_paired_151
gains two rows (rebuilt with the committed curb probe, so no labeler
checkout was needed; --check passes). No earlier row changed. The paired
read: claude-opus-5-5 is flat across the rigs (-0.013 [-0.079, +0.054])
where RampNet gains +0.112. Rows hash pin moved accordingly.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
replication.md: 185 files, 26.3 MB (was 162, 25.6 MB), per-leg rows for
claude-fable-5, claude-fable-5-1 and claude-opus-5-5. README.md: a row for
claude_newest_ids.md; the scoreboard now has twenty-two legs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s; stop on failure

Review of #261: the budget cap summed $DataRoot's ledger while compare.py
wrote to its own default (the code checkout's canonical root), so with any
other -DataRoot the cap read a file that never grew and could never stop the
run. Pass --usage-log explicitly, and stop when compare.py exits non-zero.

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

Bayonne joined main after the main checkout's branch diverged, so the split
list taken from that checkout left it out (found in review). Panos copied from
the labeler bundle and verified against imagery_manifest.json (125/125).

Opus 5.5: P 0.620 R 0.618 F1 0.619, $8.54, claude5 org (now $95.35/$100).
Fable 5.1: P 0.552 R 0.528 F1 0.540, $21.24, Team org (now $450.99/$500).
Both exports --verify'd identical. Scoreboard and docs regenerate next.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
log_split_footnote's closing line said "where RampNet leads the table's best
row by X" whenever an off-table zero-shot leg beat RampNet. If a standing-table
row beat RampNet too, X would print negative. That clause now names the row
and its margin instead. Synthetic-board unit tests cover the branch that names
a zero-shot leg beating RampNet (first reached on the Laurens arms, and on
bayonne once the Claude legs ran there), the new both-beat case, and the
no-negative-number property of the line.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Both Claude legs beat RampNet on bayonne (0.619 and 0.540 against 0.517), so
RampNet tops 10 of the 13 splits, not 11: the two Laurens arms and bayonne are
the exceptions. Bayonne is held out of the pool, so no pooled number moves:
Opus 5.5 still pools at 0.710 and RampNet's lead over it is still 0.082.

The "top score" sentence names bayonne, with its GT caveat. The headline lead,
finding 1 and the Laurens/bayonne wins now say in place that the Claude
numbers are a single run, no seed variance, effort low only, first-party
serving path. Finding 4's "the only time any model has displaced the top
challenger" is marked superseded. Tests: n_splits_run 13, bayonne F1 pins, the
set of splits where any leg beats RampNet, and the old "eleven of the
thirteen" sentence as a stale-prose case.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
cascade_cost_35 --summary lists the two new bayonne pairs as not run;
eval_protocol_150's reproduction.json gains their cells (200 scoreboard cells,
2,000 fields, all equal). eval_protocol_150.md gets a dated note that the
proof has grown from the 175 cells its table reports.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude_newest_ids.md: 13 of 13 splits, said plainly that bayonne was missed
because the split list came from a checkout that predates it; bayonne rows in
the results and cost tables; per-org totals (claude5 $95.35 of $100,
claude-team $450.99 of $500, claude20 unused) and why the Team org went past
its $440 runner cap; the bayonne compare.py commands and the missing Opus 5.5
manual_gold runner command; b202470's runner fixes landed after the runs and
changed nothing, since the scratch runner's ledger was the same file.

Slips: 25 of the 26 legs ran in this campaign (Fable 5.1 annapolis is
2026-09-05); Fable per pano is $0.165-0.168 (bayonne $0.170); Opus manual_gold
also had an end_turn; "neither model is thinking more than the other" is
replaced by the ledger's thoughts_tokens (Opus 5.5 18/call, Fable 5.1
2.6/call, output ~150/call for both). Each Claude-vs-RampNet bullet carries
the single-run / effort-low / first-party caveat.

test_claude_published_legs: bayonne in SPLITS and PUBLISHED_LEGS (re-derived
from the committed detections), and the per-org totals pinned to the ledger.
replication.md: 187 files; both Claude legs at 13; gemini-3.7-flash's count.
README.md: all 13 splits, and the model_comparison hook says the headline
holds pooled but not on every split since 2026-10-19/20.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claims kept for the record get a dated "superseded 2026-10-19/20" note;
counts are corrected in place.

- model_comparison.md: coverage row for bayonne lists the two Claude legs;
  off-roster file counts (41, 39 verified); both newest legs at thirteen
  splits; caveats on the Laurens notes; budapest's 0.263 is the standing
  roster's margin (0.193 over Opus 5.5); bayonne findings 1-2 and the
  scope-of-claim paragraphs no longer say RampNet tops bayonne.
- claude_legs_122.md: "gemini-3.1-pro still tops the table" and the recall
  claims are superseded; Fable 5.1 ran twelve other splits.
- roster.py: claude-opus-5's "highest recall" and "best zero-shot on both
  Laurens arms" are dated; Opus 5.5 / Fable 5.1 notes at 13 splits with the
  RampNet comparison and the caveat.
- rampnet2_plan.md (dated draft): a pointer only.
- rampnet1_report.md, rampnet1_findings.md, bayonne_split_159.md: notes beside
  "RampNet beats every off-the-shelf model on every split" and bayonne's
  "top F1" / "only split where a chat VLM's recall is above".
- UChicago talk: notes on slides 4-5, which need Jon's decision; the figure
  script now computes "beats the best zero-shot model on N of M splits"
  instead of hardcoding "every split" (figures not regenerated), with a TODO
  on the roadmap literal.

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

- model_comparison.md: claude-opus-5 has run eleven of the twelve city splits
  (not bayonne); "twelve city tables".
- talks/uchicago_2026/README.md: the slide 8 roadmap figure also claims an
  every-bundle lead; listed with the other figures awaiting Jon's decision.
- claude_newest_ids.md: Opus 5.5 per-pano range $0.0665-0.0684; title dates.
- rampnet1_findings.md: the 0.113 Laurens lead is superseded by Opus 5.5.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@jonfroehlich jonfroehlich changed the title Newest Claude ids on every split: Opus 5.5 and Fable 5.1 (in progress) Newest Claude ids on every split: Opus 5.5 and Fable 5.1 Oct 20, 2026
@jonfroehlich
jonfroehlich marked this pull request as ready for review October 20, 2026 09:22

@jonfroehlich jonfroehlich left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Independent review: code + data/numbers/docs

Two independent reviewers: one on the code, one on the data, numbers and docs. Each finding was checked against the repo. No blockers. The data reproduces. The problems are in the launcher script and in prose that claims more than the data supports.

Independently confirmed

  • Ledger. The 26 new rows are append-only and are the only rows carrying api_account. Each row's est_cost_usd equals pricing.estimate_cost exactly.
    • Per org: claude5 $95.35 (including the $0.33 calibration); claude-team $450.99.
    • Bayonne legs: $8.53 / $21.24.
    • Thinking tokens per call: Opus 5.5 18.1, Fable 5.1 2.6.
  • Detections. All 26 files cover every pano in their split's records.jsonl (0 missing, 0 extra, 0 uncached), with consistent metadata. Bayonne panos match imagery_manifest.json (125/125).
  • Scores. An independent greedy-match scorer reproduces every P/R/F1 and every tp/fp/fn in the write-up table.
    • Pooled: Opus 5.5 0.7098, Fable 5.1 0.5985, RampNet lead 0.082.
    • RampNet tops 10 of 13 splits.
  • Regeneration. scoreboard.py regenerates scoreboard.json and all 5 figures byte-identically. The --check modes of laurens_paired_151, eval_protocol_150 and cascade_cost_35 pass.
  • Tests. Full suite on Windows: 3,297 passed, 6 skipped. No assertion was meaningfully loosened.
  • Cache keys. Unaffected: api_account goes only into report_usage, not into the detector signature, so no paid detections are orphaned.

Should-fix

  1. The launcher's "stop on failure" never fires (run_claude_legs_by_account.ps1:70, compare.py:871/:952).
    • compare.py exits 0 when a leg is "not runnable" and when it aborts after 10 consecutive failures.
    • So if credits run out mid-run, every remaining split aborts in turn and leaves a partial leg. Nothing is overspent, but the STOP contract is false.
  2. Under Windows PowerShell 5.1, $ErrorActionPreference='Stop' + 2>&1 on the native call kills compare.py on its first stderr line (reproduced). Its finally: report_usage never runs, so calls already paid for get no ledger row (the #139 failure mode). Fix: #Requires -Version 7.2, or relax the preference around the call.
  3. Two "beats RampNet" claims have paired CIs that include zero. These come from the repo's bayonne_paired_159 pano bootstrap (10k draws, seed 0), figures as RampNet − challenger.
    • Opus 5.5 / laurens_gsv: −0.042 [−0.101, +0.020].
    • Fable 5.1 / bayonne: −0.023 [−0.096, +0.050].
    • Two do survive: Opus 5.5 / bayonne −0.102 [−0.165, −0.040] and Opus 5.5 / laurens_mapillary −0.136 [−0.216, −0.053].
    • The docs (write-up, scoreboard, comparison, findings row 1, report, bayonne doc, roster notes) state all four flat. Add the CIs and reword the two non-significant cases as point estimates.
  4. The radius analysis overclaims (claude_newest_ids.md, "Why Opus 5.5 does better").
    • "About half" is 29–51% on the 3 splits used; the median over all 13 is 39%. On clovis the gap grows.
    • Three table cells are differences of rounded values.
    • The re-run command needs .model_cache. The committed detection files suffice, so use them and commit the script.
  5. Juneau. benchmark/juneau/ is on main, and open #260 adds it to the US pool. Whichever PR lands second leaves Opus 5.5 / Fable 5.1 at 8/9 pooled coverage, which changes 0.710 / 0.082 / "all 13 splits". The dependency is not mentioned.
  6. Stale model_comparison.md passages.
    • The manual_gold "0.34 widest lead" is now 0.186 against Opus 5.5 (0.722).
    • The supervised-baseline "splits 5–5 against the zero-shot field" is now 2–8, which contradicts this PR's own scoreboard finding 1.
  7. laurens_paired_151.md §3.1 says "Three lose with an interval that excludes zero". Fable 5.1 (−0.135 [−0.225, −0.043]) makes four, and it is the largest loss.
  8. The talk figure script's caption can name a model the chart doesn't show (uchicago_2026_figures.py). best_zs is now Opus 5.5 (0.71), but COMPARISON_MODELS still plots Opus 5 (0.57).

Nits

  • Write-up overclaims its tests. It says every P/R/F1 and cost is "re-derived by tests/test_claude_published_legs.py". The tests cover only the r=0.022 table and the four org/leg totals.
  • No pinned test for Opus 5.5 rates (Fable has one). The rates themselves are right.
  • Ledger dollars are unreconciled estimates. Say so, since the billing console is authoritative.
  • "Emits ~17% more points (317 vs 270)". The files emit 328 vs 285 (+15%); 317/270 are scored points.
  • Talk README says "need Jon's decision before the talk". The talk was given 2026-10-16, before these runs.
  • Heading "…not effort". Both models ran at effort low but with ~7× different thinking, so "not the effort setting" is the accurate wording.
  • model_comparison.md:655 re-affirms 0.113. Unrounded it is 0.1139 (0.114 elsewhere).
  • rampnet1_findings.md:44 paid-API row. It says $131.45; the ledger now totals $683.58.
  • No replication pointer for the paid legs. laurens_gsv, laurens_mapillary and bayonne panos are not on HF (replication.md:31).
  • Launcher script:
    • It can write the ledger into a worktree, and its Select-String filter hides compare.py's WARNING line.
    • The cap sums all-time spend rather than monthly; this fails safe.
    • -Splits a,b under -File binds as one string.
    • python is resolved from PATH.
  • --api-account accepts any text. A typo silently creates a new bucket.
  • scoreboard_render.py:789-792 mixes a display name with a LOG_LABEL id in one sentence (on a branch not reached today).

Next: fixes for all of the above, then a final independent re-review before merge.

🤖 Generated with Claude Code — Opus 5.5, claude-opus-5-5

jonfroehlich and others added 4 commits October 20, 2026 05:56
…aption

- compare.py exits 3 (EXIT_INCOMPLETE) when a leg was not runnable or aborted
  after consecutive failures, after every leg's usage row is written. Isolated
  per-pano failures alone still exit 0. --api-account is a closed set.
- cascade_transfer_35.slurm (set -eo pipefail) tolerates the new exit status so
  one split cannot end the job; multiview_challengers_48.sh comment updated.
- run_claude_legs_by_account.ps1: 'Continue' around the native call so PS 5.1
  cannot kill compare.py on its first stderr line; DataRoot defaults to the main
  checkout; Python defaults to its .venv; -Splits 'a,b' splits; WARNING,
  not-runnable and INCOMPLETE lines pass the filter; cap comment says all-time.
- Talk figures: captions name the best zero-shot model among the bars shown and
  list any unshown leg that beats its family; committed PNGs unchanged.
- scoreboard_render: display names in the "table's best row" clause.
- Tests: exit status paths, api-account set vs ledger and launcher, pinned
  claude-opus-5-5 rates, talk caption logic.

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

scripts/analysis/claude_newest_ids_261.py re-derives, from committed bundles and
benchmark/model_detections/ only (no .model_cache):
- RampNet minus Opus 5.5 / Fable 5.1 F1 on all 13 splits with a pano-level
  paired bootstrap (10,000 draws, seed 0, bayonne_paired_159's draw construction,
  one generator per split). RampNet at the deployed 0.55, as the scoreboard.
- Both legs rescored at r = 0.022 / 0.033 / 0.044 on all 13 splits, with the
  share of the Opus-minus-Fable gap that closes at 0.044 (unrounded).
- Emitted vs scored point counts.
Output: analysis_out/claude_newest_ids_261/results.json (--check, --markdown);
registered in check_all.py; the directory is un-ignored.

tests/test_claude_newest_ids_261.py pins the paired table, the radius table and
prose, point counts, per-pano cost ranges, bayonne leg costs, per-call token and
thinking figures, and the juneau cost estimate against the artifact and ledger.
test_claude_published_legs.py now requires the gap column to be the difference
of unrounded F1s.

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

- Every "Opus 5.5 / Fable 5.1 beats RampNet" statement now carries its paired
  interval (claude_newest_ids_261.py). Wins: Opus 5.5 on laurens_mapillary
  (-0.136 [-0.216, -0.053]) and bayonne (-0.102 [-0.165, -0.040]). Point
  estimates only, interval includes zero: Opus 5.5 on laurens_gsv
  (-0.042 [-0.101, +0.020]) and Fable 5.1 on bayonne (-0.023 [-0.096, +0.050]).
- claude_newest_ids.md: radius check on all 13 splits from committed files; the
  gap closes by -6% to 53% at r=0.044, median 39% (not "about half"); clovis
  grows; gap column from unrounded F1s; 328 vs 285 emitted (+15%), 317 vs 270
  scored; heading says "not the effort setting"; ledger dollars are unreconciled
  estimates; HF replication pointer; what the tests re-derive.
- juneau: not run; what PR #260 changes for 0.710 / 0.598 / 0.082; estimated
  $28.91-29.79 for both legs (not run).
- model_comparison.md: manual_gold lead over the whole zero-shot field is 0.187,
  no longer the widest; supervised-vs-zero-shot tally is 2-8 with Opus 5.5;
  laurens_mapillary lead over claude-opus-5 is 0.114 (0.1139), not 0.113.
- laurens_paired_151.md 3.1: four legs lose with an interval excluding zero.
- rampnet1_findings.md: ledger total $683.58 as of 2026-10-20.
- Talk README: delivered 2026-10-16; superseded claims dated after the talk.

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

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

Copy link
Copy Markdown
Member Author

Review fixes pushed (d05bf4e, 08f7526, e4d48f9, 08d4ac6). Every finding in the review above is addressed. Full suite: 3,336 passed, 6 skipped. The --check modes of scoreboard, laurens_paired_151, bayonne_paired_159 and eval_protocol_150 all pass, and so does the new claude_newest_ids_261 check.

Code (d05bf4e)

  • Launcher stop never fired:
    • compare.py now exits 3 (EXIT_INCOMPLETE) when any leg was not runnable or aborted after consecutive failures, and prints an INCOMPLETE: block. Ledger rows are still written first, in each leg's finally.
    • Isolated per-pano failures still exit 0 by design. A re-run fills them from cache, and one 529 shouldn't strand every later split.
    • Every caller was checked. cascade_transfer_35.slurm (set -eo pipefail loop) got || echo ... so it doesn't end early. Tests cover not-runnable, aborted (with a ledger row) and isolated-failure exits.
  • PS 5.1 stderr kill: $ErrorActionPreference='Continue' is now scoped around the native call (try/finally). Verified under both powershell.exe and pwsh with a fake Python child: the old script reproduced the kill, and the new one runs and writes the row.
  • Talk caption: comparison_caption_facts() names the best zero-shot model among the bars, and lists stronger unshown models. Committed PNGs are untouched (as delivered 2026-10-16). On the scoreboard as of the talk it reproduces the delivered captions exactly.
  • Nits:
    • Launcher: -DataRoot defaults to the main checkout; -Python defaults to the main venv; -Splits 'a,b' works under -File; WARNING lines pass the filter; the cap comment now says all-time.
    • --api-account has choices=.
    • Opus 5.5 rates now have a pinned test.
    • scoreboard_render uses the display name.

Data / docs (08f7526, e4d48f9, 08d4ac6)

  • New scripts/analysis/claude_newest_ids_261.py (--check / --markdown, registered in check_all.py). It reads only committed bundles and benchmark/model_detections/, with no .model_cache.

  • Paired CIs (RampNet − challenger, 10k pano bootstrap, seed 0). Reproduced the review's numbers exactly:

    Claim Paired difference [95% CI] Reading
    Opus 5.5, bayonne −0.102 [−0.165, −0.040] win
    Opus 5.5, laurens_mapillary −0.136 [−0.216, −0.053] win
    Opus 5.5, laurens_gsv −0.042 [−0.101, +0.020] point estimate only
    Fable 5.1, bayonne −0.023 [−0.096, +0.050] point estimate only
    • RampNet's lead over Opus 5.5 excludes zero on all 10 splits it leads; the narrowest is morgantown, +0.050 [+0.005, +0.097].
    • The wording is updated everywhere the claims appeared, with "single run, no seed variance, effort low only" alongside.
  • Radius: at 2× radius the gap closes −6% to 53% over all 13 splits, median 39%. On clovis it grows. The gaps are now differences of unrounded F1s, which moves five main-table cells by 0.001.

  • model_comparison.md:

    • manual_gold lead over the zero-shot field is now 0.187 [0.174, 0.200]. It is no longer the widest; budapest is 0.193.
    • Supervised baseline vs zero-shot is 2–8 with Opus 5.5 included.
    • 0.113 → 0.114.
  • laurens_paired_151.md §3.1: four lose; Fable 5.1 at −0.135 [−0.225, −0.043] is the largest.

  • Nits:

    • New tests/test_claude_newest_ids_261.py (26 tests) pins the radius table, point counts (328 vs 285 emitted), cost ranges, thinking stats and bayonne costs. The status line now says exactly what is tested.
    • Ledger dollars are labelled unreconciled list-price estimates.
    • The findings/report paid-API total is now $683.58 as of 2026-10-20.
    • Added a replication note that the laurens and bayonne panos are not on HF.
  • Talk README: marked delivered 2026-10-16, figures kept as given, and the claims described as superseded 2026-10-19/20.

Still to come before the final re-review

#260 has merged. Opus 5.5 and Fable 5.1 are now running on juneau (125 panos, claude20 org, ~$30 estimated), so both models will have full 9-of-9 pooled coverage. Once they finish: merge main, publish the two legs, regenerate, then the final independent re-review.

🤖 Generated with Claude Code — Opus 5.5, claude-opus-5-5

Conflict resolution:
- analysis_out/usage_log.jsonl: union, append-only. Both sides only appended to the
  common base, so the result is base + main's 18 rows + this branch's 26 rows, each
  side's order preserved, no duplicates (283 lines).
- Generated artifacts regenerated, not hand-merged: scoreboard.json, the
  model_scoreboard.md tables and the five scoreboard figures (scoreboard.py),
  cascade_cost_35/summary.json (cascade_cost_35.py --summary),
  eval_protocol_150/reproduction.json (eval_protocol_150.py; 212 cells).
- Hand-written prose and tests resolved for the merged state: juneau is the ninth
  pooled split and neither newest-ids leg has run it yet, so claude-opus-5-5 and
  claude-fable-5-1 are 8/9 and sit in the partial table; the headline best
  challenger with full pooled coverage is YOLO11l (0.209 behind RampNet), as on main.
  RampNet tops 11 of 14 splits. Detection count 198 files, 27.5 MB.

The juneau legs for both newest ids land in the next commit.

Full suite: 3346 passed, 6 skipped. check_all --ci: 22 passed, 0 failed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
jonfroehlich and others added 2 commits October 20, 2026 07:22
Both newest-ids legs ran benchmark/juneau on 2026-10-20 (effort low, first-party API,
--api-account claude20), so each now has 9/9 pooled coverage and 14/14 splits.

- Ledger: the two claude20 juneau rows copied from the main checkout's usage_log.jsonl
  (Opus 5.5 $8.4025, 2,610 s; Fable 5.1 $20.6559, 2,940 s; both 125/125 panos, 750 calls,
  exit 0). est_cost_usd matches pricing.estimate_cost for both.
- Detections: published with export_model_cache.py --write, then --verify (identical).
- juneau F1: Opus 5.5 0.727, Fable 5.1 0.673, RampNet 0.803. Paired pano bootstrap,
  RampNet minus Opus 5.5 +0.076 [+0.028, +0.126], minus Fable 5.1 +0.131 [+0.080, +0.182].
- Pooled over the nine US cities: Opus 5.5 0.712 (lead 0.081), Fable 5.1 0.607.
  RampNet tops 11 of 14 splits.
- Regenerated: scoreboard.json, scoreboard tables and figures, model_comparison tables,
  claude_newest_ids_261 results (juneau added to its split list), cascade_cost_35 summary,
  eval_protocol_150 reproduction (214 cells).
- Docs and pinned tests updated to the new numbers; the juneau "not done yet" item is
  replaced by the run's cost, wall-clock and command.

Full suite: 3353 passed, 6 skipped. check_all --all --allow local-cache: 24 passed;
export_model_cache_verify fails only on three bayonne free legs absent from this desktop's
.model_cache (unchanged by this branch); the two juneau pairs verify identical.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Five stale counts that predate juneau (model_comparison.md: claude-opus-5
coverage x2, published-file counts 43 / 41 verified / 28 campaign files,
thirteen city tables, thirteen city splits; replication.md: gemini-3.7-flash
covers fourteen). Comment fixes: claude_newest_ids_261 bootstrap draws are
consumed leg by leg; juneau_254_gpu.sh no longer claims a failed leg exits 0;
the talk roadmap TODO states the CI-backed reading and the delivery date.

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

Copy link
Copy Markdown
Member Author

Final re-review (head 0acfa93): Ready to merge

Two independent re-reviewers checked this head, one on code and tests and one on data, numbers and docs. Neither found a blocker, and the code reviewer found no should-fix items either. The data reviewer found five stale counts that leave out juneau; those are fixed in ece4fc4 along with the comment nits. That commit is text only and changes no number.

Since the first review

Results on juneau

Model P R F1 RampNet − model [95% CI]
RampNet 0.967 0.687 0.803 —
Opus 5.5 0.733 0.721 0.727 +0.076 [+0.028, +0.126]
Fable 5.1 0.713 0.636 0.673 +0.131 [+0.080, +0.182]

Headline numbers, all independently recomputed

  • Pooled F1 over 9 US cities: RampNet 0.793, Opus 5.5 0.712 (lead 0.081), Fable 5.1 0.607, YOLO11l 0.583, Gemini 3.1 Pro 0.571.
  • RampNet tops 11 of 14 splits.
    • Opus 5.5 wins two with paired CIs that exclude zero: laurens_mapillary −0.136 [−0.216, −0.053] and bayonne −0.102 [−0.165, −0.040].
    • Two leads are point estimates only: Opus 5.5 on laurens_gsv and Fable 5.1 on bayonne.
  • RampNet's lead over Opus 5.5 excludes zero on all 11 splits it tops.
  • Spend:
    • Campaign: $575.40 (claude5 $95.35, claude-team $450.99, claude20 $29.06). These are list-price ledger estimates; the billing console is authoritative.
    • Whole ledger: $718.24.
  • Ledger merge: append-only. No row from either side was dropped or duplicated.

Code re-review

  • The original findings are fixed, verified by running them.
    • compare.py exit 3: the ledger row is written before the exit, every caller was audited, and the slurm set -e loop is protected.
    • The PS1 launcher was run under both PowerShell 5.1 and 7 with a fake child process. The old script reproduced the stderr kill; the new one stops on exit 3 with both rows written.
    • --api-account now takes a fixed list of choices, and the talk caption logic is fixed.
  • No test was weakened relative to main.
  • claude_newest_ids_261.py pairs its bootstrap draws correctly, reads only committed files, and its --check detects drift.

Checks

  • Full suite: 3,353 passed, 6 skipped.
  • check_all.py --ci: 22 passed, 0 failed (re-run on ece4fc4).
  • scoreboard.py --check: current.

🤖 Generated with Claude Code — Opus 5.5, claude-opus-5-5

@jonfroehlich
jonfroehlich merged commit 2099b4b into main Oct 20, 2026
3 checks passed
jonfroehlich added a commit that referenced this pull request Oct 20, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
jonfroehlich added a commit that referenced this pull request Oct 20, 2026
Generated files re-derived: scoreboard JSON, tables and figures,
eval_protocol_150 reproduction (224 cells), cascade_cost_35 summary.
Prose: 23 model legs; nine partial legs, six of them one-split;
y11x_tiles noted beside the new Opus 5.5 headline and as the leading
supervised baseline on annapolis; 264 published files / 30.6 MB.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
jonfroehlich added a commit that referenced this pull request Oct 21, 2026
The merge of #261 resolved eval_protocol_150.md's Result paragraph to main's
187 / 21 legs; the proof now covers 224 cells / 23 legs / 2,240 fields.
replication.md's scoreboard check row excludes the seed legs; roster.py no
longer miscounts its property list; a roster test requires seed_of to name a
registered, non-seed parent and a seed leg to be non-standing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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