Skip to content

feat(docs+compliance): implementer DX — troubleshooting, known-ambiguities, idempotency opt-out (#2607, #2608)#2613

Merged
bokelley merged 2 commits into
mainfrom
bokelley/implementer-dx-2607-2608
Apr 21, 2026
Merged

feat(docs+compliance): implementer DX — troubleshooting, known-ambiguities, idempotency opt-out (#2607, #2608)#2613
bokelley merged 2 commits into
mainfrom
bokelley/implementer-dx-2607-2608

Conversation

@bokelley

Copy link
Copy Markdown
Contributor

Summary

Two implementer-facing docs pages + a one-line storyboard edit that unblocks the idempotency missing-key vector through the reference SDK.

Closes #2607, closes #2608.

Signature error taxonomy

The troubleshooting guide references `RequestSignatureError` from `@adcp/client/signing` with `.code: RequestSignatureErrorCode` (not `signatureErrorCodeFromCause` — that symbol does not exist in the SDK). Full taxonomy: `request_signature_required`, `request_signature_header_malformed`, `request_signature_tag_invalid`, `request_signature_window_invalid`, `request_signature_key_unknown`, and 11 more.

Scope notes

  • `INVALID_STATE` vs `INVALID_TRANSITION`: `INVALID_STATE` is canonical for media-buy state rejections (`media-buy/specification.mdx`, `media-buy/media-buys/index.mdx`). `INVALID_TRANSITION` is specific to the `comply_test_controller` sandbox primitive (`comply-test-controller.mdx#state-machine-transitions`). Documented so authors don't accidentally emit `INVALID_TRANSITION` outside the test controller.
  • `comply-test-controller.mdx` is orphaned from docs.json nav (exists but isn't in either Implementation Patterns array). Not fixed in this PR — tracked separately.
  • Changeset is empty-form (`---\n---`) because this is a docs + runner-hint change, not a protocol-surface change.

Test plan

  • `npm run build:compliance` — storyboard scoping lint passes
  • `npm run test:docs-nav` — 15/15 pass (both new pages found in both nav arrays)
  • Pre-commit — `test:unit` (631/631) + `typecheck` pass
  • Reviewer: read the troubleshooting page top-to-bottom and flag any section where the error-text example doesn't match what implementers actually see in the wild

🤖 Generated with Claude Code

idempotency.yaml: add omit_idempotency_key: true to the missing-key
vector so the runner skips applyIdempotencyInvariant + SDK auto-inject.
The SDK already supports this opt-out (Step.omit_idempotency_key →
skipIdempotencyAutoInject); the storyboard declaration was the
missing piece. storyboard-schema.yaml documents the field.

docs/building/implementation/storyboard-troubleshooting.mdx: error
pattern → fix reference — unknown fixtures, RFC 9421 signature
challenges, envelope drift, context echo, capability mismatches,
requireAuthenticatedOrSigned, INVALID_STATE vs INVALID_TRANSITION.

docs/building/implementation/known-ambiguities.mdx: open spec gaps
with workarounds + issue links. Entries removed as issues close.

docs.json nav registers both pages (both Implementation Patterns
arrays updated). validate-your-agent.mdx cross-links via a new
"When a storyboard fails" section.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Apr 21, 2026

Copy link
Copy Markdown
Contributor

Schema Link Check Results

Commit: 64d24fd - docs: fix anchors, drop closed entry, add conformance cross-link

⚠️ Warnings (schema not yet released)

These schemas exist in source but haven't been released yet. The links will be broken until the next version is published:

  • https://adcontextprotocol.org/schemas/v3/enums/specialism.json
    • Schema exists in latest (source) but not yet released in v3
    • Action: This link will work after next 3.x release is published

To fix: Either:

  1. Wait for the next release and merge this PR after the release is published
  2. Use latest instead of a version alias if you need the link to work immediately (note: latest is the development version and may change)
  3. Coordinate with maintainers to cut a new release before merging

- storyboard-troubleshooting.mdx: #request-signing → #signed-requests-transport-layer,
  #state-machine-transitions → #scenarios (both were broken)
- known-ambiguities.mdx: remove past_start entry (closed by #2389), tighten intro
- conformance.mdx: add "When a storyboard fails" section linking to both pages
- troubleshooting footer: drop "under an hour" language

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant