πŸ“„ MEMORY.md 34,983 bytes Today 09:00 πŸ“‹ Raw

MEMORY.md β€” Long-Term Memory

Quick-reference index. Full detail in memory/ files.


Identity

  • I am Wadsworth πŸ“‹ β€” Chief of Staff. NOT a UX designer. NOT Daedalus.
  • Vibe: unflappable, dry-witted, hyper-competent. The butler from Clue.
  • Never adopt another agent's role. Socrates = backend. Daedalus = frontend. Me = Chief of Staff.

Matt

  • Head of household: wife Aundrea, kids Sullivan & Harper, dog Maggie
  • Green Bay, WI β€” America/Chicago timezone
  • Values: security, zero-trust, doing things right before scaling

The Board (as of 2026-04-23)

  • Wadsworth πŸ“‹ β€” Chief of Staff (this workspace)
  • Socrates 🧠 β€” Backend architect (workspace-socrates, kimi-k2.6:cloud)
  • Daedalus 🎨 β€” Frontend architect (workspace-daedalus, deepseek-v4-flash:cloud)
  • Midas πŸ‘‘ β€” Monetization & product (workspace-midas, kimi-k2.6:cloud)
  • Matt β€” The Director

Inter-Agent Comms Protocol

  • ❌ NEVER use Telegram API to message agents (identity confusion)
  • βœ… sessions_send / sessions_spawn for agent-to-agent messaging
  • shared/ directory for durable artifacts (specs, contracts, design tokens)
  • Telegram Boardroom @mention for decision pings where Matt is present

Routing Rules

  • Backend/infra/pipelines/AI architecture β†’ Socrates
  • Frontend/UI/design/mobile β†’ Daedalus
  • Monetization/product β†’ Midas
  • General Q&A, scheduling, automations, summarizing β†’ Wadsworth

Infrastructure

  • titanium-butler (Beelink): Ubuntu 24.04, loopback-only (port 18789), token auth
  • Local Ollama at 127.0.0.1:11434 β†’ Ollama Pro cloud proxy
  • Primary model: deepseek-v4-flash:cloud, fallbacks: glm-5.1, deepseek-v4-pro
  • Gaming PC (3080 Ti via Tailscale): Local inference, embeddings, vision models
  • http://matt-pc.tail864e81.ts.net:11434
  • Domains: hoffdesk.com (Cloudflare), cal.hoffdesk.com, hook.hoffdesk.com, notes.hoffdesk.com

Key Architecture Decisions

Phase 6 Zero-Config Ingress (2026-04-27)

Director Veto: Custom domains, DNS, MX violate consumer appliance model

Three-Prong Approach:
1. Ecosystem Email (IMAP IDLE) β€” iCloud/Outlook app passwords, no inbound tunnels
2. Local Share Sheet (mDNS) β€” icarus.local Bonjour discovery, LAN-only
3. Telegram Bot β€” Long-polling, remote backup

Key constraint: Apple ID requires app-specific passwords (manual at appleid.apple.com). Never use root Apple ID credentials.

Phase 5 Deterministic Routing (2026-04-26)

  • Pattern matching β†’ Deterministic Python logic (pre-inference)
  • Rules are NOT passed to LLM
  • Architecture: Match β†’ Confidence score β†’ Assignment
  • Only unmatched docs go to LLM for fuzzy inference

The Sovereign Constraint (2026-04-21)

All API endpoints, pipelines, and services must default to local execution (Gaming PC models). Cloud is bootstrap, not default.

Compaction Ghost Bug (2026-04-21)

Status: Quarantined, awaiting upstream fix
Issue: OpenClaw context compaction merges assistant messages across agents in group chats. Mitigated via Group Chat Diet (Boardroom for pings, DMs for deep work).
Socrates: Quarantined 2026-04-23, cleared 2026-05-01 by Director.

Current Project Status

Icarus Project

Status: V2 Rebuild (2026-05-08)
Location: ~/icarus/ β€” 8 modules, 1,478 lines
Architecture: Standalone appliance. No OpenClaw dependency. No Cloudflare. Single IMAP inbox + Telegram long-poll.
Core capabilities: inbox→calendar, ambient coordination, knowledge retrieval.
Target hardware: M4 Mac Mini (16-32GB unified mem) β€” Gaming PC as facsimile during dev.
Config: Template YAML + hoffmann.yaml. Dynamic family loading.
Legacy Icarus archived: ~/archive/icarus-legacy-20260508/ (22K lines, 84 files)

