Skip to content

docs: layered architecture, decision page, version-adaptation guide#1437

Merged
bokelley merged 4 commits into
mainfrom
bokelley/sdk-stack-doc-set
May 3, 2026
Merged

docs: layered architecture, decision page, version-adaptation guide#1437
bokelley merged 4 commits into
mainfrom
bokelley/sdk-stack-doc-set

Conversation

@bokelley

@bokelley bokelley commented May 3, 2026

Copy link
Copy Markdown
Contributor

Summary

Reorients adopters around how much of L0–L3 they want to inherit from @adcp/sdk vs. write themselves. Targets two recurring wrong conclusions:

  1. Early implementers who built before the SDKs were mature and have a frozen-in-time picture of "what the SDK does." Most of L3 (lifecycle state machines, idempotency, conformance test surface, RFC 9421 baseline, expanded error catalog) was added with AdCP 3.0.
  2. New implementers who say "I'll roll my own AdCP agent, I don't need an SDK" without seeing the L0–L3 scope.

What's in it

  • docs/architecture/adcp-stack.md (new) — full L0–L4 reference. Each layer: what it does, what's in it, what an SDK at that layer should provide, what you give up by skipping it. Includes the version-adaptation summary and a "what early implementers underestimate" punch list.
  • docs/where-to-start.md (new) — short decision page. Three questions (caller vs. agent / value-add / pre-existing hand-rolled), recommended path for ~95% of adopters, "what you give up by going lower" cost table.
  • docs/guides/VERSION-ADAPTATION.md (new) — code-level recipes for the three version-handling mechanisms:
    1. Per-call adcpVersion pinning + bundle-gated runtime acceptance + ConfigurationError semantics
    2. @adcp/sdk/server/legacy/v5 subpath co-existence imports
    3. Wire-level supported_versions declaration with VERSION_UNSUPPORTED envelope and VersionUnsupportedError typed throw
  • Wiring — top-of-page callouts on index.md, getting-started.md, guides/BUILD-AN-AGENT.md route mis-aimed readers to where-to-start.md without blocking on-target ones. Cross-link to CONFORMANCE.md from L3 + early-implementer item Fix Fly.io deployment timeout issues #2.

Reviewed by

  • DX expert: caught three signature/semantics errors in the version-adaptation code samples (createAdcpServerFromPlatform(platform, opts) two positional args, bundle-gated vs. major-gated runtime acceptance, VersionUnsupportedError pre-flight throw alongside the envelope read). All addressed.
  • Docs expert: caught the redundant layer table between where-to-start.md and adcp-stack.md (resolved by single-sourcing in the architecture doc), the "no single SDK" / "95% start at L4" tone tension (resolved with a bridge sentence), and a broken protocol-overview.md link in index.md (resolved by removal). Cross-linking gaps to CONFORMANCE.md filled.

Notes for reviewers

  • Code samples were verified against src/lib/version.ts, src/lib/utils/adcp-version-config.ts, src/lib/core/SingleAgentClient.ts, src/lib/server/create-adcp-server.ts, src/lib/server/decisioning/runtime/from-platform.ts, and examples/decisioning-platform-mock-seller.ts.
  • docs/architecture/adcp-stack.md was originally drafted on a sibling feature branch; this PR brings the file (with the reviewer-driven edits) into main directly. Order with that branch is fine either way — feature branch will rebase cleanly.

