πŸ“„ MASTER-ROADMAP.md 12,013 bytes Apr 25, 2026 πŸ“‹ Raw

HoffDesk Master Roadmap

Last Updated: 2026-04-25 13:59 UTC
Owner: Matt (Director)
Agents: Wadsworth πŸ“‹ | Socrates 🧠 | Daedalus 🎨


🎯 Active Projects Overview

Project Status Lead Priority
HoffDesk Web Platform 🟑 In Progress All P0
β”œβ”€ Blog Module βœ… Phase 3 Complete Socrates/Daedalus -
β”œβ”€ Family Dashboard 🟑 Phase 1.5 In Progress Daedalus/Socrates -
β”œβ”€ Starlette Host Routing 🟑 Deployed (needs restart) Socrates -
Project Icarus 🟒 Staging Setup Complete Socrates/Daedalus P1
Stock Market Daily Brief ⏸️ Blocked (awaiting input) Wadsworth β†’ Socrates P2
Structured Logging 🟒 Phase 1-2 Active Wadsworth P3
Appliance Productization 🟑 Icarus active Future P4

βœ… COMPLETED β€” Last 30 Days

Infrastructure & Security

  • βœ… Cloudflare Tunnel configured (*.hoffdesk.com β†’ Beelink)
  • βœ… Radicale CalDAV server (port 5232, Tailscale-bound)
  • βœ… Session-based auth (cookies for humans, Bearer for machines)
  • βœ… Role-based access (admin vs family)
  • βœ… UFW firewall (Tailscale-only SSH)
  • βœ… Backup strategy (daily 7 AM β†’ Gaming PC via Tailscale)
  • βœ… Auth circuit breaker (3 failures β†’ alert + silence)

Blog Module (Phase 1-3 Complete)

  • βœ… 13 API routes + 36 tests passing
  • βœ… 7 Jinja2 templates + CSS (Daedalus)
  • βœ… Content pipeline v2 (Magic Wand + Struggle)
  • βœ… Admin panel with session auth
  • βœ… RSS, sitemap, image upload
  • βœ… Deployed to notes.hoffdesk.com

Dashboard (Phase 1)

  • βœ… Dashboard HTML/CSS (Daedalus)
  • βœ… Jinja2 conversion (base.html.j2 + index.html.j2)
  • βœ… Login page for Aundrea
  • βœ… /family/events/removed endpoint (Bearer token)
  • βœ… Recently removed events widget

Domain Architecture

  • βœ… notes.hoffdesk.com β†’ blog (port 8000)
  • βœ… family.hoffdesk.com β†’ dashboard (port 8000 via Host routing)
  • βœ… api.hoffdesk.com β†’ JSON API
  • βœ… cal.hoffdesk.com β†’ Radicale
  • βœ… hook.hoffdesk.com β†’ webhooks
  • βœ… Starlette Host-based routing code (main_v2.py)
  • βœ… Cloudflare config updated (single port)

Agent Configuration

  • βœ… Multi-model architecture (Wadsworth/Socrates/Daedalus)
  • βœ… Daedalus model: minimax-m2.7:cloud β†’ deepseek-v4:cloud (just updated)
  • βœ… Socrates model: kimi-k2.6:cloud
  • βœ… Inter-agent protocol (sessions_send/spawn, shared/ directory)

Automation

  • βœ… Email pipeline v2 (smart classification)
  • βœ… Email Worker v3 deployed (Cloudflare Email Routing β†’ hook.hoffdesk.com)
  • βœ… Conflict detection (calendar overlap scanning)
  • βœ… Location cache + Hermes integration (travel time alerts)
  • βœ… Heartbeat checks (30-min + daily)
  • βœ… Cron jobs: heartbeat:check, heartbeat:daily, family:daily-brief

🚧 IN PROGRESS β€” Current Sprint (Apr 24-25)

πŸ”΄ CRITICAL: Starlette Host Routing Rollout

Status: Code complete, service NOT switched

Task Status Owner Blocker
main_v2.py with Host() routing βœ… Complete Socrates -
hoffdesk.com apex DNS βœ… FIXED Daedalus -
systemd service update βœ… FIXED Matt -
Import error (Path in auth/router.py) βœ… FIXED Wadsworth -
Service restart & verify ⏳ NEEDS RESTART Matt sudo access

