Pure client modules for TECH-SPEC sheet detect, chroma-key / black
threshold with border flood-fill, four knobs (live re-run), and mask
confirm hooks. Synthetic fixtures. U2Net never invoked.
TDD: red evidence in test-results/tv1-tv2-red.txt, then minimum impl.
Results:
TV-1 | pass | test-results/tv1-tv2-green.txt
TV-2 | pass | test-results/tv1-tv2-green.txt
Gitea issues are the only mechanism for reporting issues found during a test
pass. Chat, Slack, and PR comments are not the bug log. On fail, open or
update a Gitea issue with case id and evidence pointer; the report table
blocker column links that issue. Do not invent issues that lack runner
evidence.
- Gate B: Ty confirms TV-3/6/7/10 on real fixtures; unit/API automated
- Gate C: Ty opens SLAB-UAT-* draft in real store admin; mocked-store not exit
- Phase 3: Ty publishes test slab as Woo draft SLAB-UAT-*; automation UI cases
- Phase 5: Ty judgment on species acceptance; automation Call 1/2 cases
- Phase 6: deployment smoke automated; Ty walks UAT-PRACTICE.md for UAT signoff
- Rename 'Cadence summary' to 'When tests are written'
- Phase 1 remainder: agent automation drives calibrated → ready (keep, per #20)
- Add Section 1: case ID naming convention (all prefixes and abbreviations defined)
- Add Section 2: how cases are executed (paths, tools, staging for unit/contract/integration/E2E/ops)
- Restructured every case table to three columns: what must happen, where the rule lives, how verified
- Replaced cadence column with when-written in pyramid overview; cadence summary preserved
- Fixed all exit-evidence lines: agent-written test automation replaces Ty-driven curl
- Expanded all acronyms on first use; no magic acronyms in case descriptions
- Removed Ty-driven manual testing; automation is the verification path
Publish the phone screen inventory, ASCII wireframes, error states, and
UAT cases so Ty can review issue #10 on docs/refactor-v2. UX.md points
at UX-DESIGN for presentation.
Overlay and knobs are the check; no checker-generated mask copy.
Sheet is a knob when auto misses. Axis confirm by eye. 1600 is an
after-crop size gate (retake), not a vision slogan. Builds on e2bdd80.
Species UI and Call 1 use only Woo-synced leaves. Middle tier manufactures a
taxonomy last-modified anchor (bump on stored-subset change only; test-woo
always resyncs; publish if >1h). CONTENT-WOO field-level 409/422 recovery.
IMPL acceptance and AGENTS locks updated.
TECH-SPEC states BG removal defines the measurement footprint and silent
corruption failure mode. Four knobs stay on capture with live overlay on the
source photo. POC is client-side only; U2Net try-harder deferred, not deleted.
ARCHITECTURE swimlane and clarifications match.
UAT is POC, so #10 is in DOC COMPLETE. Capture knobs live on-screen, review
confidence presentation, 409/422 field recovery, taxonomy cache, portable
Call 1→Call 2, shared validation. U2Net Try harder deferred, not deleted.
Check in implementable deploy/docker-compose.yml, .env.example, and Caddy
fragment. Store URL is env SoT (not a settings row). Application Password
setup stays in DEPLOYMENT §5 (issue #5).
DEPLOYMENT is host-variable: APP_HOST/APP_HOSTNAME/ports, inventory
worksheet, corrected Caddy handle /api/* before frontend. Drop RemBG
and output_px 1000 as deploy SoT. AGENTS §9, README, IMPL host wording
match. Historical .201 lab is a non-normative callout only.
Align PRD/README/CONTENT-WOO/DATA-MODEL/OPENAPI/DEPLOYMENT with AGENTS.md
and the POC review package: hybrid client SoT, bdft without /12, server AES
creds, woo_create_status draft|publish with SLAB-UAT-* firebreak, deploy smoke
and health path /api/health.
Lock hybrid topology, Woo draft+SLAB-UAT-* UAT firebreak, client-authoritative
TECH-SPEC math, and sequenced inference after Gate C. Supersede obsolete
server-pipeline Phase 0 and flag Phase 2 offline/OCR/ruler as out of POC scope.