docs(plans): slice 1 addendum B; lead decision 52

Real Vikunja scope map, a read-only sync bot, a two-request poll that
sees column moves and deletions, and task_snapshots changes.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
2026-10-04 18:42:31 -05:00
co-authored by Claude Opus 5.5
parent 5175ca10f2
commit b6631e6b4f
3 changed files with 481 additions and 0 deletions
+21
View File
@@ -848,3 +848,24 @@ which stay with him. Each item names who decided it and what happened.
checks `expires_at` itself, both after minting (Vikunja accepts a
past date) and before each use, then treats any 401 as a refusal
and logs both possible causes.
52. **Sage's rulings on slice 1 addendum B (2026-10-04).** Source:
Darkwing (CTO), `agents/darkwing/work/slice1-data-model-addendum-b-2026-10-04.md`
(sha256 14e747f5…). Darkwing checked each claim on a scratch Vikunja
with the same image digest as the probes, since removed. Where B and
addendum A disagree, B wins.
- B1: yes. A read-only `bot-<business>-sync`, shared at permission 0,
does every poll, reconcile and compare-read. Role tokens keep their
write verbs plus `tasks` read_one. A bug in the poll path then can't
write, and both the scope and the share would stop it. The install
runbook gains one bot and one token.
- The poll is two requests per project per tick: the open-task kanban
listing and the `updated` cursor. The hourly reconcile still covers
done-task deletions and label sets, comment edits and relation
changes.
- B2: reopening a task isn't an agent action in slice 1. A person
reopens it, and the stack records that as an external change.
- B3: section 5 becomes schema v3 in `slice1-proto/` when the brief is
written.
- Section 7's unverified points join the brief's probe matrix as
preconditions. The first is which labels `GET /labels` returns to a
bot. Until that's settled, the business file lists label ids.