Skip to content

dev.superpipeline.gate.outcome.v1

The receipt that closes a gate’s (or a follow-up’s) card once the board accepted a decision, referencing the event the card was drawn from. decided_by is the person’s label, never an mxid; null when nobody in the room decided it. Readers ignore properties they do not know.

Content that carries suite_event_type: "dev.superpipeline.gate.outcome.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
suite_event_type "dev.superpipeline.gate.outcome.v1" yes
gate_id string yes at least 1 character
board_id string yes
decision string yes at least 1 character
decided_by string or null yes
chosen_variant object no
chosen_variant.id string yes at least 1 character
chosen_variant.label string yes
held_until string no 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 yes
m.relates_to.rel_type "m.reference" yes
m.relates_to.event_id string yes at least 1 character

From fixtures/matrix-events/examples.json, case “a gate approved for manual delivery”:

{
"suite_event_type": "dev.superpipeline.gate.outcome.v1",
"gate_id": "gate_8f3a",
"board_id": "brd_7c1f",
"decision": "approve_manual",
"decided_by": "fixture-person",
"m.relates_to": {
"rel_type": "m.reference",
"event_id": "$gateEventId"
}
}

The corpus has 9 valid cases in all:

a follow-up answered with its live link
{
"suite_event_type": "dev.superpipeline.gate.outcome.v1",
"gate_id": "gate_8f3a",
"board_id": "brd_7c1f",
"decision": "record_live_url",
"decided_by": "fixture-person",
"m.relates_to": {
"rel_type": "m.reference",
"event_id": "$deliveryEventId"
}
}
a follow-up switched to automatic delivery
{
"suite_event_type": "dev.superpipeline.gate.outcome.v1",
"gate_id": "gate_8f3a",
"board_id": "brd_7c1f",
"decision": "switch_to_automatic",
"decided_by": "fixture-person",
"m.relates_to": {
"rel_type": "m.reference",
"event_id": "$deliveryEventId"
}
}
a follow-up settled on the board, naming nobody
{
"suite_event_type": "dev.superpipeline.gate.outcome.v1",
"gate_id": "gate_8f3a",
"board_id": "brd_7c1f",
"decision": "settled_elsewhere",
"decided_by": null,
"m.relates_to": {
"rel_type": "m.reference",
"event_id": "$deliveryEventId"
}
}
expired: a subject-bound gate closed as expired
{
"suite_event_type": "dev.superpipeline.gate.outcome.v1",
"gate_id": "gate_8f3a",
"board_id": "brd_7c1f",
"decision": "expired",
"decided_by": null,
"m.relates_to": {
"rel_type": "m.reference",
"event_id": "$gateEventId"
}
}
choice: an automatic approval of "With the thread"
{
"suite_event_type": "dev.superpipeline.gate.outcome.v1",
"gate_id": "gate_5d72",
"board_id": "brd_7c1f",
"decision": "approve_automatic",
"decided_by": "rakesh",
"chosen_variant": {
"id": "thread",
"label": "With the thread"
},
"m.relates_to": {
"rel_type": "m.reference",
"event_id": "$gateEventId"
}
}
release: an approval held until its release time
{
"suite_event_type": "dev.superpipeline.gate.outcome.v1",
"gate_id": "gate_6e19",
"board_id": "brd_7c1f",
"decision": "approve",
"decided_by": "rakesh",
"held_until": "2026-11-16T09:00:00.000Z",
"m.relates_to": {
"rel_type": "m.reference",
"event_id": "$gateEventId"
}
}
built: an approval
{
"suite_event_type": "dev.superpipeline.gate.outcome.v1",
"gate_id": "gate_8f3a",
"board_id": "brd_7c1f",
"decision": "approve",
"decided_by": "rakesh",
"m.relates_to": {
"rel_type": "m.reference",
"event_id": "$gateEvent"
}
}
built: a held approval of a chosen variant
{
"suite_event_type": "dev.superpipeline.gate.outcome.v1",
"gate_id": "gate_8f3a",
"board_id": "brd_7c1f",
"decision": "approve_automatic",
"decided_by": "rakesh",
"chosen_variant": {
"id": "short",
"label": "Short"
},
"held_until": "2030-01-02T09:00:00Z",
"m.relates_to": {
"rel_type": "m.reference",
"event_id": "$gateEvent"
}
}

Each of these must fail. The corpus says why:

  • no m.relates_to. A client cannot tell which card to close. (refused by schema)
  • a quoted reply rather than an m.reference (refused by schema)
  • no gate_id (refused by schema)
  • no decision (refused by schema)