Specification section
Content Telemetry §7.4.4 (click-context resolution), item 3 (contributing_sources).
What you observed
PR #38 replaced the v0.1 click manifest (consent-gated content_grounded / content_cited / content_presented for the resolved session) with a click context:
- The bound engagement
- Lineage of the clicked content only (all turns, by content identity)
- Contributing sources for other content — gated per owner opt-in, but scoped to the engaged presentation’s turn (plus session-scoped groundings)
- Optional count-based
session_summary
Item 2 is right for “what happened to the URL they clicked?” Item 3 is the only place other publishers appear, and it is one turn, not the session.
v0.1 could return every opted-in source in the session. Now a publisher cited only in an earlier turn is dropped when the user clicks an advertiser presented in a later turn.
Turn 2: publishera.com grounded + cited
Turn 5: advertiser.com presented; user clicks it
v0.1 click manifest (opt-in): publisher A is visible
§7.4.4 item 3 today: publisher A often absent (wrong turn)
session_summary (counts, no peer identities) does not restore that chain. Lineage of advertiser.com does not include publishera.com.
Why it matters
Affiliate / commerce attribution is: this click on advertiser.com was informed by publisher A (and B, C, …). Those sources are often not the clicked URL, and they are often not all in the same turn as the presentation the user clicked.
Limiting contributing sources to the presentation turn:
- Drops earlier-turn reviews/guides that shaped the later click
- Makes resolve narrower than the v0.1 consent-gated click manifest: opted-in sources from other turns in the same session no longer appear
- Leaves a party that only sees the click URL (e.g. a network or advertiser that captured
ctx_token on the redirect, and does not receive publishers’ §7.3 event streams) unable to see opted-in publishers from the rest of the dialogue — resolve is their only lookup
We are not asking for an ungated dump of every owner. Consent / opt-in should stay. We are asking that, when an owner has opted in, their contributing events not be discarded solely because they sit in another turn.
Why today’s nearby mechanisms are not enough
§7.4.4 already keeps session-scoped content_grounded events in the click-turn contributing-source set, and §7.3 still gives each owner their own filtered event stream. Neither replaces a consent-gated contributing-source list on resolve that can include earlier turns:
- Session-scoped grounding ≠ citation / presentation. A
content_grounded with scope: session from turn 2 MAY still appear on a turn-5 resolve. A turn-2 cite or present does not. Attribution often needs “they were cited / shown,” not only “they were ingested once at session start.”
- Not all groundings are session-scoped. Turn-scoped grounding in turn 2 is out of scope for a turn-5 click under today’s item 3.
- §7.3 is a different path. Owner-filtered views (and §7.4.5 click delivery) help a destination or a network that already receives those streams and can join on
session_id. A party that only holds ctx_token on the advertiser hop still has to use resolve. That token lookup needs to return the opted-in chain; it is not the same as “also subscribe to each publisher’s §7.3 feed.”
Proposed improvement
Keep engagement + clicked-content lineage as they are. Change item 3 so contributing sources can cover the session (consent-gated), not only the presentation turn.
Simple option — one opted-in window. When a contributing owner has opted in to contributing-source disclosure, resolve includes that owner’s grounded / cited / presented events for the session (or at least all turns that existed at click time). Same opt-in gate as today; only the time scope changes. No extra levels.
More flexible option — explicit consent levels. If parties need different cuts, make the window a recorded choice rather than a silent one-turn default:
| Level |
Contributing-source window |
session |
Opted-in sources across the session |
through_click_turn |
Opted-in sources from turn 1 through the engaged presentation’s turn (+ session-scoped groundings) |
click_turn |
Today’s rule — that turn only (+ session-scoped groundings) |
none |
No contributing-source events |
Who picks the level is the same kind of choice as today’s contributing-source opt-in: recorded with the consumer (agent, owner, or both — the spec does not have to name the API). If an owner (or the agent on their behalf) granted session or through_click_turn, the consumer MUST return that window on resolve.
Specification section
Content Telemetry §7.4.4 (click-context resolution), item 3 (
contributing_sources).What you observed
PR #38 replaced the v0.1 click manifest (consent-gated
content_grounded/content_cited/content_presentedfor the resolved session) with a click context:session_summaryItem 2 is right for “what happened to the URL they clicked?” Item 3 is the only place other publishers appear, and it is one turn, not the session.
v0.1 could return every opted-in source in the session. Now a publisher cited only in an earlier turn is dropped when the user clicks an advertiser presented in a later turn.
session_summary(counts, no peer identities) does not restore that chain. Lineage ofadvertiser.comdoes not includepublishera.com.Why it matters
Affiliate / commerce attribution is: this click on advertiser.com was informed by publisher A (and B, C, …). Those sources are often not the clicked URL, and they are often not all in the same turn as the presentation the user clicked.
Limiting contributing sources to the presentation turn:
ctx_tokenon the redirect, and does not receive publishers’ §7.3 event streams) unable to see opted-in publishers from the rest of the dialogue — resolve is their only lookupWe are not asking for an ungated dump of every owner. Consent / opt-in should stay. We are asking that, when an owner has opted in, their contributing events not be discarded solely because they sit in another turn.
Why today’s nearby mechanisms are not enough
§7.4.4 already keeps session-scoped
content_groundedevents in the click-turn contributing-source set, and §7.3 still gives each owner their own filtered event stream. Neither replaces a consent-gated contributing-source list on resolve that can include earlier turns:content_groundedwithscope: sessionfrom turn 2 MAY still appear on a turn-5 resolve. A turn-2 cite or present does not. Attribution often needs “they were cited / shown,” not only “they were ingested once at session start.”session_id. A party that only holdsctx_tokenon the advertiser hop still has to use resolve. That token lookup needs to return the opted-in chain; it is not the same as “also subscribe to each publisher’s §7.3 feed.”Proposed improvement
Keep engagement + clicked-content lineage as they are. Change item 3 so contributing sources can cover the session (consent-gated), not only the presentation turn.
Simple option — one opted-in window. When a contributing owner has opted in to contributing-source disclosure, resolve includes that owner’s grounded / cited / presented events for the session (or at least all turns that existed at click time). Same opt-in gate as today; only the time scope changes. No extra levels.
More flexible option — explicit consent levels. If parties need different cuts, make the window a recorded choice rather than a silent one-turn default:
sessionthrough_click_turnclick_turnnoneWho picks the level is the same kind of choice as today’s contributing-source opt-in: recorded with the consumer (agent, owner, or both — the spec does not have to name the API). If an owner (or the agent on their behalf) granted
sessionorthrough_click_turn, the consumer MUST return that window on resolve.