Repository navigation
§ 5.8, § 5.10 — Relationship and contract references: terms_ref, agreement_ref (#27) - #75
Kishore-2572 wants to merge 2 commits into
Conversation
§ 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
|
Postindustria (IAB Tech Lab member). @Kishore-2572, our PRs carry #75 and change
Revised 2026-11-03: Rewritten to match our PRs. We withdraw the point that § 3 makes "frozen at Analyzed and generated with the help of Claude, fully reviewed by me. |
|
Postindustria (IAB Tech Lab member). @Kishore-2572, our parties PR carries this PR at its head. Its last commit renames Our PR on what is signed turns Our revised comment above has the detail. Could you review them there? Analyzed and generated with the help of Claude, fully reviewed by me. |
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 whenterms_acceptance_requiredistrue, and hash-pinned and frozen atagreed.agreement_ref(§ 5.10) is an informative pointer to the master or annual agreement a line item is priced under.external_references[]documents tworolevalues,ioandagreement. § 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
Checklist
scripts/check_appendix.pypassesseller-set29 → 31; 71 → 73 fieldsexamples/is updated and still parses —terms_acceptance_requiredandterms_refinline-item-display.yamlselectabledeclaresavailable[]andincluded[]; anythingsettabledeclares bounds (§ 3.1, § 3.2) — no newselectableorsettablefieldsKnock-on effects
terms_acceptance_required: trueand noterms_refno longer conforms.agreement_reftwo markers ("seller-set (buyer MAY also supply)"), but § 3 gives every field exactly one andscripts/check_appendix.pyreads one. It isseller-sethere; a buyer-held agreement id travels as anexternal_references[]entry withrole: agreement.[seller_id, buyer_id], but the specification defines nobuyer_id.parties[]names the seller by itsseller_idand the buyer by the id it holds ineligible_bidders[](§ 5.8). A defined buyer identifier is for the working group; [Change] § 4.1 — Identify the seller by seller_domain; make seller_id OPTIONAL #61 proposesseller_domainfor the seller side.external_references[]as outside the offered terms. Whetherterms_refandagreement_refbelong inside the binding record is for adjudication.assentrecord to carry thesha256of the accepted terms. [Change] § 4.1 — Define record_digest and assent[]; defer signer identity to the AAMP profile #63 proposes a digest-basedassent[].agreement_refusesvalid_from/valid_until, the same names as the proposal's offer window.effective_from/effective_untilwould avoid confusion.rolevalues onexternal_references[]).By opening this pull request I agree my contribution may be published under this
repository's licence, as set out in CONTRIBUTING.md.