merge work/merge-89-90 into main (Create-string #89/#90 + PR #97 fixes)
Reconciles two independent lines of work that both touched Review.svelte, MultiSelect.svelte, and the thickness band: - main's PR #97 (client-side thicknessBand.ts + MultiSelect names/commit + syncSelects DOM race fix + box-sizing CSS) - work/merge-89-90 (server-side thickness band in thickness_band.py, Create-string #89, metadata_locked dropped, photo strip, wood primary) Canonical resolution: the band is SERVER-side (hidden from UI, sent to Woo on publish), so the client-side thicknessBand.ts + read-only band display are removed from Review.svelte; PR #97's syncSelects() and box-sizing CSS are preserved (orthogonal fixes). MultiSelect takes selectedSummary from woodPrimary.ts (names in closed state) + the ms-count testid + onDestroy timer cleanup; duplicate close()/summary definitions dropped. Gates: backend 117/117, unit 88/88, tsc clean, e2e 6/6 (m3-create + photo-strip).
This commit is contained in:
@@ -199,7 +199,7 @@ The listing is built in two inference calls, both optional. Call 1 (vision) read
|
||||
| QUALITY-80 | Pipeline vector TV-6: 3:4 crop, 90 percent fill at extremes, transparent PNG, shorter side at least 800 when the source allows. | shipped | — |
|
||||
| QUALITY-85 | Pipeline vector TV-7: an undersized source warns, is not upscaled, and is not publishable until retake. | shipped | — |
|
||||
| QUALITY-90 | Pipeline vector TV-8: bdft 0.96 at 12.50 per bdft gives a 12.00 recommendation, and an override of 150.00 is stored. | M3 | — |
|
||||
| QUALITY-95 | Pipeline vector TV-9: a 1 inch thickness rounds up into the synced Woo thickness band, not a hardcoded one. | M3 | — |
|
||||
| QUALITY-95 | Pipeline vector TV-9: a 1 inch thickness rounds up into the synced Woo thickness band, not a hardcoded one. | M3 | backend/tests/test_thickness_band.py |
|
||||
| QUALITY-100 | Pipeline vector TV-10: half-up 2 decimal rounding, including 96.04 to 96, 0.641 to 0.64, 11.525 to 11.53, 12.345 to 12.35. | shipped | — |
|
||||
| QUALITY-105 | Dishonest proxies that do not count as pass: hardcoded or fixture taxonomy treated as synced, a Woo mock that never hits the real store for the exit walk, unit tests alone without a real SLAB-UAT-* draft, consumer-key auth, inference wired as dead config or required for create, claiming ready with empty fields, or parking work on the wrong branch. | M3 | — |
|
||||
| QUALITY-110 | The M3 exit evidence is a real SLAB-UAT-* Woo draft matching the reviewed ready set with inference off, plus test-woo and test-inference results. | M3 | — |
|
||||
|
||||
@@ -121,10 +121,10 @@ hard stop. Switch to a supported browser.
|
||||
3. **Wood categories.** Pick at least one from the synced list.
|
||||
4. **Edge type, figure, grade.** Pick from the synced lists. One edge type, at least one figure,
|
||||
exactly one grade.
|
||||
5. **Thickness band.** Not a control — it is derived automatically from the measured
|
||||
thickness (the thickness-in rounds up into the synced Woo band, `TV-9` / `QUALITY-95`).
|
||||
It displays read-only on the Review screen; fix it upstream by correcting the thickness
|
||||
on capture/measure if the band looks wrong.
|
||||
5. **Thickness band.** Not on the screen and not picked: the server bands the measured thickness
|
||||
up into the synced Woo band, stores it, and publish sends it to the store. Verify after publish
|
||||
that the Woo product's Thickness attribute is the band the captured thickness rounds up into
|
||||
(`QUALITY-95`).
|
||||
6. **Moisture.** Keep the default (kiln-dried) or change it.
|
||||
7. **fig-* tags.** Optional; pick any from the synced list.
|
||||
8. **feat-* tags.** Zero or more. Only pick existing `feat-*` tags.
|
||||
|
||||
@@ -12,7 +12,7 @@ Status: SPEC · 2026-09-18. Presentation spec for the mill-owner flow on phone a
|
||||
| CAPTURE-40, CAPTURE-41, CAPTURE-45, CAPTURE-50, CAPTURE-55 | sheet/sensitivity controls, overlay, retake |
|
||||
| CAPTURE-60, CAPTURE-65, CAPTURE-70, CAPTURE-80, CAPTURE-85, CAPTURE-90 | axis, entry, derived numbers |
|
||||
| CAPTURE-105, CAPTURE-130, CAPTURE-135, CAPTURE-141, CAPTURE-145, CAPTURE-150, CAPTURE-155 | crop guard, lineup order, upload, preview/controls, failure |
|
||||
| METADATA-10, METADATA-15, METADATA-30 | required taxonomy fields and cardinality |
|
||||
| METADATA-10, METADATA-15, METADATA-30, QUALITY-95 | required taxonomy fields and cardinality; the thickness band is derived from the measurement, not picked |
|
||||
| METADATA-45, METADATA-55, METADATA-110 | pre-fill, Generate text availability |
|
||||
| PUBLISH-5, PUBLISH-10, PUBLISH-15, PUBLISH-20, PUBLISH-25, PUBLISH-30, PUBLISH-35, PUBLISH-36, PUBLISH-37, PUBLISH-38, PUBLISH-50 | publish sequence, outcomes and messaging |
|
||||
| REVIEW-5, REVIEW-10, REVIEW-15, REVIEW-20, REVIEW-25, REVIEW-30, REVIEW-40, REVIEW-45, REVIEW-50 | ready set, gating, fields, limits |
|
||||
@@ -62,6 +62,9 @@ Cites REVIEW-5, REVIEW-15, REVIEW-20, METADATA-45.
|
||||
(`REVIEW-5`) via that derived value.
|
||||
- **Primary category.** The owner declares one primary wood category and any secondary ones; the
|
||||
default is the first selected.
|
||||
- **Thickness band is derived and not shown.** The measured thickness bands up into the synced Woo
|
||||
band server-side (`METADATA-15`, `QUALITY-95`); Review carries no thickness-band control and no
|
||||
read-only echo of it. The derived band is stored on the slab and sent to the store at publish.
|
||||
- **Inline nudges.** Every empty required field shows an inline nudge as the owner works; there is
|
||||
no single submit-time gap list.
|
||||
- **Calculated fields.** Widths, sqft, and bdft are read-only and not overridable.
|
||||
|
||||
Reference in New Issue
Block a user