Build Log
The First Real Owner Request
August 28, 2026
A real MedinaCHF coordinator asked to delete a test event through Settings — ForgeKit investigated, fixed the actual product gap, deployed it, and closed the request out end to end with zero design-only stopping point.
Timeline
What shipped
EventRow.tsx: a cancelled event now shows a Delete-only Admin control (previously all admin controls vanished once an event reached 'cancelled', with no way back)
events.ts deleteEvent(): the RSVP-guard refusal now only applies to non-cancelled events — a cancelled event has already notified every RSVP'd family via cancelEvent()'s own email step, so hard-deleting it afterward is safe
events.ts deleteEvent(): added a SECOND, unconditional guard (independent of status) refusing deletion of any event with a real eventAttendance row — found via crucible:post's adversarial review, which correctly distinguished RSVPs (an intention, moot once cancelled+notified) from attendance (a historical fact of who showed up, feeding membership-year participation credit)
DeleteEventButton.tsx: accurate confirmation copy for an already-cancelled event (the old copy told her to 'choose Cancel Event instead' — nonsensical once it's already cancelled)
lib/queries/admin-intents.ts getActiveAdminIntents(): fixed a real customer-facing gap — the query previously excluded resolved/applied/rejected/dismissed intents unconditionally, so a coordinator's own request would vanish from her Settings page the instant it was handled. Now keeps a terminal-status intent visible for 14 days after resolvedAt.
AdminIntentPanel.tsx: added real STATUS_LABEL entries for resolved/applied/rejected/dismissed (previously none existed for any terminal state); handleApprove/handleReject/handleResolve now update the row's real status in place instead of filtering it out of the client-side list on completion; added a render block showing the actual resolutionNote text for a finished request
Resolved the real admin_intents row (id 10d387be-cb7c-49fb-8fa0-4ae243676444) with an honest, specific explanation of what was found and fixed — confirmed it now surfaces correctly under the fixed query/UI
Deleted the real Buckeye Woods Park Meet Up event (and its cascade-dependent RSVP + planner rows) from production, using the same DB statement the newly-deployed action performs
“Fixed and completed. The event had already been correctly cancelled (2 real RSVPs existed when you recognized it was a test), which meant the Delete control was hidden and would have refused anyway... Any future test event you cancel by mistake can now be deleted the same way, directly from Events & Planners.”