PLAN-<id>.md for U1, U2, M1, M2a, M2b, M2c-dev, M2c-pi, M3, M4, M5, M6, M7a-M7f, M8, M9, M10, M11, each with the eleven fixed sections, and a start prompt per plan in prompts/ plus prompts/README.md (dependency order and parallel waves). SPEC v0.2: owner answers D-001 (development-first, M2c split into M2c-dev and M2c-pi, Gitea registry), D-002 (local backups deleted once on Drive), D-003 (Splitwise CSV format, English and Swedish variants, category mapping), OQ-1, OQ-2, OQ-4 answered; M1's readings of ambiguous contract points stated explicitly in §14.3 to §14.5. HANDOFF §2 lists the plans. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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 on branch agent-ux.
Dependencies follow SPEC §11.1 and §11.2 (v0.2, D-001). Status as of 2026-10-17: M0 done, M1 landed (c6df2ab).
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 | everything in waves 0 to 2 (owner's session) |
| 1 | M2a Server skeleton and kvitt-domain |
M2a.md |
M1 | M2b, M2c-dev, U1/U2 |
| 1 | M2b Android skeleton and :domain |
M2b.md |
M1 | M2a, M2c-dev, U1/U2 |
| 1 | M2c-dev Infra for development | M2c-dev.md |
M0 (its health check needs M2a's image) | M2a, M2b, U1/U2 |
| 1 | U2 UX design spec | U2.md |
U1 and the owner's pick | M2a, M2b, M2c-dev, wave 2 |
| 2 | M3 Server core API | M3.md |
M2a | M4 (see coupling below), M5, M6 |
| 2 | M4 Server sync, audit, push, scheduler | M4.md |
M2a | M3, M5, M6 |
| 2 | M5 Android data layer | M5.md |
M1, M2b | M3, M4, M6 |
| 2 | M6 Design system | M6.md |
U2 approved, M2b, the §9.7 colour spec change | M3, M4, M5 |
| 3 | M7a Feature onboarding | M7a.md |
M6 | M7b to M7f, M9 |
| 3 | M7b Feature home and account | M7b.md |
M6 | M7a, M7c to M7f, M9 |
| 3 | M7c Feature expense | M7c.md |
M6 | M7a, M7b, M7d to M7f, M9 |
| 3 | M7d Feature settle | M7d.md |
M6 | M7a to M7c, M7e, M7f, M9 |
| 3 | M7e Feature analytics | M7e.md |
M6 | M7a to M7d, M7f, M9 |
| 3 | M7f Feature settings | M7f.md |
M6 | M7a to M7e, M9 |
| 3 | M9 Splitwise importer | M9.md |
M2a, M4 | M5, M6, M7a to M7f |
| 4 | M8 App integration | M8.md |
M3, M4, M5, M7a to M7f, M2c-dev | M9 if still running |
| 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 are coupled through recurring generation (E-28 generates a due period; §9.5 logic, audit writer and push queue are M4's). Decide the interface before starting both (PLAN-M3 open point a, PLAN-M4 open point b), or land M4's generation function first.
- M2a and M2b need the stub-file decisions in their notes before starting (PLAN-M2a open points a to f, PLAN-M2b open points a to g): they create files in directories §14.7 gives to later milestones.
- M7a to M7f need M2b's feature convention (Hilt or not, navigation callbacks) and M6's shared components (ledger rows, expense form fields) settled first.
- Phone: M2b (one
installDebug), M5 (only if instrumented tests), M8 and M10 use the phone; only one at a time, named in the notes. - Outside the repository: M2c-dev (gcloud, Firebase, secrets in the main checkout), M2c-pi (SSH to the Pi, Gitea, Drive), M8 (dev server on the Mac), M10 and M11 (production) need the owner's allowance in the notes.