Files
Ty 01aa4c52c3 docs(phase2): reconcile requirements and migrate capabilities/contracts
Surface-matrix sweep of every source doc; added nine missed behaviors (METADATA-115, REVIEW-50, APP-55/60/65, SETTINGS-45 mode, Generate-text availability, defaults-off). 153 requirements, 0 coverage gaps.

Migrated capabilities to docs/capabilities/ and contracts to docs/contracts/; added WOO-API, API, DATA-MODEL, PROMPTS, UX, TEST-SPEC. Populated MILESTONES; branch-neutral trunk docs; renamed umbrella term to Woo Slab Taxonomy. Archived reconciliation working records under .audit/archive/.
2026-09-18 21:02:06 -07:00

116 lines
5.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Coverage matrix — PRD-2026-08.txt
Source: `docs/archive/PRD-2026-08.txt` (frozen history). Method: every labeled atom dispositioned.
## Findings
None new. The two potential holes from this doc are already covered: inference timeout/error →
`METADATA-115`, and no app-level auth → `OPS-55`. The archive's own banner already flags FR17,
FR19, FR40, FR42, and the NFR server timing as non-authoritative.
## Archive banner
- Flags FR17, FR19, FR40, FR42, NFR server timing, and "Known stale" → each of those lines is
superseded by a current row (below).
## Decisions log (2026-08-31)
- Doc contradiction freeze → dropped (process).
- bdft identity, secrets AES-GCM, online-only, `woo_create_status` default draft, `SLAB-UAT-*`
force draft, hybrid happy path, inference off first → ported CAPTURE-90, SETTINGS-20/25,
CAPTURE-15, SETTINGS-65, PUBLISH-10, CAPTURE-5, QUALITY-20.
- Review package not in repo → dropped.
## Decisions log (2026-08-27)
| # | Atom | Disposition | PoR |
|---|---|---|---|
| 1 | no calibration photos | superseded | CAPTURE-25, CAPTURE-30 |
| 1 | manual SKU/length/thickness | ported | CAPTURE-70 |
| 2 | first photo is the measurement photo, top-down | ported | CAPTURE-30, CAPTURE-20 |
| 3 | all photos 80% crop | superseded | CAPTURE-100 |
| 4 | transparent PNG min 1600, 3:4 | superseded | CAPTURE-95, CAPTURE-105 |
| 5 | green/black auto-detect from borders | ported | CAPTURE-35 |
| 6 | species 1 leaf, wood 1+ leaf | ported | METADATA-10 |
| 7 | edge 1, figure 1+, thickness round-up | ported | METADATA-15 |
| 7 | grade 1+ | superseded | METADATA-15 |
| 8 | tags fig/feat 1+ | superseded | METADATA-30 |
| 9 | two-call inference | ported | METADATA-35, METADATA-55 |
| 10 | Call 1 auto only if enabled; review before Call 2 | ported | METADATA-35, METADATA-55 |
| 11 | timeout/non-200 error + retry | ported | METADATA-115 |
| 12 | create status default draft; SLAB-UAT force draft | ported | SETTINGS-65, PUBLISH-10 |
| 13 | prompts as server text files | superseded | METADATA-105 |
| 14 | brand voice + GEO into Call 2 | ported | METADATA-60, SETTINGS-30 |
| 15 | Woo creds server-side AES-GCM | ported | SETTINGS-15, SETTINGS-20 |
| 16 | inference endpoint configurable | ported | SETTINGS-30 |
| 17 | test connection text + vision | ported | SETTINGS-45, SETTINGS-80 |
| 18 | offline not required | ported | CAPTURE-15 |
Open items: none → dropped.
## Functional requirements
- FR1 (1–5 photos) superseded → CAPTURE-25; first top-down ported → CAPTURE-20
- FR2 manual SKU/length/thickness → CAPTURE-70
- FR3 border BG detect → CAPTURE-35
- FR4 scale/sqft/bdft, old divide-by-12 wrong → CAPTURE-75, CAPTURE-85, CAPTURE-90
- FR5 80% crop / 1600 / 3:4 → superseded CAPTURE-100, CAPTURE-105
- FR6 retake/abort → CAPTURE-155
- FR7 deterministic compute → CAPTURE-85, CAPTURE-90
- FR8 thickness manual authoritative → CAPTURE-70, METADATA-50
- FR9 deterministic unit-tested → QUALITY-5, QUALITY-15
- FR10 sync categories/attributes/tags → SETTINGS-50
- FR11 species 1 leaf → METADATA-10
- FR12 wood 1+ leaf → METADATA-10
- FR13 edge 1 → METADATA-15
- FR14 figure 1+ → METADATA-15
- FR15 grade 1+ → superseded METADATA-15
- FR16 thickness round-up → METADATA-15
- FR17 fig-* 1+ → superseded METADATA-30
- FR18 auto-assign + manual override → METADATA-40, METADATA-45, METADATA-50
- FR19 category-weighted pricing → superseded SETTINGS-35
- FR20 bdft pricing → REVIEW-25
- FR21 price editable, stored authoritative → REVIEW-25
- FR22 Call 1 vision with confidences → METADATA-35, METADATA-40
- FR22a threshold 0.7 → METADATA-45
- FR22b species bias full list → METADATA-40
- FR22c free-text → feat-* → METADATA-100
- FR23 Call 2 user-triggered; prose only; server assembles templates → METADATA-55, METADATA-65;
server-assembles superseded → METADATA-70, METADATA-80
- FR24 prompts text files + reset script → superseded METADATA-105
- FR25 progress indicator → dropped (presentation)
- FR26 timeout/non-200 error + retry → METADATA-115
- FR27 results editable, no auto publish → METADATA-50, METADATA-75
- FR28 endpoint configurable + test text/vision → SETTINGS-30, SETTINGS-45, SETTINGS-80
- FR29 chroma-key, U2Net fallback → CAPTURE-35, CAPTURE-165
- FR30 80% / 3:4 / 1600 → superseded CAPTURE-100, CAPTURE-105
- FR31 transparent PNG → CAPTURE-95
- FR32 original + processed, purge after publish → PUBLISH-25, PUBLISH-40
- FR33 consumer keys + app password → superseded SETTINGS-15
- FR34 publish blocked on existing SKU → PUBLISH-15
- FR35 create product fields → PUBLISH-55
- FR36 default draft; SLAB-UAT draft → SETTINGS-65, PUBLISH-10
- FR37 log sync, surface errors, store product id → PUBLISH-25, PUBLISH-30
- FR38 draft slab state → APP-10
- FR39 single review screen, all editable → REVIEW-40
- FR40 server-side processing → superseded CAPTURE-135, APP-40
- FR41 settings UI → SETTINGS-15, SETTINGS-20, SETTINGS-30, SETTINGS-35
- FR42 compose on `.201` Caddy → superseded OPS-5, OPS-15, OPS-40
- FR43 secrets encrypted, HTTPS → SETTINGS-20, SETTINGS-25, OPS-5
## Non-functional requirements
- performance budgets (1–2s, 3–5s, 45s) → dropped (server timing non-authoritative)
- reliability: unit-tested → QUALITY-5, QUALITY-15
- security: encrypted/HTTPS → SETTINGS-20, SETTINGS-25, OPS-5
- maintainability separation → dropped
- usability one-hand → dropped
## Acceptance criteria
- E2E capture→publish on iPhone/Android → QUALITY-115
- area accuracy +/- 0.25 in² → dropped (sqin banned)
- normalization 80% / PNG / 1600 → superseded CAPTURE-100, CAPTURE-105
- Woo product images/taxonomy/content → PUBLISH-40, PUBLISH-45, PUBLISH-55
- deterministic unit tests + inference logged → QUALITY-5, METADATA-66