Records the readings of M7a to M7f (b9b061a, 6ac711d, 082b8dc, 31760f9, 1e42f76, a54eb7c) and the M6b design-system fix pass (3a1bd14): S-11/S-12 captions, titles and states; navigation wiring and result snackbars (§13.2); new template day default (AC-9.8); manual update check (AC-16.6); FieldError field names and settlement editing (AC-11.6); quickRowCategories; two-line category labels; long day ranges (§9.8); amounts open with two decimals (§9.6); string keys (strings.csv 578 rows); "Synka nu" online only (§9.9). §11 marks M7a-M7f and M6b landed, M8 and M7g started; §11.3 lists contract requests for a later contract pass (M12e). Docs only. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TQd3pEP9UeN2uifbHknQ7B
Start prompts
One ready-to-paste start prompt per plan (PLAN-<id>.md at the repository root), plus ORCHESTRATOR-prompt.md. Before pasting, the orchestrator fills {{NEXT_DECISION}}, {{SPEC_VERSION}}, {{SCHEMA_VERSION}} (disjoint ranges for agents that run in parallel, CLAUDE.md › Numbering) and {{ORCHESTRATOR_NOTES}} (answers to the plan's open points, phone assignment, overrides). U2.md also takes {{OWNER_PICK_AND_COMMENTS}}. U1 and U2 run in the owner's own Claude session in ~/orca/workspaces/kvitt/UX-sprint on branch UX-sprint. The numbers are for proposed entries in agents' reports: implementation agents never edit SPEC.md or docs/decisions.md; a docs agent records what the orchestrator accepts (CLAUDE.md › Orchestration).
Dependencies follow SPEC §11.1 and §11.2 (v0.11). Status as of 2026-10-18: M0 done, M1 landed (c6df2ab), M2c-dev landed (c885aba), M2a landed (fdf2093), M2b landed (fad6fc9), M3 landed (503cee5), M5 landed (c28c52b), M4 landed (bd6f10a), M9 landed (ab298ab); SPEC v0.7 landed (e8ee518); M12a landed (6b60ef7); SPEC v0.8 landed (7fb9f6f); M12c landed (e499107); M12b landed (2e2ebe7); U1 and U2 landed (16c4d01, owner approved); SPEC v0.9 landed (45eecd1); M12d landed (bdba9d3); M6 landed (3080804); SPEC v0.10 landed (7bd0aa1); M7a landed (b9b061a), M7e (6ac711d), M7d (082b8dc), M7b (31760f9), M7c (1e42f76), M7f (a54eb7c); M6b :core:design fixes landed (3a1bd14); M8 and M7g (feature cleanups, no prompt file; brief by the orchestrator) started 2026-10-18 in parallel; SPEC v0.11 records the M7 and M6b outcomes (D-069 to D-080). M8 holds D-085 to D-089, renumbered to D-081 onwards on landing. The plans' open points are resolved in SPEC v0.3 and recorded in each plan's §4; v0.4 records the M2a and M2b decisions (D-005 to D-014); v0.5 the M3 and M5 decisions (D-026 to D-034, D-040 to D-043); v0.6 the M4 decisions (D-035 to D-039); v0.7 the M9 decisions (D-044 to D-046); v0.8 the owner's UX-session decisions (D-047 to D-054) and the milestone group M12; v0.9 D-055 to D-059 and M12d; v0.10 D-060 to D-068; v0.11 D-069 to D-080.
Dependency order and waves
Plans in the same wave can run in parallel (they own disjoint paths, SPEC §14.7). Android agents share one Gradle build at a time (tools/gradle-serial.sh) and one agent on the phone at a time.
| Wave | Plan | Prompt | Depends on | Parallel with |
|---|---|---|---|---|
| 0 | M1 Contracts and vectors | M1.md |
M0 | done (c6df2ab) |
| 0 | U1 UX directions | U1.md |
M0 | done (16c4d01) |
| 1 | M2a Server skeleton and kvitt-domain |
M2a.md |
M1 | done (fdf2093) |
| 1 | M2b Android skeleton and :domain |
M2b.md |
M1 | done (fad6fc9); installDebug on the phone outstanding |
| 1 | M2c-dev Infra for development | M2c-dev.md |
M0 (its health check needs M2a's image) | done (c885aba) |
| 1 | U2 UX design spec | U2.md |
U1 and the owner's pick | done (16c4d01) |
| 2 | M3 Server core API | M3.md |
M2a | done (503cee5) |
| 2 | M4 Server sync, audit, push, scheduler | M4.md |
M2a; lands after M3 (D-015) | done (bd6f10a) |
| 2 | M5 Android data layer | M5.md |
M1, M2b | done (c28c52b) |
| 2 | M12a Category contract v2: contracts | M12a.md |
M1, SPEC v0.8 | done (6b60ef7) |
| 2 | M12b Category contract v2: server | M12b.md |
M12a (M3, M4, M9 landed) | done (2e2ebe7) |
| 2 | M12c Category contract v2: Android | M12c.md |
M12a (M2b, M5 landed) | done (e499107) |
| 2 | M12d UI contract additions (UX-9) | M12d.md |
M12c, SPEC v0.9 | done (bdba9d3) |
| 2 | M6 Design system | M6.md |
U2 approved, M2b, M12c, the §9.7 colour spec change (v0.9) | done (3080804) |
| 3 | M7a Feature onboarding | M7a.md |
M6, M12d | done (b9b061a) |
| 3 | M7b Feature home and account | M7b.md |
M6, M12d | done (31760f9) |
| 3 | M7c Feature expense | M7c.md |
M6, M12c, M12d | done (1e42f76) |
| 3 | M7d Feature settle | M7d.md |
M6, M12d | done (082b8dc) |
| 3 | M7e Feature analytics | M7e.md |
M6, M12d | done (6ac711d) |
| 3 | M7f Feature settings | M7f.md |
M6, M12d | done (a54eb7c) |
| 3 | M9 Splitwise importer | M9.md |
M2a, M4 | done (ab298ab) |
| 3 | M6b Design-system fixes after M7 | none (orchestrator brief) | M7a to M7f | done (3a1bd14) |
| 4 | M7g Feature cleanups | none (orchestrator brief) | M7a to M7f, M6b | started 2026-10-18; M8 |
| 4 | M8 App integration | M8.md |
M3, M4, M5, M7a to M7f, M2c-dev | started 2026-10-18 (phone agent); M7g |
| 5 | M2c-pi Infra on the Pi | M2c-pi.md |
M2c-dev, M8; OQ-3 answered | none needed |
| 6 | M10 First release | M10.md |
M2c-pi, M3, M4, M8 | none |
| 7 | M11 Import history | M11.md |
M9, M10 | none |
Constraints the orchestrator must keep in mind
- M3 and M4 (D-015): M2a provides
next_occurrence_date, theAuditWriter/PushQueuetraits with no-op implementations andtasks::start; M3 writes the recurring generation function and calls the traits; M4 replaces the implementations, its scheduler calls M3's function, and M4 lands after M3. - M2a and M2b create shell files and modules in later milestones' paths (D-004); ownership passes on when they land.
- M7a to M7f (landed) follow the feature convention of SPEC §6.2 (D-017) and take the ledger rows and expense editor fields from M6's
:core:design(D-019); their readings are D-069 to D-074 and D-080, the shared fixes went into M6b (3a1bd14, D-075 to D-079). Their contract requests are on the M12e list in SPEC §11.3. - M8 wires the navigation of SPEC §13.2 (D-071: top-level screens draw their own bar) and deletes the debug fakes module (
72f21b2); release has bound:datasincee6ad858. - M6 landed
3080804(D-063 to D-066): charts onCanvas, Expressive fallbacks against material3 1.4.0, formatting tables in code, one golden per sheet × theme × language (+200 %), which M7a to M7f follow. Its M8 contract requests are in SPEC §11.3. - M12 (D-054): done; the importer test
category_table_matches_the_specis green again since M12b (2e2ebe7). M12d (D-059) landedbdba9d3(D-060 to D-062); M7a to M7f run on top of both. - Phone: M2b (one
installDebug), M5 (only if instrumented tests), M8 and M10 use the phone; only one at a time, named in the notes. M8 is the phone agent now; M7g does not use the phone. - Outside the repository: M2c-dev (D-022, done), M2c-pi (the Kvitt Pi, the Home Assistant Pi, Gitea, Drive: allowances requested at the start of that sprint, D-023), M8 (dev server on the Mac), M10 and M11 (production) need the owner's allowance in the notes.