Skip to content

§ 4.1, § 5.6.1 — Commitments carry proposal_id and version (#24) - #73

Draft
Kishore-2572 wants to merge 2 commits into
mainfrom
spec/24-commitment-version
Draft

Kishore-2572 wants to merge 2 commits into
mainfrom
spec/24-commitment-version

Conversation

@Kishore-2572

@Kishore-2572 Kishore-2572 commented Oct 22, 2026 •

Copy link
Copy Markdown

Draft. Do not merge until the working group confirms the disposition of #24.

What this changes

A commitment now names the proposal and version it was priced against (proposal_id, version, § 5.6.1). The seller rejects a new commitment attempt on a stale version, or past valid_until or pricing[].price_valid_until, and returns the current version so the buyer can fetch it again. A replay of an attempt already processed (same idempotency_key, same terms) returns the stored result without re-running those checks, and the same key with different terms is an explicit conflict, as @aleksUIX suggested on #24. idempotency_key values are opaque and scoped to one buyer and seller pair, in line with iab-agentic-primitives FD-12. § 4.1 states that each revision while published increments version.

Related issue

Refs #24. #23 (draft PR #70) relies on these version rules for "same proposal and version".

Type

  • Editorial — no normative effect
  • Normative — changes what the spec requires
  • Breaking — would break an implementation already built to this draft
  • Examples / schema / docs only

Checklist

  • The body section is updated
  • Appendix A (field index) matches the body — no new rows, as the new keys sit inside commitment; scripts/check_appendix.py passes
  • Appendix B (fields by marker, and the counts) matches the body — counts unchanged
  • Any affected example in examples/ is updated and still parses — the display, CTV and audio commitments carry proposal_id and version; § 6.3 points to the CTV example
  • RFC 2119 keywords used deliberately — MUST / SHOULD / MAY are not synonyms
  • The no-inheritance rule (§ 2) still holds
  • Anything selectable declares available[] and included[]; anything settable declares bounds (§ 3.1, § 3.2) — no new selectable or settable fields
  • No confidential or commercially sensitive content

Knock-on effects


By opening this pull request I agree my contribution may be published under this
repository's licence, as set out in CONTRIBUTING.md.

A commitment names the proposal and version it was priced against
(§ 5.6.1). The seller rejects a new attempt on a stale version, or past
valid_until or price_valid_until, and returns the current version. An
authenticated replay with the same idempotency_key and terms returns the
stored result without re-running those checks; the same key with
different terms is a conflict. Keys are opaque and scoped to one buyer
and seller pair. § 4.1 states that each revision while published
increments version.

The display, CTV and audio examples carry proposal_id and version.

Refs #24
The specification does not define authentication yet (WS1; see #62),
so the replay rule now applies to a replay from the same buyer rather
than an authenticated replay.

Refs #24
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