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/.
4.1 KiB
Coverage matrix — CONTENT-WOO, CAPTURE, PHOTOS (current branch)
Sources: docs/CONTENT-WOO.md, docs/CAPTURE.md, docs/PHOTOS.md (current working tree).
Findings
None new. Two notes: the copy-template storage location ("templates live in Settings") is
contract detail for docs/contracts/CONTENT-WOO.md, and the case-insensitive name-matching rule
is legacy — the review flow selects from pickers, so it is superseded by METADATA-5.
CONTENT-WOO.md
Superseded: short_title → REVIEW-10; fig-* 1+ required → METADATA-30; "≤5 inventory photos" →
PUBLISH-40; "Only kind=inventory photos / calibration photos do not exist" → calibration exists
(CAPTURE-25, CAPTURE-30); "check against the shared rules (current copy)" → validation module cut
(REVIEW-5); case-insensitive name matching → METADATA-5.
Ported:
content_llm_enabled,content_source→ SETTINGS-30, METADATA-66geo_sentencefrom Settings, default none → SETTINGS-30woo_create_statusdefault draft → SETTINGS-65WOO_BASE_URLenv HTTPS;SLAB_AES_KEY→ SETTINGS-5, SETTINGS-10, SETTINGS-25- templates title/short/description and
{character}→ contract detaildocs/contracts/CONTENT-WOO.md - categories species 1 + wood 1+, tags fig/feat, five attributes → METADATA-10, METADATA-15, METADATA-30
- ready set → REVIEW-5 (fig/grade cardinality superseded)
- payload fields →
docs/contracts/WOO-API.md, PUBLISH-55 type simple,virtual false,downloadable false,catalog_visibility visible→ PUBLISH-55- image bytes keep alpha,
POST /media→ PUBLISH-40, WOO-API §5 SLAB-UAT-*force draft → PUBLISH-10- status
draft/publish, published meaning → SETTINGS-65, PUBLISH-50 - create sequence steps 1–7 → PUBLISH-5
- dedupe every time → PUBLISH-15
- post-create delete originals + processed → PUBLISH-25
- failure: field message, mark failed, keep photos → PUBLISH-30, PUBLISH-35
- partial-failure orphaned media manual cleanup → PUBLISH-31
- taxonomy sync order,
per_page=100, 1-hour reconcile, anchor → SETTINGS-50, SETTINGS-55, SETTINGS-60 - vision 0.7 fills; vision off typed; typed wins → METADATA-45, METADATA-50, METADATA-70
- model writes prose only, synced choices only, no invented dimensions → METADATA-40, METADATA-65
- httpx timeouts 10s/60s → contract detail
- wire
{field, code, message, actions[]}, codes never shown → PUBLISH-35, API contract
CAPTURE.md
Ported:
- Sheet control, Sensitivity 0–100 → CAPTURE-40, CAPTURE-41
- immediate value update, 2.0 s recompute, last good overlay → CAPTURE-45
- approve blocked with no slab pixels → CAPTURE-50
- length axis rotate/approve → CAPTURE-60
- length/thickness 1/8, Calculate → CAPTURE-70
- scale
longest_axis_px / L→ CAPTURE-75 - widths every 6 in, drop first/last 6,
L ≤ 12all zero → CAPTURE-80 sqft = mask_pixels / scale² / 144, 2 dp → CAPTURE-85bdft = sqft × thickness_in, 2 dp → CAPTURE-90- 3:4, 90% fill, shorter side ≥ 800, no upscale → CAPTURE-100, CAPTURE-105
- PNG 8-bit RGBA, alpha kept → CAPTURE-95
- browsers and hard stop → CAPTURE-10
- client APIs and no OpenCV/ONNX/U2Net → CAPTURE-140
- preview display-only, source pixels → CAPTURE-141
- device draft, Resume/Continue/Start fresh → APP-10
- 1/8 steps → CAPTURE-70; sensitivity maps green/black → CAPTURE-41
Dropped: busy-mark "fraction of a second" (nit, migration TODO); "other backgrounds out of M1" (scope); M1 single reference photo superseded by batch (CAPTURE-25).
PHOTOS.md
Ported:
- batch one or more, continue at least one → CAPTURE-25
- pick calibration photo → CAPTURE-25
- M1 states on the calibration photo only → CAPTURE-30
- Photos ready lineup order → CAPTURE-130
- per-photo empty mask / size floor excluded, rest proceed → CAPTURE-110
- single-photo batch works → CAPTURE-25
- crop rules reuse (3:4, 90%, PNG, floor) → CAPTURE-100, CAPTURE-105
- overlay black; stations every 12 in from 6 in, while ≤ L−6; EXIF bottom → CAPTURE-120, CAPTURE-125
- 1–N photos → CAPTURE-25
- no inference / Woo create on this path → APP-25
No findings.