Prototype โ
Now, releasing December 2026. Code name Pilot Light. Audience is internal developers and designers only.
The Prototype release means the product is feature-complete and deliberately attacked and verified. It does not mean production or legal clearance: the cutover, the counsel-facing legal work, and everything downstream of them belong to Alpha, because 100% production readiness by December is not realistic and legal only becomes a blocker once outsiders arrive (operator, 2026-08-31).
P0 here means blocks the December release.
Phases are sequential. See Phases.
Phase 1: Environment โ
| Task | Category | Priority | Description | Why | Status | Issues |
|---|---|---|---|---|---|---|
| Onboarding path | Eng, Ops | ๐ดย P0 | One onboarding page, a doctor command that names the next step, POC-side access granting | A newcomer productive in ten minutes without hand-holding | โ Built | #825, #829 |
| Personal context sync | Eng | ๐ดย P0 | Adopt the context repo on every machine, keep it current, dated volatile files, generated index | Context stranded per machine loses work and starts sessions blind | ๐ง In progress | #834, #861, #862 |
| Local service stacks | Eng | ๐ ย P1 | One command to bring up a preset of services with port-collision guards | Standing up a stack by hand is where an afternoon goes | โฌ Not started | #855 |
| Doctor learns more | Eng | ๐ ย P1 | Worktree health, port status, the stale-server hint | The single best diagnostic should cover the things that actually break | โ Built | #857 |
| Local admin and merchant login | Eng | ๐ ย P1 | ADC cannot mint custom tokens, so local portal login is impossible | Forces portal work onto deployed dev | โฌ Not started | #819 |
| Prebuilt Codespace | Eng | ๐กย P2 | One-click environment with the agent tooling preinstalled | Only worth it if someone joins who cannot use the local path | โฌ Not started | #801 |
Phase 2: Build โ
The product works end to end.
| Task | Category | Priority | Description | Why | Status | Issues |
|---|---|---|---|---|---|---|
| Chat | Eng | ๐ดย P0 | End-to-end encrypted 1:1 messaging inside a connection | Two people who waved need somewhere to arrange the actual meet | โ Built | #166 |
| Frens | Eng | ๐ดย P0 | Keep a connection after a successful meet | Turns a one-off into retention, the second thing Alpha measures | โ Built | #159, #131 |
| Invite-gated signup | Eng | ๐ดย P0 | Account creation requires a single-use invite link, consumed server-side | Alpha is invite-only, and this is the mechanism that enforces it | โ Built | #375 |
| Light a lantern | Eng | ๐ดย P0 | Pick a venue, signal availability, expire on the 2-hour lifetime | It is the product | โ Built | #177, #28 |
| Phone and PIN sign-in | Eng | ๐ดย P0 | Phone plus PIN, external OTP behind a flag and a hard spend ceiling | The door to the product | โ Built | #289, #699 |
| User profiles | Eng | ๐ดย P0 | Anonymous profile with interests, client-side encrypted | Interests are what strangers match on | โ Built | #132, #147 |
| Venue data | Eng | ๐ดย P0 | Real venues with hours and age rules from OpenStreetMap plus enrichment | A lantern with nowhere to be lit is not a test | โ Built | #222, #250 |
| Wave to meet | Eng | ๐ดย P0 | Send and accept a meeting request between two lit lanterns | The mechanic Alpha exists to validate | โ Built | #177, #740 |
| Push notifications | Eng | ๐ ย P1 | Real OS push for waves and accepts, Android and desktop Chrome | A wave nobody sees is a meet that does not happen | โ Built | #161 |
| Block | Eng, Safety | ๐ดย P0 | Severs visibility both directions | Nobody meets strangers without an exit | โ Built | #144 |
| Report | Eng, Safety | ๐ดย P0 | In-chat report that opens a moderation case | The channel for the thing we hope does not happen | โ Built | #662, #678 |
| Moderation pipeline | Eng, Safety | ๐ดย P0 | Report to case to notice, with appeals | A report nobody reads is theater | โ Built | #145, #677 |
| Location proximity gating | Eng, Safety | ๐ดย P0 | The server validates you are at the venue before a lantern lights | A lantern lit from home is a stranger who is not where they say they are | โ Built | #155, #210 |
| Merchant provisioning seam | Eng | ๐ดย P0 | Application to approved to provisioned without an admin bridging it by hand | Alpha-gating per the 2026-08-03 gap map | โ Built | #790, #793 |
| Merchant signup and approval | Eng | ๐ดย P0 | Application, review, approval into a merchant account | No offers exist until merchants can get in | โ Built | #136, #138 |
| Offers | Eng | ๐ดย P0 | Create, publish, and expire an offer against a venue | What a partner merchant runs during Alpha | โ Built | #357 |
| Offer moderation gate | Eng, Safety | ๐ดย P0 | Publish holds at pending review; only an admin approval makes an offer live | Nothing unreviewed reaches a user during Alpha | โ Built | #796 |
| Redemption and claims | Eng | ๐ดย P0 | A user claims an offer, the merchant sees it happened | Without this there is no attribution | โ Built | #704 |
| Moderation surfaces | Eng, Safety | ๐ดย P0 | Cases, claim, escalate, priority, sealed ban, appeals | Someone has to act on a report during Alpha | โ Built | #621, #678 |
| Venue creation from admin | Eng | ๐ดย P0 | Create and edit a net-new venue in the portal | Venues otherwise only arrive by OSM import | โ Built | #786 |
| Event pipeline | Eng, Analytics | ๐ดย P0 | App events into BigQuery, modeled for reporting | Everything downstream reads from it | โ Built | #64, #272 |
| Ad delivery telemetry | Analytics, Eng | ๐ ย P1 | Impressions, fills and claim attribution behind a k-anonymity gate | What a merchant is shown has to come from somewhere | โ Built | #694, #696 |
| Account deletion and retention | Eng, Legal | ๐ดย P0 | Full deletion cascade, enforced retention, BigQuery pseudonymization | The privacy policy will promise exactly this, and it is already true | โ Built | #151, #749 |
| Attribution, no-POS path | Analytics, Business | ๐ดย P0 | Lit lantern redeems in-app with an animated confirmation shown at the counter | Pilot venues can test this with no merchant systems integration | โ Needs operator input | #965, #704 |
| Merchant-side dashboards | Analytics, Design | ๐ ย P1 | What a partner merchant sees about their own offers and foot traffic | The partnership promises them data | ๐ง In progress | #320 |
| Venue and activity dashboards | Analytics, Design | ๐ ย P1 | Period activity, wave accept rates, offer delivery | How we watch the experiment while it runs | ๐ง In progress | #320 |
| Polish and refinement | Design, Eng | ๐ดย P0 | A deliberate pass over the app, merchant surfaces and admin portal | Real users meet strangers through this; unfinished edges read as untrustworthy | ๐ง In progress | #293 |
| Splash page refinement | Design, Growth | ๐ ย P1 | Copy, layout and visual polish across the public site | Invited people land here before they can open the app | โฌ Not started | #848, #593 |
| Embers, minimal set | Eng, Design | ๐ ย P1 | Three badges tied to what Alpha proves: showed up, lit a lantern, met someone | Badges shape behavior, so the starting set is itself a hypothesis | โฌ Not started | #579, #160 |
| Google Places integration | Eng, Business | ๐ ย P1 | Google Places alongside OpenStreetMap, with cost established | Venue coverage is the supply side, and OSM alone does not reliably give it | โฌ Not started | #866 |
| Performance optimization | Eng | ๐ ย P1 | Load and responsiveness under real usage | First impressions, even at invite scale | โฌ Not started | #153 |
| Ad Network as a first-class surface | Eng, Design | ๐ ย P1 | Its own page and section under Platform in the admin site | It is a product area now, and burying it makes it unmanageable | โฌ Not started | |
| Venues search and filters | Eng, Design | ๐ ย P1 | The venues list has neither | Unusable once there is more than a handful | โฌ Not started | |
| Interest-based venue filtering | Eng | ๐กย P2 | Filter venues by interest | Makes a small venue list feel chosen rather than sparse | โฌ Not started | #319 |
| Privacy architecture in place | Eng, Legal | ๐ดย P0 | Sealed identity stages landed before real phone numbers scale | Plaintext phones in production are hard to walk back | ๐ง In progress | #523, #875, #874 |
| Credential and identity colocation | Eng, Safety | ๐ดย P0 | Credentials and sealed-identity material out of documents admin clients read wholesale | Firestore has no field-level read control, so a routine admin read shipped hashes to the browser | ๐ง In progress | #875 |
| Data classification and egress | Eng, Safety | ๐ดย P0 | One policy for what each consumer may emit and where | Answered ad hoc four times already; search and the apps platform would each invent a fifth | โฌ Not started | #874 |
| Admin portal mobile layout | Design, Eng | ๐ ย P1 | The sidebar never collapses; content renders off-screen on a phone | Moderation may need answering away from a desk | โฌ Not started | #826 |
| Lantern naming | Eng, Design | ๐กย P2 | Unique generation with display-time disambiguation, expanded word lists, user-chosen names | A permanent numeric suffix is a small identity leak in an anonymous product | โฌ Not started | #251, #578 |
| Offer review layout | Design | ๐ ย P1 | The last screen before publishing reads as broken | Reviewers use it every day of Alpha | โ Built | #818 |
| Profile completion metric | Eng, Analytics | ๐กย P2 | Counts plaintext fields that encryption deliberately deletes, so it is structurally near-zero | The operator reads that number as truth | โฌ Not started | #881 |
| System Health false DOWN | Eng | ๐กย P2 | Browser CORS probes report services down that are up | Operational confidence during a live event | โฌ Not started | #797 |
Phase 3: Gates โ
| Task | Category | Priority | Description | Why | Status | Issues |
|---|---|---|---|---|---|---|
| Contrast enforced for real | Eng, Design | ๐ดย P0 | axe is blind three ways (unparseable colour, exactly 1:1, layered backgrounds); the palette converges so it can see | A user's own lantern name shipped invisible behind a green 347/347 suite | ๐ง In progress | #895, #878 |
| Story coverage and a11y gate | Eng | ๐ดย P0 | Every component has a story; axe gates at error | Catches what a human sweep does not | โ Built | #814 |
| Admin zone lint gate | Eng | ๐ ย P1 | Ratchet on eslint errors in the admin zones | A core alpha surface accumulated 55 errors while ungated | โ Built | #806 |
| Shared UI primitives | Eng | ๐กย P2 | Extract the repeated CloseButton, PasswordReveal, ViewModeToggle | Divergence is where inconsistency enters | โฌ Not started | #822 |
| Admin vitest alignment | Eng | ๐กย P2 | Build-versus-test transform split under vite 8 | Blocks the admin suite from moving forward | โฌ Not started | #804 |
Phase 4: Prove โ
Deliberately attacked, and verified by running rather than by reading.
Evidence: break-it walkthrough.
| Task | Category | Priority | Description | Why | Status | Issues |
|---|---|---|---|---|---|---|
| Live two-account E2E | Eng | ๐ดย P0 | Actually run the loop with two accounts, including the offer round-trip | Both halves run on deployed dev 2026-08-16: two accounts wave, accept and chat; and a merchant publish held at pending review, invisible to a user at the venue, admin approved, then discovered and claimed | โ Verified | #817 |
| Intentional break-it walkthrough | Eng, Design | ๐ดย P0 | Deliberately try to break things, then fix what gives | Finds the edges a happy-path demo never touches | ๐ง In progress | #193 |
| Full manual code review | Eng | ๐ดย P0 | Read the codebase piece by piece: understand it, optimize, confirm no vulnerabilities | Automated checks catch classes of problems; a human reading everything catches what nobody thought to test for | โฌ Not started | #523 |
| Penetration testing | Eng, Safety | ๐ดย P0 | An outside-our-infrastructure system that emulates breaking in | Our own tests share our own blind spots | โฌ Not started | #865 |
| Android and iOS device testing | Eng | ๐ดย P0 | Install, push and offline behavior across real devices | The PWA is the product | โฌ Not started | #963 |
| iOS PWA push verification | Eng | ๐ ย P1 | Install to home screen and verify push on a real iPhone | If Alpha users carry iPhones, push is part of the experiment | โฌ Not started | #722 |
| Untested API functions on alpha paths | Eng | ๐ดย P0 | 109 exported functions across the six API services are imported by no test in their own service (auth 49, venues 18, lanterns 11, analytics 13, merchants 6, assistant 12). Ranked subset is DONE except the half on another lane's territory. Run npm run count:untested-api | Tracked on IMPORTED-by-a-test, not mentioned: the mention floor counted a guard as covered on the strength of a prose comment. It reads 76, and the 33 in between are reached by nothing | ๐ง In progress | #962, #942 |
Phase 5: Internal tools โ
Not a gate on the December release; it rides alongside and finishes when it finishes.
| Task | Category | Priority | Description | Why | Status | Issues |
|---|---|---|---|---|---|---|
| Doc site taxonomy | Eng, Ops | ๐ ย P1 | Four subdomains, three audiences, one internal-only and needing a real gate | "Internal" with nothing enforcing it is a label, not a boundary | โฌ Not started | #883 |
| Intranet search | Eng | ๐ ย P1 | Search across docs, worklogs, plans and issues | Finding where something was written down | โฌ Not started | #800 |
| Go links | Eng | ๐กย P2 | Speakable short URLs for internal resources | Cheap once search exists | โฌ Not started | #811 |
| Ranked next-task list | Eng | ๐กย P2 | Print the board, live plans and scored issues in the terminal | Answers "what now" without a person deciding | โฌ Not started | #856, #859 |
| Team-built apps platform | Eng, Business | ๐กย P2 | Let a non-engineer build on Lantern infrastructure. Needs a spec first | The least defined thing on this page, and the privacy boundary questions live here | โฌ Not started | #827, #849 |
Runs throughout โ
| Task | Category | Description | Status | Issues |
|---|---|---|---|---|
| Funding and grants outreach | Business | Non-dilutive grants (woman, veteran, LGBTQ+ founder) and the outreach cadence behind them. Grants only: no shareholders, no venture capital (operator, 2026-08-31) | โฌ Not started | #629 |
| Broken doc links | Docs | Roughly 500 links point at moved or absent files | ๐ง In progress | #833 |
| Guide consolidation | Docs | Overlapping and duplicated guides under docs/engineering/guides | โฌ Not started | #840 |
| Dependency currency | Eng | vitest 3 to 4, lucide-react 0.x to 1.x, the Cloud Functions Node pin | โฌ Not started | #771, #770, #838 |
| Agent guidance | Ops | Skills, rules and coordination discipline, kept current as lessons land | ๐ง In progress |
Bugs โ
| Bug | Surface | Priority | Description | Status | Issues |
|---|---|---|---|---|---|
| Lantern lifetime copy | App | ๐ดย P0 | The UI said 48 hours in three places while the server expired lanterns at 2 | โ Fixed | #789 |
| Invisible lantern names | App | ๐ดย P0 | Six of 31 adjectives rendered unreadable on the dark app; Onyx measured 1.01:1 | โ Fixed | #878 |
| Anthropic spend missing from billing | Analytics | ๐กย P2 | Absent from some reports | โฌ Not started | |
| Reporting-period layout | Analytics | ๐กย P2 | Spans the full page width instead of fitting its content | โฌ Not started |