This commit is contained in:
@@ -26,25 +26,40 @@ exit (QUALITY-30); agents record raw evidence, never declare green.
|
||||
- **Sequence:** first task of the sprint.
|
||||
- **Stop:** rows merged + gate green. **Evidence:** runner output.
|
||||
|
||||
### T2. #99 tape-line calibration (folded into G1)
|
||||
- **Goal:** G1. **IDs:** CAPTURE (dimensions), REQS-50. **Issues:** #99.
|
||||
- **Skills:** `systematic-debugging` (verify the prototype assumption),
|
||||
`wireframe-review-iteration` (reference the overlay interaction), `svelte-core-bestpractices`.
|
||||
- **Starting point:** `frontend/src/capture/TapePrototype.svelte` + `?tape-prototype`
|
||||
sandbox on the `m4` branch; `docs/design/issue-99-tape-line-overlay.html` (approved
|
||||
wireframe); `frontend/src/png/crop.ts` (projection logic).
|
||||
- **Work:** promote the prototype to the shipped calibration path (owner drags both
|
||||
ticks to the actual tape start/end; scale = tick-pixel distance / owner-declared
|
||||
length — no `maskSpanAlong` check), delete the
|
||||
sandbox + query-param gating, keep `crop_fill` (already landed in 818874e).
|
||||
**Scope (Ty confirmed):** confined to the calibration step — the photos-ready
|
||||
lineup (CAPTURE-130) stays as-is; #99 does not touch it.
|
||||
- **Verification:** unit tests in `frontend/src/png/*` (tape geometry + tick-distance
|
||||
scale math in photo px under pan/zoom/rotate), `tsc --noEmit`,
|
||||
manual calibration on one slab at 375px.
|
||||
### T2. #99 tape-line calibration (folded into G1) — AS-BUILT, shipped
|
||||
- **Goal:** G1. **IDs:** CAPTURE-170, CAPTURE-175, CAPTURE-75. **Issues:** #99 (issue
|
||||
body still describes the superseded draggable-tick model — this entry is the as-built).
|
||||
- **Skills:** `systematic-debugging`, `svelte-core-bestpractices`,
|
||||
`docker-uat-deploy` (isolate-and-verify the review preview).
|
||||
- **As-built:** a **fixed** black centre line with two end ticks, drawn on the stage
|
||||
fixture. The line is **never an owner input** — not draggable, not focusable, not
|
||||
keyboard-nudgeable, and not part of the published pose. The **source photo/slab is the
|
||||
only thing that moves**: drag to pan, wheel/pinch to zoom, the ↻ handle or arrow keys
|
||||
(Shift = fine step) to tilt. The owner aligns the *slab* to the fixed line at the place
|
||||
the tape measurement was taken. Typed Length is the real inches read off the tape, and
|
||||
the fixed line represents that same length. Scale = fixed-line pixel span / declared
|
||||
Length; `maskSpanAlong` is not the scale source. The crop slider is the **sole** control
|
||||
of the line ends: `crop_fill=90` puts each end 5% from its corresponding edge.
|
||||
Calibration rotation applies to the calibration clean PNG + overlay only; batch
|
||||
siblings stay unrotated.
|
||||
- **Superseded (do not restore):** draggable ticks; `TapePrototype.svelte` and the
|
||||
`?tape-prototype` sandbox (both deleted); `frontend/src/png/crop.ts` (removed in
|
||||
6000ac2 — crop geometry now lives in `frontend/src/capture/tapeLine.ts`
|
||||
`cropEnds(fillPercent)`); the `sveltedrag` dependency (404s on npm, never added).
|
||||
The wireframe `docs/design/issue-99-tape-line-overlay.html` lives on branch
|
||||
`issue-99-tape-line-overlay` (63b8879), not on `m4`.
|
||||
- **Verification:** unit tests in `frontend/src/capture/tapeLine.test.ts` (ends fixed by
|
||||
the crop slider, never an owner input) + `frontend/src/png/{inventory,overlay}.test.ts`
|
||||
(calibration rotation reaches the calibration PNG/overlay only); `tsc --noEmit`;
|
||||
`npm run build`; e2e `frontend/tests/e2e/tape-fixed-line.spec.ts` (no tick drag; a tick
|
||||
drag behaves identically to a pan; ends follow the crop slider).
|
||||
- **Sequence:** parallel with T3–T5; no dependency on T1.
|
||||
- **Stop:** prototype shipped, `?tape-prototype` removed, tests green.
|
||||
**Evidence:** test output + a 375px capture of the calibration drag.
|
||||
- **Stop:** SHIPPED. UAT-signed off by Ty 2026-09-25 on the M4 review preview
|
||||
(`http://192.168.1.202:10883/?noload=1`, build `a756cf5`, branch `m4`).
|
||||
- **Evidence:** `npm test` 102/102; requirements + coverage gates green; live e2e on the
|
||||
deployed preview (0°/20° rotation produces differing clean PNG + overlay bytes); render
|
||||
gate clean at 1440/768/375 with no overflow or clipped text; Ty's UAT sign-off.
|
||||
**Not covered:** `svelte-check` still reports its known 42-error baseline.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user