Files
SlabUploader/.audit/coverage/matrix/create.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

6.8 KiB
Raw Blame History

Coverage matrix — CREATE.md (current branch)

Source: docs/CREATE.md (current working tree). Method: every surface entry dispositioned to PoR IDs or a recorded drop.

Findings

None new. Two open decisions in the doc are already settled elsewhere: the attributes element shape is resolved in docs/contracts/WOO-API.md §4, and the crop fill/floor (90% / 800) is the PoR. The client stack note ("Vite + Svelte SPA") is implementation, not a requirement.

Superseded (queued in migration TODOs)

  • ready set "at least one inventory PNG" → REVIEW-5 (two images)
  • grade 1+ → METADATA-15 (exactly one)
  • fig-* 1+ required → METADATA-30 (optional)
  • short_title → REVIEW-10 (short_description)
  • "user typed number wins if overridden" for widths/sqft/bdft → REVIEW-30, REVIEW-40 (read-only)
  • "title/short/desc not required to reach ready" → REVIEW-10
  • "templates always available" and "server assembles from templates" → METADATA-70, METADATA-80 (model writes when Call 2 runs; template is fallback)
  • "Cap at 5 images" / "Cap ≤5" → PUBLISH-40 (no cap)
  • Call 1 input "inventory photos downscaled to 1024" → METADATA-35 (clean processed photos)

SETTINGS KEYS

  • WOO_BASE_URL env, read-only → SETTINGS-5; HTTPS → SETTINGS-10
  • SLAB_AES_KEY env → SETTINGS-25
  • woo_wp_username / woo_app_password encrypted → SETTINGS-20
  • woo_create_status default draft → SETTINGS-65
  • inference_base_url, inference_api_key, inference_model, inference_enabled → SETTINGS-30
  • content_llm_enabled → SETTINGS-30, SETTINGS-90
  • taxonomy_last_sync_at, taxonomy_anchor → SETTINGS-55
  • brand_voice, geo_context → SETTINGS-30

CONTROLS

  • store URL read-only → SETTINGS-5
  • credential entry → SETTINGS-20
  • Generate text disabled when endpoint down → METADATA-110, METADATA-75
  • Call 2 blocked when test-inference fail → SETTINGS-45
  • inline nudges → REVIEW-20
  • species picker synced only → METADATA-5, METADATA-10
  • attribute pickers synced only → METADATA-15
  • stale field / vanished id → PUBLISH-20, REVIEW-35
  • duplicate SKU actions → PUBLISH-15
  • create/publish trigger → PUBLISH-5
  • draft upload trigger → CAPTURE-135

LISTING FIELDS

  • sku → REVIEW-45; status enum → APP-5
  • length_in, thickness_in 1/8 → CAPTURE-70
  • sqft, bdft, widths → CAPTURE-80, CAPTURE-85, CAPTURE-90
  • species_id 1 leaf → METADATA-10; wood_category_ids 1+ → METADATA-10
  • edge_type_term_id 1 → METADATA-15; figure_term_ids 1+ → METADATA-15
  • thickness_term_id round-up → METADATA-15; moisture_term_id default kiln-dried → METADATA-15
  • feat_tag_ids 0+ → METADATA-30
  • price, price_per_bdft, price_source → REVIEW-25
  • templates (title, short, description, {character}, {geo_sentence}) → contract detail in docs/contracts/CONTENT-WOO.md; fallback only
  • species/character/length/free-text thickness not attributes → METADATA-25

STATUSES

  • draft/calibrated/ready/publishing/published/failed → APP-5
  • woo_create_status draft/publish → SETTINGS-65
  • test-inference mode stateful/stateless/fail → SETTINGS-45
  • device draft is not a Woo draft → APP-10

ENDPOINTS

  • /api/health → APP-30, APP-45
  • slabs CRUD, photos, infer-taxon, infer-content, publish, taxonomy, pricing, settings → docs/contracts/API.md
  • Woo endpoints (/wc/v3/products, categories, tags, attributes, media) → docs/contracts/WOO-API.md

