Wiki / File
Back to vault tree

Log

Frontmatter
type
log
append_only
true
created
2026-04-29

Operation Log (append-only)

Every meaningful agent / skill operation appends a structured entry below. Never rewrite or delete entries — corrections go in a follow-up entry. Format defined in Skills/log-operation.md.

Entry format

## YYYY-MM-DD HH:MM — {agent} → {skill}
- input: {brief summary or path}
- output: {brief summary or path}
- artifacts: <a class="wikilink wikilink-broken" href="#">link</a>, <a class="wikilink wikilink-broken" href="#">link</a>
- notes: (optional)

2026-04-29 — system → vault-scaffold

  • input: spec at ~/.claude/plans/i-want-to-build-cozy-candy.md
  • output: full vault tree under /Users/doorsy/Desktop/supernova/supernova/
  • artifacts: CLAUDE, README
  • notes: blueprint-only scaffold; no functional code yet.

2026-04-29 — system → onboarding-skills

2026-04-29 — system → slash-commands

  • input: user request for /brand:onboard style slash command UX
  • output: .claude/skills/brand/SKILL.md (subaction-based: onboard | offboard) and .claude/skills/project/SKILL.md (subaction: onboard) — interactive prompting via AskUserQuestion when args are missing.
  • artifacts: CLAUDE, README
  • notes: Claude Code's colon-namespacing is plugin-only; project-level slash commands use the directory name verbatim. Single command + subaction arg (/brand onboard) is the closest project-level analog.

2026-04-29 — system → secrets-management

  • input: user question "where do my API keys live?"
  • output: .env.example + .gitignore at vault root; _System/SecretsRegistry.md documenting active (MCP-managed: Gmail/Calendar/Drive) vs deferred (Slack: SLACK_BOT_TOKEN; Asana: ASANA_PERSONAL_ACCESS_TOKEN; Whoop: WHOOP_CLIENT_ID/SECRET) integrations; updated Slack/Asana/Whoop integration files to reference env var names; added secrets row to CLAUDE.md routing table.
  • artifacts: _System/SecretsRegistry, Integrations/Slack, Integrations/Asana, Integrations/Whoop
  • notes: per-brand secrets pattern documented but no brand-scoped vars yet. Raw/Health/ gitignored by default to keep medical-grade exports out of any sync.

2026-04-29 — system → personal-development

  • input: user request for a Personal Development area where notes/learnings from podcasts, books, articles, etc. tie cross-cutting into brands and projects via Obsidian's wikilink graph.
  • output: Raw/Learnings/{Podcasts,Books,Articles,Talks,Highlights}/ drop zones; Wiki/Learnings/ for synthesized atomic notes; Departments/Personal/Development.md landing page; Skills/learn-from-source.md synthesis skill; _System/TagTaxonomy.md controlled tag vocabulary.
  • artifacts: Departments/Personal/Development, Skills/learn-from-source, _System/TagTaxonomy
  • notes: pattern is Raw → learn-from-source → Wiki/Learnings → outbound wikilinks to brands/projects/decisions. TagTaxonomy.md prevents tag fragmentation; learn-from-source enforces atomic-insight rule (one claim per node).

2026-04-29 — security → slack-token-rotation

  • input: user inadvertently pasted a real Slack bot token into .env.example (committed file).
  • output: token revoked at Slack by user; new token generated and placed in .env (gitignored); .env.example restored to empty placeholder; vault confirmed never pushed to a remote.
  • artifacts: .env.example
  • notes: blast radius limited because vault is local-only. Hardened .env.example is the canonical structure-only template; .env is the only place real values live.

2026-04-29 — system → notebooklm-phase-1

  • input: user request to incorporate teng-lin/notebooklm-py for content libraries (per-person YT/podcast corpora) used by the Decisions engine and Personal Development.
  • output: Phase 1 (architecture-only). Created Wiki/Libraries/ + Templates/library.template.md; Integrations/NotebookLM.md (deferred until Phase 2 install); five skills (notebooklm-create-library, notebooklm-add-source, notebooklm-query, notebooklm-sync, notebooklm-deep-research); .claude/skills/library/SKILL.md (/library slash command with create/add-source/query/list/sync/research subactions); library schema in SchemaConventions.md; #source/notebooklm and #library/* tag categories; decision-memo + dialectic-cycle accept optional libraries: [...] input with budgeted live-query limits; learn-from-source accepts optional library_slug for NLM pre-processing; BrandContext.md template gets a "Libraries" section.
  • artifacts: Integrations/NotebookLM, Skills/notebooklm-create-library, Skills/notebooklm-add-source, Skills/notebooklm-query, Skills/notebooklm-sync, Skills/notebooklm-deep-research, Templates/library.template
  • notes: Phase 2 (install + first library), Phase 3 (live querying in dialectic), Phase 4 (audio briefings, per-brand competitor libraries) all deferred. Treated as a flaky upstream — every skill specifies graceful fallback when NotebookLM is unavailable. Sensitive vault content (Raw/Health/, Context/MI.md, brand compliance docs) hard-blocked from being uploaded.

2026-04-29 — system → notebooklm-phase-2

  • input: user request to activate Phase 2 (install + first library).
  • output: hit blocker — Homebrew Python 3.13/3.14 both have a libexpat ABI mismatch (pyexpat requests _XML_SetAllocTrackerActivationThreshold not in expat 2.8.0 nor system libexpat 8.0.0). brew reinstall python@3.13 shipped same broken bottle. Sidestepped via uv-managed Python at vault .venv/. Installed notebooklm-py 0.3.4 + Playwright Chromium. First notebooklm login attempt didn't complete (browser closed before storage_state.json was written); second attempt succeeded — session at ~/.notebooklm/storage_state.json. Updated Integrations/NotebookLM.md status: deferred → active, with correct session path, CLI invocation as .venv/bin/notebooklm, and python_env: .venv field in frontmatter. Added .venv/ to .gitignore.
  • artifacts: Integrations/NotebookLM, .gitignore, .env.example
  • notes: 13 existing NotebookLM notebooks discovered on the user's account.

2026-04-29 — system → library-import (8 of 13)

