No description
Find a file
jedarden 8a8b605a0b ota: implement auto-update with canary strategy and quiet window
Implements Component 6 from the plan - automatic OTA updates with canary
deployment strategy and configurable quiet window scheduling.

Features:
- Canary strategy: updates one node first, monitors detection quality
  for 10 minutes (configurable), then rolls out fleet-wide if quality
  degradation is below threshold (default 5%)
- Quiet window: configurable time range (default 02:00-05:00) when
  auto-updates are allowed. Supports overnight windows (e.g., 22:00-06:00)
- Zone vacancy check: only updates when all zones have been vacant
  for >10 minutes
- Auto-update mode toggle: enable/disable via settings
- REST API endpoints for status, config, trigger, cancel, and history
- Dashboard integration for real-time progress updates

Settings keys:
- auto_update_enabled: bool (default false)
- quiet_window_start: HH:MM format (default "02:00")
- quiet_window_end: HH:MM format (default "05:00")
- canary_duration_min: 5-60 minutes (default 10)
- auto_update_quality_threshold: 0.01-0.5 (default 0.05)

Implementation:
- internal/ota/autoupdate.go: AutoUpdateManager with canary selection,
  monitoring, and fleet rollout
- internal/ota/autoapi.go: REST API handlers
- internal/autoupdate/adapters.go: integration with quality provider,
  node provider, event notifier, zone vacancy checker
- internal/api/settings.go: auto-update settings with validation
- dashboard/js/ota.js: auto-update state tracking

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-05 12:41:39 -04:00
.beads ota: implement auto-update with canary strategy and quiet window 2026-05-05 12:41:39 -04:00
.github/workflows test: add CI benchmark gate for fusion loop timing budget 2026-05-04 06:34:50 -04:00
.marathon ci: set VERSION to 0.1.0 for image build 2026-04-06 08:53:25 -04:00
dashboard ota: implement auto-update with canary strategy and quiet window 2026-05-05 12:41:39 -04:00
docs test: add CI benchmark gate for fusion loop timing budget 2026-05-04 06:34:50 -04:00
firmware feat(provisioning): carry ms_ip in payload for mDNS-less networks 2026-04-24 01:06:05 -04:00
mothership ota: implement auto-update with canary strategy and quiet window 2026-05-05 12:41:39 -04:00
test/acceptance test: implement acceptance scenario integration tests (AS-1 through AS-6) 2026-05-05 07:38:16 -04:00
tests/e2e feat: complete anomaly detection & security mode dashboard UI 2026-04-07 15:50:25 -04:00
.dockerignore feat(deploy): Docker packaging with multi-stage build and compose orchestration 2026-03-26 07:46:15 -04:00
.gitignore Fix ESP-IDF 5.x firmware compilation for ESP32-S3 build 2026-04-14 15:35:03 -04:00
.golangci.yml ci: add golangci-lint static analysis configuration 2026-05-05 02:48:35 -04:00
.needle-predispatch-sha ota: implement auto-update with canary strategy and quiet window 2026-05-05 12:41:39 -04:00
.needle.yaml feat: trigger CI build and verify deployment 2026-04-06 09:54:08 -04:00
API_IMPLEMENTATION_STATUS.md docs: verify REST API implementation completeness 2026-04-09 18:18:42 -04:00
docker-compose.yml feat(deploy): Docker packaging with multi-stage build and compose orchestration 2026-03-26 07:46:15 -04:00
Dockerfile Fix firmware flashing: correct merge binary, seed overwrite, inline flash UI 2026-04-15 15:41:51 -04:00
fix_ble_handlers.py feat: implement spatial quick actions with follow camera 2026-04-09 22:54:36 -04:00
go.work test: implement acceptance scenario integration tests (AS-1 through AS-6) 2026-05-05 05:45:15 -04:00
PROGRESS.md docs: mark Phase 8 and Phase 9 COMPLETE — all 9 phases of Spaxel implementation done 2026-04-15 19:18:53 -04:00
VERSION ci: auto-bump version to 0.1.311 2026-05-05 16:27:54 +00:00