Files
SlabUploader/.audit/coverage/matrix/architecture.md
T
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

186 lines
8.5 KiB
Markdown
Raw 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 — ARCHITECTURE.md
Source: `docs/ARCHITECTURE.md` at tag `pre-simplification`.
Method: subagent extracted every surface entry; PoR home assigned here.
Dispositions: `ported`, `superseded`, `dropped`, `ui`, `missing`.
## SETTINGS KEYS
| Entry | PoR | Disposition | Note |
|---|---|---|---|
| inference_enabled | SETTINGS-30, SETTINGS-90 | ported | default off added |
| Species $/bdft | SETTINGS-35 | ported | — |
| prompts (as settings) | METADATA-105 | superseded | prompts live in the DB, not settings |
| Inference endpoint base URL | SETTINGS-30 | ported | — |
| Inference API key | SETTINGS-30 | ported | — |
| Woo credentials | SETTINGS-15, SETTINGS-20 | ported | — |
| publish status | SETTINGS-65 | ported | — |
| Store URL env, read-only | SETTINGS-5 | ported | — |
| SLAB_AES_KEY | SETTINGS-25 | ported | — |
| WOO_BASE_URL | SETTINGS-5, SETTINGS-10 | ported | — |
| sheet mode | CAPTURE-40, CAPTURE-145 | ported | — |
| sensitivity | CAPTURE-41, CAPTURE-145 | ported | — |
| edge offset | CAPTURE-40 | superseded | removed control |
| feather | CAPTURE-40 | superseded | removed control |
| reset-to-default | CAPTURE-145 | ported | — |
| Species list with $/bdft | SETTINGS-35 | ported | — |
| Taxonomy snapshot | SETTINGS-50 | ported | — |
## CONTROLS
| Entry | PoR | Disposition | Note |
|---|---|---|---|
| New Wood 1–5 photos | CAPTURE-25 | superseded | no cap |
| Four mask knobs | CAPTURE-40 | superseded | two knobs |
| Mask edge OK | CAPTURE-50 | ported | — |
| Retune knobs / Retake | CAPTURE-50, CAPTURE-155 | ported | — |
| Length axis rotate/confirm | CAPTURE-60, CAPTURE-65 | ported | — |
| User length/thickness/SKU | CAPTURE-70 | ported | — |
| Call 1 pre-fill / manual taxonomy | METADATA-45, METADATA-50 | ported | — |
| Generate text button | METADATA-55, METADATA-110 | ported | availability added |
| Publish | PUBLISH-5 | ported | — |
| Settings "Refresh taxonomy" control | SETTINGS-60 | ui | optional; not required for POC |
| Inline nudges | REVIEW-20 | ported | — |
## LISTING FIELDS
| Entry | PoR | Disposition | Note |
|---|---|---|---|
| Photos 1–5 | CAPTURE-25 | superseded | no cap |
| SKU | REVIEW-45 | ported | — |
| length / thickness | CAPTURE-70 | ported | — |
| sqft / bdft / 6in widths | CAPTURE-80, CAPTURE-85, CAPTURE-90 | ported | — |
| 3:4 PNG | CAPTURE-95, CAPTURE-100 | ported | — |
| title / short_title / description | REVIEW-10 | ported | short_title naming migrated |
| species | METADATA-10 | ported | — |
| wood categories | METADATA-10 | ported | — |
| edge / figure | METADATA-15 | ported | — |
| grade | METADATA-15 | ported | cardinality superseded |
| feat-* | METADATA-30 | ported | — |
| fig-* | METADATA-30 | ported | cardinality superseded |
| price | REVIEW-25 | ported | — |
| moisture | METADATA-15 | ported | — |
| originals | PUBLISH-25, PUBLISH-40 | ported | purge after publish |
| woo_product_id | PUBLISH-25 | ported | — |
## STATUSES
| Entry | PoR | Disposition | Note |
|---|---|---|---|
| draft | APP-5 | ported | — |
| calibrated | APP-5 | ported | — |
| ready | APP-5, REVIEW-5 | ported | fig/grade cardinality superseded |
| publishing | APP-5 | ported | — |
| published | APP-5, PUBLISH-25 | ported | — |
| failed | APP-5, PUBLISH-30 | ported | — |
| transitions draft→...→published/failed | APP-5 | ported | — |
## ENDPOINTS
| Entry | PoR | Disposition | Note |
|---|---|---|---|
| /wp-json/wc/v3/ | SETTINGS-15 | ported | — |
| /api/v1/settings | SETTINGS-20, SETTINGS-30 | ported | — |
| /api/v1/admin/taxonomy | SETTINGS-50 | ported | — |
| POST /api/v1/settings/test-woo | SETTINGS-40, SETTINGS-80 | ported | — |
| GET /api/v1/validation/module | — | dropped | validation module ruled cut |
| POST /api/v1/settings/test-inference | SETTINGS-45 | ported | — |
## ERROR CODES
| Entry | PoR | Disposition | Note |
|---|---|---|---|
| 409 duplicate SKU only | PUBLISH-15 | ported | — |
| 422 stale value | PUBLISH-20 | ported | — |
| 412 validation hash | — | dropped | validation module ruled cut |
| "Never show 412" | PUBLISH-35 | dropped | moot after cut |
## USER-FACING ERROR / EMPTY STATES
| Entry | PoR | Disposition | Note |
|---|---|---|---|
| Call 1 runtime failure → retry or message | METADATA-115 | ported | recoverable retries, unrecoverable explains |
| Below 0.7 fields stay empty | METADATA-45 | ported | — |
| Duplicate SKU field error | PUBLISH-15 | ported | — |
| Stale value field error | PUBLISH-20 | ported | — |
| Review gate empty subset | REVIEW-5, REVIEW-20 | ported | — |
| Inline nudges, not submit-only | REVIEW-20 | ported | — |
| UI "Updating rules" | — | dropped | validation module cut |
| failed error detail stored, retry | PUBLISH-30 | ported | — |
## INFERENCE
| Entry | PoR | Disposition | Note |
|---|---|---|---|
| Call 1 auto-run only if inference_enabled | METADATA-35, SETTINGS-90 | ported | — |
| Call 1 skipped when disabled | METADATA-70 | ported | — |
| Call 1 input: all originals downscaled to 1024 | METADATA-35 | superseded | PoR sends the clean processed photos |
| Call 1 input: synced taxonomy only | METADATA-35, METADATA-40 | ported | — |
| Call 1 input: SKU/length/thickness | METADATA-35 | ported | — |
| Call 1 timeout 45s | METADATA-115 | ported | runtime failure triage |
| Threshold ≥0.7 pre-populate | METADATA-45 | ported | — |
| Below 0.7 empty | METADATA-45 | ported | — |
| Manual entry authoritative | METADATA-50 | ported | — |
| Call 2 no auto-fire | METADATA-55 | ported | — |
| Call 2 portable context / full resend | — | superseded | thread work out of MVP |
| previous_response_id | — | superseded | thread work out of MVP |
| Call 2 confirmed vs inferred | METADATA-60 | ported | — |
| per-slab thread, delete on submit/abandon | — | superseded | thread work out of MVP |
| test-inference mode stateful/stateless/fail | SETTINGS-45 | ported | — |
| fail blocks Call 2 only | SETTINGS-45 | ported | — |
| Call 1/2 assist-only, do not gate publish | METADATA-75 | ported | — |
| low-confidence does not auto-fill | METADATA-45 | ported | — |
## PUBLISH PAYLOAD
| Entry | PoR | Disposition | Note |
|---|---|---|---|
| Draft upload contents | CAPTURE-135 | ported | — |
| Originals needed for retry | PUBLISH-40 | ported | — |
| Post-publish deletion | PUBLISH-25 | ported | — |
| Duplicate SKU handling | PUBLISH-15 | ported | — |
| Stale value handling | PUBLISH-20 | ported | — |
| Product status per setting | SETTINGS-65, PUBLISH-10 | ported | — |
| Title/desc typed, generated, or templated | REVIEW-10, METADATA-70 | ported | templates are fallback |
| Publish poll | PUBLISH-5 | ported | — |
| woo_product_id stored | PUBLISH-25 | ported | — |
| Images purged | PUBLISH-25 | ported | — |
| Publish resync > 1 hour | SETTINGS-60 | ported | — |
| Submit carries validation_hash / 412 retry | — | dropped | validation module cut |
| Woo-shaped 422 store rejection | APP-50, PUBLISH-20 | ported | — |
| Taxonomy: categories/attributes/fig-* synced | SETTINGS-50, SETTINGS-51 | ported | scope narrowed to fig/feat |
## CONSTANTS / NUMBERS
| Entry | PoR | Disposition | Note |
|---|---|---|---|
| 1–5 photos | CAPTURE-25 | superseded | no cap |
| downscale 1024 | METADATA-35 | ported | source conflict noted |
| Call 1 timeout 45s | METADATA-115 | ported | runtime failure triage |
| confidence 0.7 | METADATA-45 | ported | — |
| 3:4 | CAPTURE-100 | ported | — |
| 80% fill | CAPTURE-100 | superseded | 90 percent |
| 6in widths | CAPTURE-80 | ported | — |
| SKU charset 3..24 | REVIEW-45 | ported | case widened |
| taxonomy staleness 1 hour | SETTINGS-60 | ported | — |
| ready cardinalities (PNG/species/wood/edge/figure/fig/grade/moisture/feat) | REVIEW-5 | ported | fig/grade superseded |
| five attributes | METADATA-15 | ported | — |
## BROWSER / API SUPPORT
| Entry | PoR | Disposition | Note |
|---|---|---|---|
| Browser does not call Woo or vision | APP-25 | ported | — |
| no CORS to store | APP-25 | ported | — |
| localStorage persistence | CAPTURE-145 | ported | — |
| client BG removal APIs | CAPTURE-140, CAPTURE-35 | ported | — |
| camera | CAPTURE-25, CAPTURE-20 | ported | — |
| no U2Net control (POC) | CAPTURE-165 | ported | — |
| U2Net deferred, not deleted | CAPTURE-165 | ported | — |
| title/desc Woo maxLength | REVIEW-50 | ported | Woo v3 documents no max; caps in `docs/contracts/WOO-API.md` §11 |
## Findings
None open. Runtime inference failure is `METADATA-115`; the Call 1 image source is
`METADATA-35`; title/description length caps are inherent Woo limits.