Repository navigation
Conversation
WG Session C (2026-10-26): - DR-0034 accepted: a major-only request is served the oldest supported release of the major (3.0), dissent none. The versioning docs and the version-negotiation spec table now state the rule. - DR-0035 stays recorded. - DR-0032 and DR-0033, with the LADON.md and constitution rules that enforce DR-0033, move to #8519, parked pending #8501. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…t release) and record DR-0035 (#8410) * docs(governance): propose version-translation decisions and a downgrade-path review rule - DR-0032 (proposed, normative): SDKs translate between 3.x releases; reads drop and report, mutations refuse lossy conversion; reduced account keys stay one-to-one, with an explicit migration when the seller upgrades. - DR-0033 (proposed, normative): every 3.x change states its pathway to the previous minor release. - DR-0034 (proposed, breaking, for escalation): major-only requests are served the oldest supported release, superseding DR-0024's unpinned clause. - LADON.md and the constitution enforce the downgrade-path rule in review. Refs #8373. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * docs(governance): extend the downgrade-path rule to every major's minors; record adcp_major_version removal - DR-0033 now covers every minor release within a major (4.1 → 4.0 as well as 3.3 → 3.2): minors are non-breaking and backward compatible. - DR-0035 (recorded) states the existing decision that adcp_major_version and adcp.major_versions are deprecated through 3.x and removed in 4.0. - DR-0034 is scoped to 3.x. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * docs(reference): restate that adcp_major_version is removed in 4.0 Adds a reminder to the 3.3 release notes, a 3.2 → 3.3 upgrade checklist row and a Deprecations note pointing at DR-0035. Not a new deprecation. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * docs(governance): ratify DR-0034; split DR-0032/0033 out to #8519 WG Session C (2026-10-26): - DR-0034 accepted: a major-only request is served the oldest supported release of the major (3.0), dissent none. The versioning docs and the version-negotiation spec table now state the rule. - DR-0035 stays recorded. - DR-0032 and DR-0033, with the LADON.md and constitution rules that enforce DR-0033, move to #8519, parked pending #8501. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
WG decision brief (Session D, 2026-11-02)What still needs translation. I counted with
1. DR-0032 (SDK translation): ratify a narrowed rule, drop it, or defer it?
2. DR-0033 (downgrade path for every minor change): ratify narrowed, drop, or defer?
3. #8433 (translation vectors): what happens to it?
|
|
Consent round (async; the Nov 2 session is cancelled): objections by Fri 2026-11-06. Proceeding as the Session D brief recommends, @KonstantinMirin please weigh in:
An objection by Friday brings it to the next live session, Mon 2026-11-09. |
Split out of #8410. DR-0032 (SDKs translate between minor releases; mutations refuse lossy conversion; reduced account keys stay one-to-one) and DR-0033 (every minor-release change states its pathway back), with the LADON.md and constitution rules that enforce DR-0033. Both stay proposed: WG Session C (2026-10-26) parked them until #8501 is settled. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
#8501 settled on DR-0036 (a minor adds only to open schemas). Translation now addresses the silent-ignore hazard: newer fields go only to peers that negotiated them, reads drop and report, mutations refuse a lost field that changes the commitment, moves follow DR-0033 pathway statements, closed and digest-bound objects are never reshaped, and the 3.2 account-key change reduces one-to-one. DR-0033's pathway forms become ignorable, gated, moves or a DR-0036 correction; identity changes wait for a major. LADON.md and the constitution invariant follow. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
5eef641 to
0a25302
Compare
|
Hi Brian, Thanks for putting the brief together. The counts are really useful, and I think the narrowing goes in the right direction. I'd still like to raise an objection on all three items, because I think we can go a step further and make this simpler. You've seen far more of how this plays out in practice than I have, so please tell me if I'm missing something. My main thought is that a standard defines what goes on the wire between two parties, and how a library gets there probably isn't part of it. So I don't think the standard needs to say anything about SDKs. Either it defines translation between versions or it doesn't, and I believe it shouldn't. I'd love for version-to-version to come down to a few simple rules:
If we hold to those, I think most of what these records handle goes away:
The hazard you describe is real: an older seller silently ignores a new field on an open schema, which is wrong for something like a cap. I just don't think it needs a rule about SDKs. A seller publishes Could we talk this through at the Nov 9 session? Happy to go through it there. |
|
Hi Brian, I've put the three rules up as a docs-only PR so we have something concrete to look at on Nov 9: #8704. It doesn't touch anything proposed here, and it notes that the shipped 3.0 → 3.1 → 3.2 moves stay as history until 4.0. Some entries in the 3.3 exceptions table sit awkwardly with rule 3, so those are worth talking through as well. |
|
@KonstantinMirin: you've convinced me. The standard defines the wire, and how a library gets there isn't part of it. I'd like to adopt #8704 and withdraw DR-0032 and DR-0033 as normative records. What we adopt. The three rules in #8704, for the rest of 3.x and for all of 4.x:
One rule I'd add, in your words. You wrote that "a field that must never be ignored probably shouldn't be added in a minor at all." I'd make that the fourth rule:
That keeps the one hazard the brief was really about, an older seller silently ignoring a cap, as a rule about what goes on the wire. It isn't a rule about SDKs. In What stays as it is. Negotiation, What moves out. What an SDK does about a version gap (converting, refusing, reducing account keys) becomes that SDK's documented behaviour. For #8433, I agree with your split: negotiation vectors stay here, and the conversion, refusal and account-reduction vectors move to the SDK repos that want them. You were right about Order. We ratify DR-0036 on Monday. Then #8704 merges (Ladon is holding it until DR-0036 is ratified), and I close #8519 with a pointer here. Your point about the 3.3 exceptions table sitting awkwardly with rule 3 is worth the room's time on Monday. The #8501 withdrawals should already have removed most of that tension. Thanks for pushing on this. It's simpler, and it's the rule 4.0 should be built on (#8756). 🤖 Generated with Claude Code |
|
Thanks Brian, I'm glad we landed here. Yes to rule 4, and I'll add it to #8704. One small suggestion: I'd treat the list (spend, targeting, caps…) as examples rather than as the rule's scope, so a field outside the list that still changes the commitment is covered too. The capability route is the same as DR-0036's named exception: the seller declares the capability, and buyers MUST NOT send the field otherwise. |
…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>
|
Closing without merging. The working-group session on Mon 2026-11-09 confirmed what this thread agreed on Nov 6: DR-0032 and DR-0033 are withdrawn as normative records. @KonstantinMirin, thanks for pushing on this. What replaces them. The four rules at the top of the versioning page, from #8704:
What stays. Negotiation, What moves out. What an SDK does about a version gap (converting, refusing, reducing account keys) is that SDK's documented behavior. For #8433, the negotiation vectors stay in this repo. The conversion, refusal and account-reduction vectors move to the SDK repos that want them. DR-0036 changed too. This PR was revised against DR-0036's draft rule that a closed schema stays closed for the whole major. The same session reversed that rule:
See #8858. The IDs. #8858 adds short DR-0032 and DR-0033 records marked superseded, pointing at the versioning rules. That keeps the IDs reserved and lets existing citations resolve. The proposed text stays here for reference. The |
…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>
Revised against DR-0036 (#8501) and ready for WG consent. First split out of #8410 and parked at WG Session C pending #8501.
What changed in the revision
#8501 settled on DR-0036: a minor adds only to open schemas, closed schemas change only by a recorded correction, and the 3.2 proposal flow is reopened as correction (a). Under that rule an older peer accepts a newer field and silently ignores it, so these records now target the silent-ignore hazard rather than rejection.
commercial-terms) are never reshaped; the resource is refused withVERSION_UNSUPPORTEDinstead.LADON.mdand the constitution invariant enforce the new forms. A field labeled "ignorable" whose loss would change the commitment ishigh.Related
3.3-3.2.jsoncovers settled surfaces and is provisional until 3.3 GA.@adcp/sdk: feat: negotiate the AdCP release and translate between releases (client and server) adcp-client#3372 and Training Agent Storyboards: signed_requests 28-vector failure on main since #3351 (PostgresReplayStore swap) #3376.Proposed for consent alongside the 3.3 baseline disposition, with objections by Fri 2026-11-13. This touches
governance/,LADON.mdand the constitution, so a human merges it.🤖 Generated with Claude Code