Files
Maven/docs/evals/2026-08-08-destination-fixture.md
T
claude e69f1bd0cf Fix the floor corpus and re-measure the destination head (V-661)
The first 120 floor rows carried one sentence shape, because the generator
varies a topic and ambiguity is not a topic. Rotating six shapes takes the
floor 3/7 to 6/7 and the destination mean 75.8% to 80.8%.

Calendar stays 3/6 at every seed. The possessive agenda rules claim those
cases at stage 0 and name nothing, so no label reaches the head.

Also corrects the floor-case count in three files: five of the seven are
homelab, not six.
2026-08-08 20:10:14 +04:00

4.1 KiB

The first destination number

Measured 2026-08-08 on the classifier cascade with the ONNX multilingual embedder, the configuration homesrv runs. make t PKG=./internal/router/eval/ RUN=TestONNXBaseline V=1. Covers V-659, the follow-up V-655 named.

What was measured

V-655 split a routing decision in two. The cascade sorts an utterance into one of seven intents, and Decision.Source then says where the answer lives. The first half had a fixture. The second half arrived with none, so twelve destinations shipped with no accuracy number.

want_source is now a field on eval.Case. It is a pointer, because the destination has three states and a bare string has two. Absent is every intent but query, which never reaches queryWalk. Present and empty is the SourceUnknown contract: name nothing and let the daemon walk the chain. Present and named is a destination the route must produce.

Thirty-three of the ninety-six cases carry one. A destination miss does not fail the case, so Accuracy and IntentAccuracy mean what they meant. SourceAccuracy is a second number over the labelled cases only.

Result

Intent is 73/96 (76.0%), against 69/91 (75.8%) before. Four of the five new cases pass and no existing case moved.

Destination is 12/33 (36.4%), and the split is the whole finding.

destination scored note
world 5/5 WorldQueryGrammars names it at stage 0
the SourceUnknown floor 5/7 the two misses lost the intent first
calendar 2/6 calendar-query names it, the possessive agenda rules do not
recall 0/15 nothing anywhere names it

Recall is the number to move. Fifteen cases ask about his own words and his own facts. The route lands query on eleven of them and the destination comes back empty every time. Those turns are answered today, because the daemon walks the chain in order and the three recall passes are early in it. What is missing is a decider that says so, and that is the fourth head on V-546.

Two cases labelled the floor lost their intent before a destination was possible. A clarify names nothing, so it would satisfy an empty label for free. Score requires the route to land the case's intent before it credits a destination hit, or the floor label would score itself.

Seven cases assert the floor, and five of them cluster

The five are homelab operations. SourceRecall, SourceNetwork and SourceAttention overlap on every question about the box, because mavpoll writes its netdata and uptime-kuma observations into the fact store recall reads. "почему сервер тормозит" is answerable from all three. Naming one takes the other two off the turn.

That is a finding about the enum rather than a gap in the labelling. The floor is the right answer there and the fixture now says so out loud.

All seven were written by an agent and confirmed by the owner on 08-08-2026.

A drift the labelling found

WorldQueryGrammars went into buildRouter with V-655 and never into baselineGrammars, the fixture's mirror of it. So the fixture was scoring a grammar set the daemon does not run. The comment above that function forbids exactly that. Adding it moved the destination number from 9/33 to 12/33 and moved nothing else.

The three cases it recovered are что такое TCP?, сколько будет 17 на 23? and кто такой Линус Торвальдс?. All three already routed query through NarrativeQueryGrammars. So the drift was invisible to every number this fixture reported, until the destination had one of its own.

What this does not measure

The model arm. This is the classifier cascade, which names a destination only where a stage 0 rule filled one in. The resident model has no destination in its router prompt yet, so 36.4% is a floor and not a comparison.

Two pairs of cases are the same utterance. ru-query-020 and ru-query-024 are both "что дальше?", and ru-query-021 and ru-query-025 are both "расскажи про битву при Ватерлоо". They differ in tags and note only, so both pairs are counted twice here and in every earlier number this fixture reported.