[M3] No UI path creates a slab: capture → slab handoff is missing (APP-15, APP-20) #81
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Nothing in the frontend ever creates a slab.
POST /api/v1/slabsexists and is green in tests, but no screen calls it, and the capture flow (M2, fully built) never posts anything. The result is that every M3 screen — Photos, Review, Publish, Generate — requires the owner to hand-type a slab UUID, and there is no way to arrive at Review from a Photos-ready capture. This is the mechanical reason#77's flow cannot be walked end to end.Found in a read-only review of
main@b99cbdf(2026-09-20). 63 backend tests pass and both docs gates pass at that commit; these are gaps the green suite does not cover.Observed evidence
Every
/api/v1call site infrontend/src(exhaustive grep):There is no
POST /api/v1/slabs.frontend/src/capture/session.tscontains nofetch/POST at all — the capture draft lives only in IndexedDB.frontend/src/App.svelte:61-102renders the capture states and nothing on the "continue" path hands a slab id to any create screen;App.svelte:103-128mounts the six M3 components as(dev)toggles with no props and no shared state (each has its own localslabIdtext input).Compounding:
backend/slabs.py:100-102rejects a create unless all 29ALLOWED_FIELDSare present, including the client-derived math (sqft,bdft, widths) — so the handoff has to send the full calibrated slab, not an id.Acceptance
APP-15/APP-20: client-generated id, device draft retained) and carries the id into the next screen.QUALITY-50has no honest evidence.Related
#77(Review/Publish UI rebuild),#42,#46frontend/vite.config.tsdeclares no/apiproxy andplaywright.config.tsrunsnpm run build && npm run previewon :4173, so any E2E written today would 404 against the API — fix the harness with this work.