From 8819e6a0fbc301609794dae3427507ddb8645956 Mon Sep 17 00:00:00 2001 From: Aram Grigoryan <132480+aram356@users.noreply.github.com> Date: Wed, 26 Aug 2026 22:19:08 -0700 Subject: [PATCH] Fix rollback hint to reference a capture route that exists The run_rollback missing-target error told operators to use `deploy`'s `previous-version` output, but the CLI's production deploy emits only `version=` -- `previous-version` exists only as the deploy-fastly GitHub action's output, captured by running `active-version` before the deploy. An operator following the hint mid-incident found nothing to use. Reword the hint (and the matching --rollback-to doc comment) to name the real capture routes: run `active-version` before deploying, or wire the deploy-fastly action's `previous-version` output. Emitting `previous-version` from the CLI deploy itself was considered and rejected: it would make a pre-deploy Fastly API call mandatory, breaking the documented output-parsing path that works under manifest command overrides with dummy credentials, and a warn-and-continue capture would produce a line scripts cannot rely on. The action layer already captures the target fail-closed at the right place. Closes #350 --- crates/edgezero-cli/src/args.rs | 5 +++-- crates/edgezero-cli/src/lib.rs | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/crates/edgezero-cli/src/args.rs b/crates/edgezero-cli/src/args.rs index ddfdd1b9..63156914 100644 --- a/crates/edgezero-cli/src/args.rs +++ b/crates/edgezero-cli/src/args.rs @@ -381,8 +381,9 @@ pub struct RollbackArgs { /// Production only: the version to re-activate. Fastly exposes no /// metadata to tell a previously-live version from a staged one, so /// the rollback target CANNOT be inferred; it is captured before the - /// deploy that superseded it (see `deploy`'s `previous-version`) and - /// passed here. Required for a production rollback; ignored for staging. + /// deploy that superseded it (`active-version`, or the deploy-fastly + /// action's `previous-version` output) and passed here. Required for + /// a production rollback; ignored for staging. #[arg(long)] pub rollback_to: Option, /// Platform service id to roll back. Required. diff --git a/crates/edgezero-cli/src/lib.rs b/crates/edgezero-cli/src/lib.rs index 3205f87e..a617115b 100644 --- a/crates/edgezero-cli/src/lib.rs +++ b/crates/edgezero-cli/src/lib.rs @@ -516,8 +516,9 @@ pub fn run_rollback(args: &RollbackArgs) -> Result<(), String> { return Err( "a production rollback requires --rollback-to (the version to re-activate). Fastly \ exposes no metadata to infer it, so it must be captured before the deploy that \ - superseded it -- use `deploy`'s `previous-version` output. Pass --staging to \ - deactivate a staged version instead." + superseded it -- run `active-version` before deploying (the deploy-fastly GitHub \ + action does this and exposes it as its `previous-version` output). Pass --staging \ + to deactivate a staged version instead." .to_owned(), ); }