Skip to content

feat!: capability-driven compliance runner + tarball-sourced storyboards (#553)#560

Merged
bokelley merged 5 commits intomainfrom
bokelley/next-issues
Apr 17, 2026
Merged

feat!: capability-driven compliance runner + tarball-sourced storyboards (#553)#560
bokelley merged 5 commits intomainfrom
bokelley/next-issues

Conversation

@bokelley
Copy link
Copy Markdown
Contributor

Closes #553.

Summary

  • Storyboards move out of the SDK. npm run sync-schemas pulls /protocol/{version}.tgz from adcontextprotocol.org, verifies its sha256, and extracts schemas + compliance into schemas/cache/ and compliance/cache/. The published npm package ships the baseline compliance cache so first-run works offline.
  • Capability-driven selection. get_adcp_capabilities drives which storyboards run: supported_protocols → domain baselines, specialisms → specialism bundles. discoverAgentProfile now calls the capabilities probe and surfaces failures so agents can't silently downgrade to universal-only.
  • Clean break. Bundled storyboards/, platform_type, PlatformProfile, PLATFORM_STORYBOARDS, platform_coherence, and the expected track status are all removed. comply({ platform_type }) throws a runtime migration error. See the changeset for the full list.

Fail-closed

  • Declared specialism with no bundle in cache → throw (points at npm run sync-schemas).
  • Specialism whose parent domain isn't in supported_protocols → throw.
  • Capability probe fails on an agent that advertises the tool → profile.capabilities_probe_error + error-severity observation (loud, not silent).
  • Unknown supported_protocols entry → warn and skip.

Spec-evolution escape hatch

adcp storyboard run <agent> --file <path.yaml> loads an ad-hoc YAML from disk without touching the cache — useful for testing in-development storyboards before they land upstream.

Test plan

  • npm run typecheck clean
  • npm run test:lib — 3005/3005 pass (including new protocol-mapping drift alarm)
  • Live run against test-mcp: 23 storyboards executed across media-buy, creative, governance, signals, brand + universal
  • npm pack --dry-run confirms compliance/cache/latest/ ships (1.4MB packed, up from ~400KB pre-refactor)

Follow-ups

  • Upstream issue filed: adcp#2272 — detached signatures (sigstore/minisign) for /protocol/{version}.tgz.

🤖 Generated with Claude Code

bokelley and others added 5 commits April 17, 2026 12:44
…rds (#553)

Storyboards move out of `@adcp/client` — `npm run sync-schemas` now pulls
`/protocol/{version}.tgz` from adcontextprotocol.org, verifies its sha256,
and extracts schemas + compliance into local caches. Bundled `storyboards/`
is gone; the compliance cache ships with the published package.

Selection is driven by `get_adcp_capabilities`: `supported_protocols`
resolves to domain baselines, `specialisms` resolves to specialism bundles.
Fails closed when a declared specialism's bundle isn't cached, when a
specialism's parent domain isn't declared, or when the capabilities probe
fails on an agent that advertises the tool. Unknown protocols warn.

Breaking: `platform_type`, `PlatformProfile`, `PLATFORM_STORYBOARDS`,
`platform_coherence`, `expected_tracks`, bundled loaders, and platform
coherence reporting are all removed. See changeset for full migration.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
# Conflicts:
#	src/lib/types/schemas.generated.ts
Pulls latest `/protocol/latest.tgz` and regenerates types.generated,
core.generated, schemas.generated, and wellknown-schemas.generated.
Runs prettier over the files modified in this branch.

Fixes CI: Code Quality, Test & Build, Validate Schema Synchronization.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The agent docs generator still read from the deleted `storyboards/`
directory, so llms.txt dropped all 49 storyboard flows. Walks the
compliance cache now (universal, domains/**, specialisms/**) and
updates the deep-dive + fictional-entities pointers.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Upstream adcontextprotocol/adcp#2273 signs released `/protocol/{version}.tgz`
with Sigstore keyless OIDC. `sync-schemas` now verifies the `.sig` + `.crt`
sidecars against the upstream release workflow's identity when they're
present. Graceful degradation:

  - `latest.tgz` is intentionally unsigned — skip.
  - Missing sidecars (predates signing) → checksum-only, informational log.
  - Sidecars present but `cosign` not installed → checksum-only, install hint.
  - Sidecars present and `cosign` available → verify; fail hard on mismatch.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@bokelley bokelley merged commit 50c809a into main Apr 17, 2026
13 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.

Consume /compliance/ and /protocol/{version}.tgz from adcontextprotocol.org (supersede bundled storyboards/)

1 participant