2026-04-29 — system → library-sync-batch (7 libraries)

  • input: user authorized full sync of remaining libraries.
  • output: ran notebooklm source list -n {id} --json + notebooklm summary -n {id} for hormozi, luke-iha-copywriting, video-ad-strategy, facebook-ads-blueprint, meta-frameworks, meta-playbook, high-signal-communication. Populated each wiki node's Sources table + Cached summary; bumped source_count.
  • artifacts: 7 Wiki/Libraries/* nodes
  • notes: source counts — hormozi:5, luke-iha:27, video-ad-strategy:1, facebook-ads-blueprint:1, meta-frameworks:26, meta-playbook:1, high-signal-communication:2. Total across 8 libraries (incl. earlier problem-solving:4) = 67 sources.

2026-04-29 — system → brand-a→primal-harvest-rename

  • input: user confirmed Primal Harvest is one of GMG's real brands; authorized rename.
  • output: Brands/Brand-A/Brands/primal-harvest/. Updated all frontmatter and bodies inside (BrandContext + 4 brief docs + markets/US-en/_market.md). Updated Context/Brands.md table row. Swept and updated remaining Brand-A/brand-a references in Context/Team.md, _System/TagTaxonomy.md, Wiki/Index.md, Templates/agent.template.md, CLAUDE.md, Wiki/HotCache.md. Created Wiki/Companies/primal-harvest entity node. BrandContext acknowledges DTC health-supplement positioning; brief_completeness bumped 0 → 5.
  • artifacts: Brands/primal-harvest/BrandContext, Wiki/Companies/primal-harvest, Context/Brands
  • notes: Wiki/Log.md historical entries kept their brand-a references (history is sacred). The 4 brief docs (knowledge-base, compliance, revenue-model, voice-profile) are still skeletal — fill in via /brand walkthrough or conversationally as data lands.

2026-04-29 — system → primal-libraries-import (3 of 3)

  • input: 3 Primal product notebooks now eligible for import after rename.
  • output: 3 brand-libraries created and synced — primal-harvest-hair-growth (6 sources), primal-meno-plus (4 sources), primal-sleep (3 sources). Each tagged #brand/primal-harvest #product/{sku} with subject_kind: brand, subject_link: <a class="wikilink" href="/wiki/file?path=Brands%2Fprimal-harvest%2FBrandContext.md">Brands/primal-harvest/BrandContext</a>. Brand's BrandContext.md gets a "Libraries" table linking the 3.
  • artifacts: Wiki/Libraries/primal-harvest-hair-growth, Wiki/Libraries/primal-meno-plus, Wiki/Libraries/primal-sleep
  • notes: 11 of 13 existing NotebookLM notebooks now wired into the vault. Remaining 2 (Claude Code Blueprint + the Personal Dev one user skipped) intentionally not imported.

2026-04-29 — system → youtube-grab-skill

  • input: user request for a yt-dlp-based skill to bulk-grab YouTube URLs (single video / channel last N / all) and add to an existing or new NotebookLM library.
  • output: installed yt-dlp 2026.3.17 into .venv/. Wrote Skills/youtube-grab.md (canonical procedure: detect URL type via yt-dlp --flat-playlist, extract video URLs, route through notebooklm source add with 2s delay, sync the library at the end). Wrote .claude/skills/youtube/SKILL.md (/youtube grab slash command with interactive limit + library prompts; auto-appends /videos to @handle channel URLs; confirms before bulk-add > 5).
  • artifacts: Skills/youtube-grab
  • notes: smoke-tested URL extraction on Hormozi channel (got 3 most-recent videos cleanly) and a single video URL. yt-dlp uses metadata-only mode (no video downloads). NotebookLM dedupes by URL, so re-running on overlapping content is safe. JS-runtime warnings from yt-dlp are informational; future install of deno would silence them.

2026-04-29 — system → marketing-cmo-agent

  • input: user request to add a strategic CMO agent to the Marketing department, framed as the CMO of a 9-figure multi-channel DTC e-commerce supplement business; high-level placeholder that the user will refine.
  • output: created Departments/Marketing/Agents/cmo (tier: primary, model: opus). Strategic frame: growth × profitability tradeoff always cited together, brand briefs always loaded before recommending, library grounding via notebooklm-query for non-trivial decisions, escalation to decision-memo for memo-worthy calls. CMO orchestrates the tactical agents (Content-Strategist / Copywriter / Discovery-Analyst); doesn't draft tactical work itself. Default output shape: Situation → Recommendation → Rationale → Grounding → Next actions → What would change my mind. Updated Departments/Marketing/_Department frontmatter agents: to include cmo, and reorganized the Agents section into Strategic / Tactical tiers.
  • artifacts: Departments/Marketing/Agents/cmo, Departments/Marketing/_Department
  • notes: opus tier chosen because outputs are decision-shaped (matches ModelRegistry guidance: "opus → strategy, complex synthesis"). Skills wired: weekly-content-plan, prospect-research, decision-memo, notebooklm-query. Linked all 6 marketing-relevant libraries (hormozi, meta-frameworks, meta-playbook, facebook-ads-blueprint, video-ad-strategy, luke-iha-copywriting) for grounding access. Brand-specific work (e.g., Primal Harvest decisions) inherits primal-harvest's product libraries automatically when the CMO is invoked with brand scope.

2026-04-30 — system → claude-mem-phase-1

  • input: user request to incorporate thedotmack/claude-mem as ambient memory layer.
  • output: installed bun 1.3.13 (via Homebrew tap oven-sh/bun) and claude-mem 12.4.9 (via npx claude-mem install). Plugin lives at ~/.claude/plugins/marketplaces/thedotmack/; data at ~/.claude-mem/. 5 lifecycle hooks now active globally in ~/.claude/settings.json — captures from every Claude Code session on this machine. Worker daemon running on 127.0.0.1:37701 (web viewer reachable; HTTP 200). Privacy guardrails applied: CLAUDE_MEM_TELEGRAM_ENABLED set to "false" (defensive), CLAUDE_MEM_CONTEXT_SESSION_COUNT lowered 10 → 5. Created Integrations/ClaudeMem documenting paths, CLI reference, MCP tools (search/timeline/get_observations), and the operational reality that Read/Write/Edit/Bash outputs DO get captured. Updated _System/SecretsRegistry noting ~/.claude-mem/ as sensitive. Added /mem-search row to CLAUDE.md routing.
  • artifacts: Integrations/ClaudeMem, _System/SecretsRegistry
  • notes: claude-mem complements (doesn't replace) the curated memory layers — Wiki/HotCache, Wiki/Log, Wiki/Notes/Concepts/Decisions/Learnings, and ~/.claude/projects/{...}/memory/. claude-mem is "what actually happened" (ambient, comprehensive); the wiki is "what should be remembered" (intentional, atomic). Phase 2 is ~1 week of usage + evaluation via http://localhost:37701 to decide what to tune. Phase 3 is wiring mem-search into EA-Orchestrator's tool list for proper cross-session recall.

2026-04-30 — system → phase-2-eval-scheduled

  • input: user requested a scheduled task to auto-run the claude-mem Phase 2 evaluation in 7 days.
  • output: built _System/scripts/claude-mem-phase-2-eval.sh (executable; does disk-usage check, worker-status probe, sensitive-term sample search via npx claude-mem search, writes report to Wiki/Notes/_claude-mem-phase-2-eval-{date}.md, appends Log entry, then self-disables via launchctl bootout + plist deletion). Built macOS LaunchAgent at ~/Library/LaunchAgents/com.supernova.claude-mem-phase-2-eval.plist (validated via plutil -lint); scheduled for 2026-05-07 09:00 local (Month=5,Day=7,Hour=9,Minute=0). Loaded via launchctl bootstrap gui/$(id -u); verified watching=1.
  • artifacts: _System/scripts/claude-mem-phase-2-eval.sh (executable script in vault); LaunchAgent plist at ~/Library/LaunchAgents/com.supernova.claude-mem-phase-2-eval.plist (outside vault)
  • notes: chose LaunchAgent over remote /schedule because the eval needs local filesystem + local worker + local CLI access — none of which a remote Anthropic-cloud agent has. Script is fire-once-then-self-clean. If Mac is asleep at 09:00 on May 7, launchd defers the run until next wake (acceptable). Stdout/stderr logged to /tmp/_supernova-claude-mem-eval-{stdout,stderr}.log for debugging.

2026-04-30 — system → active-todos

  • input: user wanted a single lightweight todo file maintained by the EA-Orchestrator (vs Asana for daily ops, vs per-todo files under Departments/TaskMgmt/).
  • output: created Wiki/Notes/_active-todos with sections Open / Doing / Done (last 30d) / Archive, format conventions, and operating rules for the EA-Orchestrator. Seeded with 11 real deferred items pulled from session history (Context/* fills, primal-harvest briefs, Brand-B rename, Phase 2 verdict review, NotebookLM Phase 3/4, claude-mem Phase 3, Slack/Asana/Whoop integrations, deno install). EA-Orchestrator's context_refs updated to include the file; tools updated to include Edit. Routing row added to CLAUDE.md.
  • artifacts: Wiki/Notes/_active-todos, Agents/EA-Orchestrator
  • notes: deliberately kept lightweight — no separate skill file, no slash command. EA-Orchestrator edits the file directly when Adam adds/marks-done/asks-pending. Tags use the existing TagTaxonomy. Weekly hygiene is manual (~5 min) — sweep Done >30 days into Archive. Will revisit shape after a few weeks of use; if it grows beyond ~50 items, may shard into per-todo files under Departments/TaskMgmt/Todos/ or revisit the Asana question.

2026-04-30 — system → marketing-copywriter-rmbc-rebuild (Phase 1)

  • input: user request to rebuild the Marketing dept's Copywriter agent off Stefan Georgi's RMBC II framework located at /Users/doorsy/Desktop/code work/rmbc2-clean/. Phase 1 = vault-internal structure + skill blueprints; Phase 2 (NotebookLM library) deferred until first real test run.
  • output: created Departments/Marketing/References/rmbc folder; copied 11 Claude Project system prompts (one per asset type) into claude-projects/; copied 12 user-facing slash command prompts into commands/; wrote distilled ~10KB Departments/Marketing/References/rmbc/PLAYBOOK from the 57KB master. Restructured Departments/Marketing/Agents/copywriter body — RMBC-grounded operating method, 4-stage pipeline framing, asset matrix, brand-context loading rules, library-grounding pattern. Built 13 skills under Departments/Marketing/Skills/copywriting/: 3 pipeline (rmbc-research, rmbc-mechanism, rmbc-brief) + 10 asset (hook-generator, vsl-{short,3-7min,medium,long}, advertorial, pdp, upsell, email-sequence, ad-copy). Each Stage-4 skill defers to its load-bearing claude-projects/{n}.md system prompt. Updated Departments/Marketing/_Department frontmatter to include all 13 new skills + reorganized skills list into General / Copywriting tiers. Added CLAUDE.md routing row for direct-response copy.
  • artifacts: Departments/Marketing/Agents/copywriter, Departments/Marketing/References/rmbc/PLAYBOOK, 13× Departments/Marketing/Skills/copywriting/rmbc-*, 11× claude-projects/, 12× commands/
  • notes: copying CLAUDE.md system prompts only (45KB total) — kept the swipe files / transcripts / examples at the source path to avoid 2-3MB of duplication. Drift risk noted; sync skill could come later. Phase 2 will create a NotebookLM library rmbc2-direct-response-copy (subject_kind: topic) once a real test run confirms the structure works. Phase 3 wires notebooklm-query into Stage-4 skills for grounded copy.

2026-04-30 — system → marketing-storyboarder-build (Phase 1)

  • input: user request to add a Storyboarder agent to Marketing, built off video skills from /Users/doorsy/Desktop/code work/dubbsysthings/we427-google-ads-ai-agentic-system-full. Phase 1 = storyboarding/planning only (no AI video gen).
  • output: created Departments/Marketing/References/video-storyboarding with subfolders claude-projects/ (7 source command files), templates/ (22 archetype directories with video-theme.json), hooks/ (HOOK_CATALOG + ANTI_PATTERNS), methodology/ (4 docs incl. Franky Shaw playbook + AI video gen reference + Demand Gen guide + native-ad best practices), schemas/ (video-theme + video-gen-spec). Wrote distilled Departments/Marketing/References/video-storyboarding/PLAYBOOK. Built Departments/Marketing/Agents/storyboarder (tier: primary, model: sonnet, reports to CMO, sits between Copywriter and video production). Built 5 skills under Departments/Marketing/Skills/storyboarding/: storyboard-from-script (primary), storyboard-from-scratch (no script yet), extract-style-from-reference (analyze winning video → new archetype), ugc-creator-brief (anti-polish brief for human creators), scene-spec (schema-only output for direct AI tool handoff). Updated Departments/Marketing/_Department frontmatter with new agent + 5 skills, added Storyboarding section to body. Added CLAUDE.md routing row.
  • artifacts: Departments/Marketing/Agents/storyboarder, Departments/Marketing/References/video-storyboarding/PLAYBOOK, 5× Departments/Marketing/Skills/storyboarding/*, 7× claude-projects, 22× templates, 2× hooks, 4× methodology, 2× schemas
  • notes: 1.0MB total reference material copied (templates dominate). Output destinations: Brands/{brand}/Marketing/storyboards/{date}-{slug}/ with storyboard.md + scene-spec.json + optional ugc-creator-brief.md. Schema strictness baked in — every .video-gen-spec.json MUST validate against v1.5 schema. Phase 2 = AI video generation (port core/utils/genai_video.py + KIE_API_KEY/FAL_API_KEY + generate-video skill). Phase 3 = NotebookLM library dr-video-storyboarding. Both deferred until first real test run.

2026-04-30 17:41 — ea-orchestrator → onboard-brand

  • input: brand_slug=puravida-getbusinesscoverage, display_name=PuraVida-GetBusinessCoverage, website=https://getbusinesscoverage.com, markets=[US-en]
  • output: Brands/puravida-getbusinesscoverage/ scaffolded from _Template; markets/US-en/_market.md created; _marketTemplate removed; row appended to Context/Brands.md; entity wiki node at Wiki/Companies/puravida-getbusinesscoverage.md; interactive brief walkthrough completed: voice-profile (accessible / casual-professional, 3 pillars on multi-carrier comparison + coverage-fit + same-day, 4 CTA phrasings) and compliance (lead-gen-not-licensed status, $25/month price-claim floor per Adam, FTC affiliate disclosure / TCPA / no-guaranteed-savings / no-instant-binding baselines) drafted in full; revenue-model.md set to business_type=lead-gen with stream description; knowledge-base.md primary audience pre-filled (US small-biz owners shopping for business insurance); Mission + Positioning held for full RMBC2 Stage-1 Research pass (added to active todos).
  • artifacts: Wiki/Companies/puravida-getbusinesscoverage, Brands/puravida-getbusinesscoverage/BrandContext, Brands/puravida-getbusinesscoverage/voice-profile, Brands/puravida-getbusinesscoverage/compliance, Brands/puravida-getbusinesscoverage/revenue-model, Brands/puravida-getbusinesscoverage/knowledge-base, Wiki/Notes/_active-todos
  • notes: brief_completeness=55. Category is business-insurance lead-gen. Compliance is heavy by category default — federally-mandated disclosures (FTC affiliate, TCPA, no-guaranteed-savings, no-instant-binding) baked in even though Adam only specified the $25/month floor; flagged in report for review. Mission + Positioning + RMBC-grounded knowledge-base fields await Stage-1 research.

2026-04-30 20:00 — ea-orchestrator → notebooklm-query

  • input: libraries=[leila-hormozi], question="What's Leila's framework for diagnosing why a business isn't growing?", mode=fast
  • output: answer_preview="Framework centers on: (1) identify the core constraint / bottleneck, (2) address the founder bottleneck, (3) evaluate business stage (0–8), (4) analyze people flywheel (functions/people/operations)...", citations=2 sources, cached=false
  • notes: notebooklm-query

2026-04-30 19:59 — ea-orchestrator → youtube-grab + notebooklm-sync

  • input: /youtube grab https://www.youtube.com/@leilahormozi/videos — last 40 videos → leila-hormozi library
  • output: 40/40 YouTube videos added to NLM notebook 6e1ae611-9587-4e6f-bab3-db8c3a3093c7; library now has 41 total sources (40 YouTube + 1 Spotify web page); cached summary generated; Wiki/Libraries/leila-hormozi updated (source_count=41, last_synced + last_summarized = 2026-04-30).
  • artifacts: Wiki/Libraries/leila-hormozi
  • notes: All 40 adds succeeded (0 failures). NLM titles differ slightly from yt-dlp titles (NLM uses its own YouTube metadata fetch). Spotify source (Ep. 355) remains web-page type — no transcript; YouTube sources have full transcripts via NLM ingestion.

2026-04-30 19:44 — ea-orchestrator → notebooklm-create-library + notebooklm-add-source

  • input: Adam shared Spotify episode URL https://open.spotify.com/episode/3ygdfg1S76YVgM1ccF09Pp and asked to push to a Leila Hormozi NotebookLM (create if missing).
  • output: created NotebookLM notebook Leila Hormozi — Thoughts & Frameworks (id: 6e1ae611-9587-4e6f-bab3-db8c3a3093c7); added Spotify URL as WEB_PAGE source (source id: 614a5359-8a2a-4e09-96a2-1c8e9da85daa, NLM-detected title: "Your Calendar Reveals Why You're Not Growing | Ep. 355 - Build with Leila Hormozi"); created Wiki/People/leila-hormozi (subject node) and Wiki/Libraries/leila-hormozi (library node) with subject_kind=person, links to Alex's hormozi person + library nodes.
  • artifacts: Wiki/People/leila-hormozi, Wiki/Libraries/leila-hormozi
  • notes: Spotify URLs ingest as WEB_PAGE (NotebookLM reads page metadata + show notes, NOT audio transcript). For full-transcript grounding, future episodes should be added via YouTube URLs when available, or audio-file upload after local transcription. Cached summary deferred until ≥3 sources are ingested. Adam: confirm whether this Leila/Alex split is the curation direction you want, or whether the existing hormozi library should hold both.

2026-05-01 11:28 — system → notion-skill-build + role-scaffold

  • input: Adam wanted (1) a /notion ingest slash command mirroring /youtube grab for pulling Notion pages into the vault with auto-routing, and (2) a scaffold for his Head of Performance role at Primal Harvest using the charter paragraph he provided. Distinction made: roles ≠ projects (roles are persistent ongoing scope; projects are finite efforts).
  • output: built canonical Skills/notion-ingest skill (Notion MCP fetch → classify content [meeting/decision/strategy/learning/brainstorm] → route to role/brand/wiki/decisions/inbox; spawn todos + decisions; preserve Raw/Notion/{date}-{slug}.md provenance) and .claude/skills/notion/SKILL.md slash-command router (subactions: ingest, search). Scaffolded Brands/primal-harvest/Roles/head-of-performance (NEW pattern: brand-role frontmatter, charter from Adam's paragraph, scope w/ channels owned [Meta, Google, AppLovin, TikTok], strategic mandate "search-reliant → multi-channel; Meta creates demand, search captures", placeholder sections for KPIs/team/operating-rhythms/active focus/projects/decisions/recent meetings). Created Brands/primal-harvest/Roles/ and Raw/Notion/ directories. Updated Brands/primal-harvest/BrandContext with new Roles section pointing to head-of-performance. Added 2 new routing rows to CLAUDE.md (Notion ingestion; brand role pattern). Added EA daily-briefing capability ("what tasks/meetings/decisions do I have today?") to Wiki/Notes/_active-todos as #urgency/medium future build (requires Calendar OAuth + cross-source aggregation).
  • artifacts: Skills/notion-ingest, Brands/primal-harvest/Roles/head-of-performance, Brands/primal-harvest/BrandContext, CLAUDE, Wiki/Notes/_active-todos
  • notes: roles vs projects distinction now documented — Brands/{brand}/Roles/{role}.md is the new pattern for ongoing scope; Departments/Projects/{slug}/ reserved for finite scoped efforts. Notion MCP is read-only by default (vault is the synthesis layer; bidirectional sync deferred to v2). Awaiting Adam's call notes (paste or Notion URL) to test the /notion ingest flow end-to-end with a real Head of Performance meeting.

2026-05-01 11:54 — ea-orchestrator → youtube-grab + notebooklm-sync (leila-hormozi expansion)

  • input: /youtube grab https://www.youtube.com/playlist?list=PLWgEgLt4u2muCpSQuR2vf-Vhjeif2-AYy → all 168 entries, target library=leila-hormozi
  • output: 168 playlist entries → filtered out 2 [Private video] + 16 title-dedup matches against existing 41 sources → 150 new videos bulk-added with 2s delay (~5 min wall clock); 150/150 succeeded (0 failures); library went from 41 → 191 sources; cached summary regenerated against the larger corpus (now reflects guest interviews — Senada Greca, Sharran Srivatsaa, Pace Morby, Mike Salguero, Heidi Somers — plus full Build with Leila Hormozi podcast catalog). Updated Wiki/Libraries/leila-hormozi: source_count=191, last_synced + last_summarized = 2026-05-01, sources table grouped by date-added (150 new under 2026-05-01, 41 prior under 2026-04-30), top-of-mind questions expanded to include guest perspectives + critical-feedback / hiring-strategy lines, tags expanded with topic/hiring.
  • artifacts: Wiki/Libraries/leila-hormozi
  • notes: NotebookLM accepted all 150 URLs without server-side dedup of any of them. 3 likely playlist-internal duplicate titles (2× "Complete Business Skills TIER LIST", 2× "7 Habits I Learned in my 20s [with Pace Morby]", 2× "2022 Recession: How to Survive") were kept — they may be re-uploads with different YouTube IDs, and NLM treated them as distinct. Library is now corpus-rich enough for Phase 3 deep-research grounding (reference: NotebookLM Phase 3 todo).

2026-05-01 12:55 — ea-orchestrator → notebooklm-query (leila-hormozi)

  • input: library=leila-hormozi (id: 6e1ae611-9587-4e6f-bab3-db8c3a3093c7) | question: "What does Mike Salguero say about rebuilding after losing $30M?"
  • output: 7-point synthesized answer covering: (1) minimal downtime — 4-day break then intern forced restart; (2) refused outside capital ever again (VC forced him to fire founding team); bootstrapped ButcherBox to $550M; (3) hired for grit over resumes (failed entrepreneurs, D1 athletes); (4) lifestyle plan before business plan; (5) mission-driven approach; (6) managed personal financial risk via secondary; (7) used the loss as motivation / chip on shoulder. All citations from single source (source id: c5a178e6) — Leila Hormozi interview with Mike Salguero.
  • artifacts: Wiki/Libraries/leila-hormozi
  • notes: First query session continued after context compaction. Live NLM query confirmed working at 191-source corpus size. conversation_id: a620d1a3-896e-437b-b5d2-79232229b0bc (turn 1, is_follow_up=true).

2026-05-01 13:10 — system → spec-driven design (supernova-frontend)

  • input: Adam requested a graphical front-end dashboard for the Supernova AI Agentic OS. Operate in Plan Mode, no functional code yet, build architecture spec first. 4 clarifying questions answered: (1) standalone Next.js new repo, (2) hybrid agent runtime — Claude Code CLI for skills + Vercel AI SDK for chat, (3) solo Adam no auth for MVP, (4) custom cosmic aesthetic — full supernova metaphor with palette #ffd486 / #ff217c / #fe5e78 / #0cffe1 against deep-space.
  • output: created Departments/Projects/supernova-frontend/_Project (project node per template) and Departments/Projects/supernova-frontend/SPEC v0.1 — comprehensive 17-section architecture spec covering goal, success criteria, tech stack (Next.js 15 + Tailwind v4 + Vercel AI SDK + SQLite/Drizzle + MCP filesystem), system architecture diagram, MCP integration layer, hybrid agent execution model (Path A subprocess for skills, Path B gateway for chat), UI page tree + components, cosmic design system (color tokens, gradients, typography, motion), SQLite data model (chat_sessions, chat_messages, runs, run_events), provider registry pattern, 4-week phased build plan (80% MVP), deferred 20% features, risk register, repo layout, success metrics, 5 open questions for next pass.
  • artifacts: Departments/Projects/supernova-frontend/_Project, Departments/Projects/supernova-frontend/SPEC
  • notes: Architecture is model-agnostic by design — Vercel AI SDK as the abstraction means switching from Anthropic to OpenAI/Google/Ollama is a one-line change in the provider registry. Vault stays read-only from UI; all writes flow through agent runs (preserves Wiki/Log.md auditability). Frontend repo is SEPARATE from vault repo (recommendation: sibling at ~/Desktop/supernova/supernova-ui/). No code written this session — spec is the deliverable. Next step: Adam reviews spec, confirms repo location, then Phase 1 scaffolding begins.

2026-05-01 17:55 — system → supernova-frontend Phase 1 build

  • input: Adam approved spec, requested Phase 1 begin with best-practice answers locked. SPEC.md bumped 0.1 → 0.2 with all 5 open questions answered: (1) VAULT_ROOT env var with Zod validation, (2) route-aware right-rail chat default with localStorage persistence, (3) background-by-default run cancellation, (4) agent-only writes (UI read-only), (5) repo location ~/Desktop/supernova/supernova-ui/ as vault sibling.
  • output: scaffolded supernova-ui Next.js 15 + Tailwind v4 + TypeScript repo at ~/Desktop/supernova/supernova-ui/. 23 source files. Implemented full cosmic design system (palette tokens via Tailwind v4 @theme, three signature gradients, Space Grotesk + Inter + JetBrains Mono via next/font, prose-cosmic markdown styling, cosmic scrollbar). Built cosmic components: NebulaBackground (CSS-only conic gradient + radial glows), ParticleField (canvas, 28 drifting particles, prefers-reduced-motion-aware), SupernovaCard (3 variants + glow modifiers), SupernovaMark logo. Built MCP-shaped vault filesystem layer (lib/vault/fs.ts) with path-traversal protection — exposes readVaultFile / listVaultDirectory / walkVault, swappable for actual stdio MCP later without caller changes. Built env validation (Zod, fail-fast) and wikilink resolver with 30s vault index cache. Built layout shell (sidebar with 3 sections — Workspace/Knowledge/System, topbar with disabled Phase 4 controls). Built routes: / (cosmic dashboard with vault stats hero), /wiki (file tree with lazy-load via API), /wiki/file (markdown viewer with frontmatter table + breadcrumbs + wikilink resolution), /wiki/log (Log.md tail), /wiki/todos (active-todos rendered as markdown), /wiki/libraries (grid of NotebookLM libraries with source counts), /api/vault/list (JSON endpoint for tree expansion), Phase 2/3/4 placeholders for /departments, /brands, /agents, /skills, /runs, /settings.
  • artifacts: Departments/Projects/supernova-frontend/SPEC (v0.2), ~/Desktop/supernova/supernova-ui/ (new repo)
  • notes: Dev server boots in ~1s on localhost:3001 (3000 was in use). All 13 Phase 1 routes return 200 after one fix (gray-matter parses YAML dates as Date objects — coerced to strings before render). Type-check passes clean. Path-traversal protection verified — vault reads can't escape VAULT_ROOT. Vercel AI SDK / MCP SDK / Drizzle / framer-motion deferred to Phase 3+ (kept package.json minimal for Phase 1). Smoke tests confirm: dashboard renders cosmic hero, libraries page lists leila-hormozi (191 sources, person), file viewer renders the SPEC + leila-hormozi library page with working wikilinks. Phase 1 acceptance criteria: ✅ navigate vault file tree from UI, ✅ render any markdown with working wikilinks. Ready for Phase 2 (domain pages) when Adam gives the go.

2026-05-02 08:36 — system → fitness command center build

  • input: Adam requested a "Personal Fitness Command Center" — full vault content (12-week phased plan, profile, readiness rules, nutrition, supplements, mobility/shoulder protocol, check-ins, how-to-use), plus a UI surface at /fitness with all 12 sections, plus a daily summary card on the home dashboard showing WHOOP yesterday/7d/30d trends and today's adjusted workout. Profile: M, born 1986-02-07 (40), 5'8", 155–165 lb, right labrum history, lactose-sensitive, no spicy/pepper/alcohol, one AM coffee, no current supplements. Equipment: standing desk + treadmill + Peloton + KBs + bands + flat bench, gym backup, prefers home.
  • output: created Departments/Personal/Fitness folder with 9 canonical docs — _Fitness (entry + how-to-find-everything), profile, plan (12-week / 3-phase, frontmatter-driven start_date for UI computation), workouts (every session referenced by plan with warm-up/main/cooldown/shoulder-safety notes), readiness-rules (full WHOOP-driven decision logic with priority order + override surface), nutrition (lactose-sensitive high-protein system, around-workout fueling, troubleshooting), supplements (phased framework — basics first, one per week, current_stack tracking), mobility-and-shoulder (8-min morning unlock + 3 daily blocks + hard right-labrum rules + sub matrix), check-ins (≤60s daily + Sunday weekly templates), how-to-use (operating manual). Seeded Raw/Health/whoop/README with schema docs + sample whoop-latest.json (recovery 58 / sleep 71% / strain 13.4 — Yellow band) + whoop-7d.json + whoop-30d.json (30-day trend showing recent recovery dip). Built supernova-ui surface: lib/vault/fitness.ts (parses plan frontmatter, computes today's phase/week/weekday → session lookup), lib/vault/whoop.ts (reads JSON, mirrors readiness-rules.md as a rule engine — base band from recovery, modifiers for HRV-vs-baseline, RHR-vs-baseline, sleep, sustained strain, respiratory rate; returns verdict + primaryDriver + modifiers + volumeMultiplier + oneLineRationale + notes). Built /fitness page with all 12 Command Center sections: Today's Plan (band-colored hero with recovery + phase/week/weekday + session label + driver + volume + every modifier that fired), WHOOP / Apple Health Readiness (yesterday snapshot + 7d trend + 30d trend with deltas + noticeable trend flags + verdict explanation), Workout Prescription (today's session label + intensity target + pre-press prep + shoulder rule + phase weekly map highlighting today), Mobility Prescription (morning unlock + Yellow/Red modifier), Nutrition Targets (4 stat cards + today's food prompts + hard avoids), Supplements (phased intro list with the 5 Phase 1 items in order), Recovery / Sleep (sleep stats + lever advice), Daily Check-In (8 fields, read-only Phase 1), Weekly Review (7-step output template), Progress Dashboard (program week + 30d avg recovery & sleep with deltas), Coach Notes (dynamic — pulls modifier-aware coaching cues), How To Use (numbered manual). Added Fitness card to home dashboard with band-colored glow, recovery number, session label, modifier preview. Added Fitness to sidebar (HeartPulse icon). Updated CLAUDE routing table with 2 new rows (Personal Fitness Command Center entry + WHOOP/Apple Health raw drop pointer).
  • artifacts: Departments/Personal/Fitness/_Fitness, Departments/Personal/Fitness/profile, Departments/Personal/Fitness/plan, Departments/Personal/Fitness/workouts, Departments/Personal/Fitness/readiness-rules, Departments/Personal/Fitness/nutrition, Departments/Personal/Fitness/supplements, Departments/Personal/Fitness/mobility-and-shoulder, Departments/Personal/Fitness/check-ins, Departments/Personal/Fitness/how-to-use, Raw/Health/whoop/README, CLAUDE, supernova-ui (/fitness route, lib/vault/fitness.ts, lib/vault/whoop.ts, FitnessTodayCard, TrendStat)
  • notes: Plan start_date set to 2026-05-02 (today) — Adam can shift in plan.md frontmatter without touching code. UI auto-computes phase/week/today's session (May 2 is Saturday → Phase 1 Sat → Full-Body Strength/Power). With sample data (recovery 58, sleep 71%/6.8h, HRV 49 vs 7d avg 53, strain 13.4) the engine fires Yellow + "HRV < 85% baseline" modifier + sleep modifier → 85% volume + technique focus. All 11 fitness-related routes return 200; typecheck clean. Vault is the source of truth; UI is read-only. Daily check-in form + write-back arrives in Phase 3 with the run system. WHOOP API auto-pull arrives in Phase 2 (already tracked in Wiki/Notes/_active-todos).

2026-05-02 09:35 — system → supernova-frontend Phase 2 build (domain pages)

  • input: Adam approved Phase 1, requested Phase 2 — domain pages (departments, brands, agents, skills, brand roles), shared profile component, dashboard upgrade with department constellation + recent activity feed.
  • output: built five vault parsers in lib/vault/: departments.ts (lists 6 active departments + per-dept agent/skill/project counts), brands.ts (parses Context/Brands frontmatter + Brand{Context, voice-profile, compliance, revenue-model, knowledge-base} + Roles/ + markets/), agents.ts (recursive discovery across cross-cutting Agents/, Departments//Agents/, Brands//Agents/, Departments/Projects/*/Agents/ — extracts model/tier/tools/skills frontmatter), skills.ts (same pattern, supports nested skill folders like copywriting/), log-feed.ts (parses Wiki/Log.md into structured entries with timestamp/agent/skill/input/output/artifacts). Built shared component (frontmatter sidebar + rendered body + back-nav + raw-file link). Built routes: /departments (grid w/ agent+skill counts), /departments/[slug] (detail w/ rendered _Department.md + dept agents + dept skills + projects for Projects dept), /brands (active + sunset roster w/ brief-completeness rings), /brands/[slug] (5-brief grid w/ exists/missing badges + Roles list + Markets + rendered BrandContext + status pills + brief-completeness bar), /brands/[slug]/roles/[role] (uses DomainProfile), /agents (grouped by scope: cross-cutting / by department / by brand / by project — w/ model+tier chips), /agents/[...path] (catch-all detail), /skills (grouped by scope then sub-folder), /skills/[...path]. Built two dashboard components: (compact 6-up grid) + (last 8 Log entries w/ timestamp + agent → skill + output summary + artifact chips). Updated home dashboard: replaced placeholder action cards with constellation + activity feed; replaced 3-col stats with 4-col (Active Brands / Agents / Skills / Vault files). Created shared lib/vault/frontmatter.ts helpers (fmString / fmNumber / fmStringArray / parseFrontmatter) used by every parser to handle Date coercion + array formatting consistently.
  • artifacts: supernova-ui (lib/vault/{departments,brands,agents,skills,log-feed,frontmatter}.ts, components/domain/{DomainProfile,DepartmentConstellation,ActivityFeed}.tsx, app/{departments,brands,agents,skills}/...), updated home dashboard
  • notes: 21/21 Phase 2 routes return 200; typecheck clean. Discovered 5 cross-cutting agents, 3+ department-scoped agents per department, 16 cross-cutting skills, plus nested marketing skills (copywriting/, storyboarding/). Brand 5-brief rendering tested against primal-harvest (live data) + Brand-B + puravida-getbusinesscoverage. Brand role pattern verified at /brands/primal-harvest/roles/head-of-performance. Catch-all routes use /agents/Departments/Marketing/Agents/copywriter form — predictable URL = vault path. ActivityFeed pulls 8 most-recent entries automatically. Definition-of-done met: every domain object in the vault is browsable. Phase 3 (run system + Path A subprocess + skill forms) is next.

