Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
380 commits
Select commit Hold shift + click to select a range
535f520
Merge branch 'main' into server-side-ad-templates-impl
aram356 Jun 22, 2026
45864be
Merge branch 'main' into server-side-ad-templates-impl
prk-Jr Jun 23, 2026
dc2b18c
Ignore leftover artifacts in pre-rename crate dirs
prk-Jr Jun 23, 2026
7d34bbb
Address PR #680 review findings
prk-Jr Jun 23, 2026
5a835c1
Add glob to the integration-tests lockfile
prk-Jr Jun 23, 2026
975b4aa
Fix server-side ad template review blockers
prk-Jr Jun 25, 2026
ae17b45
Fix EdgeZero empty ad-template config gate
prk-Jr Jun 25, 2026
904e676
Merge remote-tracking branch 'origin/main' into server-side-ad-templa…
prk-Jr Jun 29, 2026
a11f946
Address fourth-pass PR review findings
prk-Jr Jun 29, 2026
ae9d50a
Drop tokio from the integration-tests lockfile
prk-Jr Jun 29, 2026
802e841
Run the server-side auction on the Axum, Cloudflare, and Spin adapters
prk-Jr Jun 30, 2026
297efcd
Build the EC consent context from the request on the portability adap…
prk-Jr Jun 30, 2026
c24cf52
Log the server-side ad-stack gate inputs at debug
prk-Jr Jun 30, 2026
36a6e7a
Run the server-side auction on the Fastly EdgeZero path
prk-Jr Jun 30, 2026
c65c296
Enrich Fastly EdgeZero auction bids with server-side EIDs
prk-Jr Jun 30, 2026
59683ac
Merge branch 'main' into server-side-ad-templates-impl
aram356 Jul 1, 2026
9c0c424
Bring the server-side auction to parity across all adapters
prk-Jr Jul 1, 2026
9a64c17
Merge remote-tracking branch 'origin/main' into server-side-ad-templa…
prk-Jr Jul 1, 2026
224fcaf
Merge origin/main into server-side-ad-templates-impl
prk-Jr Jul 2, 2026
4ec0f3f
Add server-side ad-template CLI on top of server-side ad templates
prk-Jr Jul 2, 2026
711dc38
Apply review follow-ups for server-side auction hardening
prk-Jr Jul 2, 2026
fe198d9
Add ts audit ad-templates generate with multi-page slot merge
prk-Jr Jul 6, 2026
a92e7b2
Merge main into server-side-ad-templates-impl
prk-Jr Jul 6, 2026
ecde812
Merge server-side-ad-templates-impl into feature/ts-cli-ad-templates
prk-Jr Jul 7, 2026
b3374ae
Apply optional follow-ups from server-side ad-template review
prk-Jr Jul 7, 2026
ca4f881
Merge main into server-side-ad-templates-impl
prk-Jr Jul 7, 2026
f444a15
Harden ad-template audit against hostile page data
prk-Jr Jul 7, 2026
43cd1b4
Merge remote-tracking branch 'origin/server-side-ad-templates-impl' i…
prk-Jr Jul 7, 2026
db302cb
Address ad-template generate review findings
prk-Jr Jul 8, 2026
d63a87e
Merge origin/main into feature/ts-cli-ad-templates
prk-Jr Jul 8, 2026
efe9fe0
Merge branch 'main' into feature/ts-cli-ad-templates
prk-Jr Jul 9, 2026
ccccfa7
Resolve ad-template CLI review findings
prk-Jr Jul 9, 2026
c0da7e7
Box audit CLI arguments
prk-Jr Jul 9, 2026
39d22ca
Run browser fixture tests serially
prk-Jr Jul 9, 2026
1c78479
docs: design request-scoped EC KV reuse
prk-Jr Jul 10, 2026
1139646
docs: plan EC KV snapshot implementation
prk-Jr Jul 10, 2026
a2fc5e2
fix: reuse EC KV state across publisher requests
prk-Jr Jul 10, 2026
e53bef0
Add EC KV snapshot test coverage and extract origin-rewrite helper
prk-Jr Jul 10, 2026
2c5fa4b
Merge branch 'main' into fix/kv-eid-request-snapshot-ec-ttl
prk-Jr Jul 13, 2026
ddcba88
Re-read identity graph before skipping a withdrawal tombstone
prk-Jr Jul 13, 2026
49a8977
Fix markdown formatting in EC KV snapshot plan doc
prk-Jr Jul 13, 2026
eb89ea3
Merge branch 'main' into feature/ts-cli-ad-templates
prk-Jr Jul 14, 2026
81896a9
Harden EC KV snapshot recovery against transient misses and misuse
prk-Jr Jul 15, 2026
671a742
Make ad-template audit collector resilient to non-loading pages
prk-Jr Jul 15, 2026
1d852a7
Keep one managed-slot header comment across generate re-runs
prk-Jr Jul 15, 2026
51284b4
Merge remote-tracking branch 'origin/feature/ts-cli-ad-templates' int…
prk-Jr Jul 15, 2026
6406813
Merge branch 'main' into feature/ts-cli-ad-templates
prk-Jr Jul 15, 2026
e081e2c
Wrap assert! in ad-stack gate test to satisfy CI rustfmt
prk-Jr Jul 15, 2026
8fb80ae
Merge remote-tracking branch 'origin/main' into fix/kv-eid-request-sn…
prk-Jr Jul 16, 2026
a058822
Fix cargo fmt lint failure
prk-Jr Jul 16, 2026
a4b7829
Merge branch 'main' into feature/ts-cli-ad-templates
aram356 Aug 13, 2026
fb07665
Merge branch 'main' into feature/ts-cli-ad-templates
prk-Jr Aug 15, 2026
31de3f6
Fix ad-template CLI section rendering and harden the audit commands
prk-Jr Aug 17, 2026
07b37a1
Verify generated ad-template config before it replaces the operator file
prk-Jr Aug 17, 2026
e7f8268
Add multi-page collection and crawl planning for ad-template generate
prk-Jr Aug 17, 2026
73ac39c
Accumulate cross-page slot evidence for ad-template generate
prk-Jr Aug 17, 2026
f32a1ac
Infer section ad-unit templates from cross-page evidence
prk-Jr Aug 17, 2026
deced19
Let the ad-template writer express section policy and per-section pat…
prk-Jr Aug 17, 2026
6722e19
Crawl site sections in ad-template generate and write inferred templates
prk-Jr Aug 17, 2026
d9133f2
Add device-profile cross-checking to ad-template generate
prk-Jr Aug 17, 2026
2ea48e0
Document ad-template slot generation
prk-Jr Aug 17, 2026
90bc61e
Report why a crawled page yielded no ad slots
prk-Jr Aug 17, 2026
b8a5e5c
Pace the ad-template crawl and allow a headful browser
prk-Jr Aug 17, 2026
142e384
Answer consent APIs and report GPT state during ad-template generate
prk-Jr Aug 17, 2026
f5c8616
Audit through a proxy and collapse lowercase React div-id tokens
prk-Jr Aug 17, 2026
230958b
Refuse ad-template slots that are one placement under per-render div ids
prk-Jr Aug 17, 2026
64b9414
Document the ad-template crawl options added after the first draft
prk-Jr Aug 17, 2026
9841fcc
Collect the root page on every device profile
prk-Jr Aug 18, 2026
cd24192
Document PR 823 review resolution design
prk-Jr Aug 18, 2026
4b779ce
Clarify PR review resolution design
prk-Jr Aug 18, 2026
f3cb010
Plan PR 823 review resolution
prk-Jr Aug 18, 2026
bca89ef
Align ad stack gate diagnostics with runtime
prk-Jr Aug 18, 2026
1b418cc
Match ad template verification to runtime behavior
prk-Jr Aug 18, 2026
1c2dfeb
Define ad template CLI assertion contracts
prk-Jr Aug 18, 2026
e8fb2ee
Bound browser ad template evidence collection
prk-Jr Aug 18, 2026
6a64d0d
Share browser sessions across ad template audits
prk-Jr Aug 18, 2026
0ca3395
Preserve ad template crawl evidence
prk-Jr Aug 18, 2026
dfbc7c8
Make ad template updates transaction-safe
prk-Jr Aug 18, 2026
64a88fa
Document and enforce ad template audit contracts
prk-Jr Aug 18, 2026
af32498
Fix ad template design whitespace
prk-Jr Aug 18, 2026
f536381
Simplify legacy audit dispatch
prk-Jr Aug 18, 2026
37f135a
docs: plan pre-navigation cookie fix
prk-Jr Aug 18, 2026
a58cfcf
Fix pre-navigation audit cookies
prk-Jr Aug 18, 2026
cb0e62f
docs: plan contiguous generated slots
prk-Jr Aug 18, 2026
3707672
Keep generated ad slots contiguous
prk-Jr Aug 18, 2026
a6a87ce
Format docs
prk-Jr Aug 18, 2026
c4d9208
docs: design KV snapshot integration with current main
prk-Jr Aug 18, 2026
c979287
docs: tighten pending stream integration contract
prk-Jr Aug 18, 2026
2d60f80
docs: plan KV snapshot integration with current main
prk-Jr Aug 18, 2026
39175d3
Merge main and preserve EC snapshot streaming
prk-Jr Aug 18, 2026
72dfa31
fix: preserve pending-only response streaming
prk-Jr Aug 18, 2026
b8568f3
Resolve ad-template CLI review findings
prk-Jr Aug 19, 2026
efad9c9
Polish ad-template generator output
prk-Jr Aug 19, 2026
bd052b4
Show ad-template generation progress
prk-Jr Aug 19, 2026
1d4ac66
Avoid duplicate crawl failure output
prk-Jr Aug 19, 2026
eb61c86
Plan volatile div collision refusal
prk-Jr Aug 19, 2026
daae07b
Refuse ambiguous volatile ad slots
prk-Jr Aug 19, 2026
cc16ddd
Refuse known volatile ad slot family
prk-Jr Aug 19, 2026
e8f4593
Merge branch 'main' into feature/ts-cli-ad-templates
prk-Jr Aug 19, 2026
e935e14
Use synthetic fixtures for per-render slot tests
prk-Jr Aug 19, 2026
09b7e4a
Accept a same-host HTTPS upgrade during slot generation
prk-Jr Aug 19, 2026
9e649fd
Simplify JS asset proxy spec
ChristianPavilonis May 28, 2026
7a91cc6
update spec
ChristianPavilonis Jun 5, 2026
d343b56
Add JavaScript asset proxy integration
ChristianPavilonis Jun 10, 2026
c6460db
Add audit-generated JS asset proxy config
ChristianPavilonis Jun 22, 2026
c615b2d
Fix JS asset proxy review findings
ChristianPavilonis Jul 1, 2026
bb58be0
Fix JS asset proxy rebase compatibility
ChristianPavilonis Jul 13, 2026
6ee9c16
Merge branch 'main' into feature/ts-cli-ad-templates
prk-Jr Aug 20, 2026
b836fad
Resolve round-4 review on ad-template generation
prk-Jr Aug 20, 2026
78c0db4
Template a slot that never appears on the site root
prk-Jr Aug 20, 2026
a82aaf2
Address JavaScript asset proxy review feedback
ChristianPavilonis Aug 20, 2026
073d564
Merge branch 'main' into feature/ts-cli-ad-templates
aram356 Aug 20, 2026
8fc2477
Merge branch 'main' into simplify-js-asset-proxy-spec
aram356 Aug 20, 2026
e3d0312
Document PR 823 round-five review resolution
prk-Jr Aug 21, 2026
d215554
Plan PR 823 round-five review resolution
prk-Jr Aug 21, 2026
76c337e
Preserve generation browser option contracts
prk-Jr Aug 21, 2026
75afced
Protect borrowed section templates during generation
prk-Jr Aug 21, 2026
28ae90c
Clarify audit generation diagnostics
prk-Jr Aug 21, 2026
364c1d2
Pin audit evidence recognition invariants
prk-Jr Aug 21, 2026
e17ddc1
Align ad-template generation documentation
prk-Jr Aug 21, 2026
543e45a
Satisfy borrowed template inference lint
prk-Jr Aug 21, 2026
78a0a0b
Wire browser settle defaults to the correct commands
prk-Jr Aug 21, 2026
33a654e
Merge branch 'main' into feature/ts-cli-ad-templates
prk-Jr Aug 21, 2026
66aebe3
Merge branch 'main' into feature/ts-cli-ad-templates
aram356 Aug 22, 2026
acd6596
Address round-5 review findings on the ad-template CLI
prk-Jr Aug 24, 2026
5ab4a88
Merge remote-tracking branch 'origin/main' into feature/ts-cli-ad-tem…
prk-Jr Aug 24, 2026
28881e0
Design ad-template scroll and stale-slot diagnostics
prk-Jr Aug 24, 2026
fcf1023
Plan ad-template scroll and stale-slot diagnostics
prk-Jr Aug 24, 2026
71ab3b1
Add scroll option to ad-template generation
prk-Jr Aug 24, 2026
abf490f
Collect lazy ad slots during generation scroll
prk-Jr Aug 24, 2026
7c6692c
Warn about preserved unobserved ad slots
prk-Jr Aug 24, 2026
02f6e59
Document generation scroll and stale-slot warnings
prk-Jr Aug 24, 2026
f8be6ec
Distinguish refused slots from unobserved slots
prk-Jr Aug 24, 2026
1f9d7d1
Handle implicit div ids in stale diagnostics
prk-Jr Aug 24, 2026
f4f9a6e
Design creative opportunity div id reconciliation
prk-Jr Aug 24, 2026
11b0130
Plan creative opportunity div id reconciliation
prk-Jr Aug 24, 2026
f819359
Preserve observed literal ad slot siblings
prk-Jr Aug 24, 2026
f0d96bf
Reject shorter high-entropy ad slot tokens
prk-Jr Aug 24, 2026
b73b4d9
Group browser page collection settings
prk-Jr Aug 24, 2026
69e749c
Clarify observed slot reconciliation
prk-Jr Aug 24, 2026
4c9777d
Fix docs format lint
prk-Jr Aug 24, 2026
2f5cae6
Address review findings on ad-template generate origin and merge scope
prk-Jr Aug 24, 2026
00de4e9
feat: add native secret-store config resolution
ChristianPavilonis Aug 17, 2026
0fdfcbe
Fix platform secret-store startup configuration
ChristianPavilonis Aug 18, 2026
2783e00
Resolve static credentials through typed config
ChristianPavilonis Aug 24, 2026
3dc7370
Update EdgeZero static-secret support revision
ChristianPavilonis Aug 24, 2026
0db2e11
Align EdgeZero deployment mapping revision
ChristianPavilonis Aug 24, 2026
cf16418
Add request phase timing design spec and implementation plan (#1069)
jevansnyc Aug 25, 2026
052eada
Add RequestTimings phase collection and Server-Timing rendering
jevansnyc Aug 25, 2026
7505fb8
Add observability settings and decouple tinybird access and auction e…
jevansnyc Aug 25, 2026
4ce413f
Add test coverage for the access_enabled without tinybird.enabled rej…
jevansnyc Aug 25, 2026
f83092a
Emit Server-Timing at the send freeze point on conclusively private r…
jevansnyc Aug 25, 2026
4b19c44
Record filter and geo spans and dedupe the per-request geo lookup
jevansnyc Aug 25, 2026
ce295f1
Record origin, template cache, and KV phase spans in core
jevansnyc Aug 25, 2026
edc80f3
Allow template caching behind edge auth
prk-Jr Aug 25, 2026
c222ae2
Capture stream duration, auction wait placement, and response bytes
jevansnyc Aug 25, 2026
3e2b3d2
Fix secret reference validation and guidance
ChristianPavilonis Aug 25, 2026
8b028bb
Add access telemetry snapshot, route classes, and coarse route templates
jevansnyc Aug 25, 2026
48acd81
Emit confirmed access telemetry rows after pull-sync post-send
jevansnyc Aug 25, 2026
72d5755
Extend access_logs_raw with phase columns and a non-null sorting key
jevansnyc Aug 25, 2026
c50be03
Widen time_elapsed_ms to nullable so dropped snapshots cannot quarant…
jevansnyc Aug 25, 2026
2b4752a
Document config-first auction provider architecture
ChristianPavilonis Aug 11, 2026
ed9210f
Clarify config-first auction provider plan
ChristianPavilonis Aug 11, 2026
943b4ed
Add config-first auction providers
ChristianPavilonis Aug 13, 2026
0a91bd3
Fix generic OpenRTB bidder handling
ChristianPavilonis Aug 14, 2026
ba2eea6
Fix post-rebase compatibility
ChristianPavilonis Aug 25, 2026
0aead79
Emit Server-Timing from the Axum terminal layer with adapter-specific…
jevansnyc Aug 25, 2026
e9cf5b9
Document the observability and access telemetry configuration surface
jevansnyc Aug 25, 2026
7942c74
Normalize telemetry method, guard zero sample rate, and mirror geo wr…
jevansnyc Aug 26, 2026
d8fcb5e
Add a local dev config envelope generator example
jevansnyc Aug 26, 2026
7cf7d86
Add JSONPaths and expression sorting key to the access datasource
jevansnyc Aug 26, 2026
9bf200a
Merge branch 'main' into esi-edge-terminated-auth-main
prk-Jr Aug 26, 2026
af56a10
Prove identity-graph absence before rotating or dropping an EC
prk-Jr Aug 26, 2026
65180a7
Share endpoint identity-graph snapshots with response finalization
prk-Jr Aug 26, 2026
7b71f83
Merge main and order the template cache ahead of the origin overlap
prk-Jr Aug 26, 2026
600746f
Use web_time Instant on request timing paths
jevansnyc Aug 26, 2026
3d7e697
Reject opaque identifier segments in publisher route templates
jevansnyc Aug 26, 2026
38043d7
Address access telemetry review feedback
jevansnyc Aug 26, 2026
35e1897
Address config-first provider review feedback
ChristianPavilonis Aug 26, 2026
b47ced8
Address secret configuration review findings
ChristianPavilonis Aug 26, 2026
58730d7
Make Edge Cookie partner API tokens optional
ChristianPavilonis Aug 26, 2026
67af9f7
Arbitrate GPT first impressions and resize PUC shells
ChristianPavilonis Aug 26, 2026
1b17ce0
Merge branch 'main' into edgezero-secrets
aram356 Aug 27, 2026
ad011a6
Harden PR 1079 first-impression arbitration (#1083)
prk-Jr Aug 27, 2026
fce2233
Merge origin/main into feature/ts-cli-ad-templates
prk-Jr Aug 27, 2026
1e737a8
Normalize Prebid Server provider endpoints
ChristianPavilonis Aug 27, 2026
c00c1fe
Merge ad-template scroll and staleness fixes
prk-Jr Aug 27, 2026
fec84ad
Fix Linux CLI scroll diagnostics build
prk-Jr Aug 27, 2026
e538c8e
Address first-impression arbitration review feedback
ChristianPavilonis Aug 27, 2026
76f6f13
Address remaining secret configuration review feedback
ChristianPavilonis Aug 28, 2026
44e9eaf
feat: add native secret-store config resolution
ChristianPavilonis Aug 17, 2026
3f6e29d
Fix platform secret-store startup configuration
ChristianPavilonis Aug 18, 2026
d71c660
Resolve static credentials through typed config
ChristianPavilonis Aug 24, 2026
6c35ce9
Update EdgeZero static-secret support revision
ChristianPavilonis Aug 24, 2026
43c7577
Align EdgeZero deployment mapping revision
ChristianPavilonis Aug 24, 2026
edfbcb0
Fix secret reference validation and guidance
ChristianPavilonis Aug 25, 2026
22176da
Address secret configuration review findings
ChristianPavilonis Aug 26, 2026
3b2c64c
Make Edge Cookie partner API tokens optional
ChristianPavilonis Aug 26, 2026
c7c382a
Address remaining secret configuration review feedback
ChristianPavilonis Aug 28, 2026
dc98f67
Merge branch 'main' into feature/ts-cli-ad-templates
prk-Jr Aug 28, 2026
002cbf2
Arbitrate GPT first impressions and resize PUC shells
ChristianPavilonis Aug 26, 2026
efcd124
Harden PR 1079 first-impression arbitration (#1083)
prk-Jr Aug 27, 2026
2a79e6a
Address first-impression arbitration review feedback
ChristianPavilonis Aug 27, 2026
fccfcd4
fix(cli): resolve ad-template generation review gaps
prk-Jr Aug 28, 2026
b1954b2
Merge branch 'main' into feature/ts-cli-ad-templates
prk-Jr Aug 28, 2026
ab291a7
Revalidate a stale EC miss and report failed withdrawals
prk-Jr Aug 28, 2026
6d493fb
Merge main and adopt the marked-Authorization cache gate
prk-Jr Aug 28, 2026
fab4adf
Merge remote-tracking branch 'origin/main' into simplify-js-asset-pro…
ChristianPavilonis Aug 28, 2026
55521cd
Harden JavaScript asset proxy response MIME type
ChristianPavilonis Aug 28, 2026
5a1f0c2
Merge branch 'main' into simplify-js-asset-proxy-spec
ChristianPavilonis Aug 28, 2026
2ef7635
Reject single-segment publisher paths in route templates
jevansnyc Aug 28, 2026
082461d
Sample access rows with real randomness at the snapshot rate
jevansnyc Aug 28, 2026
f3ee473
Drop the origin span before error-path auction telemetry
jevansnyc Aug 28, 2026
46b3c7f
Address remaining review feedback on timing surfaces and docs
jevansnyc Aug 28, 2026
37006d7
Merge branch 'main' into feature/ts-cli-ad-templates
aram356 Aug 28, 2026
c484d71
Resolve ad-template generation review findings
prk-Jr Aug 29, 2026
03743c1
Wait for stable GPT slot discovery
prk-Jr Aug 29, 2026
55f0a23
Merge commit 'refs/pull/1036/head' of github.com:IABTechLab/trusted-s…
ChristianPavilonis Aug 31, 2026
5146645
Correct auction migration guidance
ChristianPavilonis Aug 31, 2026
fd59210
Address remaining first-impression review feedback
ChristianPavilonis Aug 31, 2026
87fac8a
Fix browser auction refresh handling
ChristianPavilonis Aug 31, 2026
a0a3af5
Merge remote-tracking branch 'origin/main' into feat/request-phase-ti…
ChristianPavilonis Aug 31, 2026
0306166
Fix provider routing and bid admission
ChristianPavilonis Aug 31, 2026
e45ff8e
Correct proxy secret length guidance
ChristianPavilonis Aug 31, 2026
9831ee4
Correct proxy secret length guidance
ChristianPavilonis Aug 31, 2026
80c1066
Align auction runtime diagnostics
ChristianPavilonis Aug 31, 2026
6cb26df
Pass complete user agent to auction telemetry
ChristianPavilonis Aug 31, 2026
95cb674
Preserve auction failure and mediation identity
ChristianPavilonis Aug 31, 2026
c6235b9
Enforce access telemetry body limit
ChristianPavilonis Aug 31, 2026
d414740
Merge branch 'main' into fix/kv-eid-request-snapshot-ec-ttl
aram356 Sep 1, 2026
017e99f
Merge branch 'main' into fix/gpt-first-impression-aps-shell
aram356 Sep 1, 2026
3c48d39
Merge commit 'refs/pull/1036/head' of github.com:IABTechLab/trusted-s…
ChristianPavilonis Sep 1, 2026
dc34278
Report a reason when an APS creative render fails
jevansnyc Aug 20, 2026
fae9e35
Attribute APS creative delivery in GPT diagnostics
jevansnyc Aug 20, 2026
f783196
Merge PR #1036 into rc/202609
ChristianPavilonis Sep 1, 2026
2ae092c
Merge PR #1016 into rc/202609
ChristianPavilonis Sep 1, 2026
0b222fd
Merge PR #823 into rc/202609
ChristianPavilonis Sep 1, 2026
e90c229
Merge PR #742 into rc/202609
ChristianPavilonis Sep 1, 2026
93c0ffb
Merge PR #885 into rc/202609
ChristianPavilonis Sep 1, 2026
c486f93
Merge PR #1074 into rc/202609
ChristianPavilonis Sep 1, 2026
1fc9a2c
Add auction timeline offsets spec amendment
jevansnyc Aug 26, 2026
4669b72
Add auction timeline offsets implementation plan
jevansnyc Aug 26, 2026
dd36d3a
Record T0-anchored auction timeline offsets in the access row
jevansnyc Aug 26, 2026
c945854
Remove generated integration wrangler config from tracking
jevansnyc Aug 26, 2026
4c4d077
Merge PR #1076 into rc/202609
ChristianPavilonis Sep 1, 2026
da15f2c
Merge PR #1079 into rc/202609
ChristianPavilonis Sep 1, 2026
e095134
Merge PR #1052 into rc/202609
ChristianPavilonis Sep 1, 2026
0669647
Merge PR #1103 into rc/202609
ChristianPavilonis Sep 1, 2026
1ce95ee
Format auction timeline offsets plan
ChristianPavilonis Sep 1, 2026
c255134
Fix RC CI compatibility
ChristianPavilonis Sep 1, 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
4 changes: 4 additions & 0 deletions .env.dev
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# Non-secret development overlays used while generating the Axum config blob.
# Sourcing this file alone does not configure the Axum server: also export the
# blob and referenced secret-store values as shown in docs/guide/getting-started.md.

# [publisher]
TRUSTED_SERVER__PUBLISHER__ORIGIN_URL=http://localhost:9090

Expand Down
16 changes: 11 additions & 5 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,21 +1,27 @@
# Trusted Server Environment Variables
# Copy this file to .env.dev, .env.staging, or .env.production and fill in values
# See docs/guide/configuration.md for details
# Trusted Server development environment variables
# Copy this file to .env.dev, .env.staging, or .env.production and fill in
# non-secret values. App-config secrets are key names in the pushed blob and
# their values belong in the platform secret store; see the configuration guide.
# For Axum runtime loading, export the config blob as:
# TRUSTED_SERVER_CONFIG_TRUSTED_SERVER_CONFIG_TRUSTED_SERVER_CONFIG=<blob-envelope-json>
# and export one secret per key name as:
# TRUSTED_SERVER_SECRET_TRUSTED_SERVER_SECRETS_<KEY_NAME>=<secret-value>
# The commented examples below are CLI overlays for ordinary fields only.
# Fastly example: map logical app-config secrets to physical `ts_secrets`.
# EDGEZERO__STORES__SECRETS__TRUSTED_SERVER_SECRETS__NAME=ts_secrets

# =============================================================================
# Publisher Settings
# =============================================================================
TRUSTED_SERVER__PUBLISHER__DOMAIN=publisher.com
TRUSTED_SERVER__PUBLISHER__COOKIE_DOMAIN=.publisher.com
TRUSTED_SERVER__PUBLISHER__ORIGIN_URL=https://origin.publisher.com
TRUSTED_SERVER__PUBLISHER__PROXY_SECRET=<your-proxy-secret>

# =============================================================================
# Synthetic ID Settings
# =============================================================================
TRUSTED_SERVER__SYNTHETIC__COUNTER_STORE=counter_store
TRUSTED_SERVER__SYNTHETIC__OPID_STORE=opid_store
TRUSTED_SERVER__SYNTHETIC__SECRET_KEY=<your-synthetic-secret>
# Template variables: client_ip, user_agent, first_party_id, auth_user_id, publisher_domain, accept_language
TRUSTED_SERVER__SYNTHETIC__TEMPLATE={{ client_ip }}:{{ user_agent }}:{{ first_party_id }}

Expand Down
10 changes: 8 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ jobs:
test-rust:
name: cargo test
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- uses: actions/checkout@v4

Expand Down Expand Up @@ -230,9 +231,14 @@ jobs:
run: |
cargo clippy --manifest-path crates/trusted-server-cli/Cargo.toml --target "$(rustc -vV | sed -n 's/host: //p')" --all-targets -- -D warnings

- name: Set up Chrome for browser fixture tests
id: setup-chrome
uses: browser-actions/setup-chrome@v1

- name: cargo test
run: |
cargo test --manifest-path crates/trusted-server-cli/Cargo.toml --target "$(rustc -vV | sed -n 's/host: //p')"
run: ./scripts/test-cli.sh
env:
CHROME: ${{ steps.setup-chrome.outputs.chrome-path }}

test-typescript:
name: vitest
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -63,3 +63,4 @@ src/*.html
# leftover local build artifacts (node_modules, target, dist) that remain on disk.
/crates/js/
/crates/integration-tests/
wrangler.integration.generated.toml
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Changed

- **Breaking:** Auction providers and bidder routes now use the configuration-first `[auction.providers.<id>]` and `[auction.bidders.<id>]` maps. The removed `[auction].providers = [...]` list and removed server fields under `[integrations.prebid]` and `[integrations.aps]` are rejected even when those integrations are disabled, and `ts config push` rejects the old shape before publication. Move PBS `server_url` to provider `endpoint`, server timeout to provider `timeout_ms`, request controls and bidder-parameter overrides to the `prebid-server` `profile_config`, notification suppression to `notifications`, and each former server bidder to an `[auction.bidders.<id>]` route. Move APS endpoint, timeout, account, inventory, debug, and creative controls to an `aps` provider and its `profile_config`. Browser Prebid settings remain under `[integrations.prebid]`; values such as timeout and debug that previously affected both browser and server behavior must now be configured for each owner. Provider endpoints must be absolute HTTPS URLs. Only bidder codes present in `[auction.bidders]` are folded into Trusted Server requests; unlisted publisher bids remain native browser demand. Provider response names now use the configured provider ID, such as `pbs-main`, instead of the legacy literal `prebid`; audit consumers that match `AuctionResponse.provider`. This schema has no mixed-version-safe deployment order: old binaries reject the maps and new binaries reject the retired fields, so activate the new binary and config blob together. Rollbacks must restore an old-schema blob together with the old binary.
- **Breaking** — Admin Basic-auth coverage now includes `GET /_ts/admin/ec`, `GET /_ts/admin/ec/{id}`, and `GET /_ts/admin/eids`. Existing configurations whose `[[handlers]]` patterns protect only the key-management endpoints now fail startup; broaden coverage before deploying, preferably with a namespace-boundary pattern such as `^/_ts/admin(?:/|$)`. Coverage of the dynamic `/_ts/admin/ec/{id}` route is no longer inferred from ID-shaped samples: the router accepts any segment after `/_ts/admin/ec/` and Basic Auth runs on the raw path before routing, so patterns anchored to the EC ID grammar (for example `^/_ts/admin/ec/[a-f0-9]{64}[.][A-Za-z0-9]{6}$`) are rejected in favor of a prefix-level matcher. Placeholder and well-known weak handler passwords (`changeme`, `password`, `admin`, `replace-with-…`) now fail startup on every handler rather than only on handlers inferred to cover an admin endpoint, because first-match-wins handler selection lets a narrow handler shadow the admin namespace.
- Prebid Server provider endpoints now normalize origin-only legacy `server_url` values to `/openrtb2/auction`. Query parameters are preserved, the canonical path loses a trailing slash, and configured non-root custom paths remain exact.
- Publisher HTML uses the browser-only `Cache-Control: private, max-age=60` policy for successful GET document responses and their `304 Not Modified` revalidations when server-side ad templates are structurally inactive, while preserving origin `private`/`no-store` policies and request-scoped bot, prefetch, or consent-denied responses. The `private` directive prevents shared caches that use `Cache-Control` from storing the document. Cookie-bearing responses using the generated inactive policy are finalized as `private, max-age=0`; CDN-specific cache headers remain unchanged and continue to control supporting CDNs independently. Set `[creative_opportunities].enabled = false` to disable publisher HTML and SPA template delivery without disabling direct `POST /auction` callers; an absent configuration, an unmatched slot, or a disabled auction also make the stack structurally inactive. An explicit `enabled = false` is not compatible with older binaries: restore the default, re-push and finalize the config before rolling back.
- **Breaking** — Replaced the legacy APS contextual integration with APS OpenRTB at `/e/pb/bid`. APS configuration now uses canonical `account_id` (`pub_id` remains a compatibility alias), no longer requires APS-specific slot IDs, and defaults script creative eligibility off. Operators must update the endpoint, disable native APS demand for Trusted Server cohorts, and prepare GAM/Universal Creative targeting for `hb_bidder=aps` before rollout. `aps` entries in Prebid bidder lists are logged and stripped. APS renderer winners now preserve the upstream bid `id`, omit `crid` when APS omits it, and carry `ext.trusted_server.renderer` instead of `adm`; external `/auction` consumers must support this response shape.
- **Breaking** — All auction paths now forward only a validated publisher-owned page URL as `site.page`, removing query and fragment data. APS OpenRTB omits `site.ref`; the existing Prebid Server path continues to forward the browser `Referer` as `site.ref`. Query-driven sites may lose contextual targeting and per-page reporting signals that previously came from query parameters.
Expand Down
66 changes: 49 additions & 17 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 8 additions & 6 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -54,12 +54,12 @@ criterion = { version = "0.5", default-features = false, features = ["cargo_benc
derive_more = { version = "2.0", features = ["display", "error"] }
directories = "5"
ed25519-dalek = { version = "2.2", features = ["rand_core"] }
edgezero-adapter-axum = { git = "https://github.com/stackpop/edgezero", tag = "v0.0.4", default-features = false }
edgezero-adapter-cloudflare = { git = "https://github.com/stackpop/edgezero", tag = "v0.0.4", default-features = false }
edgezero-adapter-fastly = { git = "https://github.com/stackpop/edgezero", tag = "v0.0.4", default-features = false }
edgezero-adapter-spin = { git = "https://github.com/stackpop/edgezero", tag = "v0.0.4", default-features = false }
edgezero-cli = { git = "https://github.com/stackpop/edgezero", tag = "v0.0.4" }
edgezero-core = { git = "https://github.com/stackpop/edgezero", tag = "v0.0.4", default-features = false }
edgezero-adapter-axum = { git = "https://github.com/stackpop/edgezero", rev = "0d6ebf9b0250efa5f7031a93ec7b7f09f2c9bf34", default-features = false }
edgezero-adapter-cloudflare = { git = "https://github.com/stackpop/edgezero", rev = "0d6ebf9b0250efa5f7031a93ec7b7f09f2c9bf34", default-features = false }
edgezero-adapter-fastly = { git = "https://github.com/stackpop/edgezero", rev = "0d6ebf9b0250efa5f7031a93ec7b7f09f2c9bf34", default-features = false }
edgezero-adapter-spin = { git = "https://github.com/stackpop/edgezero", rev = "0d6ebf9b0250efa5f7031a93ec7b7f09f2c9bf34", default-features = false }
edgezero-cli = { git = "https://github.com/stackpop/edgezero", rev = "0d6ebf9b0250efa5f7031a93ec7b7f09f2c9bf34" }
edgezero-core = { git = "https://github.com/stackpop/edgezero", rev = "0d6ebf9b0250efa5f7031a93ec7b7f09f2c9bf34", default-features = false }
env_logger = "0.11"
error-stack = "0.6"
esi = "0.7.2"
Expand Down Expand Up @@ -96,6 +96,7 @@ scraper = "0.24.0"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0.149"
sha2 = "0.10.9"
similar = "2.7"
simple_logger = "5"
spin-sdk = { version = "~6.0", default-features = false, features = ["http", "key-value", "variables"] }
subtle = "2.6"
Expand All @@ -108,6 +109,7 @@ tokio-rustls = "0.26"
toml = "1.1"
toml_edit = "0.23.10"
tower = "0.4"
tracing = "0.1"
trusted-server-core = { path = "crates/trusted-server-core" }
trusted-server-js = { path = "crates/trusted-server-js" }
trusted-server-openrtb = { path = "crates/trusted-server-openrtb" }
Expand Down
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,12 @@ ts --help

# Create local config, then edit placeholders before validation
ts config init
# Edit trusted-server.toml
# Edit trusted-server.toml. Server auctions use map-shaped
# [auction.providers.<id>] and [auction.bidders.<id>] tables.
ts config validate

# Audit a public page with Chrome/Chromium to bootstrap a draft config
ts audit https://publisher.example
ts audit generate https://publisher.example

# Run tests (Fastly/WASM crates — requires Viceroy)
cargo test-fastly
Expand Down
Loading
Loading