Event State Machine β UX Review
Date: 2026-04-29
Status: Draft β needs Matt review
Current States (from test data)
| State | Count | Meaning | User Action |
|---|---|---|---|
| confirmed | 9 | β On the calendar, no action needed | View only |
| pending | 3 | β³ Not fully committed, needs decision | Confirm / Decline / Modify |
| needs_confirmation | 1 | β Someone asked, waiting for response | Yes / No / Counter-propose |
Proposed State Machine
Primary States
[needs_confirmation] ββYesβββΊ [confirmed]
β
βββNoβββΊ [declined]
β
βββCounterβββΊ [pending]
[pending] ββConfirmβββΊ [confirmed]
β
βββDeclineβββΊ [cancelled]
β
βββModifyβββΊ [pending] (updated)
[confirmed] ββCancelβββΊ [cancelled]
β
βββRescheduleβββΊ [pending]
Visual States
| State | Badge | Color | Actions |
|---|---|---|---|
| confirmed | β | Green | Cancel, Reschedule |
| pending | β³ | Yellow | Confirm, Decline, Modify |
| needs_confirmation | β | Orange | Yes, No, Counter |
| declined | β | Gray | (none β hidden by default) |
| cancelled | π« | Red strikethrough | (none β hidden by default) |
Interaction Patterns by Event Type
Calendar Events (auto-extracted from emails)
- confirmed: On Radicale calendar β show "Reschedule" or "Cancel"
- pending: Email found but not on calendar β show "Add to Calendar" or "Ignore"
- cancelled: User removed from calendar β fade out
Coordination Events (from chat, HBM)
- needs_confirmation: "Can you cover Thursday?" β show "Yes / No / Propose Alt"
- confirmed: Both parties agreed β show "Reschedule" or "Cancel"
- pending: Tentatively held, not confirmed β show "Confirm / Release"
Dashboard Interactions
Card-Level Actions
βββββββββββββββββββββββββββββββββββββββββββ
β π
Sullivan Baseball Practice β
β Today 4:30 PM β’ St. Philip's Field β
β β
Confirmed β
β β
β [Reschedule] [Cancel] β
βββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββ
β π£οΈ Costco Run β
β Sat May 02 β’ Aundrea asked β
β β Needs Confirmation β
β β
β [β
Yes] [β No] [π¬ Counter] β
βββββββββββββββββββββββββββββββββββββββββββ
Bulk Actions
- Select multiple β "Confirm All" / "Decline All"
- Swipe on mobile β Quick confirm/decline
Questions for Matt
-
Do we want "declined" and "cancelled" visible, or hidden (archive)?
- Hidden keeps dashboard clean
- Visible provides audit trail -
Should "coordination" events auto-create calendar entries when confirmed?
- Yes: Seamless flow
- No: Keep calendar clean, coordination stays in Event Graph only -
Should pending events expire?
- After 48 hours: auto-decline?
- After 7 days: auto-archive? -
Can Aundrea interact, or Matt-only?
- Aundrea sees but can't modify (read-only)?
- Aundrea can confirm/decline via Telegram bot?
- Full shared access?
Recommended Next Steps
| Priority | Task | Owner |
|---|---|---|
| P0 | Matt reviews this state machine | Matt |
| P1 | Daedalus designs interaction mockups | Daedalus |
| P2 | Socrates wires state transitions (POST endpoints) | Socrates |
| P3 | Test on iPad with real interactions | Matt |
Prepared by Wadsworth π | Awaiting Matt's feedback