qa reads /trace for the query chain again (V-564)
This commit is contained in:
@@ -261,6 +261,22 @@ of the house. A demonstrative ("отметь это как сделанное")
|
|||||||
`h.surfacedItems` only when exactly one item was spoken. Otherwise the turn goes back to
|
`h.surfacedItems` only when exactly one item was spoken. Otherwise the turn goes back to
|
||||||
the cascade rather than transitioning the wrong item.
|
the cascade rather than transitioning the wrong item.
|
||||||
|
|
||||||
|
**Who claimed a turn is now recorded, and so is who did not** (V-564, umbrella
|
||||||
|
V-558). Arbitration between the claimants on the utterance stream is order,
|
||||||
|
hardcoded in the pre-route resolver ladder, in `buildRouter` and in
|
||||||
|
`querySources`. `internal/decision` records one `Record` per turn: every
|
||||||
|
claimant, what it would have made the turn, the score it reported, and whether
|
||||||
|
it won, declined, lost on score, was thinned by a gate or was **never asked**.
|
||||||
|
The record rides the context, the same seam `querysource.go` uses, so a claim
|
||||||
|
site cannot change a route and a context with no record costs nothing. It is
|
||||||
|
installed in `runTurn`, so the mic, telegram and the web all leave the same
|
||||||
|
trail. Storage is a 25-turn in-memory ring on the handler (`decision.Ring`),
|
||||||
|
read over `ipc.TurnDecisions` and rendered as the second table on `/trace`.
|
||||||
|
Nothing persists: a turn record is read minutes later or never, and his words do
|
||||||
|
not belong in a table that outlives the diagnosis. Adding a rung to the ladder
|
||||||
|
in `runTurn` means adding its name to `preRouteLadder` in
|
||||||
|
`cmd/mavend/decisiontrace.go`, or that rung is silently missing from the record.
|
||||||
|
|
||||||
## LLM output contract
|
## LLM output contract
|
||||||
|
|
||||||
All phrasing paths emit `{"response":"...","mood":"..."}` (parsed in `replier_llm.go` and
|
All phrasing paths emit `{"response":"...","mood":"..."}` (parsed in `replier_llm.go` and
|
||||||
|
|||||||
+9
-5
@@ -423,11 +423,15 @@ something only a ZIM answers, with the search block on. Live search leads and th
|
|||||||
ZIMs are the fallback since 02-08-2026. **286**'s remaining half is doc and
|
ZIMs are the fallback since 02-08-2026. **286**'s remaining half is doc and
|
||||||
git ingestion, which is build work, not a check.
|
git ingestion, which is build work, not a check.
|
||||||
|
|
||||||
**Do not read `/trace` for this.** `/trace` is the nudge-rule trace: rule,
|
**Read `/trace` for this.** It carries two tables since 06-08-2026 (V-564). The
|
||||||
severity, predicate, gate, selected. No query-source field exists anywhere in the
|
nudge-rule trace it always had, and below it the **turn decisions**: one
|
||||||
codebase. The only evidence of which query source claimed a turn is the
|
collapsible record per utterance. Each names every claimant, what it would have
|
||||||
`voice: search:` and `voice: kiwix:` lines in `docker compose logs mavend`
|
made the turn, the score it reported, and whether it won, declined, lost or was
|
||||||
(`actions_query.go:589` and `:660`).
|
**never asked**. That last one answers "did Kiwix pass, or was it never
|
||||||
|
reached". The log lines cannot tell you that. The ring holds the last 25 turns
|
||||||
|
in daemon memory and is empty after a restart, so read it in the same sitting.
|
||||||
|
`/chat` still shows the claiming source as a badge, and the `voice: query
|
||||||
|
claimed by source` line is still in `docker compose logs mavend`.
|
||||||
|
|
||||||
Run 02-08-2026, 20 turns. **Search leads and the personal boundary holds.** Every
|
Run 02-08-2026, 20 turns. **Search leads and the personal boundary holds.** Every
|
||||||
world question that reached the boundary was claimed by search. All three
|
world question that reached the boundary was claimed by search. All three
|
||||||
|
|||||||
Reference in New Issue
Block a user