From fb50e6e7b4067bb0b210a48c59d888c6c3596c6e Mon Sep 17 00:00:00 2001 From: Ty Date: Fri, 11 Sep 2026 14:01:29 +0000 Subject: [PATCH] docs: strip editorial language from CAPTURE.md --- docs/CAPTURE.md | 47 ++++++++++++++++------------------------------- 1 file changed, 16 insertions(+), 31 deletions(-) diff --git a/docs/CAPTURE.md b/docs/CAPTURE.md index 94fe7f2..d3eda22 100644 --- a/docs/CAPTURE.md +++ b/docs/CAPTURE.md @@ -1,41 +1,26 @@ # Capture -Client-side. Phone and PC. This is the hard part of Slice 1. +Runs in the browser on phone and PC. -## Goal +## Output -Isolate just the slab, with quick visual feedback, then produce: +From one approved reference photo: -1. A uniform inventory PNG for the product page -2. Filterable sizes and board feet from that **reference** photo - -The user’s eye on the overlay is the quality gate. There is no confidence score on the mask. - -## Controls (Slice 1) - -- Sheet: Auto / Green / Black, only if the background is not obvious -- **One** sensitivity slider -- Overlay on the **source** photo, live as the slider moves -- No Apply button, no server round-trip to tune the cut - -If the edge is still wrong after the slider, retake. Extra sliders (edge offset, feather, and so on) are a fallback after real slabs prove one control is not enough. Do not ship four sliders up front. - -## After the user approves the edge - -Then — and only then — run the rest on the client: - -- Length axis from the mask; user can rotate / confirm if it is skewed -- User length `L` (inches, 1/8") is the scale: `scale = longest_axis_px / L` -- Width samples every 6" along that axis (min / max / avg for the listing, not for bdft) +- Inventory PNG: transparent, 3:4, slab centered, 80% fill at extremes, shorter side at least 1600px when the source allows +- Widths (min, max, avg) sampled every 6 in along the length axis - `sqft = (mask_pixels / scale²) / 144` (2 decimals) -- `bdft = sqft × thickness_in` (2 decimals). Identity: 1 sqft at 1" = 1 bdft -- Inventory PNG: transparent, 3:4 portrait, slab centered, 80% fill at the extremes, shorter side ≥ 1600px when the source allows -- Undersized source: warn and require retake +- `bdft = sqft × thickness_in` (2 decimals) -User-entered length, thickness, SKU, and price always win over computed values. +`scale = longest_axis_px / L` where `L` is user length in inches (1/8 in steps). -## Proof for this file +## Controls -On a real phone, after Approve, the processed PNG and the numbers appear. If Approve does nothing, capture is not done. +- Sheet: Auto, Green, or Black +- Sensitivity: one slider +- Overlay on the source photo, updated as the slider moves -Algorithm detail and test vectors: `docs/archive/TECH-SPEC-PIPELINE.md` (history). Live behavior is this file. +User approves the edge, then the PNG and measurements run. + +Length axis comes from the mask. User may rotate it. Thickness is a user 1/8 in pick. + +Source below the PNG size floor requires a new photo.