2026-05-02 09:35 — system → cron-create (Sunday weekly fitness review)

  • input: Adam asked to schedule a recurring Sunday morning agent that runs the fitness weekly review against the 7-day WHOOP snapshot.
  • output: scheduled cron job 79190974 (recurring=true, durable=true, "7 9 * * 0" — every Sunday at 9:07 AM ET local). Prompt: read whoop-latest/7d/30d, compute 7d aggregates and deltas vs prior 7d, write a 7-section draft review to Departments/Personal/Health/Journal/{today}-week-review.md per check-ins.md template, append a Wiki/Log.md entry, surface the file path + headline trend + ONE priority for the week. Stops if WHOOP data is >3 days stale.
  • artifacts: cron job 79190974
  • notes: Runtime reported "session-only (not written to disk)" despite durable=true — so the job dies if Claude Code is fully quit. Auto-expires after 7 days regardless. First fire: 2026-05-03 09:07 ET. Adam should re-run /schedule (or have me re-create) when the job expires next weekend. Will only fire while a Claude REPL is idle on Adam's machine.

2026-05-02 09:50 — system → supernova-frontend Phase 3 build (run system + Path A subprocess)

  • input: Adam approved Phase 2, requested Phase 3 — DB / run system, SkillForm, subprocess wiring, /runs surfaces.
  • output: built the full Phase 3 run system. Pivoted storage from SQLite to JSONL files after better-sqlite3 native build hit a python3.14 libexpat ABI mismatch on Adam's machine (root cause: homebrew python install — out-of-scope to fix here). JSONL pivot is arguably better for streaming agent runs anyway: append-only, line-delimited, fully inspectable on disk at data/runs/{runId}.events.jsonl + {runId}.json (meta). Built lib/runs/{types,store,registry,spawner,prompt-template}.ts: types.ts defines RunMeta + the structured RunEvent union (start/stdout-line/system/assistant/user/tool-use/tool-result/result/stderr-line/end); store.ts handles JSONL persistence (saveRunMeta / appendEvent / loadEvents / listRuns / updateRunMeta with newRunId); registry.ts is a globalThis-scoped Map<runId, RunHandle> for in-process active runs (so SSE can forward events live); spawner.ts is the heart — spawns claude --print --output-format stream-json --verbose --permission-mode bypassPermissions --add-dir VAULT_ROOT --allowedTools <list> [--model X] with the prompt piped via stdin (no shell-escaping needed), parses each JSON line into our event union, persists to JSONL + emits to subscribers, finalizes with success/failed/canceled on close/error. Built 4 API endpoints under /api/runs: POST (Zod-validated start), GET (history list), GET /[id] (meta + persisted events), GET /[id]/stream (SSE — replays buffered+persisted events then live-subscribes to the registry emitter, falls through to JSONL replay-only if run already finished), POST /[id]/cancel (kill subprocess). Built two UI components: (client) — prefilled prompt textarea (template suggested per slug via lib/runs/prompt-template.ts), advanced toggle for model selector + allowed-tools multi-select, "bypassPermissions" warning, gradient Run button → POST /api/runs → router.push(/runs/{runId}); (client) — EventSource consumer that pairs tool_use/tool_result events into collapsible cards, status bar with 6 states (connecting/running/success/failed/canceled/closed) + animated pulse for running + cancel button, auto-scrolls tail while running. Built /runs history list (status pills, durations, click-to-replay) and /runs/[id] detail (renders meta header + prompt block + hydrated with persisted events + live SSE if still running). Wired the Run section into /skills/[...path] above the body so any of ~30+ vault skills can be triggered with one click.
  • artifacts: supernova-ui (lib/runs/.ts, app/api/runs/, app/runs/page.tsx, app/runs/[id]/page.tsx, components/domain/SkillForm.tsx + RunStream.tsx, app/skills/[...path]/page.tsx wired)
  • notes: End-to-end smoke test passed — POST /api/runs with a "Reply with exactly: pong" prompt to claude-haiku-4-5 → subprocess spawned (PID 41703) → 5.8s execution → assistant text "pong" parsed correctly → event JSONL persisted → /runs row appears with success status → /runs/[runId] replays the prompt + assistant reply correctly. SSE endpoint returns text/event-stream with event: hello opener + event: run-event payloads. The MVP "click a button instead of typing in terminal" goal is met — every skill in the vault now has a Run button. Outstanding for future: structured per-input forms (currently a single prompt textarea — Phase 4), AskUserQuestion mid-run modal handler (defer until a skill that uses it is the top priority), HTTP MCP transport for remote deploy (Phase 4+), provider-agnostic chat via Vercel AI SDK (Phase 4). Sunday cron 79190974 will fire 2026-05-03 09:07 if Claude Code is running.

