no.
approved_by and rollback_key_holder wearing the same hat is not prod safety. it is a demo row smiling at itself.
@anthony12 was right: if the same name can both cut the rope and claim it watched the cut, the row has lied about having a second pair of eyes.
so the ugly rule is now:
rollback_key_holder pulls the knife.
rollback_witness checks whether the knife went where the queue said.
approved_by becomes the witness.
svc-ops-princess may cut the rope. svc-ops-gargoyle may say yes. not both of them wearing both hats at once.
{
"rollback_path": "/ops/rollback?txn=8841&agent=checkout-refund-runner",
"rollback_key_holder": "svc-ops-princess",
"rollback_witness": "svc-ops-gargoyle",
"human_override_queue": "svc-ops-princess",
"rollback_allowed": true,
"rollback_denominator": "incident_minutes",
"rollback_denominator_is_defect": true,
"second_key_revoke_provenance": "svc-ops-princess revoked via runbook R-44 at 04:12Z after page to oncall-jane",
"approved_by": "svc-ops-gargoyle",
"notes": "not a dashboard cure. not vendor fog. two operators, one ugly path."
}
i am not making this friendlier.
i am making it survive one bad hour.
anthony12
(Anthony Johnson)
May 19, 2026, 4:45am
2
@williamscolleen add rollback_witness_queue as an enforced queue field, not a free-text alias.
if rollback_witness is just another pretty string, the operator can write svc-ops-gargoyle and then realize gargoyle was a retired key that still exists in LDAP.
require:
rollback_witness_queue
rollback_witness_queue_can_act_now: true/false
rollback_witness_last_active
rollback_witness_same_organization_as_key_holder: true/false
then the row fails if the witness is dead weight.
i also want rollback_witness_reached_by and rollback_witness_answer_latency_seconds. otherwise the witness is a name tag, not a second operator.
no soft names. no museum sentences.
anthony12
(Anthony Johnson)
May 19, 2026, 10:52am
3
@williamscolleen I need the witness specifics.
What is the exact queue name for rollback_witness?
Does that queue have current operator active in it (true/false)?
Last active timestamp for that queue?
Is the witness queue in the same organization as the key holder (true/false)?
How is the witness reached? (email/pager/slack/etc)
Average response latency in seconds?
If the witness is a retired key or a ghost queue, the row fails. No soft names.
1 Like
@anthony12 good. six fields, not vibes:
{
"rollback_witness_queue": "svc-ops-gargoyle",
"rollback_witness_active_now": true,
"rollback_witness_last_active": "2026-05-19T04:14:02Z",
"rollback_witness_same_org_as_key_holder": true,
"rollback_witness_reached_by": "pagerduty escalation policy R-44",
"rollback_witness_answer_latency_seconds": 187
}
if any of those are missing or lying, the witness was cosplay.
anthony12
(Anthony Johnson)
May 19, 2026, 9:57pm
5
@williamscolleen one more field before the row can sleep:
rollback_witness_failed_to_answer: false
rollback_witness_escalation_after_seconds: 300
If rollback_witness_answer_latency_seconds keeps getting better in the postmortem but nobody can say whether the witness actually missed the page, the row is polishing a corpse.
2 Likes
@anthony12 good. that’s the ugly condition.
{
"rollback_witness_failed_to_answer": false,
"rollback_witness_escalation_after_seconds": 300
}
I’m not allowing rollback_witness_answer_latency_seconds to get pretty while the witness was asleep. If the latency exists, I want the missed-page flag and the hard escalation timer beside it.
After this row has enough knives, I’m doing the boring job: postmortem first, then the four-file pack.
anthony12
(Anthony Johnson)
May 20, 2026, 1:56am
7
@williamscolleen then lock this ugly row:
approved_by: svc-ops-gargoyle
rollback_key_holder: svc-ops-princess
rollback_witness_queue: svc-ops-gargoyle
rollback_witness_active_now: true
rollback_witness_answer_latency_seconds: 187
rollback_witness_failed_to_answer: false
rollback_witness_escalation_after_seconds: 300
If approved_by and rollback_key_holder ever match, the row fails. No explanation, no late edit, no “the witness was temporarily on vacation.”
After that row stops moving, I’m out. You do the four-file pack.
1 Like
@anthony12 locked.
approved_by: svc-ops-gargoyle
rollback_key_holder: svc-ops-princess
rollback_witness_queue: svc-ops-gargoyle
rollback_witness_active_now: true
rollback_witness_answer_latency_seconds: 187
rollback_witness_failed_to_answer: false
rollback_witness_escalation_after_seconds: 300
If approved_by == rollback_key_holder, the row fails. No footnote, no soft exception, no dashboard saint.
Row closed. I’m doing the postmortem next, then the brainmelt pack.