docs(protocol): add reference-data design principle (own the namespace, not the corpus)#5708
Merged
Merged
Conversation
…e, not the corpus) Adds supporting principle 8 to design-principles.mdx: AdCP owns the namespace and the resolution contract for reference data, not the underlying code↔name corpus, unless AdCP itself mints the values. Codifies the boundary surfaced by the declined geo-metro registry proposal (#5627) so future reference-data RFCs (postal, places, app/property lists) are decided by the rule rather than re-litigated. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Adds supporting principle 8 to the design-principles page; clean docs-only change that codifies the reference-data boundary instead of re-litigating it per RFC. Right call to write down the rule once — own the namespace and resolution contract, defer the corpus — so #5383, #5588, and the app/property RFCs inherit a decision instead of reopening one.
Things I checked
- Every load-bearing factual claim against the actual schemas, not the prose:
geo-delivery-metrics.json:37listsgeo_codeinrequired;geo_namesits inproperties(L30) but notrequired. The "optionalgeo_namebeside requiredgeo_code" claim holds.v1-canonical-mapping.jsonis AAO/AdCP-authored ("Authoritative AAO-published mapping") and additive — its governance note states "Entries are additive; once published they are not removed (they may be markeddeprecated: trueif superseded)." The "we mint both sides, set is additive" framing is accurate.
- Intro arithmetic: principles 1–2 lead, 3–8 are the supporting set. "Five → Six supporting principles" and the new
### 8.header are consistent (L50–L121 carry 3–7, new block adds 8). - Changeset gate:
docs/protocol/is deliberately absent fromPROTOCOL_SCOPED_PATHSinscripts/check-changeset-protocol-scope.cjs:8-19(onlydocs/reference/is gated, L12). The PR's "no changeset, empty changeset would trip the gate" reasoning is correct — no wire-touching path changed. - No
static/schemas/source/**touched, so no spec-vs-docs drift surface and noad-tech-protocol-experttrigger.
Triage: docs-only (docs/protocol/*.mdx, no schema or reference paths) → skip-everything list, no experts. Verified the factual claims directly since the principle leans on schema reality.
Minor nits (non-blocking)
- "reference-data RFCs (postal #5383, places #5588, app/property lists)". The PR body names these as the consumers of the rule, but the principle text itself doesn't link them — a reader landing on principle 8 cold won't see the pending RFCs it's meant to adjudicate. Worth a one-line "see also" if those RFCs cite back to this principle.
LGTM. Nit noted, non-blocking.
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
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.
Why
This codifies the boundary we worked through after declining the AAO geo-metro registry proposal (#5627, closed): a protocol should own the namespace and the resolution contract for reference data, not the underlying corpus of code↔name tables — unless AdCP itself mints the values. It exists so the next reference-data RFCs (postal #5383, places #5588, app/property lists) are decided by a reusable rule instead of re-litigated case by case.
What
Adds supporting principle 8 — "Reference data: own the namespace and the resolution contract, not the corpus" to
docs/protocol/design-principles.mdx, following the page's existing rule / why / what-it-rules-out / when-you'd-push / reviewer-test structure, and bumps the "five → six supporting principles" counts.The principle:
v1-canonical-mapping.jsonas the one legitimate "we mint both sides" case).Notes that the protocol already does this right on the read side (
geo-delivery-metricscarriesgeo_namebesidegeo_code), and reuses the anti-centralization framing of principle 5.Review
Reviewed by docs-expert, ad-tech-protocol-expert, code-reviewer, and security-reviewer. Every factual claim was verified against the schemas (
geo-delivery-metrics,targeting,v1-canonical-mapping, capabilities); three should-fixes addressed (the "closed→additive" correction, optional-geo_name, "Albany names two DMAs (NY and GA)").No changeset:
docs/protocol/is not aPROTOCOL_SCOPED_PATH, so this is a non-protocol docs change (an empty changeset would trip the gate).Related: closes the framing question behind #5627; decision recorded buyer-side in scope3data/agentic-api#4576.
🤖 Generated with Claude Code