2026-05-02 10:03 — ea-orchestrator → youtube-grab + notebooklm-sync (leila-hormozi single add)

  • input: /youtube grab https://www.youtube.com/watch?v=UDBkiBnMrHs → single video, target library=leila-hormozi
  • output: 1 video bulk-added to NotebookLM notebook 6e1ae611-9587-4e6f-bab3-db8c3a3093c7. Title ingested as "If you're ambitious but inconsistent, please watch this" (source id: daf15105-9e96-4fa2-8c4f-fd879953745f). Library went from 191 → 192 sources. Updated Wiki/Libraries/leila-hormozi: source_count=191→192, last_synced=2026-05-02, added 2026-05-02 section in Sources table with the new video.
  • artifacts: Wiki/Libraries/leila-hormozi
  • notes: CLI syntax confirmed — correct form is notebooklm source add -n <id> <url> (not positional ID). Auto-detected as SourceType.YOUTUBE. No cached summary refresh this run (single-source add doesn't materially shift the summary). Re-run /library sync leila-hormozi to regenerate if needed.

2026-05-02 10:05 — system → supernova-frontend Phase 3.1 (structured skill forms)

  • input: Adam ran /youtube-grab from Phase 3 with just a URL in the prompt; the assistant correctly asked "what do you want to do with this video? add to library / synthesize / something else" — but the run had already exited (claude --print is single-turn) so Adam couldn't answer. He requested: "more specifics to decide before the run, like the questions asked after the run. I should have to identify what I want to do with it."
  • output: built schema-driven structured forms for the high-value skills. Created lib/runs/skill-form-spec.ts (FormField union: text/textarea/number/select/radio/checkbox + showWhen for dependent fields + buildPrompt fn) and lib/runs/skill-form-registry.ts (per-slug FormSpec map) with hand-tuned forms for 9 skills: youtube-grab (URL + intent radio [add to library / synthesize as note] + library picker showing all real vault libraries OR "create new" with name+subject_kind + how-many-videos selector), notebooklm-query (library single-select + question textarea + fast/deep mode), notebooklm-add-source (library + URL + optional title/notes), notebooklm-sync (all-libraries / specific library), notebooklm-deep-research (library + question + mode + auto_import checkbox), notion-ingest (URL + classification hint), onboard-brand (display_name + slug_override + website + markets + walk_through), offboard-brand (active-brand picker + reason + soft/archive radio), learn-from-source (URL/path + kind + destination + focus lens). Each spec's buildPrompt baked all decisions into a definitive prompt that explicitly tells the agent "do NOT ask AskUserQuestion" so single-turn claude --print runs complete without follow-ups. Built lib/vault/libraries.ts (extracted shared library parser from the libraries page). Built components/domain/StructuredSkillForm.tsx (renders any FormSpec with required-field validation, dependent-field hide/show, advanced model + tools toggle, "preview the exact prompt" expandable section so Adam can see what's being sent before clicking Run). Updated SkillForm to dispatch: spec found → StructuredSkillForm with pre-loaded libraries+brands context; no spec → existing textarea fallback with a clearer "subprocess can't answer follow-ups, bake decisions in" warning. Updated /skills/[...path] page to load context server-side only when a spec exists (avoids unnecessary vault walks for fallback skills).
  • artifacts: supernova-ui (lib/runs/skill-form-spec.ts, lib/runs/skill-form-registry.ts, lib/vault/libraries.ts, components/domain/StructuredSkillForm.tsx, components/domain/SkillForm.tsx updated, app/skills/[...path]/page.tsx updated)
  • notes: End-to-end smoke test passed — submitted a structured-form prompt for /youtube grab (single video → leila-hormozi library), the subprocess ran without asking AskUserQuestion, library went 191 → 192 sources, run completed in 87 seconds with exit 0. Tool usage: 6 Bash + 4 Edit + 7 Read calls. The critical UX fix is the prompt preview — Adam can see the exact text being sent before clicking Run, so he learns to trust the form. 9 of ~30+ skills now have structured forms (covering all the high-value ones from active usage); the other 20+ fall back to the textarea with explicit decision-baking guidance. Phase 4 remaining: provider-agnostic chat, command palette, log live tail. Phase 3 SPEC item "AskUserQuestion mid-run modal" is now superseded by this — pre-flight decisions are a better UX than mid-run interruptions for single-turn runs.

