# Docs map > **Phase 2 status (2026-09-18).** Requirements are reconciled; capability and contract docs are > migrated into `docs/capabilities/` and `docs/contracts/`. `.audit/` holds the working records. Read this file first. It tells you what SlabUploader is for, what already ships, and what Milestone 3 must build. **Who this is for.** Mill owner (Ty), humans reviewing scope, and agents implementing. **Source of truth for Milestone 3.** `docs/REQUIREMENTS.md` plus the M3 ID subset in `docs/MILESTONES.md`. Behavior is in `docs/capabilities/CREATE.md` and the `docs/contracts/` set. ## High-level project goal SlabUploader lists one-of-a-kind wood slabs on Whidbey Wood Store (WooCommerce). One slab is one unit and one listing. Photos and metadata are the inventory record. The mill owner photographs a slab on a green or black sheet, gets store-ready transparent PNGs and measurements on the phone, fills the store's taxonomy and price, then creates a WooCommerce product. Store: https://www.whidbeywoodstore.com/ ## What is already implemented (pre-M3) | Milestone | Spec | Status on this branch | |---|---|---| | 1 Capture | `docs/capabilities/CAPTURE.md` | Shipped. Browser-only mask, length axis, measure, inventory PNG, device draft. | | 2 Photos | `docs/capabilities/PHOTOS.md` | Shipped. Batch photos, pick calibration, apply mask/crop to the batch, dimension overlay, Photos-ready lineup. UAT on `:10881`. | There is no Woo create yet. There is no Complete-listing taxonomy UI yet. There is no FastAPI Woo client (`backend/` is a stub). Inference is not wired. ## What Milestone 3 builds Spec: `docs/capabilities/CREATE.md`. **Exit criteria.** A Photos-ready slab becomes **submission-ready for WooCommerce**, and a practice `SLAB-UAT-*` draft exists in the store that matches the reviewed ready set. Create must still work with inference off. In plain terms, M3 connects the Photos-ready device draft to the real store: 1. Talk to WooCommerce with a WordPress application password (server-side only). 2. Sync and use the **Woo Slab Taxonomy** (categories, five locked attributes, `fig-*` / `feat-*` tags) per the requirements. 3. Pricing from species `$/bdft` rules, with user override. 4. Inference Settings (OpenAI-compatible URL, key, model) and Call 1 / Call 2 rules when enabled. 5. Review to the full ready set, then create the Woo product (force draft for `SLAB-UAT-*`). Technical detail for Woo sync, metadata, pricing, and inference is in `docs/capabilities/CREATE.md` and `docs/contracts/`. ## How to read the folder | File | Role | |---|---| | `README.md` (this file) | Map: goals, shipped, M3. | | `PRODUCT.md` | Product overview: complete listing, decision rights, seams. | | `capabilities/CAPTURE.md` | Milestone 1 Capture (shipped). | | `capabilities/PHOTOS.md` | Milestone 2 Photos (shipped). | | `capabilities/CREATE.md` | Milestone 3 Create. Read this before task breakdown or coding. | | `contracts/CONTENT-WOO.md` | Listing copy templates and Woo payload intent. | | `UAT-PRACTICE.md` | Human practice walk for a `SLAB-UAT-*` listing. Defers to `capabilities/CREATE.md` on conflict. | | `archive/` | Historical only. Not M3 scope. | ## Deploy reminders for this branch - Dev-test env Docker: ubudual5060 `http://192.168.1.202:10881` (LAN) · `http://100.64.0.9:10881` (Tailscale) - Port block `10880`–`10889` is this project's; never bind `:10880` (Ty Node/SvelteKit) - Dev-test env binds `0.0.0.0` — reachable from any machine on `192.168.1.0/24` - Store URL (`WOO_BASE_URL`) lives in compose / host `.env` - Woo application password and inference URL live in encrypted Settings, not in compose