Skip to content

docs(aao-verified): reconcile (Spec)/(Live) qualifier framing across spec docs + add 3 sections#3537

Merged
bokelley merged 5 commits intomainfrom
bokelley/aao-verified-relaunch
Apr 29, 2026
Merged

docs(aao-verified): reconcile (Spec)/(Live) qualifier framing across spec docs + add 3 sections#3537
bokelley merged 5 commits intomainfrom
bokelley/aao-verified-relaunch

Conversation

@bokelley
Copy link
Copy Markdown
Contributor

Summary

When PR #2153 landed the AAO Verified badge implementation, it shipped a fully reframed aao-verified.mdx using the (Spec) / (Live) qualifier model — one brand mark with two composable axes, replacing the earlier "AdCP Conformant + AAO Verified" two-marks framing from #3001. The reframing landed cleanly in aao-verified.mdx itself but did not propagate to all the docs that cross-reference the mark, leaving conformance.mdx internally inconsistent and several pages still using the old two-marks language.

This PR closes that drift and adds three sections from #3001 that didn't survive the rename.

What's in this PR

1. Reconcile internally-contradictory conformance.mdx

The page had a "Two words, not three" intro using (Spec) / (Live) qualifiers (lines 11–23) followed immediately by a "Two marks: AdCP Conformant and AAO Verified" section (lines 25–40) that contradicted it. Replaced the contradicting section with a single "Storyboard conformance vs. AAO Verified" pointer in qualifier terms.

2. Reframe stale call-outs to the new qualifier model

File Change
docs/building/build-an-agent.mdx "AdCP Conformant mark + AAO Verified" → (Spec) + (Live)
docs/building/implementation/seller-integration.mdx same

3. Qualify (Live)-specific references in accounts/overview.mdx and the schema

Six call-sites in docs/accounts/overview.mdx plus two in static/schemas/source/core/account-authorization.json referenced "the AAO Verified mark" / "AAO Verified attestation" / "AAO Verified observability" / "AAO Verified readiness" specifically meaning the (Live) axis (because they all pivot on the attestation_verifier scope, which is a (Live)-only construct). Qualified those to (Live). Generic references to AAO Verified as the umbrella mark stay unqualified.

4. Add three sections to aao-verified.mdx that #3001 had

5. Update changeset

Updated .changeset/aao-verified-mark.md (already queued for 3.1.0-beta) to describe the (Spec)/(Live) qualifier model so the release notes reflect the actual shipped framing rather than the earlier two-marks draft.

Why a focused doc PR rather than re-landing #3001

PR #3001 was merged into a stacked branch alongside #2994 (now landed as 63e58c3 on main), but its content was largely subsumed by PR #2153 a few hours later. The aao-verified.mdx page on main is richer than what #3001 had — 293 vs 232 lines, with full badge/JWT/SVG/registry-filter coverage. The actual gap was: PR #2153 reframed aao-verified.mdx end-to-end but missed the cross-references on adjacent pages and three sections from #3001 that were valuable but not blocking. This PR closes those.

Closes the framing drift; supports #2965.

Test plan

  • npm run test:schemas — 7/7 pass
  • npm run test:json-schema — all $schema-bearing JSON blocks validate
  • npm run test:examples — 34/34 pass
  • npm run test:composed — 32/32 pass
  • Pre-push broken-links check passes locally
  • CI confirms the same on remote
  • Voice/consistency re-read after merge

🤖 Generated with Claude Code

bokelley and others added 5 commits April 29, 2026 16:40
…spec docs + add 3 sections

When PR #2153 landed the AAO Verified badge implementation, it shipped a fully reframed `aao-verified.mdx` using the **(Spec)** / **(Live)** qualifier model — one brand mark with two composable axes, replacing the earlier "AdCP Conformant + AAO Verified" two-marks framing from #3001. The reframing landed cleanly in `aao-verified.mdx` itself but did not propagate to all the docs that cross-reference the mark, leaving `conformance.mdx` internally inconsistent and several pages still using the old two-marks language.

This PR closes that drift.