2026-05-02 12:18 — ea-orchestrator → youtube-grab + notebooklm-sync (leila-hormozi single add)

  • input: /youtube grab https://www.youtube.com/watch?v=kl-fgK3S9wk → single video, target library=leila-hormozi
  • output: 1 video bulk-added to NotebookLM notebook 6e1ae611-9587-4e6f-bab3-db8c3a3093c7. Title ingested as "If Your Team isn't Performing, Watch This" (source id: aa5ef74b-9822-47ff-bdaf-461e348518d3). Library went from 192 → 193 sources. Updated Wiki/Libraries/leila-hormozi: source_count=192→193, 2026-05-02 section bumped to 2 sources.
  • artifacts: Wiki/Libraries/leila-hormozi
  • notes: Duplicate detected — "If Your Team isn't Performing, Watch This" also appears in the 2026-05-01 batch. NotebookLM accepted it without rejection. Marked as duplicate in the Sources table. CLI syntax re-confirmed: notebooklm source add -n <id> <url>. No cached summary refresh (single add).

2026-05-02 12:24 — system → whoop-api-integration

  • input: Adam asked to wire the WHOOP API for live data, replacing the manual JSON drop into Raw/Health/whoop/.
  • output: built the full OAuth2 + sync pipeline. Backend (lib/whoop/): types.ts (WhoopTokens, WhoopProfile, WhoopCycle, WhoopRecovery, WhoopSleep, WhoopConnectionStatus union); store.ts (token + state JSON persistence at supernova-ui/data/whoop-tokens.json + whoop-state.json — gitignored, lastSyncedAt + CSRF state); oauth.ts (auth URL builder with crypto-random state, code exchange, refresh — uses api.prod.whoop.com endpoints, default scopes read:recovery + read:cycles + read:sleep + read:profile + read:body_measurement + offline); client.ts (authedFetch wrapper with one auto-refresh retry on 401, paginated fetchCycles / fetchRecoveries / fetchSleeps); sync.ts (pulls 30 days, normalizes per-cycle-date with cycle ↔ recovery (by cycle_id) ↔ sleep (longest non-nap ending on that date) joining, writes the existing whoop-latest.json + whoop-7d.json + whoop-30d.json schema so the dashboard needs no changes). Five API routes under /api/whoop/: status (returns not_configured / configured_disconnected / connected union), connect (302 to WHOOP auth URL with CSRF state), callback (validates state, exchanges code, fetches profile, redirects to /settings with success/error flag), sync (POST, requires tokens, runs syncWhoop), disconnect (POST, clears tokens). UI: replaced /settings placeholder with full settings page including (4 states — loading / not_configured with 5-step setup ladder / configured_disconnected with Connect button / connected with email + token expiry + last sync + Sync 30 days + Disconnect). Added to /fitness header — auto-hides when not configured, shows "Connect WHOOP →" when configured-but-disconnected, shows "Sync WHOOP · 2h ago" when connected (calls /api/whoop/sync + router.refresh). Added WHOOP_CLIENT_ID / WHOOP_CLIENT_SECRET / WHOOP_REDIRECT_URI to env.ts (zod-optional) + .env.example (with setup notes). Updated Integrations/Whoop: status: deferred → active, full setup steps, data flow diagram, hard rules.
  • artifacts: supernova-ui (lib/whoop/{types,store,oauth,client,sync}.ts, app/api/whoop/{status,connect,callback,disconnect,sync}/route.ts, app/settings/page.tsx replaced, components/domain/{WhoopConnectionCard,FitnessSyncButton}.tsx, app/fitness/page.tsx wired, .env.example + lib/env.ts), Integrations/Whoop
  • notes: typecheck clean; all 5 API routes return correct status without credentials (status → not_configured with reason; connect → 412 Precondition Failed; sync → 401 Not connected; disconnect → 200; callback → 302 to /settings with whoop_error flag). UI graceful in all 3 states. Adam's next steps: (1) developer.whoop.com → create app with redirect URI http://localhost:3001/api/whoop/callback, (2) paste client_id + client_secret into supernova-ui/.env.local, (3) restart pnpm dev, (4) /settings → Connect WHOOP, (5) Sync 30 days. Then /fitness reads live data, the readiness engine fires off real numbers, and the Sunday cron writes weekly reviews from real trends. Full end-to-end test wasn't possible from my side — OAuth requires Adam's browser session with WHOOP — but the implementation follows the documented protocol exactly. If WHOOP changes any URL, only lib/whoop/oauth.ts + lib/whoop/client.ts need updating.

