Repository navigation
docs: explain optional gender targeting on 3.2 - #7926
Conversation
c68fd4e to
dbeca81
Compare
There was a problem hiding this comment.
Ladon verdict: Escalate to human review
Escalate — new optional capability added to a stable maintenance line requires human review.
This docs-only PR adds a 227-line section to the stable 3.2.x targeting guide (docs/media-buy/advanced-topics/targeting.mdx) documenting a brand-new optional ext.adcp gender-targeting agreement. While mechanically clean — the demographics.age core shape validates, targeting.json is additionalProperties:true so ext.adcp.demographics.gender is valid open-ext JSON (no schema drift), anchors/cross-links resolve, naming/brand/character conventions are clean, and fail-closed semantics (UNSUPPORTED_FEATURE before mutation, ext preserved in signing/idempotency hashes) are correct — the substance is a new normative capability, not errata.
Per the repo's patch-eligibility rule, a new field / new normative requirement on a stable schema line is not patch-eligible and is treated as a non-editorial, breaking-class decision. Introducing an entirely new optional-capability spec to a stable maintenance guide is a protocol-policy decision whose decision-class and patch-eligibility call is a human act (constitution: Breaking/Normative-class changes are never auto-approved absent review_decision: APPROVED). review_decision is unknown/none here, so the gate is not satisfied.
Medium finding
- docs/media-buy/advanced-topics/targeting.mdx:30 — 227-line new optional-capability spec added to the stable 3.2.x maintenance guide
Escalation reasons
- New optional gender-targeting capability (bis, not errata) added to the stable 3.2.x maintenance line — patch/decision-class eligibility is a human ratification call, not auto-approvable.
Follow-up (low, non-blocking): the stable guide hard-links to blob/main (L37), mutable content the PR itself notes is in flux.
Medium findings
- docs/media-buy/advanced-topics/targeting.mdx:30 — 227-line new optional-capability spec added to the stable 3.2.x maintenance guide
Why human review
- New optional gender-targeting capability (bis, not errata) added to the stable 3.2.x maintenance line — decision-class/patch-eligibility is a human ratification call per the constitution's never-auto-approve bar for non-editorial normative changes; review_decision is not APPROVED.
This reverts commit ee0ca50, reversing changes made to a4af1a1. The 3.2.9 Version Packages merge is quarantined: its reviewed head 4eac700 is based on 241e5eb, but the merge's first parent is a4af1a1, and the trees differ (adcontextprotocol#7926). Release run 42545984083 stopped at "Require human approval for committed release artifacts" before any tag, GitHub Release or R2 upload. While 3.2.x commits an untagged 3.2.9, every later push fails the stranded-release fence and Changesets cannot regenerate the release PR. Reverting returns 3.2.x to package 3.2.8 with the two pending changesets, so Changesets regenerates 3.2.9 from the current branch for fresh final-head maintainer review. v3.2.9 was never tagged, so check-immutable-release-artifacts.cjs allows deleting its dist artifacts. dist/schemas/index.json is regenerated with buildRootSchemaDiscovery(): 3.1.32 listed (adcontextprotocol#8825), 3.2.9 removed, aliases back to 3.2.8. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Forward-merges the published 3.2.9 release (v3.2.9 = 39e9353) and every 3.2.x maintenance commit before it. Supersedes the a4af1a1 forward-merge in adcontextprotocol#8820, which is an ancestor of v3.2.9. Release records: - dist/compliance/3.2.9, dist/schemas/3.2.9 and the signed dist/protocol/3.2.9.tgz tuple are taken from v3.2.9 unchanged. - dist/schemas/index.json and latest.json are regenerated (forward-merge-release-records.cjs schema-discovery). - CHANGELOG.md is main's file plus the 3.2.9 block. - package.json, package-lock.json, static/schemas/source/index.json: main's. - static/compliance/published-versions.json: main's. 3.2.x's only extra entry is 3.2.9, which is registered in a separate commit after qualification. Content conflicts, all resolved to main's file: - docs/media-buy/advanced-topics/targeting.mdx: the 3.2.x side is exactly adcontextprotocol#7926, 3.2-only optional gender agreement docs; main carries core gender targeting (adcontextprotocol#7925) instead. - static/compliance/source/universal/error-compliance-signals.yaml: main's is the adcontextprotocol#8581 backport content plus main-only adcontextprotocol#8601 (version 1.0.2 and the signals capability gate). - tests/sdk-runner-capability-gates.test.cjs: the only 3.2.x-only test is the SDK 14 variant of main's "signals discovery error bundle passes" test. - server/tests/unit/storyboards.test.ts: adcontextprotocol#8825's 3.2.x-shaped 3.1.32 integration tests; main already integrated 3.1.32 and 3.1.33 with its own test shape, and the non-conflicting adcontextprotocol#8825 hunk is already on main. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Makes the optional AdCP-owned 3.2 gender agreement self-contained in the stable targeting guide. The 3.3 coherence decision removes the gender
ext.adcpbinding and its documentation from main, so this guide no longer links to that removed section or promises a published gender namespace schema.Cooperating 3.2 buyers and sellers explicitly negotiate
demographics.gender.v1, advertise product-scoped native capabilities, preserve exact requested/applied readback, and apply the existing custom gender-policy mechanism. The vocabulary includesfemale,male, andnon_binary, with explicit independent unknown membership and rejection of unsupported or approximate execution. The agreement remains optional and documentation-only; 3.2 core remains age-only.Migration uses the experimental 3.3 core surface from #7925. This does not introduce a second representation into 3.3, a baseline 3.2 requirement, a new source-schema binding, or a released artifact/version change.
Validation: all 14 schema-tagged examples on the stable page pass; the snippet checker reports no failures (41 non-executable blocks skipped). Normal commit hooks and both typechecks pass (including the hook's successful serial retry of an existing statistical diagnostic that hit its time ceiling under parallel load). Fresh stable CI follows the pushed head.
Rebased onto current
3.2.x. Keep draft and do not merge while #7925 and release-manager landing order remain pending. No changeset, package, source schema, registry, ordist/changes.Draft disposition — 2026-10-09
This draft is retained for the stated workstream. Continue on this existing branch; no parallel PR is needed. This disposition does not waive CI, review, migration, or release gates.