Files
kvitt/prompts
jacobh2 400eac9d60 SPEC v0.17: D-103 to D-106 Pi bundle, D-107 S-19 option rows, D-108 instant navigation; HANDOFF, prompts
D-103 the infra/pi/ bundle (compose.yaml, .env.example, Caddyfile, install,
deploy, bootstrap, backup-now, install-apk; APK path via infra/pi/out/apk/;
new .env keys; gate docker compose -f infra/pi/compose.yaml config).
D-104 image names gitea.lan/jacobh2/kvitt-*, the Gitea workflow, Mac
fallback, supercronic, pinned versions. D-105 backup uid 10001 and
rclone.conf ownership (revises D-023 for that file). D-106 cert-sync tar
stream and refusals, backup confirm-then-delete. D-107 S-19 option rows.
D-108 instant navigation (design-spec §2.11). Chips cleanup and the
Dockerfile CARGO_BUILD_JOBS argument recorded without an id.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TQd3pEP9UeN2uifbHknQ7B
2026-10-18 21:56:55 +02:00
..

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.17). 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); SPEC v0.11 landed (d504004, the M7 and M6b outcomes, D-069 to D-080); M7g feature cleanups landed (34a2590, no prompt file; brief by the orchestrator); M8 landed (369e516, 00a14a3), its on-phone test still to run; SPEC v0.12 records the M8 outcomes (D-081 to D-085); the M12e contract pass (no prompt file; brief by the orchestrator) landed (1470a2f, 90505a8); SPEC v0.13 records its outcomes (D-086 to D-095, server schema 3) and landed (03b7184); the Vico removal (2b4e21c), the FCM fid target (c694f78) and the Pi image arm64 check (1e404cc) landed; SPEC v0.14 records them (D-096); the M8 phone test ran on 2026-10-18 and M8b UI fixes landed (f0575d3, D-097) with the fid follow-up (09f474f); SPEC v0.15 records them and D-100 (M2c-pi as an owner-run bundle) and D-101 (keystore at the repository root). 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; v0.12 D-081 to D-085; v0.13 D-086 to D-095; v0.14 D-096; v0.15 D-097, D-100, D-101; after v0.15 M8c (b481fab, 64f5706, 7c453d8; goldens in three variants at 1x, the S-22 licences row removed), the R8 release build (57f984f) and M8d (3c68594, S-7 editor rows) landed; SPEC v0.16 records them (D-098, D-099, D-102) and landed (3a3720b); the M2c-pi bundle (5e027df, D-103 to D-106), M8e (15397e4, D-107), the Dockerfile CARGO_BUILD_JOBS argument (965bb5d), M8f (ed1b130, D-108, instant navigation) and the chips cleanup (4755fe0) landed; SPEC v0.17 records them (D-103 to D-108); what remains of M2c-pi is the owner running the bundle on the Kvitt Pi, then M10; v0.16 D-098, D-099, D-102; v0.17 D-103 to D-108.

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 done (34a2590)
4 M8 App integration M8.md M3, M4, M5, M7a to M7f, M2c-dev done (369e516, 00a14a3); on-phone test run 2026-10-18; M8b fixes f0575d3; M8c b481fab, 64f5706, 7c453d8; M8d 3c68594; M8e 15397e4; M8f ed1b130; chips cleanup 4755fe0 (no prompt files; briefs by the orchestrator)
4 M12e Contract pass none (orchestrator brief) M8, SPEC v0.12 (§11.3 list) done (1470a2f, 90505a8)
5 M2c-pi Infra on the Pi (bundle infra/pi/, D-100) M2c-pi.md M2c-dev, M8; runs last, after the app is proven bundle done (5e027df, D-103 to D-106); the owner's run on the Pi remains
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, the AuditWriter/PushQueue traits with no-op implementations and tasks::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 (landed) wired the navigation of SPEC §13.2 (D-071) and deleted the debug fakes module; both variants bind :data (D-081). Its outcomes are D-081 to D-085; its contract requests are on the M12e list in SPEC §11.3.
  • M6 landed 3080804 (D-063 to D-066): charts on Canvas, 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_spec is green again since M12b (2e2ebe7). M12d (D-059) landed bdba9d3 (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's on-phone test was run by the orchestrator with the owner on 2026-10-18; M12e did not use the phone; its APK needs a schema-3 server (SPEC §14.8), and the dev server already runs it.
  • Outside the repository: M2c-dev (D-022, done), M2c-pi needs none: it writes the infra/pi/ bundle and the owner runs it on the Pi (D-100, revises D-023); M8 (dev server on the Mac), M10 and M11 (production) need the owner's allowance in the notes.