Lanes
One lane at a time — the goal, the critical path, and the current wave of blockers.
Approve: NFC/QR Core PipelineTo do · blockerReal scans are never recorded: nothing calls POST /api/events/openBlocked · blockerVerify end-to-end scan path for all 14 destination typesTo doBuild the unassigned/orphaned tag landing pageDoneSuppress analytics event writes for free-tier accountsDoneUnify the four conflicting hash validation patternsDoneAssess hash entropy against enumeration and PII scrapingDoneDecide and implement Free-tier destination revitalizationDoneRate-limit and cache the public scan resolverTo doTriage the "couldn't connect to the server" preview clusterDoneAndroid NdefUriDecoder accepts any host: anchor it to tactile.to / *.tactile.to or decide custom-domain tagsDonePublic scan landing page polishTo doReplace the duplicate web hash-shape copies with one shared import once #658 or #681 landsTo doAndroid NdefMessageBuilder.build always writes the Text record; spec omits it when the hash is blankDoneiOS Program NFC Tag read path rejects 7 and 8 character hashes; spec says accept 7-9Donendef-format.md is stale: deleted symbols, wrong line cites, duplicate messageIsEmpty, no URI decode tableTo doCI gives no per-suite proof for the NDEF suites: iOS prints totals only, Android's newest main run was a Gradle cache hitTo doFix tap_count hardcoded to 0 in NFC metadata endpointDoneAdd hash exhaustion alertingDoneRun end-to-end NFC hardware soak testTo doDocument NDEF record formatDoneConfirm whitelabel.tactile.to DNS + routingDoneAdd hash-format validation on /t/[hash] scan landingDoneLoad-test QR/NFC scan resolution at scale (1M+ events)To doDecide: is missing camera QR scanning in iOS/Android intentional?To doReconcile the three divergent hash generatorsDoneClose the check-then-insert race on hash claimingDoneEnforce chip compatibility in code, not just docsTo doHandle partially-written and orphaned physical tagsTo doSign off: NDEF spec and the 111 encoding unit testsDoneFree-tier inactivity: R2 media purge job (follow-up to t_9008dc76)To doAPI: 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 doAPI: validate the hash shape in the four /content handlers (documents, notes, videos, audio) like destinationsPublic.ts doesTo doAndroid NfcWriter has no post-write read-back verify (spec 4a step 5)DoneNDEF parity corpus: iOS asserts 1 of 5 vectors and no https://www. vector exists; generator and Kotlin disagree on wwwTo dondef-format.md section 5 contradicts itself on empty + read-only; NFCTagClassifier.classify and diagnose order them oppositelyTo 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
Decide: is missing camera QR scanning in iOS/Android intentional?
To doOwner · met_d884ea32
Unlocks 1Approve: NFC/QR Core Pipeline
Show the prompt
To doIn progressDoneBlockedPick a wave on the left · tap a task to expand it