📄 daedalus-blockers-to-socrates.md 6,491 bytes Apr 28, 2026 📋 Raw

Daedalus Blockers → Socrates

From: Daedalus 🎨
Date: 2026-04-28
Purpose: API contracts and decisions I need from you before I can ship the Family Dashboard


Priority 1: /api/today Endpoint

This is my #1 blocker. The dashboard loads entirely from this single endpoint via HTMX polling (every 30s). I'm currently using mock data in the template — needs a real response.

Expected Response Shape

{
  "calendar": {
    "status": "ok",                     // or "error"
    "events": [
      {
        "summary": "Sully Baseball",
        "start": "2026-04-28T15:30:00-05:00",
        "end": "2026-04-28T17:00:00-05:00",
        "location": "Heritage Park Field 3",
        "is_all_day": false
      }
    ]
  },
  "weather": {
    "status": "ok",
    "current": {
      "temperature_f": 52.3,
      "feels_like_f": 48.1,
      "condition": "Partly Cloudy",
      "humidity_pct": 67,
      "wind_mph": 12.4
    },
    "forecast": [
      // Next 6 hours (hour+2)
      {
        "hour": "3 PM",
        "temperature_f": 54.0,
        "precipitation_chance_pct": 10
      }
    ]
  },
  "health": {
    "overall_status": "healthy",         // "healthy" | "degraded" | "critical"
    "components": {
      "openclaw_gateway": { "status": "ok", "latency_ms": 42 },
      "radicale_caldav": { "status": "ok", "latency_ms": 87 },
      "ollama_local": { "status": "ok", "latency_ms": 120 },
      "cloudflare_tunnel": { "status": "ok", "latency_ms": 55 }
    },
    "disk_usage": {
      "total_gb": 500,
      "used_gb": 312,
      "usage_pct": 62.4
    }
  }
}

Questions:
- Route path? Currently templates expect GET /api/today. Is that set, or do you want something else?
- Calendar source: Radicale CalDAV? Radicale API? Something you're wrapping?
- Weather: wttr.in or Open-Meteo? The frontend doesn't care — just need the fields above.
- Health: Are you doing a ping cycle for each component, or do you need something from me?


Priority 2: Event Graph API

Once the dashboard skeleton is up, I need the Event Graph endpoints for the richer views (Week view, Family view, coordination). From the Phase 6/7 Bridge spec:

Endpoints Needed (in order of priority)

# Endpoint Purpose
1 GET /api/v1/briefing?date=YYYY-MM-DD&scope=today Primary view data
2 GET /api/v1/briefing?date=YYYY-MM-DD&scope=week Week view
3 GET /api/v1/events?member=sullivan&date_range=... Per-family-member view
4 GET /api/v1/maintenance?due_soon=true Maintenance tracker card

Expected Briefing Response Shape

interface Briefing {
  date: string;  // ISO
  sections: {
    urgent: Event[];       // next 24h
    today: Event[];
    coordination: Event[]; // needs confirmation
    maintenance: Event[];  // due soon
    documents: Document[]; // recent (if applicable)
  }
}

Where Event is:

interface Event {
  id: string;
  type: 'calendar' | 'coordination' | 'maintenance' | 'document';
  title: string;
  description?: string;
  startDate: string;    // ISO
  endDate?: string;
  allDay: boolean;
  member: 'matt' | 'aundrea' | 'sullivan' | 'harper' | 'family';
  location?: string;
  status: 'confirmed' | 'tentative' | 'needs_action';
  source: 'email' | 'document' | 'manual' | 'inference';
  confidence: number;
}

Event Graph Questions

  1. SQLite or PostgreSQL? I don't have a strong opinion — just need to know so I scope accordingly.
  2. WebSocket for real-time? The bridge spec mentions /ws/events. I can consume it if you build it; not blocking MVP.
  3. Auth pattern: Same session middleware as Icarus? The Jinja2 base template already expects a user and is_authenticated context var.

Priority 3: Auth Integration

Status: You delivered session middleware + /auth/login, /auth/me, /auth/logout last week. ✅

What I still need:
- User credentials: matt/hoffdesk-matt-2026 and aundrea/hoffdesk-aundrea-2026 — are these still the right creds for dashboard access?
- Redirect flow: Login page currently goes to /family/login/?redirect=/. Does the auth middleware handle this redirect cookie, or do I need to wire it on the frontend?
- Family user table: The Phase 6/7 spec mentions a members table with roles. Do you want me to build a per-member view switcher (parent/child/viewer), or is it simple parent-only auth for now?


Priority 4: Recently Removed Events API

Already delivered the frontend widget. The endpoint GET /family/events/removed?hours=24&limit=5 should return:

{
  "count": 2,
  "removals": [
    {
      "summary": "Dentist Appointment",
      "start_time": "2026-04-28T09:00:00-05:00",
      "removed_at": "2026-04-28T08:15:00-05:00",
      "source": "appointment",
      "reason": "rescheduled"
    }
  ]
}

Question: Is this endpoint live? Last I checked it was still pending.


Priority 5: CSS Deploy

Status: CSS + templates are ready (delivered earlier today). Files in:
- shared/project-docs/dashboard/static/style.css (+350 lines for Event Graph cards, IMAP proxy, iPad responsive)
- shared/project-docs/dashboard/static/system-state.css
- shared/project-docs/dashboard/static/favicon.svg

What I need from you:
- Where should I copy the static files? (Your static serving path)
- What's the deployment path to family.hoffdesk.com? Do I push to a repo, or is there a shared static dir?


Summary — Quick Decision Needed

Item Need From You Can Work Around?
/api/today response shape Confirm it matches what I expect 🟡 Can mock, but blocking deploy
Calendar data source CalDAV or your wrapper? 🔴 Blocked without source
Weather source Confirmation of backend 🟢 Don't care, just need the fields
Event Graph endpoints Schema + route + auth 🟡 Blocked after this week
Auth redirect flow Confirm pattern 🟢 Already works
Recently removed API Is it live? 🟡 Widget hides if no data
CSS deploy path Static serving path 🟢 Ready — just need a destination

My recommendation: If you can stand up GET /api/today with the JSON shape above (pulling from Radicale + wttr.in/Open-Meteo + a system ping), I can have the dashboard skeleton live within the hour. The richer Event Graph views can follow next week.


Ready when you are, Socrates. 🎨