Files
BACKBEAT/TEMPO-RECOMMENDATIONS.md
2025-10-17 08:56:25 +11:00

4.1 KiB

BACKBEAT Tempo Recommendations

Why Slower Beats Make Sense for Distributed Systems

Unlike musical BPM (120+ beats per minute), distributed task coordination works better with much slower tempos. Here's why:

Development & Testing: 1-2 BPM

  • 1 BPM = 60-second beats (1 minute per beat)
  • 2 BPM = 30-second beats (30 seconds per beat)
  • Perfect for debugging and observing system behavior
  • Plenty of time to see what agents are doing within each beat

Production: 5-12 BPM

  • 5 BPM = 12-second beats
  • 12 BPM = 5-second beats
  • Good balance between responsiveness and coordination overhead
  • Reasonable for most distributed task processing

High-Frequency (Special Cases): 30-60 BPM

  • 30 BPM = 2-second beats
  • 60 BPM = 1-second beats
  • Only for very short-duration tasks
  • High coordination overhead

Window Sizing Examples

With 2 BPM (30-second beats) and 4 beats per window:

  • Each window = 2 minutes
  • Downbeats every 2 minutes for secret rotation, rollups, reviews
  • Agents report status every 30 seconds
  • Reasonable time for meaningful work between status updates

With 12 BPM (5-second beats) and 8 beats per window:

  • Each window = 40 seconds
  • Downbeats every 40 seconds
  • Agents report every 5 seconds
  • More responsive but higher coordination overhead

Why Not 120+ BPM?

120 BPM = 500ms beats - This is far too fast because:

  • Agents would report status twice per second
  • No time for meaningful work between beats
  • Network latency (50-100ms) becomes significant fraction of beat time
  • High coordination overhead drowns out actual work
  • Human operators can't observe or debug system behavior

Beat Budget Examples

With 2 BPM (30-second beats):

  • withBeatBudget(4, task) = 2-minute timeout
  • withBeatBudget(10, task) = 5-minute timeout
  • Natural timeout periods that make sense for real tasks

With 120 BPM (0.5-second beats):

  • withBeatBudget(10, task) = 5-second timeout
  • Most meaningful tasks would need budget of 100+ beats
  • Defeats the purpose of beat-based timeouts

BACKBEAT Default Settings

Current Defaults (Updated):

  • Pulse service: 1 BPM (60-second beats)
  • Window size: 8 beats = 4 minutes per window
  • Min BPM: 1 (60-second beats for debugging)
  • Max BPM: 24 (2.5-second beats for high-frequency systems)

Configuration Examples:

# Development - very slow for debugging
./pulse -bpm 1 -bar 4    # 60s beats, 4min windows

# Production - balanced 
./pulse -bpm 5 -bar 6    # 12s beats, 72s windows

# High-frequency - only if needed
./pulse -bpm 24 -bar 10  # ~2.5s beats, 25s windows

Integration with CHORUS Agents

When CHORUS agents become BACKBEAT-aware, they'll report status on each beat:

With 2 BPM (30s beats):

T+0s:   Agent starts task, reports "executing", 10 beats remaining
T+30s:  Beat 1 - reports "executing", 9 beats remaining, 20% progress
T+60s:  Beat 2 - reports "executing", 8 beats remaining, 40% progress
T+90s:  Beat 3 - reports "review", 0 beats remaining, 100% progress
T+120s: Downbeat - window closes, reverb generates BarReport

With 120 BPM (0.5s beats) - NOT RECOMMENDED:

T+0.0s: Agent starts task, reports "executing", 600 beats remaining  
T+0.5s: Beat 1 - barely any progress to report
T+1.0s: Beat 2 - still barely any progress
... (598 more rapid-fire status updates)
T+300s: Finally done, but coordination overhead was massive

Performance Impact

Slower beats (1-12 BPM):

  • Meaningful status updates
  • Human-observable behavior
  • Reasonable coordination overhead
  • Network jitter tolerance
  • Debugging friendly

Faster beats (60+ BPM):

  • Status spam with little information
  • High coordination overhead
  • Network jitter becomes significant
  • Impossible to debug or observe
  • Most real tasks need huge beat budgets

Conclusion

BACKBEAT is designed for distributed task coordination, not musical timing. Slower beats (1-12 BPM) provide the right balance of coordination and efficiency for real distributed work.

The updated defaults (2 BPM, 8 beats/window) give a solid foundation that works well for both development and production use cases.