01aa4c52c3
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/.
6.1 KiB
6.1 KiB
Coverage matrix — OPENAPI.md
Source: docs/OPENAPI.md at tag pre-simplification.
Method: subagent extracted every surface entry; PoR home assigned here.
Dispositions: ported, superseded, dropped (contract detail), ui, missing.
Findings
None. Three items are contract detail (photo 40 MB request cap, GET /meta, inference_error
field), and the schema conflicts are already resolved in the PoR.
SETTINGS KEYS
woo_base_urlread-only → SETTINGS-5woo_base_urlnot writable, reject write → SETTINGS-85woo_wp_username/woo_app_passwordwrite-only, AES-GCM → SETTINGS-20- reject
woo_consumer_key/woo_consumer_secret→ SETTINGS-15 woo_credentials_configuredboolean → SETTINGS-75- secrets masked, never echoed → SETTINGS-75
inference_base_url,inference_model,inference_enabled,content_llm_enabled,brand_voice,geo_context,woo_create_status→ SETTINGS-30, SETTINGS-65aspect_ratio3:4 → CAPTURE-100output_px/output_px_min1600,fill_target0.80 → superseded CAPTURE-105- client prefs not in SettingsView → CAPTURE-145
- PUT partial body, re-encrypt, no echo → SETTINGS-20, SETTINGS-30
inference_enableddefaulttruein the example → superseded SETTINGS-90 (default off)
CONTROLS
- pickers limited to synced taxonomy → METADATA-5
- duplicate SKU actions
edit_sku/open_existing→ PUBLISH-15 - stale field actions/options → PUBLISH-20
LISTING FIELDS (SlabCreate, read model, results)
id,client_rev→ APP-20sku3..24 uppercase → REVIEW-45 (case widened; Woo hard cap in WOO-API §9)length_in,thickness_in1/8 → CAPTURE-70sqft,bdft, widths → CAPTURE-80, CAPTURE-85, CAPTURE-90species_id,wood_category_ids→ METADATA-10edge_type_term_id,figure_term_ids,thickness_term_id,moisture_term_id→ METADATA-15grade_term_ids(plural, 1+) → superseded METADATA-15 (exactly one, singular)fig_tag_ids(1+) → superseded METADATA-30 (optional)feat_tag_ids(0+) → METADATA-30price,price_source→ REVIEW-25price_per_bdfton slab → contract detail (pricing rules SETTINGS-35)title,description→ REVIEW-10short_title→ superseded REVIEW-10 (short_descriptioncanonical)content_source→ METADATA-66- read model
status,inference_status,woo_product_id,published_at, revisions → APP-5, METADATA-35, PUBLISH-25, APP-20 inference_error→ contract detail- PhotoRead
kindlabel → dropped (label discarded); urls → contract; 410 → PUBLISH-25 - Call1 result ids/confidences → METADATA-40; free-text → METADATA-100
- Call2 result → METADATA-55/60
- PriceRule shape → SETTINGS-35
STATUSES
calibratedon create → APP-5, CAPTURE-135readypreconditions → REVIEW-5 (fig/grade cardinality superseded)publishing/failed/published→ APP-5, PUBLISH-25, PUBLISH-30inference_statusenum → METADATA-35- duplicate check across any Woo status → PUBLISH-15
ENDPOINTS
GET /api/healthbody → APP-45GET /api/v1/meta→ contract detailPOST/GET/PUT/DELETE /api/v1/slabs→ docs/contracts/API.mdPOST .../u2net/{pid}reserved → CAPTURE-165GET .../photos/...→ PUBLISH-25POST .../infer-taxon→ METADATA-35POST .../infer-content→ METADATA-55POST .../publish→ PUBLISH-5- taxonomy GET/sync → SETTINGS-50, SETTINGS-55, SETTINGS-60
- pricing CRUD → SETTINGS-35
- settings GET/PUT, test-woo, test-inference → SETTINGS-20, SETTINGS-30, SETTINGS-40, SETTINGS-45, SETTINGS-75, SETTINGS-85
GET /api/v1/validation/module→ dropped (module cut)
ERROR CODES
- 400, 404, 500 → APP-35
- 409
revision_conflict→ APP-20 - 409
duplicate_sku→ PUBLISH-15 - 422
unpublishable→ REVIEW-5, REVIEW-20 - 422
stale_field→ PUBLISH-20 - 422 test-inference gate → SETTINGS-45
- 422
woo_base_urlwrite → SETTINGS-85 - 502
woo_error→ PUBLISH-30, SETTINGS-50 - 504 timeout → METADATA-115
- 410 photos → PUBLISH-25
- 412 validation module → dropped (module cut)
USER-FACING ERROR / EMPTY STATES
- never show the code, no raw code → PUBLISH-35
- unpublishable UI mapping → REVIEW-20
- test-woo fails closed → SETTINGS-80
- test-inference
failblocks Call 2 only → SETTINGS-45, METADATA-75 - low-confidence no prefill → METADATA-45
- Woo failure surfaces as failed + log → PUBLISH-30
- taxonomy sync failure keeps previous cache → SETTINGS-50
INFERENCE
- Call 1 auto only if enabled → METADATA-35
- Call 1 inputs "original photos downscaled to 1024" → superseded METADATA-35 (clean processed photos)
- Call 1 timeout 45s → METADATA-115
- confidence persist ≥0.7 → METADATA-45
- free-text → feat-* mapping → METADATA-100
- Call 2 default resend full context → METADATA-60 (no thread)
previous_response_id, per-slab thread → superseded (thread work out)- Call 2 requires test-inference ok → SETTINGS-45
- validation module shared with Call 2 → dropped (module cut)
PUBLISH PAYLOAD / FLOW
- preconditions → REVIEW-5
- dedupe → PUBLISH-15
- stale → PUBLISH-20
- success (product id, purge, delete row) → PUBLISH-25
- failure (failed, sync_log, poll 502) → PUBLISH-30
- create-time Woo status → SETTINGS-65, PUBLISH-10
CONSTANTS / NUMBERS
- base path
/api/v1, version bump → APP-30 - timestamps UTC ISO-8601 → APP-20
- photo request cap 40 MB → contract detail
- SKU pattern
[A-Z0-9-]{3,24}→ REVIEW-45 - 1/8 step → CAPTURE-70
- price 2 decimals → REVIEW-25
- poll backoff 1/2/4/10s → contract detail
- 1024 downscale → METADATA-35
- 0.7 threshold → METADATA-45
- 45s timeout → METADATA-115
- 3:4 → CAPTURE-100
- 1600 / 0.80 → superseded CAPTURE-105
- publish cardinalities → REVIEW-5
BROWSER / API SUPPORT
- client pins version → APP-30
- no client auth → OPS-55
- Woo HTTPS Basic Auth, application password, not consumer keys → SETTINGS-10, SETTINGS-15
- u2net post-POC not exposed → CAPTURE-165
- out of contract (bulk, staff, webhook, analytics) → dropped
- test-woo always resyncs → SETTINGS-40
- anchor re-pull / bump rules → SETTINGS-55, SETTINGS-60