Skip to content

docs(compliance): SHOULD on runner session reuse and 404-as-terminal (#6204) - #6205

Merged
bokelley merged 2 commits into
adcontextprotocol:mainfrom
fgranata:fix/runner-session-lifecycle-should
Aug 8, 2026
Merged

docs(compliance): SHOULD on runner session reuse and 404-as-terminal (#6204)#6205
bokelley merged 2 commits into
adcontextprotocol:mainfrom
fgranata:fix/runner-session-lifecycle-should

Conversation

@fgranata

@fgranata fgranata commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Implements the runner-output-contract.yaml follow-on from the #6204 triage ("Add one SHOULD on session reuse across steps and 404-as-terminal. Patch-eligible; no changeset.").

Adds a session_lifecycle guidance block: runners SHOULD establish one MCP session per storyboard and reuse it across steps (a fresh session per call spends 4–5 round trips on handshake, ~5× per-step wall time, and attributes runner overhead to the agent under test), SHOULD close sessions gracefully, and SHOULD treat expired-session 404s as terminal rather than retryable (the streamable-HTTP session layer answers them silently, so reconnect loops read as rate limiting).

Evidence for the numbers is in #6204. YAML strict-parses clean (yaml.safe_load). The core session-per-storyboard fix lands in adcp-client per the triage's sibling-repo item.

Per the adcontextprotocol#6204 triage: one SHOULD in runner-output-contract.yaml closing
the doc gap while the session-per-storyboard fix lands in adcp-client.
Runners SHOULD reuse one MCP session across a storyboard's steps, close
gracefully, and treat expired-session 404s as terminal — fresh-transport
-per-call multiplies per-step wall time ~5x and orphaned reconnect loops
generate silent 4xx volume misread as rate limiting.

Patch-eligible per triage; no changeset.
Comment thread static/compliance/source/universal/runner-output-contract.yaml

@aao-secretariat aao-secretariat Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ladon verdict: Request changes

Request changes — 1 blocking finding.

Blocking findings

  • static/compliance/source/universal/runner-output-contract.yaml:607 — Compliance-source change ships no changeset; changeset-check CI will fail and a Normative addition ships untracked.

This PR adds a normative session_lifecycle guidance block (session reuse, graceful close, 404-as-terminal SHOULDs) to the runner output contract under static/compliance/source/**. That path is part of the published protocol surface, so per the mandatory changeset-scope rule a PR touching it with no .changeset/*.md is high. The YAML itself is well-formed and introduces no lint or schema-parity failures, but the missing changeset is a hard blocker: it fails changeset-check CI and ships an untracked wire/normative change. Add a correctly-scoped (non-empty) changeset reflecting this Normative addition to unblock.

Blocking findings

  • static/compliance/source/universal/runner-output-contract.yaml:607 — Compliance-source change ships no changeset; changeset-check will fail

Per Ladon's review: patch-eligible means a patch changeset, not none —
the SHOULDs are a Normative addition to the compliance source surface.
@fgranata

fgranata commented Aug 4, 2026

Copy link
Copy Markdown
Contributor Author

Changeset added (patch scope, .changeset/runner-session-lifecycle-should.md) — agreed on the reading: patch-eligible means a patch changeset, not none; the SHOULDs are Normative-class. Thanks for the catch.

@bokelley
bokelley dismissed aao-secretariat[bot]’s stale review August 8, 2026 13:53

The sole blocking finding was the missing changeset. Commit a13e060 adds the required patch changeset and the changeset check now passes.

@bokelley bokelley left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verified the requested patch changeset is present and accurately describes the SHOULD-level session-lifecycle guidance. All current checks pass.

@bokelley
bokelley merged commit d6b16c6 into adcontextprotocol:main Aug 8, 2026
24 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants