Lanes
One lane at a time — the goal, the critical path, and the current wave of blockers.
Approve: Security & SecretsTo do · blockerNEEDS MATTHEW: audit every SECURITY DEFINER function for the PUBLIC execute grantTo do · blockerDO NOT RUN: the armed Stripe live-webhook rotation script would leave prod rejecting every webhookBlocked · blockerPer-account rate limiting on write endpointsDoneRate limit auth endpointsDoneAgent-run pre-launch security auditDoneRotate all credentials at production cut-overTo doEncrypt card connector tokens — currently plaintextTo doMake the cookie banner actually gate non-essential storageDoneNEEDS MATTHEW NOW: anon can delete any account — one REVOKE closes itDoneNEEDS MATTHEW: v_account_tier leaks the full customer roster to anon — confirmed liveDoneAdd in-product Report link on the public destination viewerBlockedContact PATCH was wiping every card field — fixed, PR #164DoneNEEDS MATTHEW: GitHub Actions billing wall — all CI is blockedDoneApply the October DB hardening batch (F-1 anon public-destinations read + 5 drafted migrations)To doruns.tactile.to is on the open internet behind only an app passwordTo doEnable Supabase leaked-password protectionTo doPublish security.txt (vulnerability disclosure)DoneConfirm sandbox flag unset in productionDoneAdd CORS middleware to tactile-apiDoneAdd CSP header on web responsesDoneAdd HSTS headerDoneSAST scanning in CIDoneCookie consent bannerDoneAudit log table for sensitive opsDoneAdd abuse-report endpointDoneDocument secrets inventoryDoneDependency scanning in CIDoneAgent-harness escape strings were shipping in page source — stripped, PR #167Done
Wave
Security & Secrets
v1.0 security hardening + secrets discipline. Agent-run security audit before production cut-over (no third-party pen test for v1.0).
TacTile › Launch TacTile › Foundations › Security & Secrets
20/29 done9 open3 open blockers
Selected taskclear
Audit log table for sensitive ops
DoneOwner · ait_5f133c60
Append-only log of sensitive actions (auth changes, billing, deletions).
Show the prompt
To doIn progressDoneBlockedPick a wave on the left · tap a task to expand it