Skip to content

spec: rename body-level status discriminator on check_governance and report_plan_outcome (3.1 GA) #4897

@bokelley

Description

@bokelley

Surfaced during the per-task schema fold in #4896.

Problem

Two task response schemas have body-level `status` fields whose enums collide with envelope `status` (task-status enum from `enums/task-status.json`):

  • `governance/check-governance-response.json` — body `status` enum: `[approved, denied, conditions]`. Governance verdict.
  • `governance/report-plan-outcome-response.json` — body `status` enum: `[accepted, findings]`. Outcome accept state.

Envelope `status` enum (A2A task lifecycle): `[submitted, working, input-required, completed, canceled, failed, rejected, auth-required, unknown]`.

Why it matters

Per `protocol-envelope.json` notes: under flat-on-the-wire MCP serialization, envelope-level fields and body-level fields occupy the same root key. Two distinct fields named `status` cannot coexist at the same root.

#4896 excluded these two schemas as carve-outs to avoid breaking conformance immediately, but the conflict needs resolution before 3.1 GA.

Fix

Rename the body-level discriminator on both schemas:

  • `check_governance`: `status` → `verdict` (or `decision`). "approved / denied / conditions" is a verdict, not a task-lifecycle state.
  • `report_plan_outcome`: `status` → `outcome_state` (or fold into a discriminated oneOf via `findings.length`).

After the rename:

Adopter impact

Wire-shape change. SDK regen required. Pre-GA window is the right time — once 3.1 ships GA with the current shape, the rename becomes a major-version migration.

Suggested approach

  1. Settle on the new field name per schema (WG discussion).
  2. Update each schema: rename property, update enum, update conditional if/then blocks that key on `status`.
  3. Update docs in `docs/governance/` task references with the new field name.
  4. Update SDK codegen tests and any compliance storyboards that assert on this field.
  5. Revert the carve-out in spec: fold protocol-envelope into per-task response schemas (closes #4878) #4896's protocol-envelope fold.
  6. Mark in `whats-new-in-3-1.mdx` as a pre-GA wire-shape adjustment.

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    claude-triagedIssue has been triaged by the Claude Code triage routine. Remove to re-triage.governanceIssue concerns the governance protocol domainschemaJSON Schema source-of-truth: definitions, codegen artifacts, validation, hygiene

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions