1.7 KiB
1.7 KiB
name, description
| name | description |
|---|---|
| bench-harness-fault-census | Attribute benchmark failures to harness vs model via exception-signature census before trusting any score; python-grader fault signatures and fixes |
Rule (from 2026-10-10 frank-intelligence-bench incident, 3 harness faults found)
An LLM benchmark score is VOID until every failure signature is attributed to the MODEL. Run the census before quoting any number.
Procedure
- Aggregate graded rows per eval; for each failed grade extract the LAST python exception signature:
regex
(\w+Error|\w+Exception): (?:name '([^']+)' is not defined|No module named '([^']+)')?→ sig =Type: detail. - Indict the harness (not the model) when:
NameError: target/NameError: targetsin any count → expected-value bindings never reached the tests (gold data file missing/unstaged).ModuleNotFoundError: <grader package>(e.g.scicode) → grading deps missing from the execution image.- ≥10 failures sharing ONE signature at >50% share → systematic fault; audit the protocol (e.g. markdown fences reaching an exec-based extractor —
SyntaxErrorstorm; strip ``` fences before feeding model text to graders that exec raw code). -
50% of generations fail → endpoint/transport fault.
- Real model failures look heterogeneous: AssertionError/AxisError/NameError of the model's OWN undefined names.
Companion checks
- Prove the grading path with a gold-solution integration test BEFORE trusting live scores: gold must PASS end-to-end (FIB_INTEGRATION=1 pattern).
- Quarantine poisoned ledgers (.AGENTTRASH) rather than deleting; census them to root-cause.
- Expect-score sanity: mixed PASS/FAIL with model-side signatures = real signal, even if the % looks low.