94 lines
4.3 KiB
Markdown
94 lines
4.3 KiB
Markdown
# Handoff
|
|
|
|
Master is at `5cae33a`, pushed, tree clean apart from this file. Working on master
|
|
raw by the owner's call: no branch, `--no-verify` on every commit with the reason
|
|
in the body.
|
|
|
|
## Landed this session
|
|
|
|
Twelve commits pushed. Nine were the previous session's tree, already described in
|
|
the commit log. Three are new:
|
|
|
|
- `78a9c61` `docs/spec.md`, 51 capabilities with a DoD each.
|
|
- `02e3d27` `docs/roadmap.md`, seven milestones, plus both pointer rows in `CLAUDE.md`.
|
|
- `5cae33a` honesty split into three milestones, five capabilities deferred past v1.
|
|
|
|
**Read `docs/spec.md` and `docs/roadmap.md` before anything else.** Every decision
|
|
from this session is in them. This file holds only what they do not.
|
|
|
|
## The two documents
|
|
|
|
`docs/spec.md` is the union of the 39 audited rows
|
|
(`docs/evals/2026-08-13-capability-audit.md`) and the owner's 18-item v1 list.
|
|
Twelve of his items had no audit row, so the file has 51 entries. Each entry
|
|
carries three parts. State is a reference to the living doc that owns it. DoD is
|
|
a plain list observable on the running box. Scenario names a file in
|
|
`cmd/mavend/testdata/scenarios/`.
|
|
|
|
`docs/roadmap.md` orders them into nine milestones. Honesty, then reach, then
|
|
breadth. Not ordered by code work, because none of the four broken capabilities is
|
|
a code defect.
|
|
|
|
## Decided, do not re-ask
|
|
|
|
- **v1 is a voice assistant, minimum viable.** Each DoD is written at
|
|
"voice-reachable and honest", not "feature-complete".
|
|
- **Honesty splits into three.** M1 the turn path, M2 memory he cannot correct,
|
|
M3 step-up. M1 and M2 touch different code and owe different docs. Step-up is
|
|
configuration, not honesty, and sits before M4 because M4 is what first makes
|
|
acts real.
|
|
- **Five capabilities deferred past v1** (owner's call, 2026-08-15): speaker
|
|
recognition, smart home, bluetooth control, model swap, self-update. Bluetooth
|
|
was on the v1 list and came off it. Their spec entries keep their DoD.
|
|
- **A milestone closes its own doc gaps and writes its own scenarios.** Neither
|
|
becomes a milestone of its own. Otherwise the 17 missing docs and 46 missing
|
|
scenario files collect at the end.
|
|
- **Learning means behavioral, not weights.** Stored outcomes only. No adapter, no
|
|
training set.
|
|
- **Email and calendar need the product decision before deploying.** Both are
|
|
built and neither is in `docker-compose.yml`. That is M8.
|
|
|
|
## Findings the spec pass produced
|
|
|
|
- **Recurring reminders do not exist on the spoken path.** `store.Reminder` carries
|
|
`Cron` and `ipc.CreateReminder` takes one. `grep "Cron:" --include='*.go'`
|
|
outside tests returns only `internal/ipc/client.go`, `internal/ipc/storeapi.go`
|
|
and `cmd/mavend/tick_routines.go`, and the last is routines, a separate
|
|
mechanism. Pills, the dog, the vet and the kibble are unbuilt on top of finished
|
|
storage and delivery. This is M6.
|
|
- **Seventeen capabilities have no living doc.** Memory is the worst cluster:
|
|
facts, notes and the digestion worker have no owning document at all.
|
|
- **Webhooks barely exist.** The only one in the tree is
|
|
`internal/delivery/telegramsink/intake.go`, Telegram's own inbound hook.
|
|
- **Command chaining does not exist.** The `chain` in `internal/router` is the
|
|
world chain and the source chain.
|
|
- **Desk notifications are inbound only.** `ambient:notif` reads his desktop.
|
|
There is no outbound desk reach, and which direction he meant is undecided.
|
|
- **Only 5 of 51 spec entries cite a scenario that exists.**
|
|
|
|
## Not filed, and this is the risk
|
|
|
|
Vikunja returned 503 across this session and the last, so **none of this has a
|
|
task id**. The three commits above are tagged `V-719`, which is the
|
|
reminder-cancellation task, not this work. Retag or file when Vikunja is back.
|
|
|
|
Unfiled, listed again at the end of `docs/roadmap.md`:
|
|
|
|
1. The capability audit itself, headed "unfiled".
|
|
2. Remember-versus-query misroute, two of seven audit probes.
|
|
3. The masculine reply on the wire, caught live while `CheckFeminine` passed.
|
|
4. Recurring reminders having no caller.
|
|
5. The seventeen capabilities with no living doc.
|
|
6. The 46 scenario files the spec names and does not have.
|
|
|
|
## Next
|
|
|
|
Open a session on M1, which is three gate items on the turn path and owes no new
|
|
doc. If Vikunja is up, file the six above first and give M1 a real id.
|
|
|
|
One command still outstanding from the last session, cheap and unrelated:
|
|
|
|
```sh
|
|
docker compose up -d --force-recreate mavsttd mavttsd mavpoll
|
|
```
|