SPEC v0.3: orchestrator resolutions of the plans' open points
Records D-004 and D-015 to D-025: shells and ownership, server seams (router middleware, rate_limit layer, tasks::start, AuditWriter and PushQueue traits, next_occurrence_date in kvitt-domain, M3 owns recurring generation, M4 lands after M3), OpenAPI parsed-value equality, feature convention and strings, empty fake scenario and resolveRange exception, shared ledger rows and editor fields in :core:design, no bundled font, pruning at 04:00, development infrastructure as M2c-dev built it, M2c-pi allowances, release keystore, production import procedure. Plans and prompts close their open points; HANDOFF rewritten to the real state; CLAUDE.md: implementation agents never edit SPEC.md or docs/decisions.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+6
-6
@@ -23,7 +23,7 @@ Read these, in this order, and nothing else before starting. Everything needed i
|
||||
- Rejection explanations on S-16 are the English texts of §14.4.6.
|
||||
- Notification channel id `activity`, name "Activity" / "Aktivitet" (§14.6).
|
||||
- Initials: first letter of the first two words of the display name, uppercase, on a colour derived from the user id; the UX sprint defines the two colours (AC-4.5).
|
||||
- `strings.csv` columns `key,en,sv,notes`; keys `snake_case` prefixed by screen (example `home_balance_owes_you`); placeholders as Android format arguments (`%1$s`); plurals marked in `notes` with their quantities (§13.4). Feature agents add no strings outside this file without a decisions entry (§13.4).
|
||||
- `strings.csv` columns `key,en,sv,notes`; keys `snake_case` prefixed by the feature module that holds them (`home_balance_owes_you`, `expense_save`; shared `:core:design` strings, the notification copy included, never start with a feature name; the app name is the only `:app` string) (§6.2, §13.4, D-017); placeholders as Android format arguments (`%1$s`); plurals marked in `notes` with their quantities (§13.4). Feature agents add no strings outside this file unless the orchestrator records a decision for them (§13.4).
|
||||
- Category default names (en, sv) are fixed in AC-7.2; every enum shown to users needs strings in both languages (AC-19.3).
|
||||
- Colour token names fixed; new hex values for §9.7 are proposed, and the orchestrator turns them into a spec change (§13.4).
|
||||
- The UX agent writes no Kotlin (§13).
|
||||
@@ -40,7 +40,7 @@ Edit nothing outside these paths; a needed change elsewhere is a contract reques
|
||||
- `docs/ux/colour-tokens-proposal.md`: the proposed light and dark hex values for the 12 tokens of §9.7 with contrast ratios against both surfaces, for the orchestrator's spec change.
|
||||
|
||||
## 6. Steps
|
||||
1. Worktree. If `.claude/worktrees/agent-ux` exists (U1 not landed yet), work there and `git rebase main`. Otherwise, from the main checkout `/Users/jhag/projects/kvitt`: `git worktree add .claude/worktrees/agent-ux -b agent-ux main`, then in it `git reset --hard main`. No git-ignored files are needed; copy none.
|
||||
1. Worktree. The owner runs the UX sprint in a separate session in `~/orca/workspaces/kvitt/UX-sprint` on branch `UX-sprint`; work there and `git rebase main`. No git-ignored files are needed; copy none.
|
||||
2. Read §2 in order. List the owner's comments and how each is addressed (goes into the report).
|
||||
3. Write the token section of `design-spec.md` first, then the component inventory, deriving components from what S-1 to S-22 need (balance header, account row, ledger rows for expenses and settlements, money text, avatar with initials, category chip and grid, split control, allocation row, timeline line, sync line, update banner, charts, empty and error blocks, "Needs connection" hint).
|
||||
4. For each screen S-1 to S-22, in id order: layout, each applicable state of §13.3 plus the screen-specific states its "Must show" column implies (for example S-1 errors `invite_invalid`, network, `rate_limited`; S-8 deleted; S-9 over-settle warning), interactions, TalkBack labels. Mark non-applicable states explicitly.
|
||||
@@ -48,10 +48,10 @@ Edit nothing outside these paths; a needed change elsewhere is a contract reques
|
||||
6. Render every screen and state, light and dark, Swedish, to `docs/ux/screens/` with a headless browser already installed (check with `command -v`; stop and ask if none).
|
||||
7. Write `colour-tokens-proposal.md`.
|
||||
8. Self-check the gate (§7) with a script you do not commit: every row of `strings.csv` has non-empty `en` and `sv`; every key is unique; every screen S-1 to S-22 has a section in `design-spec.md` covering all six state names (present or "not applicable"); grep for `lorem|TODO|XXX` is empty.
|
||||
9. Commit on `agent-ux` (only files under `docs/ux/`), `git rebase main`. Never merge, push or remove the worktree.
|
||||
9. Commit on `UX-sprint` (only files under `docs/ux/`), `git rebase main`. Never merge, push or remove the worktree.
|
||||
|
||||
## 7. Gate
|
||||
From SPEC §11.2, verbatim: "Every string key has `en` and `sv`; every screen has all states of §13.3".
|
||||
From SPEC §11.2 (v0.3), verbatim: "Every string key has `en` and `sv`; every screen has every state that `design-spec.md` lists for it (§13.3)". The per-screen state list in `design-spec.md` is the binding one (§13.3).
|
||||
Green means: the self-check of step 8 passes with zero missing translations, zero duplicate keys, all 22 screens present with each of the six §13.3 states either specified or marked not applicable, and a PNG for every specified state in light and dark.
|
||||
|
||||
## 8. HUMAN steps
|
||||
@@ -66,11 +66,11 @@ Where in the flow: after this plan's report; M6 starts only after the owner's ap
|
||||
- Any file outside `docs/ux/`.
|
||||
|
||||
## 10. Report
|
||||
- Branch `agent-ux` and head commit hash after rebasing on `main`.
|
||||
- Branch `UX-sprint` and head commit hash after rebasing on `main`.
|
||||
- Gate self-check output lines (string count, missing translations 0, screens 22, PNG count).
|
||||
- How each owner comment was addressed, one line each.
|
||||
- The proposed §9.7 hex values (summary line; detail in the proposal file).
|
||||
- Fonts and their licences (owner must clear a bundled font before M6, CLAUDE.md "Licences first").
|
||||
- Typography in the Material 3 default typeface; no font is bundled (D-020).
|
||||
- Open questions and spec gaps with section numbers; any screen that needs data not in §14.2.4.
|
||||
- Numbering used (none expected; say `none`).
|
||||
- HUMAN step to relay: "Approve the design spec", with the paths to review.
|
||||
|
||||
Reference in New Issue
Block a user