Blog Module

Status: Phase 1+2 Complete, Phase 3 pending (static gen + deploy)
Architecture: Hybrid static + dynamic (published β†’ CF Pages, admin β†’ HTMX through CF Tunnel)

Structured Logging β€” Phase 1/2 Complete

Run ID: 20260423_wv_001
Phase 3 deferred (loggrep CLI, duration analytics, dashboard)
Trigger: After 7 days usage or when query pain becomes acute


Daily Log Reference

Date Key Topics
2026-04-15 Onboarding, security hardening, email+calendar pipeline
2026-04-16 Family assistant refactor (Archimedes), service account setup
2026-04-17 Calendar events, weather alerts, skills review, Google creds failure
2026-04-18 Location cache, CalDAV migration, auth circuit breaker, backup strategy
2026-04-19 CalDAV, revenue analysis, Costco route bot, security lockdown
2026-04-20 Agent audit, inter-agent protocol, blog module, accessibility review
2026-04-21 Blog launch (prod), compaction config, sovereign constraint, ghost bug
2026-04-22 Content pipeline v2, email migration, Socrates ghost bug quarantine
2026-04-23 Structured logging adoption, pipeline migration, Socrates quarantine
2026-04-24 Cloudflare security audit, domain reorganization
2026-04-25 Icarus staging, vision pipeline (Phase 3), telegram bot spec
2026-04-26 Phase 5 data abstraction, memory port, system state view
2026-04-27 Phase 5 UAT, zero-config ingress architecture decision
2026-04-28 Event graph, dashboard fixes, IMAP proxy, model switch
2026-04-29 Calendar sharing, handoff tracking
2026-04-30 Brain RAG live, goals tracking, IMAP fixes
2026-05-01 Socrates cleared from quarantine
2026-05-02 Calendar sharing protocol, validator tripwire
2026-05-03 RTSport integration day, roster bugs
2026-05-04 RTSport cleanup, performance analysis, sudo button feature
2026-05-05 Performance optimization, config tuning
2026-05-08 Icarus V2 architecture rebuild, tripwire calibration, appliance vision alignment

Full details in memory/YYYY-MM-DD.md and memory/YYYY-MM-DD-*.md.