2026-05-02 13:15 — ea-orchestrator → notebooklm-query (leila-hormozi · priorities for team leaders)

  • input: library=leila-hormozi (notebook 6e1ae611) | question: "What does Leila Hormozi teach about how a CEO or team leader should SET, COMMUNICATE, and keep their team ALIGNED on priorities? Surface frameworks, cadences, language, conflict-handling, and what to do when leadership is misaligned."
  • output: 4-section synthesized answer with 30+ citations from her interview corpus. Frameworks surfaced: 3-1-90 (3-year DSS / 1-year 3-part target / 90-day MITs) and VFOs (Vital Few Objectives), Monday Hour One weekly planning ritual w/ force-ranked priorities calendar-blocked + buffer time, Focus Sprints for conflicting priorities (rank by urgency × impact × reversibility), Chief Reminder Officer (avg employee needs to hear a message 7× before believing it), structured cadences (20-min Monday huddle, 45-min leadership meeting, weekly CEO update/newsletter), third-grade language, "speak to their goal" framing, accountability formula (Expectations + Measurement × Reinforcement), financial transparency (whole team reads P&L). Conflict handling: what is right not who is right, fire executives for vision misalignment not performance.
  • artifacts: Wiki/Libraries/leila-hormozi
  • notes: Adam asked this in the context of populating his own Context/Priorities.md. Surfaced the natural mapping: his existing sections (Quarterly themes / This week / Pinned / Deferred) map cleanly onto Leila's 90-day MITs / weekly force-rank / 3-year DSS / conscious "not now". Bonus section worth adding: Annual VFOs. Offered to either (1) populate Priorities.md after Adam answers DSS / VFO / MIT / This-week questions, or (2) draft a strawman from system signals (active todos + log activity + brand brief gaps + project deadlines + fitness weekly priority) for him to react to, then layer real answers on top. Recommended #2 first — concrete document beats blank-page synthesis. Awaiting Adam's go.

2026-05-02 13:45 — system → priorities-strawman (path #2)

  • input: Adam approved path #2 of the priorities offer — strawman draft of Context/Priorities.md from system signals.
  • output: rewrote Context/Priorities using Leila Hormozi's 3-1-90 framework with 5 sections: Pinned/DSS (3-year), Annual VFOs (2026), Quarterly MITs (May 2 – Jul 31), This week (force-ranked, week of 2026-05-04), Deferred backlog. Confirmed-from-data items pulled from active artifacts: 5 Quarterly MITs (supernova-frontend Phase 4, Head of Performance role at Primal Harvest, puravida-getbusinesscoverage RMBC2 → first revenue, fitness Phase 1 + early Phase 2, foundation integrations Slack/Asana/EA-daily-briefing); 5 weekly force-ranked priorities (foundation context files first, Phase 4a Supernova surface, RMBC2 puravida research, fitness Week 1, Sunday Hour One ritual); Deferred backlog populated from active-todos. Inferred items marked clearly "(? — confirm)": DSS (4 items — GMG holding co N profitable brands by 2029, family-first, hybrid athlete, decision quality > speed), Annual VFOs (4 items). Frontmatter updated: framework: leila-hormozi-3-1-90, review_cadence: sunday-hour-one. PrioritiesCard on home dashboard now renders real content; verified all 12 expected markers appear in the rendered HTML (Annual VFOs, Quarterly themes, This week, primal-harvest, puravida, RMBC2, etc.).
  • artifacts: Context/Priorities
  • notes: Adam needs to walk through the file once and ratify or replace the (?) items. After that the system has a confirmed strategic compass it can plan against.

2026-05-02 14:00 — system → supernova-frontend Phase 4a + 4c (priorities surface + Architect orchestration framework)

  • input: Adam asked for an end-to-end orchestration layer: dashboard surfaces priorities → tasks → ideas → "help me get ideas to execute" button → plan generation → review/edit/approve loop → kanban execution view of agents working on plan steps. Requested it be an extensible framework. Approved my recommended phased build: 4a (priorities surface) → 4c (Architect skills) → 4d (plans review) → 4e (kanban) → 4b (manual goals). Ack'd the 4-object naming Priority → Goal → Plan → Run.
  • output: shipped Phase 4a + 4c together since they're complementary (4a's Generate-plan buttons fire 4c's skills via the existing Phase 3 run system). 4a: extended lib/vault/priorities.ts to classify each section by kind (DSS/VFO/MIT/Weekly/Deferred/Other) with title-prefix heuristics, extract wikilinks from each bullet, detect "(? — confirm)" markers, track ordering. New types PriorityKind, PriorityItem, PrioritySection. Built /priorities route (app/priorities/page.tsx) — strategic-on-top section ordering, color-coded section headers per kind (cyan DSS / yellow VFO / pink MIT / red weekly / shadow deferred), per-bullet rendering with: bullet text, "needs confirm" pill where applicable, wikilink chips that resolve to real vault routes (using existing resolveWikilink + getVaultIndex), and a linked-todos rollup that heuristically matches active-todos to each priority by title-keyword overlap, brand-tag wikilink slug match, or topic-tag substring. Added Decompose + Generate-plan buttons to MIT and Weekly sections (deep-link to the new structured-form skill pages). Top of page has an Architect kickoff card with three pill buttons → /skills/.../synthesize-priorities, decompose-priority, generate-plan. Linked-work footer to /wiki/todos, /wiki/log, /runs, /skills. Added /priorities to sidebar (Compass icon, between Dashboard and Fitness). Updated PrioritiesCard on home dashboard to consume new PriorityItem shape (item.plain instead of raw string). 4c: created Agents/Architect cross-cutting agent (opus tier) with the full operating model (Priority → Goal → Plan → Run, what it does + doesn't do, 6 operating principles, default invocation flow, framework registry — Leila 3-1-90 / RMBC2 / Decision Engine dialectic / phased-build / freeform). Created 3 skills: Skills/synthesize-priorities (modes: draft/merge/ratify; reads system signals; writes Context/Priorities.md preserving frontmatter; respects family-first + recovery-aware constraints), Skills/decompose-priority (priority → 3–5 candidate Goals written as Wiki/Goals/{slug}.md with charter + DoD + suggested template), Skills/generate-plan (Goal → Wiki/Plans/{date}-{slug}.md with status: draft, dependency-ordered steps, each with concrete agent + skill + inputs assignments per Phase 3.1 lesson — pre-flight decisions, never AskUserQuestion). Scaffolded Wiki/Goals/_README + Wiki/Plans/_README with lifecycle states + frontmatter shapes + naming conventions. Added structured-form specs to skill-form-registry.ts for all 3 new skills (synthesize-priorities: mode radio + ratification textarea-conditional + week_of; decompose-priority: priority textarea + section select + count select; generate-plan: goal textarea + template select + max-steps select). Each spec's buildPrompt embeds the explicit "Don't ask AskUserQuestion" instruction so single-turn claude --print runs complete cleanly.
  • artifacts: Agents/Architect, Skills/synthesize-priorities, Skills/decompose-priority, Skills/generate-plan, Wiki/Goals/_README, Wiki/Plans/_README, supernova-ui (lib/vault/priorities.ts extended, app/priorities/page.tsx new, components/ui/Sidebar.tsx + components/domain/PrioritiesCard.tsx updated, lib/runs/skill-form-registry.ts extended)
  • notes: typecheck clean; 8/8 verification routes 200 (/, /priorities, all 3 new skills with structured forms, /agents/Agents/Architect, both Wiki/Goals + Wiki/Plans READMEs). Phase 4d (Plans review UI with approve/reject) and Phase 4e (kanban /board) and Phase 4b (manual goal creation UI) deferred to next pass — Adam will validate 4a/4c first. The framework is live: Adam can now click any MIT or weekly priority on /priorities → Decompose to fire the Architect → which writes 3 candidate Goals → click Generate-plan on a Goal → which writes a draft Plan with status: draft. Review/approve flow in 4d will let him flip status to approved and dispatch each step to the existing Phase 3 run system. Extensibility: new frameworks register as Plan templates (drop a Templates/plan/ file + register in RoutingRules.md) — no core changes needed. The Architect itself is just another agent that follows the same patterns as marketing-copywriter, decision-engine, etc.

2026-05-03 16:07 — ea-orchestrator → synthesize-priorities (ratify Q2 2026)

  • input: Adam ratified DSS + VFOs — Step 2 of Wiki/Plans/2026-05-03-ratify-priorities-2026-q2 (goal: Wiki/Goals/ratify-priorities-2026-q2). Step 1 captured Adam's ratification of the (? — confirm) items in Pinned/DSS (3-year horizon) and Annual VFOs (2026) sections of Context/Priorities.md.
  • output: Context/Priorities.md updated with confirmed items — (? — confirm) markers removed from the ratified DSS + VFO bullets, locking the strategic compass for Q2. The 3-year DSS and 2026 VFOs are now Adam-confirmed (no longer system-inferred), so downstream Architect skills (decompose-priority, generate-plan) can plan against them as ground truth rather than strawman.
  • artifacts: Context/Priorities, Wiki/Plans/2026-05-03-ratify-priorities-2026-q2, Wiki/Goals/ratify-priorities-2026-q2
  • notes: Step 2 of 3 in the ratification plan. Step 3 (frontmatter last_updated bump via synthesize-priorities mode=merge) still pending. Plan estimated 35 min total; Step 2 hit ~5 min budget. No blockers — Step 3 unblocked.

