Context
`static/compliance/source/universal/storyboard-schema.yaml` lists the supported `check:` values in a comment block at lines 555-558:
```yaml
check: string (what to validate: "response_schema", "field_present", "field_value",
"status_code", "http_status", "http_status_in", "error_code",
"on_401_require_header", "resource_equals_agent_url", "any_of",
"refs_resolve")
```
`adcontextprotocol/adcp-client#952` shipped a new validation check, `a2a_submitted_artifact`, that asserts the A2A wire-shape invariants for AdCP `submitted` arms (per A2A 0.3.0 + adcp-client#899). The check is supported by the runner today; this issue is about updating the spec docs so storyboard authors know it exists.
Proposed change
Add `a2a_submitted_artifact` to the comment-enumeration above. The `refs_resolve` paragraph at line 586 is the existing template for documenting cross-cutting checks; suggest adding a sibling section like:
```yaml
A2A wire-shape — use `check: a2a_submitted_artifact`:
Verifies the cross-transport invariants established by adcp-client#899 for
AdCP `submitted` arms over A2A: `Task.state === 'completed'`, `Task.id` /
`Task.contextId` non-empty, `artifact.metadata.adcp_task_id` carries the
handle, `artifact.parts[0].data.status === 'submitted'` preserves the AdCP
discriminator. The check self-skips with `not_applicable` on non-A2A
transports so storyboards can include it alongside MCP-shape assertions
without forking by transport.
```
Why this matters
The runner doesn't enforce the comment enum at parse time — unknown check names just fail at validation runtime with "Unknown validation check". So this is documentation-only. But storyboard authors copying patterns from existing scenarios won't discover the new check unless it's listed in the spec's canonical reference.
Related
- adcp-client#952 — the implementation PR
- adcp-client#904 — umbrella tracking issue
- adcp-client#899 — the protocol contract being verified
Context
`static/compliance/source/universal/storyboard-schema.yaml` lists the supported `check:` values in a comment block at lines 555-558:
```yaml
check: string (what to validate: "response_schema", "field_present", "field_value",
"status_code", "http_status", "http_status_in", "error_code",
"on_401_require_header", "resource_equals_agent_url", "any_of",
"refs_resolve")
```
`adcontextprotocol/adcp-client#952` shipped a new validation check, `a2a_submitted_artifact`, that asserts the A2A wire-shape invariants for AdCP `submitted` arms (per A2A 0.3.0 + adcp-client#899). The check is supported by the runner today; this issue is about updating the spec docs so storyboard authors know it exists.
Proposed change
Add `a2a_submitted_artifact` to the comment-enumeration above. The `refs_resolve` paragraph at line 586 is the existing template for documenting cross-cutting checks; suggest adding a sibling section like:
```yaml
A2A wire-shape — use `check: a2a_submitted_artifact`:
Verifies the cross-transport invariants established by adcp-client#899 for
AdCP `submitted` arms over A2A: `Task.state === 'completed'`, `Task.id` /
`Task.contextId` non-empty, `artifact.metadata.adcp_task_id` carries the
handle, `artifact.parts[0].data.status === 'submitted'` preserves the AdCP
discriminator. The check self-skips with `not_applicable` on non-A2A
transports so storyboards can include it alongside MCP-shape assertions
without forking by transport.
```
Why this matters
The runner doesn't enforce the comment enum at parse time — unknown check names just fail at validation runtime with "Unknown validation check". So this is documentation-only. But storyboard authors copying patterns from existing scenarios won't discover the new check unless it's listed in the spec's canonical reference.
Related