Merge the QA plan reconcile (#170)

This commit was merged in pull request #170.
This commit is contained in:
2026-08-04 20:02:17 +02:00
+51 -12
View File
@@ -1,17 +1,21 @@
# QA plan: checking Maven properly
*Last verified: 2026-08-04 @ 58635f1. Living doc: correct it in place, do not append.*
*Last verified: 2026-08-04 @ a4d5155. 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.
Reconciled 2026-08-04 against the board, after the review stack merged.
42 of the 50 open Vikunja tasks are `QA:` tasks. They are verification work, not
build work. Most sat unverifiable while Maven was down for 11 days. That
blocker is gone.
The board holds 95 open tasks and 35 of them are `QA:` tasks. The ratio moved
because the build backlog grew, not because verification shrank. QA is
verification work, not build work, and most of it sat unverifiable while Maven
was down for 11 days. That blocker is gone.
The plan as written on 2026-08-01 named 40 task numbers. Ten open `QA:` tasks were
missing and two of the named ones had closed. Every open task now appears below,
the eight non-QA ones in the last two sections.
Every open `QA:` task appears below. Distrust the count in this header first. It
is right on the day it is written and wrong a week later.
Fourteen ids this plan used to name closed on 2026-08-04 and are gone from it. If
you cannot find one, check whether it closed before assuming the plan dropped it.
This plan orders them by what unblocks what. Do sessions 1 and 2 first. Almost everything
downstream assumes the voice loop works, and nobody has confirmed that since
@@ -252,10 +256,12 @@ check that the failure floor catches a mid-session model death.
These need real use rather than a command, grouped by what one sitting covers.
**Morning and delivery** (**280**, **281**, **128**, **282**, **283**, **285**):
**Morning and delivery** (**280**, **281**, **128**, **283**, **285**):
open `/morning`, walk the seven required behaviours, then check the four
interruption outcomes and the digest gap. **282** needs the `desk_active` script
enabled on the desk PC first, which is **15** and needs you at that machine.
interruption outcomes and the digest gap. The presence half of this sitting
cannot run. `desk-active.sh` is on workpc, but no systemd user unit enables it,
so no `desk_active` fact has ever been written. That is **15** and needs you at
that machine.
**283** is the event intake envelope every reach shares, so a delivery check
exercises it whether you name it or not. **285** is not verification: the bridge
framework works and the remaining ask is more adapters. Decide which reach comes
@@ -381,6 +387,36 @@ With Praxis stopped the card reads `praxis — unreachable` while Nexus and Hexi
keep rendering. On `docker start` the card returns to `nothing needs attention.`
with no mavend restart. Independent degradation and recovery both hold.
**Workstation offload** (**492**): never run, and added to this plan on
2026-08-04. It covers **485**, which shipped in PR #97. Three states, one rule:
silent when the workstation would only do the job better, named when the resident
model cannot do the job at all.
1. **Card free.** mavgpud 200, llama-server holding gemma-4-12b. A routing turn
and a phrased reply both complete through the workstation. Confirm that from
the mavgpud request log, not from the answer sounding good. Nothing in the
answer says where it was phrased.
2. **Card held.** Start a training run so mavgpud yields and answers 503. The same
turns complete on Qwen3-1.7B with no mention of the fallback. Then kill the
card mid-utterance, with a request in flight. That is the case no unit test
reaches and the one most likely to hang.
3. **Machine asleep.** Suspend workpc. It must be indistinguishable from held.
Bring it back and confirm the prober re-admits it inside one 15s interval, with
no mavend restart.
Two things are likely wrong. A remote that accepts the connection and then never
answers is worse than a 503. `timeout` is 90s, so measure what a turn waits. And
two models mean two prompt renderings: `check_prompt_parity.py` guards Go against
the relabelling prompt, not gemma against Qwen, so confirm `{"response","mood"}`
parses from both.
**workpc is running training as of 2026-08-04**, so the held state is available
today and the free state is not. Run step 2 first, out of order.
Write down one number at the end. Read the mavgpud journal and record the
fraction of a working week the card is free. That is what **488** left open, and
it decides whether the offload is worth carrying.
**Operations** (**249**, **250**): both ran 02-08-2026. The code is correct and
neither lever can be pulled on this box. See **477**.
@@ -549,7 +585,7 @@ Not QA. These are blocked on a decision or a credential only you have.
| # | what |
|---|---|
| 16 | Create the Kuma API key. `-kuma-key uk5_mavpoll-key` in `docker-compose.yml` is still the placeholder. |
| 15 | Deploy `desk_active` on the desk PC. Blocks **282**. |
| 15 | Enable the `desk_active` units on workpc. The script is there; the timer is `not-found`, so the strongest presence signal writes nothing. Blocks the presence half of session 3. |
| 122 | Finish the CPT run for Qwen3-1.7B. The persona fix depends on it. |
| 355 | Deploy the Hexis auth change. Was blocked on Maven being under construction, which it no longer is. The client half is vendored and wired. |
| 357 | Decide whether entity-existence validation is the permanent target guard or whether blessing lands in Nexus. |
@@ -583,8 +619,11 @@ where they land, so the board stops reading as 50 things Maven owes.
31ms. The router buys about 4 points of accuracy for four orders of magnitude
of latency. Whether that still earns its place is now an open question.
4. Housekeeping. Cheap, and it makes the remaining backlog honest.
5. Session 3, split whichever way suits you. All five sittings ran on
5. Session 3, split whichever way suits you. Five of its six sittings ran on
02-08-2026. Read the per-sitting notes before repeating any of them.
6. The workstation offload sitting (**492**), which has never run. It is last
because it is newest, not because it matters least. It is the one sitting whose
subject changes state on its own.
The next thing to fix is not in this plan. Four defects say the same sentence:
a capability is built and no utterance reaches it. **466** (a clarify is global),