Implements #55 under parent #53. Adds checksummed immutable promotion/rollback, automatic rollback gates, mobile staging smoke, hardened systemd/Caddy templates, and operator runbook. No live service, Caddy, user, or /etc change is included.
Local receipts: Python deployment tests 13/13, Node suite 66/66, staging smoke passed, syntax/diff checks passed, dependency audit 0 vulnerabilities, disposable Caddy validation passed, systemd template validation passed with local Node-path substitution.
Implements #55 under parent #53. Adds checksummed immutable promotion/rollback, automatic rollback gates, mobile staging smoke, hardened systemd/Caddy templates, and operator runbook. No live service, Caddy, user, or `/etc` change is included.
Local receipts: Python deployment tests 13/13, Node suite 66/66, staging smoke passed, syntax/diff checks passed, dependency audit 0 vulnerabilities, disposable Caddy validation passed, systemd template validation passed with local Node-path substitution.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Implements #55 under parent #53. Adds checksummed immutable promotion/rollback, automatic rollback gates, mobile staging smoke, hardened systemd/Caddy templates, and operator runbook. No live service, Caddy, user, or
/etcchange is included.Local receipts: Python deployment tests 13/13, Node suite 66/66, staging smoke passed, syntax/diff checks passed, dependency audit 0 vulnerabilities, disposable Caddy validation passed, systemd template validation passed with local Node-path substitution.
d576a74b96tof8f01c4b2e