dev.superpipeline.decision.reminded.v1
The reminder posted when a waiting decision passes its stage’s reminder time, in reply to the waiting card (m.in_reply_to). A reminder of overdue checks has no card and stands alone. Readers ignore properties they do not know.
How it rides
Section titled “How it rides”An m.room.message whose content carries suite_event_type: "dev.superpipeline.decision.reminded.v1".
Who sends it, who reads it
Section titled “Who sends it, who reads it”- Sent by AgentPod, SuperExchange.
- Read by SuperMessage.
The carrier is whichever service carries the board’s chat: AgentPod’s hub, or SuperExchange for a board that has moved to it.
Fields
Section titled “Fields”| 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.reminded.v1" |
yes | ||
reminded_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 |
|
m.relates_to |
object | no | ||
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:
{ "allOf": [ { "not": { "required": [ "escalated_at" ] } }, { "not": { "required": [ "deep_link" ] } }, { "if": { "properties": { "decision_kind": { "not": { "const": "checks" } } } }, "then": { "required": [ "m.relates_to" ] } } ]}Example
Section titled “Example”From fixtures/matrix-events/examples.json, case “a gate reminded after three hours”:
{ "msgtype": "m.text", "body": "Still waiting: \"Launch post\" has waited 3 h for an approval.", "suite_event_type": "dev.superpipeline.decision.reminded.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", "reminded_at": "2026-11-08T15:00:30.000Z", "m.relates_to": { "m.in_reply_to": { "event_id": "$gateEventId" } }}The corpus has 3 valid cases in all:
checks: overdue checks reminded
{ "msgtype": "m.text", "body": "Still waiting: \"Ship the release\" has waited 1 h for its checks.", "suite_event_type": "dev.superpipeline.decision.reminded.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", "reminded_at": "2026-11-09T10:00:00.000Z"}built: a gate reminded after three hours
{ "msgtype": "m.text", "body": "Still waiting: \"Ship the release notes\" has waited 3 h for an approval.", "suite_event_type": "dev.superpipeline.decision.reminded.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", "reminded_at": "2030-01-01T12:00:00.000Z", "m.relates_to": { "m.in_reply_to": { "event_id": "$cardEvent" } }}Refused
Section titled “Refused”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 reminded_at (refused by
schema)
Source
Section titled “Source”- Schema:
schemas/matrix/dev.superpipeline.decision.reminded.v1.json - In the package:
import schema from "@superjackfruitlabs/treaty-matrix-events/schemas/dev.superpipeline.decision.reminded.v1.json" with { type: "json" };