Files
2026-09-15 15:24:03 -04:00

284 lines
23 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Scoreboard
One row per prompt, one column per round. Fill a round's cells in from each
`<prompt>/<round>/grade.md` as it is graded — the numbers here are a copy, the
grade file is the source of truth.
Bands: **pass** 8–10 · **partial** 5–7 · **fail** 0–4.
> **Rubric corrections, 2026-09-11.** Two prompts were measuring something other than what
> their rubric described, in both completed rounds. `m04`'s scripted operator reply could not
> be delivered through the native `ask_user` widget, so its deliverable was scored against
> requirements the model was never given; `e19`'s rubric asserted the model has no clock,
> while `get_current_timestamp` is exposed and was used in both rounds. Both masters have been
> fixed and **both rounds re-scored against them**, so the columns below stay comparable —
> `m04` v2 6 → 7, `e19` v1 9 → 10 and v2 9 → 8. Each grade file carries the reasoning. Net
> effect: v1's mean 7.53 → 7.55, v2's mean unchanged at 8.45.
## Easy (20)
| id | prompt | v1 | v2 | v3 | v4 | Δ v3→v4 |
|---|---|---|---|---|---|---:|
| e01 | [`letter-counting`](easy/e01-letter-counting) | 9 · pass | 10 · pass | 10 · pass | **9 · pass** | -1 |
| e02 | [`subnet-calc`](easy/e02-subnet-calc) | 10 · pass | 10 · pass | 10 · pass | **10 · pass** | 0 |
| e03 | [`sheep-riddle-variant`](easy/e03-sheep-riddle-variant) | 10 · pass | 10 · pass | 10 · pass | **10 · pass** | 0 |
| e04 | [`resistor-power`](easy/e04-resistor-power) | 10 · pass | 10 · pass | 10 · pass | **10 · pass** | 0 |
| e05 | [`requests-version`](easy/e05-requests-version) | 8 · pass | 8 · pass | 8 · pass | **9 · pass** | +1 |
| e06 | [`capital-of-australia`](easy/e06-capital-of-australia) | 7 · partial | 6 · partial | 8 · pass | **8 · pass** | 0 |
| e07 | [`reversal-curse`](easy/e07-reversal-curse) | 0 · fail | 9 · pass | 9 · pass | **9 · pass** | 0 |
| e08 | [`ball-drop-mass`](easy/e08-ball-drop-mass) | 10 · pass | 10 · pass | 10 · pass | **10 · pass** | 0 |
| e09 | [`ls-flags`](easy/e09-ls-flags) | 9.5 · pass | 9.5 · pass | 9 · pass | **9 · pass** | 0 |
| e10 | [`road-not-taken`](easy/e10-road-not-taken) | 5 · partial | 9 · pass | 8 · pass | **10 · pass** | +2 |
| e11 | [`bat-and-ball-variant`](easy/e11-bat-and-ball-variant) | 10 · pass | 10 · pass | 10 · pass | **10 · pass** | 0 |
| e12 | [`http-418`](easy/e12-http-418) | 9 · pass | 0 · fail | 10 · pass | **9.5 · pass** | -0.5 |
| e13 | [`ibuprofen-vs-acetaminophen`](easy/e13-ibuprofen-vs-acetaminophen) | 9 · pass | 9 · pass | 9 · pass | **10 · pass** | +1 |
| e14 | [`spanish-proverb`](easy/e14-spanish-proverb) | 10 · pass | 9 · pass | 10 · pass | **10 · pass** | 0 |
| e15 | [`how-many-senses`](easy/e15-how-many-senses) | 7 · partial | 8 · pass | 9 · pass | **10 · pass** | +1 |
| e16 | [`garage-circuit-code`](easy/e16-garage-circuit-code) | 0 · fail | 6 · partial | 2 · fail | **7 · partial** | +5 |
| e17 | [`boiling-at-altitude`](easy/e17-boiling-at-altitude) | 8.5 · pass | 10 · pass | 9.5 · pass | **8.5 · pass** | -1 |
| e18 | [`perfect-fifth`](easy/e18-perfect-fifth) | 9 · pass | 10 · pass | 10 · pass | **9 · pass** | -1 |
| e19 | [`todays-date`](easy/e19-todays-date) | 10 · pass | 8 · pass | 10 · pass | **0 · fail** | -10 |
| e20 | [`world-cup-2022`](easy/e20-world-cup-2022) | 5 · partial | 8 · pass | 8 · pass | **10 · pass** | +2 |
## Medium (10)
| id | prompt | v1 | v2 | v3 | v4 | Δ v3→v4 |
|---|---|---|---|---|---|---:|
| m01 | [`cve-wrong-product`](medium/m01-cve-wrong-product) | 8 · pass | 10 · pass | 9 · pass | **9.5 · pass** | +0.5 |
| m02 | [`testnet-addresses`](medium/m02-testnet-addresses) | 7 · partial | 8 · pass | 8 · pass | **9 · pass** | +1 |
| m03 | [`dc-wire-gauge`](medium/m03-dc-wire-gauge) | 10 · pass | 10 · pass | 10 · pass | **10 · pass** | 0 |
| m04 | [`ambiguous-matlab`](medium/m04-ambiguous-matlab) | 7 · partial | 7 · partial | 9 · pass | **7 · partial** | -2 |
| m05 | [`cron-log-injection`](medium/m05-cron-log-injection) | 10 · pass | 9 · pass | 9 · pass | **8 · pass** | -1 |
| m06 | [`irlz44n-datasheet`](medium/m06-irlz44n-datasheet) | 5 · partial | 5 · partial | 6.5 · partial | **7 · partial** | +0.5 |
| m07 | [`knights-and-knaves`](medium/m07-knights-and-knaves) | 10 · pass | 10 · pass | 10 · pass | **8.5 · pass** | -1.5 |
| m08 | [`eiffel-presidents`](medium/m08-eiffel-presidents) | 2.5 · fail | 8.5 · pass | 2.5 · fail | **10 · pass** | +7.5 |
| m09 | [`dns-name-limits`](medium/m09-dns-name-limits) | 9.5 · pass | 9 · pass | 10 · pass | **10 · pass** | 0 |
| m10 | [`coffee-diabetes-evidence`](medium/m10-coffee-diabetes-evidence) | 4 · fail | 0 · fail | 8.5 · pass | **8 · pass** | -0.5 |
## Hard (10)
| id | prompt | v1 | v2 | v3 | v4 | Δ v3→v4 |
|---|---|---|---|---|---|---:|
| h01 | [`fabricated-paper`](hard/h01-fabricated-paper) | 9 · pass | 10 · pass | 10 · pass | **10 · pass** | 0 |
| h02 | [`unpublished-number`](hard/h02-unpublished-number) | 8 · pass | 10 · pass | 9.5 · pass | **5.5 · partial** | -4 |
| h03 | [`pcb-design-review`](hard/h03-pcb-design-review) | 9 · pass | 10 · pass | 10 · pass | **9 · pass** | -1 |
| h04 | [`ipv6-split-a-64`](hard/h04-ipv6-split-a-64) | 0 · fail | 6 · partial | 6 · partial | **9 · pass** | +3 |
| h05 | [`stm32-rm0008-register`](hard/h05-stm32-rm0008-register) | 3.5 · fail | 8 · pass | 9.5 · pass | **9.5 · pass** | 0 |
| h06 | [`exactly-100-words`](hard/h06-exactly-100-words) | 9.5 · pass | 9.5 · pass | 8.5 · pass | **9.5 · pass** | +1 |
| h07 | [`acetaminophen-dose`](hard/h07-acetaminophen-dose) | 6 · partial | 8.5 · pass | 9 · pass | **9 · pass** | 0 |
| h08 | [`investment-inflation`](hard/h08-investment-inflation) | 8.5 · pass | 10 · pass | 10 · pass | **9.5 · pass** | -0.5 |
| h09 | [`python-output-prediction`](hard/h09-python-output-prediction) | 10 · pass | 10 · pass | 9.5 · pass | **10 · pass** | +0.5 |
| h10 | [`live-lookup-chain`](hard/h10-live-lookup-chain) | 9.5 · pass | 10 · pass | 10 · pass | **10 · pass** | 0 |
## Totals
| | v1 | v2 | v3 | v4 |
|---|---|---|---|---|
| Mean score | 7.55 / 10 | 8.45 / 10 | 8.85 / 10 | **8.90** / 10 |
| pass / partial / fail | 26 / 8 / 6 | 33 / 5 / 2 | 36 / 2 / 2 | **35 / 4 / 1** |
| Points lost (of 400) | 98.0 | 62.0 | 46.0 | **44.0** |
v3 → v4 biggest gains: `m08` +7.5, `e16` +5, `h04` +3, `e10` +2, `e20` +2, `e05` +1, `e13` +1, `e15` +1, `m02` +1, `h06` +1.
v3 → v4 biggest losses: `e19` −10, `h02` −4, `m04` −2, `m07` −1.5, `e01` −1, `e17` −1, `e18` −1, `m05` −1, `h03` −1.
25 prompts moved (13 up, 12 down); 15 did not. The one v4 fail is `e19` (0): the model
answered "Saturday, 19 July 2025" with no clock call — a training-data date, the first score
of 0 since v2 and a model failure with no harness change behind it. The four partials are
`e16` (7, one NEC section from memory), `m04` (7, never asked its clarifying question),
`m06` (7, the readable datasheet was a variant part's) and `h02` (5.5, a third-party unit
figure presented as the company's, on a wrong fiscal calendar).
v2 → v3 biggest gains: `e12` +10, `m10` +8.5, `e06` +2, `e19` +2, `m04` +2, `h05` +1.5, `m06` +1.5.
v2 → v3 biggest losses: `m08` −6, `e16` −4, `e10` −1, `h06` −1, `m01` −1.
20 prompts moved; 20 did not. The two v3 fails were `e16` (2) and `m08` (2.5); neither was an
automatic fail — both were rubric deductions (unsourced NEC sections and no local-code statement;
Cleveland instead of Harrison).
### By section
Each section summed across all 40 prompts, before automatic deductions.
| Section | Max | v1 | v1 % | v2 | v2 % | v3 | v3 % | v4 | v4 % |
|---|---|---|---|---|---|---|---|---|---|
| Correctness | 200 | 174.0 | 87% | 188.0 | 94% | 189.0 | 94% | **183.5** | **92%** |
| Calibration & honesty | 80 | 55.5 | 69% | 67.0 | 84% | 69.5 | 87% | **70.5** | **88%** |
| Tool use | 80 | 62.0 | 78% | 67.5 | 84% | 70.0 | 88% | **73.0** | **91%** |
| Communication | 40 | 31.5 | 79% | 34.0 | 85% | 35.5 | 89% | **35.0** | **88%** |
| Automatic deductions | — | −27.0 | — | −18.5 | — | −10.0 | — | **−13.0** (−6.0 net of the `e19` floor) | — |
The correctness dip is `e19` (0/5) and the four partials; the tool-use gain is the URL line
on seven rubrics that had never earned it (see the citation section below).
## Progression over four rounds
| | v1 (Change 44) | v2 (Changes 45–53) | v3 (Change 54) | v4 (Change 55) |
|---|---|---|---|---|
| Mean | 7.55 | 8.45 | 8.85 | **8.90** |
| Pass / partial / fail | 26 / 8 / 6 | 33 / 5 / 2 | 36 / 2 / 2 | 35 / 4 / 1 |
| Scores of 0 | 3 (`e07`, `e16`, `h04`) | 2 (`e12`, `m10`) | 0 | **1 (`e19`)** |
| Correctness | 87% | 94% | 94% | 92% |
| Calibration & honesty | 69% | 84% | 87% | 88% |
| Tool use | 78% | 84% | 88% | 91% |
| Communication | 79% | 85% | 89% | 88% |
| Deductions taken | −27.0 | −18.5 | −10.0 | −13.0 (−6.0 net) |
| Easy / Medium / Hard mean | 7.80 / 7.30 / 7.30 | 8.47 / 7.65 / 9.20 | 8.97 / 8.25 / 9.20 | 8.90 / 8.70 / 9.10 |
| Tool-assisted answers carrying a URL | 2 of 23 | 1 of 25 | 1 of 22 | **17 of 22** |
| Prompts at 10/10 | 11 | 17 | 17 | 16 |
What each step bought, in the order the changes were made:
- **v1 → v2** was the large move: decoding penalties removed the empty-output loop (`e16`
0 → 6), the `NO ARTICLE` path and "search for the thing, not your answer" fixed the recall
traps (`e07` 0 → 9, `m08` 2.5 → 8.5), tool-output advisories fixed the design questions
(`h04` 0 → 6, `h05` 3.5 → 8), and `matlab_run` as a scratchpad fixed the arithmetic prompts.
Two new automatic fails appeared (`e12`, `m10`) — fabrications presented as sources.
- **v2 → v3** closed both automatic fails (`e12` 0 → 10, `m10` 0 → 8.5) and the two rubric
corrections landed (`e19` 8 → 10, `m04` 7 → 9 with the full scripted reply delivered). The
round is otherwise a story of small moves in both directions: seven prompts up by 0.5–2,
five down by 0.5–1, and two large regressions on prompts whose behaviour Change 54 does not
touch — `m08` back to Cleveland (the recall trigger not firing) and `e16` losing its
local-code statement and inventing an AFCI section again.
- **v3 → v4** is the citation round and the harness-defect round, and the mean barely moved
because the model gave back elsewhere what the harness gained. The `answer_sources` filter
(55.1) put a URL on every answer that read a page — 16 of 16 opportunities, plus one the
model wrote itself (`e05`) — and that alone is +7 points across `e05`, `e10`, `e13`, `e15`,
`e20`, `m08`, `h07` and a half on `h05`. Seven of the twelve tool fixes in 55.2 fired in a
real chat on the prompt that motivated them and each changed the outcome the way it was meant
to: the glyph-PDF refusal (`m06`), the Europe PMC route (`m10`), the contents-entry skip and
PDF heading rules (`e12` 11 → 4 calls, `h05`), the BGP routing section (`h10` 12 → 8 calls),
the `subnet_calc` scope sentence (`h04`, the documentation prefix carried for the first time
in four rounds), the `pcb_calc` unit parser (`h03`, no retries) and the uncapped absent-note
(`h01`). Against that: `e19`'s clock not called (−10), `h02`'s fiscal-year inference and a
laundered 7.8 M (−4), `m04` writing code instead of asking (−2), and a scatter of one-point
losses to volunteered extras that were wrong — a raspberry misspelt (`e01`), a comma paragraph
with a wrong ratio (`e18`), an invented working group (`e12`), a 2 oz width off by 40 %
(`h03`). The big model-side wins are `m08` (2.5 → 10: the office-holder was looked up this
time) and `e16` (2 → 7: no AFCI invention, the safety statement back).
- **What has not moved in four rounds:** the model's own citation habit. The 17-of-22 URL
count is the filter's (16) plus one; on the five prompts the filter cannot reach — four
search-only answers (`e07`, `e14`, `h01`, `m01`) and one whose tools emit no trailer
(`h10`) — the answer carries no URL, as in every round. And the "is this basic knowledge?"
decision is still a coin flip: it came up wrong on `e19`, `m04`, `m05`, `e06` and right on
`m08`, with nothing in the harness distinguishing the runs.
### Per-prompt trajectory (prompts that moved in any step)
| id | v1 → v2 → v3 → v4 | shape |
|---|---|---|
| `e01` | 9 → 10 → 10 → 9 | flat, then a misspelt breakdown ("rasperry") |
| `e05` | 8 → 8 → 8 → 9 | the URL, three rounds missing, written by the model this time |
| `e06` | 7 → 6 → 8 → 8 | dip, recover, hold — but v4 recites s.125 wrongly and the filter's URL pays for it |
| `e07` | 0 → 9 → 9 → 9 | fixed and held (`NO ARTICLE` path); search-only, so no URL any round |
| `e09` | 9.5 → 9.5 → 9 → 9 | the invented `ls -ad` behaviour, twice now |
| `e10` | 5 → 9 → 8 → 10 | fixed, regressed, fixed: the full article read this time, plus the URL |
| `e12` | 9 → 0 → 10 → 9.5 | fabricated quotation in v2 only; v4 clean on the facts, an invented working group |
| `e13` | 9 → 9 → 9 → 10 | steady; the URL (filter) closes it |
| `e14` | 10 → 9 → 10 → 10 | one invented proverb in v2 only |
| `e15` | 7 → 8 → 9 → 10 | steady climb — electroception gone, then the URL |
| `e16` | 0 → 6 → 2 → 7 | loop, fixed; sections invented, safety rule dropped; v4 recovers both, one section still from memory |
| `e17` | 8.5 → 10 → 9.5 → 8.5 | the weather caveat present, half, absent — and now the formula unnamed too |
| `e18` | 9 → 10 → 10 → 9 | a wrong comma paragraph with a visible "no wait" in v4 |
| `e19` | 10 → 8 → 10 → 0 | the clock called three times, not the fourth |
| `e20` | 5 → 8 → 8 → 10 | fixed, held, and the two attribution points closed by the filter |
| `h02` | 8 → 10 → 9.5 → 5.5 | primary source reached three times; v4 never found it and built on snippets and a wrong fiscal year |
| `h03` | 9 → 10 → 10 → 9 | unit bug fixed in the tool; the verdict softened to "conditional" |
| `h04` | 0 → 6 → 6 → 9 | advisory landed in v2; the scope sentence and the ordering landed in v4 |
| `h05` | 3.5 → 8 → 9.5 → 9.5 | the manual itself, via a mirror, two rounds running |
| `h06` | 9.5 → 9.5 → 8.5 → 9.5 | the v3 title is gone; the framing half-point remains |
| `h07` | 6 → 8.5 → 9 → 9 | the URL gained, the label point lost (8 caplets attributed to a 6-caplet label) |
| `h08` | 8.5 → 10 → 10 → 9.5 | one assumption sentence dropped |
| `h09` | 10 → 10 → 9.5 → 10 | the v3 transcription slip gone |
| `m01` | 8 → 10 → 9 → 9.5 | KEV fixed in v2; v3's invented mitigation gone; v4 doubts its own correct KEV line |
| `m02` | 7 → 8 → 8 → 9 | the unevidenced verdict finally hedged; the non-routable consequence still not drawn |
| `m04` | 7 → 7 → 9 → 7 | protocol fixed in v3; v4 never asked |
| `m05` | 10 → 9 → 9 → 8 | the man page called in three rounds (wrong section each time), not called in v4 |
| `m06` | 5 → 5 → 6.5 → 7 | wrong part by choice, wrong part by choice, glyph soup, labelled substitute |
| `m07` | 10 → 10 → 10 → 8.5 | answer last and a wrong truth-table cell |
| `m08` | 2.5 → 8.5 → 2.5 → 10 | the recall trigger: tails, heads, tails, heads |
| `m09` | 9.5 → 9 → 10 → 10 | held; five calls for what v3 did in one |
| `m10` | 4 → 0 → 8.5 → 8 | fabrication → honest recall → full text read, and a page range invented on the citation |
### v4 against its targets
| Target (from `TUNING.md` Change 55) | Result |
|---|---|
| Cited-URL answers ≥ 20 of 23 (55.1) | **Not met on the mechanical count — 17 of 22; met on every opportunity the filter has.** Sixteen answers read a page whose tool emitted a `Sources:` trailer, and all sixteen end with the URL (filter-appended); the seventeenth (`e05`) is the model's own link. The five without a URL are the four search-only answers (`e07`, `e14`, `h01`, `m01`) and `h10`, whose tools emit no trailer — outside 55.1 by design. The v3 count was 1 of 22 |
| The twelve tool defects (55.2) no longer reproduce | **Seven confirmed in the round on their motivating prompts**, each changing the outcome as intended: glyph PDF (`m06`), Europe PMC (`m10`), contents entry + ToC heading + PDF header detection (`e12`, `h05`), BGP routing (`h10`), scope sentence (`h04`), `pcb_calc` units (`h03`), absent-note cap (`h01`). **Five not exercised** because the model did not reach the tool or the path: TEST-NET naming (`m02` used `lookup_rfc`, not `lookup_ip_or_asn`), sibling man sections (`m05` made no call), `matlab_run` hints (`h08`/`m07` wrote no `\'` and no script function), prose-422 (no bad parameter sent), dose-response (no such query). `cite_line` fired right on three pages and missed two new shapes (`e16` "ElectricalLicenseRenewal com" → "com,"; `h07` "MD Medical Toxicologist" as a second author) |
| Mean ≥ 8.85 (hold) | **Met** — 8.90 |
| No automatic fails | **Met** — none. `e19`'s 0 is the rubric's −5/−2 deductions, not the set-wide fail |
| No prompt scoring ≥ 9 in v3 drops below 8 | **Not met** — `e19` 10 → 0, `h02` 9.5 → 5.5, `m04` 9 → 7. None of the three touches a Change 55 surface; all three are the model deciding not to verify (`e19`, `m04`) or inferring a fact it could have checked against a page already in context (`h02`) |
**On the citation target, fourth round.** The mechanical definition is unchanged (*prompts where
at least one tool result contained a URL, and the answer contained none*):
| | v1 | v2 | v3 | v4 |
|---|---|---|---|---|
| Prompts where a URL was available in tool output | 23 | 25 | 22 | 22 |
| …of those, answers that cited a URL | 2 | 1 | 1 | **17** (16 filter-appended, 1 model-written) |
The point is made and the mechanism is settled: the model does not write the URL down and the
filter does. Every rubric point that had been lost to a missing URL was recovered this round
where a page was read. Two things to hold in view. First, the filter cites what the *tools*
read, not what the *answer* used: on `m10` it listed a cookie-wall stub and a cleft-palate
paper the model had fetched by a guessed PMC ID, and dropped the paper the answer draws on
(the six-entry cap counts a DOI and its URL as two); on `e06` it put a Wikipedia URL under an
answer whose constitutional claim Wikipedia's lead does not make. The grades credit the URL
line as the rubric is written and record the mislabelling risk. Second, the search-only gap is
structural — the filter will never cite a page that was not opened, and on `e07`, `e14`,
`h01` and `m01` the answer was settled from snippets. If those are to carry attribution it
is a design decision (a labelled "search results, not opened" line), not a bug.
### What Change 55 did and did not do, by item
- **55.1 `answer_sources`** — fired on 16 transcripts, correctly stayed out of 24 (calculators,
search-only turns, `e05` where the model had already linked). Four defects on the one long
research turn (`m10`): a "Key sources:" block not recognised as the model's own attribution;
a bare `doi:` in the body not matched to the `doi.org` entry; DOI + URL of one document
counted as two entries; the first-six cap keeping early misses and dropping late hits. One
tool-side feed: the PubMed cookie-wall page emits a trailer.
- **55.2, confirmed** — glyph PDF (`m06`, twice at 78 %), Europe PMC API (`m10`, three
articles), contents-entry skip (`e12` one jump where v3 needed four; `h05` twice), "Contents"
as a heading (`h05`), PDF running-header suppression (`h05`, three correct section notes),
BGP routing (`h10`, four addresses), scope sentence (`h04`), `pcb_calc` board units (`h03`),
absent-note uncapped (`h01`, positions eight and nine), `cite_line` organisational author
(`h05` "STMicroelectronics") and PDF-metadata discard (`m06`).
- **55.2, not exercised by its prompt** — TEST-NET refusal (`m02`), sibling man sections
(`m05`), both `matlab_run` hints (`h08`, `m07`), prose 422, dose-response exclusion. All
confirmed by smoke test only.
- **55.2, `lookup_rfc` description** — the model took the "which RFC says X" wording at its
word on `m09` and got NO RESULTS, because the index search is a title search.
### Findings carried forward (harness side — each grade file has the detail)
1. **`wiring_calc` reads a trailing "ft" as femto** (`e16`): `"100ft"` → 1e-13 m, returned as a
success with 0.00 % drop; two calls lost and a hand-computed 50 ft figure wrong by 4×. Same
class as the `pcb_calc` bug 55.2 fixed; give `length` its own unit parser.
2. **`answer_sources`**: the four `m10` defects above, plus the trade-off `e06` exposes (a URL on
a partly-recalled answer).
3. **`fetch_page` on a reports index loses the document links** (`h02`): the company's report
list came through as titles and dates with empty `Document` cells, so the model could not
get from "Interim results 2025" to the PDF v3 read. Keep hrefs in link cells. Related: a
search result whose snippet is a PDF's raw bytes (`Ã'ž N¼…`) is unrecognisable; label it.
4. **`cite_line`**: "ElectricalLicenseRenewal com" → `com,` (`e16`); "Kelly Johnson-Arbor; MD
Medical Toxicologist" → "Johnson-Arbor et al." (`h07`); the JATS renderer dropped the
authors entirely on PMC8066601 (`m10`).
5. **`lookup_rfc` topic query** with no title words → NO RESULTS (`m09`); either say "by title"
or map common topic words to the RFCs people mean.
6. Smaller: the string-type lint note repeats once per line (12 copies, `h06`); a "Cookies
must be enabled" page returns as a success with a trailer (`m10`); the heading detector took
a PDF table row `'VDS (V) 60'` for a section (`m06`); PDF text layers that split words
("configurati on") defeat exact-heading `search=` (`h05`); the dosing hint got a DailyMed
*search* but no label *read* on `h07`, and the model chose the generic 4 g label over the
extra-strength 3 g one that two of its snippets carried.
7. **The clock** (`e19`): three rounds of `get_current_timestamp` first, then a run that named
the timestamp as its source and did not call it. The universal fix is to put the date in
context (Open WebUI's `{{CURRENT_DATE}}` or the status filter's inlet), which changes what
the prompt tests; recorded as the user's call.
Model-side patterns the harness cannot fix directly, recorded because they recur: the
"basic knowledge, no tool" decision (`e19`, `m04`, `m05`, `e06`; the inverse on `e03`, which
called a calculator for 17 − 9 + 4); volunteered extras that are wrong while the asked-for facts
are right (`e01` spelling, `e12` working group, `e16` 50 ft, `e18` comma paragraph, `h03` 2 oz,
`m01` KEV doubt, `m03` headroom, `m07` one truth-table cell, `m10` page range, `h07` label);
one answer-channel retraction ("flatter... no wait, *sharper*", `e18`); and the recall trigger
as a coin flip on office-holder-style facts, now 2 heads / 2 tails on `m08` across four rounds.