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.
How it rides
Section titled “How it rides”Content that carries suite_event_type: "dev.superpipeline.gate.outcome.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 |
|---|---|---|---|---|
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 |
Example
Section titled “Example”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" }}Refused
Section titled “Refused”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)
Source
Section titled “Source”- Schema:
schemas/matrix/dev.superpipeline.gate.outcome.v1.json - In the package:
import schema from "@superjackfruitlabs/treaty-matrix-events/schemas/dev.superpipeline.gate.outcome.v1.json" with { type: "json" };