**`docs/building/conformance.mdx`** — replaces the contradictory "Two marks: AdCP Conformant and AAO Verified" section (which directly contradicted the (Spec)/(Live) intro a few lines above) with a single "Storyboard conformance vs. AAO Verified" section that explains the relationship in qualifier terms: storyboards back **(Spec)**; **(Live)** is observed continuously and is opt-in; (Spec) is a prerequisite for (Live).

**`docs/building/build-an-agent.mdx`** and **`docs/building/implementation/seller-integration.mdx`** — reframed the AAO Verified call-out in each from "the AdCP Conformant mark" + "AAO Verified" to "**(Spec)** qualifier" + "**(Live)** qualifier". Same content, current naming.

**`docs/accounts/overview.mdx`** — qualified six call-sites where "AAO Verified mark" / "AAO Verified attestation" / "AAO Verified observability" / "AAO Verified readiness" specifically meant the (Live) axis (because they all pivot on the `attestation_verifier` scope, which is a (Live)-only construct). Generic references to AAO Verified as the umbrella mark stay unqualified.

**`static/schemas/source/core/account-authorization.json`** — same qualification in the schema's top-level description and the `StandardScope.attestation_verifier` description. The (Live) qualifier is what `attestation_verifier` actually binds to; (Spec) doesn't grant any seller-side scope (it's run against a test-mode endpoint).

**`docs/building/aao-verified.mdx`** — added three sections that #3001 had but didn't make it through #2153's reframing:

1. **"How to claim each qualifier"** — concrete step-by-step for both (Spec) and (Live), in one place. Previously the steps were scattered across the TL;DR Tip, the eligibility tables, and the enrollment prose.
2. **"What AAO Verified is not"** — explicit out-of-scope list (regulatory/financial attestation, hard ground-truth reconciliation in v1, certification beyond AAO membership, SLA, due diligence substitute). Prevents misreading the mark as more than it claims.
3. **"Relationship to supporting specs"** — cross-refs to the GitHub issues that back the (Live) machinery: #2963 (account-ownership scope), #2964 (authorization envelope + attestation_verifier scope + RBAC errors), #2902 (filter assertions), #3009 (multi-subscriber webhooks for 4.0). Different from the existing "Relationship to other surfaces" section, which is doc cross-refs only.

**Changeset** — updated the existing `.changeset/aao-verified-mark.md` to describe the (Spec)/(Live) qualifier model so the 3.1.0-beta release notes reflect the actual shipped framing rather than the earlier two-marks draft.

Validation: `test:schemas` ✅ (7/7), `test:json-schema` ✅, `test:examples` ✅, `test:composed` ✅.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Required by Check for changeset CI gate. Modifying the existing
aao-verified-mark.md changeset doesn't count as a new entry in the
changesets tooling — it needs a distinct file per PR. Doc-only,
additive, no package release implied.

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

# Conflicts:
#	docs/building/conformance.mdx
… lifecycle-running tracked as #3561

Review feedback on PR #3537: `attestation_verifier` today is the reporting half of AAO Verified (Live) — the engine observes campaigns the seller has already trafficked, reads delivery, and attaches a verification webhook. It deliberately cannot create campaigns, attach creatives, or modify budgets, which is the right shape for brownfield Path B (today's enrollment-based observation).

But it's not enough for the AAO-operated canonical-campaign runner (#3046), where the engine traffics canonical PSAs end-to-end through a seller's live agent. That role needs a broader write scope — full create_media_buy / sync_creatives / update_media_buy lifecycle.

Filed [#3561](#3561) to track the complementary `attestation_runner` scope. Added a Note to the existing `attestation_verifier` section pointing at it so readers don't infer "this one scope covers all of (Live)."

The runner-side scope lights up alongside the canonical-campaign runner itself; today's brownfield enrollment continues to need only `attestation_verifier`. No change to current shipping behavior.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@bokelley bokelley merged commit 6e06c99 into main Apr 29, 2026
18 checks passed
@bokelley bokelley deleted the bokelley/aao-verified-relaunch branch April 29, 2026 23:33
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