Test plan

  • Markdown renders cleanly on the docs site
  • All internal links resolve (./architecture/adcp-stack.md, ./guides/VERSION-ADAPTATION.md, ./where-to-start.md, ./guides/CONFORMANCE.md, ./guides/BUILD-AN-AGENT.md#two-paths)
  • No conflict with the Account.mode feature branch on merge

🤖 Generated with Claude Code

@bokelley bokelley force-pushed the bokelley/sdk-stack-doc-set branch from e4dba7f to d843ee7 Compare May 3, 2026 12:57
bokelley and others added 4 commits May 3, 2026 09:15
…tion guide

Reorients adopters around how much of L0–L3 they want to inherit from the SDK
vs. write themselves. Targets two recurring wrong conclusions: early
implementers whose mental model of the SDK is frozen at AdCP 2.5, and new
implementers who treat AdCP as a thin protocol.

- New: docs/architecture/adcp-stack.md (full L0–L4 reference + version model)
- New: docs/where-to-start.md (decision page; three questions, cost table)
- New: docs/guides/VERSION-ADAPTATION.md (recipes for the three mechanisms)
- Wiring: callouts on index.md, getting-started.md, guides/BUILD-AN-AGENT.md
  route mis-aimed readers without blocking on-target ones
- Cross-link: CONFORMANCE.md from L3 layer + early-implementer punch list

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…filled coverage matrix, softened tone)

After running three builder personas (early implementer, greenfield builder,
SSP PM) over the doc set, all three pointed at the same shaped gaps:

- No migration path for hand-rolled adopters → adds
  docs/guides/MIGRATE-FROM-HAND-ROLLED.md (inventory, lowest-risk-first
  swap order, conflict modes, intermediate conformance states,
  when-not-to-migrate).
- "~4 person-months" cost claim was unsourced → decomposed into a
  per-component breakdown table in adcp-stack.md with stated assumptions.
- SDK coverage matrix was a template → filled with current rows for
  @adcp/sdk 6.6.x (6.7 in flight), Python adcp 4.x in flight, adcp-go
  in development, with a "last updated" line.
- One preachy line in where-to-start.md → softened to name the
  legitimate cases for going lower.

Cross-links updated: where-to-start.md Q3 and the recommended-path
section both point at the new migration guide; the cost-breakdown
section is referenced from where-to-start.md and from "what early
implementers underestimate."

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
6.7.0 published to npm; row promoted from "6.6.x GA, 6.7 in flight" to
"6.7.0 GA". Last-updated line refreshed.

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

Closes the two residual gaps surfaced by the early-implementer persona
in round-2 review:

- §4 "Rollback per step" — per-swap revert mechanism table (revert
  flag, what state may have leaked, what to verify), the 2 a.m.
  on-call recipe, and the "don't plan irreversible swaps" rule.
- §6 "Worked example: two buyers, mid-swap" — concrete code +
  shape-comparison table for buyer A on 2.5 / buyer B on 3.0 during
  step 3 of the swap order, showing how `adcpVersion` pinning + the
  SDK's adapters keep handler code on a single canonical shape.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@bokelley bokelley force-pushed the bokelley/sdk-stack-doc-set branch from d843ee7 to 12577cf Compare May 3, 2026 13:15
@bokelley bokelley merged commit aa85657 into main May 3, 2026
10 checks passed
@bokelley bokelley deleted the bokelley/sdk-stack-doc-set branch May 3, 2026 13:21
bokelley added a commit that referenced this pull request May 3, 2026
* Revert "docs: layered architecture, decision page, version-adaptation guide (#1437)"

This reverts commit aa85657.

* docs: remove now-redundant adcp-stack.md, point readers at protocol docs

Beyond the strict revert in the previous commit:

- Removes docs/architecture/adcp-stack.md (introduced in #1436). The same
  layered-architecture content now lives canonically at
  /docs/building/sdk-stack on the protocol docs site, language-agnostic.
- Adds a top-of-page pointer in docs/index.md so SDK readers find
  /docs/building/sdk-stack, /where-to-start, /migrate-from-hand-rolled,
  and /version-adaptation on the protocol docs site for protocol-level
  orientation. The remaining pages here stay @adcp/sdk-specific
  (TypeScript/JavaScript).
- Empty changeset (docs-only).

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

---------

Co-authored-by: Brian O'Kelley <brian@agenticadvertising.org>
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

Development

Successfully merging this pull request may close these issues.

1 participant