Skip to content

feat(scorecard): run the first four-way, and add the column it proved was missing (G4) - #7

Merged
henleda merged 1 commit into
mainfrom
feat-g4-run
Jul 27, 2026
Merged

feat(scorecard): run the first four-way, and add the column it proved was missing (G4)#7
henleda merged 1 commit into
mainfrom
feat-g4-run

Conversation

@henleda

@henleda henleda commented Jul 27, 2026

Copy link
Copy Markdown
Owner

benchmarks/RESULTS.md now exists, so G4 is checked.

First real sweep of the Nimbus fixture, dgx skipped — the local Ollama box is behind a tunnel this
machine cannot reach. --skip was added for exactly that: an unreachable config is declared as
absent from the table rather than recorded as a model that failed, which would be a false red row.

config recall precision triage policies (unusable) wall
claude 9/9 = 1.00 1.00 8/9 = 0.89 9 (0) 195s
openai 8/9 = 0.89 1.00 8/8 = 1.00 7 (0) 53s
gemini 6/9 = 0.67 1.00 6/6 = 1.00 6 (3) 394s

The run proved the table needed a column the acceptance never asked for

Gemini scored precision 1.00 and triage 1.00 while emitting {} as the spec for 3 of its 6
policies
. Structured output validated — {} is a valid dict — and the artifact was useless.

Recall, precision and triage all say the routing was right. None of them notice. Published as
specified, this table would have flattered a model that routed correctly and then emitted nothing.

policies (unusable) counts what lint_generated_spec rejects — an empty spec, no DENY rule, an
OpenAPI fragment missing its envelope — reusing machinery the pipeline already runs on every scan.
No new judgement, just a count that reaches the scorecard.

Flagging it as beyond the stated acceptance: I added it because the alternative was publishing a
misleading table.

Which surfaced an older bug in turn

Counting policies by globbing policies/ gave 32 for Claude's 9 generated — a re-scan into an
existing out dir leaves the previous run's artifacts behind. The count now comes from the run's own
policies.json index, so a model is never scored against someone else's leftovers. Pinned by a test.

Also in the table, deliberately

  • Not reproducible run to run — stated rather than faked; two providers accept no seed and none
    guarantee determinism.
  • Not a cost comparison — token cost absent by decision, and the table says so.
  • Not the full config setdgx named as skipped-because-unreachable.

Six new tests · 268 pass · coverage 73% · ruff clean.

🤖 Generated with Claude Code

… was missing (G4)

`benchmarks/RESULTS.md` now exists. First real sweep of the Nimbus fixture, dgx skipped (the local
Ollama box is behind a tunnel this machine cannot reach — `--skip` was added so an UNREACHABLE
config is declared as absent rather than recorded as a model that failed):

  claude  recall 1.00  precision 1.00  triage 0.89  policies 9 (0 unusable)  195s
  openai  recall 0.89  precision 1.00  triage 1.00  policies 7 (0 unusable)   53s
  gemini  recall 0.67  precision 1.00  triage 1.00  policies 6 (3 unusable)  394s

The run surfaced a column the acceptance never asked for and the table plainly needed. Gemini scored
precision 1.00 and triage 1.00 while emitting `{}` as the spec for 3 of its 6 policies — structured
output validated, because `{}` is a valid dict, and the artifact was useless. Recall, precision and
triage all say the routing was right; none of them notice. `policies (unusable)` counts what
`lint_generated_spec` rejects, reusing machinery the pipeline already runs on every scan. Publishing
the table without it would have flattered a model that routed correctly and then emitted nothing.

That column surfaced a second, older bug in turn: a re-scan into an existing out dir leaves the
previous run's artifacts in `policies/` (32 files for 9 generated policies), so the count is taken
from the run's own `policies.json` index rather than by globbing the directory — otherwise a model
is scored against someone else's leftovers.

Six new tests. 268 pass, coverage 73%.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@henleda
henleda merged commit 7eeff04 into main Jul 27, 2026
4 checks passed
@henleda
henleda deleted the feat-g4-run branch July 27, 2026 17:24
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