mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-02-18 00:17:39 +01:00
2.7 KiB
2.7 KiB
Migration & Rollout Scaffolding
This document tracks temporary code paths, feature flags, and kill switches that let us roll out risky changes safely. Keep it current so on-call engineers know how to disable new behavior without spelunking through the codebase.
How to Use This Document
- Add an entry whenever you introduce code that needs a manual cleanup window (feature flags, compatibility layers, installers with rollback paths).
- State the kill switch (environment variable, UI toggle, config file, or systemd override) and who owns the rollout.
- Define removal criteria. Once criteria are met, delete the scaffolding and update this file.
Entry Template
## <Feature / Migration Name>
- Introduced: vX.Y.Z (date/commit, if known)
- Owner: <team/person>
- Kill switch: how to disable + default state
- Monitoring: metrics/logs to watch
- Cleanup criteria: what must be true before removing scaffolding
- Notes: cross-links to docs or runbooks
Active Scaffolding
Adaptive Polling Scheduler
- Introduced: v4.24.0 (documented in
docs/monitoring/ADAPTIVE_POLLING.md) - Owner: Monitoring subsystem (rcourtman)
- Kill switch: Toggle Settings → System → Monitoring → Adaptive
Polling, or set
ADAPTIVE_POLLING_ENABLED=falsebefore starting Pulse (Docker/Kubernetes). Helm users can overrideadaptivePollingEnabled: false. - Monitoring:
pulse_monitor_poll_queue_depth,pulse_monitor_poll_staleness_seconds, and/api/monitoring/scheduler/healthfor breaker/dead-letter status. - Cleanup criteria: Remove flag and legacy scheduler code after three stable
releases with
queue.depth < 50during peak hours and no dead-letter growth. - Notes: Operational guidance lives in
docs/operations/ADAPTIVE_POLLING_ROLLOUT.md.
Automatic Updates Service
- Introduced: commit
f46ff1792(2025-10-11) addedscripts/pulse-auto-update.sh - Owner: Installer/Update subsystem (rcourtman)
- Kill switch: Disable Settings → System → Updates → Automatic Updates or
set
AUTO_UPDATE_ENABLED=falsein/var/lib/pulse/system.json. Installers accept--no-auto-updateto force the flag off. - Monitoring:
journalctl -u pulse-update.service, UI update history (Settings → System → Updates), and webhook notifications tagged withevent_id=system.update. - Cleanup criteria: Remove legacy opt-out plumbing once the opt-in rate is ≥90 % across supported installers and we have at least two release cycles with zero rollback events triggered by auto-update.
- Notes: Keep release-specific caveats in
docs/RELEASE_NOTES.md. The update scheduler runs only on systemd installs; container builds ignore the flag.