[object Object]

← back to Dw Boardroom Governance

Fix meeting phase auto-advance to use per-phase durations instead of a fixed 120s

a6dac820ae5b57ddb596eed0f129c500e40be13c · 2026-05-18 20:16:44 -0700 · Steve Abrams

Files touched

Diff

commit a6dac820ae5b57ddb596eed0f129c500e40be13c
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Mon May 18 20:16:44 2026 -0700

    Fix meeting phase auto-advance to use per-phase durations instead of a fixed 120s
---
 src/engine/meetingEngine.ts | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/engine/meetingEngine.ts b/src/engine/meetingEngine.ts
index 8ba1d9b..a682e79 100644
--- a/src/engine/meetingEngine.ts
+++ b/src/engine/meetingEngine.ts
@@ -71,7 +71,7 @@ export async function startMeeting(meetingType: string, agendaItems?: AgendaItem
   console.log(`[Meeting] Started ${meetingType} meeting: ${id}`);
 
   // Start auto-advance timer
-  schedulePhaseAdvance(id);
+  schedulePhaseAdvance(id, 'caucus');
 
   return (await queryOne<Meeting>('SELECT * FROM gov_meetings WHERE id = $1', [id]))!;
 }
@@ -100,7 +100,7 @@ export async function advancePhase(meetingId: string): Promise<MeetingPhase | nu
   console.log(`[Meeting] ${meetingId} → ${nextPhase}`);
 
   // Schedule next advance
-  schedulePhaseAdvance(meetingId);
+  schedulePhaseAdvance(meetingId, nextPhase);
 
   return nextPhase;
 }
@@ -163,10 +163,11 @@ export async function addMessage(
   broadcast('meeting_message', { meetingId, agentId, agentName, message, messageType });
 }
 
-function schedulePhaseAdvance(meetingId: string): void {
+function schedulePhaseAdvance(meetingId: string, phase: string): void {
   if (phaseTimer) clearTimeout(phaseTimer);
 
-  // Auto-advance after phase duration
+  // Auto-advance after this phase's configured duration
+  const duration = PHASE_DURATION_MS[phase] || 120_000;
   phaseTimer = setTimeout(async () => {
     try {
       const meeting = await queryOne<Meeting>('SELECT * FROM gov_meetings WHERE id = $1', [meetingId]);
@@ -176,7 +177,7 @@ function schedulePhaseAdvance(meetingId: string): void {
     } catch (err: any) {
       console.error('[Meeting] Auto-advance error:', err.message);
     }
-  }, PHASE_DURATION_MS['current_business'] || 120_000);
+  }, duration);
 }
 
 function formatPhase(phase: string): string {

← 1e62bab initial scaffold (gitify-all 2026-05-06)  ·  back to Dw Boardroom Governance  ·  Harden basic-auth middleware: timing-safe compare, malformed 79f893e →