TacTile›Launch TacTile›NFC/QR Core Pipeline·36 in this wave
API: make the visibility gate's fail-closed 404 carry a machine-readable reason, so /d /n /v /a and /t can say "unavailable" for a Supabase failureTo do
Wave

NFC/QR Core Pipeline

The core of the product — encoding tags and resolving scans. Everything else is a surface on top of this.

TacTile › Launch TacTile › NFC/QR Core Pipeline
18/36 done18 open2 open blockers
Selected taskclear

API: make the visibility gate's fail-closed 404 carry a machine-readable reason, so /d /n /v /a and /t can say "unavailable" for a Supabase failure

To doOwner · Vivt_dc0fecc1

Open half of draft PR #711 (and the same limit #681 records for /t). enforceVisibility (apps/api/tactile-api/src/middleware/visibility-gate.ts, run in index.ts BEFORE the route handler) covers documents/notes/videos/audio under the default destinations policy, and its first act is a Supabase read of the destinations row. A non-2xx or a throw lands in the catch at visibility-gate.ts ~310-334, which returns a bare notFound(). The route handler never runs, so it never sends its own 500, and the web pages cannot tell that 404 from an unknown hash: a Supabase failure behind a running API Worker still renders "not found" at /d /n /v /a (and /t). #711 only collapses the failures around the gate (Worker/edge 5xx, the 5s timeout, 429, a thrown fetch, a route-level 500, a non-JSON 200) into an "unavailable" card.

No dependencies in this wave — nothing gates it, and nothing waits on it.

Show the prompt
To doIn progressDoneBlockedPick a wave on the left · tap a task to expand it