docs(proposals): trust-boundary section + deprecate Account.sandbox#1516
Merged
Conversation
Three doc-tidy items from PR #1453's expert reviews. No behavior change. - docs/proposals/lifecycle-state-and-sandbox-authority.md: adds an explicit "Trust boundary" section. Names what the boundary IS (resolver-stamped Account.mode, sourced from the seller's tenant store keyed by authenticated principal) and what it is NOT (wire AccountReference.sandbox, account-id prefix shape, env vars). Calls out the resolver-discipline gotcha — spreading buyer input into the resolved account effectively moves the trust boundary onto the wire, defeating the framework gate. - Account.sandbox in src/lib/server/decisioning/account.ts is now @deprecated in favor of Account.mode. Existing adopters keep working via getAccountMode's legacy fallback. Wire-side AccountReference.sandbox is unchanged — it's part of AdCP's natural-key disambiguation per core/account-ref.json. - Changeset documents the deprecation queue for the next major. Filed separately upstream: adcontextprotocol/adcp#4028 (storyboard coverage gap — no scenario exercises comply_test_controller denial against live-mode accounts). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Three doc-tidy items from PR #1453's expert reviews. No behavior change.
docs/proposals/lifecycle-state-and-sandbox-authority.mdAdds an explicit Trust boundary section at the top of the cross-implementation story. Names what the boundary IS (resolver-stamped
Account.mode, sourced from the seller's tenant store keyed by authenticated principal) and what it is NOT:AccountReference.sandboxflag (buyer input — buyer has every incentive to claim sandbox status when calling test-only surfaces against a live tenant).sandbox_<id>prefix or similar seller-internal convention.ADCP_SANDBOX=1(process-scoped, wrong granularity).Calls out the resolver-discipline gotcha — spreading buyer input into the resolved account effectively moves the trust boundary onto the wire and defeats the framework gate. Includes a wrong/right code example.
Account.sandboxdeprecationServer-side
Account.sandbox(insrc/lib/server/decisioning/account.ts) is now@deprecatedin favor ofAccount.mode. Existing adopters stampingsandbox: truekeep working viagetAccountMode's legacy fallback. The field will be removed in a future major.Wire-side
AccountReference.sandboxis unchanged — it's part of AdCP's natural-key disambiguation per the spec'score/account-ref.json. Deprecation is server-side only.Changeset
Documents the deprecation queue so the next major-version bump knows what to drop.
Out of scope
Two related items the protocol-expert review flagged that don't fit this PR:
docs/architecture/adcp-stack.md— that doc lives upstream on adcontextprotocol.org's protocol docs site, not in this repo. Filing as a separate upstream issue.adcontextprotocol/adcp#4028.Test plan
npm run buildcleannpm run format:checkcleanRefs
🤖 Generated with Claude Code