Skip to content

feat(compliance): add comply_controller_mode_gate universal storyboard#4385

Draft
bokelley wants to merge 2 commits into
mainfrom
claude/issue-4028-comply-controller-mode-gate-main
Draft

feat(compliance): add comply_controller_mode_gate universal storyboard#4385
bokelley wants to merge 2 commits into
mainfrom
claude/issue-4028-comply-controller-mode-gate-main

Conversation

@bokelley
Copy link
Copy Markdown
Contributor

Closes #4028

Summary

  • New storyboard comply_controller_mode_gate (static/compliance/source/universal/comply-controller-mode-gate.yaml) — verifies that sellers refuse comply_test_controller dispatch when the resolved account is in live mode, closing the fail-open gap where every prior storyboard uses sandbox-only principals.
  • New test kit acme-outdoor-live.yaml — mirrors acme-outdoor.yaml with sandbox: false; bearer prefix demo-acme-outdoor-live- for per-prefix matching per the demo-<kit>- convention.
  • Doc parity — added one row to each of docs/building/conformance.mdx and docs/building/compliance-catalog.mdx (required by lint-universal-storyboard-doc-parity).
  • Changesetpatch per playbook (new universal storyboard = additive harness change, patch-eligible).

How it skips non-controller agents

The storyboard carries requires: [controller] (documented in storyboard-schema.yaml §132–166). Sellers that don't expose comply_test_controller receive requirement_unmet and the storyboard is skipped — no impact on agents that correctly declare capabilities.compliance_testing.supported: false.

Patch eligibility

New universal storyboard — additive harness change. Per playbook: "new universal storyboards … are patch-eligible." No new normative requirements on the wire; denial of live-mode controller calls was already required by the narrative in deterministic-testing.yaml. This adds machine-readable enforcement.

Pre-PR review

Two expert reviews completed before this PR was opened:

Follow-up

After merge to main, cherry-pick to 3.0.x per playbook convention:

git checkout 3.0.x && git pull
git cherry-pick <merge-sha>
git push origin 3.0.x

Build

npm run build:compliance passes clean (24 universal, 6 protocols, 20 specialisms). All storyboard lints pass.

https://claude.ai/code/session_01CKfKuDGVRc3Kibaj7DQc8q


Generated by Claude Code

claude added 2 commits May 11, 2026 11:21
Adds a new universal storyboard that verifies comply_test_controller
returns FORBIDDEN when called by a live-mode authenticated account,
closing the fail-open gap where all existing storyboards use sandbox
principals only.

Also adds:
- test-kits/acme-outdoor-live.yaml (sandbox: false live-mode fixture)
- doc parity rows in conformance.mdx and compliance-catalog.mdx
- patch changeset

Refs #4028

https://claude.ai/code/session_01CKfKuDGVRc3Kibaj7DQc8q
…validation

- category: compliance_testing → core (compliance_testing is not a valid
  storyboard category enum; deterministic-testing and idempotency both use core)
- Add inline comment on the field_value error check clarifying it targets
  ControllerError.error (not adcp_error.code), so check: error_code does not apply

https://claude.ai/code/session_01CKfKuDGVRc3Kibaj7DQc8q
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.

spec/compliance: storyboard coverage gap — no scenario exercises comply_test_controller denial against live-mode accounts

2 participants