Repository navigation
docs(versioning): state the rules for what changes between releases - #8704
Conversation
A minor only adds. To replace a field, add the new one and deprecate the old one, and emit both until the next major. Removals and breaking changes happen in a major. Put those rules at the top of the versioning page and bring the scope, stability and deprecation sections into line with them. Remove text on that page that told SDKs what to do or described translating between versions. Wire behavior is unchanged.
There was a problem hiding this comment.
Ladon verdict: Comment (human reviewer recommended)
Comment — governance-class question requires a human eye.
This is a clean docs-only PR aligning the versioning page with DR-0036 (minor = adds only; closed schemas stay closed within a major; removals/breaking wait for a major). The create_media_buy.mdx correction is verified correct against canonical-metric-qualifier.json (additionalProperties: false), all new anchors resolve, internal consistency holds, and a correct patch-scope changeset is present. The reviewer surfaced no Critical/High/Medium code findings.
Why not approve: the reviewer explicitly flagged the patch-vs-Normative decision-class question as a governance gate for the arbiter — DR-0036 is status: proposed / pending ratification. Under the repo's constitution, a PR that decides a question of protocol policy/convention or encodes a not-yet-ratified decision record is a human act, not an auto-merge. review_decision is REVIEW_REQUIRED, not APPROVED. These normative docs edits codify the still-pending DR-0036 interpretation of what "minor" vs "major" may change, so a human should confirm ratification before merge rather than letting it auto-approve on a mechanically clean diff.
No blocking findings exist, so this is not request-changes. high_risk is true only via a (modified) docs/reference file with zero medium-or-higher findings, so the high-risk flag alone does not escalate. Surfacing for human sign-off on the governance/ratification status.
Medium findings: none.
bokelley
left a comment
There was a problem hiding this comment.
Approved on Brian's instruction. The WG confirmed the four rules on Nov 9 with no objections. The same session decided that 3.x opens the schemas that were meant to be open, so the 'closed schemas stay closed until the next major (DR-0036)' sentence is corrected in the DR-0036 rewrite that follows.
…aw DR-0032 and DR-0033 The working-group session of 2026-11-09 reversed DR-0036's draft rule that a closed schema stays closed for the whole major. DR-0036 now records the decision: schemas are open within a major, and a schema is closed only for a structural reason (oneOf disjointness, a closed key set or vocabulary, or a signed or binding payload). Opening a 3.x schema closed without such a reason is a correction that 3.3 and a 3.2.x patch make. The record states the rule and leaves entries to the corrections register, following Konstantin Mirin's rewrite in #8777. - DR-0019 is superseded by DR-0036. - DR-0032 and DR-0033, proposed in #8519 and never ratified, are recorded as withdrawn in favor of the versioning rules of #8704, so their IDs stay reserved. - versioning.mdx drops "closed schemas stay closed until the next major" and describes opening as a correction, including in patches. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…aw DR-0032 and DR-0033 The working-group session of 2026-11-09 reversed DR-0036's draft rule that a closed schema stays closed for the whole major. DR-0036 now records the decision: schemas are open within a major, and a schema is closed only for a structural reason (oneOf disjointness, a closed key set or vocabulary, or a signed or binding payload). Opening a 3.x schema closed without such a reason is a correction that 3.3 and a 3.2.x patch make. The record states the rule and leaves entries to the corrections register, following Konstantin Mirin's rewrite in #8777. - DR-0019 is superseded by DR-0036. - DR-0032 and DR-0033, proposed in #8519 and never ratified, are recorded as withdrawn in favor of the versioning rules of #8704, so their IDs stay reserved. - versioning.mdx drops "closed schemas stay closed until the next major" and describes opening as a correction, including in patches. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…aw DR-0032 and DR-0033 The working-group session of 2026-11-09 reversed DR-0036's draft rule that a closed schema stays closed for the whole major. DR-0036 now records the decision: schemas are open within a major, and a schema is closed only for a structural reason (oneOf disjointness, a closed key set or vocabulary, or a signed or binding payload). Opening a 3.x schema closed without such a reason is a correction that 3.3 and a 3.2.x patch make. The record states the rule and leaves entries to the corrections register, following Konstantin Mirin's rewrite in #8777. - DR-0019 is superseded by DR-0036. - DR-0032 and DR-0033, proposed in #8519 and never ratified, are recorded as withdrawn in favor of the versioning rules of #8704, so their IDs stay reserved. - versioning.mdx drops "closed schemas stay closed until the next major" and describes opening as a correction, including in patches. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…aw DR-0032 and DR-0033 (#8858) * docs(governance): DR-0036 records open schemas within a major; withdraw DR-0032 and DR-0033 The working-group session of 2026-11-09 reversed DR-0036's draft rule that a closed schema stays closed for the whole major. DR-0036 now records the decision: schemas are open within a major, and a schema is closed only for a structural reason (oneOf disjointness, a closed key set or vocabulary, or a signed or binding payload). Opening a 3.x schema closed without such a reason is a correction that 3.3 and a 3.2.x patch make. The record states the rule and leaves entries to the corrections register, following Konstantin Mirin's rewrite in #8777. - DR-0019 is superseded by DR-0036. - DR-0032 and DR-0033, proposed in #8519 and never ratified, are recorded as withdrawn in favor of the versioning rules of #8704, so their IDs stay reserved. - versioning.mdx drops "closed schemas stay closed until the next major" and describes opening as a correction, including in patches. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(versioning): a deprecation needs no minimum notice before a major removes it Brian O'Kelley ruled on 2026-11-10 that a deprecation needs no minimum notice period before its removal in the next major. A deprecated feature is never removed within the major that deprecated it. The next major may remove it with no minimum notice, because removals are what a major is for. The previous major's support window of at least 12 months after the successor's GA protects implementers. Experimental surfaces keep their 6-week notice within a major. The ruling is open for working-group comment on RFC #8756 until 2026-12-04. The versioning page's deprecation policy, the cadence table, the specification lifecycle (text and diagram), and the pages that cited the 6-month notice now say so. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(schemas): the seller_id alias descriptions cite the deprecation policy without a notice period The deprecated `seller_id` alias on `sync_event_sources` and `sync_audiences` results said its removal was "subject to the deprecation policy's six-month notice window". Under the 2026-11-10 ruling the policy sets no minimum notice before a major removes a deprecated field, so the descriptions now say "subject to the deprecation policy". Description-only; no validation change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Draft of theme T3 of RFC #8756 as a proposed decision record. It covers the #8704 rules for 4.x, including the rule 4 capability exception, and the additive-minor check from 4.0.0 with an empty baseline. It sets a fixed list of structural reasons for closing a schema, with named rejections. It makes deprecation dispositions machine-readable. It allows removal in a major with no minimum notice, protected by the previous major's support window, with N pending. It puts a four-minor clock on experimental surfaces and carries DR-0024 unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This is the alternative proposed on #8519, for discussion alongside it at the Nov 9 session. It changes docs only.
The idea is simple: a standard defines what goes on the wire between two parties, and how a library gets there isn't part of it. So version-to-version can come down to four rules, now at the top of the versioning page:
What the diff does:
adcp_version,supported_versions, the echo and served-release validation all stay as they are.create_media_buyreference that said new keys could join a closed schema in a minor.The page says plainly that the shipped 3.0 → 3.1 → 3.2 moves didn't all follow these rules. They stay as history until 4.0.
The 3.3 exceptions table is untouched apart from one clause that cited the old scope text. Some of its entries sit awkwardly with rule 3, so that's worth talking through as well. This PR doesn't touch governance files or anything proposed in #8519, and it leaves #8433 to that discussion.
Happy to go through it on Nov 9.