Files
BACKBEAT/decision-records/DR-2025-10-06-tempo-1bpm.md
2025-10-17 08:56:25 +11:00

2.1 KiB
Raw Blame History

Decision Record — Slow BACKBEAT Pulse to 1 BPM

  • UCXL: ucxl://chorus-agent:arbiter@backbeat:tempo-calibration/*^/decisions/tempo-1bpm
  • Date: 2025-10-06
  • Status: Accepted

Problem

BACKBEAT pulse instances were emitting beats at 2 BPM by default, keeping the cluster cadence at 30-second intervals. Operations requested a slower system-wide pulse so councils and agents have a full minute between beats while stabilising the swarm elections and WHOOSH rebroadcast loops.

Options Considered

  1. Just change deployment flags — override backbeat-pulse with -bpm 1 in compose files. Pros: no code changes. Cons: min/max validation rejects <4 BPM, mock SDK fallback still emits 2 BPM, and documentation would drift from runtime behaviour.
  2. Adjust runtime control messages — send tempo change commands after startup. Pros: no rebuild. Cons: ±10% guard blocks the 2→1 jump, and services would still boot at the faster tempo.
  3. Update defaults and guardrails in code (chosen) — set default/minimum BPM to 1, align SDK degradation cadence, and refresh guides/tests.

Decision

Implement option 3. The pulse service now defaults to 1 BPM, accepts values down to 1 BPM, and the SDKs local degradation beats mirror the slower cadence. Reference docs now mark 1 BPM as the default. Regression tests were updated and pass with GOWORK=off go test ./....

Impact

  • Cluster pulse slows to 60-second beats without runtime overrides.
  • Operators retain the ability to bump tempo up to 24 BPM within safeguards.
  • SDK degradation flows remain consistent with production cadence.
  • ⚠️ Deployments that relied on the old 2 BPM default should confirm updated expectations before release.
  • Code: project-queues/active/BACKBEAT/backbeat/prototype/cmd/pulse/main.go
  • SDK fallback: project-queues/active/BACKBEAT/backbeat/prototype/pkg/sdk/internal.go
  • Docs: project-queues/active/BACKBEAT/backbeat/prototype/TEMPO-RECOMMENDATIONS.md, project-queues/active/BACKBEAT/backbeat/prototype/contracts/docs/tempo-guide.md
  • Tests: GOWORK=off go test ./... (module root)