# docs/evals/

One file per measurement, named for the day it was taken. **Never edited after
that day.** A newer number is a new file, never an edit to an old one.

Reasoning does not belong here. It belongs in the subsystem's living doc under
`docs/`. An eval holds the setup, the numbers and what they rule out.

## Rules for this directory

* Filename is `YYYY-MM-DD-<what-was-measured>.md`. The date is the day it ran.
* The first line is the claim, not the topic. A reader picks a file from this
  index without opening it, so the H1 has to carry the finding.
* Head the file with the date, the task id, the box and the build.
* **A file that replaces an older number says so.** It names the file it
  replaces. This index then marks that one superseded.
* A superseded file is not deleted and not edited. It records what was believed
  that day. A living doc may still cite it for the run itself.

## Reading a number out of here

Check the state column before citing a row. **A number in a living doc must
cite a live file.** The 2026-08-11 classifier baseline exists for that reason.
A pair in `docs/routing.md` went stale unnoticed. Its source predated the
`encodeWord` fix at `feabf9f`. Nothing failed (V-704).

## Routing: the arms and the cascade

| measurement | state |
| --- | --- |
| [Routing evaluation](2026-07-31-routing.md) | superseded |
| [Resident model bake-off](2026-07-31-model-bakeoff.md) | live |
| [gemma-4-12b on the workstation, against the resident Qwen3-1.7B](2026-08-02-workstation-gemma4-12b.md) | live |
| [Routing from audio: four paths, one fixture](2026-08-05-audio-in-routing.md) | live |
| [Routing with the resident model, re-measured](2026-08-05-routing-resident-model.md) | live |
| [The routing trajectory, and the number that is missing](2026-08-06-routing-trajectory.md) | live |
| [Gemma as a label function, and what it found in the seeds](2026-08-06-seed-labels-vs-router-prompt.md) | live |
| [Moving the seed files onto the router prompt's boundaries](2026-08-06-seeds-to-prompt-boundary.md) | live |
| [The first destination number](2026-08-08-destination-fixture.md) | superseded |
| [The destination, with a model that can name one](2026-08-08-destination-model-arm.md) | live |
| [The routing heads, running in Go](2026-08-08-routing-heads-in-go.md) | live |
| [Two heads on e5-small, and the first destination the router did not need a model for](2026-08-08-routing-heads-two-head.md) | live |
| [A slot head, and the corpus that did not exist this morning](2026-08-08-slot-head-three-head.md) | live |
| [A clarify head, and a confidence that is not a hardcode](2026-08-08-clarify-head-four-head.md) | live |
| [MASSIVE Russian warm-start for the routing heads](2026-08-08-massive-warm-start.md) | live |
| [gemma-4-E4B against gemma-4-12B on the routing fixture](2026-08-09-e4b-vs-12b-routing.md) | live |
| [The classifier baseline after the tokenizer fix](2026-08-11-classifier-baseline-after-tokenizer-fix.md) | live |

`docs/routing.md` holds the arm table these feed. Cite from there, not from here.

## Stage 0, slots and the turn

| measurement | state |
| --- | --- |
| [Five turns retain one referent across fact, query and chat routes](2026-08-13-conversation-continuity.md) | live |
| [Personal boundary, seed scoring vs possession markers](2026-08-03-personal-boundary.md) | superseded |
| [Three neighbours keep a public noun from opening the personal boundary](2026-08-13-personal-boundary-neighbourhood.md) | superseded |
| [A class-balanced linear head closes every held-out personal-boundary cell](2026-08-13-personal-boundary-linear-head.md) | live |
| [Half-past and quarter-to hours](2026-08-05-half-past-hours.md) | live |
| [Praxis reach at stage 0](2026-08-05-praxis-reach.md) | live |
| [Alarm verbs reach stage 0](2026-08-06-alarm-verbs-reach-stage-0.md) | live |
| [Russian acts reach tools](2026-08-06-russian-acts-reach-tools.md) | live |
| [The fact parser: closed classes against the substring stems they replaced](2026-08-06-fact-parser.md) | live |
| [The reminder completeness rule, measured on the box](2026-08-06-reminder-completeness-on-the-box.md) | live |
| [Nine claimants interrupting a parked reminder](2026-08-06-claimant-interleave.md) | live |
| [The parked clarify ride, bounded and re-measured](2026-08-08-parked-clarify-ride.md) | live |

## Ecosystem

| measurement | state |
| --- | --- |
| [Ecosystem reach, measured](2026-08-04-ecosystem-reach.md) | live |
| [Ecosystem reach with the resident model as router](2026-08-05-reach-llm-router.md) | live |

## Recall and memory

| measurement | state |
| --- | --- |
| [Note recall evaluation](2026-07-31-recall.md) | superseded |
| [Recall topic veto, what it costs and what it buys](2026-08-03-recall-topic-veto.md) | live |
| [Note recall after the e5-small swap](2026-08-04-recall-e5-small.md) | live |
| [Qwen3-1.7B is not safe as a recall-answerability verifier](2026-08-15-locative-answerability-verifier.md) | live |

## Phrasing and talk

| measurement | state |
| --- | --- |
| [Phrasing evaluation](2026-07-31-phrasing.md) | superseded |
| [Conversational phrasing eval](2026-07-31-talk.md) | superseded |
| [Talk fixture against the resident model](2026-08-05-talk-fixture-resident.md) | live |
| [Talk temperature sweep: Qwen3-1.7B, 4 temperatures times 3 runs](2026-08-05-temperature-sweep.md) | live |
| [gemma-4-E4B on the phrasing and talk fixtures](2026-08-09-e4b-phrasing.md) | live |

## World: search and Kiwix

| measurement | state |
| --- | --- |
| [Does the ZIM answer when the line is down?](2026-08-05-kiwix-offline-fallback.md) | live |
| [Does SearXNG claim a question it cannot answer?](2026-08-05-search-quality-signals.md) | live |
| [Kiwix answered the wrong question, and the fix was not a relevance gate](2026-08-09-kiwix-topic-retrieval.md) | live |

## Speech in and out

| measurement | state |
| --- | --- |
| [CrisperWhisper 2.0 in Russian, measured](2026-08-09-crisperwhisper2-russian-wer.md) | live |
| [silero-vad against the energy threshold in mavwaked](2026-08-09-silero-vad.md) | live |
| [The "Мэйвен" wake word: what it hears and what it invents](2026-08-09-wake-word.md) | live |

## Runtime and storage

| measurement | state |
| --- | --- |
| [Both ONNX routing gates execute in one process](2026-08-13-onnx-runtime-lifecycle.md) | live |
| [Where the resident model's 7.9GB of RSS goes](2026-08-03-llama-prompt-cache.md) | live |
| [Does one sqlite connection make reads queue? No](2026-08-07-store-connection-cap.md) | live |

## Whole-system runs

Each run pairs a write-up with its raw transcript. The transcript is the
evidence and is not summarised anywhere else.

| measurement | state |
| --- | --- |
| [A week of talking to Maven](2026-08-07-week-of-usage.md), [transcript](2026-08-07-week-of-usage-transcript.md) | live |
| [Two weeks of talking to Maven, as a baseline to re-run](2026-08-08-two-weeks.md), [transcript](2026-08-08-two-weeks-transcript.md) | live |
| [The same fortnight, after V-655 merged](2026-08-08-two-weeks-after-merge.md), [transcript](2026-08-08-two-weeks-after-merge-transcript.md) | live |

## Audit

| measurement | state |
| --- | --- |
| [Repository deep-audit report](2026-08-10-repo-audit.md) | live |

Its open findings live in `docs/caveats/`, one entry each with a revisit
trigger. Read the index there, not this file, for what is still broken.
