flowchart TB
s(["Alert: order submit p99 > 900 ms<br/>for 5 min"])
s --> c1["1. Confirm scope<br/><i>one region or global?</i>"]
c1 --> q1{"Global?"}
q1 -->|"no"| a1["2a. Check that region's<br/>dependency health"]
q1 -->|"yes"| a2["2b. Check shared dependencies:<br/>DB, cache, identity"]
a1 --> q2{"Region-local cause?"}
q2 -->|"yes"| m1["3. Shift traffic away<br/><i>runbook OPS-04</i>"]
q2 -->|"no"| a2
a2 --> q3{"DB CPU > 80%<br/>or replication lag > 10s?"}
q3 -->|"yes"| m2["4. Enable read-path cache bypass=off<br/>+ raise connection limit<br/><i>flag: cache.aggressive</i>"]
q3 -->|"no"| q4{"Recent deploy<br/>in last 60 min?"}
q4 -->|"yes"| m3["5. Roll back<br/><i>runbook OPS-01</i>"]
q4 -->|"no"| esc(["6. Escalate to<br/>Order team on-call<br/><i>stop investigating</i>"])
m1 --> v["7. Verify p99 recovers<br/>within 10 min"]
m2 --> v
m3 --> v
v --> q5{"Recovered?"}
q5 -->|"yes"| done(["Close · record in incident log"])
q5 -->|"no"| esc
Operational Runbook
A specific, tested procedure for one alert — what to check, in what order, what to do, and when to stop and escalate.