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_spawnfor 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/dashboardfor unauthenticated HTMX polling. Event Graph card now polls/api/todayevery 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/statsendpoints 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 byisinstance()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.comneeds 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 (
sportvssportsattribute), neededfrom_attributes=True. JSON array columns stored as strings in SQLite required@field_validatorwithmode='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/v1tohttps://hoffdesk.com/api/v1across 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, needssudo cp+systemctl enable.
- Skill v1.1.0 published to ClawHub β
agent-collaboration-protocolwith: 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 todeepseek-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
/verbosecommand β Defaulted to showing tool execution in chat. Toggle with/verbose offto 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:cloudwith 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/.
.envauto-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"andto: "8386527252"targeting Matt's DM). Fix: removetofield entirely; rely onaccountIdrouting 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/childrenand/dashboard/parent?athlete_id=Xnow live. AD endpoints:/admin/roster,/admin/coaches,/admin/stats. Seed data still only seedsparent@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.comin 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_mentionpattern neededre.IGNORECASE,hour_onlypattern 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 viaICARUS_EXPERIMENTenv 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).