fix(capture): align masked tape calibration with #99
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# M4 — Goals (DRAFT — not accepted)
|
||||
# M4 — Goals
|
||||
|
||||
Role: goals for Milestone 4. Cites requirement IDs and Gitea issue numbers; defines none
|
||||
new until accepted. Source of truth for scope will be `docs/MILESTONES.md` (M4 ID subset)
|
||||
@@ -22,8 +22,9 @@ Raw runner evidence recorded; Ty owns gate exit (QUALITY-25/30).
|
||||
1. **Stabilize + polish the M3 experience (A) — includes the #99 tape-line calibration (B).**
|
||||
- **Tape-line calibration (#99):** replace the axis-rectangle calibration with a draggable
|
||||
tape-line (black line + two rifle-scope end ticks). Declared length = distance between
|
||||
ticks (owner-declared); `maskSpanAlong` demoted to an optional sanity check. New
|
||||
requirement row(s); supersedes the as-built length model in CAPTURE-60/75. The `m4`
|
||||
ticks (owner-declared); scale = tick-pixel distance / declared length, no
|
||||
`maskSpanAlong` check. New
|
||||
requirement row(s); supersedes the projected-span length model in CAPTURE-60/75. The `m4`
|
||||
branch already carries `crop_fill` + `TapePrototype.svelte` (`?tape-prototype`); M4
|
||||
promotes it from prototype to shipped.
|
||||
- **UX polish:** photo-picker look/feel (#91), photo filenames on submit (#92), capture
|
||||
@@ -100,8 +101,8 @@ Raw runner evidence recorded; Ty owns gate exit (QUALITY-25/30).
|
||||
|
||||
## Requirements delta (draft — rows written at execution, after acceptance)
|
||||
|
||||
- **New rows (draft):** tape-line calibration behavior (overlay, draggable ticks,
|
||||
owner-declared length, sanity check). ~1–3 rows under CAPTURE.
|
||||
- **New rows:** tape-line calibration behavior (overlay, draggable ticks,
|
||||
owner-declared length, tick-distance scale). ~1–3 rows under CAPTURE.
|
||||
- **New rows (draft):** the **manual taxonomy selection UI** — owner picks species / wood
|
||||
categories (primary + secondary) / edge / figure / grade / moisture / tags by hand,
|
||||
thumb-first, with no inference pre-fill. ~1 row under METADATA or REVIEW.
|
||||
@@ -126,7 +127,7 @@ Raw runner evidence recorded; Ty owns gate exit (QUALITY-25/30).
|
||||
|
||||
1. **Tape-line calibration + M3 polish ship together (Goal 1):** the `?tape-prototype`
|
||||
sandbox is replaced by the shipped calibration path (owner drags both ticks; declared
|
||||
length = tick distance; as-built length model no longer the source of truth), and the
|
||||
length = tick distance; no `maskSpanAlong` check), and the
|
||||
M3 polish issues (#91–#100, excluding #96 which drops with Call 1) are closed with
|
||||
passing tests and raw runner evidence.
|
||||
2. **The review flow is human-driven, thumb-first, and Call 1-free:** the owner can pick
|
||||
@@ -156,11 +157,11 @@ Raw runner evidence recorded; Ty owns gate exit (QUALITY-25/30).
|
||||
|
||||
## Task-level decisions (settled during the sprint, not at planning)
|
||||
|
||||
These are implementation details the task breakdown and wireframe settle — not plan-level:
|
||||
the exact thumb-first interaction model (wizard vs single-scroll, chips vs pickers), which
|
||||
of #91–#100 are M4-must vs nice, whether #99 touches the photos-ready lineup (CAPTURE-130),
|
||||
and the exit-walk shape (single slab vs QUALITY-110 pair; test-inference is text-only now
|
||||
that Call 1 is out).
|
||||
The only plan-level open item is the exact thumb-first interaction model
|
||||
(wizard vs single-scroll, chips vs pickers) — settled by the wireframe.
|
||||
Settled at kickoff (not reopened here): full #91–#100 polish wave (only #96 drops
|
||||
with Call 1); #99 confined to the calibration step (CAPTURE-130 lineup untouched);
|
||||
exit walk is a single slab carrying multiple photos.
|
||||
|
||||
## Task breakdown detail bar
|
||||
|
||||
|
||||
@@ -34,11 +34,13 @@ exit (QUALITY-30); agents record raw evidence, never declare green.
|
||||
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), adopt the as-built length model (maskSpanAlong projection), delete the
|
||||
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), `tsc --noEmit`,
|
||||
- **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.
|
||||
- **Sequence:** parallel with T3–T5; no dependency on T1.
|
||||
- **Stop:** prototype shipped, `?tape-prototype` removed, tests green.
|
||||
@@ -76,8 +78,8 @@ exit (QUALITY-30); agents record raw evidence, never declare green.
|
||||
wireframe, 2026-09-24) for the visual language + the interaction model.
|
||||
- **Work:** 2–3 HTML variants of the thumb-first review flow. Standing paradigms:
|
||||
*no tap-bubble chip clouds for long lists → collapsible searchable checklist*;
|
||||
leftmost-kept-is-primary for wood (primary + optional secondaries); AI-assist
|
||||
labeled as "suggested, confirm"; every metadata requirement present (primary
|
||||
leftmost-kept-is-primary for wood (primary + optional secondaries);
|
||||
no AI-assist surface (Call 1 decommissioned); every metadata requirement present (primary
|
||||
wood-category required, secondaries optional).
|
||||
- **Verification:** Ty reviews the served variants and accepts one (375/768/1280).
|
||||
- **Sequence:** before T5/T6. **Stop:** Ty accepts a variant.
|
||||
|
||||
Reference in New Issue
Block a user