From 554181ccbdf52188f5df95a05a48c4e33c9128d5 Mon Sep 17 00:00:00 2001 From: claude Date: Tue, 4 Aug 2026 06:08:19 +0400 Subject: [PATCH] docs: correct four QA steps that described an older daemon (V-480) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Found running QA 253 on 02-08. Every one of the four failed the same way: the daemon is right and the step is stale. 253/3 expected mavend to boot with the capture methods unknown when there is no media block. Validate refuses to start instead (config.go:1651), which is the better behaviour — a capture config with nowhere to put the audio is a mistake he should hear at boot. 253/10 expected no :transcript note by default. writeNotes writes one whenever the summary is empty, ignoring save_transcript, so a dead llama-server does not lose the meeting. The step was therefore false in exactly the degradation scenario 253/16 creates. It now says "with a summary present". 255/5 expected "speaker: enrolment on, recognition BLOCKED". That line no longer ships. Recognizes() was written as the gate, documented as one, and never called; calling it turned enabled-with-no-model from a half-working capability into a refusal, and the three methods are now absent. docs/plans/10-speaker-recognition.md described the old wiring and is corrected here too. 252/3 quoted "vision: stored image ". vision.go:199 emits "vision: stored ". The steps themselves live in the Vikunja tasks and were rewritten there. docs/qa.md records what changed and why, so the next reader does not re-derive it from a diff. The gap that made the steps unrunnable is V-514, not this: no shipped client can start a recording, so 253 steps 7 to 16 stay blocked. Co-Authored-By: Claude Opus 5 --- docs/plans/10-speaker-recognition.md | 11 ++++++++--- docs/qa.md | 21 ++++++++++++++++++++- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/docs/plans/10-speaker-recognition.md b/docs/plans/10-speaker-recognition.md index 63273f9..006db41 100644 --- a/docs/plans/10-speaker-recognition.md +++ b/docs/plans/10-speaker-recognition.md @@ -103,9 +103,14 @@ query path. ``` `Recognizes()` requires both `enabled` and a `model_path`, so a half-filled block reads as off -rather than as a capability that fails every turn. With `enabled` and no model the daemon still -attaches the three methods — profiles can be created, listed and deleted — and logs that -recognition is blocked. +rather than as a capability that fails every turn. + +That gate was written, documented, and then never called. It is called now, and the behaviour it +describes changed with it. `enabled` with no `model_path` used to attach all three methods and log +that enrolment was on. Today `newSpeakerWiring` returns nil, so the methods are absent, and the log +says why: there is nothing to embed with, so enrol, list and forget would all be no-ops. That is +the one config shape where the operator most needs to be told otherwise, and it was the shape that +lied. ## Still open diff --git a/docs/qa.md b/docs/qa.md index ec5d4fe..500e9b6 100644 --- a/docs/qa.md +++ b/docs/qa.md @@ -1,6 +1,6 @@ # QA plan: checking Maven properly -*Last verified: 2026-08-02 @ 20aa2d5. Living doc: correct it in place, do not append.* +*Last verified: 2026-08-04 @ 58635f1. Living doc: correct it in place, do not append.* Written 2026-08-01, after the 35-PR stack landed and the box came back up. Refreshed 2026-08-02 against the live list, after PRs #85-#90. @@ -471,6 +471,25 @@ at any address (**478**). `allow_private` does work, measured both ways. `CaptureStart`. There is no `cmd/mavheard`, no mavweb route, and `mavenclient` never calls it (**480**). Two of its QA steps are also stale. +**Four stale QA steps were rewritten on 04-08-2026** under **480**, against the +code rather than against what the plans said. All four failed the same way: the +daemon was right and the step described an older daemon. + +| Step | Said | Says now | +|---|---|---| +| 253/3 | boots with the methods unknown | refuses to boot, `config.go:1651` | +| 253/10 | no `:transcript` note by default | true only with a summary present | +| 255/5 | `speaker: enrolment on, recognition BLOCKED` | that line is gone, the capability stays off | +| 252/3 | `vision: stored image ` | `vision: stored `, `vision.go:199` | + +Two of them are worth reading past the correction. 253/10 was false in exactly +the scenario 253/16 creates, because `writeNotes` saves the transcript whenever +the summary is empty so a dead llama-server does not lose the meeting. And 255/5 +changed because `Recognizes()` was written as the gate, documented as one, and +never called — calling it turned `enabled` with no model from a half-working +capability into a refusal. Enrolling into a store nothing can match against is +not a working half. + **257, netscan.** Steps 2, 3 and 9 pass at unit level. Step 1 fails. Steps 4 to 8 need the block enabled. Step 10 is Bluetooth and stays skipped.