Files:
- Code: workspace-socrates/hoffdesk-api/main_v2.py
- Service: /etc/systemd/system/hoffdesk-api.service
- Config: ~/.cloudflared/config.yml

🟒 Project Icarus β€” Staging Environment

Status: Environment initialized, awaiting hard fork

Component Status Details
Directory structure βœ… Created services/icarus/
Staging config βœ… Created staging.env with isolated paths
Model gate βœ… Created 3B restriction enforced
Telegram bot βœ… Created @IcarusTestBot (t.me/IcarusTestBot)
Cloudflare route ⏳ Pending icarus-test.hoffdesk.com β†’ port 8001
Hard fork (copy) ⏳ Pending Socrates to copy from family_assistant/
systemd service ⏳ Pending icarus-staging.service on port 8001

Director Mandates:
1. Hard fork only β€” Copy, do not extract or refactor production code
2. 3B models only on staging β€” Gaming PC via Tailscale, qwen2.5:3b/llama3.2:3b
3. Route priority β€” Specific icarus-test.hoffdesk.com before wildcard *.hoffdesk.com

Files:
- Config: services/icarus/staging.env
- README: services/icarus/README.md
- Model gate: services/icarus/model_gate.py


🟑 Dashboard Jinja2 Integration

Status: Templates ready, router needs update

Task Status Owner Blocker
Jinja2 templates delivered βœ… Complete Daedalus -
Dashboard router update ⏳ PENDING Socrates Starlette routing deployment
Template path unification πŸ“‹ Planned Socrates After routing live

Files:
- Templates: shared/project-docs/dashboard/templates/
- Handoff: shared/project-docs/dashboard/JINJA2-HANDOFF.md

🟑 Pipeline Phase 2 Frontend Wiring

Status: Templates exist, no backend routes

