@@ -2,6 +2,8 @@ import { describe, expect, test } from 'bun:test'
22
33import {
44 ADS_FETCH_COMPLETED_EVENT ,
5+ ADS_FIRST_PARTY_DECISION_EVENT ,
6+ ADS_FIRST_PARTY_SETTLEMENT_EVENT ,
57 CONTEXT_PRUNING_COMPLETED_EVENT ,
68 getAxiomOnlyLogEvent ,
79 STREAM_RECOVERY_EVENT ,
@@ -61,7 +63,10 @@ describe('getAxiomOnlyLogEvent', () => {
6163 } ) ,
6264 ) . toBeNull ( )
6365 expect (
64- getAxiomOnlyLogEvent ( { prompt : 'must not be silently dropped' } , poisonEvent ) ,
66+ getAxiomOnlyLogEvent (
67+ { prompt : 'must not be silently dropped' } ,
68+ poisonEvent ,
69+ ) ,
6570 ) . toBeNull ( )
6671 }
6772 } )
@@ -139,30 +144,119 @@ describe('getAxiomOnlyLogEvent', () => {
139144 } )
140145 } )
141146
142- test ( 'sanitizes ad-fetch metadata' , ( ) => {
147+ test ( 'preserves bounded scalar ad-routing metadata and drops identifiers ' , ( ) => {
143148 expect (
144149 getAxiomOnlyLogEvent ( {
145150 axiomEvent : ADS_FETCH_COMPLETED_EVENT ,
146151 outcome : 'fill' ,
147152 requested_provider : 'gravity' ,
148- served_provider : 'carbon' ,
153+ served_provider : 'first_party' ,
154+ attempted_provider_chain : 'gravity>first_party' ,
155+ experiment_arm : 'treatment' ,
156+ first_party_route : 'gravity_then_first_party' ,
157+ first_party_primary_percent : 10 ,
158+ first_party_backfill_enabled : true ,
159+ selection_reason : 'gravity_no_fill_backfill' ,
149160 ad_count : 1 ,
161+ surface : 'cli' ,
150162 placement_id : 'CLI-Chat-Inline' ,
151163 duration_ms : 42 ,
152164 client_ua_product : 'freebuff-cli' ,
165+ client_ua_version : '1.2.3' ,
166+ // Arrays must be producer-encoded as attempted_provider_chain.
153167 attempted_providers : [ 'gravity' , 'carbon' ] ,
168+ // High-cardinality identifiers and content do not reach Axiom.
169+ userId : 'user-123' ,
170+ advertiser_id : 'advertiser-123' ,
171+ chat_session_id : 'session-123' ,
172+ campaign_ids : [ 'campaign-123' ] ,
173+ creative_ids : [ 'creative-123' ] ,
174+ ad_url : 'https://example.com/secret' ,
154175 messages : [ { role : 'user' , content : 'secret' } ] ,
155176 } ) ,
156177 ) . toEqual ( {
157178 event : ADS_FETCH_COMPLETED_EVENT ,
158179 data : {
159180 outcome : 'fill' ,
160181 requested_provider : 'gravity' ,
161- served_provider : 'carbon' ,
182+ served_provider : 'first_party' ,
183+ attempted_provider_chain : 'gravity>first_party' ,
184+ experiment_arm : 'treatment' ,
185+ first_party_route : 'gravity_then_first_party' ,
186+ first_party_primary_percent : 10 ,
187+ first_party_backfill_enabled : true ,
188+ selection_reason : 'gravity_no_fill_backfill' ,
162189 ad_count : 1 ,
190+ surface : 'cli' ,
163191 placement_id : 'CLI-Chat-Inline' ,
164192 duration_ms : 42 ,
165193 client_ua_product : 'freebuff-cli' ,
194+ client_ua_version : '1.2.3' ,
195+ } ,
196+ } )
197+ } )
198+
199+ test ( 'names and sanitizes first-party selection telemetry' , ( ) => {
200+ expect (
201+ getAxiomOnlyLogEvent ( {
202+ axiomEvent : ADS_FIRST_PARTY_DECISION_EVENT ,
203+ outcome : 'no_fill' ,
204+ no_fill_reason : 'no_eligible_campaign' ,
205+ placement_count : 2 ,
206+ candidate_count : 4 ,
207+ candidate_load_ms : 8 ,
208+ frequency_status : 'unavailable' ,
209+ frequency_unavailable_cause : 'timeout' ,
210+ frequency_reservation_ms : 75 ,
211+ duration_ms : 11 ,
212+ campaign_ids : [ 'campaign-123' ] ,
213+ creative_ids : [ 'creative-123' ] ,
214+ placement_ids : [ 'CLI-Chat-Inline' ] ,
215+ userId : 'user-123' ,
216+ reasons : [ 'budget_exhausted' ] ,
217+ nested : { private : true } ,
218+ } ) ,
219+ ) . toEqual ( {
220+ event : ADS_FIRST_PARTY_DECISION_EVENT ,
221+ data : {
222+ outcome : 'no_fill' ,
223+ no_fill_reason : 'no_eligible_campaign' ,
224+ placement_count : 2 ,
225+ candidate_count : 4 ,
226+ candidate_load_ms : 8 ,
227+ frequency_status : 'unavailable' ,
228+ frequency_unavailable_cause : 'timeout' ,
229+ frequency_reservation_ms : 75 ,
230+ duration_ms : 11 ,
231+ } ,
232+ } )
233+ } )
234+
235+ test ( 'names and sanitizes first-party settlement telemetry' , ( ) => {
236+ expect (
237+ getAxiomOnlyLogEvent (
238+ {
239+ billing_model : 'cpa' ,
240+ settlement_status : 'charged' ,
241+ amount_cents : 75 ,
242+ balance_cents : 925 ,
243+ duration_ms : 6 ,
244+ userId : 'user-123' ,
245+ advertiser_id : 'advertiser-123' ,
246+ campaign_id : 'campaign-123' ,
247+ ad_impression_id : 'impression-123' ,
248+ error : { message : 'private failure detail' } ,
249+ } ,
250+ ADS_FIRST_PARTY_SETTLEMENT_EVENT ,
251+ ) ,
252+ ) . toEqual ( {
253+ event : ADS_FIRST_PARTY_SETTLEMENT_EVENT ,
254+ data : {
255+ billing_model : 'cpa' ,
256+ settlement_status : 'charged' ,
257+ amount_cents : 75 ,
258+ balance_cents : 925 ,
259+ duration_ms : 6 ,
166260 } ,
167261 } )
168262 } )
0 commit comments