-
Notifications
You must be signed in to change notification settings - Fork 223
!For emergencies
Sino Kholkhojaev edited this page Mar 24, 2026
·
6 revisions
A Critical Site Outage (CSO) is when a production issue is severely impacting users on adobe.com. The goal is to revert the offending change as fast as possible while keeping
Step 1 — Identify the Offending PR
Step 2 — Open a Blocker Jira Ticket
Step 3 — Raise Two PRs (Dual-PR Strategy)
stage and main in sync.Step 1 — Identify the Offending PR
- Check the latest "Stage to Main" release PR on GitHub.
- Identify which PR in that batch caused the issue.
- Use logs, RUM data, or Splunk dashboards to confirm root cause.
Step 2 — Open a Blocker Jira Ticket
- Create a Blocker priority Jira ticket.
- Include: description of the outage, affected pages/features, and the suspected offending PR.
Step 3 — Raise Two PRs (Dual-PR Strategy)
Rule: You must raise two separate PRs — one targetingstage, one targetingmain. They must contain identical changes.
- PR (A) →
stage: - Use the GitHub "Revert" button on the offending PR (creates a clean revert PR).
- If the revert button isn't available, manually create the revert branch off
stage. - PR (B) →
main: - Create a new branch off
main. - Cherry-pick only the revert commit from the stage revert PR.
- Do not merge the entire stage branch — this avoids dragging in untested stage code.
Step 4 — Get Approvals
| PR | Required approvals | Notes |
|---|---|---|
| Stage PR (A) | 2 approvals | At least 1 code owner recommended |
| Main PR (B) | 3 approvals | At least 1 code owner required; only Admins can merge |
Step 5 — Notify in #milo-dev
Post in #milo-dev tagging:
-
@milo-eng(Milo core team) - Milo Admins who can merge to main
- Short CSO description
- Jira CSO ticket link
- Links to both PRs (stage + main)
- Ask admins to be ready to merge main once approvals and QA sign-off are in
Step 6 — Submit the Slack Emergency Workflow (Mandatory)
Submit the "Milo Critical and Exceptional Releases" Slack workflow (see Slack Emergency Workflow for full details). This is a required tracking step.
You can find the Workflow inside of the #milo-dev channel under workflow tabs - QA must respond in the workflow thread and sign off that stage is OK before the Milo team merges to main.
Step 7 — Merge Sequence
- Merge PR (A) to stage using squash merge.
- Validate on stage — QA and impacted teams confirm the fix works.
- Milo Admin merges PR (B) to main.
- Verify on production — impacted team, SOTs, and/or original reporter confirm.
- VP approval is required. Fill in the VP approval field in the Slack workflow.
- Outside of RCP, VP approval is not required — admin + SOT + QA sign-off is sufficient.
This is a Slack Workflow Builder form used to track any Milo code deployment that happens outside the normal automated proccess. This includes:
- CSO/ emergency fixes
- RCP window exceptions
- Scheduled releases that can't go through normal automation
- Go to
#milo-dev(or related Milo channels where the shortcut is available). - find the "Milo Critical and Exceptional Releases" workflow inside of thge "Workflow" tab.
- Start the Workflow.
- Fill in the form.
- The workflow posts a message in #milo-dev with the request summery and PR/Jira links.
-
@milo-eng(Milo-core Team) is automatically notified. - QA must respond in the workflow thread and sing off that stage is OK.
- Once QA sings off, a Milo Admin performs the merge to main.
- This workflow is mandatory for all CSO/emergency merges - it is the official tracking mechanism.
- It does not auto-trigger on label changes or pipeline events - it is always manually submitted by the requester.