Skip to content

dev.agentpod.decision.released.v2

The reply posted when a held approval reached its release time and went ahead (released) or was blocked, referencing the gate’s own event. Readers ignore properties they do not know.

Content that carries suite_event_type: "dev.agentpod.decision.released.v2".

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.agentpod.decision.released.v2" yes
schema_version integer yes at least 1
gate_id string yes at least 1 character; at most 200 characters
board_id string yes at least 1 character; at most 200 characters
card_id string yes at least 1 character; at most 200 characters
outcome one of "released", "blocked" yes
released_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
reason string no at least 1 character; at most 300 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

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

{
"if": {
"properties": {
"outcome": {
"const": "released"
}
}
},
"then": {
"not": {
"required": [
"reason"
]
}
}
}

From fixtures/matrix-events/examples.json, case “release: released”:

{
"suite_event_type": "dev.agentpod.decision.released.v2",
"schema_version": 1,
"gate_id": "gate_6e19",
"board_id": "brd_7c1f",
"card_id": "crd_8a40",
"outcome": "released",
"released_at": "2026-11-16T09:03:00.000Z",
"m.relates_to": {
"rel_type": "m.reference",
"event_id": "$gateEventId"
}
}

The corpus has 3 valid cases in all:

release: blocked at its release time
{
"suite_event_type": "dev.agentpod.decision.released.v2",
"schema_version": 1,
"gate_id": "gate_6e19",
"board_id": "brd_7c1f",
"card_id": "crd_8a40",
"outcome": "blocked",
"released_at": "2026-11-16T09:03:00.000Z",
"reason": "the approved subject changed before the release time",
"m.relates_to": {
"rel_type": "m.reference",
"event_id": "$gateEventId"
}
}
built: blocked at its release time
{
"suite_event_type": "dev.agentpod.decision.released.v2",
"schema_version": 1,
"gate_id": "gate_8f3a",
"board_id": "brd_7c1f",
"card_id": "crd_6b40",
"outcome": "blocked",
"released_at": "2030-01-01T09:00:00.000Z",
"reason": "the account is suspended",
"m.relates_to": {
"rel_type": "m.reference",
"event_id": "$gateEvent"
}
}

Each of these must fail. The corpus says why:

  • an outcome other than released or blocked (refused by schema)
  • a reason on a release that went ahead (refused by schema)
  • a release time that is not a time (refused by schema)