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