Real-fixture path and harness for product-state evidence on TV-3 bdft identity,
TV-6 crop/PNG rules, TV-7 undersized warn/retake, and TV-10 rounding.
- fixtures/real/: acquisition README, placeholder metadata JSON templates
- fixtures/real-fixtures.ts: loader that decodes real PNGs, generates masks,
runs the pipeline, fails-closed when absent or unmarked
- tv3-real.test.ts / tv6-real.test.ts / tv7-real.test.ts / tv10-real.test.ts:
product-state tests that skip when real fixtures are absent
- Updated RESULTS.md with real-fixture harness note
- Added pngjs devDependency for PNG decoding in Node.js
Dual-proof preserved: proxy-synthetic unit rows remain separate and unchanged.
Gate B is not green; product-state rows are blocked pending Ty-supplied photos.
D-1 contract tests now pass (8/8). The python-multipart>=0.0.30,<1
dependency was already in requirements.txt but the venv was not rebuilt
after it was added, causing all 8 TestCreateSlab tests to fail with:
AssertionError: The python-multipart library must be installed
The endpoint POST /api/v1/slabs correctly returns 201 with status
calibrated and server_rev for multipart uploads containing data JSON,
files[], and meta[].
Evidence: test-results/d1-fix-2026-09-07/pytest.txt (8 passed)
Gate B reports treated synthetic TV passes as if they satisfied product-state
exit. Soft result words like "not run" also blurred fail-closed reporting.
Encode the seven evidence and process locks in docs/TEST-SPEC.md as closed
vocab tables, required columns, Gate B exit checklist, Build brief refusal
fields, and SoT mutation permit-before-write. Add Evidence class to every
case table. Reclassify gate-b RESULTS so TV-3/6/7/10 vitest passes stay
proxy-synthetic, Gate exit product-state rows are blocked, and "not run"
becomes blocked. Gate B remains not green.
Pure units module: bdft = sqft × thickness_in (no /12), half-up
rounding for sqft/bdft/price, length to nearest 1/8". Property
checks for monotonicity in thickness and sqft.
TDD: red evidence in test-results/tv3-tv10-red.txt, then minimum impl.
Results:
TV-3 | pass | test-results/tv3-tv10-green.txt
TV-10 | pass | test-results/tv3-tv10-green.txt
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