# 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.