Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
385 commits
Select commit Hold shift + click to select a range
8e3b4b5
Merge the property option change
KonstantinMirin Nov 6, 2026
2fa41a5
Merge the video and audio change
KonstantinMirin Nov 6, 2026
8cda27d
Merge the formats change
KonstantinMirin Nov 6, 2026
16fa566
Say what the preemption carve-out covers with no notice period
KonstantinMirin Nov 6, 2026
351f9f4
Merge the pricing change
KonstantinMirin Nov 6, 2026
a6493aa
Merge the settlement change
KonstantinMirin Nov 6, 2026
ce15739
Merge the DOOH change
KonstantinMirin Nov 6, 2026
b0e0afa
Merge the DOOH change
KonstantinMirin Nov 6, 2026
de74707
Merge the audience change
KonstantinMirin Nov 6, 2026
6f950bc
Merge the property option change
KonstantinMirin Nov 6, 2026
91bc783
Merge the video and audio change
KonstantinMirin Nov 6, 2026
5b05ff9
Merge the formats change
KonstantinMirin Nov 6, 2026
95a81aa
Name iab-agentic-primitives as the nearest artifact to the message co…
KonstantinMirin Nov 6, 2026
70d8fce
Merge the post-agreement change
KonstantinMirin Nov 6, 2026
c32ae70
Merge the handoff change
KonstantinMirin Nov 6, 2026
1fce5cb
Merge the pricing change
KonstantinMirin Nov 6, 2026
53bd459
Merge the settlement change
KonstantinMirin Nov 6, 2026
7cbf72e
Merge the DOOH change
KonstantinMirin Nov 6, 2026
53bcb09
Merge the DOOH change
KonstantinMirin Nov 6, 2026
3b1f83d
Merge the property option change
KonstantinMirin Nov 6, 2026
e877feb
Merge the audience change
KonstantinMirin Nov 6, 2026
92b1f36
Merge the video and audio change
KonstantinMirin Nov 6, 2026
9917322
Merge the formats change
KonstantinMirin Nov 6, 2026
a8a7bb4
Say what the primitives cover, and that this document governs where t…
KonstantinMirin Nov 6, 2026
8c680e5
Merge the post-agreement change
KonstantinMirin Nov 6, 2026
173a99f
Merge the handoff change
KonstantinMirin Nov 6, 2026
93798fa
Merge the pricing change
KonstantinMirin Nov 6, 2026
d6eeafa
Merge the settlement change
KonstantinMirin Nov 6, 2026
17ffa8e
Merge the DOOH change
KonstantinMirin Nov 6, 2026
0d20912
Merge the DOOH change
KonstantinMirin Nov 6, 2026
75f20f3
Merge the audience change
KonstantinMirin Nov 6, 2026
a68c027
Merge the property option change
KonstantinMirin Nov 6, 2026
c70800a
Merge the video and audio change
KonstantinMirin Nov 6, 2026
56cbd4d
Merge the formats change
KonstantinMirin Nov 6, 2026
ed74d0c
Let a seller declare hold limits in the manifest
KonstantinMirin Nov 7, 2026
e9ac2ce
State that typed fields govern free text
KonstantinMirin Nov 7, 2026
915f709
Merge the signing change
KonstantinMirin Nov 7, 2026
fc9afb6
Merge the post-agreement change
KonstantinMirin Nov 7, 2026
1a491a8
Merge the handoff change
KonstantinMirin Nov 7, 2026
c94e763
Merge the holds change
KonstantinMirin Nov 7, 2026
d3bd5a7
Let preemption state its remedy
KonstantinMirin Nov 7, 2026
db40dc0
Merge the pricing change
KonstantinMirin Nov 7, 2026
51348bf
Settle a preempted delivery under its preemption remedy
KonstantinMirin Nov 7, 2026
89f0c3d
Merge the settlement change
KonstantinMirin Nov 7, 2026
08ce130
Merge the DOOH change
KonstantinMirin Nov 7, 2026
f8fd2bd
Merge the DOOH change
KonstantinMirin Nov 7, 2026
436e0c8
Merge the property option change
KonstantinMirin Nov 7, 2026
ba0e3d3
Merge the audience change
KonstantinMirin Nov 7, 2026
a678bf7
Merge the video and audio change
KonstantinMirin Nov 7, 2026
71f60df
Merge the formats change
KonstantinMirin Nov 7, 2026
c862abe
Let the example manifest omit an OPTIONAL key
KonstantinMirin Nov 7, 2026
8319ec2
Count a package's holds once against hold limits
KonstantinMirin Nov 7, 2026
a4adff3
Cancel an agreed package's line items only together
KonstantinMirin Nov 7, 2026
df6249b
Say when a message is unsigned, whose origin a response names, and th…
KonstantinMirin Nov 8, 2026
053ca75
Merge the signing change
KonstantinMirin Nov 8, 2026
9ad8906
Merge the post-agreement change
KonstantinMirin Nov 8, 2026
92d4a87
Merge the handoff change
KonstantinMirin Nov 8, 2026
4c13256
Merge the pricing change
KonstantinMirin Nov 8, 2026
4592e36
Merge the settlement change
KonstantinMirin Nov 8, 2026
7b444d1
Merge the DOOH change
KonstantinMirin Nov 8, 2026
a552994
Merge the DOOH change
KonstantinMirin Nov 8, 2026
40326a6
Merge the video and audio change
KonstantinMirin Nov 8, 2026
da1e1d1
Merge the property option change
KonstantinMirin Nov 8, 2026
e9a3698
Merge the audience change
KonstantinMirin Nov 8, 2026
2e8799a
Merge the formats change
KonstantinMirin Nov 8, 2026
10d5ae4
Define the target URI a signature covers
KonstantinMirin Nov 8, 2026
e47ff9d
Merge the signing change
KonstantinMirin Nov 8, 2026
480b68c
Merge the post-agreement change
KonstantinMirin Nov 8, 2026
645b3a6
Merge the handoff change
KonstantinMirin Nov 8, 2026
82d38f4
Merge the pricing change
KonstantinMirin Nov 8, 2026
13fbc38
Merge the settlement change
KonstantinMirin Nov 8, 2026
2d3d042
Merge the DOOH change
KonstantinMirin Nov 8, 2026
933051c
Merge the DOOH change
KonstantinMirin Nov 8, 2026
3ef3df5
Merge the video and audio change
KonstantinMirin Nov 8, 2026
b9cd34b
Merge the property option change
KonstantinMirin Nov 8, 2026
91c8b99
Merge the audience change
KonstantinMirin Nov 8, 2026
378f3cf
Merge the formats change
KonstantinMirin Nov 8, 2026
71c8f08
Write the full Web Bot Auth profile into § 2.8
KonstantinMirin Nov 8, 2026
3fae340
Merge the signing change
KonstantinMirin Nov 8, 2026
1b3348e
Merge the post-agreement change
KonstantinMirin Nov 8, 2026
6e95098
Merge the handoff change
KonstantinMirin Nov 8, 2026
a953461
Merge the pricing change
KonstantinMirin Nov 8, 2026
15262c1
Merge the DOOH change
KonstantinMirin Nov 8, 2026
f527c48
Merge the settlement change
KonstantinMirin Nov 8, 2026
4fa198e
Merge the DOOH change
KonstantinMirin Nov 8, 2026
8e14eee
Merge the property option change
KonstantinMirin Nov 8, 2026
1a06de9
Merge the video and audio change
KonstantinMirin Nov 8, 2026
7fb716d
Merge the audience change
KonstantinMirin Nov 8, 2026
e3db604
Merge the formats change
KonstantinMirin Nov 8, 2026
c95934c
State that a min_rate is as readable as its line item
KonstantinMirin Nov 8, 2026
2987218
Let a property name the TV channel and network it carries
KonstantinMirin Nov 8, 2026
0bbbe7c
Merge the buyer writes change
KonstantinMirin Nov 8, 2026
e9c837a
Merge the buyer writes change
KonstantinMirin Nov 8, 2026
84f4afc
Merge the signing change
KonstantinMirin Nov 8, 2026
33a3df9
Merge the handoff change
KonstantinMirin Nov 8, 2026
65c8172
Merge the holds change
KonstantinMirin Nov 8, 2026
13bc5b0
Merge the post-agreement change
KonstantinMirin Nov 8, 2026
962ad0a
Merge the pricing change
KonstantinMirin Nov 8, 2026
096316e
Merge the settlement change
KonstantinMirin Nov 8, 2026
d9c678f
Merge the DOOH change
KonstantinMirin Nov 8, 2026
98fc546
Merge the DOOH change
KonstantinMirin Nov 8, 2026
28ca85d
Merge the property option change
KonstantinMirin Nov 8, 2026
d0d824d
Merge the video and audio change
KonstantinMirin Nov 8, 2026
4feeae1
Merge the audience change
KonstantinMirin Nov 8, 2026
598f5c8
Merge the formats change
KonstantinMirin Nov 8, 2026
e92f464
Round TIME units to the nearest whole unit
KonstantinMirin Nov 9, 2026
49c7026
Merge the pricing change
KonstantinMirin Nov 9, 2026
cecdf81
Merge the settlement change
KonstantinMirin Nov 9, 2026
57ac3d5
Say which instant places a play, and which demographic settles
KonstantinMirin Nov 9, 2026
1ab3c81
Merge the DOOH change
KonstantinMirin Nov 9, 2026
d0c9e24
Merge the DOOH change
KonstantinMirin Nov 9, 2026
9c68dd9
Match TV channels and networks by domain
KonstantinMirin Nov 9, 2026
97b0791
Let a buyer ask for a retention
KonstantinMirin Nov 9, 2026
844b6da
Merge the property option change
KonstantinMirin Nov 9, 2026
5199fa1
Merge the video and audio change
KonstantinMirin Nov 9, 2026
46a658f
Merge the audience change
KonstantinMirin Nov 9, 2026
b76994d
Merge the formats change
KonstantinMirin Nov 9, 2026
1760adb
Check a term that refers to another field's list
KonstantinMirin Nov 9, 2026
b718eb5
Merge the formats change
KonstantinMirin Nov 9, 2026
ad49179
Count retention among the requestable fields
KonstantinMirin Nov 9, 2026
79c2c72
Merge the video and audio change
KonstantinMirin Nov 9, 2026
fa732be
Merge the formats change
KonstantinMirin Nov 9, 2026
aaa6108
Round a half unit up in TIME
KonstantinMirin Nov 10, 2026
c85b053
Cover previews through server-side ad insertion
KonstantinMirin Nov 10, 2026
7a3958f
Merge the shared types change
KonstantinMirin Nov 10, 2026
5317f7f
Merge the errors and extensions change
KonstantinMirin Nov 10, 2026
d2a16c4
Merge the lifecycle change
KonstantinMirin Nov 10, 2026
13cced5
Merge the parties change
KonstantinMirin Nov 10, 2026
de19531
Merge the buyer writes change
KonstantinMirin Nov 10, 2026
e5ec5a2
Merge the buyer writes change
KonstantinMirin Nov 10, 2026
e329670
Merge the signing change
KonstantinMirin Nov 10, 2026
47945c1
Merge the post-agreement change
KonstantinMirin Nov 10, 2026
e35f591
Merge the handoff change
KonstantinMirin Nov 10, 2026
de45d1b
Merge the holds change
KonstantinMirin Nov 10, 2026
e2bc658
Merge the pricing change
KonstantinMirin Nov 10, 2026
139c534
Merge the settlement change
KonstantinMirin Nov 10, 2026
771f348
Merge the DOOH change
KonstantinMirin Nov 10, 2026
0524d38
Merge the DOOH change
KonstantinMirin Nov 10, 2026
fac0c2a
Merge the property option change
KonstantinMirin Nov 10, 2026
4161c5a
Merge the video and audio change
KonstantinMirin Nov 10, 2026
27d2a03
Merge the audience change
KonstantinMirin Nov 10, 2026
43f4c72
Merge the formats change
KonstantinMirin Nov 10, 2026
a6398b9
Take the core CPA action types from ECAPI 1.0
KonstantinMirin Nov 11, 2026
7918280
Let a day rate count calendar days in a named zone
KonstantinMirin Nov 11, 2026
7377535
Merge the pricing change
KonstantinMirin Nov 11, 2026
cbb20b0
Make the action source count a CPA line item
KonstantinMirin Nov 11, 2026
c69e0d1
Merge the settlement change
KonstantinMirin Nov 11, 2026
3dc67c3
Map a DOOH line item's owners and screens to the Deals API
KonstantinMirin Nov 11, 2026
35721b3
Count every item a DOOH loop plays in its length
KonstantinMirin Nov 11, 2026
86f5288
Let a CPP or CPA source settle a DOOH line item's count
KonstantinMirin Nov 11, 2026
4a23aa7
Merge the DOOH change
KonstantinMirin Nov 11, 2026
55fbe6a
Merge the DOOH change
KonstantinMirin Nov 11, 2026
0064193
Merge the property option change
KonstantinMirin Nov 11, 2026
366120a
Merge the video and audio change
KonstantinMirin Nov 11, 2026
fd1ffc7
Merge the audience change
KonstantinMirin Nov 11, 2026
87fecf5
Don't read a linked core-term list as the backticked names
KonstantinMirin Nov 11, 2026
bcb4452
Call the checker's three-argument err in the pricing checks
KonstantinMirin Nov 11, 2026
a05a03e
Merge the formats change
KonstantinMirin Nov 11, 2026
d5291da
Let a DOOH multiplier state its source's accreditation
KonstantinMirin Nov 11, 2026
b4e7a63
Merge the DOOH change
KonstantinMirin Nov 11, 2026
6f779af
Merge the DOOH change
KonstantinMirin Nov 11, 2026
1078459
Merge the video and audio change
KonstantinMirin Nov 11, 2026
9ad8939
Merge the property option change
KonstantinMirin Nov 11, 2026
190ba32
Merge the audience change
KonstantinMirin Nov 11, 2026
4f7ffff
Merge the formats change
KonstantinMirin Nov 11, 2026
bac1fef
Record the shared types changes the changelog left out
KonstantinMirin Nov 11, 2026
d3e2552
Merge the shared types change
KonstantinMirin Nov 11, 2026
adb19b6
Merge the errors and extensions change
KonstantinMirin Nov 11, 2026
010844e
Merge the lifecycle change
KonstantinMirin Nov 11, 2026
160f145
Merge the parties change
KonstantinMirin Nov 11, 2026
c86ef5f
Record the buyer writes changes the changelog left out
KonstantinMirin Nov 11, 2026
34abcb7
Merge the buyer writes change
KonstantinMirin Nov 11, 2026
3d4dcf0
Merge the buyer writes change
KonstantinMirin Nov 11, 2026
222a506
Merge the signing change
KonstantinMirin Nov 11, 2026
385090f
Merge the post-agreement change
KonstantinMirin Nov 11, 2026
56200dc
Merge the handoff change
KonstantinMirin Nov 11, 2026
1f8ec68
Merge the holds change
KonstantinMirin Nov 11, 2026
1030138
Take CPA action types from both of ECAPI's event tables
KonstantinMirin Nov 11, 2026
9e1126f
Record the pricing changes the changelog left out
KonstantinMirin Nov 11, 2026
8685eb5
Merge the pricing change
KonstantinMirin Nov 11, 2026
2842e27
Record the settlement changes the changelog left out
KonstantinMirin Nov 11, 2026
107a79d
Merge the settlement change
KonstantinMirin Nov 11, 2026
974cf99
Record the DOOH changes the changelog left out
KonstantinMirin Nov 11, 2026
0e00a46
Merge the DOOH change
KonstantinMirin Nov 11, 2026
e4981c8
Record the property option changes the changelog left out
KonstantinMirin Nov 11, 2026
967d6f3
Merge the DOOH change
KonstantinMirin Nov 11, 2026
f9a0e88
Let a request carry the retention it asks for
KonstantinMirin Nov 11, 2026
a250478
Record the video and audio changes the changelog left out
KonstantinMirin Nov 11, 2026
743659f
Merge the property option change
KonstantinMirin Nov 11, 2026
9e77358
Merge the video and audio change
KonstantinMirin Nov 11, 2026
2c6c736
Merge the audience change
KonstantinMirin Nov 11, 2026
63733ed
Merge the formats change
KonstantinMirin Nov 11, 2026
2d6aac7
Put the signing entry's Breaking marker at its end
KonstantinMirin Nov 11, 2026
6b4d6c6
Put the holds entry's Breaking marker at its end
KonstantinMirin Nov 11, 2026
24b8662
Merge the signing change
KonstantinMirin Nov 11, 2026
a9ff7be
Merge the post-agreement change
KonstantinMirin Nov 11, 2026
f134e4b
Put the handoff entry's Breaking marker at its end
KonstantinMirin Nov 11, 2026
de5160d
Merge the handoff change
KonstantinMirin Nov 11, 2026
d1887c6
Merge the holds change
KonstantinMirin Nov 11, 2026
6e41d8b
Merge the pricing change
KonstantinMirin Nov 11, 2026
60be0ba
Merge the settlement change
KonstantinMirin Nov 11, 2026
4a8f8d9
Merge the DOOH change
KonstantinMirin Nov 11, 2026
8b4176c
Write the movable condition on lat and lon as a value
KonstantinMirin Nov 11, 2026
cb350da
Merge the DOOH change
KonstantinMirin Nov 11, 2026
f01a591
Merge the property option change
KonstantinMirin Nov 11, 2026
4cce4f6
Merge the video and audio change
KonstantinMirin Nov 11, 2026
3caa40f
Merge the audience change
KonstantinMirin Nov 11, 2026
7488716
Merge the formats change
KonstantinMirin Nov 11, 2026
48455e2
Let a receiver report a synthetic asset under human_only
KonstantinMirin Nov 11, 2026
38f5cfa
Merge the formats change
KonstantinMirin Nov 11, 2026
ae35db9
Let a CPA entry name the rules that make an action billable
KonstantinMirin Nov 12, 2026
77f3a11
Check calendar_zone and action_definition on every pricing entry
KonstantinMirin Nov 12, 2026
188478c
Merge the pricing change
KonstantinMirin Nov 12, 2026
39229c5
Merge the settlement change
KonstantinMirin Nov 12, 2026
4860950
Merge the DOOH change
KonstantinMirin Nov 12, 2026
e8f7e96
Reject coordinates on a movable screen
KonstantinMirin Nov 12, 2026
155844d
Merge the DOOH change
KonstantinMirin Nov 12, 2026
51aacdb
Merge the property option change
KonstantinMirin Nov 12, 2026
9ec3019
Merge the video and audio change
KonstantinMirin Nov 12, 2026
27f6bfa
Merge the audience change
KonstantinMirin Nov 12, 2026
75c6de7
Merge the formats change
KonstantinMirin Nov 12, 2026
8400ce1
Report a calendar_zone with no rate_unit at its object
KonstantinMirin Nov 12, 2026
1c38f09
Keep checking a commitment whose cost_parameters isn't an object
KonstantinMirin Nov 12, 2026
99c9d2c
Merge the pricing change
KonstantinMirin Nov 12, 2026
a32de3e
Merge the settlement change
KonstantinMirin Nov 12, 2026
5487a4d
Merge the DOOH change
KonstantinMirin Nov 12, 2026
492ea6c
Merge the DOOH change
KonstantinMirin Nov 12, 2026
b6a2f23
Merge the property option change
KonstantinMirin Nov 12, 2026
c33d0df
Merge the video and audio change
KonstantinMirin Nov 12, 2026
3690493
Merge the audience change
KonstantinMirin Nov 12, 2026
fb12249
Merge the formats change
KonstantinMirin Nov 12, 2026
c7192f7
Read an integral number as an Integer, as JSON does
KonstantinMirin Nov 12, 2026
a73d71e
Merge the shared types change
KonstantinMirin Nov 12, 2026
d1da1e0
Merge the errors and extensions change
KonstantinMirin Nov 12, 2026
44535cf
Merge the parties change
KonstantinMirin Nov 12, 2026
e15329e
Merge the lifecycle change
KonstantinMirin Nov 12, 2026
c679074
Merge the buyer writes change
KonstantinMirin Nov 12, 2026
9b9ca68
Merge the buyer writes change
KonstantinMirin Nov 12, 2026
9dad365
Merge the signing change
KonstantinMirin Nov 12, 2026
a3aa930
Merge the post-agreement change
KonstantinMirin Nov 12, 2026
e1fc72b
Merge the handoff change
KonstantinMirin Nov 12, 2026
4c74e38
Merge the holds change
KonstantinMirin Nov 12, 2026
861d269
Merge the pricing change
KonstantinMirin Nov 12, 2026
b8bd7b7
Merge the settlement change
KonstantinMirin Nov 12, 2026
7ce8914
Merge the DOOH change
KonstantinMirin Nov 12, 2026
5546fff
Merge the DOOH change
KonstantinMirin Nov 12, 2026
759e8f4
Merge the property option change
KonstantinMirin Nov 12, 2026
73349ad
Merge the video and audio change
KonstantinMirin Nov 12, 2026
86f41a3
Merge the audience change
KonstantinMirin Nov 12, 2026
6d5a6f9
Merge the formats change
KonstantinMirin Nov 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/change-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ body:
- "5.7 — Guarantees"
- "5.8 — Transaction eligibility"
- "5.9 — Execution"
- "5.10 — External references and settlement"
- "5.10 — External references, agreement, and billing"
- "6 — Examples"
- "Appendix A / B — Field index"
- "Whole document / more than one section"
Expand Down
9 changes: 4 additions & 5 deletions .github/ISSUE_TEMPLATE/comment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ body:
- "5.7 — Guarantees"
- "5.8 — Transaction eligibility"
- "5.9 — Execution"
- "5.10 — External references and settlement"
- "5.10 — External references, agreement, and billing"
- "6 — Examples"
- "7 — Why this split"
- "8 — Open questions"
Expand All @@ -47,7 +47,7 @@ body:
attributes:
label: Field(s) involved
description: Comma-separated, if your comment is about specific fields.
placeholder: "pricing[].floor, transaction_mechanism"
placeholder: "pricing[].min_rate, transaction_mechanism"
- type: textarea
id: comment
attributes:
Expand All @@ -63,9 +63,8 @@ body:
A specific case where the draft as written produces the wrong outcome or
cannot express what you need. This is what makes a comment actionable.
placeholder: >-
A seller offering the same inventory as both PG and PMP cannot express a
different floor per mechanism, because pricing[] sits above
transaction_mechanism.
A [seller, buyer, or agent] doing [a specific case] can't express [what it
needs], because [the field or rule in the draft].
- type: dropdown
id: perspective
attributes:
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@ contact_links:
- name: Read the comment process first
url: https://github.com/IABTechLab/OpenProposal/blob/main/docs/comment-process.md
about: Timeline, dispositions, and what happens to your comment.
- name: The seven open questions
- name: The open questions
url: https://github.com/IABTechLab/OpenProposal/blob/main/docs/open-questions.md
about: Where the working group is genuinely undecided. Highest-value place to comment.
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/editorial.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ body:
id: location
attributes:
label: Where
placeholder: "spec/openproposal-3.0.md § 5.6, Appendix A row for `hold_status`"
placeholder: "spec/openproposal-3.0.md § 5.6, Appendix A row for `hold_terms`"
validations:
required: true
- type: textarea
Expand Down
2 changes: 1 addition & 1 deletion .github/labels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
description: Proposes specific normative wording
- name: open-question
color: "d93f0b"
description: Relates to one of the 7 open questions in § 8
description: Relates to one of the open questions in § 8
- name: implementation-feedback
color: "0e8a16"
description: From someone who built against the draft
Expand Down
21 changes: 21 additions & 0 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,3 +67,24 @@ jobs:
python-version: "3.12"
- name: Check every field in the body appears in Appendix A
run: python3 scripts/check_appendix.py

