Files
SlabUploader/docs/contracts
Ty 8ee3da9dcf merge work/merge-89-90 into main (Create-string #89/#90 + PR #97 fixes)
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).
2026-09-21 11:59:36 -07:00
..
…

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 tag OPENAPI.md)
  • DATA-MODEL.md — SQLite schema and status machine (from tag DATA-MODEL.md)
  • UX.md — screens, field recovery, outcomes (from tag UX.md)
  • PROMPTS.md — Call 1 / Call 2 prompt text and inputs (from tag PROMPTS.md)
  • CONTENT-WOO.md — listing copy and Woo payload intent (from docs/CONTENT-WOO.md)
  • TEST-SPEC.md — test pyramid, vectors, dishonest proxies (from tag TEST-SPEC.md) — pending

Template: docs/_templates/contract.md.