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/.
This commit is contained in:
2026-09-18 21:02:06 -07:00
parent a8cc2f7596
commit 01aa4c52c3
53 changed files with 3186 additions and 817 deletions
+18 -18
View File
@@ -11,7 +11,7 @@ the inference endpoint is already configured. Inference stays off here.
---
> On branch `m3-ds`, Milestone 3 exit criteria and field rules live in `docs/CREATE.md`. This walk is the human practice path for a `SLAB-UAT-*` listing. Prefer `CREATE.md` if anything conflicts.
> Milestone 3 exit criteria and field rules live in `docs/capabilities/CREATE.md`. This walk is the human practice path for a `SLAB-UAT-*` listing. Prefer `docs/capabilities/CREATE.md` if anything conflicts.
## 1. Host and deploy preconditions
@@ -94,12 +94,12 @@ hard stop. Switch to a supported browser.
### 4.1 Capture
1. Open the app on the phone. Start a new slab.
2. Take 1 to 5 photos of the slab. The first should be top-down, lens parallel to the broad
2. Take one or more photos of the slab (the batch); the first should be top-down, lens parallel to the broad
face. A tilted shot makes the numbers wrong. Retake if it is tilted.
3. **Mask overlay and four knobs.** The app draws a mask over the photo. You see which pixels are
slab and which are not. Tune the four knobs: **Sheet** (auto/green/black), **Sensitivity**,
**Edge offset**, **Feather**. Each change re-runs the mask immediately. Look at the edge
against the real wood. If it is still off, retake the photo.
3. **Mask overlay and controls.** The app draws a mask over the photo. You see which pixels are
slab and which are not. Tune the controls: **Sheet** (auto/green/black) and **Sensitivity**
(0–100). A Sheet change runs immediately; a Sensitivity change waits 2000 ms. Each recomputes in
the browser. Look at the edge against the real wood. If it is still off, retake the photo.
4. **Confirm the mask.** Tap confirm.
5. **Length axis.** The app draws the bounding rectangle and the length axis. Confirm it follows
the slab's long direction. Rotate if it is skewed. On a nearly square slab, you say which way
@@ -119,11 +119,11 @@ hard stop. Switch to a supported browser.
2. **Species.** Pick exactly one from the synced store list. The list came from `test-woo`.
Only species in the list may be typed.
3. **Wood categories.** Pick at least one from the synced list.
4. **Edge type, figure, grade.** Pick from the synced lists. At least one figure, at least one
grade.
4. **Edge type, figure, grade.** Pick from the synced lists. One edge type, at least one figure,
exactly one grade.
5. **Thickness band.** Pick the Woo band that the measured thickness rounds up into.
6. **Moisture.** Keep the default (kiln-dried) or change it.
7. **fig-* tags.** Pick at least one.
7. **fig-* tags.** Optional; pick any from the synced list.
8. **feat-* tags.** Zero or more. Only pick existing `feat-*` tags.
9. **Price.** A recommendation fills from the species $/bdft rule times board feet. You can
override it. If there is no rule for the species, the price starts empty. Type it. Publish
@@ -184,7 +184,7 @@ You can see all of these without reading code.
If you publish the same SKU twice, the second time the app stops before creating a second product.
Under the SKU field you see: "This SKU already exists in the store (any status)." Two paths:
edit the SKU to a new value, or open the existing listing. The draft stays in the app. Nothing is
lost. This is the expected behavior, not a bug. See `docs/CONTENT-WOO.md` §2.5.
lost. This is the expected behavior, not a bug. See `docs/contracts/CONTENT-WOO.md` §2.5.
### What a fail looks like
@@ -220,11 +220,11 @@ is gated on your review of one real listing.
| Rule | Source |
|---|---|
| Practice SKU forces draft | `AGENTS.md` §5 |
| `woo_create_status` default draft | `AGENTS.md` §5, `docs/CONTENT-WOO.md` §2.4 |
| App Password setup, not consumer keys | `AGENTS.md` §4, `docs/DEPLOYMENT.md` §5 |
| Host inventory before deploy | `docs/DEPLOYMENT.md` §1, `deploy/INVENTORY.md` |
| Capture → review → publish flow | `docs/UX.md` (SIGNED 2026-09-06) |
| Board feet identity | `docs/TECH-SPEC-PIPELINE.md` |
| Duplicate SKU recovery | `docs/CONTENT-WOO.md` §2.5, `docs/UX.md` Publish |
| PC browser compatibility | `docs/UX.md` Browser compatibility |
| Gate C = early Phase 1 | `docs/IMPL-PLAN.md` Gates map and Phase 1 |
| `woo_create_status` default draft | `AGENTS.md` §5, `docs/contracts/CONTENT-WOO.md` |
| App Password setup, not consumer keys | `AGENTS.md` §4, `deploy/` |
| Host inventory before deploy | `deploy/INVENTORY.md` |
| Capture → review → publish flow | `docs/contracts/UX.md` |
| Board feet identity | `docs/REQUIREMENTS.md` (CAPTURE-90) |
| Duplicate SKU recovery | `docs/contracts/CONTENT-WOO.md`, `docs/contracts/UX.md` |
| PC browser compatibility | `docs/contracts/UX.md` |
| M3 scope and exit | `docs/MILESTONES.md`, `docs/REQUIREMENTS.md` |