examples-match-spec:
name: Examples match the tables
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- run: pip install pyyaml
- run: python3 scripts/check_examples.py

pricing-fixtures:
name: Pricing arithmetic vectors
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- run: python3 scripts/check_pricing_fixtures.py
10 changes: 4 additions & 6 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@ GitHub account may file an issue or a pull request.
thread rather than opening a duplicate, so the disposition covers one
discussion, not five.
- Check [docs/open-questions.md](docs/open-questions.md). If your point lands on
one of the seven questions the draft explicitly asks, comment there.
one of the questions the draft explicitly asks, comment there.

## 2. Pick the right route

| Route | Use it for | Where it lands |
| :--- | :--- | :--- |
| **Comment** issue | Something is unclear, wrong, internally inconsistent, or missing. You are not proposing wording. | Triaged, dispositioned, logged |
| **Change request** issue | You are proposing specific normative wording, a new field, a changed marker, or a removal. | Triaged, dispositioned, logged |
| **Open question** comment | You are answering one of the 7 questions in § 8. | Feeds the resolution of that question |
| **Open question** comment | You are answering one of the questions in § 8. | Feeds the resolution of that question |
| **Implementation feedback** issue | You built against the draft and hit something. **This is the most valuable kind of comment we receive.** | Triaged with priority |
| **Pull request** | You want to supply the exact diff for a change already discussed. | Reviewed against its issue |
| **Discussion** | You have a question, or want to think out loud before filing. | No disposition; not part of the formal record |
Expand All @@ -40,10 +40,8 @@ them, but the short version:

