← Workflows

阅读中文版本

Hotfix Release Workflow Under Time Pressure

Ship an urgent fix through a compressed path that keeps the non-negotiables: minimal diff review, one smoke run, and forward-port to main.

intermediate~15 minreleaseincidentprocess

Objective

Deliver a critical fix in hours without abandoning review, verification, or the guarantee that main inherits the fix.

Environment

  • A production incident or critical bug with business impact
  • Authority to trigger the hotfix path
  • The on-call release engineer and one reviewer available

Steps

1. Qualify the urgency

Confirm the issue meets the hotfix bar (production impact, no workaround) and name the incident or ticket that authorizes the compressed path.

Expected state: A named authorization exists; wish-it-were-faster does not qualify.

2. Write the minimal diff

Constrain the fix to the smallest change that resolves the issue, explicitly deferring cleanups and adjacent improvements.

Expected state: The diff touches only what the failure requires, typically under 50 lines including tests.

3. Run the compressed gates

Execute the targeted test suite for the affected area, one full smoke run, and a security check if the fix touches auth or input handling.

Expected state: The three gates pass on the hotfix branch and are recorded with run IDs.

4. One review, focused

Require a single senior review focused on blast radius and rollback safety rather than style, with explicit approval of the rollback plan.

Expected state: The review approves both the diff and the rollback steps in the same pass.

5. Ship, verify, forward-port

Deploy, verify the fix in production against the incident metric, then cherry-pick the fix to main immediately with a link to the hotfix record.

Expected state: Production metric recovers, and main contains the fix within hours, not weeks.

Decision points

Deploy straight to production or through staging first?

  • Straight with smoke after
  • Staging pass first

Straight when the incident metric is bleeding and rollback is cheap; staging pass when the blast radius is unclear.

One reviewer or two under time pressure?

  • One senior
  • Two as normal

One senior reviewer focused on rollback safety; two reviews is a luxury that urgency genuinely cannot afford.

Expected outcome

A hotfix that reaches production in hours with its essential gates intact, and a main branch that never permanently diverges from what production runs.

Verification

The incident metric shows recovery; the hotfix record lists the three gate run IDs; git log on main shows the forward-ported commit referencing the hotfix.

Urgency compresses the path, never the guarantees

Hotfix processes fail in two opposite ways: treating every rush as an emergency, or abandoning all checks when one arrives. The workflow keeps three non-negotiables and compresses everything else, so speed comes from scope discipline rather than from skipping safety.

hotfix-2026-10-22-01  (auth timeout regression)
  authorization: INC-2841 (sev1)
  diff:         31 lines (12 code, 19 test)
  gates:
    targeted suite   run #4912  PASS  (28 tests)
    full smoke       run #4913  PASS  (14 endpoints)
    security check   PASS      (touch: auth input)
  review:        senior@eng, rollback approved
  deploy:        16:41Z  rollback: redeploy v1.7.3 tag
  metric:        auth success 71% -> 99.2% (17 min)
  forward-port:  main 7ab9e2 (17:05Z)

The authorization names the emergency

A hotfix path triggered by impatience erodes the process for the next real emergency. Requiring a named incident or business authorization keeps the compressed path rare enough to stay sharp, and creates the audit trail that distinguishes urgency from preference.

Forward-porting is the debt payment

The classic hotfix failure is the fix that lives only on the hotfix branch: production drifts from main, and the next release resurrects the bug. Cherry-picking to main immediately, with the incident link, is what keeps the hotfix from becoming permanent divergence.