Repository navigation
§ 2, § 4.1.4, § 5.6.3 — Packages: line items sold only together, in place of requires and linked_execution - #154
Open
KonstantinMirin wants to merge 413 commits into
Open
KonstantinMirin wants to merge 413 commits into
KonstantinMirin wants to merge 413 commits into
Conversation
This was referenced Nov 5, 2026
The manifest's hold_limits states the most holds a seller grants at once, per buyer domain and per advertiser. A seller declines a request over a declared limit, and under a per-advertiser limit may decline one that names no advertiser.
Where a value whose Type cell is String conflicts with a typed field of the same version in the binding record, the typed field governs. Identifiers and codes are excluded, and an Enum or shared-type value is a typed field.
A line item's preemption MAY state a remedy, from an open vocabulary with the core terms makegood, credit, and none. It settles the delivery a preemption takes on any delivery_type, in place of shortfall_remedy, so a preempted share-of-voice buyer knows what it gets before committing.
When a line item's preemption states a remedy, the delivery a preemption takes, less any replacement within the flight, is a shortfall on any delivery_type. It settles as though that remedy were the only option in effect at commit, under the remedy_terms of shortfall_remedy. When none is in effect in shortfall_remedy, it must be the only option. Section 8 question 10 adds how much delivery a preemption takes.
# Conflicts: # CONTRIBUTING.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this changes
The draft links line items in two ways, and neither keeps a line item about itself.
linked_executionhas one value,all, so it works as a Boolean for the whole proposal.requireslets a line item name others, so their state reaches it:agreed, cancelling a named line item invokes the dependent line item'scancellation_policy.This PR puts what spans line items one level up, on a package that holds them.
line_items[]orpackages[], not both.Packageholdsline_items[], sold only together, andadd_ons[], sold only with all of them once itsmin_commitments[]are met. A line item sold alone is a package of one, and a proposal sold only whole is one package.committhat names part of a package, or an add-on without its package, returnsnot_committable.hold_limits.ProposalSummarylists packages in place ofhas_requires.requiresandlinked_executionare removed.Related issue
Refs #23 and #6 (OQ-5). Refs #50, #86, #103, and #106.
Builds on
This PR builds on our formats PR, the last of our stack, so applying all 17 in order gives the final text. It replaces the
requiresandlinked_executionof #70 by @Sirajmx, which our PRs carry; our comment on #70 says why. Review the commits "Replace requires and linked_execution with packages", "Count a package's holds once against hold limits", and "Cancel an agreed package's line items only together".Type
Checklist
docs/open-questions.mdlinked_executionandrequiresgo, andpackages[]comes.scripts/check_appendix.pypasses: 96 field names, 98 rowsseller-set46 → 45; 99 → 98 fields; 27 touched by the buyerexamples/is updated and still parses.examples/proposal-package.yamlholds the CTV and audio line items ofproposal.yamlas a package, with the CTV bonus as its add-on, and the bonus leavesproposal.yaml.manifest.jsonis regenerated, and neitherrecord_digestchanges.scripts/check_examples.pychecks one shape per proposal, unique ids, thePackagekeys, thresholds on the package's own line items, and that a line item in both proposals is the same. All three checks passselectabledeclaresavailable[]andincluded[]; anythingsettabledeclares bounds (§ 3.1, § 3.2) — no newselectableorsettablefieldsKnock-on effects
requiresorlinked_executionno longer conforms.requires, such as dropping the cycle ban.any_ofhas no counterpart: no filing gave a case for it, and an add-on in each of two packages covers a bonus either one unlocks.Open questions
cancellation_policy, since a package holds no terms (question 2). § 8 question 5 asks only whether a package covers every bundle sellers sell.Contribution Terms
Analyzed and generated with the help of Claude, fully reviewed by me.