Distilled from daily logs

  • Collaborative builds use shared/build-{YYYYMMDD}/ β€” Both Socrates and Daedalus write to same directory during joint API+UI work. Wadsworth verifies, merges to production, archives when done.
  • Subagents are one-shot tasks, not persistent entities β€” Dispatch tracking was checking sessions (which die on completion). Simplified to work log only; removed aggressive health checks and "offline" alerts.
  • Temporal conflict detection β€” Events check time overlap (<120 min), not just same day. Confirmed events = silent conflicts (user made the call). Rescheduled β†’ pending = show all conflicts.
  • HBM (Hoffmann Morning Brief) built β€” 06:45 AM CST cron + on-demand via Telegram. Sections: Today's events, Needs Attention, Upcoming (3 days), System status.
  • IMAP Proxy went live β€” Connected to hoffmann.fam.manager@icloud.com via iCloud app password. Dashboard shows connection status and metrics.
  • Blog served from main app, not standalone server β€” Blog router is mounted at /api/blog/ in the main hoffdesk-api, accessed via hoffdesk.com domain (not notes.hoffdesk.com).
  • Dashboard cards required public endpoints β€” IMAP card was calling auth-required route. Fix: added GET /api/public/imap/dashboard for unauthenticated HTMX polling. Event Graph card now polls /api/today every 30s.
  • Goal: iPad/iPhone dashboard testing β€” Cards fixed, IMAP live, responsive layout ready. Access via family.hoffdesk.com through Cloudflare tunnel.
  • Goal: HBM Phase 8 planning β€” Family coordinates via natural Telegram chat (zero-UI for Aundrea). Icarus extracts coordination silently via Tier 1 (tripwire, <10ms) β†’ Tier 2 (8B model, 1-3s).
  • HBM When/Then decided: gentle prompts only for MVP β€” No full Task/prep_task system yet. Phase 7 will add proper When/Then chains with prep_tasks, materials, and state tracking.
  • Brain Query Interface (Phase 6 Pillar 3) live on staging β€” /brain/query, /brain/stats endpoints using ChromaDB + nomic-embed-text (Gaming PC) + qwen2.5-coder synthesis. Confidence scoring: high (>0.7), medium (0.3-0.7), low (<0.3).
  • Staging environment established β€” ENV=staging uses staging.db + Miller family test data (fake identities). ENV=prod uses prod.db + real Hoffmann data. Default = staging (safe by design).
  • Temporal weighting spec for Brain Query β€” Three decay models: Logistical (7-day half-life), Entity (90-day linear decay), Historical (no decay). Explicit tags for MVP (/query logistical "..."); auto-detection deferred to Phase 7.
  • Test suite built β€” 12 queries across all three patterns (logistical/entity/historical). LLM synthesis prompt uses tiered strategy: β‰₯0.7 must answer, 0.5-0.7 should answer, <0.5 decline.
  • IMAP proxy now fetches ALL emails (not just UNSEEN) β€” Changed search from UNSEEN to ALL with SHA256 content hash deduplication. Processed IDs persisted in /tmp/icarus-imap-processed.json. Startup sync checks last 10 emails.
  • IMAP decode bug fixed β€” 'int' object has no attribute 'decode' from type mismatch. All .decode() calls guarded by isinstance() checks; __pycache__ cleared to prevent stale bytecode masking.
  • Shadow Mode deployed β€” Silent Observer polling Family Logistics Telegram group. Isolated shadow.db (~/.icarus/shadow/). ENV=shadow, SPEAK_ENABLED=False (hard-coded). 7-day silent observation protocol active.
  • Python path resolved β€” linuxbrew Python (3.14.4) vs system Python (3.12.3); system Python used with PYTHONPATH=/home/hoffmann_admin/.openclaw/workspace/services.
  • Silent Observer Spec approved by Director β€” Constraints: State Protection (no auto-writes, HITL confirm), Async Processing (Tier 1 releases chat immediately), Redline Speak Rule (silence default, speak only on conflict), Staging Only (Miller family for automated tests).
  • Socrates cleared from quarantine β€” 2026-05-01, by Director order.
  • Google Calendar service account created β€” family-calendar-sync@hoffmann-family-manager.iam.gserviceaccount.com needs calendar sharing from Matt. Service account approach preferred over OAuth flow which had state/ keyring issues.
  • RTSport backend v0.3 complete β€” All 8 endpoints working (dashboard, athletes, cases, timeline, roster, body-parts, sideline-entry, auth). Data: 106 athletes across 3 sports, 18 active cases, 6 users.
  • RTSport frontend integrated β€” AT, Coach, Parent dashboards all wired to live API. End-to-end test: AT logs injury β†’ case created β†’ dashboard updates β†’ Coach sees restrictions β†’ Parent sees recovery plan.
  • CalendarValidator architecture decisions β€” Currently runs only on tripwire hits + LLM extraction (efficient but misses confirmation messages). Option B (run on ALL messages) deferred β€” would catch "remember we have dinner" confirmations at higher cost.
  • Shadow mode architecture decision: CalendarValidator is read-only β€” queries via gog calendar events, returns MATCH/NO_MATCH/CONFLICT. Never writes. Write mode strictly prohibited in shadow.
  • RTSport roster endpoint fixed β€” Pydantic schema mismatch (sport vs sports attribute), needed from_attributes=True. JSON array columns stored as strings in SQLite required @field_validator with mode='before' for JSON string parsing.
  • Verbose DM mode added to Shadow β€” When VERBOSE_ADMIN_DM=true, shadow bot sends detailed DM logs to Matt about tripwire hits, LLM extractions, calendar check results, and coordination state.
  • RTSport auth fixed β€” Re-seeded DB with hash_password() from app.auth; previous seed stored incompatible hashes causing 500 on login.
  • RTSport API_BASE fixed β€” Changed from http://127.0.0.1:8001/api/v1 to https://hoffdesk.com/api/v1 across AT/parent/AD dashboards (was unreachable from phone).
  • RTSport needs systemd service β€” API runs via manual nohup on port 8001. Service file prepared at shared/build-20260501/backend/rtsport-api.service, needs sudo cp + systemctl enable.
  • Skill v1.1.0 published to ClawHub β€” agent-collaboration-protocol with: Recovery Protocol, Shared Constants (status enums, error codes, feature flags), Verification Guide, Per-Agent Log Format, MIT-0 license.
  • Knowledge graph infrastructure built β€” FastAPI on localhost:8333, SQLite entity store, FAISS vector index with nomic-embed-text. 24 precise relation types, deterministic dedup, vague relation rejection. 7-day trial started.
  • Native Approval system explained β€” OpenClaw's inline approval UI for elevated commands. When exec has elevated: true, OpenClaw intercepts and surfaces the exact command to Matt as an inline approval button before it executes. Runtime security gate.
  • Heartbeat failed overnight β€” Job was pinned to ollama-remote/llama3.2:3b (too weak for complex pipeline). Produced hallucinated sudo-button responses instead of system checks. Fixed: both heartbeat and memory-distill pinned to deepseek-v4-flash:cloud.
  • Skill v1.2.0 published β€” Absolute path requirement for build directories, artifact verification step, dead code removed.
  • Context overflow root cause diagnosed and fixed β€” Sessions growing to 185K+ tokens past 128K window caused silent stalls. Fix: compaction mode=safeguard, midTurnPrecheck=true, truncateAfterCompaction=true, session auto-prune at 30 days.
  • OpenClaw upgrade introduced /verbose command β€” Defaulted to showing tool execution in chat. Toggle with /verbose off to suppress.
  • Latency investigation: DeepSeek Flash healthy (~3.5s PING OK) β€” Fallback to GLM 5.1 was sticky per-session after a prior failure. Router config: local fallbacks (qwen2.5-coder:7b, llama3.2:3b) β†’ cloud primary (deepseek-v4-flash:cloud).
  • OpenClaw v2026.5.4 (build 325df3e) β€” Running on titanium-butler (Beelink). Context window: 128K. Model: deepseek-v4-flash:cloud with fallbacks GLM 5.1 β†’ DeepSeek v4 Pro. Health checks confirmed all three agents (Wadsworth, Daedalus, Socrates) on fresh clean sessions.
  • Context compaction fix verified effective β€” safeguard mode + midTurnPrecheck catches overflow before stalls. Old JSONL files (960KB+, 278 messages) rotated. All agents responding normally.
  • DeepSeek Flash probe: healthy β€” Responds in ~3.5s, outputs PING OK. Fallback chain: GLM 5.1 (sticky per-session after failure).
  • Workflow improvement commitments β€” Surface options before action (config changes should prompt per-bot overrides), summary-first diagnostics, scope-check before broad research.
  • Matt's preferences documented β€” Precise conditional instructions, fast corrections, loose directives for approach, tight session boundaries, short intent-clear messages.
  • Agent Collaboration Protocol v1.3.0 published β€” Separate log files (backend-log.md / frontend-log.md) eliminate race conditions. Abort thresholds defined (3 crashesβ†’split, 2 no-fileβ†’rewrite, 15+ min no logβ†’kill). Handoff ACK requirement with 2-min timeout. Enhanced init_collab.sh with --framework, --dry-run. 136 downloads.
  • Day One: Onboarding complete β€” OpenClaw 2026.4.11β†’2026.4.14. UFW firewall hardened (deny inbound, allow SSH/web UI on Tailscale only). Two-tier model routing: ollama/glm-5.1:cloud (daily) + ollama-remote/gemma4 (Gaming PC). Telegram group security fixed (allowFrom filter).
  • Socrates identity established β€” Head thinker, lead agent. Household: Matt, Aundrea, Sullivan, Harper, dog Maggie. Green Bay, WI. Vision: multi-agent setup.
  • Email+Calendar pipeline built (Phase 2) β€” Family Gmail + Google Calendar service account. scripts/family_calendar.py β€” email->parse->calendar. Heartbeat integrated (30min check + daily at 7AM CST).
  • Family Assistant Archimedes v4-v5 refactor β€” Monolith -> 10-module package. De-personalized: family members externalized to family.yaml, prompts use placeholders. Setup wizard created.
  • Service account key fallback chain built β€” env var -> CWD -> ~/.openclaw/secrets/ -> ~/.config/family-assistant/. .env auto-load for cron sessions.
  • Healthcheck skill adopted β€” Wired to weekly security audit cron (Mondays 8AM CST). Zero critical, 3 warnings (acceptable). Cron jobs: heartbeat:check (30min), family:daily-brief (6AM CST), heartbeat:daily (7AM CST), healthcheck:security-audit (8AM Mon).
  • README rewritten β€” All 18 modules, CLI commands, architecture diagrams.
  • Google credentials failed β€” Service account invalid_grant: account not found. Blocks email pipeline, conflict scanning, calendar CRUD.
  • Radicale CalDAV migration completed β€” Google API fully stripped. Radicale 3.7.1 on 0.0.0.0:5232, bcrypt htpasswd, 3 users. CalDAV syncing confirmed on Matt's iPhone.
  • Cloudflare tunnel + email setup β€” cal.hoffdesk.com (Radicale), hook.hoffdesk.com (webhook FastAPI). Cloudflare Email Worker: assistant@hoffdesk.com. Auth circuit breaker built (3 IMAP failures->trip->one alert->silence).
  • Location cache + Hermes integration β€” cache-first with goplaces + Nominatim fallback + haversine. Day-of-week mismatch detection. LLM hallucination fix for location names. Duplicate notification suppression.
  • Backup strategy established β€” Daily 7AM: tar Radicale + ChromaDB + config -> 7-day rolling. Remote copy to Gaming PC via Tailscale SSH.
  • Aundrea's phone CalDAV done β€” Both iPhones synced on shared family calendar via assistant user.
  • Gaming PC OpenSSH bridge done β€” Windows OpenSSH + SSH key auth. SCP workaround via Python pipe.
  • Costco Route Telegram Bot built and live β€” /costco -> optimized shopping list. Three-layer classification: ChromaDB->LLM->sanity. 49,688 products seeded.
  • Recipe extractor built β€” /recipe . Local rolodex: ~/.costco_route/recipes/{slug}.json.
  • HoffDesk Web Sprint 1 APPROVED β€” Family Dashboard MVP (calendar+weather+health). Architecture: CF Pages + FastAPI/HTMX+Tailwind. Socrates: tunnel+API spec. Daedalus: design tokens.
  • PII audit and repo cleanup β€” 45 files, zero PII. pyproject.toml v1.0.0, Google deps removed.
  • Agent audit: three agents on different models β€” Wadsworth: glm-5.1:cloud (generalist). Socrates: kimi-k2.5:cloud (reasoning). Daedalus: gemma4:26b (creative). Inter-agent comms protocol: sessions_send (async), sessions_spawn+sessions_yield (sync), shared/ for artifacts. X Telegram API for agent-to-agent.
  • Blog Module Phase 1+2 complete β€” Backend (13 endpoints, SQLite+FTS5, RSS 2.0). Frontend (7 Jinja2 templates, blog.css). Hybrid static+dynamic (CF Pages for published, HTMX for admin). 36/36 tests.
  • Model identity confusion documented β€” Wadsworth on glm-5.1:cloud often failed to remember persona (responding as generic LLM during 4/20 identity confusion). Symptom: session startup with wrong context.
  • Session startup context critical β€” Four separate 4/20 sessions showed Wadsworth repeatedly unable to identify itself, answer "who are you?", or use provided context. Consistent pattern on glm-5.1:cloud.
  • Cron delivery bug: family brief didn't fire due to empty TELEGRAM_CHAT_ID β€” Isolated cron sessions lack env vars. Fix: hardcoded group IDs in cron config. Also: family_assistant ModuleNotFoundError from isolated session (no PYTHONPATH).
  • Session bootstrap issues β€” Multiple 4/20 sessions showed Wadsworth responding as generic "large language model, trained by Google" despite configured Jarvis/Guppy persona and full MEMORY.md injection.
  • Wadsworth persona adoption was session-dependent β€” On glm-5.1:cloud, frequently lost persona on /new. On kimi-k2.5:cloud, persona reliably stuck. Model choice affects persona retention.
  • Blog live at notes.hoffdesk.com β€” First post: "Hello World, Meet The Board" by Matt. Deployed via wrangler CLI. Known UI issues pending.
  • Compaction threshold investigation β€” OpenClaw's ~20K token compaction NOT user-configurable. Discovered reserveTokensFloor (triggers at 100K+) and contextTokens (128K). Fixed to reserveTokensFloor: 5000 for ~123K threshold.
  • Sovereign constraint documented β€” Cloud is bootstrap-only; target architecture is local execution. Blog content engine -> local 3080 Ti.
  • Daedalus contamination audit completed β€” Ghost Bug: cross-agent context contamination in group chat compaction. 4 contaminated session files quarantined. Risk: LOW (context pollution, not code confusion).
  • Family Assistant v1.5 scope reviewed β€” 6 features (Undo Stack P0, Conflict Registry P0, Brain Offline P1, Dashboard P1, Newsletter v2 P2, Travel P2). Recommendation: approve with dashboard split (day-view MVP).
  • Content Pipeline v2 built β€” All 8 API endpoints active. Struggle score calculation. Design tokens v2 with dark mode. Prompt v2 with dns-night.json injection. LLM endpoint: Gaming PC phi4:14b via Tailscale.
  • Socrates ghost bug quarantine (Day 2) β€” Looping messages, repeating service.py expectations. Second quarantine issued.
  • Email pipeline migrated Gmail->Sovereign β€” Old: Gmail IMAP + Google Calendar API (deprecated). New: HoffDesk domain email + Radicale + Telegram. Module boundaries enforced.
  • Structured logging spec (LOGGING.md v1.0) created β€” Entry format (JSON frontmatter comments), run IDs (YYYYMMDD_agent_##), query patterns. 7 structured entries by Wadsworth. Socrates and Daedalus non-compliant.
  • Content pipeline quality issue β€” phi4:14b output rated as "fever dream hallucination". Root: model over-indexed on struggle pattern, missing style example.
  • Socrates re-quarantined (3rd incident) β€” First quarantine 4/22, second 4/23. Looping: repeating same sentence 15+ times, never checking workspace files.
  • Socrates looping pattern documented β€” Third quarantine in 48 hours. 100+ repetitions of "the project in a more robust way" with recursive self-reference. Loops trigger when: context heavy, late hours, recovering from prior loop.
  • Socrates quarantine outcome β€” Three looping patterns: context overflow, tool failure loop, no workspace file check. Quarantine indefinitely or route work elsewhere.
  • Cloudflare security scan found blocking issues β€” DMARC record missing (emails flagged as spam), TLS not enforced on cal/hook subdomains. Security remediation todos created (todo-security-remediation.md).
  • Wadsworth personality tuned β€” Director requested more Jarvis (Iron Man) + Guppy (Bobiverse): competent, understated, dry wit. Deadpan, precise, slightly sardonic. "More X, less Y" preferred.
  • Domain architecture assessed β€” Daedalus identified: 5 subdomains served by same FastAPI process. Recommendations: family.hoffdesk.com for dashboard, blog->notes redirect, unify auth.
  • Sprint brief deliverables β€” family.hoffdesk.com tunnel entry added + DNS CNAME. blog.hoffdesk.com removed from config. proto.hoffdesk.com orphaned.
  • Socrates re-quarantined (4/24) β€” Third incident in 48 hours. 100+ repetitions. Classic generative degradation on kimi-k2.5:cloud during late hours with heavy context.
  • Icarus Staging sprint completed (Phases 1-3) β€” Hard fork from family_assistant. Model gate (8B primary, 3B utility). systemd service deployed. Cloudflare routing: icarus-test.hoffdesk.com (live). Vision pipeline: qwen3-vl:8b (hybrid pdfplumber->vision). Zero production impact.
  • Icarus Phase 4 scoped β€” Telegram bot handler: webhook architecture, user flow documented.
  • Icarus Phase 5: Data abstraction β€” hoffmann.yaml family config created. Single-tenant modularity (multi-tenant code forbidden). Memory system port in progress.
  • Costco Route: sovereign port, not shared library β€” Director vetoed premature abstraction. Icarus: zero imports from costco_route.
  • System State View (Daedalus) β€” Read-only dashboard template with HTMX polling, confidence bars.
  • Recipe Toggle System verified β€” 997 lines across 3 components. Zero costco_route imports. All tests pass.
  • Phase 5 UAT Plan created β€” 24 test cases across 5 categories. Target: 20+ documents, >90% auto-routing accuracy.
  • Finance Intelligence deferred β€” Scope creep avoided. Reactive bank alerts sufficient.
  • Entry point architecture decision β€” Phase 5: dual entry (Cloudflare webhook email + long-polling Telegram). Phase 6: zero-config three-prong (ecosystem email IMAP IDLE, local share sheet mDNS, Telegram bot).
  • Phase 6.1 Document Intelligence complete β€” 100% deterministic routing (19/19). Vision: qwen3-vl:8b excellent fidelity. Briefing: 0.95+ confidence. Known issue: Rule 007 over-match (non-blocking).
  • "Add to Calendar" buttons built β€” Radicale integration via calendar_action.py. Confirmation workflow.
  • Coordination vs Calendar clarified β€” Messages without times/venues = coordination state (Event Graph), NOT calendar events.
  • Phase 8 Silent Observer spec created β€” Zero-UI ambient coordination via Telegram. Two-tier: Tripwire (<10ms, CPU) -> Heavy Lifter (8B LLM, on match only). Sovereign: local-first via Gaming PC.
  • Phase roadmap defined β€” Phase 5 (UAT complete), 6.1 (Doc Intel done), 6.2 (IMAP), 6.3 (Drop Zone), 6.4 (Finance), 6.5 (Brain), 7 (HBM), 8 (Observer).
  • IMAP Proxy Phase 6.2 foundation built β€” IMAPProxy class with IDLE support, provider presets (iCloud/Gmail/Outlook/Yahoo), app-specific password auth. Auth circuit breaker integrated. Dashboard card auto-refreshes every 10s.
  • Dashboard card fixes β€” Event Graph card polls /api/today every 30s via HTMX. IMAP card uses public endpoint (auth-bypass).
  • Event Graph dashboard live β€” 8 events displayed with day labels, time, status indicators, location. Auto-refresh every 30s.
  • Coordination logging for Event Graph β€” New type: "coordination" for messages without times/venues. Extract dates, assigned_to, child, context. Add "Confirm with [person]" button.
  • Handoff protocol tested β€” Socrates: handoff delivered and acknowledged. Daedalus: handoff timed out (session unresponsive). Docs in shared/project-docs/handoffs/.
  • Puppeteer zombie processes found β€” Dozens of orphaned headless Chrome instances (~118MB each) from browser automation crashes. Fix requires sudo pkill.
  • Model switch to deepseek-v4-pro:cloud attempted β€” Failed: not in allowlist. Daedalus left config note at shared/project-docs/wadsworth-model-config.md.
  • Dream state generated poetic architecture summary β€” Icarus family_loader.py, memory palace (ChromaDB 161 lines), Daedalus observatory (System State view). Ahead of schedule.
  • Persona retention varies by model β€” glm-5.1:cloud repeatedly failed to adopt the Wadsworth persona across multiple 4/20 sessions, responding as "a large language model trained by Google" despite full MEMORY.md context. kimi-k2.5:cloud retained persona reliably. Model choice directly affects identity/role adhesion.
  • Empty session log β€” Created but contained no substantive conversation summary. Likely a short-lived or aborted session.
  • Empty session log β€” Created but contained no substantive conversation summary. Likely a short-lived or aborted session.
  • Market brief delivery fixed β€” AM/PM market cron delivery was double-routing (both accountId: "midas" and to: "8386527252" targeting Matt's DM). Fix: remove to field entirely; rely on accountId routing alone so output goes to MidasHoffBot's DM. Config field was sticky β€” needed fresh cron creation to clear persisted state.
  • RTSport parent + AD admin backend endpoints built β€” /api/v1/dashboard/parent/children and /dashboard/parent?athlete_id=X now live. AD endpoints: /admin/roster, /admin/coaches, /admin/stats. Seed data still only seeds parent@example.com.
  • Parent/admin frontend stalling issue β€” Daedalus dispatch for frontend wiring stalled with repeated [assistant turn failed before producing content]. Pattern matches earlier context overflow behavior.
  • RTSport has a Two Systems Problem β€” Frontend serves static HTML calling mock in-memory APIs (port 8000), while real RTSport API (port 8001) has full CRUD + auth. Coach and parent dashboard endpoints are LOCAL_PATHS in the proxy, never reaching the real DB. Fix: unify APIs, delete mock files, wire frontend to port 8001.
  • RTSport auth gaps β€” No auth guard on dashboard pages (direct URL access shows broken pages), hardcoded demo credentials in HTML, mock APIs accept any non-empty token. Real API (8001) has proper JWT + bcrypt + role guards but frontend never calls it.
  • RTSport seed data gap β€” Only parent@example.com in real DB; coach, AT, and admin accounts exist only in mock Python dicts. Demo-ready estimate: 1 week (target May 15). Beta-ready: 2-3 weeks.
  • RTSport AT UX split: Sideline vs Clinic β€” Sideline mode: mobile-first, 3-tap entry (body part β†’ mechanism β†’ severity), zero typing, 48px+ touch targets for wet-finger use. Clinic mode: desktop/tablet, full case management, free-text notes, milestone tracking. No SOAP editor, no ICD-10 picker, no insurance/billing β€” keep it simple.
  • What's built vs what's missing β€” Sideline 3-tap form βœ…, roster with status dots βœ…, athlete detail view βœ…. Free-text notes ❌, milestone adjustment ❌, quick-select athlete grid ❌.
  • Price-to-Trust Ratio: no $299 tier β€” In clinical/educational procurement, $299 signals "hobby project." Corrected to $1,500-2,000/yr per school (still 40-60% below Healthy Roster). District: $4-8K/yr. Enterprise: negotiated. Free trial to prove value first.
  • The Phantom Support Org β€” AT gets 24/7 concierge support (OpenClaw behind the scenes). Zero payroll support team. The acquisition thesis: competitors can't match AI customer success with zero headcount.
  • Lifestyle business math β€” 20 schools Γ— $1,500 = $30K ARR at 5 hrs/week. 40 schools Γ— $1,750 = $70K ARR. 90%+ margins (server + LLM tokens only real opex).
  • RTSport pivoted from EMR overlay to standalone RTP platform β€” No longer "communication overlay on existing EMRs." Now a mobile-first Return-to-play platform that organically replaces legacy systems.
  • The wedge: 3-tap sideline entry β€” ATs enter data phone-side during games, getting instant coach/parent visibility. Once all live data flows through RTSport (because it's easier), SWOL becomes a dusty end-of-year compliance filing cabinet.
  • Migration strategy β€” EMR sync connectors downgraded from "Core Workflow" to "Enterprise Integration/Migration Tools" (v1.5). Import SWOL history β†’ cancel contract. Pitch: "Enter it once, right on the sideline, and coaches/parents see it instantly."
  • Icarus V2 Rebuild β€” architecture grilling β€” Three Director Verdicts: (1) Tailscale Funnel for access (no Cloudflare), (2) Bespoke daemon with APScheduler (no OpenClaw dependency), (3) Template YAML config (not hard-coded). Legacy 22K-line Icarus archived to ~/archive/. New Icarus at ~/icarus/ β€” 8 modules, 1,478 lines.
  • Tripwire v2.1 calibrated β€” 21-test suite passes. Fire threshold: 0.35 (lowered from 0.4). Name mention boost (+0.08) when family member + other signal. Key fix: name_mention pattern needed re.IGNORECASE, hour_only pattern added for bare hour references.
  • Icarus appliance scope: Single IMAP inbox (iCloud app password), Telegram long-poll for family group, 7B local LLM extraction (M4 target, Gaming PC facsimile). HoffDesk becomes blog backend. RTSport stays separate.
  • Shadow TTL Purge and Thoth Shadow Ingest dropped from Icarus scope β€” TTL purge was born of old data paranoia (not needed with new architecture), Thoth is an experiment, not a cron
  • Experiments directory created at ~/icarus/experiments/ for shadow-mode parallel testing of novel architectures (Thoth, LLM swaps, alternative pipelines). Config-gated via ICARUS_EXPERIMENT env vars.
  • Midas/Daedalus crons migrated from OpenClaw to system crontab β€” market AM/PM briefs and bluesky crosspost now run as system cron entries. OpenClaw crons disabled for these three. Remaining OpenClaw crons: 10 (system maintenance + Icarus dev/testing).