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/.
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user