8ee3da9dcf
Reconciles two independent lines of work that both touched Review.svelte, MultiSelect.svelte, and the thickness band: - main's PR #97 (client-side thicknessBand.ts + MultiSelect names/commit + syncSelects DOM race fix + box-sizing CSS) - work/merge-89-90 (server-side thickness band in thickness_band.py, Create-string #89, metadata_locked dropped, photo strip, wood primary) Canonical resolution: the band is SERVER-side (hidden from UI, sent to Woo on publish), so the client-side thicknessBand.ts + read-only band display are removed from Review.svelte; PR #97's syncSelects() and box-sizing CSS are preserved (orthogonal fixes). MultiSelect takes selectedSummary from woodPrimary.ts (names in closed state) + the ms-count testid + onDestroy timer cleanup; duplicate close()/summary definitions dropped. Gates: backend 117/117, unit 88/88, tsc clean, e2e 6/6 (m3-create + photo-strip).
Contract docs
Cross-cutting interface detail shared by capabilities.
Rules (docs/STRUCTURE.md): a contract doc cites requirement IDs from docs/REQUIREMENTS.md; it never defines or restates them.
Contract docs (migrated):
WOO-API.md— external WooCommerce REST API v3 surface (new; the dependency contract)API.md— FastAPI HTTP contract (from tagOPENAPI.md)DATA-MODEL.md— SQLite schema and status machine (from tagDATA-MODEL.md)UX.md— screens, field recovery, outcomes (from tagUX.md)PROMPTS.md— Call 1 / Call 2 prompt text and inputs (from tagPROMPTS.md)CONTENT-WOO.md— listing copy and Woo payload intent (fromdocs/CONTENT-WOO.md)TEST-SPEC.md— test pyramid, vectors, dishonest proxies (from tagTEST-SPEC.md) — pending
Template: docs/_templates/contract.md.