Skip to content

dev.superpipeline.gate (embedded card)

A superpipeline approval gate as it rides inside the prose message under the dev.superpipeline.gate content key: the body of the legacy dev.superpipeline.gate.v1 event without its body. schema_version is a floor. Answered by dev.superpipeline.gate.decision.v1 referencing the carrying message. Readers ignore properties they do not know. x-uniqueBy lists paths whose values must not repeat (JSON Schema cannot say so): a[].b is field b of each item of list a.

A card inside the prose message’s content, under the content key dev.superpipeline.gate.

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
schema_version integer yes at least 1
board_id string yes
card_id string yes
gate_id string yes at least 1 character
stage_key string yes
return_stage_key string yes
card_title string yes
produced_by string yes
prompt string yes
handoff_summary string no
options array of object yes at least 1 item; at most 3 items
options[].id one of "approve", "request_changes", "reject" yes
options[].label string yes
deep_link string no

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

{
"allOf": [
{
"description": "Fields dropped deliberately (tenant_id, run_id, task_id, expires_at): a sender that has them was built against a superseded sketch.",
"not": {
"anyOf": [
{
"required": [
"tenant_id"
]
},
{
"required": [
"run_id"
]
},
{
"required": [
"task_id"
]
},
{
"required": [
"expires_at"
]
}
]
}
}
]
}

x-uniqueBy: the values at these paths must not repeat, the one rule JSON Schema cannot state. a[].b is field b of each item of list a.

  • options[].id

From fixtures/matrix-events/examples.json, case “built: the same gate as the embedded card”:

{
"schema_version": 2,
"board_id": "brd_7c1f",
"card_id": "crd_6b40",
"gate_id": "gate_8f3a",
"stage_key": "review",
"return_stage_key": "draft",
"card_title": "Ship the release notes",
"produced_by": "agt_31d0",
"prompt": "Approve \"Ship the release notes\"?",
"handoff_summary": "Release notes for 0.4, three sections.",
"options": [
{
"id": "approve",
"label": "Approve"
},
{
"id": "request_changes",
"label": "Request changes"
},
{
"id": "reject",
"label": "Reject"
}
],
"deep_link": "https://superpipeline.dev/b/brd_7c1f/c/crd_6b40"
}

Each of these must fail. The corpus says why:

  • an option id outside GateDecision (refused by schema)
  • no options: nothing to answer with (refused by schema)
  • an empty gate_id: nothing to address an answer to (refused by schema)
  • two approve options (refused by unique)