- **Cite the section.** `§ 5.6.1 commitment`, not "the commitment bit".
- **Say what breaks.** A concrete scenario — a seller, a buyer, a field, and the
wrong outcome — beats a general objection. "A seller offering the same
inventory as both PG and PMP cannot express different floors per mechanism,
because `pricing[]` sits above `transaction_mechanism`" is actionable. "The
pricing model is too simple" is not.
wrong outcome — beats a general objection such as "the pricing model is too
simple".
- **Say what you'd do instead**, even roughly. A rejected alternative is more
useful to the working group than an unanswered complaint.
- **Declare your interest.** Tell us whether you are commenting as a buyer,
Expand Down
22 changes: 11 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ server.
| :--- | :--- |
| **Current draft** | [`spec/openproposal-3.0.md`](spec/openproposal-3.0.md) |
| **Comment period opens** | 2026-09-22 |
| **Comment period closes** | 2026-10-22 |
| **Comment period closes** | 2026-11-10 |
| **Announcement** | [IAB Tech Lab introduces AAMP 3.0 with OpenProposal](https://iabtechlab.com/press-releases/iab-tech-lab-introduces-aamp-3-0-with-openproposal/) |
| **Short link** | [iabtechlab.com/AAMPv3](https://iabtechlab.com/AAMPv3) (points to this repository) |
| **How to comment** | [CONTRIBUTING.md](CONTRIBUTING.md) |
Expand Down Expand Up @@ -56,7 +56,7 @@ Pick the route that matches what you have to say:
| :--- | :--- |
| Flag something unclear, wrong, or missing | [Open a **Comment**](https://github.com/IABTechLab/OpenProposal/issues/new?template=comment.yml) |
| Propose specific normative wording | [Open a **Change request**](https://github.com/IABTechLab/OpenProposal/issues/new?template=change-request.yml), or send a pull request against `spec/openproposal-3.0.md` |
| Answer one of the 7 open questions | Comment on that question's [tracking issue](docs/open-questions.md) |
| Answer one of the open questions | Comment on that question's [tracking issue](docs/open-questions.md) |
| Report what happened when you tried to implement it | [Open **Implementation feedback**](https://github.com/IABTechLab/OpenProposal/issues/new?template=implementation-feedback.yml) |
| Ask a question rather than raise an issue | Use [Discussions](https://github.com/IABTechLab/OpenProposal/discussions) |

Expand All @@ -69,15 +69,15 @@ in [docs/disposition-log.md](docs/disposition-log.md). See

Three things to understand before the field tables make sense:

1. **No inheritance.** Every line item is fully self-contained. A field never
1. **No inheritance.** Every term of a line item is on the line item. A field never
takes its value from the parent proposal or a sibling line item.
2. **Every field carries exactly one mutability marker** (§ 3) — `immutable`,
`seller-set`, `selectable`, `settable`, `supplied`, `requestable` or
`derived`. The marker is what tells a buying agent whether it can act
unilaterally.
3. **Composition is constraint satisfaction, not negotiation.** Of 71 fields,
only 3 require a round trip with the counterparty. That ratio is the design
claim the draft is asking you to test.
`seller-set`, `selectable`, `settable`, `supplied`, `requestable`, `derived`,
`lifecycle`, `recorded`, `asserted` or `mixed`. The marker is what tells a
buying agent whether it can act unilaterally.
3. **Composition is constraint satisfaction, not negotiation.** Only `requestable`
fields require a round trip with the counterparty to resolve. Appendix B has the
count. That ratio is the design claim the draft is asking you to test.

## Downstream standards

Expand All @@ -89,8 +89,8 @@ OpenRTB 2.6). See § 1.1.

Machine-readable schemas are coming. They are not published with this first
draft, because the comment period is still deciding questions that shape
them. They will follow the first revision, after the comment period closes on
2026-10-22. Until then, [`examples/`](examples/) is the best reference for
them. They will follow the first revision, after the comment period closes.
Until then, [`examples/`](examples/) is the best reference for
shape. See [schema/README.md](schema/README.md).

## Contributors and governance
Expand Down
8 changes: 4 additions & 4 deletions docs/comment-process.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ or a documented decision not to change it.
| Phase | Dates | What happens |
| :--- | :--- | :--- |
| **1. Comment period opens** | 2026-09-22 | Draft frozen at a tagged version. Announcement published. Issues open. |
| **2. Comment period** | 2026-09-22 → 2026-10-22 (30 days) | Anyone may file. Maintainers triage and label within 5 business days of filing, but do not resolve. |
| **3. Comment period closes** | 2026-10-22 | No new comments enter the formal record. Later issues are labelled `post-comment` and considered for the following draft. |
| **2. Comment period** | 2026-09-22 → 2026-11-10 | Anyone may file. Maintainers triage and label within 5 business days of filing, but do not resolve. |
| **3. Comment period closes** | 2026-11-10 | No new comments enter the formal record. Later issues are labelled `post-comment` and considered for the following draft. |
| **4. Adjudication** | `TBD` → `TBD` | Working group works the queue. Every open comment gets a disposition. |
| **5. Disposition published** | `TBD` | [disposition-log.md](disposition-log.md) published in full. Commenters notified on their issue. |
| **6. Revised draft** | `TBD` | New draft tagged. Either ratification or a second comment period, depending on how much moved. |

> **Maintainers: phases 4–6 are still `TBD`.** Fill them before the comment
> period closes on 2026-10-22.
> period closes.

## Dispositions

Expand Down Expand Up @@ -59,7 +59,7 @@ Triage labels, applied on filing:
| :--- | :--- |
| `comment` | General comment on the draft |
| `change-request` | Proposes specific normative wording |
| `open-question` | Relates to one of the 7 questions in § 8 |
| `open-question` | Relates to one of the questions in § 8 |
| `implementation-feedback` | From someone who built against the draft |
| `editorial` | Typo, formatting, broken link — no normative effect |
| `normative` | Changes what the spec requires |
Expand Down
2 changes: 1 addition & 1 deletion docs/disposition-log.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
The formal record of every comment filed during the OpenProposal 3.0 public
comment period, and what was decided.

**Status: comment period open (2026-09-22 → 2026-10-22). No dispositions yet.**
**Status: comment period open (2026-09-22 → 2026-11-10). No dispositions yet.**

This file is updated as comments are adjudicated and published in full at the
end of the period. See [comment-process.md](comment-process.md) for what each
Expand Down
Loading