Good morning, Matthew.

NNova337 need you · 5 to hand off · 867 shipped overnight
Overnight · 2026-08-02

Much quieter night, and for a real reason rather than a lucky one. Four lanes ran — TacTile, Just Electrolyte, Release Timer and command-hub — and escalations fell from 728 to 235 because last night's check fixes held; command-hub went to zero, which is what it should have been all along. I took one more bite tonight: colour literals inside test files are fixture data, not design violations, since qr-scannability.test.ts asserts contrast ratios with literal hexes and a token would destroy the test. That cleared another 23. What's left is 212 findings I deliberately did not touch, because the check itself says they need you — it rates them hard on the grounds that choosing between an existing token and a new one is a judgement about design intent. They cluster on three self-contained pages: TacTile's health-map, its hub auth screen, and Release Timer's site index, each carrying its own local palette. Nothing was auto-fixed anywhere for the third night running, which by now looks less like nothing being fixable and more like auto-fix never actually firing.

Paste into a new session — it has the context to work through this.
Needs you now337
01
AtAthletic · Cadence
Confirm Thursday points race
Registration closes 6pm.
Blocked
02
JEJust Electrolyte · Sol
Sign the co-packer RFQ
Needs signature today to hold the slot.
Blocked
03
JEJust Electrolyte · Sol
Size container, scoop and induction seal
Gated on bulk density.
Blocked
04
TtTacTile · Viv
Approve: Deep link & handoff
Blocked
05
TtTacTile · Viv
NEEDS MATTHEW: staging STRIPE_WEBHOOK_SIGNING_SECRET
Staging Stripe webhooks still 500. The signing secret exists nowhere I can reach it — 1Password's Stripe.test_webhook_secret is empty and Cloudflare secrets are write-only.
Blocked
06
TtTacTile · Viv
Verify support@tactile-connect.com delivers end-to-end
Every legal document and product surface now publishes this one address. Nothing has proven it actually arrives.
Blocked
07
TtTacTile · Viv
Seed a demo account — it blocks BOTH the Play screenshots and Kaitlynn's QA pass
Screenshots and QA are blocked by the same missing thing: an account with representative data, and the only database available is backup-less production.
Blocked
08
TtTacTile · Viv
MATTHEW: profiles.visibility is nullable with no default, so any profile created without it reads as public
Blocked
09
TtTacTile · Viv
The production account's data is 42 days stale — Analytics renders empty at any default window
Measured read-only against production: the newest scan event is 2026-07-05. 7-day and 30-day windows both return zero events; 90-day returns 9,388. Any Analytics screenshot at a default window is empty regardless of build configuration or who is signed in.
Blocked
10
TtTacTile · Viv
Real scans are never recorded: nothing calls POST /api/events/open
Found 2026-09-27 during the analytics seed sweep. Every analytics number on every platform is seed data; a real NFC tap or QR scan writes no analytics_events row.
Blocked
11
TtTacTile · Viv
DO NOT RUN: the armed Stripe live-webhook rotation script would leave prod rejecting every webhook
Found 2026-10-05 while preparing t_90e27a65. scripts/secrets/rotations/stripe.live_webhook_secret.mjs is armed and pushes the wrong secret names, then deletes the old live endpoint.
Blocked
12
TtTacTile · Viv
Enable branch protection on main
Blocked
13
TtTacTile · Viv
QA: Subscription / Billing
Blocked
14
TtTacTile · Viv
QA: Billing hand-off to web/Stripe QR
Blocked
15
TtTacTile · Viv
Audit AI agent/MCP claims on the marketing site against what ships
Same underlying gap as the investor-honesty AI Assistant task, applied to public site copy.
Blocked
16
TtTacTile · Viv
QA (iPad): Split View, Slide Over, and rotation
Blocked
17
TtTacTile · Viv
web-mobile staging has no DNS record — the worker has been deploying into the void
Blocked
18
AtAthletic · Cadence
Ship the Lanes module
Code is written and verified in the working tree at ~/Command/cycling/athletics-hub. Needs commit + push; CI deploys on push to main.
Done
19
AtAthletic · Cadence
N2a — Set Cronometer secrets
Matthew-only. Blocks the scheduled pull from working, though the code can be written first.
To do
20
CSClearSource · Clara
Send the 103.31 request to CBP National Finance Center, Indianapolis
To do
21
CSClearSource · Clara
DECIDE: accept CBP's price and terms, or fall back to a paid vendor
To do
22
CSClearSource · Clara
DECIDE: sign a vendor contract (recurring spend)
To do
23
CSClearSource · Clara
DECIDE: how many brands must resolve to real shipments before going public
To do
24
CSClearSource · Clara
DECIDE: the domain
To do
25
CSClearSource · Clara
DECIDE: the host (Vercel is the only verified path; Cloudflare is buildable, not deployable)
To do
26
CSClearSource · Clara
Push the repo to GitHub; this is what activates the daily-pipeline cron
To do
27
CSClearSource · Clara
Approve: final read of the live site before anyone is told about it
To do
28
CSClearSource · Clara
CLEARSOURCE LIVE ON REAL DATA
To do
29
CSClearSource · Clara
Announce on X, LinkedIn, HN and Reddit
To do
30
CSClearSource · Clara
DECIDE: buy historical backfill, or start from today forward
To do
31
CSClearSource · Clara
Approve: Data Acquisition (CBP / vendor)
To do
32
CSClearSource · Clara
Approve: Ingest & Incoming Format
To do
33
CSClearSource · Clara
Approve: Entity Resolution & Review Queue
To do
34
CSClearSource · Clara
Approve: Findings & §10 Legal Posture
To do
35
CSClearSource · Clara
Approve: Pipeline Operations & Daily Cron
To do
36
CSClearSource · Clara
DECIDE: implement PostgresAdapter for v1, or leave it a phase-2 stub
To do
37
CSClearSource · Clara
Approve: Data Layer & Adapters
To do
38
CSClearSource · Clara
Approve: Site, Routes & Components
To do
39
CSClearSource · Clara
Approve: SEO, Metadata & Structured Data
To do
40
CSClearSource · Clara
Approve: Accessibility & Cross-device
To do
41
CSClearSource · Clara
Approve: Content & Editorial Standards (read every public page end to end)
To do
42
CSClearSource · Clara
Approve: Affiliate / Resale Layer
To do
43
CSClearSource · Clara
DECIDE: self-serve API key issuance for v1, or keep it manual
To do
44
CSClearSource · Clara
Approve: Public API
To do
45
CSClearSource · Clara
Approve: Deploy, Hosting & Domain
To do
46
CSClearSource · Clara
Approve: Observability, Health & Incident Response
To do
47
CSClearSource · Clara
DECIDE: who meets the 2-day acknowledge and 7-day resolve correction SLA
To do
48
CSClearSource · Clara
Approve: Legal, Policy & Corrections Intake
To do
49
CSClearSource · Clara
Approve: Security, Secrets & Rate Limiting
To do
50
CSClearSource · Clara
Approve: Testing
To do
51
CSClearSource · Clara
Approve: Repo Hygiene & Docs
To do
52
CSClearSource · Clara
DECIDE: pricing for the keyed API tier
To do
53
CSClearSource · Clara
Call CBP Collections (317) 614-4514 for the real 103.31 price and electronic-delivery answer
To do
54
CSClearSource · Clara
Get a real ocean bill-of-lading extract in hand
To do
55
CSClearSource · Clara
Set PIPELINE_AUTOCOMMIT=true so daily releases actually reach production
To do
56
CSClearSource · Clara
DNS, HTTPS and redirects verified on the real domain
To do
57
CSClearSource · Clara
Hand-verify resolved brands against the raw customs records
To do
58
CSClearSource · Clara
Verify FINDINGS_AUTOPUBLISH is unset or false in every environment
To do
59
CSClearSource · Clara
Work the findings review queue on the first real batch
To do
60
CSClearSource · Clara
Practice a rollback: repoint CURRENT and redeploy, before relying on it live
To do
61
CSClearSource · Clara
Cross-device and screen-reader pass on the real deployed site
To do
62
CSClearSource · Clara
Apply to eBay Partner Network (no traffic minimum, covers every category)
To do
63
CSClearSource · Clara
Create an Impact.com publisher account and apply to The RealReal
To do
64
CSClearSource · Clara
Create a CJ Affiliate publisher account and apply to Vestiaire Collective
To do
65
CSClearSource · Clara
Apply to Skimlinks and confirm ThredUp is live in its merchant list
To do
66
CSClearSource · Clara
Reconfirm every commission rate and cookie window inside each network's own dashboard
To do
67
CSClearSource · Clara
Create the host account and link the repo (Root Directory = apps/web)
To do
68
CSClearSource · Clara
Set the four launch env vars in the host project
To do
69
CSClearSource · Clara
Set NEXT_PUBLIC_CONTACT_EMAIL to a real, monitored inbox
To do
70
CSClearSource · Clara
Point an uptime monitor at /api/health and alert on a non-ok body, not the status code
To do
71
CSClearSource · Clara
Read /privacy and /disclosures against the real-data posture
To do
72
JEJust Electrolyte · Sol
Confirm Venice Unit B zoning permits food manufacturing
Call LA City Planning. Ask specifically whether the unit permits food processing/manufacturing as a use. BINARY GATE: if this fails the entire in-house path collapses and all downstream work is wasted. One phone call, $0.
To do
73
JEJust Electrolyte · Sol
Magnesium citrate GRAS determination
HIGHEST RISK. As a supplement, trimagnesium dicitrate is fine under DSHEA. As a conventional food, every ingredient must be GRAS or an approved additive, and magnesium citrate has no FDA GRAS affirmation for general food use. Needs a self-GRAS determination (literature review + expert panel) or a food attorney opinion letter. Gates the label, the listing, and arguably the first batch. 3-6 weeks, $3k-$15k.
To do
74
JEJust Electrolyte · Sol
Convert cGMP build from 21 CFR 111 to 21 CFR 117
PRODUCTION-CONTEXT.md specs batch records under Part 111 (supplement rule). Conventional food runs under Part 117 Subpart C: written Food Safety Plan (HARPC), hazard analysis, preventive controls, sanitation controls, supply-chain program, recall plan. Different document set. 4-8 weeks.
To do
75
JEJust Electrolyte · Sol
Trademark clearance search on Just Electrolyte
Never run. Real risk: the mark is highly descriptive for an electrolyte powder and invites a §2(e)(1) descriptiveness refusal on the Principal Register. Know this before spending filing fees.
To do
76
JEJust Electrolyte · Sol
File trademark via Amazon IP Accelerator
Critical: Brand Registry accepts a registered trademark OR one pending specifically through IP Accelerator. A direct USPTO filing does NOT qualify while pending, and direct registration runs 10-14 months. IP Accelerator costs more up front and buys ~a year of earlier Brand Registry access. ~$700 attorney + $350/class.
To do
77
JEJust Electrolyte · Sol
Log the in-house manufacturing decision in STATUS.md
The 2026-07-31 analyses (self-manufacture-options.html, self-manufacture-vs-copacker.xlsx) recommend a co-packer and model self-manufacture at $25k-$90k/yr negative. Overridden but never reconciled in writing. Write the decision entry with reasoning so the repo stops contradicting itself.
To do
78
JEJust Electrolyte · Sol
Close out or park the co-packer RFQ pipeline
118 RFQs sent, 18 replies, 0 selected, task t_je_rfq blocked on signature. Either formally close it or keep 1-2 warm as fallback. Stop it sitting blocked.
To do
79
JEJust Electrolyte · Sol
Complete PCQI certification (FSPCA course)
Part 117 requires a Preventive Controls Qualified Individual. Must be Matthew. ~2.5 days, ~$700. Prerequisite to a valid food safety plan.
To do
80
JEJust Electrolyte · Sol
Rebuild label panel as Nutrition Facts (21 CFR 101.9)
RACC-driven serving size, ingredient statement in descending order by weight, allergen statement. Existing Supplement Facts panels are the wrong format and carry an unresolved Calcium %DV error (declares 2%, actual 2.3%). Note repo conflict: PRODUCTION-CONTEXT.md §7 marks this DONE, FOOD-REPOSITIONING-CONTEXT.md marks it must-rebuild.
To do
81
JEJust Electrolyte · Sol
Rewrite claims guardrails for conventional food
Food claims are tighter than supplement claims; DSHEA disclaimer no longer applies. 'Supports hydration' needs re-evaluation in a food framing.
To do
82
JEJust Electrolyte · Sol
Prop 65 heavy-metals screen (ICP-MS)
On the mineral ingredients. Doubles as Prop 65 exposure check. $300-$800.
To do
83
JEJust Electrolyte · Sol
FDA Food Facility Registration
Required now that JE manufactures and holds. Free, biennial renewal, online, same day.
To do
84
JEJust Electrolyte · Sol
CDPH Processed Food Registration
California requirement for a food processing facility. ~$200-$500/yr.
To do
85
JEJust Electrolyte · Sol
LA City BTRC registration
Business tax registration certificate.
To do
86
JEJust Electrolyte · Sol
Product liability insurance ($1M CGL)
Amazon requires $1M commercial general liability above $10k/mo, but carry it before the first unit ships. ~$500-$1,500/yr.
To do
87
JEJust Electrolyte · Sol
Correct trademark class from IC 005 to IC 032
Repo plans IC 005 (pharmaceutical/supplement). Food repositioning moves this to IC 032 (non-alcoholic beverages, powders for making beverages). Wrong class wastes the fee and the priority date.
To do
88
JEJust Electrolyte · Sol
Buy GS1 US Company Prefix (1-10 tier)
Direct from gs1us.org, never a barcode reseller. Amazon cross-checks Verified by GS1; a resold UPC shows the wrong registrant and blocks listing creation (error 5665). $250 + $50/yr.
To do
89
JEJust Electrolyte · Sol
Assign GTIN and register in Verified by GS1
Brand name string must match the Amazon listing brand exactly.
To do
90
JEJust Electrolyte · Sol
Enroll in Amazon Brand Registry
Once the IP Accelerator filing lands. Unlocks A+ content.
To do
91
JEJust Electrolyte · Sol
Open Amazon Professional Seller account
Entity: Just Electrolyte LLC. EIN 42-3305529. Chase business account. $39.99/mo.
To do
92
JEJust Electrolyte · Sol
Pass Amazon identity and video verification
Most common new-account failure is a name/address mismatch across government ID, bank statement, and business formation docs. Make all three read identically before starting. Days to 3 weeks.
To do
93
JEJust Electrolyte · Sol
Enter CDTFA seller's permit in Amazon tax settings
Permit #244-732128, retrieved 2026-09-09.
To do
94
JEJust Electrolyte · Sol
Complete Amazon tax interview
W-9, LLC taxed as partnership (Form 1065).
To do
95
JEJust Electrolyte · Sol
Confirm grocery category gating requirements in Seller Central
Do this inside the live account rather than trusting secondhand summaries. Gating scope changes and the application form is ground truth.
To do
96
JEJust Electrolyte · Sol
Get bulk density from ADM TDS
1-3 week supplier lead time. Gates jar size, scoop size, fill percentage, slack-fill exposure.
In progress
97
JEJust Electrolyte · Sol
Complete dehumidified room buildout
Blender, induction sealer, precision balance, dehumidifier. Pails ordered 2026-09-12.
In progress
98
JEJust Electrolyte · Sol
Run first batch with Part 117 batch records
Gated on the Part 117 conversion, PCQI cert, and container sizing.
To do
99
JEJust Electrolyte · Sol
Finished-product COA from ISO/IEC 17025 lab
Not strictly required for grocery gating, but needed for Prop 65, for the purity claims currently pulled from the site, and as insurance if Amazon challenges the category. $400-$1,200.
To do
100
JEJust Electrolyte · Sol
Establish expiration dating with a stability basis
Amazon requires the date on the exterior, MM-DD-YYYY or MM-YYYY, 36pt minimum, with 90+ days shelf life remaining on arrival at the fulfillment center. Needs a stability basis, not a guess.
To do
101
JEJust Electrolyte · Sol
Rewrite Amazon listing files for food/grocery, single SKU
Currently four SKUs targeting dietary supplements. Reduce to the one launch SKU (Tub Normal 60-serving) and rewrite for food/grocery with food-compliant claims.
To do
102
JEJust Electrolyte · Sol
Decide FBA vs FBM
FBA small-standard runs ~$3.20-$3.38/unit plus 3.5% fuel surcharge. Storage $0.78/cu ft/mo Jan-Sep but $2.40 Oct-Dec (3x peak penalty). Realistic timeline puts first inbound in Q1 2027, which avoids it. Do not rush inventory in during Q4 to hit a date.
To do
103
JEJust Electrolyte · Sol
Create the Amazon listing
Gated on GTIN, gating approval, and account verification.
To do
104
JEJust Electrolyte · Sol
Build A+ content
Requires Brand Registry.
To do
105
PePersonal · Ivy
Renew passport
Expires in under 6 months.
To do
106
RTRelease Timer · Piper
Set up Release Timer domain email (support@)
Done
107
RTRelease Timer · Piper
Create + deploy the public Release Timer website
Done
108
RTRelease Timer · Piper
WEBSITE SIGNED OFF
To do
109
RTRelease Timer · Piper
Approve exporters
To do
110
RTRelease Timer · Piper
Approve roster + sessions flow
To do
111
RTRelease Timer · Piper
Approve settings page
To do
112
RTRelease Timer · Piper
VELODROME APPROVED
To do
113
RTRelease Timer · Piper
Submit velodrome for review
To do
114
RTRelease Timer · Piper
DECIDE: Sheets/Excel sync in v1?
To do
115
RTRelease Timer · Piper
Approve Sheets/Excel sync
To do
116
RTRelease Timer · Piper
Approve speed-skating mode
To do
117
RTRelease Timer · Piper
Approve swimming mode
To do
118
RTRelease Timer · Piper
Approve athletics mode
To do
119
RTRelease Timer · Piper
Approve rowing mode
To do
120
RTRelease Timer · Piper
Approve equestrian mode
To do
121
RTRelease Timer · Piper
SPORT FAMILY APPROVED
To do
122
RTRelease Timer · Piper
Submit the 5 sport apps for review
To do
123
RTRelease Timer · Piper
DECIDE: PDF exporter — keep or kill?
To do
124
RTRelease Timer · Piper
Approve PDF export
To do
125
RTRelease Timer · Piper
Submit velodrome to Play review
To do
126
RTRelease Timer · Piper
Create Google Play Console app + app signing
To do
127
RTRelease Timer · Piper
Test + approve: on-device timing at a real track session
To do
128
RTRelease Timer · Piper
Test + approve: watch app on device
To do
129
RTRelease Timer · Piper
Create Google Cloud OAuth client + Azure AD app registration
To do
130
RTRelease Timer · Piper
Test + approve: on-device timing on Android at a real track session
To do
131
RTRelease Timer · Piper
Test + approve: Wear OS watch app on device
To do
132
RTRelease Timer · Piper
DNS / HTTPS / redirects verified
Done
133
RTRelease Timer · Piper
good-night design check parses only HSL tokens — hex-form token files resolve to zero
Shared-runner gap found during the 2026-07-25 /good-night run. release-timer's first successful nightly produced 136 escalations, 126 of them design findings — all false positives caused by this. Not a release-timer-only bug; filed here because this is where it surfaced.
To do
134
TtTacTile · Viv
Approve: Legal & Compliance
[approve] Matthew's final sign-off gate for the legal package.
To do
135
TtTacTile · Viv
Approve: Security & Secrets
Matthew's final sign-off gate for security.
To do
136
TtTacTile · Viv
Approve: Shared Packages
Matthew's sign-off that the shared UI layer is ready for surfaces to build on.
To do
137
TtTacTile · Viv
Review anon-executable SECURITY DEFINER functions
35 RPC functions callable by anon/authenticated; confirm each is intentional (several analytics_group_* look wrong). Found by live audit.
Done
138
TtTacTile · Viv
Approve: Database & Supabase
Matthew's sign-off gate for the database.
To do
139
TtTacTile · Viv
Approve: Backend API
To do
140
TtTacTile · Viv
Approve: Auth & User Management
To do
141
TtTacTile · Viv
Approve: Email & Notifications
To do
142
TtTacTile · Viv
Approve: Custom Domains
To do
143
TtTacTile · Viv
Approve: Billing & Payments
To do
144
TtTacTile · Viv
Approve: Workers & Durable Objects
To do
145
TtTacTile · Viv
Approve: Supabase Edge Functions
To do
146
TtTacTile · Viv
Approve: DevOps Foundation
To do
147
TtTacTile · Viv
Approve: DevOps Launch Readiness
To do
148
TtTacTile · Viv
Approve: iOS QA — Core surfaces
To do
149
TtTacTile · Viv
Approve: iOS destination editing
To do
150
TtTacTile · Viv
Approve: iOS QA — Settings
To do
151
TtTacTile · Viv
Submit iOS build for review
To do
152
TtTacTile · Viv
Approve: iOS destination viewers
To do
153
TtTacTile · Viv
Approve: iOS release
To do
154
TtTacTile · Viv
Approve: iOS iPad adaptation
To do
155
TtTacTile · Viv
Approve: iOS QA — Destinations
To do
156
TtTacTile · Viv
Approve: Android pre-submission blockers
To do
157
TtTacTile · Viv
Approve: Android tablet support
To do
158
TtTacTile · Viv
Approve: Android feature parity
To do
159
TtTacTile · Viv
Approve: Android QA sign-off
To do
160
TtTacTile · Viv
Submit Android build for review
To do
161
TtTacTile · Viv
Approve: Android release
To do
162
TtTacTile · Viv
Approve: Web public destination viewer
To do
163
TtTacTile · Viv
Approve: Web desktop destination creation
To do
164
TtTacTile · Viv
Approve: Web app shell & dashboard
To do
165
TtTacTile · Viv
Approve: Web QA sign-off
To do
166
TtTacTile · Viv
Approve: NFC/QR Core Pipeline
To do
167
TtTacTile · Viv
Approve: Video & Media
To do
168
TtTacTile · Viv
Approve: AI Agent
To do
169
TtTacTile · Viv
Approve: RAG / Semantic Search
To do
170
TtTacTile · Viv
Approve: Analytics UI
To do
171
TtTacTile · Viv
Approve: Contacts & Leads
To do
172
TtTacTile · Viv
Approve: Admin & Support
To do
173
TtTacTile · Viv
GO / NO-GO decision
This is the last decision before shipping.
To do
174
TtTacTile · Viv
TacTile v1.0 LAUNCHED
To do
175
TtTacTile · Viv
Approve: Marketing website
To do
176
TtTacTile · Viv
Approve: Business & documentation
Matthew's final sign-off gate for the Business & documentation package.
To do
177
TtTacTile · Viv
Approve: iOS Dashboard, Canvas & Assets
To do
178
TtTacTile · Viv
Approve: iOS Settings, Analytics & tools
To do
179
TtTacTile · Viv
Approve: iOS QR build
To do
180
TtTacTile · Viv
Approve: iOS QA — iPad
To do
181
TtTacTile · Viv
Approve: Web → app handoff
Matthew — Gate. Done when: all handoff tasks (deep-link infra, design, build, QA) are done and Matthew has reviewed the end-to-end experience.
To do
182
TtTacTile · Viv
Approve: Dashboard, Canvas & Assets build
To do
183
TtTacTile · Viv
Approve: Settings, Analytics & tools build
To do
184
TtTacTile · Viv
DECISION: Shop — ship a real store or pull it to match iOS's dead-code status
Done
185
TtTacTile · Viv
Approve: Destinations build
Done
186
TtTacTile · Viv
Approve: Settings, Analytics & agent build
To do
187
TtTacTile · Viv
Approve: Surface build
To do
188
TtTacTile · Viv
Approve: Android QA — Tablet
To do
189
TtTacTile · Viv
Approve: Dead code removal
To do
190
TtTacTile · Viv
Approve: Destination editing
To do
191
TtTacTile · Viv
Approve: Proposal card data layer
To do
192
TtTacTile · Viv
Approve: Approvals & sessions
To do
193
TtTacTile · Viv
Approve: Android parity
To do
194
TtTacTile · Viv
Approve: Quality bar
To do
195
TtTacTile · Viv
Approve: QR management
me — Final approval that desktop and mobile web QR management reaches native parity per Matthew's 2026-07-26 decision ('manage all the destinations and QR codes... everything except physically encode the NFC'). Done when: all QR management wave tasks are done and QA sign-off is verified.
To do
196
TtTacTile · Viv
Approve: Hardware & fulfillment
To do
197
TtTacTile · Viv
Decide: RAG stays internal-only or becomes the agent's retrieval layer
To do
198
TtTacTile · Viv
Decide: will RAG ever index per-account/customer content?
To do
199
TtTacTile · Viv
Approve: MCP surface
To do
200
TtTacTile · Viv
NEEDS MATTHEW: audit every SECURITY DEFINER function for the PUBLIC execute grant
A systemic grant bug found while applying the audit-log migration. Several destructive SECURITY DEFINER functions are executable by PUBLIC or by anon in production right now.
To do
201
TtTacTile · Viv
Gallery save: verify the real 3-phase HTTP round trip (needs a session)
The gallery edit save decision is unit-tested and the rendering is device-verified, but no gallery has ever been saved through the real three-phase sequence against a live API.
Done
202
TtTacTile · Viv
verify:secrets-rotation is red — VideoTranscoder secret is a placeholder in 1Password
The video transcoder's shared secret works in production but was never recorded in 1Password, so a CI gate fails for every PR until someone updates the vault entry.
To do
203
TtTacTile · Viv
MATTHEW — 8 decisions that unblock the four sessions
Done
204
TtTacTile · Viv
Provision apps/android/local.properties so the Android app can reach a backend
To do
205
TtTacTile · Viv
GitHub Actions is off for the whole repo — billing wall fails every job in 2s
Done
206
TtTacTile · Viv
PROD INCIDENT: sign-in and sign-up are dead on tactile.to
tactile.to/signin and /signup render "Something went wrong". Every conversion path from the marketing site dead-ends. Cause found and fixed; the fix is on feature/web and needs merging + a prod deploy.
Done
207
TtTacTile · Viv
MATTHEW — approve applying migration 0901 to prod (link-channel analytics)
Done
208
TtTacTile · Viv
Decide how QA runs against a prod-only database before Kaitlynn's phone pass
The Android debug build writes to the production database, which has no backups. Needs a decision on how the QA pass runs, not an engineering fix.
To do
209
TtTacTile · Viv
ESCALATE → Matthew: 13 critical secrets 31-57 days overdue, hidden because verify short-circuits and CI is down
To do
210
TtTacTile · Viv
Rotate the leaked Supabase service_role key + provision the release iOS plist
To do
211
TtTacTile · Viv
MATTHEW: eight legal documents marked DRAFT — NOT IN FORCE are published and now linked from marketing
To do
212
TtTacTile · Viv
MATTHEW: add db_url to the 1Password Supabase item — two RLS audits have never been runnable
verify:db-grants and verify:rls-snapshot both need a Postgres connection string. No db_url field exists on the Supabase vault item, and none ever has — so the only detector for RLS fixture staleness has never run, by anyone.
Done
213
TtTacTile · Viv
MATTHEW: production's API Worker has not been deployed since 2026-08-17 — five weeks of merged work is not live
Read from Cloudflare's deployment ledger, not inferred. Blocks the Backend API gate's definition of done, and one of the undeployed commits is the Stripe webhook that turns analytics on for paying accounts.
Done
214
TtTacTile · Viv
The RLS fixture expires 2026-09-30 and freezes main — only Matthew can refresh it (Touch ID)
A dated, unavoidable gate failure eight days out. The refresh needs a live database credential, the credential needs biometric approval, and no agent session can supply it.
Done
215
TtTacTile · Viv
NEEDS MATTHEW: tactile-connect.com is parked and down. Restore Cloudflare nameservers before ~10/26
Found by Nova on 2026-10-22 through a Cloudflare email that sat unread in Tactile Junk. Mail to matthew@tactile.to has been landing in Junk since 9/17. Verified ~3:15pm PT 10/22 via DNS-over-HTTPS and Verisign RDAP: - Registry NS is DNS101/DNS102.REGISTRAR-SERVERS.COM (Namecheap default), not Cloudflare. RDAP "last changed" is 2026-10-17 08:44 UTC. - The zone answers NS ns1/ns2.lander.d.parity.domains (a parking lander), with NO MX and NO TXT records. - app.tactile-connect.com resolves to 104.219.250.37 / 2.59.170.20, which are not Cloudflare. - Result: the app origin and support@tactile-connect.com are both down. - RDAP: registered 2025-10-16, expiry shows 2027-10-16, registrar NameCheap, Inc. Likely cause (inferred, not confirmed): the first-year renewal on 10/16 lapsed and Namecheap parked the domain. Cloudflare's 10/19 email, "[Action required] Restore nameservers", says the zone is in a moved state and may be deleted after 7 days, so around 10/26. Fix (Matthew): Namecheap > Domain List > tactile-connect.com. Renew if it shows expired, turn on auto-renew, then set Nameservers to Custom DNS using the two Cloudflare nameservers shown on the zone's Overview page in Cloudflare.
To do
216
TtTacTile · Viv
Approve: iOS dead code removal
To do
217
TtTacTile · Viv
Approve: Web responsive depth
To do
218
TtTacTile · Viv
Approve: web-mobile parity
To do
219
TtTacTile · Viv
iOS build sign-off
Final QA pass + submit iOS build.
Done
220
TtTacTile · Viv
QA: Delete account
Done
221
TtTacTile · Viv
Verify in-app purchase products match Stripe/App Store Connect
To do
222
TtTacTile · Viv
QA: Delete account and sign out
Done
223
TtTacTile · Viv
QA: Subscription + billing
Done
224
TtTacTile · Viv
QA: Account deletion
To do
225
TtTacTile · Viv
Decide whether the AI agent ships enabled at launch
Done
226
TtTacTile · Viv
Define what 'basic analytics' means for the v1.0 cut line
To do
227
TtTacTile · Viv
Decide whether a contacts/leads inbox ships in v1.0
To do
228
TtTacTile · Viv
Decide what to do with form_submissions as lead capture (surface, export, retention)
To do
229
TtTacTile · Viv
Decide whether destination sharing / collaborator permissions ship in v1.0
To do
230
TtTacTile · Viv
Run the cut-list checkpoint
The ladder, in drop order: (1) AI Agent + RAG, (2) advanced Analytics UI, (3) tablet/iPad adaptive polish, (4) non-core Video & Media, (5) Admin/Support depth, (6) lean marketing page. Never cut: Legal, Security, Auth, Billing, NFC/QR core, iOS, Web shell, CI/CD, Testing.
To do
231
TtTacTile · Viv
Plan the rollout
To do
232
TtTacTile · Viv
Resolve the marketing site vs (marketing) route-group split
Two marketing surfaces with unclear ownership is a launch hazard.
To do
233
TtTacTile · Viv
Write the go-to-market plan
Strategic — Matthew's call.
To do
234
TtTacTile · Viv
Decide the in-app purchase strategy
CRITICAL: audits found neither iOS nor Android has any in-app purchase path — no StoreKit, no Play Billing, no RevenueCat. Billing today is Stripe web checkout only. Apple requires in-app purchase for digital goods sold inside an app — both a store-review risk and a margin decision (Apple/Google take ~15-30%).
Done
235
TtTacTile · Viv
Decide fate of ProfilePhotoCropReviewView (ship or delete)
To do
236
TtTacTile · Viv
Decide fate of Analytics Overview tab (ship or delete)
To do
237
TtTacTile · Viv
Decide fate of legacy Dashboards widget system (~15 files)
To do
238
TtTacTile · Viv
Decide Goals v2 scope (recurrence, prefill, streak history, sort, status, taxonomy)
To do
239
TtTacTile · Viv
Decide routing for 'Program NFC Tag' hub tile
To do
240
TtTacTile · Viv
Define real scope of the destination-analytics pipeline before it's built blind
To do
241
TtTacTile · Viv
Design the handoff experience
Matthew — Decide what a web user sees when they need to program a physical tag. Done when: a documented decision covers (a) desktop QR-to-phone, (b) mobile-web direct app-open, (c) app-store fallback preserving intent, (d) the return path after programming — ready to hand to engineering. File: apps/web-mobile/features/nfc/components/NfcExplainerSection.tsx, apps/web-mobile/features/nfc/constants.ts.
To do
242
TtTacTile · Viv
me — Decide whether CSP enforcement (CSP_ENFORCE=1) is set in the production deployment environment, and confirm it before next release.
Done when: CSP is verified either intentionally report-only or actually enforced in prod, not silently defaulting to report-only because an env var was never set. File: apps/web/middleware.ts:30-56.
To do
243
TtTacTile · Viv
QA: Shop cart and checkout
Done
244
TtTacTile · Viv
QA: web-mobile subscription
Done
245
TtTacTile · Viv
Define what "pristine" means for the AI agent
To do
246
TtTacTile · Viv
Decide how customers buy hardware at launch
To do
247
TtTacTile · Viv
Select hardware supplier(s) and confirm pricing at real order volumes
To do
248
TtTacTile · Viv
Place the initial hardware inventory order
To do
249
TtTacTile · Viv
Secure product liability insurance
To do
250
TtTacTile · Viv
Reconcile investor deck's "Contact — SHIPPED" claim with reality
To do
251
TtTacTile · Viv
Reconcile gross margin figures (92.6% vs 86.1% vs 80.2%)
Highest-signal reconciliation item — three margin figures in circulation, Section 6 contradicts itself.
To do
252
TtTacTile · Viv
Reconcile pre-seed raise tiers ($340/470/729K vs $539/691/993K)
Two tier sets nine days apart — investor-facing, needs one canonical answer.
To do
253
TtTacTile · Viv
Confirm TAM framing: $45.8B (business plan) vs $137M (Investor Plan v2 wedge)
Likely intentional (broad TAM vs narrow wedge) but needs explicit confirmation and consistent labeling.
To do
254
TtTacTile · Viv
DECIDE: AI Assistant/MCP "SHIPPED" claim in Investor Plan v2 vs reality
Highest-priority item in this wave — investor-facing claim the product cannot currently perform.
To do
255
TtTacTile · Viv
DECIDE: competitive matrix self-score (14/14) vs actual destination coverage
Investor-honesty item — self-score does not match shipped destination coverage.
To do
256
TtTacTile · Viv
DECIDE: "Contact" listed as SHIPPED content type — no contacts feature exists
Investor-honesty item — claimed shipped feature does not exist.
To do
257
TtTacTile · Viv
DECIDE: "no third-party data sales" pledge dropped from canonical S13
Confirmed drift from the Section 13 audit — real policy weakening, not cosmetic.
To do
258
TtTacTile · Viv
Add IP-assignment and NDA agreements to S13's pre-launch checklist
Confirmed drift — trade-secret strategy depends on agreements the checklist doesn't require.
To do
259
TtTacTile · Viv
Add product liability + workers' comp to S13's insurance plan
Confirmed drift — hardware company with a gap in coverage that matters.
To do
260
TtTacTile · Viv
Fix cap table misstatement: S13 says "no SAFEs" while one is actively being raised
Confirmed drift — active fundraising document contains a factual misstatement.
To do
261
TtTacTile · Viv
DECIDE: revisit Marketing website's cut-list position now it's the only purchase path
Flagged by Nova: no-IAP decision materially changes this wave's risk profile.
To do
262
TtTacTile · Viv
Honesty check — reconcile investor deck MCP claims against what ships
To do
263
TtTacTile · Viv
Decide: restore or drop the "no third-party data sales, ever" pledge
Done
264
TtTacTile · Viv
Execute IP assignment and NDA agreements
To do
265
TtTacTile · Viv
Reconcile the three conflicting gross margin figures
To do
266
TtTacTile · Viv
Reconcile the two pre-seed ask tiers
To do
267
TtTacTile · Viv
Reconcile investor-deck claims against what actually ships
To do
268
TtTacTile · Viv
Build the hardware purchase path now that Shop is cut
To do
269
TtTacTile · Viv
Plan for store rejection
To do
270
TtTacTile · Viv
Appoint an Article 27 EU representative
To do
271
TtTacTile · Viv
Execute SCCs with all seven sub-processors
To do
272
TtTacTile · Viv
NEEDS MATTHEW NOW: anon can delete any account — one REVOKE closes it
delete_account_cascade is SECURITY DEFINER with an explicit anon EXECUTE grant and no caller check. Unauthenticated, unrecoverable account deletion. Live right now.
Done
273
TtTacTile · Viv
NEEDS MATTHEW: v_account_tier leaks the full customer roster to anon — confirmed live
Exploit confirmed against production: the publishable anon key returns all 20 accounts with billing state. Fix is written and verified; applying it is blocked by policy.
Done
274
TtTacTile · Viv
NEEDS MATTHEW: GitHub Actions billing wall — all CI is blocked
Every GitHub Actions job now refuses to start. Separate from, and discovered by, fixing the tactile-hub deploy.
Done
275
TtTacTile · Viv
EMIT LEG: send method:\"link\" from the clients, or the Link bucket stays at zero
To do
276
TtTacTile · Viv
POST /api/events/open is documented public+unauth but 401s anonymously
Done
277
TtTacTile · Viv
verify:one-contact-address is red on main — design/card-creation-flow.html publishes kaitlynn@tactile.to 14 times
Done
278
TtTacTile · Viv
MenuCard + GalleryCard ignore schema.collection — the backend has been sending it
Done
279
TtTacTile · Viv
Demo account for screenshots + QA — seeder is live, shape is frozen
To do
280
TtTacTile · Viv
Decide the triggers for the 6 system error screens — all are unreachable
All six system sheets (loading, no internet, server error, scan failed, scan permissions, action not found) are built and wired into RootView but nothing ever triggers them. Needs a product decision on what each should respond to before anyone wires them.
To do
281
TtTacTile · Viv
Apple sign-in on web + Android is probably dead since 24 May — the client-secret JWT expired
Sign in with Apple's web/OAuth client secret is a JWT with at most 6 months of life. docs/runbooks/web-auth-provisioning.md:23-24 recorded on 2026-06-15 that it EXPIRED 2026-05-24; the 1Password stamp still reads 2026-05-11, so it was probably never regenerated. Native iOS is unaffected (no client secret); web and Android (Custom Tab OAuth) are.
To do
282
TtTacTile · Viv
Unblock QA: decide launchpad-first Family + Group creation (holds 4 blocked QA tasks)
Four of Kaitlynn's iOS Family checks are on hold for a Family redesign that nothing in the hub tracks as a decision.
To do
283
TtTacTile · Viv
SECURITY: hosted MCP tool agent.approval.resolve may let the model approve its own proposals
Found overnight 29→30 Sep by the ops sweep (static read, untested): the hosted MCP server appears to expose agent.approval.resolve to the model, and the handler does not check the approval's status or who is resolving it — so an AI client could approve the action it just proposed, bypassing the human approval step.
Done
284
TtTacTile · Viv
Apply the October DB hardening batch (F-1 anon public-destinations read + 5 drafted migrations)
Six drafted production migrations, F-1 among them, each applied by Matthew on its own named yes per runbook doc 2 on https://github.com/TacTile-dev/TacTile/pull/732. Filed in the Security wave but serves both the Security (t_0383f11c) and Database (t_6d3c02a5) gates, which approve with it as a named follow-up; it blocks the launch task.
To do
285
TtTacTile · Viv
runs.tactile.to is on the open internet behind only an app password
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.
To do
286
TtTacTile · Viv
MATTHEW: standing go for Viv to push non-force merge-main and fix commits to r24-r28 draft PR branches (13 PRs)
One yes that lets Viv push non-force merge-main or fix commits to older (r24 to r28) draft PR branches. Today your manual says those branches are not Viv's, so 13 PRs in docs/launch/MERGE-QUEUE.md wait on it.
To do
287
TtTacTile · Viv
Run `sudo xcodebuild -runFirstLaunch` once: Xcode 27.1 needs a CoreSimulator update, no iOS simulator test can run until then
DECISION: ENVIRONMENT (not money, legal or production). Run `sudo xcodebuild -runFirstLaunch` once at the Mac (admin password). RECOMMEND: yes, today; it installs Apple's CoreSimulator update (1171.7.0 to 1174.9.2) for the Xcode 27.1 that landed at 07:42 on Fri 16 Oct. IF YES, NEXT: Viv re-runs the xcodebuild tests for #695 (t_b99b1d3f) and #705 (t_35080470) and the ship branches' test runs, about 30 minutes each on a quiet host. COST IF YES: one password prompt, about 5 minutes, no repo, hub or production effect. COST IF NO: every iOS simulator test run waits; self-hosted CI iOS test jobs may stall on the same prompt. SAFE TO ASSUME: nothing is lost; builds still work (system Xcode, generic simulator destination).
Done
288
TtTacTile · Viv
RLS snapshot fixture turns pnpm verify red for every branch on 5 Nov (30-day age limit)
tests/unit/rls-cross-tenant.test.ts fails verify:unit when tests/fixtures/rls/policy-snapshot.json is more than MAX_FIXTURE_AGE_DAYS (30) old. main's copy was generated 2026-10-06T19:09Z, so from about 5 Nov 2026 every gate.sh run and every CI verify fails on main and on every branch. Branches cut before 6 Oct already fail it today (r45 saw this on #795: 35 days).
To do
289
TtTacTile · Viv
Decide fate of Map breadcrumb drill-down feature
To do
290
TtTacTile · Viv
Decide fate of multi-entity Compare dashboard widget concept
To do
291
TtTacTile · Viv
Decide fate of Sources dashboard tile (needs new API endpoint)
To do
292
TtTacTile · Viv
Decide whether dashboard share/export is in scope
To do
293
TtTacTile · Viv
Decide Pro-lock widget scope for Dashboards palette
To do
294
TtTacTile · Viv
Decide real scope for QRLaunchpad Share & Export
To do
295
TtTacTile · Viv
Sign off: Settings surfaces not flagged in this audit
To do
296
TtTacTile · Viv
Sign off: Analytics files/widgets confirmed clean in this audit
To do
297
TtTacTile · Viv
Sign off: ConnectCard field editors and models confirmed clean
To do
298
TtTacTile · Viv
Sign off: AI stubbed-banner behavior confirmed working as intended
To do
299
TtTacTile · Viv
Sign off: QR generator and NFC stamp-test harness confirmed clean outside tracked gaps
To do
300
TtTacTile · Viv
me — Decide whether to complete the orphaned device-trust / verify-device feature on web-mobile or delete the dead scaffolding.
Done when: a decision is made and either (a) lib/auth/device-trust.ts is wired to a real /verify-device page and post-signin gate, or (b) the unused module is deleted. File: apps/web-mobile/lib/auth/device-trust.ts (getDeviceTrust/setDeviceTrust/clearDeviceTrust/clearAllDeviceTrust, zero call sites anywhere in the codebase).
To do
301
TtTacTile · Viv
Confirm .gitkeep scaffold folders are intentional, not abandoned work
Done
302
TtTacTile · Viv
Decide: delete the preview-only Analytics widget island (7 files, 8 uncalled client methods)
After #673 and #676, no shipping screen instantiates ScopeTypeSwitch.swift, CurrentEntityStrip.swift, CampaignWidgets.swift, DestinationWidgets.swift, GroupWidgets.swift, TriggerWidgets.swift or UniversalWidgets.swift (all under apps/ios/TacTileConnect/Features/Analytics/Components/); each has one #Preview. AnalyticsAPIClient also has eight methods with no caller: cadence, triggerSummaryDetail, sourceAttribution, destinationFunnel, campaignLifecycle, pacing, memberHealth, distribution. PageRangeBar.swift is NOT in this set: Dashboards uses it. Needs Matthew's call: delete (about 2,900 lines plus models) or keep as a reference for a future scope-aware Deep Dive.
To do
303
TtTacTile · Viv
Decide and document the web-mobile desktop story
To do
304
TtTacTile · Viv
Decide: is missing camera QR scanning in iOS/Android intentional?
To do
305
TtTacTile · Viv
Pick a support ticket tool
To do
306
TtTacTile · Viv
Decide: LegacyURLPill wiring
To do
307
TtTacTile · Viv
Decide: delete dead GroupDetailView.swift
Done
308
TtTacTile · Viv
Decide whether Compare tab should be Pro-gated
Done
309
TtTacTile · Viv
Decide fate of orphaned AnalyticsKitRealtimeScreen.swift
Done
310
TtTacTile · Viv
Decide fate of AI Q&A dashboard widget stub
To do
311
TtTacTile · Viv
Decide fate of ConnectCard photo field type
To do
312
TtTacTile · Viv
Decide when to build the real Webhook destination connector
To do
313
TtTacTile · Viv
Decide whether Approvals Inbox needs Tweak support
Done
314
TtTacTile · Viv
Decide the account-timezone plan for analytics day-boundaries
To do
315
TtTacTile · Viv
DECISION: AI agent — build typed proposal cards to match iOS's 13, or confirm one generic card is acceptable for v1
Done
316
TtTacTile · Viv
DECISION: build merge-into-group / group-expand UI parity on Android, or confirm intentional gap
To do
317
TtTacTile · Viv
Reconcile LTV:CAC (6.0–7.2:1) and payback (3.4–5.3mo) ranges
Depends conceptually on the gross-margin reconciliation task landing first.
To do
318
TtTacTile · Viv
Resolve retention conflict: S13's 90-day blanket vs indefinite Pro analytics retention
Confirmed drift from the Section 13 audit.
To do
319
TtTacTile · Viv
Fix the cap table's "no SAFEs" claim and document the former co-founder
To do
320
TtTacTile · Viv
Decide: gallery at exactly 30 items cannot swap in one save
A user whose gallery is full has to remove an item and save, then add the new one as a second save. That is a deliberate safety trade, but it is a product decision that should be confirmed rather than inherited.
To do
321
TtTacTile · Viv
Webhook signing secret: add the one surface that can reveal it
Done
322
TtTacTile · Viv
tile_nfc_profiles RLS exists in production but in no migration — the migrations do not describe prod
To do
323
TtTacTile · Viv
iOS has no destinations write path — name/description and mute are read-only from the client
To do
324
TtTacTile · Viv
NEEDS MATTHEW: decide whether resolve_trigger_destination keeps anon EXECUTE
Split out of t_449fbef0 in round 14. It is the one anon-executable SECURITY DEFINER function whose call sites could not be settled by grep, and revoking it wrongly breaks the core scan flow against a zero-backup database.
Done
325
TtTacTile · Viv
Decide whether the instrumented paint tier becomes a required gate (needs an emulator CI job)
To do
326
TtTacTile · Viv
5 proposal-only MCP ops are advertised with no task row building them
Found 2026-08-12 by deriving the MCP inventory (#371). Decide build-or-cut for each; they are advertised to every connected MCP client today.
To do
327
TtTacTile · Viv
NFC metadata returns hardcoded tap_count: 0 — buildable now, but blocked on a privacy decision
Round-20 item 3, investigated 2026-08-13. The two technical blockers previously believed to hold are BOTH false. What actually blocks it is a product/security call that is Matthew's.
Done
328
TtTacTile · Viv
MATTHEW: CI capacity — one Mac, two runners, and a full Xcode build now runs on every push
To do
329
TtTacTile · Viv
QR picker reuses the DESTINATION filter panel — wrong content, unscrollable
QRPickerView drives DestinationFilterViewModel/ActionFilterPanel, so picking a QR code offers "Search destinations" and a grid of 13 destination types. The panel also cannot be scrolled, so Sort By is cut off.
To do
330
TtTacTile · Viv
Menu priceDisplay's grouping comma makes any price ≥ $1,000 round-trip to 1/1000th — latent, pinned, needs a product call
Found by mutation-testing the menu content mapper on 2026-09-22. Not live today, and deliberately not "fixed" — changing the format changes what every diner sees on the public viewer, which is Matthew's call, not a test-driven one.
To do
331
TtTacTile · Viv
DEFERRED: rotation night + Supabase key migration moved to launch prep (Matthew, 30 Sep)
To do
332
TtTacTile · Viv
MATTHEW: install the nightly wake (install.sh + one sudo pmset) once PR #679 merges, and plug the Mac in overnight
The scheduled verify nightly is created 3.5-11.8h after its 09:00Z cron (12:31Z-20:47Z since 2026-08-27, measured 2026-10-01 over 46 runs) and 16 of the 36 runs since lost a job to "runner lost communication" while the Mac slept. PR #679 (draft) moves the wake/hold window to 04:15/04:17 local and makes the hold end when the run completes. Neither the com.tactile.ci-nightly-wake LaunchAgent nor a pmset repeating event is installed on tactile-m1max. The mechanism declines below 50% battery and the Mac was 15%->8% overnight and 5% at 21:17 PDT on 10-01, so plugging in overnight is the only thing that makes the nightly reliable.
To do
333
TtTacTile · Viv
Decide: Families Leaderboard on iOS (Deep Dive + Dashboards tile) - the roster request can only 400
Selecting a Family (campaign_id) in the iOS Deep Dive, or on a Dashboards Leaderboard tile, mounts a Leaderboard card whose only data source cannot succeed. DeepDiveViewModel.fetchRoster and TileViewModel.fetchRoster call AnalyticsAPIClient.roster, which sends GET /api/analytics/groups/roster with campaign_id and no group_id. groups.ts readGroupId (apps/api/tactile-api/src/routes/analytics/groups.ts:58-61) returns 400 'group_id required.' before anything else, so the card renders its error state for every Family. Not a regression: found in review of PR #676 (which removed the group-selection roster call, the only one that could succeed, and kept this one). No Worker endpoint returns a per-member roster for a Family (families.ts serves list, detail, summary, timeline, trigger add/remove). Needs Matthew's call: hide the card for Families now, or build a Family roster endpoint. Recommendation: hide it now.
To do
334
TtTacTile · Viv
DECIDE: family start/end window still gates scan attribution on the server (#683)
Found in review of draft PR #683 (iOS: families have no icon and no schedule). The UI decision "families have no timeline" is shipped on Android (#656) and about to be on iOS (#683), but the server still enforces the window: log_analytics_event attributes a scan to a family only while starts_at <= now() <= ends_at (supabase/migrations/20260521b_..._pro_only_visitor.sql:105-106, 202608271010_..._entitlement_sync.sql:270-271, 202609261245_..._families_lookup.sql:289-290). An older family with a closed window silently stops attributing scans, and iOS (after #683) and Android have no control to clear the dates; web desktop still shows the pill and, for a family with a window, the Schedule card.
To do
335
TtTacTile · Viv
Decide: add a "Save contact" button to the public web contact card?
The public web contact card (tactile.to/t/{hash}) has no Save contact action, while the web vCard builder promises "Tap-to-save into the system Contacts app" (apps/web/features/destinations/components/builders/ContactBuilder.tsx:115). Product call: build the button or change the copy. Found while briefing t_2359d09a; the vCard formatter already exists.
To do
336
TtTacTile · Viv
Decide: web Bluetooth builder defaults (name "Bluetooth", auto-pair off) to match web-mobile, iOS and Android
The desktop web Bluetooth builder starts with "Device pairs automatically" off (apps/web/features/destinations/components/builders/NetworkBuilders.tsx:131) and sends no name, so the API titles the destination "Bluetooth" (apps/api/tactile-api/src/routes/bluetooth.ts:84). web-mobile (NetworkBuilders.tsx:333,364), iOS (BluetoothBuilderView.swift:20), Android (BluetoothBuilderScreen.kt:40) and the API default (bluetooth.ts:104) start auto-pair on, and web-mobile sends the device name as the name. Product call from t_2d796dd1.
To do
337
TtTacTile · Viv
Plus promises "AI analytics (Basic)" but AI Insights is Pro-only: align server or plan lists
To do
Next on deck — hand off5Open Lanes →
→
JEJust Electrolyte · → Sol
Kick off a JE marketing & advertising session
Dedicated JE session, marketing and advertising only. Open in ~/Command/just-electrolyte/ so Sol loads.
To do
→
RTRelease Timer · → Piper
Set the real App Store URL on the site
To do
→
TtTacTile · → Viv
Verify point-in-time recovery is enabled
Confirm PITR/backup retention is actually on in Supabase settings — unverified in the audit, and it gates the backup policy doc.
To do
→
CSClearSource · → Clara
Refresh the homepage hero: three options, preview first
To do
→
AtAthletic · → Cadence
N1 — Migration 0002: daily_metrics + food_log
Narrow/EAV shape deliberately: one row per reading so Health's 9 metrics, nutrition macros and aero checks all fit without ALTER TABLE. Everything else in this wave waits on it.
To do
Tt
Weekly with Tess — ship review
TacTile · Meet
09:00
JE
Co-packer call — PureBlend
Just Electrolyte · Phone
14:00
At
Track session — peak block
Athletic · Velodrome
07:00
Tt
Enterprise demo — Northloop
TacTile · Zoom
11:00
At
Points race — Velo Sports Center
Athletic · Velodrome
18:00