Skip to content

docs(trusted-match): close two narrative-vs-schema drifts in TMP spec#5663

Merged
ohalushchak-exadel merged 1 commit into
mainfrom
ohalushchak-exadel/tmp-spec-narrative-drift
Jun 23, 2026
Merged

docs(trusted-match): close two narrative-vs-schema drifts in TMP spec#5663
ohalushchak-exadel merged 1 commit into
mainfrom
ohalushchak-exadel/tmp-spec-narrative-drift

Conversation

@ohalushchak-exadel

Copy link
Copy Markdown
Collaborator

Summary

Two narrative-vs-schema drifts in `docs/trusted-match/specification.mdx` where the prose field tables silently disagreed with the schema source of truth.

`property_type` enum prose missed `linear_tv`

`static/schemas/source/enums/property-type.json` lists `linear_tv` as a valid property type (with the description "Linear television stations and networks, identified by station ID or facility ID"), and the reference TMP implementation has had `PropertyTypeLinearTV` since the 3.1 schema bundle. The inline enum list on the ContextMatchRequest field table did not include it, so a reader relying on the prose would not know `linear_tv` was acceptable.

`cache_ttl` missing from ContextMatchResponse field table

The Caching section already says normatively:

Providers MAY include a `cache_ttl` field (integer, seconds) in Context Match responses to override the default. Routers MUST respect this value when present.

…and the field appears in the response schema and the reference implementation, but the ContextMatchResponse field table at lines 131–136 did not list it. Anyone reading the response shape from the table would conclude there was no override mechanism. New row documents the override semantics, the `0`-disables-caching convention, the schema-enforced 86400s ceiling, and links to the Caching section for the full TTL rules.

Surfaced by an audit comparing the spec against the AdCP 3.1 schema bundle and the reference TMP implementation. Companion to the recently merged `seller_agent_url` signing fix (#5660).

Test plan

  • `npm run lint:schema-links` passes
  • `npm run test:docs-nav` passes
  • `npm run check:owned-links` passes
  • Pre-commit (unit / server unit / typecheck) passes locally
  • Spec preview renders the two updated tables correctly

🤖 Generated with Claude Code

- ContextMatchRequest property_type prose enum: add linear_tv, which
  has been a valid value in the property-type enum schema (with the
  description "Linear television stations and networks…") but was
  missing from the inline list at the field table. Readers relying on
  the prose would not know linear_tv is acceptable.

- ContextMatchResponse field table: add a row for cache_ttl. The field
  is already normatively defined in the Caching section ("Providers MAY
  include a cache_ttl field… Routers MUST respect this value when
  present") and emitted by the reference implementation, but the
  response field table did not list it. The new row documents the
  override semantics, the 0-disables-caching convention, the
  schema-enforced 86400s ceiling, and links to the Caching section for
  the full TTL rules.

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

mintlify Bot commented Jun 23, 2026

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
adcp 🟢 Ready View Preview Jun 23, 2026, 6:46 PM

💡 Tip: Enable Workflows to automatically generate PRs for you.

@aao-release-bot aao-release-bot Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clean drift-closure. The field tables now agree with the schema source they were silently contradicting — prose tables are load-bearing, and a reader who trusts them shouldn't be misled about the wire shape.

Things I checked

  • property_type: static/schemas/source/enums/property-type.json:9 lists linear_tv between radio and streaming_audio. The new prose inserts it in the exact same position. Match.
  • cache_ttl: static/schemas/source/tmp/context-match-response.json declares integer, minimum: 0, maximum: 86400, "router MUST use this value instead of its default," "Set to 0 to disable caching." The new row's three claims — MUST-use, 0 disables, 86400 ceiling — track the schema verbatim.
  • Schema property order (offerscache_ttlsignals) matches the new table row order. Right shape.
  • Body/table coherence: the Caching section (specification.mdx:735-738) already carried the MUST/0-disables/86400 rules normatively. The table now agrees with the body it previously contradicted, and the new row links back to #caching (anchor exists at L730).
  • No schema source touched, no wire change, purely additive prose. No changeset required — docs/trusted-match/** is outside the docs/reference/** changeset gate.
  • Markdown integrity: both edits are 4-column rows matching the header; no unescaped pipes in the new descriptions.

Minor nits (non-blocking)

  1. Default TTL value omitted from the new row. The schema description names a "default 5-minute cache TTL"; the new cache_ttl row says "router's default" without the number. Not drift — the override semantics are correct and the concrete default belongs in the Caching section — but a reader sizing 0 against the default has to scroll. Worth a half-sentence if you touch this again.

Test plan

  • The one unchecked box — "Spec preview renders the two updated tables correctly" — is the cosmetic render of a two-row table addition. Markdown is well-formed (verified column counts), so this is non-blocking. Confirm on preview before merge.

LGTM.

@ohalushchak-exadel ohalushchak-exadel merged commit 0c099b4 into main Jun 23, 2026
20 checks passed
@ohalushchak-exadel ohalushchak-exadel deleted the ohalushchak-exadel/tmp-spec-narrative-drift branch June 23, 2026 18:50
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