End-to-end rollback test harness against a real Fly.io app
Summary
The rollback path (medic, src/adapters/fly/runner.ts) exists for Fly.io but has never been tested against a real Fly app deployed by a previous Convoy apply. Scripted rollback mode uses canned data. Documented in PENDINGS.md (Critical, item 3) — "until then, the rollback is an educated guess."
What to do
- Build a test harness that:
- Deploys a real Fly app via Convoy
- Injects a failure (e.g., bad release / crash)
- Runs the rollback path end-to-end
- Verifies the app is restored to the previous known-good release
- Can be gated behind an env flag / opt-in so CI stays hermetic.
Why it matters
Rollback is the last line of defense for a deploy agent. An untested rollback can fail exactly when a deploy goes wrong — the highest-stakes moment in the product.
Acceptance criteria
End-to-end rollback test harness against a real Fly.io app
Summary
The rollback path (
medic,src/adapters/fly/runner.ts) exists for Fly.io but has never been tested against a real Fly app deployed by a previous Convoy apply. Scripted rollback mode uses canned data. Documented inPENDINGS.md(Critical, item 3) — "until then, the rollback is an educated guess."What to do
Why it matters
Rollback is the last line of defense for a deploy agent. An untested rollback can fail exactly when a deploy goes wrong — the highest-stakes moment in the product.
Acceptance criteria
docs/or the test README)