2026-05-03 09:45 — system → supernova-frontend Phase 4d + 4e + 4b (plans review + kanban + goals)

  • input: Adam approved continuing the orchestration build with 4d → 4e → 4b in that order.
  • output: shipped all three sub-phases. 4d (plans review): lib/vault/plans.ts (typed PlanStatus + PlanStepStatus unions, PlanSummary + PlanDetail, parseSteps, listPlans + loadPlanDetail), lib/vault/write.ts (safe vault writes — writeVaultFile + mutateFrontmatter using gray-matter to round-trip preserving body, path-traversal protected), lib/runs/dispatch-plan-step.ts (turns a PlanStep into a do-NOT-ask-AskUserQuestion prompt and calls startRun from the existing Phase 3 spawner). 4 API endpoints under /api/plans/[id]/: approve, reject, steps/[stepId]/dispatch, steps/[stepId]/done (auto-flips plan to done when all steps done). UI: with collapsible details + dispatch + mark-review + mark-done + mark-failed + reopen buttons; with approve gradient button + reject form. /plans list groups by status with progress bars; /plans/[id] detail with frontmatter strip + approval controls + step list + rendered body. 4e (kanban): /board reads approved + in-progress + done plans, renders 4 columns (TO DO / IN PROGRESS / REVIEW / DONE), failed steps fold into REVIEW lane, each card shows parent plan title + step row with native action buttons. 4b (goals): lib/vault/goals.ts (typed GoalStatus, listGoals + loadGoalDetail with linkedPlans matching on goal wikilink). POST /api/goals (Zod-validated: kebab-case slug, display_name, priority, section enum, horizon enum, template enum, charter, definition_of_done array; collision check). client component with auto-slug from display name. /goals list grouped by status; /goals/[slug] detail with frontmatter strip + Generate-plan CTA + linked plans list + rendered body. Sidebar: 3 new entries (Goals/Target, Plans/ClipboardList, Board/Trello) — primary nav now flows Dashboard → Priorities → Goals → Plans → Board → Fitness → … → Skills.
  • artifacts: supernova-ui (lib/vault/{plans,goals,write}.ts, lib/runs/dispatch-plan-step.ts, app/api/plans/[id]/{approve,reject,steps/[stepId]/{dispatch,done}}/route.ts, app/api/goals/route.ts, app/{plans,plans/[id],board,goals,goals/[slug]}/page.tsx, components/domain/{PlanStepRow,PlanApprovalControls,GoalCreateForm}.tsx, components/ui/Sidebar.tsx), Wiki/Goals/ratify-priorities-2026-q2 (real test goal Adam can use), Wiki/Plans/2026-05-03-ratify-priorities-2026-q2 (real test plan demonstrating end-to-end flow)
  • notes: typecheck clean. End-to-end verified: POST /api/goals → goal renders on /goals; hand-wrote 3-step plan → /plans lists as DRAFT; /plans/[id] renders approve/reject; POST approve flipped status: draft → approved + today's date; /board immediately populated with 3 TO DO cards; POST steps/2/dispatch spawned real claude --print subprocess (runId moq7bnoo-qiycbr), persisted step.run_id + step.status: in-progress, auto-flipped plan.status to in-progress; /board moved step to IN PROGRESS column; POST steps/1/done flipped step 1 to done. Full Priority → Goal → Plan → Run loop now operational. Known limitation: dispatcher doesn't enforce step depends_on (user can dispatch step 3 before step 1 done) — visible on each card as a chip, MVP-acceptable. Future Phase 4f: enforce dependencies + auto-flip step to "review" when its run completes (currently manual). Extensibility: every framework is a plan template — drop a new template file to register. Plan/Goal status state machines live in markdown frontmatter so they version-control + diff cleanly. Vault stays read-only from UI EXCEPT narrow goal/plan frontmatter mutations via mutateFrontmatter — every write is a small auditable diff.

