Fix Summary β Organizer workflows & lifecycle automation (Epic 5)
Fixed: 2026-03-09
Changes made
-
M1: Changed β9 Statesβ β β8 Statesβ throughout (header, workflow diagram, table). Removed
AGENDA_FINALIZEDfrom the state machine diagram (CREATED β β¦ β AGENDA_PUBLISHED β EVENT_LIVE β EVENT_COMPLETED β ARCHIVED). Updated story mapping table: Story 5.1a βAll 9 statesβ β βAll 8 statesβ; Story 5.8 event states column no longer listsAGENDA_FINALIZED. Updated task template triggers fromAGENDA_FINALIZEDβAGENDA_PUBLISHEDfor Newsletter: Final and Catering templates (since the state no longer exists). Added explanatory note in Story 5.11 Workflow Engine Integration thatAGENDA_FINALIZEDwas removed. -
M2: State transitions updated β removed
AGENDA_PUBLISHED β AGENDA_FINALIZED: Manualline; changedAGENDA_FINALIZED β EVENT_LIVE: Automatic (event day)toAGENDA_PUBLISHED β EVENT_LIVE: Automatic (on event day, via scheduler). -
M3: Speaker workflow diagram redrawn to remove the parallel
slot_assignedbranch.slot_assignedremoved from Key States list.confirmeddescription updated to: βAuto-confirmed whenQUALITY_REVIEWEDANDsession.startTimeis set (slot assignment setssession.startTime, not speaker pool status).β Story 5.5 parallel workflow AC16-17 updated accordingly. Story 5.7 table entry speaker states column changed fromslot_assignedto-. Implementation checklist line updated. -
M4:
EVENT_LIVE β EVENT_COMPLETEDchanged from βManual (after event)β to βAutomatic β triggered when all completeable sessions (keynote, presentation, workshop, panel_discussion) are ended via the Watch feature. Break, lunch, and networking sessions are excluded.β -
M5: Story 5.2 AC13 initial speaker status changed from
"OPEN" (not yet contacted)to"IDENTIFIED" (added to pool, not yet contacted). Speaker Key States list already saysidentifiedas initial; added clarification(initial status). -
M6: All speaker auto-publish β1 monthβ references changed to β30 daysβ: Story 5.10 user story, Phase 2 acceptance criteria (AC2, AC6), Scheduled Jobs AC14, Scheduled Tasks AC18, Definition of Done, Story 5.12 Template 2 description.
-
N1:
AGENDA_PUBLISHED β EVENT_LIVEscheduler note already covered by M2 fix in the state transitions section. -
N2:
EVENT_COMPLETEDautomatic trigger details with session type specifics covered by M4 fix in the state transitions section. -
N3: Added
GET /api/v1/events/current β Two-Phase Selection Algorithmsection between Story 5.10 and Story 5.11 documenting: Phase 1 (nearest upcoming event withcurrentPublishedPhase IS NOT NULL), Phase 2 fallback (most recentEVENT_COMPLETEDwithin 14 days), 404 if older than 14 days, and thecurrentPublishedPhase = nullexclusion rule. -
N4 + N5: Added
Task Lifecyclenote to the Task System (Configurable) section documenting: pending β todo lifecycle on triggerState, idempotent creation, and that completion recordscompletedByUsername,completedDate, and optional notes. -
N6: Added to Story 5.8 Overflow Detection AC1: βThe overflow check (
checkForOverflow) counts bothACCEPTEDandCONFIRMEDspeakers together against the eventβs maximum slot count.β -
N7: Added DECLINED note to Speaker Workflow Key States: βA speaker can transition to
DECLINEDfrom any non-terminal state (includingCONFIRMED). OnceDECLINED, no further transitions are possible.β
Skipped β needs manual decision
-
U1:
INVITEDstate present inStatusTransitionValidatorTestbut not documented β the doc explains whenIDENTIFIEDis used (initial pool state) but not when/how a speaker transitions toINVITEDvsIDENTIFIEDin the organizer workflow path. No test forIDENTIFIED β INVITEDin organizer context. Needs a test or explicit documentation of theINVITEDstateβs role in the organizer-driven flow. -
U2: Story 5.7 AC threshold validation β
SPEAKER_IDENTIFICATION β SLOT_ASSIGNMENTthreshold test only checks βat least 1 ACCEPTEDβ speaker, not the per-event-type minimums (full-day: 6, afternoon: 6, evening: 3) documented in Story 5.7 AC1. Needs end-to-end test for the per-type minimums, or doc should be downgraded to reflect the weaker validation. -
U3:
WITHDREW β ACCEPTEDre-acceptance path β the implementation allows this (SpeakerWorkflowServiceIntegrationTest#should_allowReAcceptanceFromWithdrew) but the doc does not mention it. Low risk but could be added to the speaker workflow Key States as a recovery path note. -
U4: Story 5.14 catering task due date = β1 month before eventβ β no scheduler test asserts the 30-day offset for the catering template specifically. Default templates are seeded in DB migration; their due dates are not asserted in tests. β1 monthβ wording retained in Story 5.14 as the user-facing description; actual offset to be verified against DB migration or confirmed with a dedicated test.