fix(deploy): reconcile device plane foundation

This commit is contained in:
Codex
2026-07-25 23:11:14 +03:00
parent 1102e25e6e
commit aca47c6143
8 changed files with 1692 additions and 15 deletions
+23
View File
@@ -476,6 +476,29 @@ node infra/deploy-runner/build-device-plane-artifact.mjs \
Any failed first activation removes only candidate Core/Gateway containers,
never volumes, restores the source overlay and retains PostgreSQL state.
The rollback baseline is taken from an explicit pre-apply Docker service
inventory stored as `runtime-before.json` in the backup. The presence of the
shared Compose file never implies that Core or Gateway existed before apply.
The exact `device-plane-foundation-20260725-001` failed activation is recovered
only through the registered
`deployment/device-plane-foundation-recovery-v1.json` transition. Its artifact
must reproduce the failed foundation source byte-for-byte. The runner validates
the exact failed archive, journal, backup partition, partial live source and
healthy observed Core/Gateway/PostgreSQL generations. Recovery publishes source
and performs read-only runtime acceptance; it does not build, recreate, restart
or remove containers. A failed recovery restores source only and leaves runtime
unchanged.
Build and test that incident-specific deterministic recovery artifact:
```bash
python3 -m unittest -v \
infra.deploy-runner.test_device_plane_foundation_recovery_artifact
node infra/deploy-runner/build-device-plane-foundation-recovery-artifact.mjs \
device-plane-foundation-recovery-20260725-002
```
After the runner is promoted and freshly verified, bootstrap the durable
prerequisite with a separate artifact before planning the application: