# MASTER BACKLOG — 2026-04-18 (v2 · SOTA-gated launch) ### Three tiers · Test gate per step · Launch gated by benchmark proof **Purpose:** Single definitive list. Everything we can do ourselves, organized into three tiers (High / Medium / Low), with explicit sub-steps and a test-gate per item. Externals (OpenAI export wait, EV cert purchase, Apple Dev account purchase, Perplexity manual export) are carved out — but preparatory integration work that lands around them is included. **v2 LOCKED decisions (Marko, April 18, 2026):** - **[M]-07 RESOLVED** — Ship `hive-mind` OSS + Waggle beta *together*, but public launch is GATED by SOTA benchmark proof. No launch without LoCoMo ≥ 91.6% OR equivalent competitive showing (e.g., SOTA on temporal/adversarial subsections, OR top 3 on SWE-ContextBench). - **[M]-11 Pricing LOCKED** — Pro $19/mo + Teams $49/seat/mo. Final. Any doc or UI that still shows $29/$79/$15 is stale and must be corrected. - **H-34 effort LOCKED** — 5-10 days wall time, no compression. hive-mind source extraction is real work. - **Critical path reshapes:** Benchmark block (H-42/43/44) replaces Papers as the launch gate. Papers are publication output; benchmarks are the ship gate. **State at write-time:** main @ `1c304cd`, tree clean, 200 commits ahead of origin. Phase A = 5/6 done (QW-3 verified in code at `apps/web/src/pages/Index.tsx:15-17`, needs Playwright regression only). **Supersedes:** `BACKLOG-FULL-2026-04-18.md`, `BACKLOG-CONSOLIDATED-2026-04-17.md`, `POLISH-SPRINT-2026-04-18.md`, `PDF-E2E-ISSUES-2026-04-17.md`. --- ## Tier definitions | Tier | Meaning | Examples | |---|---|---| | **HIGH** | Ship-blocking. Paper/launch cannot happen without. | GEPA wiring closure, Phase 1 harvest, core UX bugs, Phase 4-6 proofs, Stripe integration (code), binary build | | **MEDIUM** | Ship-quality. Polish/UX. Launch defensible without it but rough. | PersonaSwitcher redesign, compliance PDF route, Wiki v2, Ollama installer, engagement features | | **LOW** | Post-launch OK. Accessibility, responsive, tech debt, advanced features. | A11Y sweep, responsive collapses, dead `app/` removal, ContextRail deeper integration | ## Test-gate principle **Every item ends with a Verify step. No item is "done" without it.** Standard gates after each change: ```bash npx tsc --noEmit --project packages//tsconfig.json # type check npm run test -- --run # vitest green npm run lint # eslint repo-wide npx playwright test # only if UI changed ``` Plus PostToolUse hooks run automatically: Prettier + tsc + console.log scan. Stop hook audits console.log repo-wide before session ends. One commit per item. Tree must be clean between items. --- ## Marko-side queue (non-coding, non-external) What Marko can do that unblocks engineering. Externals excluded (OpenAI export wait, EV cert purchase, Apple Dev account purchase). | ID | Task | Unblocks | Effort | |---|---|---|---| | **[M]-01** | **Stripe products** — in Stripe dashboard, create Pro ($19/mo) and Teams ($49/seat/mo) products per [M]-11 LOCKED pricing; capture `STRIPE_PRICE_PRO` + `STRIPE_PRICE_TEAMS` IDs | H-26 through H-33 (Stripe integration block) | 1 hr (guided) | | [M]-02 | Judge model list revision (after w4/w25 proofs) | Phase 5 judging | Decision | | [M]-03 | Warm-list names — 5-10 contacts to pre-email T-72h | Launch credibility | 30 min | | [M]-04 | Papers attribution — single-author or dual-author? | Paper 1 + Paper 2 | Decision | | [M]-05 | Marketplace model — free-with-attribution / freemium / enterprise-only? | L-12 marketplace monetization | Decision | | [M]-06 | EvolveSchema attribution — credit Mikhail vs Zhang et al. (ACE) | Paper 2 framing | Decision | | **[M]-07** | **RESOLVED (2026-04-18):** Ship hive-mind OSS + Waggle beta **together**, launch gated by SOTA benchmark proof. No public release without LoCoMo ≥ 91.6% OR competitive subsection showing (temporal / adversarial) OR SWE-ContextBench top 3. hive-mind OSS launch serves as Waggle launch narrative vehicle. | H-34 + H-42/43/44 sequencing | ✅ Locked | | [M]-08 | Harvest-first onboarding — replace step 2 or parallel opt-in? | ENG-5 (M-26) | Decision | | [M]-09 | Peer reviewer outreach — send the email I draft | Paper 1 validation | 10 min (after I draft) | | [M]-10 | Launch date greenlight — **contingent on H-42/43/44 results**, not a fixed date | Launch block | Decision (after benchmarks) | | **[M]-11** | **Stripe pricing LOCKED (2026-04-18):** Pro $19/mo, Teams $49/seat/mo. Final. | Stripe integration + all pricing copy | ✅ Locked | | [M]-12..14 | Other strategic decisions — TBD in later sessions, do not block current sprint | — | TBD | --- ## HIGH tier — ship-blocking (~55 items · ~50 eng days) Ordered by dependency, not alphabetically. Each item has Sub-steps · Verify · Effort · Deps. ### Block H1 — Polish Phase A closure (1 item) #### H-01 · QW-3 · Skip boot screen on return visits - Read `apps/web/src/pages/Index.tsx:16` and verify the `BOOT_KEY` localStorage check works. - If broken: fix skip logic + ensure flag persists across sessions. - **Verify:** Playwright — first visit shows BootScreen, second visit goes straight to Desktop. - **Effort:** 15-30 min · **Owner:** me · **Deps:** none ### Block H2 — Polish Phase B core bugs (5 items) #### H-02 · P35 · Spawn-agent "no models available" - Read `apps/web/src/components/os/apps/SpawnAgentPanel.tsx` (or equivalent) to find the models dropdown source. - Replace hardcoded/empty list with live fetch from `GET /api/providers` (returns 13 green providers today). - Filter by tier availability from `TIER_CAPABILITIES`. - Empty state: CTA "Add a key in Settings → Vault" instead of "check backend config". - **Verify:** Playwright — open spawn panel, assert dropdown has ≥1 model OR empty-state CTA is visible. Unit test for provider-list mapper. - **Effort:** 2-3 hr · **Owner:** me · **Deps:** none #### H-03 · P36 · Dock spawn-agent icon wiring - Inspect `apps/web/src/components/os/Dock.tsx` spawn-agent icon click handler. - If missing: wire to `openSpawnAgentPanel` dispatcher. - Confirm TaskCreate is called on submit from the panel. - **Verify:** Playwright — click dock icon, panel opens; submit a spawn, assert POST to `/api/tasks`. - **Effort:** 1 hr · **Owner:** me · **Deps:** H-02 #### H-04 · P40 · Light-mode BootScreen logo + animation - Audit `apps/web/src/components/os/BootScreen.tsx` for `hive-950` / `text-honey` literals. - Map animation colors to semantic tokens (`--text-primary`, `--bg-primary`, `--accent`). - Ensure animation frames stay visible in light mode (check contrast ≥ 4.5). - **Verify:** Playwright visual regression — BootScreen light mode snapshot matches approved baseline. - **Effort:** 2 hr · **Owner:** me · **Deps:** none #### H-05 · P41 · Light-mode "Waggle AI" header text - Find the header component (likely `apps/web/src/components/os/StatusBar.tsx` or a header sibling). - Replace any hive-950 direct refs with semantic token. - Adjust font weight / color for light mode readability. - **Verify:** Playwright visual test light-mode header. Manual contrast check. - **Effort:** 30 min · **Owner:** me · **Deps:** H-04 #### H-06 · CR-2 · Residual `hive-950` → semantic token sweep - `grep -r "hive-950\|#08090c" apps/web/src` — map every remaining direct ref to `var(--bg-primary)` or equivalent. - Do NOT touch `waggle-theme.css` itself (that's where hive-950 legitimately lives as a dark token). - **Verify:** grep passes with only `waggle-theme.css` matches remaining. Playwright visual regression across 5 key screens (desktop, chat, memory, settings, onboarding). - **Effort:** 2 hr · **Owner:** me · **Deps:** H-04, H-05 ### Block H3 — GEPA wiring closure (4 items) Per CLAUDE.md §11 + `BACKLOG-FULL-2026-04-18.md` §5. These 4 gaps block the Phase 5 GEPA proof from producing a defensible real-behavior improvement. #### H-07 · G4 · Trace outcome audit + finalization coverage - Audit `packages/server/src/local/routes/chat.ts:1231` — what outcome gets emitted on (a) successful final message, (b) mid-turn tool error, (c) SSE disconnect, (d) rate-limit failure, (e) empty-text turns? - Document the matrix. Ensure `'success'` is emitted for valid turns. - Backfill migration: scan existing traces, set `outcome='success'` where final message non-empty + no fatal error was stored. - Add counter in evolution dashboard: "Eligible traces available: N" with tooltip explaining the threshold. - Improve `EvalDatasetBuilder` "no eligible traces" error → explain WHY (too few / all abandoned / none in date range). - **Verify:** Vitest `packages/agent/tests/eval-dataset.test.ts` passes with a live-fixture trace dataset. New test: chat-turn → finalize → outcome='success'. Dashboard counter test in Playwright. - **Effort:** 0.5 day · **Owner:** me · **Deps:** none #### H-08 · G2 · Override-aware system prompt loader - Create `loadSystemPromptWithOverrides(waggleDir)` in `packages/agent/src/prompt-loader.ts`. - Composes: base BEHAVIORAL_SPEC → `buildActiveBehavioralSpec(overrides)` → `getPersona(id)` + custom-personas → disk `system-prompt.md` append. - Migrate all current callers of `loadSystemPrompt` to the override-aware version (grep; expect small call-site count). - Keep the bare `loadSystemPrompt` exported for test isolation only; add deprecation comment. - Add a startup assertion: if override files exist on disk but activeBehavioralSpec doesn't reflect them, log structured warning. - **Verify:** New Vitest `prompt-loader-with-overrides.test.ts` with fixture overrides + persona files. Integration test: deploy via evolution accept → chat turn uses override. - **Effort:** 2-4 hr · **Owner:** me · **Deps:** none #### H-09 · G3 · Running-judge wiring audit - Grep every caller of `IterativeGEPA.run` and check whether it passes a bare judge or one wrapped with `makeRunningJudge`. - Known-good: `/api/evolution/run` (evolution.ts:377). Known-suspect: `iterative-optimizer.ts`, `scripts/evolution-hypothesis.mjs`. - For each suspect caller: wrap with `makeRunningJudge(base, llm)`. - Add phantom-type brand to `makeRunningJudge` return so `IterativeGEPA.run` can enforce at compile time. - **Verify:** Vitest asserts `IterativeGEPA.run()` rejects bare judges with a clear error. Existing `makeRunningJudge` tests still pass. - **Effort:** 2-4 hr · **Owner:** me · **Deps:** none #### H-10 · G1 · Evolution service + cron scheduler - Create `packages/server/src/local/services/evolution-service.ts`: owns a daemon loop + auto-trigger policy. - Register evolution cron in `cron-service.ts` — configurable cadence, default daily at low-traffic hour, off by default. - Minimum-dataset gate: skip run when trace pool < N eligible examples (default 20). - Reuse the HTTP endpoint's path for on-demand — UI "Run now" button (already shipped in Phase 8.5) hits the same service. - Settings toggle: "Enable nightly self-evolution" + cadence picker. - **Verify:** Vitest for gate logic (under/over threshold). Integration test: register cron → fast-forward → runOnce called → run recorded. Settings toggle E2E. - **Effort:** 0.5-1 day · **Owner:** me · **Deps:** H-07 (traces must be eligible to mine) ### Block H4 — Phase 1 Harvest real data (9 items — mostly work we execute as M1 data arrives + concurrent) #### H-11 · 1.3 · Re-harvest Claude Code fresh - Run full harvest of Claude Code history into personal.mind. - Dedup against existing 156 frames. - **Verify:** Frame count delta > 0, no duplicates (dedup hash check). Mind health report shows harvest source distribution. - **Effort:** 0.5 day · **Owner:** me · **Deps:** none #### H-12 · 1.2 · Import Claude conversations (Anthropic export DONE per M2) - Feed the Anthropic export archive through the Claude adapter. - **Verify:** Frames added with source='claude', dedup verified, no parse errors. - **Effort:** 1 hr (script run + verify) · **Owner:** me · **Deps:** [M]-02 ✅ #### H-13 · 1.4 · Import Gemini conversations (Google export DONE per M3) - Feed Google Takeout Gemini JSON through Gemini adapter. - **Verify:** Frames source='gemini', dedup verified, date range coverage. - **Effort:** 1 hr · **Owner:** me · **Deps:** [M]-03 ✅ #### H-14 · 1.6 · Cursor adapter build - Study Cursor's conversation export format. - Write adapter in `packages/core/src/harvest/adapters/cursor.ts`. - Wire into `pipeline.ts` dispatcher. - **Verify:** Unit tests for parse → frame. Integration test: sample Cursor export → N frames → cognify pipeline runs. - **Effort:** 0.5-1 day · **Owner:** me · **Deps:** none #### H-15 · 1.5 · Import Perplexity (SKIPPED per user direction) - Marked skipped in Marko queue. Not a blocker. - **Verify:** n/a - **Effort:** n/a · **Owner:** — #### H-16 · 1.1 · Import ChatGPT conversations (waits on M1) - Queue: when OpenAI export email arrives, run adapter. - **Verify:** Frames source='chatgpt', dedup verified. - **Effort:** 1 hr · **Owner:** me · **Deps:** ⏳ external M1 — kept as ready-to-go item #### H-17 · 1.7 · Post-harvest cognify on imported frames - Trigger cognify pipeline on all newly harvested frames (extract entities, concepts, write to KG). - Dashboard progress UI. - **Verify:** KG node count delta > 0. Concepts table populated. Vitest for cognify pipeline end-to-end. - **Effort:** 2-3 hr · **Owner:** me · **Deps:** H-11, H-12, H-13 #### H-18 · 1.8 · Identity auto-populate from harvest - Pipeline reads harvested frames, extracts identity signals (name, role, projects, relationships), populates IdentityLayer. - Surface in Settings → Identity for user confirmation. - **Verify:** Vitest for identity extractor with fixture frames. Playwright Settings shows populated identity. - **Effort:** 4 hr · **Owner:** me · **Deps:** H-17 #### H-19 · 1.9 · Wiki compile from real data - After harvest + cognify complete, trigger full wiki compilation. - Verify adapter outputs, page counts, entity coverage. - **Verify:** Wiki page count ≥ expected threshold. Sample N pages render without errors. - **Effort:** 2 hr · **Owner:** me · **Deps:** H-17 #### H-20 · GATE · Harvest dataset threshold - 10K-50K frames target, dedup verified, KG populated. - **Verify:** Mind health report passes all checks. Documented in handoff. - **Effort:** checkpoint only · **Owner:** me · **Deps:** H-11 through H-19 ### Block H5 — Phase 4 Memory Proof (from MEMORY-HARVEST-TEST-PLAN.docx, 10 days, $300-500) Test plan referenced in docx. Items extracted from the plan structure (detailed steps live in the docx): #### H-21 · Phase 4 · Memory Proof execution - Set up baseline (Claude 3.5 Sonnet on bare prompts, no memory). - Set up treatment (Waggle with harvested personal.mind + agent-loop). - Run paired queries (~50 queries) against both, 3 seeds each. - Judge responses with 4-judge ensemble per PA v5 protocol. - Compute effect size + confidence interval. - **Verify:** Eval results committed to `docs/results/MEMORY-PROOF-RESULTS.md`. Win-rate ≥ statistically significant threshold. Dataset + seeds committed (gitignored raw) for replication. - **Effort:** 10 days · **Owner:** me · **Deps:** H-20 (harvest gate), [M]-02 judge list ### Block H6 — Phase 5 GEPA Full-System Proof (from GEPA-EVOLUTION-TEST-PLAN.docx, 18 days, $1.5-2.5k) #### H-22 · Phase 5 · GEPA Proof execution - Baseline: Gemma 4 31B + Waggle persona prompts as-shipped. - Treatment: same model + Waggle + evolved prompts (run evolution N cycles against held-out trace eval set). - Paired queries, ensemble judging. - **Verify:** Results committed. Effect size + CI. Evolution lineage reproducible from committed run records. - **Effort:** 18 days · **Owner:** me · **Deps:** H-07 through H-10 (GEPA wiring closure MUST land first — proof is meaningless without the running judge end-to-end), H-20 ### Block H7 — Phase 5b Combined Effect Proof (6 days, ~$500) #### H-23 · Phase 5b · Combined proof - Treatment: Memory + Evolved prompts + Gemma 4 31B. - Control: Memory only (no evolved prompts). - Measures additive effect of evolution on top of memory. - **Verify:** Results committed. Decomposition of memory-only vs combined deltas. - **Effort:** 6 days · **Owner:** me · **Deps:** H-21, H-22 ### Block H8 — Phase 6 Papers (5 days writing + Marko peer review) #### H-24 · Paper 1 · Memory system paper draft - Write arXiv draft using Phase 4 results. - Cite prior work (RAG, long-context, memory MCP, etc). - Format: arXiv template, figures committed as SVG. - **Verify:** Peer-reviewer feedback incorporated. Arxiv-ready LaTeX builds cleanly. - **Effort:** 3 days · **Owner:** me + [M]-09 (peer review send) · **Deps:** H-21 #### H-25 · Paper 2 · GEPA + Combined paper draft - Write arXiv draft using Phase 5 + Phase 5b results. - EvolveSchema attribution per [M]-06. - **Verify:** Peer-reviewer feedback incorporated. Arxiv-ready. - **Effort:** 3 days · **Owner:** me + [M]-09 · **Deps:** H-22, H-23, [M]-06 ### Block H9 — Stripe integration (M7 decomposed — reconciliation 2026-04-18) Reality check performed this session: most of the Stripe integration was already shipped. Marko still creates products in dashboard ([M]-01). Engineering work remaining is smaller than originally scoped. #### H-26 · Stripe webhook endpoint — ✅ SHIPPED (pre-session) - `packages/server/src/stripe/webhook.ts` exists (130 LOC). - Raw body handling via Fastify content-type parser at route scope. - Signature verification with `STRIPE_WEBHOOK_SECRET` from env. - Idempotency via `.stripe-processed-events.json` event-ID dedup (last 500 retained). - Tests at `packages/server/tests/stripe/webhook.test.ts` (109 LOC, 10+ cases). #### H-27 · Subscription → tier mapping — ✅ SHIPPED (pre-session) - `tierFromPriceId(priceId)` in `packages/server/src/stripe/index.ts` — canonical FREE/PRO/TEAMS mapping. - Handles `checkout.session.completed`, `customer.subscription.updated`, `customer.subscription.deleted`. - Writes to `{dataDir}/config.json` with tier + `stripe_customer_id`. - Includes legacy `STRIPE_PRICE_BASIC` → `PRO` mapping for backward compat. #### H-28 · Upgrade flow UI — ✅ SHIPPED (pre-session) - `packages/server/src/stripe/checkout.ts` — `POST /api/stripe/create-checkout-session`. - `UpgradeModal.tsx` + `useBilling.ts` wire the UI (already canonical `PRO`/`TEAMS` after the 2026-04-18 tier-rename fix). #### H-29 · Billing portal link — ✅ SHIPPED (pre-session) - `packages/server/src/stripe/portal.ts` — `POST /api/stripe/create-portal-session` (51 LOC). - `useBilling.openPortal()` invokes it. #### H-30 · Trial-to-paid conversion path — ✅ SHIPPED (pre-session) - `TrialExpiredModal.tsx` in overlays, triggered by `isTrialExpired()` from `tiers.ts`. - Integrates with H-28 via `onUpgrade(tier)` callback. #### H-31 · Tier enforcement audit — 🟢 OPEN (small) - Existing: kvark-tools check `assertTierCapability`. `TIER_CAPABILITIES.embeddingProviders` enforced in `embedding-provider.ts`. Many paths check `billing.tier`. - Remaining: systematic matrix-test verification. Write one Vitest that iterates every gated operation × every tier, asserts pass/fail per tiers.ts. - **Effort:** 2-3 hr · **Deps:** none #### H-32 · Embedding quota enforcement — ✅ SHIPPED (pre-session) - `packages/core/src/mind/embedding-provider.ts:270` — `checkQuota(count)` throws `EmbeddingQuotaExceededError` on exceed, warns at 80%. - `getQuotaStatus()` exposes usage for UI. - Usage tracked in `embedding_usage` SQLite table, reset monthly. #### H-33 · Stripe test-mode smoke — ✅ DONE this session - `docs/OPS/stripe-smoke.md` (this commit) — 7-step Stripe-CLI-driven smoke protocol covering webhook signature, idempotency, checkout creation, portal link, tier mapping for all 4 relevant events. - Requires Marko's Egzakta sandbox (already logged in via `stripe config --list`) + test-mode prices (script in doc). - Remaining execution: run the smoke against the sandbox with production-shape env vars. Document any failures in this doc's checklist. ### Block H10 — Launch prep (infra) (7 items) #### H-34 · hive-mind source extraction (CR-6) - Scaffold already in `docs/HIVE-MIND-INTEGRATION-DESIGN.md`. - Extract the Apache 2.0-safe subset: MCP resources, CLI, hooks, installer. - Create separate repo at `hive-mind/` (or push to a new GH repo per [M]-07). - **Verify:** Independent `npm install && npm test` in the extracted repo passes. No Waggle-proprietary imports remain. - **Effort:** 2-3 days · **Owner:** me · **Deps:** [M]-07 timing decision #### H-35 · Binary build + clean Windows VM smoke (CR-8) - Run `npm run tauri build` on Windows. - Install on clean VM, exercise onboarding → chat → memory → settings. - Verify sidecar starts, no port collisions, no missing dylibs. - **Verify:** Smoke checklist passes. Screenshots committed to `docs/OPS/smoke-2026-04-XX/`. - **Effort:** 1 day · **Owner:** me · **Deps:** H-01..H-10 stable #### H-36 · Clerk auth integration - Clerk SDK in web app. - Sign-in / sign-up UI. - Map Clerk user → Waggle user record. - **Verify:** Playwright — sign in → desktop loads with correct identity. Sign out → redirect to sign-in. - **Effort:** 1 day · **Owner:** me · **Deps:** H-27 (tier mapping — Clerk auth plus Stripe subscription = full auth) #### H-37 · Onboarding finalized (harvest-first per [M]-08) - Per [M]-08 decision: replace step 2 with harvest pitch OR keep parallel opt-in. - Wire OnboardingWizard accordingly. - **Verify:** Playwright — complete onboarding with and without harvest → desktop state correct. - **Effort:** 4 hr · **Owner:** me · **Deps:** [M]-08 #### H-38 · Landing page final polish (apps/www) - Review `apps/www` for any stale copy / broken links. - Verify contact form posts to our API (not 3rd party). - Social cards, OG tags, favicon. - **Verify:** Lighthouse ≥ 90 on perf, accessibility, SEO, best practices. - **Effort:** 4 hr · **Owner:** me · **Deps:** none #### H-39 · Windows code-signing integration (scaffolding ready for cert) - Add signing step to CI pipeline reading `WAGGLE_SIGN_CERT` from GH secrets. - Test with a throw-away self-signed cert for pipeline validation. - Hook `tauri.conf.json` `bundle.windows` to signing tool. - **Verify:** CI artifact passes SignTool validation with self-signed cert. Ready to swap in real cert on arrival. - **Effort:** 3 hr · **Owner:** me · **Deps:** none #### H-40 · Mac notarization integration (scaffolding ready for Apple Dev acct) - Add `xcrun notarytool submit` step to CI. - Read `APPLE_ID`, `APPLE_PASSWORD`, `APPLE_TEAM_ID` from secrets. - Local dry-run with `--dry-run` flag. - **Verify:** CI step validates syntax. Ready to run once credentials exist. - **Effort:** 2 hr · **Owner:** me · **Deps:** none ### Block H11 — Auto-updater signing (1 item) #### H-41 · Auto-updater keypair + latest.json signing - Generate Tauri updater keypair. - Public key in `tauri.conf.json`, private key in CI secret. - Sign releases → populate `signature` field in `latest.json`. - **Verify:** End-to-end: publish new release → older install sees update → downloads + verifies + installs. - **Effort:** 3 hr · **Owner:** me · **Deps:** H-35 ### Block H12 — Public Benchmark Runs · LAUNCH GATING (3 items) **Critical path per [M]-07 decision.** Launch is blocked until benchmarks validate architectural claims against current SOTA. These are NOT nice-to-have — they are the public proof that legitimates the hive-mind OSS positioning and the Waggle value prop. **Honest risk posture (documented so we don't lie to ourselves later):** - **Scenario A** — LoCoMo ≥ 91.6% on first run: 20-30% probability. Launch narrative: "new SOTA". - **Scenario B** — LoCoMo 85-91%, tuning can help: 40-50% probability. Launch narrative: "SOTA in local-first category" or subsection SOTA. Legitimate but less hype-friendly. - **Scenario C** — LoCoMo < 85%: 20-30% probability. Trigger architectural investigation. LoCoMo is ShareGPT-style casual dialogue — our bitemporal strengths may not map directly. Fallback: lean on SWE-ContextBench where architecture aligns better. **SWE-ContextBench is our strongest terrain.** If LoCoMo is B/C but SWE-ContextBench is top 3, the legitimate launch narrative becomes "hive-mind dominates context reuse for coding agents" — stronger positioning for Waggle's consumer agent harness framing. #### H-42 · LoCoMo benchmark run (LAUNCH GATING) - Use `snap-research/locomo` evaluation harness as-is. Do NOT reimplement — the leaderboard legitimacy requires their harness. - Run two configs: (a) **local** — inprocess embedder + Ollama + Gemma 4 31B answer model; (b) **frontier** — same memory stack + Opus 4.7 answer model. Both cut the same benchmark. - Sub-benchmarks to report separately: single-hop, multi-hop, temporal, open-domain, adversarial. - Commit full raw outputs + analysis to `docs/results/LOCOMO-RESULTS.md`. Raw JSON gitignored. - If Scenario B: document the tuning plan (hybrid search weights, RRF constants, embedding model swap) and run one iteration. If iteration still B, ship as Scenario B, do not hide. - **Verify:** 4-judge ensemble evaluation per PA v5 protocol. Reproducible from committed config + seeds. Result published in `docs/results/LOCOMO-RESULTS.md` with honest observations section (copy PA v5's pattern — it worked). - **Effort:** 3-4 days (2d setup, 1-2d analysis + up to 1d tuning iteration) - **Owner:** me · **Deps:** H-34 hive-mind extraction complete #### H-43 · LongMemEval benchmark run (LAUNCH GATING) - Same pattern as H-42 — run upstream harness, no reimplementation. - Targets to beat: Letta ~83%, Zep 63.8%. SOTA is ~93.4%. Even matching Zep is a legitimate floor. - Report per-category: session recall, reasoning, knowledge update, temporal, multi-session. - **Verify:** Results at `docs/results/LONGMEMEVAL-RESULTS.md`. Peer-reviewable. - **Effort:** 2-3 days - **Owner:** me · **Deps:** H-34 complete. Independent of H-42; can run in parallel. #### H-44 · SWE-ContextBench run (STRATEGIC DIFFERENTIATOR) - Newer benchmark (Dec 2025) — directly measures context reuse across related coding tasks. Memory architecture most aligned with our bitemporal + I/P/B frame model. - **Highest probability win (60-70% top-3 estimate).** Potential primary launch narrative. - Run memory-configuration track. If competitive, also run end-to-end track (more work, bigger statement). - **Verify:** Results at `docs/results/SWE-CONTEXTBENCH-RESULTS.md`. Submission to leaderboard if rules allow. - **Effort:** 3 days - **Owner:** me · **Deps:** H-34 complete. Can run in parallel with H-42/H-43 once extraction done. **Block H12 gate decision:** - If Scenario A on H-42: proceed to launch prep aggressively. - If Scenario B: document position, optional tuning iteration (budget ≤ 5 days before committing to ship-as-is), check H-44 for compensating narrative. - If Scenario C on H-42: pause launch-prep conversation, open architectural investigation (what does bitemporal NOT help? Is hybrid search weighted wrong for casual dialogue?), possibly re-frame hive-mind positioning around coding agents only. --- ## MEDIUM tier — ship-quality polish (~50 items · ~25 eng days) ### Block M1 — Polish Phase C · PersonaSwitcher two-tier (OW-6) #### M-01 · PersonaSwitcher two-tier redesign - File: `apps/web/src/components/os/overlays/PersonaSwitcher.tsx`. - Section 1 "UNIVERSAL MODES": 8 core personas (general-purpose, planner, verifier, coordinator, researcher, writer, analyst, coder). - Section 2 "YOUR WORKSPACE SPECIALISTS": template-scoped personas. - Hover tooltip: tagline + bestFor + wontDo (interface extensions already in `personas.ts`, data in `persona-data.ts`). - **Verify:** Playwright — sections render with correct persona counts. Hover → tooltip content matches persona data. Persona switch triggers agent reload. - **Effort:** 0.5 day · **Owner:** me · **Deps:** none ### Block M2 — Compliance UX (3.5 days, 5 items) #### M-02 · 3b.1 · PDF export route - Install `pdfmake` if not present. - Wire `buildComplianceDocDefinition` → `pdfmake.createPdf → getBuffer`. - Route: `POST /api/compliance/export-pdf`. - **Verify:** Vitest — POST returns application/pdf, non-empty buffer. Manual: open PDF. - **Effort:** 4 hr · **Owner:** me · **Deps:** none #### M-03 · 3b.2 · Template system JSON schema - Templates stored as JSON: sections, logo URL, branding, footer, risk class. - Template loader + validator. - **Verify:** Vitest — load, validate, render with stub data. - **Effort:** 4 hr · **Owner:** me · **Deps:** M-02 #### M-04 · 3b.3 · Full-page ComplianceReport viewer - Current is 324-line card — expand to full-page. - Date range picker + section toggles + PDF download button. - **Verify:** Playwright — date range filters apply, toggles show/hide sections, download triggers PDF. - **Effort:** 0.5 day · **Owner:** me · **Deps:** M-02, M-03 #### M-05 · 3b.4 · Custom branding - Company logo upload (stored in vault folder). - Org name override + risk classification override. - **Verify:** Vitest — branding fields round-trip. Playwright — uploaded logo appears in PDF. - **Effort:** 4 hr · **Owner:** me · **Deps:** M-03 #### M-06 · 3b.5 · KVARK template (enterprise variant) - Section: IAM audit, data residency proof, department breakdown. - **Verify:** Vitest — KVARK template validates + renders. Playwright — KVARK org sees KVARK template by default. - **Effort:** 4 hr · **Owner:** me · **Deps:** M-03, M-05 ### Block M3 — Harvest UX Polish (5 days, 4 open items) #### M-07 · 3.3 · SSE live progress streaming - Pipeline emits progress events; UI consumes via SSE. - HarvestTab shows real-time progress bar + per-source counts. - **Verify:** Playwright — start harvest, observe counter increment. Vitest for SSE event shape. - **Effort:** 1 day · **Owner:** me · **Deps:** none #### M-08 · 3.4 · Resumable harvests - Checkpoint every 100 frames in a resume-log file. - On resume: read checkpoint, skip already-processed entries. - **Verify:** Vitest — interrupt harvest mid-way, resume, verify no duplicates and completion. - **Effort:** 1 day · **Owner:** me · **Deps:** M-07 #### M-09 · 3.5 · Identity auto-populate screen - After harvest, UI surfaces extracted identity signals for user to confirm/edit. - **Verify:** Playwright — completed harvest → identity review screen → save → identity persisted. - **Effort:** 0.5 day · **Owner:** me · **Deps:** H-18 #### M-10 · 3.6 · Harvest-first onboarding tile - Onboarding step 2 (pending [M]-08 decision) — "Where does your AI life live?" - **Verify:** Playwright — onboarding path with harvest-first enabled shows the tile. - **Effort:** 4 hr · **Owner:** me · **Deps:** [M]-08 ### Block M4 — Wiki Compiler v2 (5 days, 4 open items) #### M-11 · 2.2 · Incremental recompilation - Engine supports delta recompile. Add hook: `post-harvest` → `recompile(changedFrameIds)`. - **Verify:** Vitest — add N frames, recompile delta, observe only affected pages rebuild. - **Effort:** 1 day · **Owner:** me · **Deps:** none #### M-12 · 2.3 · Obsidian vault adapter - Writer: `@waggle/wiki-compiler/adapters/obsidian` — produce `.md` files + YAML frontmatter + `[[wikilinks]]`. - **Verify:** Vitest — generate N pages → load in Obsidian (manual) + structure verified via assertions. - **Effort:** 1 day · **Owner:** me · **Deps:** none #### M-13 · 2.4 · Notion structured export - Adapter uses Notion API to create pages in a user's workspace. - Map entity/concept/synthesis pages to Notion blocks. - **Verify:** Vitest with Notion API mock. Integration test with real test workspace. - **Effort:** 1.5 day · **Owner:** me · **Deps:** none #### M-14 · 2.5 · Wiki health report dashboard UI - Types exist in core. Build UI: coverage %, orphaned entities, stale pages, recent compile. - **Verify:** Playwright — page loads, shows real metrics from compiled wiki. - **Effort:** 0.5 day · **Owner:** me · **Deps:** none ### Block M5 — Installer / Ollama (INST-1/2/3 — 2 days) #### M-15 · INST-1 · Ollama bundled installer - Onboarding step: "Install Ollama" button → downloads + installs Ollama silently. - Post-install: pull Gemma 4 (or recommended model per M-16). - **Verify:** Playwright on a VM without Ollama → install succeeds → model pulled → chat reaches Ollama. - **Effort:** 1 day · **Owner:** me · **Deps:** none #### M-16 · INST-2 · Hardware scan + model fit - Read RAM/GPU via Tauri Rust side or `systeminformation` npm. - Recommend models that fit locally (e.g., "You have 32GB RAM, can run Gemma 4 31B Q4"). - **Verify:** Vitest with stubbed HW values → correct recommendations across 5 HW profiles. Playwright shows recommendation in onboarding. - **Effort:** 4-6 hr · **Owner:** me · **Deps:** M-15 #### M-17 · INST-3 · Ollama daemon auto-start - Windows: register service. macOS: launchd plist. - **Verify:** On install, service registered. After reboot, `ollama list` works without manual start. - **Effort:** 4-6 hr · **Owner:** me · **Deps:** M-15 ### Block M6 — Medium UX fixes (6 items, 6-10 hr total) #### M-18 · UX-1 · Reduce onboarding decisions (default Blank + General Purpose path) - Add "Skip and set me up" button on step 1 → skip 2-6, land on Ready. - **Verify:** Playwright — skip path lands on desktop in < 3 clicks. - **Effort:** 2 hr · **Owner:** me · **Deps:** none #### M-19 · UX-4 · Dock text labels first 7d / 20 sessions - LocalStorage counter `sessionCount`; below threshold → show labels. - Settings toggle to permanent. - **Verify:** Playwright fresh-state → labels visible. After 20 sessions → labels off. - **Effort:** 2 hr · **Owner:** me · **Deps:** none #### M-20 · UX-5 · Hide token/cost behind dev mode - Settings → Advanced → "Developer mode" toggle. - When off: hide token count + cost in status bar. - **Verify:** Playwright — toggle off hides, on shows. - **Effort:** 1 hr · **Owner:** me · **Deps:** none #### M-21 · UX-6 · Chat header overflow menu - Collapse secondary controls into a `⋯` menu. - **Verify:** Playwright — narrow viewport triggers collapse; click menu expands options. - **Effort:** 2 hr · **Owner:** me · **Deps:** none ### Block M7 — Engagement features (ENG-1..7 — 4 days) #### M-22 · ENG-1 · "I just remembered" toast after 5th message - Watcher: on 5th user message in a session, if relevant memories exist, toast "I just remembered something relevant" with preview. - **Verify:** Playwright — 5 messages → toast appears with non-empty preview (needs harvest data). - **Effort:** 4 hr · **Owner:** me · **Deps:** none #### M-23 · ENG-2 · WorkspaceBriefing collapsible sidebar - Current briefing lives somewhere; make it a collapsible right sidebar tied to workspace. - **Verify:** Playwright — expand/collapse persists across reload. - **Effort:** 4 hr · **Owner:** me · **Deps:** none #### M-24 · ENG-3 · Dock unlock nudge at 10/50 sessions - Session counter; trigger animated tooltip "You've unlocked X new apps". - **Verify:** Playwright — stub session count to 10 → nudge appears. - **Effort:** 2 hr · **Owner:** me · **Deps:** M-19 #### M-25 · ENG-4 · LoginBriefing every launch - Per-session (not per-install); "Don't show again" sets `loginBriefingDismissed` config. - **Verify:** Playwright — fresh session → briefing shows. Dismiss → hidden. New session → shows again (unless dismissed). - **Effort:** 2 hr · **Owner:** me · **Deps:** none #### M-26 · ENG-5 · Harvest-first onboarding (depends on [M]-08) - Covered by M-10 if [M]-08 says harvest-first. #### M-27 · ENG-6 · Memory Score / Brain Health metric - Metric: (frames × 0.3) + (concepts × 0.4) + (entities × 0.3), normalized. - Display in dashboard + status bar. - **Verify:** Vitest for metric fn. Playwright — metric displays with correct value given stubbed data. - **Effort:** 4 hr · **Owner:** me · **Deps:** none #### M-28 · ENG-7 · Suggested next actions after assistant response - Generate 2-3 suggested follow-ups from the last assistant message. - Render as chips under the message. - **Verify:** Playwright — message appears → chips render → click → fills chat input. - **Effort:** 4 hr · **Owner:** me · **Deps:** none ### Block M8 — Infra polish (3 items) #### M-29 · CR-1 · MS Graph OAuth connector - Connector for email / calendar / files. - OAuth device-code flow (Marko's Microsoft 365 account). - Harvest adapter writes frames from calendar events, recent emails, Drive files. - **Verify:** Integration test against live MS Graph with test account. Frames written + dedup. - **Effort:** 2-3 days · **Owner:** me · **Deps:** none #### M-30 · CR-3 · KG Viewer top-5 demo gaps - Loading state, error state, export-PNG, touch gesture support, legend. - **Verify:** Playwright — load → see loading → data arrives → export PNG downloads. - **Effort:** 4-6 hr · **Owner:** me · **Deps:** none ### Block M9 — Content polish (2 items) #### M-31 · CR-4 · Demo video script (90s + 5min) - 90s: harvest → wiki → insight loop, one ohshit moment. - 5min: the same + governance + teams + KVARK bridge. - **Verify:** Marko approval on script. Stored at `docs/marketing/demo-video-script.md`. - **Effort:** 1 day · **Owner:** me · **Deps:** none #### M-32 · CR-5 · LinkedIn launch posts (3-post sequence) - Post 1 (T-14d): "Why we built Waggle" narrative. - Post 2 (T-3d): "What's about to drop" + paper teaser. - Post 3 (Launch day): "It's live" + download link + proof summary. - **Verify:** Stored at `docs/marketing/linkedin-launch-sequence.md`. Marko approves + schedules. - **Effort:** 4 hr · **Owner:** me · **Deps:** [M]-09 peer reviewer context, [M]-10 launch date ### Block M11 — Strategic documentation (2 items, new from v2 brief) #### M-49 · KVARK model strategy documentation - Document **Qwen3-30B-A3B-Thinking** as KVARK analytical default (per PA v5 data: +26.7pp on compare-type tasks with PA enabled). - Document **Opus 4.7** as reserved tier for multilingual / high-accuracy requests. - Reference PA v5 cost-performance advantage (60x) where applicable. - File: `docs/KVARK-MODEL-STRATEGY.md` (new). Cross-link from `docs/kvark-http-api-requirements.md`. - **Verify:** Doc committed. CLAUDE.md §9 KVARK Integration references the new doc. - **Effort:** 2 hr · **Owner:** me · **Deps:** none #### M-50 · Canonical "cognitive layer" thesis document - File: `docs/THESIS-COGNITIVE-LAYER.md` (new), 600-800 words. - Precision framing: "cognitive layer" (architectural category) NOT "conscious agent" (philosophical claim). Guard against marketing drift. - Three pillars: (a) architecture — frame model, bitemporal KG, hybrid search, compliance-by-default; (b) empirical validation — PA v5 results + H-42/43/44 benchmark numbers when available; (c) real-world test — Waggle dogfooded by the team that built it. - Serves as input for: launch blog post, pitch deck, Paper 1 intro, LinkedIn sequence (M-32). - Draft by me, reviewed by Marko before committing. - **Verify:** Doc committed with benchmark numbers plugged in from H-42 (if available) or placeholder + TODO marker. - **Effort:** 3-4 hr · **Owner:** me + [M] review · **Deps:** H-42 results available (so we reference real numbers, not placeholders) ### Block M10 — PDF deferred items (21 items from PDF-E2E-ISSUES, non-P0 subset) Grouped. P35/P36/P40/P41 are already H-02..H-05 above. Everything else here: | ID | Item | Effort | |---|---|---| | M-33 | P4 · Mutation Gates + 3-level tool approval unified UX | 1 day | | M-34 | P6 · Room 2-parallel-agents visualization verify | 4 hr | | M-35 | P8 · Agents vs Personas naming unify (current partial) | 2 hr | | M-36 | P10 · Bee-style per-agent icons (dark + light) | 1-2 days (design-heavy) | | M-37 | P14 · Local browser multi-drive (C: support) | 1 day | | M-38 | P15 · Create Template modal drag/overlap fix | 4 hr | | M-39 | P16 · Files app local-folder create + explorer-style browse | 1-2 days | | M-40 | P17 · App-wide hover tooltips on badges/options | 4-6 hr | | M-41 | P18 · Waggle Dance real signal display | 4 hr | | M-42 | P21 · Timeline wire to event stream | 4 hr | | M-43 | P25 · Scheduled Jobs toggle persist after trigger | 2 hr | | M-44 | P26 · New scheduled job creation UX clarity | 3 hr | | M-45 | P29 · Skills & Apps cards clickable + detail cards | 4 hr | | M-46 | P30 · MCP install CLI simplification | 4 hr | | M-47 | P34 · Approvals app — move to Ops or delete (Marko picks) | 1 hr | | M-48 | P39 · Status bar dynamic (model + folder) | 2 hr | **Each gets: Read component → fix → Verify: Playwright test for the specific behavior + Vitest where logic changed.** --- ## LOW tier — post-launch OK (~40 items · ~15 eng days) ### Block L1 — Responsive gaps (5 items) #### L-01 · R-1 · Dock power tier overflow <768px - **Verify:** Playwright resize to 767px → dock scrolls or collapses gracefully. - **Effort:** 2 hr · **Deps:** none #### L-02 · R-2 · StatusBar narrow-viewport - Hide non-essential items < 900px. - **Verify:** Playwright resize → items hidden per spec. - **Effort:** 2 hr · **Deps:** none #### L-03 · R-3 · ChatApp session sidebar collapse - Sidebar 192px → collapsible at narrow. - **Verify:** Playwright resize → sidebar collapses to icon rail. - **Effort:** 2 hr · **Deps:** none #### L-04 · R-4 · OnboardingWizard template grid responsive - 3 cols desktop → 2 cols tablet → 1 col mobile. - **Verify:** Playwright at 3 breakpoints → correct col count. - **Effort:** 1 hr · **Deps:** none #### L-05 · R-5 · AppWindow default sizes for mobile - Default window sizes exceed mobile viewport — adapt to max 90vw × 80vh on narrow. - **Verify:** Playwright mobile viewport → window fits. - **Effort:** 2 hr · **Deps:** none ### Block L2 — Accessibility A11Y-1..9 (9 items, 1 day total) #### L-06 · A11Y-1 · BootScreen screen-reader skip announce — **Verify:** axe-core 0 violations · **Effort:** 30 min #### L-07 · A11Y-2 · Dock 44×44 touch targets — **Verify:** measure in Playwright · **Effort:** 1 hr #### L-08 · A11Y-3 · Window title-bar min/max button icons + labels — **Verify:** screen reader reads "Minimize"/"Maximize" · **Effort:** 30 min #### L-09 · A11Y-4 · PersonaSwitcher aria-disabled on locked cards — **Verify:** axe + keyboard skip · **Effort:** 30 min #### L-10 · A11Y-5 · Settings role="switch" + aria-checked on toggles — **Verify:** axe · **Effort:** 1 hr #### L-11 · A11Y-6 · Dashboard health dots shape differentiation — **Verify:** colorblind simulation · **Effort:** 1 hr #### L-12 · A11Y-7 · Chat feedback dropdown focus trap + arrow keys — **Verify:** keyboard-only navigation · **Effort:** 1 hr #### L-13 · A11Y-8 · Global Search role="dialog" — **Verify:** axe · **Effort:** 30 min #### L-14 · A11Y-9 · Memory importance slider aria-label — **Verify:** axe · **Effort:** 30 min ### Block L3 — Tech debt (from remaining-work memory) #### L-15 · Remove old `app/` frontend - Cleanup: `app/src/` is dead code per CLAUDE.md. Move anything still referenced to `apps/web/` and delete the dir. - **Verify:** Full build green, all tests pass, `grep -r "from 'app/" apps/` returns 0. - **Effort:** 4 hr · **Deps:** verify every `app/src` import is unused first #### L-16 · ContextRail deeper integration - Wire `setContextRailTarget` to FilesApp file click, Memory frame click, chat message click. - **Verify:** Playwright — click each → ContextRail updates. - **Effort:** 4 hr · **Deps:** none #### L-17 · Scan for MOCK/stub/placeholder in production paths - `grep -rn "MOCK:\|TODO:\|stub\|placeholder" packages/ apps/` — audit each hit. - Remove or ticket follow-up for each. - **Verify:** Grep returns only acceptable (test fixture) hits after cleanup. - **Effort:** 0.5 day · **Deps:** none #### L-18 · Agent native file access tools - `read_file`, `write_file`, `search_files` tools wired to StorageProvider for all 3 storage types (virtual/local/team). - **Verify:** Vitest for each tool × each storage. Integration test: agent uses tool in a real chat. - **Effort:** 1 day · **Deps:** none #### L-19 · TeamStorageProvider real S3/MinIO impl - Currently stub per CLAUDE.md §2. Use `@aws-sdk/client-s3`. - **Verify:** Integration test against MinIO Docker. - **Effort:** 1 day · **Deps:** none #### L-20 · File indexing for semantic search - Workspace files auto-indexed into workspace mind on upload/change. - **Verify:** Upload file → wait → search returns file content. - **Effort:** 0.5 day · **Deps:** L-18 #### L-21 · Cross-workspace file read - `read_other_workspace_file(workspace_id, path)` agent tool. - Permission modal for first cross-read. - **Verify:** Vitest for permission gate. Playwright modal on first cross-read. - **Effort:** 4 hr · **Deps:** L-18, L-19 ### Block L4 — Engagement advanced (from remaining-work P3) #### L-22 · Memory bragging window (richer LoginBriefing) - Upgrade M-25 to show concrete remembered facts per session. - Optional: native desktop notification. - **Verify:** Playwright — briefing card has ≥ 3 concrete recalled facts. - **Effort:** 4 hr · **Deps:** M-25 ### Block L5 — Minor PDF items (1 item) #### L-23 · P39 · Status bar dynamic (moved here; Low priority tech-debt if not done in M) - Already in M-48 above — keep single instance; list for cross-reference only. --- ## One-view master table (summary) | ID | Tier | Category | Item | Owner | Effort | Deps | |---|---|---|---|---|---|---| | [M]-01 | — | Marko | Stripe products in dashboard | Marko | 1 hr | none | | [M]-02..10 | — | Marko | Decisions + peer review + judge list | Marko | ~3 hr total | — | | H-01 | HIGH | Polish | QW-3 skip boot | me | 15-30 min | — | | H-02 | HIGH | Polish | P35 spawn-agent models | me | 2-3 hr | — | | H-03 | HIGH | Polish | P36 dock spawn-agent | me | 1 hr | H-02 | | H-04 | HIGH | Polish | P40 BootScreen light | me | 2 hr | — | | H-05 | HIGH | Polish | P41 header text light | me | 30 min | H-04 | | H-06 | HIGH | Polish | CR-2 token sweep | me | 2 hr | H-04, H-05 | | H-07 | HIGH | GEPA | G4 trace outcomes | me | 0.5 d | — | | H-08 | HIGH | GEPA | G2 override-aware loader | me | 2-4 hr | — | | H-09 | HIGH | GEPA | G3 running-judge audit | me | 2-4 hr | — | | H-10 | HIGH | GEPA | G1 evolution service + cron | me | 0.5-1 d | H-07 | | H-11..20 | HIGH | Harvest | Phase 1 real-data harvest | me | ~3 d | [M]-01..03 (done), H-14 Cursor | | H-21 | HIGH | Proofs | Phase 4 Memory Proof | me | 10 d | H-20, [M]-02 | | H-22 | HIGH | Proofs | Phase 5 GEPA Proof | me | 18 d | H-07..10, H-20 | | H-23 | HIGH | Proofs | Phase 5b Combined | me | 6 d | H-21, H-22 | | H-24 | HIGH | Papers | Paper 1 Memory | me + [M]-09 | 3 d | H-21 | | H-25 | HIGH | Papers | Paper 2 GEPA + Combined | me + [M]-09 | 3 d | H-22, H-23, [M]-06 | | H-26..33 | HIGH | Stripe | Stripe integration (8 items) | me | ~2 d | [M]-01 for H-33 only | | H-34 | HIGH | Launch | hive-mind extraction | me | 2-3 d | [M]-07 | | H-35 | HIGH | Launch | Binary build + smoke | me | 1 d | H-01..10 | | H-36 | HIGH | Launch | Clerk auth | me | 1 d | H-27 | | H-37 | HIGH | Launch | Onboarding harvest-first | me | 4 hr | [M]-08 | | H-38 | HIGH | Launch | Landing page polish | me | 4 hr | — | | H-39 | HIGH | Launch | Windows signing scaffold | me | 3 hr | — | | H-40 | HIGH | Launch | Mac notarize scaffold | me | 2 hr | — | | H-41 | HIGH | Launch | Auto-updater signing | me | 3 hr | H-35 | | **H-42** | **HIGH** | **Benchmarks** | **LoCoMo run — LAUNCH GATING** | me | 3-4 d | H-34 | | **H-43** | **HIGH** | **Benchmarks** | **LongMemEval run — LAUNCH GATING** | me | 2-3 d | H-34 | | **H-44** | **HIGH** | **Benchmarks** | **SWE-ContextBench run — strategic diff** | me | 3 d | H-34 | | M-01 | MED | Polish | PersonaSwitcher two-tier | me | 0.5 d | — | | M-02..06 | MED | Compliance | PDF + template system | me | 3.5 d | — | | M-07..10 | MED | Harvest UX | SSE + resumable + ident + tile | me | 3 d | H-18 for M-09 | | M-11..14 | MED | Wiki v2 | Incremental + Obsidian + Notion + health | me | 4 d | — | | M-15..17 | MED | Installer | Ollama + HW scan + daemon | me | 2 d | — | | M-18..21 | MED | UX | 4 medium UX fixes | me | 7 hr | — | | M-22..28 | MED | Engagement | 7 engagement features | me | 4 d | [M]-08 for M-26 | | M-29 | MED | Infra | MS Graph OAuth | me | 2-3 d | — | | M-30 | MED | Infra | KG Viewer polish | me | 4-6 hr | — | | M-31..32 | MED | Content | Demo video + LinkedIn posts | me | 1.5 d | [M]-09, [M]-10 | | **M-49** | **MED** | **Docs** | **KVARK model strategy doc** | me | 2 hr | — | | **M-50** | **MED** | **Docs** | **Cognitive layer thesis doc** | me + [M] | 3-4 hr | H-42 | | M-33..48 | MED | PDF def | 16 deferred PDF items | me | ~5 d | — | | L-01..05 | LOW | Responsive | 5 responsive fixes | me | 9 hr | — | | L-06..14 | LOW | A11Y | 9 A11Y items | me | 1 d | — | | L-15..21 | LOW | Tech debt | 7 tech-debt items | me | 3 d | — | | L-22 | LOW | Engagement | Bragging window | me | 4 hr | M-25 | **Totals (v2):** | Tier | Items | Eng days | Notes | |---|---|---|---| | Marko | 12 ([M]-01..14 with [M]-07/11 locked) | ~3 hr + decisions | Blocks some H-items | | HIGH | 44 (added H-42/43/44) | ~58 | Includes 13d proofs + 8-10d benchmarks | | MEDIUM | 50 (added M-49/M-50) | ~26 | Parallelizable | | LOW | 22 | ~15 | Post-launch OK | | **Total** | **~128** | **~102 days** (cal **~8-10 wk** parallel, gated by benchmark outcome) | **Calendar range now 8-10 weeks** (vs v1 estimate 7-8 weeks). Wider range reflects benchmark gating — Scenario A could finish at the low end; Scenario B with a tuning iteration pushes to the high end; Scenario C opens an architecture investigation that could extend further. --- ## Critical path (v2 — SOTA-gated) **Launch is no longer on a fixed date.** Launch is gated by benchmark outcomes per [M]-07. ``` [M]-01 Stripe products ──┐ ├─► H-26..33 Stripe integration (2d) │ H-01..06 Polish A+B (1.5d) ──┐ │ H-07..10 GEPA wiring (2d) ────┤ │ H-14 Cursor adapter (1d) ──┐ │ ├──► H-11..20 Phase 1 Harvest GATE (3d) [M]-02..03 exports (done) ─┘ │ │ ├──► H-21 Phase 4 Memory Proof (10d) ────► H-24 Paper 1 │ ├──► H-22 Phase 5 GEPA Proof (18d) ──────► H-25 Paper 2 │ ↑ └──► H-23 Phase 5b Combined (6d) ──────────┘ H-34 hive-mind extraction (5-10d) ──► Block H12 LAUNCH GATE ├─► H-42 LoCoMo (3-4d) ◄── SOTA gate ├─► H-43 LongMemEval (2-3d) └─► H-44 SWE-ContextBench (3d) │ ▼ [Scenario A / B / C decision] │ A / B-acceptable / B+SWE-top3 win │ ▼ H-35..41 Launch prep (parallel) ──────► LAUNCH (synchronized: hive-mind OSS + Waggle beta + papers + LinkedIn) M-49/M-50 strategic docs ─────────────► M-31/M-32 demo video + LinkedIn ──────► ``` **Longest chain (v2):** H-34 (5-10d) → H-42 (3-4d) → optional tuning iteration (0-5d) → H-43/H-44 (3d parallel) → H-35..H-41 launch prep (parallel) = **12-25 days post-harvest** depending on scenario. **Papers (H-24/H-25) still write in parallel** with the benchmark block and launch prep — no longer on critical path for launch go/no-go, but required for launch narrative completeness. --- ## Sprint discipline 1. **One commit per item.** Tree clean between items. 2. **Test gate enforced per CLAUDE.md §3:** `npx tsc --noEmit` + `npm run test -- --run` + `npm run lint` green before next item. 3. **PostToolUse hooks auto-run** (Prettier, tsc, console.log scan). 4. **Playwright regression** on UI items. 5. **Vitest per item** for logic changes. 6. **No stacked WIP.** Next item starts only after current passes Verify. 7. **Blockers surface immediately** — if an item hits an unexpected blocker, stop + update this doc, don't hack around. --- ## Recommended execution sequence (v2 — SOTA-gated) **Day 1 (today — alignment + Phase A close + Phase B start):** - v2 backlog alignment ✅ this commit - Pricing tier-rename fix (useBilling + SettingsApp + TeamGovernanceApp) — part of this commit - H-01 QW-3 Playwright regression (code already correct at `Index.tsx:15-17`) - H-02 P35 spawn-agent (2-3h) → H-03 P36 dock icon (1h) → commit - H-04 P40 → H-05 P41 → H-06 CR-2 light mode sweep → commit - [M]-01 Stripe products in Stripe dashboard (guided with Marko, parallel) **Day 2:** - H-26..H-28 Stripe webhook + tier mapping + upgrade flow UI - H-07 G4 trace outcomes (0.5d) - Start H-08 G2 override loader **Day 3:** - Finish H-08, H-09 G3 running-judge audit - H-10 G1 evolution service + cron - Full GEPA closure test pass (all 4 gaps verified) **Day 4:** - H-14 Cursor adapter - H-12, H-13 Claude + Gemini imports (exports already on disk) - H-11 Re-harvest Claude Code **Day 5:** - H-17 cognify → H-18 identity → H-19 wiki compile - H-20 GATE check (frames ≥ 10K, dedup verified) - **Start H-34 hive-mind source extraction** (5-10 day wall time — locked, don't rush) - Start H-21 Phase 4 Memory Proof in parallel **Week 2-3:** H-34 extraction continues. H-21 Memory Proof runs (10d). H-22 Phase 5 GEPA Proof starts (18d). H-31..33 Stripe completes once [M]-01 Stripe products land. **Week 3-4:** H-34 complete → **Block H12 benchmarks in parallel** (H-42 LoCoMo + H-43 LongMemEval + H-44 SWE-ContextBench). H-22 GEPA Proof continues. **Week 4-5:** Benchmark results analyzed. **Scenario A/B/C decision.** If A: launch prep aggressive. If B: optional tuning iteration (≤ 5 days). If C: architecture investigation, re-plan. **Week 5-6:** H-35..41 launch prep (parallel with H-23 Combined + H-24/H-25 paper drafts). M-49 KVARK model strategy. M-50 cognitive layer thesis (after H-42 numbers available). M-31/M-32 demo video + LinkedIn sequence draft. **Week 6-7:** Peer review loop ([M]-09). Marko approvals + final polish. **Week 7-10:** Launch window opens once H-42/H-43/H-44 meet gate criteria + binary signed + landing ready + papers reviewed. **Actual launch date = earliest date where benchmark results clear the gate AND all launch-prep items are done.** --- ## Related docs (superseded) - `docs/plans/POLISH-SPRINT-2026-04-18.md` — phased polish (absorbed) - `docs/plans/BACKLOG-CONSOLIDATED-2026-04-17.md` — consolidated (absorbed) - `docs/plans/PDF-E2E-ISSUES-2026-04-17.md` — PDF triage (absorbed) - `docs/plans/BACKLOG-FULL-2026-04-18.md` — intermediate consolidation (absorbed) - `docs/HIVE-MIND-INTEGRATION-DESIGN.md` — detail for H-34 - `docs/UX-ASSESSMENT-2026-04-16.md` — UX findings source - `docs/test-plans/*.docx` — Phase 4/5/5b protocols (detail for H-21..H-23) - `docs/REMAINING-BACKLOG-2026-04-16.md` — 2026-04-16 master snapshot