Files
SlabUploader/AGENTS.md
T

66 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AGENTS.md — SlabUploader
Working contract. Read this before writing code or more docs.
Branch intent: `doc-simplification` replaces the live doc pile with a small production set. Old files live under `docs/archive/` and are **not** sources for new work.
## Live files
| File | Owns |
|---|---|
| `README.md` | What this is |
| `AGENTS.md` | Locks, slice scope, proof |
| `docs/PRODUCT.md` | Listing factory, fields, who decides, Woo outcome |
| `docs/CAPTURE.md` | Photo, mask slider, crop, numbers |
| `deploy/` | How it is hosted |
Do not add a new live markdown file without Ty saying so.
## Slice 1 (build this, nothing else)
Client-side capture on phone and PC:
1. Open the app.
2. Take or pick one slab photo.
3. Isolate the slab with **one live sensitivity slider** (plus Auto / Green / Black if the sheet is not obvious). Instant overlay. No Apply. No server trip for the slider.
4. User approves the edge.
5. App then produces the uniform inventory PNG **and** sizes / board feet from that reference photo.
6. User sees both on screen.
Out of Slice 1: Woo, vision, titles, extra sliders, U2Net, offline, OCR, bulk.
Add a second slider only after real slabs prove one cannot put the edge on the wood.
## Proof
A passing test suite is not proof.
Proof is Ty on a phone, real slab, approved edge, visible uniform PNG, visible length-derived widths and board feet. If step 5 does not run after approve, the build failed.
## Locks
- Every slab is quantity one. Photos + metadata are the listing.
- User types **length**, **thickness**, and **SKU**.
- App proposes everything else. User reviews before submit.
- Non-math fields stay editable until submit.
- Board feet is `sqft × thickness_in`. User does not invent the math.
- Price is proposed as `bdft × species $/bdft`. User may override. No rate → empty price, user types it.
- Manual length, thickness, SKU, price, and taxonomy always win over a model.
- `SLAB-UAT-*` is always a Woo draft.
- Vision does not gate publish. Full path must work with inference off.
- Undersized source → retake, not a soft publish.
- Duplicate SKU → stop. This version does not update the other product.
## Conflict order
1. These locks
2. `docs/PRODUCT.md` and `docs/CAPTURE.md`
3. `docs/archive/` (history only)
## Do not
- Restate these locks in a fourth file
- Treat `docs/archive/` as the spec
- Ship four sliders because an older spec listed four
- Call the slice done because unit tests passed