Run suite and survivor gates in the Runner without an agent dispatch #1688

Open
opened 2026-11-11 07:04:42 +00:00 by jared · 0 comments
Owner

Problem

The os-sdlc maps run the suite gate and the survivor gate through an agent that only runs one command.
Each such node costs one agent dispatch and one orchestrator turn, although the agent makes no judgment.
The session found this on tickets #1675 to #1677 and recommended that the Runner run these two gates itself.

Observed

The nodes suite-check and survivor-check in plugins/os-sdlc/maps/poodr-ticket-implementation.yaml:167-193 both use agent: suite-check.
Their instructions: read: "Run os-sdlc-gate DISPATCH_ID exactly once and stop. Do not edit files. Do not diagnose failures. The gate verdict routes the run."
Their verdict comes from the gate (verdict: source: gate, gates: [required-work, suite] and gates: [survivors]).
The agent file plugins/os-sdlc/agents/suite-check.md runs os-sdlc-gate <dispatch_id> one time, composes a handoff, and submits it; it states "The gate verdict routes the run to the next node -- that is not your decision."
The map plugins/os-sdlc/maps/poodr-guard-implementation.yaml:68,101 also uses this agent.
The session measured, for ticket #1677 (transcript, assistant reply on 2026-11-10 near 16:01 EST): "suite-check and survivor-check, 7 dispatches so far | 20 to 30 s each, plus one of my turns each | An agent runs one command and relays the result."
The session also wrote: "Each change to the code costs two of these dispatches and two of my turns."
The transcript does not show a gate node that stalled or one that gave the orchestrator no instruction. It shows only the cost above.

Reproduce

n/a: this is a design gap, not a failure. Run /os-sdlc:implement on any ticket that reaches suite-check; read elapsed_s of the suite-check and survivor-check dispatches in the implementation-report output.

Approach

Decide whether the Runner runs a gate-only node itself.
Both nodes name an agent:; I did not check whether the map schema allows a node with none.
A node without an agent needs a Runner step that runs the gates, records the verdict, and spends the node's pass, fail, error, or escalate edge with no dispatch.
The decision changes the map schema and Implementation::Transition; it needs a ruling and probably an ADR (/os-adr:find first).

Orchestrator work: /os-adr:find on the map schema; an ADR if the schema change is a one-way door.

Rejected: switch suite-check to a different model tier — the dispatch and the orchestrator turn remain, and the agent already uses haiku (agents/suite-check.md frontmatter).

Origin

  • Trigger: the user asked whether sonnet or haiku nodes would speed up ticket #1677; the session measured the gate nodes.
  • Improvised this session: none
  • Chain: each code change costs two extra dispatches and two orchestrator turns ← the gate nodes need an agent: (maps/poodr-ticket-implementation.yaml:168,183) ← no node in these maps is run by the Runner itself (not checked against the map schema)
  • Root candidate: none found (ticket-skeptic)
  • Where: plugins/os-sdlc/maps/poodr-ticket-implementation.yaml, plugins/os-sdlc/agents/suite-check.md
  • Session: a48658d5-b566-40ce-8257-ebeabf56f7e1
  • Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os-plugins-os-sdlc/a48658d5-b566-40ce-8257-ebeabf56f7e1.jsonl

VERDICT: CREATE
REASON: Each gate-only node costs 20 to 30 s and an orchestrator turn; no open ticket covers the mechanism.

## Problem The os-sdlc maps run the suite gate and the survivor gate through an agent that only runs one command. Each such node costs one agent dispatch and one orchestrator turn, although the agent makes no judgment. The session found this on tickets #1675 to #1677 and recommended that the Runner run these two gates itself. ## Observed The nodes `suite-check` and `survivor-check` in `plugins/os-sdlc/maps/poodr-ticket-implementation.yaml:167-193` both use `agent: suite-check`. Their `instructions:` read: "Run `os-sdlc-gate DISPATCH_ID` exactly once and stop. Do not edit files. Do not diagnose failures. The gate verdict routes the run." Their verdict comes from the gate (`verdict: source: gate`, `gates: [required-work, suite]` and `gates: [survivors]`). The agent file `plugins/os-sdlc/agents/suite-check.md` runs `os-sdlc-gate <dispatch_id>` one time, composes a handoff, and submits it; it states "The gate verdict routes the run to the next node -- that is not your decision." The map `plugins/os-sdlc/maps/poodr-guard-implementation.yaml:68,101` also uses this agent. The session measured, for ticket #1677 (transcript, assistant reply on 2026-11-10 near 16:01 EST): "`suite-check` and `survivor-check`, 7 dispatches so far | 20 to 30 s each, plus one of my turns each | An agent runs one command and relays the result." The session also wrote: "Each change to the code costs two of these dispatches and two of my turns." The transcript does not show a gate node that stalled or one that gave the orchestrator no instruction. It shows only the cost above. ## Reproduce n/a: this is a design gap, not a failure. Run `/os-sdlc:implement` on any ticket that reaches `suite-check`; read `elapsed_s` of the `suite-check` and `survivor-check` dispatches in the `implementation-report` output. ## Approach Decide whether the Runner runs a gate-only node itself. Both nodes name an `agent:`; I did not check whether the map schema allows a node with none. A node without an agent needs a Runner step that runs the gates, records the verdict, and spends the node's `pass`, `fail`, `error`, or `escalate` edge with no dispatch. The decision changes the map schema and `Implementation::Transition`; it needs a ruling and probably an ADR (`/os-adr:find` first). Orchestrator work: `/os-adr:find` on the map schema; an ADR if the schema change is a one-way door. Rejected: switch `suite-check` to a different model tier — the dispatch and the orchestrator turn remain, and the agent already uses haiku (`agents/suite-check.md` frontmatter). ## Origin - Trigger: the user asked whether sonnet or haiku nodes would speed up ticket #1677; the session measured the gate nodes. - Improvised this session: none - Chain: each code change costs two extra dispatches and two orchestrator turns ← the gate nodes need an `agent:` (`maps/poodr-ticket-implementation.yaml:168,183`) ← no node in these maps is run by the Runner itself (not checked against the map schema) - Root candidate: none found (ticket-skeptic) - Where: plugins/os-sdlc/maps/poodr-ticket-implementation.yaml, plugins/os-sdlc/agents/suite-check.md - Session: a48658d5-b566-40ce-8257-ebeabf56f7e1 - Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os-plugins-os-sdlc/a48658d5-b566-40ce-8257-ebeabf56f7e1.jsonl VERDICT: CREATE REASON: Each gate-only node costs 20 to 30 s and an orchestrator turn; no open ticket covers the mechanism.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
jared/cc-os#1688
No description provided.