Skip to content

Release v0.8.0

Latest

Choose a tag to compare

@github-actions github-actions released this 26 Apr 01:30

raspi-sentinel v0.8.0

Released: 2026-04-26

Highlights

  • Contract surfaces hardened:
    • stats.json now includes stats_schema_version
    • state.json now includes state_schema_version
    • compatibility fixtures added under tests/fixtures/contracts/
    • contract docs/schemas added (docs/output-contract.md, docs/schemas/*.schema.json)
  • New operator CLI surfaces:
    • doctor command for preflight/environment checks
    • explain-state command for persisted state diagnostics
  • Recovery policy tightening:
    • reboot now requires policy_reason allowlist membership
    • network-only reasons are excluded from reboot allowlist
  • Config and example hardening:
    • profile-based examples added (production, lightweight-pi, no-discord, tmpfs-tiered)
    • validate-config --strict warning policy strengthened
  • Dry-run and install onboarding:
    • dry-run-only Docker profile (docker/Dockerfile.dryrun)
    • simplified install flow guidance including pipx

Additional hardening in this release cycle

  • State durability and recovery cleanup:
    • _quarantine_corrupt_state now stops when timestamp candidate slots are exhausted
    • removed legacy semantic_clock_* failure-only reboot branch in recovery
  • Controlled deployment helper for Pi Zero host:
    • added scripts/deploy_pi5_guard.py with staged preflight/verify/switch/rollback flow
    • includes post-deploy health gate (validate-config, dry-run/live run-once --json)
  • Checks package cleanup:
    • removed underscore compatibility aliases in checks.__init__
    • branch tests import helper functions from owning modules
  • Diagnostics clarity:
    • doctor now exposes network_only_failures_excluded_from_reboot
    • doctor reads last_run_stats_schema_version and warns for future schema versions
  • Regression coverage added for:
    • tmpfs-requirement warning path
    • schema-forward warning paths
    • corrupt-state quarantine slot exhaustion
    • checks monkeypatch isolation across sequential runs

Verification Summary

  • Verified with full test suite (pytest -q) and static checks (ruff, mypy).
  • Applied and smoke-checked in deployment environment with:
    • validate-config
    • run-once --json (dry-run and non-dry-run)
  • Result: successful validation and healthy cycle outputs.

Full changelog: v0.7.1...v0.8.0