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
runs.tactile.to is on the open internet behind only an app password
To doOwner · met_c9d4fcf7
Add runs.tactile.to as an additional hostname on the existing 'TacTile Internal' Cloudflare Access app (emailed one-time code) without touching the shared tunnel, per the audit addendum on https://github.com/TacTile-dev/TacTile/pull/734. It blocks the launch task.
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