Skip to content

§ 5.8, § 5.10 — Relationship and contract references: terms_ref, agreement_ref (#27) - #75

Draft
Kishore-2572 wants to merge 2 commits into
mainfrom
spec/27-agreement-terms-refs
Draft

Kishore-2572 wants to merge 2 commits into
mainfrom
spec/27-agreement-terms-refs

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 #27.

What this changes

A line item can now point at the agreement and the exact terms it is executed under, without the specification modelling contracts. terms_ref (§ 5.8, { url, sha256, version }) names the legal terms or IO template the buyer accepts at assent; it is REQUIRED when terms_acceptance_required is true, and hash-pinned and frozen at agreed. agreement_ref (§ 5.10) is an informative pointer to the master or annual agreement a line item is priced under. external_references[] documents two role values, io and agreement. § 5.10 states that IO generation is a connector concern, and § 7 adds a non-normative note: relationships are issued proposals plus the buyer agent's business rules.

Related issue

Refs #27. Related: #26 (draft PR #74), where buyer-specific terms live on issued proposals.

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 — two rows; scripts/check_appendix.py passes
  • Appendix B (fields by marker, and the counts) matches the body — seller-set 29 → 31; 71 → 73 fields
  • Any affected example in examples/ is updated and still parses — terms_acceptance_required and terms_ref in line-item-display.yaml
  • RFC 2119 keywords used deliberately — MUST / SHOULD / MAY are not synonyms
  • The no-inheritance rule (§ 2) still holds — both fields sit on the line item
  • 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.

§ 5.8 adds terms_ref ({ url, sha256, version }), REQUIRED when
terms_acceptance_required is true, hash-pinned and frozen at agreed, so
assent binds to an exact document. § 5.10 adds agreement_ref, an
informative pointer to the master or annual agreement a line item is
priced under, and documents the io and agreement roles on
external_references[]. IO generation is stated to be a connector
concern, and § 7 adds a non-normative note on relationships.

agreement_ref is seller-set; a buyer-held agreement id travels as an
external_references[] entry with role: agreement, so the field keeps
one marker (§ 3).

Appendix A gains two rows; Appendix B counts seller-set 29 → 31 and
73 fields. The display example carries terms_ref.

Refs #27
agreement_ref.parties used buyer_id, which the specification does not
define. parties[] now names the seller by its seller_id and the buyer
by the id it holds in eligible_bidders[] (section 5.8).

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