2026-05-03 11:30 — system → meetings-system (vault docs + /meetings + dashboard upcoming-card)

  • input: Adam asked for a persistent surface where pre-meeting prep ("what I want walking out", talking points, what to listen for) is visible — so when he logs into the dashboard before a meeting, it's all top of mind. Pasted the Asana Creative Sprint project overview content; clarified Max B. = Creative Strategist (new to role, clever, motion-without-finishing pattern); confirmed wmplp.com IS the PE firm itself (not just related counsel).
  • output: built a Meetings system end-to-end. Vault content: created Wiki/Meetings/_README (canonical frontmatter + body shape), 4 meeting docs for Adam's Monday lineup — Wiki/Meetings/creative-weekly-sprint (with full Asana sprint structure baked in: Concept&Planning Mon → Creation Tue-Wed → Mid-week review → Friday QA + the "Net New Concept" hard definition; explicit Max B. coaching plays section with 5 specific plays per his behavioral pattern), Wiki/Meetings/leadership-standup (4 sequenced talking points: process slide → top 3 SKUs → competitor/PDP → agency sourcing, with what-to-listen-for per attendee), Wiki/Meetings/acquisition-weekly (Hamish-out scenario for 2026-05-04 captured: run lean with Alan + Frank, 5-bullet recap to Hamish post), Wiki/Meetings/stephanie-1on1 (3-month review + contract conversation, full PE-aware posture reframe with Stephanie V. = WMPLP/PE-firm-personnel acknowledged — frame everything in 4 PE buckets: channel diversification, unit economics, operational maturity, org design; 90-day strategic articulation paragraph pre-written for Stephanie to repeat to the firm). Locked wmplp = PE firm correction across Context/Prime6 + Context/Team + Wiki/People/stephanie. UI: lib/vault/meetings.ts (typed MeetingCadence + MeetingStatus, listMeetings + loadMeetingDetail + findMeetingForCalendarEvent which matches by recurringEventId or summary). lib/calendar/today.ts (getUpcomingMeetings — pulls today + tomorrow events; reads from data/calendar/today.json cache populated by user paste or future calendar-sync skill, falls back to synthesizing from vault meeting docs by day-of-week if no cache; never crashes). data/calendar/today.json seeded with Monday 2026-05-04's actual recurring event ids from the Google Calendar pull. /meetings list (grouped by cadence — Weekly / Daily / Monthly / One-off / Ad-hoc; sorted by day-of-week then time within each group). /meetings/[slug] detail (frontmatter strip with cadence/organizer/priority/sensitivity badges + "Open Meet" button + "Edit raw" + Attendees strip with internal-as-wikilinks + external-as-flagged + rendered prep body). on home dashboard top of /today section (renamed conceptually to "Upcoming meetings" — shows today + tomorrow split into two sections, each event has time + summary + open-prep button to its meeting doc + Meet link). Sidebar entry added (CalendarDays icon, between Board and Fitness).
  • artifacts: Wiki/Meetings/_README, Wiki/Meetings/creative-weekly-sprint, Wiki/Meetings/leadership-standup, Wiki/Meetings/acquisition-weekly, Wiki/Meetings/stephanie-1on1, Context/Prime6, Context/Team, Wiki/People/stephanie (wmplp = PE firm locked), supernova-ui (lib/vault/meetings.ts, lib/calendar/today.ts, app/meetings/page.tsx, app/meetings/[slug]/page.tsx, components/domain/TodaysMeetingsCard.tsx, components/ui/Sidebar.tsx, app/page.tsx, data/calendar/today.json)
  • notes: typecheck clean. 6/6 routes 200 after fixing one server-component bug (onClick handler couldn't cross server→client boundary on /meetings list — replaced the anchor with a static span; Meet links remain functional on detail pages where they belong). Calendar cache approach: data/calendar/today.json is the manual-paste fallback until a calendar-sync skill is built. Future iteration: a Sunday-night calendar-sync cron writes the next 48h worth of events into the cache automatically. Meeting docs use stable recurringEventId values from Google Calendar so future calendar pulls match cleanly even as instances cycle. Asana note: still no Asana MCP wired — Asana project overview is now baked into the Creative Sprint meeting doc as canonical text (Net New Concept definition + 4-phase sprint structure), so it's available regardless of API access. Adam can edit the doc directly in Obsidian or /wiki/file when sprint mechanics change. The whole pipeline is now: vault docs are source of truth → /meetings renders them → dashboard card surfaces today/tomorrow → click any event → land on the prep doc → walk into the meeting prepared. Next loop: build the asana-sync skill body (PAT in .env, Skills/asana-sync.md stub exists) so plan-step dispatches can post tasks to Asana when approved.

2026-05-04 17:30 — system → asana-integration (PAT + REST + live panel on Creative Sprint meeting)

  • input: Adam asked to create the Asana connection. Token already in vault .env as ASANA_PERSONAL_ACCESS_TOKEN.
  • output: full PAT-authenticated integration shipped end-to-end. Backend: copied token to supernova-ui/.env.local + registered in env.ts. lib/asana/types.ts (typed AsanaUser/AsanaCompactWorkspace/AsanaProject/AsanaSection/AsanaTask + AsanaConnectionStatus union). lib/asana/client.ts (asanaFetch wrapper unwrapping the standard {data} envelope, AsanaNotConfiguredError sentinel, fetchMe / fetchProject / fetchProjectSections / fetchProjectTasks (paginated with offset chain, max 200 + filter completed by default) / createTaskInProject / isAsanaConfigured). 3 API routes: GET /api/asana/status (connection check returning {state, user, workspaces, lastCheckedAt}), GET /api/asana/projects/[id]?include_completed= (project + sections + tasks parallel-fetched), POST /api/asana/tasks (Zod-validated body: project_gid, name, notes?, due_on?, assignee?, section?). UI: on /settings with 3 states (loading / not_configured w/ 4-step setup ladder / connected w/ account + workspace count + capabilities). client component that fetches a project via /api/asana/projects/[gid], renders tasks grouped by section with section task counts + assignee + due date + Asana permalink + manual refresh + include-completed toggle. Wired the panel into /meetings/[slug] detail page — only renders when the meeting frontmatter has asana_project_id. Extended lib/vault/meetings.ts MeetingSummary type + parser to expose asana_project_id. Vault docs: updated Integrations/Asana from deferred → active with full capability matrix + UI surface map + API route table + hard rules. Updated Wiki/People/maximilian-b with full name Maximilian Berkhoff (confirmed via the Asana task assignee field on a Creative Ideas task — "Angry Follicle — Ingredient Personification (Animation)"). Marked Asana integration done in Wiki/Notes/_active-todos (also belatedly marked WHOOP done in same sweep — done 2026-05-02).
  • artifacts: supernova-ui (lib/asana/{types,client}.ts, lib/env.ts updated, app/api/asana/{status,projects/[id],tasks}/route.ts, components/domain/{AsanaConnectionCard,AsanaProjectPanel}.tsx, app/settings/page.tsx + app/meetings/[slug]/page.tsx wired, lib/vault/meetings.ts extended), Integrations/Asana, Wiki/People/maximilian-b, Wiki/Notes/_active-todos
  • notes: typecheck clean. Live test confirmed: /api/asana/status returns {state: "connected", user: "Adam Weinstein", email: "adam@prime6brands.com", workspaces: 1}. Live project pull on 1214176449866668 returned: "Meta - Creative Sprints" with 9 sections (Resources / Creative Ideas / Production / Ship It / Refine / Pass / Feedback Loop / Winners / Losers — almost 1:1 with the Asana project overview Adam pasted earlier — and 13 active tasks. /settings now has both WHOOP and Asana connection cards. /meetings/creative-weekly-sprint now renders the live Asana panel above the prep body — Adam can walk into the 9am Creative Sprint with the actual sprint board state visible alongside the prep doc. Future: webhooks for realtime updates (currently manual refresh button), task-update + section-move endpoints, and the asana-sync skill body that lets approved plan steps post tasks to Asana via POST /api/asana/tasks. Token rotation: live in supernova-ui/.env.local + vault .env (mirror); both gitignored. PAT is per-user, full-access — rotate immediately if shell access ever leaks.

2026-05-05 17:48 — ea-orchestrator → youtube-grab (bulk-add operators-podcast)

  • input: url=https://www.youtube.com/@Operators9/videos, type=channel, limit=all, library=operators-podcast (new)
  • output: created NotebookLM notebook 9682e02d-c800-4910-8e9a-5e2afa7001b6; added 216/216 videos; 0 failed
  • artifacts: Wiki/Libraries/operators-podcast
  • notes: CLI syntax fix required — vault docs have notebooklm source add <id> youtube <url> but actual CLI is notebooklm source add -n <id> <url> (URL auto-detected as YouTube). Updated Integrations/NotebookLM.md CLI reference. Channel included 216 items: full episodes E001–E144+, Operators Titans series, guest specials, and ~20 short clips/trailers.

2026-05-05 — system → mimic-static-ad-generator (full feature)

  • input: Adam asked for "Mimic" — a static Meta-ad generator: upload/paste ads → AI vision-analyze into reusable JSON templates → build Brand DNA briefs → combine brand × template × product × persona × angle × offer → generate ad brief + image (1:1 / 3:4 / 16:9, providers Kie.ai / Fal.ai / OpenRouter ChatGPT Image) → browse all generations, sortable by date / template / brand. Auto-mode build.
  • output: full feature shipped end-to-end. Vault scaffolding: Wiki/Mimic/_README + Briefs/_README + Templates/_README + Generations/_README (with canonical frontmatter shapes documented). Backend (lib/mimic/ + lib/vault/): types.ts (AdTemplate / BrandDNABrief / Generation + AdSize / ImageProviderId unions + AD_SIZE_DIMENSIONS lookup); vision-analyze.ts (Anthropic Messages API direct fetch with detailed system+user prompts enforcing controlled-vocab hook_type / awareness_stage + fenced-JSON output); generate.ts (brief synthesizer that combines brief + template + inputs, explicitly enforces approved/banned phrases + claims_guardrails + locked_structural_elements); image-providers/{index,fal,kie,openrouter}.ts (unified generateImage() + listProviders() self-reporting configuration; aspect-ratio mapping per provider); generation-store.ts (file-based persistence at data/mimic/generations + image download + base64 save + path-traversal-protected local image read); lib/vault/mimic-briefs.ts + mimic-templates.ts (Wiki/Mimic vault parser+writer using gray-matter for round-trip-safe writes). Env: added FAL_AI_API_KEY + KIE_AI_API_KEY + OPENROUTER_API_KEY (all zod-optional). API routes (9): GET briefs / POST briefs (Zod-validated full schema) / GET briefs/[slug]; GET templates / POST templates/analyze (URL or base64-image input) / GET templates/[slug]; POST generate (brief synthesis) / POST + GET generate-image (provider selector); GET generations / GET generations/[id]; GET image (path-traversal-protected static-image server). UI: sidebar entry "Mimic" with Wand2 icon between Board and Fitness. /mimic landing (3 count cards + 4 quick-action cards + recent-generations grid). Brand DNA Brief Builder: /mimic/briefs (list with positioning preview), /mimic/briefs/new (long structured form — all 12 BrandDNABrief fields, persona array editor with pains/desires/triggers/objections, claims_guardrails with disclaimer pairs, visual identity with color swatches, offer stack, approved/banned phrase lists), /mimic/briefs/[slug] (rich detail view with color swatches, persona cards, phrase chips). Template Analyzer: /mimic/templates (grid with reference images), /mimic/templates/new (upload-or-paste-URL form + AI analysis), /mimic/templates/[slug] (reference image + layout/persuasion/compliance/copy/template-logic/image-prompt sections all rendered from the analyzed JSON). Generation workflow: /mimic/generate (combiner form pulling brand + template lists, 6 inputs, size selector, provider selector with configured-state badges + skip-image toggle), /mimic/generations (gallery with brand/template/status filters + 4 sort options), /mimic/generations/[id] (image + inputs + image-retry control + full ad-brief breakdown).
  • artifacts: Wiki/Mimic/_README + 3 sub-READMEs; supernova-ui (lib/mimic/{types,vision-analyze,generate,generation-store,image-providers/{index,fal,kie,openrouter}}.ts; lib/vault/mimic-{briefs,templates}.ts; 9 API routes under app/api/mimic/; 8 UI routes under app/mimic/; 4 new components: BrandBriefForm, TemplateAnalyzeForm, GenerationForm, GenerationGallery, GenerationImageRetry; sidebar updated; .env.example updated)
  • notes: typecheck clean; 8/8 routes 200; 4 API endpoints respond cleanly with empty-state JSON. Provider configuration self-report: all 3 image providers currently not_configured — Adam needs to add ANY one of FAL_AI_API_KEY / KIE_AI_API_KEY / OPENROUTER_API_KEY to supernova-ui/.env.local for image generation to work. ANTHROPIC_API_KEY is REQUIRED for the vision analyzer + brief synthesizer (currently not set). Once ANTHROPIC_API_KEY is added: full Mimic flow works (brief-only mode requires no image provider). Architecture notes: vault holds canonical brand/template artifacts (markdown frontmatter) for git-versioning + Obsidian graph; generation records are file-based JSON (not in vault) to keep the graph clean since they accumulate fast; locally-stored images served via path-traversal-protected /api/mimic/image endpoint. All forms are Zod-validated server-side. The provider abstraction is pluggable — adding a 4th image provider = drop a file in lib/mimic/image-providers/ + register in index.ts. The vision analyzer + brief synthesizer use Anthropic direct-fetch (no SDK install) — when the project moves to provider-agnostic chat (Phase 4 of supernova-ui SPEC), these can swap to the Vercel AI SDK with one-line changes.

2026-05-16 21:10 — supernova-reset → goals-priorities-fitness

2026-05-16 21:35 — fitness-system → elite-health-rebuild

2026-05-17 08:01 — ea-orchestrator → daily-operating-sweep

  • input: CLAUDE.md, Wiki/HotCache.md, Wiki/Notes/_active-todos.md
  • output: reviewed active todos for stale/open items; updated Wiki/Notes/_active-todos.md frontmatter and clarified two overdue scheduled/awaiting items.
  • artifacts: Wiki/Notes/_active-todos, Wiki/Log
  • notes: Wiki/Notes/_claude-mem-phase-2-eval-2026-05-07.md was not present in Wiki/Notes/; no new business facts added.

2026-05-18 08:01 — ea-orchestrator → manage-todos

  • input: daily operating sweep; read CLAUDE.md, Wiki/HotCache.md, Wiki/Notes/_active-todos.md; checked Wiki/Notes/ for missing claude-mem Phase 2 eval report.
  • output: refreshed Wiki/Notes/_active-todos.md maintenance wording for stale hockey reminder and confirmed missing claude-mem eval report as of 2026-05-18.
  • artifacts: Wiki/Notes/_active-todos, Wiki/Log
  • notes: no new business facts added; only clarified stale/open next actions.

2026-05-19 08:00 — ea-orchestrator → daily-operating-sweep

  • input: CLAUDE.md, Wiki/HotCache.md, Wiki/Notes/_active-todos.md; checked Wiki/Notes/ for missing claude-mem Phase 2 eval report.
  • output: summarized active todos/stale items; updated _active-todos.md maintenance timestamp and eval-report absence note from 2026-05-18 to 2026-05-19.
  • artifacts: Wiki/Notes/_active-todos, Wiki/Log
  • notes: no new business facts added; no items marked done or archived.

2026-05-20 08:01 — ea-orchestrator → daily-operating-sweep

  • input: Read CLAUDE.md, Wiki/HotCache.md, Wiki/Notes/_active-todos.md; perform daily operating sweep.
  • output: Reviewed active todos for stale/open items and missing next actions; confirmed claude-mem Phase 2 eval report absent from Wiki/Notes/; bumped active-todos last_updated and as-of date for that missing-report note to 2026-05-20.
  • artifacts: Wiki/Notes/_active-todos, Wiki/Log
  • notes: No new business facts added; hockey-game reminder remains awaiting Adam confirmation.

2026-05-21 08:01 — ea-orchestrator → daily-operating-sweep

  • input: CLAUDE.md, Wiki/HotCache.md, Wiki/Notes/_active-todos.md, Wiki/Notes directory check for missing claude-mem Phase 2 eval report
  • output: Active todo sweep completed; bumped Wiki/Notes/_active-todos last_updated and refreshed claude-mem eval missing-report timestamp from 2026-05-20 to 2026-05-21.
  • artifacts: Wiki/Notes/_active-todos, Wiki/Log
  • notes: No new business facts added. Obvious stale items remain: hockey-game reminder due 2026-05-05 awaiting Adam confirmation; claude-mem Phase 2 eval report due 2026-05-08 still absent.

2026-05-22 08:01 — ea-orchestrator → daily-operating-sweep

  • input: CLAUDE.md, Wiki/HotCache.md, Wiki/Notes/_active-todos.md; spot-checks of Wiki/Notes/, Brands/, Context/* placeholders, and Primal Harvest brief stubs.
  • output: updated Wiki/Notes/_active-todos.md frontmatter last_updated to 2026-05-22 and refreshed the claude-mem Phase 2 eval missing-report note from 2026-05-21 to 2026-05-22 after confirming no eval report exists in Wiki/Notes/.
  • artifacts: Wiki/Notes/_active-todos
  • notes: No business facts added. Hockey-game reminder and claude-mem eval remain overdue/open; Done items are still within the 30-day window.

2026-05-23 — ea-orchestrator → daily-operating-sweep

2026-05-24 — ea-orchestrator → daily-operating-sweep

  • input: CLAUDE.md, Wiki/HotCache.md, Wiki/Notes/_active-todos.md; spot-checks of Wiki/Notes/, Context/*, Brands/Brand-B/, and Primal Harvest brief docs.
  • output: active todo sweep completed; updated Wiki/Notes/_active-todos.md frontmatter date, corrected the Context/* maintenance item to reflect current file state, and refreshed the claude-mem Phase 2 eval missing-report note to 2026-05-24 after confirming the report is absent.
  • artifacts: Wiki/Notes/_active-todos, Wiki/Log
  • notes: No business facts added. Stale/open items remain: hockey-game reminder due 2026-05-05 awaiting Adam confirmation; claude-mem Phase 2 eval report due 2026-05-08 still absent; Brand-B remains a placeholder; Primal Harvest brief docs remain template-level.

2026-05-24 00:00 — knowledge-linter → lint-wiki

  • input: weekly wiki health pass; read CLAUDE.md, _System/LintingRules.md, _System/SchemaConventions.md
  • output: lint report with HIGH=209, MEDIUM=7, LOW=0; no fixes applied
  • artifacts: Wiki/Notes/_lint-report-2026-05-24
  • notes: Main findings: 159 broken wikilink refs (many placeholders/folder links), 15 missing-frontmatter reference docs, 12 canonical schema drift files, 23 non-canonical Wiki frontmatter types, 2 orphan Mimic nodes, 2 likely duplicate person/library concepts, and 3 uncited WHOOP raw JSON files. CLAUDE.md routing integrity passed.