- Rejection.lost: RejectedVersion (the pushed entity from sync_rejections.rejected_payload as a ledger row, account, payer, split, notes, deleted); S-16 "Öppna" shows it read-only in a dialog with "Visa nuvarande version" (S-8/S-10); without one it opens the current version as before. Ledger rows take a null onClick (read-only). - AboutState.schemaVersion; AboutRepositoryImpl calls E-1 /health once per collection when online; header fallback. S-22 shows "1.1.0 (schema 3)". - SettlementRepository.start/recompute return null without a session or partner; save is Invalid(payer); no checkNotNull/requireNotNull in :data. - :feature:home screenshot harness: one more frame and an idle looper before each capture; the committed sv_dark, 200 % and dialog goldens were one variant stale (light instead of dark, en instead of sv_200). - Tests: lost version (stale, refused deletion, unreadable payload), /health online and offline, settle without a partner, category reorder PATCHes, recurring toWire splits, §9.2 effect cases. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TQd3pEP9UeN2uifbHknQ7B
Kvitt UX
The UX deliverables for Kvitt v1 (SPEC §13). Phase 1 (U1, 2026-10-17) proposed three visual directions; the owner picked 3 "Kalas", muted on 2026-10-18. Phase 2 (U2, SPEC §13.4) is the binding design for M6 (:core:design) and M7a–M7f (the feature screens).
Binding files (U2)
| File | What it is | Used by |
|---|---|---|
design-spec.md |
The design spec: tokens (colour roles light and dark, 14 category colours with containers and contrast, chart and avatar colours, type scale, spacing, shapes, elevation, motion, icons, the 14 default categories, Compose mapping), the component inventory with anatomy, sizes, states and semantics, every screen S-1 to S-22 and the notifications with layout, the binding list of states, interactions, TalkBack and 200 %, the add-expense flow in detail, open points | M6, M7a–M7f, screenshot tests |
strings.csv |
Every user-visible string, key,en,sv,notes, keys prefixed per D-017 (feature modules) or unprefixed (:core:design); placeholders %1$s, plurals as <key>:one / <key>:other |
M6, M7 (values/strings.xml, values-sv/strings.xml) |
screens/ |
The screen catalogue: screens/index.html and one PNG per frame and theme, screens/<frame-id>-light.png / -dark.png (200 % and English frames light only), Swedish. Every state that design-spec.md §4 lists has a frame |
M7 (look), the owner |
ia.md |
Bottom navigation, screen inventory with modules and state sources, session routing, navigation map, data ownership, admin vs member | M7, M8 |
flows.md |
F-1 … F-11 step by step | M7, M8 |
category-suggestion.md |
The category suggestion rule CS-1 … CS-7 and the evidence from the household's Splitwise export | M5/M7c, the spec change UX-3 |
category-keywords.csv |
The built-in keyword table of CS-6 (draft of contracts/category-keywords.csv) |
:domain, UX-3 |
proposed-decisions.md |
The owner's answers and decisions UX-1 … UX-8, with the spec text a docs agent records on main (numbers assigned then) |
orchestrator, docs agent |
Precedence: SPEC rules › design-spec.md › PNGs; words from strings.csv. design-spec.md §1 lists where the design depends on a decision that is not in SPEC.md yet (UX-n).
U1 record (not maintained)
directions/ holds the three U1 directions as they were shown to the owner: 1-skargard/, 2-kvitto/, 3-kalas/ (each an index.html review page with every frame), README.md (comparison and recommendation) and export-png.sh. Token values in design-spec.md were copied from 3-kalas/index.html; later changes are made in design-spec.md and screens/ only. U1's direction-independent screens.md, components.md and tokens.md were folded into design-spec.md and removed.