📄 SPEC.md 1,851 bytes Apr 29, 2026 📋 Raw

Build: Conflict Detection & Family Member Tags

Status: 🟡 IN PROGRESS

Problem Statement

Matt rescheduled "Sullivan Dentist Appt" to Sat May 02 — same day as "Family Movie Night" — but no warning appeared. Also, day label didn't update (still showed "Fri May 01").

What We Need

Backend (Socrates)

  1. Person-level conflict detection
    - Events have family_members array (e.g., ["Sullivan"])
    - When event A overlaps with event B, check if any member is in both
    - Return conflict list in API response

  2. Day label auto-recalculation
    - day_label should be computed from start date on every read
    - Not stored statically in JSON

Frontend (Daedalus)

  1. Conflict badge on event cards
    - Shows "⚠️ Double-booked with: [event names]"
    - Different severity: same-person = red, same-day = yellow

  2. Family member tags
    - Small pills showing who's involved: 👤 Sullivan, 👤 Harper, 👤 Aundrea
    - Color-coded by person

Integration Checks

  • [ ] API returns conflicts array with overlapping events
  • [ ] API computes day_label dynamically
  • [ ] Event cards show conflict warnings
  • [ ] Event cards show family member pills
  • [ ] HTMX swap preserves conflict state

File Mapping

Agent File Destination
Socrates backend/event_conflict.py Logic for conflict detection
Socrates backend/router_patch.py Updated /api/events-dashboard endpoint
Daedalus frontend/events.html Updated template with pills + warnings
Daedalus frontend/style_patch.css CSS for pills and conflict badges

Notes

  • Test data needs family_members field added
  • Conflict detection: naive date overlap (same day = potential conflict)
  • Future: time-based overlap, not just date

Build started: 2026-04-29 16:43 UTC