2.4 KiB
2.4 KiB
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:
- Open the app.
- Take or pick one slab photo.
- 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.
- User approves the edge.
- App then produces the uniform inventory PNG and sizes / board feet from that reference photo.
- 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
- These locks
docs/PRODUCT.mdanddocs/CAPTURE.mddocs/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