f4dc10c7ae
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
50 lines
7.2 KiB
Markdown
50 lines
7.2 KiB
Markdown
# Handoff: state of the work
|
||
|
||
Living document, rewritten in place (never a second copy). A new orchestrator session reads CLAUDE.md, then this.
|
||
|
||
## 1. Where things stand
|
||
- `main` at `3a1bd14` (M6b design-system fixes after the M7 wave) plus the SPEC v0.11 docs commit from `agent-spec11` once it lands. History: `5e1be38` plans and prompts, `c885aba` M2c-dev, `76ee957` SPEC v0.3, `fad6fc9` M2b, `fdf2093` M2a, `040bf41` SPEC v0.4, `503cee5` M3, `c28c52b` M5, `982451d` SPEC v0.5, `bd6f10a` M4, `23a2f1e` SPEC v0.6, `ab298ab` M9, `e8ee518` SPEC v0.7, `6b60ef7` M12a, `7fb9f6f` SPEC v0.8, `e499107` M12c, `2e2ebe7` M12b, `d452fa6` UX Kalas categories and tokens, `16c4d01` UX sprint U2, `45eecd1` SPEC v0.9, `bdba9d3` M12d, `3080804` M6, `7bd0aa1` SPEC v0.10, `72f21b2` app debug fakes bindings (temporary), `e6ad858` app release wiring of `:data` (pre-M8), `b9b061a` M7a, `6ac711d` M7e, `082b8dc` M7d, `31760f9` M7b, `1e42f76` M7c, `a54eb7c` M7f, `3a1bd14` M6b.
|
||
- Landed: M0 spec, M1 contracts and vectors (`c6df2ab`), M2a (`fdf2093`), M2b (`fad6fc9`), M2c-dev (`c885aba`), M3 (`503cee5`), M4 (`bd6f10a`), M5 (`c28c52b`), M9 (`ab298ab`), M12a (`6b60ef7`), M12b (`2e2ebe7`), M12c (`e499107`), U1 and U2 (`16c4d01`, owner approved), SPEC v0.9 (`45eecd1`), M12d (`bdba9d3`), M6 (`3080804`), SPEC v0.10 (`7bd0aa1`, D-060 to D-068), M7a onboarding (`b9b061a`), M7e analytics (`6ac711d`), M7d settle (`082b8dc`), M7b home and account (`31760f9`), M7c expense (`1e42f76`), M7f settings (`a54eb7c`), M6b `:core:design` fixes (`3a1bd14`).
|
||
- With `agent-spec11`: SPEC v0.11, D-069 to D-080 (owner approved in advance). D-069 S-11 caption, legend order, loading = no successful sync yet; D-070 S-12 titles, no error or loading state; D-071 top-level screens draw their own `KvittNavigationBar`, feature argument-key constants, result snackbars on the screen returned to (archive with undo); D-072 new template day = today; D-073 "Du har den senaste versionen" when `UpdateState` stays `None`; D-074 `FieldError.field` names, edited settlement keeps its rows, "Föreslå igen"; D-075 `quickRowCategories` in `:core:design`; D-076 two-line category labels with "…" for long custom names; D-077 long day ranges with the year; D-078 amounts open with two decimals; D-079 new string keys, `strings.csv` 578 rows; D-080 "Synka nu" online only, discard dialogs without body. §11.3 has the list of contract requests for a later contract pass (M12e).
|
||
- Both gates exist: Android `tools/gradle-serial.sh check` (from `android/`), server `cargo fmt --check && cargo clippy --all-targets -- -D warnings && cargo test` (from `server/`). Both are green on `main` as far as reported.
|
||
- Worktrees in flight under `.claude/worktrees/`: `agent-m8` (M8 app integration, started 2026-10-18; the phone agent; stops at the pairing HUMAN step), `agent-m7g` (M7g feature cleanups in `android/feature/**`, started 2026-10-18), `agent-spec11` (this docs change: SPEC v0.11).
|
||
- The UX sprint (owner's session in `~/orca/workspaces/kvitt/UX-sprint`, branch `UX-sprint`) has landed; nothing is in flight there.
|
||
- Importer: the dry run of 2026-10-18 with M12b's mapping reconciled on both real files (Vardag 1746 rows, 0 unmapped; Hemma 37 rows, 0 unmapped). The CSV files stay in `export/` (git-ignored).
|
||
- Development stack (M2c-dev): running on the Mac, reachable at `http://192.168.1.210:8080`; database at schema 2 since 2026-10-18 (migrated after a backup). Firebase project `kvitt-1337` with apps `se.hagstedt.kvitt` and `se.hagstedt.kvitt.debug`; service account `kvitt-fcm`; `infra/secrets/fcm-service-account.json` and `infra/secrets/google-services.json` in the main checkout (git-ignored).
|
||
- Installed on the owner's phone (SM-S942B): the debug app `se.hagstedt.kvitt.debug` built from `c28c52b`, as of the last report; M8 installs its build.
|
||
|
||
## 2. Open work (one line each, with who owns it: agent or owner)
|
||
- Land `agent-spec11` (orchestrator): SPEC v0.11, D-069 to D-080, HANDOFF, `prompts/README.md`, `android/README.md`, PLAN-M8 §3 facts.
|
||
- M8 App integration (`agent-m8`, in flight, phone agent). Decision range D-085 to D-089 reserved; renumbered to D-081 onwards on landing (after `agent-spec11`). Spec version v0.12. It wires the §13.2 navigation (D-071), deletes `android/app/src/debug/.../DebugFakesModule.kt` (`72f21b2`), keeps the `:app` requests of M6 (`LocalAvatarPictures`, `ProvideHousehold`, `LocalKvittClock`) and the design-spec §2.7 One UI font check on the S26.
|
||
- M7g Feature cleanups (`agent-m7g`, in flight): feature modules after M6b; no phone.
|
||
- Later contract pass M12e (not started; SPEC §11.3 list): invite kind in the `pair()` result, admin name in the invite link, `SyncSummary` "last attempt failed", actor on `Rejection`, version name on `Device`, `RecurringRepository.create` without a caller-made `TemplateId`, a result for `UpdateRepository.check()`, untouched accounts in `SettleState`, the D-027 re-stamp in `:data`, the 128 px picture size (owner question).
|
||
- Image build for the Pi (M2c-pi or M10): since M4 the arm64 server image needs a C toolchain in the build stage (aws-lc-rs) and CA roots in the distroless image (§10.3); confirm both and one FCM send from the shipped image.
|
||
- Later cleanup (any Android plan that owns `android/gradle/**`): remove the unused Vico entries from `libs.versions.toml` (D-063).
|
||
- Plans (SPEC §11.2 v0.11), in dependency order; prompt `prompts/<id>.md`:
|
||
- M1, M2a, M2b, M2c-dev, M3, M4, M5, M6, M6b, M7a to M7f, M9, M12a, M12b, M12c, M12d, U1, U2: landed.
|
||
- Now: M8 and M7g in parallel.
|
||
- Next: M2c-pi Infra on the Pi after M8 (owner: answer OQ-3, grant the Pi, Home Assistant Pi, Gitea and Drive allowances at the start, D-023); M10 First release after M2c-pi (owner: keystore per §10.6, D-024); M11 Import history after M9 and M10 (procedure §10.8 "Production run", D-025; each run must reconcile, D-045); M12e contract pass when scheduled.
|
||
|
||
## 3. HUMAN steps pending (relay in chat; the owner does them tonight, 2026-10-18)
|
||
1. M8 pairing and offline test on the phone; relay wording comes from the M8 report.
|
||
2. Look through the M6 component screenshots (`android/core/design/src/test/screenshots/`); approved in advance, nothing blocks on it.
|
||
3. Answer OQ-3 for M2c-pi (§4).
|
||
4. Release keystore per SPEC §10.6 for M10, or allow an agent to generate one.
|
||
5. Yes/no: the keyword "boende" maps to travel. Yes/no: is the 128 px picture size needed?
|
||
|
||
## 4. Owner questions (asked, unanswered)
|
||
- OQ-3 LAN addresses and SSH users of the Kvitt Pi and the Home Assistant Pi; SSH port of the HA Pi; certificate directory there; which SSH add-on (SPEC §12). Needed by M2c-pi only.
|
||
- "boende" keyword → travel (yes/no); 128 px picture size needed (yes/no) (§3 item 5).
|
||
|
||
## 5. Paused (waiting on something outside the repo)
|
||
- Nothing.
|
||
|
||
## 6. Numbering
|
||
- Decisions: D-001 to D-080 used (D-008 and D-009 unused). D-085 to D-089 reserved by M8 (renumbered to D-081 onwards on landing). Next free: **D-081**.
|
||
- Spec version: v0.11 written; next **v0.12**.
|
||
- Server schema version **2** (migration 0002, landed with M12b); next **3**. Room schema version **1** (`android/data/schemas/se.hagstedt.kvitt.data.db.KvittDatabase/1.json`); next **2**.
|
||
- Sync protocol **1**, push payload **1**.
|
||
|
||
## 7. How the work is run
|
||
See CLAUDE.md › Orchestration. HUMAN steps in reports are relayed in chat by the orchestrator; the owner does not read them in files.
|