moving
Some checks failed
Installer Smoke / installer-smoke (push) Has been cancelled

This commit is contained in:
Oleg Maslov
2026-09-02 10:10:29 +02:00
commit 0c3e2ead3b
3841 changed files with 970576 additions and 0 deletions

View File

@@ -0,0 +1,98 @@
---
name: Session Handoff — 2026-05-01 S2 (Block A 25 FRs + Block B Phase 1 + Day-2 backlog + Block C state restore)
description: 11 commits closing 25/25 PM friction reports, Block B Phase 1 (#6 Tour Replay + #7 Imports Reminder) shipped pre-launch, Day-2 backlog ratified with cross-decisions, production state restored from backup. Suite 394/394 web + tsc clean across web/server/agent. PM Pass 7 PASS 9/9.
type: project
originSessionId: 9b6b4e0d-3d2f-414a-89f7-e852f1aab756
---
## Start here next session
```
Working tree: CLEAN (only pre-existing untracked dirs: benchmarks/gaia2/, external/)
Branch: main
Head: f97b782 docs(day-2): append PM Pass 7 friction notes — FR Pass7-A/B/C (Day-2 Wave 1-2)
Rollback tag: checkpoint/pre-self-evolution-2026-04-14
Suite: tsc clean across apps/web + packages/server + packages/agent
vitest 394/394 (apps/web) — was 381 baseline + 13 new for import-reminder-state.test.ts
Backend: btmoe23pb running at http://127.0.0.1:3333 with WAGGLE_PROMPT_ASSEMBLER=1
Production state RESTORED — frameCount=9, mindSize 4.3MB, embeddingCoverage=100%
Vault preserved (Anthropic + others), system DBs intact
Backup: CONSUMED by mv during Block C — `~/.waggle.backup-onboarding-test-2026-04-30/` no longer exists.
Live `~/.waggle/` IS the production state.
Frontend dev: bvmhtwc59 (Vite :8080) — ran the whole session; HMR picked up every commit
PM walkthrough URL: http://localhost:8080/?forceWizard=true (DEV-gated; clears tour-done localStorage too)
May-8 routine: trig_01JK3YuVe6bAsJvcMBbKfUJ4 — fires 2026-05-08T07:00:00Z (Phase 1 health check + Day-2 wave priority recommendation)
```
## What shipped this session (11 commits)
| Commit | Description |
|--------|-------------|
| `addf0b5` | fix(server): fresh-state greeting + workspace summary deduplicates "workspace" word (FR #25/#29/#46) |
| `5c8f0ec` | fix(onboarding): boot race + wizard backdrop + sequenced post-onboarding overlays + Tour step 2 (FR #23/#33/#34/#45/#47) |
| `6918837` | fix(onboarding-steps): copy + branded swatches + tooltips + Continue hints + custom-persona help (FR #36/#37/#38/#39/#40/#41/#42/#43/#44) |
| `2e9a9a1` | fix(briefing+chat): fresh-state timestamps + Personal-tag tooltip + auto-send starter prompts + briefing fallback dedupe (FR #24/#25/#26/#27/#32) |
| `a5eec15` | fix(onboarding): inline-style wizard backdrop + clear tour-done localStorage on forceWizard (FR #33 round 2 / FR #47 PM hook) |
| `6fb5f4e` | docs(addiction-features): Block B design pass — 7 feature design docs awaiting PM ratification |
| `de19f5c` | fix(onboarding): early-return Desktop while wizard active — eliminates Chat/LoginBriefing bleed-through (FR #33 round 3) |
| `f4e3591` | feat(onboarding): Tour Replay + Wizard Replay in Settings → Advanced (Phase 1 #6) |
| `4874f15` | feat(memory): Pending Imports Reminder banner with auto-detect Claude Code (Phase 1 #7) |
| `6dfa5da` | docs(day-2): consolidated Day-2 backlog — Phase 2-6 modifications + cross-decisions + FR #30 |
| `f97b782` | docs(day-2): append PM Pass 7 friction notes — FR Pass7-A/B/C (Day-2 Wave 1-2) |
Plus one one-shot remote routine armed: `trig_01JK3YuVe6bAsJvcMBbKfUJ4` fires 2026-05-08T07:00:00Z with Phase 1 health verification + Phase 2-6 wave priority recommendation. Routine URL: https://claude.ai/code/routines/trig_01JK3YuVe6bAsJvcMBbKfUJ4
## Cluster overview — three threads, one outcome
**Thread 1: Block A — 25 friction reports closed (5 sequential commits + 1 round-2 + 1 round-3).** PM ran fresh-state walkthrough on `?forceWizard=true` and surfaced 25 frictions across P0-P3 covering greetings, copy, sequencing, branded swatches, tooltips, Continue hints, persona scroll affordances, and the post-wizard overlay race. Six commits closed 22 of them on the first round (`addf0b5``2e9a9a1`). The wizard backdrop (FR #33) needed three rounds: Tailwind utilities first (`5c8f0ec`), then inline `style={{backgroundColor:'rgba(0,0,0,0.85)',backdropFilter:'blur(8px)'}}` (`a5eec15`) — both still left Chat readable behind. Round 3 (`de19f5c`) gave up on opacity tuning entirely and adopted PM's recommended option (b): early-return `Desktop` when `!onboardingState.completed` so nothing renders behind the wizard. Same pattern as macOS first-launch. PM Pass 6 verified clean. The `?forceWizard=true` URL was extended (`a5eec15`) to also clear `waggle:tooltips_done` so PM walkthrough always sees the full post-wizard sequence including Tour.
**Thread 2: Block B — design pass + Phase 1 ship.** Three steps: write 7 addiction-feature design docs (`6fb5f4e`), halt-and-PM for ratification, then implement what survives. Marko's ratification call: ship Phase 1 (#6 Tour Replay + #7 Imports Reminder) pre-launch as zero-LLM-cost low-risk. Phase 2-6 deferred to Day-2 with concrete modifications (#1 Streak → Memory Growth Chart, #5 Milestones → toast/card split by threshold size, #2 push notification → Today's Brief Dashboard card; #3 Continuity + #4 Wins GO as designed). All five cross-feature decisions ratified at once (frame weighting 1.0/0.5/0.25 with explicit-only fallback, UTC storage + user-local display, suppress when N<3 frames, strict overlay-queue priority order, $0.20/$0.30/uncapped LLM tier caps with upsell on overrun). Phase 1 shipped via `f4e3591` + `4874f15` — adds `replayTour()` to `useOnboarding`, Settings → Advanced "Help & Tutorials" with Replay tour + Replay wizard (with confirm dialog), and `ImportReminderBanner.tsx` with a four-gate eligibility ladder (onboarded + retired + frame-count + 7-day cadence) plus auto-detect Claude Code upgrade copy. 13 new unit tests pin the eligibility ladder. PM Pass 7 verified all 9 walkthrough steps PASS. Three small leftover items (FR Pass7-A/B/C) captured in `f97b782` for Day-2 Wave 1-2; none blocked Block C.
**Thread 3: Block C state restore — production data back, prompt-assembler live.** Pre-flight integrity check confirmed 205MB backup with all six expected sub-paths (workspaces, vault.json, personal.mind, skills, plugins, models, audit.db). Sequential destructive ops with halt-and-PM gates: `TaskStop bzbcsj9j7` + `Stop-Process -Id 58152` to free port 3333, `rm -rf ~/.waggle` (test stub), `mv ~/.waggle.backup-onboarding-test-2026-04-30 ~/.waggle` (production restore — backup folder consumed by `mv`, no leftover). Restored size matches backup (205MB). Backend restart via `WAGGLE_PROMPT_ASSEMBLER=1 npm run dev --workspace=packages/server` ran in background as task `btmoe23pb`. `/health` 200 within ~17s (well under 60s halt threshold). frameCount=9 (real production data, was 0 in test stub), embeddingCoverage=100%, LiteLLM healthy on :4000, defaultModel `claude-sonnet-4-6`. PA env confirmed via spawn syntax + will surface at first chat turn in agent-loop logs.
## What's still open
### P0 — ship blockers
- **None.** All 25 PM friction reports CLOSED. Phase 1 verified PASS 9/9 by PM Pass 7. Production state restored. Backend live with PA enabled. Wizard production-ready.
### P1 — handoff to PM / Marko (not CC scope)
- **Landing v3.2 update** with Marko — ready to write per the milestone validation in commit `33f3ff4` from S1.
- **PM ↔ CC next session kickoff**: Day-2 Wave 1-2 per Marko's prioritization. Wave 1 candidates: FR Pass7-A guard fix (~5 LOC, useOnboarding.ts), FR Pass7-C cascade fix (~10 LOC, window-cascade.ts), Memory Growth Chart (~120 LOC), FR #30 option B persona-picker indicator (~50 LOC). Total Wave 1 estimate ~3-4h.
### P2 — Day-2 backlog (post-launch waves; doc at `docs/DAY-2-BACKLOG-2026-05-01.md`)
- **Wave 1** (~6h): cross-decision §1.1 weight-counting helper + §1.4 OverlayQueue controller + Feature #1 Memory Growth Chart + FR #30 option B + FR Pass7-A/C
- **Wave 2** (~4-5h): Feature #3 Continuity Banner + Feature #2 Today's Brief Dashboard card + FR Pass7-B (window persistence reset)
- **Wave 3** (~3h): Feature #5 Milestone toast/card split
- **Wave 4** (~5-6h): HybridSearch recall instrumentation + Feature #4 Weekly Wins Digest
### P3 — explicitly deferred (per Day-2 backlog §6)
- Tier-gated copy variants (FREE vs Pro vs Teams) — wait for usage data
- Localization (English-only v1)
- Cross-feature combos (Streak + chart + milestone bonuses)
- A/B testing infrastructure
- Email / Slack delivery channels
- Per-workspace addiction surfaces (everything ships personal-mind global v1)
## Key design decisions
- **Early-return Desktop during wizard beats opacity tuning** — three rounds of rgba/blur experiments couldn't cover Chat at 85% alpha; the macOS first-launch pattern (don't render Desktop at all) eliminated the entire bleed-through bug class in a single edit.
- **Inline `style` for wizard backdrop kept as defense-in-depth** — even with the early-return, the rgba(0,0,0,0.85) + 8px blur stays so any future render of Desktop concurrent with the wizard still produces an opaque chrome.
- **Tour replay + wizard replay symmetric in Settings → Advanced** — both controls in one "Help & Tutorials" section so users with re-engagement needs find them in the same place; wizard replay gated behind inline confirm so an accidental click can't reset the user's onboarding state.
- **Imports Reminder uses a four-gate eligibility ladder** — onboarded + not-retired + frame-count + 7-day cadence. Pure function (`shouldShowImportReminder` in `import-reminder-state.ts`) so the gate is unit-testable without mounting the banner.
- **`?forceWizard=true` clears `waggle:tooltips_done` symmetrically with `waggle:onboarding`** — PM walkthrough on a returning DEV laptop now always sees the full Tour, not just the wizard. Both are DEV-gated so prod cannot accidentally re-trigger.
## Safety
```bash
# Nuclear rollback (all work since pre-self-evolution checkpoint, 2026-04-14):
git -C 'D:\Projects\waggle-os' reset --hard checkpoint/pre-self-evolution-2026-04-14
# Rollback just this session (back to 110cc77 = S1 head / S2 baseline):
git -C 'D:\Projects\waggle-os' reset --hard 110cc77
# Production state cannot be rolled back from backup — backup was consumed by mv during Block C.
# If production needs revert, restore from external backup or fresh ingest. The 9 frames live
# in personal.mind 4.3MB; auto-export weekly via Backup app keeps an additional safety copy.
```
All 11 commits this session are additive. No existing behavior changed when `WAGGLE_PROMPT_ASSEMBLER` is unset (prod default OFF gate preserved). The Desktop early-return only fires when `!onboardingState.completed` — for completed users (the launch default), Desktop renders identically to before. The Imports Reminder banner self-suppresses for any user with frames > 0 OR with retired flag set. `?forceWizard=true` is DEV-only — Vite tree-shakes it from prod bundles.