Notes from the implementer seat — the spec-to-agent-to-protocol loop THE IMPLEMENTER LOOP The spec — what the spectator seat reads once THE SPEC 3.0 GA · 3.1 RC A live signals agent running the conformance storyboards — passes earn the registry listing; the failure is the discovery Live agent STORYBOARD SUITE discovery · pass activation · pass schema · pass errors · pass ! freshness gap found The gap flows back upstream: a merged schema field, a P0 grader fix, an open RFC UPSTREAM merged field P0 fix open RFC the next spec version carries what the seat found “Show me your issues, not your deck.”
Agentic Advertising

Notes from the Implementer Seat

· 5 min read
The gist

Standards takes written from the spectator seat are weightless — nothing happens when you're wrong. Running a live AdCP signals agent is different: the freshness gap you file becomes a merged schema field, the compliance grader that wrongly grades your perfect run becomes a P0 fix, and your wire-size data reshapes a design in review. The diligence question for any agentic vendor: show me your issues, not your deck.

On this page

Most standards commentary is written from the spectator seat. You read the spec, you form a take, you publish the take. The take is usually fine. It is also usually weightless, because nothing happens to you when you are wrong.

The implementer seat is different. I build and operate a live AdCP signals agent — the No Fluff Advisory adaptor, listed in the AAO registry, with all-pass runs on the 3.0 GA and 3.1.0 release-candidate storyboard suites. When the protocol has a gap, my agent fails a storyboard at 2am. When the conformance grader has a bug, my dashboard says “Degraded” in front of anyone who looks. The protocol bills me for my opinions.

This essay is what that seat has taught me — told through the actual issues and pull requests, because in standards work the receipts are the argument.

The freshness field nobody had

Run a signals agent for a while and you notice something the spec review never surfaced: a buyer agent receiving a signal record has no standard way to know how fresh it is. Is this audience definition from yesterday or from March? In a market where agents act on signals without a human sanity-check, that is not a metadata nicety. It is a trust gap.

So I filed the gap analysis (#5248) and authored the fix: a last_updated field on signal-definition (PR #5249), merged and shipping in the 3.1.0 line since rc.7.

The lesson: protocol gaps appear at runtime, not in document review. Nobody reads a schema and thinks “this lacks a freshness contract.” You only feel it when your agent has to decide whether to act on a record of unknown age.

When the grader lies

In June, a rollup regression in the compliance grader started rendering all-pass single-protocol runs as “Degraded.” My agent had a perfect run and a failing grade. For a registry-listed agent, that is not cosmetic — conformance status is the product.

I root-caused it to the exact commit that introduced it, filed it (#5429, triaged P0 by the maintainers), and authored the merged fix (PR #5444).

The lesson: the conformance tooling is part of the standard. A spec with a buggy grader is a buggy spec, operationally — because what implementers and buyers experience is the grade, not the prose. If you are evaluating an agentic vendor, ask who fixes the test harness when it is the harness that is wrong.

Deprecating politely

Earlier in the cycle, the webhook-signing guidance still carried a deprecated HMAC framing. I inventoried every place it leaked into the storyboards and SDK on-ramps (#4270) and drafted the PRs pointing the defaults at RFC 9421 (#4273, #4275). Those drafts were closed in favor of the maintainer implementation — which is exactly how it should work — and the 3.0.9 line realigned away from HMAC.

The lesson: sometimes your contribution is the case, not the commit. Standards bodies run on maintainer trust; an implementer who insists on landing their own patch over making the argument well is optimizing for credit instead of the protocol.

A test suite is only as real as its edge cases

Signals-only agents used to fail storyboards that had nothing to do with them — media-buy gating applied to agents that never buy media, error-handling tracks gated behind tasks a signals agent does not implement, envelope assertions against transport responses where the field does not exist.

Six root-caused reports later (#2916, #3350, #4009, and earlier #2535, #3999, #4065), the 3.1.0 suite skips non-applicable gating and gives signals-only agents dedicated error-handling and schema-validation storyboards.

The lesson: a standard claims to support a class of participant; the test suite decides whether that claim is true. Single-protocol agents are the canary for whether “modular” is real.

Review is where implementers earn their seat

The most consequential signals work in the current cycle — the signal-definition epistemic and provenance layer (#5017) — is maintainer-authored, not mine. My contribution was review: field-level schema notes, and one piece of data nobody writing the document could have had — actual wire sizes from a live agent. Five enriched signals weighed in at 88 KB against a 64 KB probe ceiling. That number is what drove the progressive-disclosure design.

The lesson: implementers bring evidence to review that no amount of careful reading can produce. And crediting the author accurately is not modesty — in a working group, overclaiming is how you lose the seat.

What I am proposing next

Three open threads, stated as proposals because that is what they are:

  • Runtime attestations — verifier-signed signal-quality evidence on check_governance (#5418; the issue is titled for 3.1, the posted RFC proposes it as a 3.2 candidate). If agents are going to act on signals, the quality evidence should travel with the signal.
  • A revocation primitiverevoke_activation (#4203), because governed activation without governed un-activation is half a contract. Alongside it, a Measurement Feedback Signal (#4296).
  • Migration coordination — the RFC 9421 adoption telemetry and threshold work (#4205) and the JWKS adoption baseline that gates chain-of-custody work (#4206). Deprecations without adoption data are just wishes.

All of these may merge, change, or close. That is the nature of the seat.

The operator takeaway

If you are a buyer, a board, or an operator evaluating anyone’s agentic advertising story — including mine — the diligence question is simple: show me your issues, not your deck. A vendor who runs a live agent against the public conformance suite has receipts: merged PRs, root-caused bugs, review contributions with data, proposals that survived contact with maintainers. A vendor who does not will show you architecture slides.

The implementer seat is slower than the spectator seat. It is also the only seat where you find the freshness gaps, catch the grader lying, and learn what five signals actually weigh on the wire.

That discomfort is the point.


The full contribution record, with statuses validated against the public AdCP repository, lives on the AdCP protocol guide. The agent itself is documented at Building: AdCP Signals Adaptor.