Task Status Owner Blocker
Phase 2 templates (4 files + CSS) βœ… Delivered Daedalus -
Backend route integration ❌ PENDING Socrates Host routing stable
/admin/content/* endpoints πŸ“‹ Planned Socrates -

πŸ“‹ BACKLOG β€” Prioritized

P1: Stock Market Daily Brief

Status: Spec complete, awaiting Director input
Owner: Wadsworth (spec) β†’ Socrates (implementation)

Task Status Blocker
Backend spec (yfinance + pandas-ta + phi4:14b) βœ… Complete -
Frontend spec (Tailscale-only dark dashboard) βœ… Complete -
Owned tickers + cost basis ⏸️ NEEDS INPUT Matt
Watchlist tickers ⏸️ NEEDS INPUT Matt
Delivery time preference ⏸️ NEEDS INPUT Matt
Finnhub API key decision ⏸️ NEEDS INPUT Matt
Implementation πŸ“‹ Not started Above inputs

Files:
- Backend: shared/api-specs/stock-brief/SPEC.md
- Frontend: shared/design-tokens/stock-brief/UX-SPEC.md


P2: Family Assistant v1.5

Status: Scoped, awaiting Phase 1 completion
Owner: Daedalus (UI) + Socrates (API)

Feature Status Notes
Week View πŸ“‹ Planned -
Conflict Panel πŸ“‹ Planned -
Undo Toast πŸ“‹ Planned -
Digest Card πŸ“‹ Planned -
Smart scheduling suggestions πŸ“‹ Future AI-assisted

Files:
- Scope: shared/project-docs/family-assistant/v1.5/SCOPE.md


P3: Structured Logging

Status: Phase 1-2 active, Phase 3 deferred
Owner: Wadsworth

Phase Status Description
Phase 1 βœ… Complete JSON frontmatter format defined
Phase 2 βœ… Complete Daily logs using structured format
Phase 3 ⏸️ Deferred log_activity() helper, query CLI, duration analytics

Trigger: After 7 days of usage or when query pain becomes acute.

Files:
- Spec: memory/LOGGING.md


P4: Blog Phase 4+ (Future)

  • πŸ“‹ Image generation pipeline (ComfyUI on Gaming PC)
  • πŸ“‹ HTMX dynamic loading for long post lists
  • πŸ“‹ Full-text search (FTS5 promotion)
  • πŸ“‹ Newsletter subscription flow

P5: Security & Maintenance

  • πŸ“‹ Weekly security audit (cron: heartbeat:daily Mondays)
  • πŸ“‹ OpenClaw version checks
  • πŸ“‹ Disk usage monitoring (currently 11%)

πŸ› KNOWN ISSUES & BLOCKERS

Issue Severity Status Notes
Service restart after import fix 🟑 Low ⏳ PENDING sudo systemctl restart hoffdesk-api needed
Socrates quarantine loop 🟑 Medium βœ… CLEARED Cleared 2026-04-24, monitoring
Compaction Ghost Bug 🟑 Medium Quarantined Upstream OpenClaw issue β€” use @mentions in group chat
Google service account auth 🟑 Medium BLOCKED invalid_grant: account not found β€” needs Cloud Console check
Template fragmentation 🟒 Low Acknowledged Dashboard vs blog templates in different dirs

πŸ“ KEY DOCUMENTS INDEX

Architecture & Planning

  • shared/project-docs/DOMAIN-ARCHITECTURE.md β€” Domain routing (single source of truth)
  • shared/project-docs/sprint-brief-2026-04-24.md β€” Current sprint
  • shared/project-docs/hoffdesk-web-project.md β€” Master project plan

Family Assistant (Appliance-Ready)

  • shared/project-docs/family-assistant/v1.5/SCOPE.md β€” v1.5 features (Undo, Conflicts, etc.)
  • shared/project-docs/family-assistant-product-roadmap.md β€” Appliance productization proposal
  • workspace-daedalus/review/hoffdesk-agents-review.md β€” Full codebase review
  • workspace-daedalus/review/dha-and-family-review.md β€” DHA + Family review

Handoffs & Coordination

  • shared/project-docs/dashboard/JINJA2-HANDOFF.md β€” Dashboard β†’ Socrates
  • shared/project-docs/auth-handoff-daedalus.md β€” Auth migration notes
  • workspace-socrates/research/subdomain-routing-implementation.md β€” Starlette routing plan

Agent Status

  • workspace-socrates/QUARANTINE-2026-04-23.md β€” Socrates status (CLEARED)
  • ~/.openclaw/openclaw.json β€” Agent configuration

🏠 Appliance Architecture Principles

Direction: Build core product now, structure for future appliance deployment

Principle Current (Cloud) Future (Appliance) Status
LLM Ollama Pro cloud + Gaming PC Local 3B models (M4) Configurable
Data ~/.family_assistant/ DATA_DIR env var πŸ”§ Needed
Embeddings nomic-embed-text on Gaming PC Same, localhost default πŸ”§ Needed
IMAP Primary Primary (webhook optional) πŸ“‹ Planned
Radicale Manual config Bundled zero-setup πŸ“‹ Planned
Multi-tenancy Single-family Single-tenant by box βœ… Aligns
Auth Session cookies LAN-local / passwordless βœ… Aligns

Refactoring Queue (Appliance-Ready)

Task Complexity When
Remove Cloudflare webhook dependency Medium v1.5
Default OLLAMA_EMBED_URL to localhost Low v1.5
Add DATA_DIR env var Low v1.5
Ollama model auto-download Medium Appliance phase
Bundle Radicale config Low Appliance phase
Fix appointment_retry.txt Low v1.5
Refactor pipeline duplication Medium v1.5
Remove hermes.py dual paths Low v1.5

🎯 NEXT ACTIONS (Priority Order)

Immediate (Today)

  1. [Matt] Restart hoffdesk-api.service (sudo systemctl restart hoffdesk-api)
  2. [Wadsworth/Matt] Verify endpoints after restart

This Week

  1. [Socrates] Wire dashboard Jinja2 templates to router
  2. [Socrates] Wire pipeline Phase 2 templates to backend routes
  3. [Socrates] Start appliance-ready refactors (DATA_DIR, localhost defaults)
  4. [Wadsworth] Stock brief β€” await Director inputs

Next Sprint

  1. [Daedalus] Family Assistant v1.5 UI (Undo, Conflicts) β€” appliance-ready tokens
  2. [Socrates] /api/today aggregate endpoint for dashboard
  3. [Socrates] Remove webhook dependency, fix pipeline duplication

πŸ“Š Agent Workload

Agent Current Task Queue Status
Wadsworth πŸ“‹ DNS fix + coordination Stock brief, logging Phase 3 βœ… Available
Socrates 🧠 Host routing deployment Dashboard wiring, pipeline wiring βœ… Cleared, ready
Daedalus 🎨 Stand by for URL audit Family Assistant v1.5, Stock brief UI βœ… Ready (deepseek-v4:cloud active)

This document is the single source of truth. Update it when tasks complete or priorities shift.