ERROR CODES

  • 502 woo_error → SETTINGS-50, PUBLISH-30
  • 422 unpublishable → REVIEW-5
  • 409 duplicate_sku → PUBLISH-15
  • 202 publish → contract

USER-FACING ERROR / EMPTY STATES

  • sync failure keeps previous cache → SETTINGS-50
  • create blocked until ready → REVIEW-5, REVIEW-20
  • duplicate SKU block → PUBLISH-15
  • stale field, current options → PUBLISH-20
  • vanished id not silently swapped → REVIEW-35
  • failure: log, mark failed, keep photos, field-level error, no raw code → PUBLISH-30, PUBLISH-35
  • low-confidence not shown as defaults → METADATA-45
  • Generate text down → METADATA-110
  • no pricing rule → price empty, owner types → REVIEW-25

INFERENCE

  • Call 1 auto only when enabled → METADATA-35
  • Call 1 input (photos, metadata, taxonomy) → METADATA-35
  • Call 1 output + confidence → METADATA-40
  • threshold 0.7 pre-fill / below empty → METADATA-45
  • moisture never inferred → METADATA-15
  • typed wins → METADATA-50
  • never blocks create / auto-publish → METADATA-75
  • Call 2 user-triggered; requires test-inference ok → METADATA-55, SETTINGS-45
  • model prose only, no dimensions → METADATA-65
  • templates fallback → METADATA-70
  • test-inference shape, fail blocks Call 2 only → SETTINGS-45
  • templates math from deterministic pipeline → METADATA-90
  • inference-off create → QUALITY-20, METADATA-70
  • FastAPI proxies inference → APP-25

PUBLISH PAYLOAD / FLOW

  • payload fields (name, type, status, sku, regular_price, description, short_description, categories, tags, images, attributes, virtual, downloadable, catalog_visibility) → docs/contracts/WOO-API.md, PUBLISH-55
  • non-null only → PUBLISH-55
  • SLAB-UAT-* force draft → PUBLISH-10
  • images upload keep alpha, lineup order → PUBLISH-40, PUBLISH-45
  • published meaning (not live) → PUBLISH-50
  • success behavior (product id, purge, delete row, clear device draft) → PUBLISH-25, APP-15
  • failure behavior → PUBLISH-30
  • create sequence steps 1–4 → PUBLISH-5
  • images alt text → contract detail
  • attributes element shape → resolved, docs/contracts/WOO-API.md §4

CONSTANTS / NUMBERS

  • per_page=100 → SETTINGS-50, WOO-API §7
  • connect 10s / read 60s → contract detail
  • taxonomy staleness 1 hour → SETTINGS-60
  • SKU [A-Z0-9-]{3,24} → REVIEW-45
  • downscale 1024 → METADATA-35
  • confidence 0.7 → METADATA-45
  • bdft and price formulas → CAPTURE-90, REVIEW-25
  • 1/8 step → CAPTURE-70
  • five attributes → METADATA-15
  • UAT port :10881, do not touch :10880 → OPS-40
  • fill 90% / 800px floor → CAPTURE-100, CAPTURE-105

BROWSER / API SUPPORT

  • FastAPI only Woo caller; browser no creds → APP-25
  • app-password Basic auth, not consumer keys → SETTINGS-15
  • HTTPS only → SETTINGS-10
  • proxy inference, no key in browser → APP-25, SETTINGS-30
  • device draft IndexedDB → APP-10, CAPTURE-140
  • Woo source of truth, cache ids → METADATA-5
  • v1 no term creation → METADATA-20
  • taxonomy sync order, transactional, anchor, re-pull, triggers → SETTINGS-50, SETTINGS-55, SETTINGS-60
  • pricing rules flat per species, seed, override sticks, manual allowed → SETTINGS-35, REVIEW-25
  • practice rules (SLAB-UAT-*, hidden, inference off) → PUBLISH-10, QUALITY-20
  • dishonest proxies → QUALITY-105
  • tag/leaf filters and feat mapping → SETTINGS-51, METADATA-10, METADATA-30, METADATA-100