Skip to content

decision.released v1

A held approval reached its release time and acted, or was blocked (charter 2026-11-09, an approval may wait for its release time §5-7). Mirrors SuperPipeline’s DecisionReleasedBody (apps/api/src/board/views.ts). Readers ignore properties they do not know.

Every event below carries dataschema https://raw.githubusercontent.com/SuperJackfruitLabs/treaty/main/schemas/superpipeline/decision.released.v1.json.

Body event CloudEvents type Subject
decision.released com.superjackfruit.superpipeline.decision.released.v1 evt.<workspace>.superpipeline.decision.released

The subject is the NATS subject the relay files it under; <workspace> is the board’s workspace. See the envelope and subjects.

  • Produced by SuperPipeline, through the relay.
  • Consumed by:
    • SuperExchange: Posts it to the board’s room, for the boards it carries. Receives it through the relay.
    • AgentPod: The hub’s board chat posts it, for the boards it still carries.
    • SuperDispatch: Takes it as a nudge to look at the board soon, on a board opted into scheduling. Reads nothing from its data.

Readers ignore properties they do not know, so a field may be added without a new version.

Field Type Required Description Constraints
event "decision.released" yes
boardId string or null yes Null only on a board not yet initialised; a carrier needs it to route the event.
cardId string yes
gateId string yes
decision string yes The gate’s decision that was held, such as approve_automatic.
releaseAt string yes format date-time
releasedAt string yes format date-time
outcome one of "released", "blocked" yes
reason string no Why a release was blocked; only on outcome blocked.

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

{
"event": "decision.released",
"boardId": "brd_134a0ddb6d434478",
"cardId": "crd_0f3c9a2b7d4e4a11",
"gateId": "gat_5d1e2f3a4b5c6d7e",
"decision": "approve_automatic",
"releaseAt": "2026-11-10T10:00:00.000Z",
"releasedAt": "2026-11-10T10:00:05.000Z",
"outcome": "released"
}

The corpus has 2 valid cases in all:

blocked
{
"event": "decision.released",
"boardId": "brd_134a0ddb6d434478",
"cardId": "crd_0f3c9a2b7d4e4a11",
"gateId": "gat_5d1e2f3a4b5c6d7e",
"decision": "approve_automatic",
"releaseAt": "2026-11-10T10:00:00.000Z",
"releasedAt": "2026-11-10T10:00:05.000Z",
"outcome": "blocked",
"reason": "the approved subject changed before the release time"
}

Each of these must fail. The corpus says why:

  • the outcome is released or blocked
  • releasedAt is a date-time
  • decision is required