Skip to content

dev.superpipeline.decision.escalated.v1

The notice posted when a waiting decision passes its stage’s escalation time and the workspace’s owners and admins are invited, in reply to the waiting card. Readers ignore properties they do not know.

An m.room.message whose content carries suite_event_type: "dev.superpipeline.decision.escalated.v1".

The carrier is whichever service carries the board’s chat: AgentPod’s hub, or SuperExchange for a board that has moved to it.

Field Type Required Description Constraints
msgtype "m.text" yes
body string yes
schema_version integer yes at least 1
board_id string yes at least 1 character
card_id string yes at least 1 character
decision_kind one of "gate", "question", "delivery", "attention", "checks" yes
decision_id string yes at least 1 character
waiting_since string yes pattern ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d{1,9})?)?(Z|[+-]\d{2}:\d{2})$; at most 40 characters
suite_event_type "dev.superpipeline.decision.escalated.v1" yes
escalated_at string yes pattern ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d{1,9})?)?(Z|[+-]\d{2}:\d{2})$; at most 40 characters
deep_link string no
m.relates_to object yes
m.relates_to.m.in_reply_to object yes
m.relates_to.m.in_reply_to.event_id string yes at least 1 character

The schema also states these rules across fields, as written:

{
"not": {
"required": [
"reminded_at"
]
}
}

From fixtures/matrix-events/examples.json, case “a gate escalated after six hours”:

{
"msgtype": "m.text",
"body": "Escalated to workspace admins after 6 h: \"Launch post\" is still waiting for an approval at Review. [Open the card](https://superpipeline.dev/b/brd_7c1f/c/crd_6b40)",
"suite_event_type": "dev.superpipeline.decision.escalated.v1",
"schema_version": 1,
"board_id": "brd_7c1f",
"card_id": "crd_6b40",
"decision_kind": "gate",
"decision_id": "gate_8f3a",
"waiting_since": "2026-11-08T12:00:00.000Z",
"escalated_at": "2026-11-08T18:02:11.000Z",
"deep_link": "https://superpipeline.dev/b/brd_7c1f/c/crd_6b40",
"m.relates_to": {
"m.in_reply_to": {
"event_id": "$gateEventId"
}
}
}

The corpus has 3 valid cases in all:

checks: overdue checks escalated
{
"msgtype": "m.text",
"body": "Escalated to workspace admins after 3 h: \"Ship the release\" is still waiting for its checks at Review. [Open the card](https://superpipeline.dev/b/brd_7c1f/c/crd_8a40)",
"suite_event_type": "dev.superpipeline.decision.escalated.v1",
"schema_version": 1,
"board_id": "brd_7c1f",
"card_id": "crd_8a40",
"decision_kind": "checks",
"decision_id": "arr_5d02",
"waiting_since": "2026-11-09T09:00:00.000Z",
"escalated_at": "2026-11-09T12:00:00.000Z",
"deep_link": "https://superpipeline.dev/b/brd_7c1f/c/crd_8a40",
"m.relates_to": {
"m.in_reply_to": {
"event_id": "$checksWaitingEventId"
}
}
}
built: a gate escalated after a day
{
"msgtype": "m.text",
"body": "Escalated to workspace admins after 24 h: \"Ship the release notes\" is still waiting for an approval at review. [Open the card](https://superpipeline.dev/b/brd_7c1f/c/crd_6b40)",
"suite_event_type": "dev.superpipeline.decision.escalated.v1",
"schema_version": 1,
"board_id": "brd_7c1f",
"card_id": "crd_6b40",
"decision_kind": "gate",
"decision_id": "gate_8f3a",
"waiting_since": "2030-01-01T09:00:00.000Z",
"escalated_at": "2030-01-02T09:00:00.000Z",
"deep_link": "https://superpipeline.dev/b/brd_7c1f/c/crd_6b40",
"m.relates_to": {
"m.in_reply_to": {
"event_id": "$cardEvent"
}
}
}

Each of these must fail. The corpus says why:

  • no m.relates_to. A client cannot tell which card it is about. (refused by schema)
  • an m.reference rather than a reply. A notice is a reply to the card; an m.reference is an answer or a receipt. (refused by schema)
  • no decision_id (refused by schema)
  • a decision_kind outside gate | question | delivery | attention (refused by schema)
  • no escalated_at (refused by schema)