Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
643 commits
Select commit Hold shift + click to select a range
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
a603e98
Merge branch 'rc/202608' of github.com:IABTechLab/trusted-server into…
ChristianPavilonis Aug 18, 2026
bf9cfdd
Revert "Merge remote-tracking branch 'origin/pr/1033' into rc/202608"
ChristianPavilonis Aug 18, 2026
3953cd6
Reapply "Merge remote-tracking branch 'origin/pr/1033' into rc/202608"
ChristianPavilonis Aug 18, 2026
104d163
Revert "Reapply "Merge remote-tracking branch 'origin/pr/1033' into r…
ChristianPavilonis Aug 18, 2026
6a2a5fa
Fix platform secret-store startup configuration
ChristianPavilonis Aug 18, 2026
f082560
Merge branch 'main' into rc/202608
aram356 Aug 18, 2026
e79cccb
Merge branch 'main' into feat/admin-ec-lookup-endpoint
aram356 Aug 18, 2026
45c7ccd
Merge branch 'main' into feat/ssat-debug-comment-config
aram356 Aug 18, 2026
e8c0eec
Merge branch 'main' into 1009-esi-cacheable-root-spec
aram356 Aug 18, 2026
7c865ce
Merge branch 'main' into refactor/cache-headers
aram356 Aug 18, 2026
323fd4a
Emit browser_family device signal in auction telemetry
jevansnyc Aug 18, 2026
1a2d16c
Document comprehensive PR 928 review fixes
prk-Jr Aug 19, 2026
cf25efb
Plan comprehensive PR 928 review fixes
prk-Jr Aug 19, 2026
f3776a9
Keep Fastly admin EC lookups read only
prk-Jr Aug 19, 2026
de61c43
Validate mixed-case admin EC auth coverage
prk-Jr Aug 19, 2026
8649b43
Explain dropped admin EID preview sources
prk-Jr Aug 19, 2026
1198eb9
Share core request cookie extraction
prk-Jr Aug 19, 2026
a3a0479
Harden admin diagnostic responses
prk-Jr Aug 19, 2026
be434c2
Clarify admin diagnostics contracts
prk-Jr Aug 19, 2026
436e25f
Tighten admin diagnostic review coverage
prk-Jr Aug 19, 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
02597cf
Document PR 1013 review remediation
prk-Jr Aug 19, 2026
9419424
Clarify PR 1013 remediation outcomes
prk-Jr Aug 19, 2026
8101248
Plan PR 1013 review remediation
prk-Jr Aug 19, 2026
47a58a8
Make Fastly template cache reads fallible
prk-Jr Aug 19, 2026
7329ed8
Preserve injection for unsupported encodings
prk-Jr Aug 19, 2026
df35e79
Scope terminal privacy to synthesized responses
prk-Jr Aug 19, 2026
752fbf3
Refuse publisher ESI and seam collisions
prk-Jr Aug 19, 2026
b3ae41f
Validate and version-guard the SSAT debug comment options
prk-Jr Aug 19, 2026
5491204
Harden template cache boundaries
prk-Jr Aug 19, 2026
341bd52
Make initial GPT scheduling one-shot
prk-Jr Aug 19, 2026
eb8e57a
Remove ESI spike residue
prk-Jr Aug 19, 2026
d0c3cb7
Align ESI spike documentation and tooling
prk-Jr Aug 19, 2026
379c33d
Fix ESI design whitespace
prk-Jr Aug 19, 2026
24a855b
Design template cache terminology rename
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
7d21559
Plan template cache terminology rename
prk-Jr Aug 19, 2026
c2cd68c
Name template cache namespace and diagnostics
prk-Jr Aug 19, 2026
ced398b
Clarify template cache documentation
prk-Jr Aug 19, 2026
ca4f249
Describe shared templates consistently
prk-Jr Aug 19, 2026
1969dff
Fix template cache rustdoc reference
prk-Jr Aug 19, 2026
424af92
Rename template cache local harness
prk-Jr Aug 19, 2026
0a59c92
Use template cache terminology in documentation
prk-Jr Aug 19, 2026
99fb7ca
Clarify template cache documentation
prk-Jr Aug 19, 2026
1680e0a
Document template cache migration exceptions
prk-Jr Aug 19, 2026
4b8e04e
Add APS publisher rendering experiment
ChristianPavilonis Aug 19, 2026
e9bf8f2
Merge commit 'refs/pull/1024/head' of github.com:IABTechLab/trusted-s…
ChristianPavilonis Aug 19, 2026
e2f1f63
Document trusted client IP header design
prk-Jr Aug 19, 2026
d940723
Clarify trusted header validation
prk-Jr Aug 19, 2026
932b9f8
Plan trusted client IP implementation
prk-Jr Aug 19, 2026
209bea2
Ignore local worktrees
prk-Jr Aug 19, 2026
3d542ff
Add trusted client IP configuration
prk-Jr Aug 19, 2026
6b7db93
Differentiate trusted client IP header errors
prk-Jr Aug 19, 2026
01c2c47
Resolve authenticated forwarded client IP
prk-Jr Aug 19, 2026
6314947
Use resolved client IP for middleware geo
prk-Jr Aug 19, 2026
6078a46
Inject APS publisher-native runner
ChristianPavilonis Aug 19, 2026
bf2d1b2
Preserve authoritative client IP absence
prk-Jr Aug 19, 2026
99f8311
Document trusted client IP forwarding
prk-Jr Aug 19, 2026
5cb94e6
Clarify trusted header name restrictions
prk-Jr Aug 19, 2026
53dbaee
Clarify Fastly client IP sanitization order
prk-Jr Aug 19, 2026
caf4422
Reserve the full admin namespace at the fallback boundary
prk-Jr Aug 19, 2026
8684e1b
Require prefix-level admin EC auth coverage
prk-Jr Aug 19, 2026
41484a7
Merge commit '4b8e04e41d2b9b85ff9b12471ba0eb79c0f4f9fa' into rc/20260…
ChristianPavilonis Aug 19, 2026
800e40f
Strengthen trusted client IP shared secret validation
prk-Jr Aug 19, 2026
7d4da82
Strip client-supplied X-Forwarded-For at the edge
prk-Jr Aug 19, 2026
87d9697
Resolve the trusted client IP behind one sanitizing call
prk-Jr Aug 19, 2026
9a1cba9
Mark diagnostics responses terminal-private
prk-Jr Aug 19, 2026
82db770
Anchor the shared seam to the parsed body end
prk-Jr Aug 19, 2026
9e95dd8
Merge branch 'fix/1013-diagnostics-privacy' into 1009-esi-cacheable-r…
prk-Jr Aug 19, 2026
ce9c3c6
Merge branch 'fix/1013-structural-seam-and-meta-csp' into 1009-esi-ca…
prk-Jr Aug 19, 2026
fc969ce
Merge branch 'main' into worktree-edgezero-316-upgrade
aram356 Aug 19, 2026
1aefb13
Merge branch 'rc/202608-pr-1024' into rc/202608
ChristianPavilonis Aug 19, 2026
915ee6f
Merge branch 'main' into issue-1007-cache-control
aram356 Aug 20, 2026
f73a4f5
docs: design round 3 review remediation
prk-Jr Aug 20, 2026
6ee9c16
Merge branch 'main' into feature/ts-cli-ad-templates
prk-Jr Aug 20, 2026
6275d60
docs: refine round 3 remediation design
prk-Jr Aug 20, 2026
d8cc3e8
Plan round 3 review remediation
prk-Jr Aug 20, 2026
e707758
Ignore agent implementation worktrees
prk-Jr Aug 20, 2026
c6c184f
Merge branch 'main' into feat/ssat-debug-comment-config
prk-Jr Aug 20, 2026
6ed133a
Keep page bids responses terminal private
prk-Jr Aug 20, 2026
8abf9ae
Preserve initial ad scheduler latch across handoff
prk-Jr Aug 20, 2026
c8671cc
Cancel invalid template cache reservations
prk-Jr Aug 20, 2026
733b660
Close template cache review gaps
prk-Jr Aug 20, 2026
e2ef9f2
Mark page bids response as must use
prk-Jr Aug 20, 2026
b836fad
Resolve round-4 review on ad-template generation
prk-Jr Aug 20, 2026
a8694da
Clarify trusted client IP secret validation
prk-Jr Aug 20, 2026
57c0aa6
Merge remote-tracking branch 'origin/main' into fix/trusted-client-ip…
prk-Jr Aug 20, 2026
b0c88ab
Validate trusted client IP shared secrets
prk-Jr Aug 20, 2026
78c0db4
Template a slot that never appears on the site root
prk-Jr Aug 20, 2026
2a7052e
Record trusted client IP verification
prk-Jr Aug 20, 2026
84b84c3
Scope the retired admin keys reservation to its own namespace
prk-Jr Aug 20, 2026
2cd4826
Clarify forwarded client IP header guidance
prk-Jr Aug 20, 2026
6fb4238
Merge branch 'main' into feat/admin-ec-lookup-endpoint
prk-Jr Aug 20, 2026
c01d7ac
Merge branch 'main' into 1009-esi-cacheable-root-spec
prk-Jr Aug 20, 2026
6751750
Merge remote-tracking branch 'origin/main' into rc/202608
prk-Jr Aug 20, 2026
06b0df8
Restore upstream publisher behavior and harden cache policies
ChristianPavilonis Aug 20, 2026
49e7094
Address GPT diagnostics review feedback
ChristianPavilonis Aug 20, 2026
9c1b236
Merge current main into cache policy branch
ChristianPavilonis Aug 20, 2026
d909f1b
Merge remote-tracking branch 'origin/pr/928' into rc/202608
ChristianPavilonis Aug 20, 2026
00b4de3
Merge remote-tracking branch 'origin/pr/940' into rc/202608
ChristianPavilonis Aug 20, 2026
53fd5f7
Merge remote-tracking branch 'origin/pr/943' into rc/202608
ChristianPavilonis Aug 20, 2026
fcfce2f
Merge remote-tracking branch 'origin/pr/1032' into rc/202608
ChristianPavilonis Aug 20, 2026
31f718b
Merge remote-tracking branch 'origin/pr/823' into rc/202608
ChristianPavilonis Aug 20, 2026
e44b03e
Merge remote-tracking branch 'origin/pr/860' into rc/202608
ChristianPavilonis Aug 20, 2026
a9a9c0a
Merge branch 'main' into experiment/aps-native-rendering
aram356 Aug 20, 2026
19034b2
Switch esi dependency to released crates.io 0.7.2
prk-Jr Aug 20, 2026
0bd1c7c
Merge remote-tracking branch 'origin/pr/1008' into rc/202608
ChristianPavilonis Aug 20, 2026
598f710
Merge branch 'main' into edgezero-secrets
aram356 Aug 20, 2026
073d564
Merge branch 'main' into feature/ts-cli-ad-templates
aram356 Aug 20, 2026
46b7052
Merge branch 'main' into worktree-edgezero-316-upgrade
aram356 Aug 20, 2026
1c60e69
Merge remote-tracking branch 'origin/pr/1013' into rc/202608
ChristianPavilonis Aug 20, 2026
6c416e6
Format configuration guide
ChristianPavilonis Aug 20, 2026
d8499bb
Prevent shared caching of inactive publisher HTML
ChristianPavilonis Aug 20, 2026
76f0372
Merge remote-tracking branch 'origin/main' into issue-1007-cache-control
ChristianPavilonis Aug 20, 2026
2234e9b
Remove legacy C2 harness from release CI
prk-Jr Aug 20, 2026
6b70c8b
remove fastly staging requirement for datadome blockage
ChristianPavilonis Aug 20, 2026
247cfd6
Merge branch 'rc/202608' of github.com:IABTechLab/trusted-server into…
ChristianPavilonis Aug 20, 2026
5d03b77
Harden trusted client IP header handling
prk-Jr Aug 20, 2026
47faca4
Merge branch 'experiment/aps-native-rendering' into rc/202608
ChristianPavilonis Aug 20, 2026
63370fc
Prevent APS creative frame scrollbars
ChristianPavilonis Aug 20, 2026
d4cd2cc
Prevent APS creative frame scrollbars
ChristianPavilonis Aug 20, 2026
f90f638
Pin edgezero dependencies to immutable rev instead of branch
aram356 Aug 21, 2026
bf47680
Document new CLI lifecycle and config gc commands
aram356 Aug 21, 2026
40dd9b3
Drop stale EdgeZero v0.0.4 qualifiers from env-overlay docs
aram356 Aug 21, 2026
e080e6e
Clarify trusted client IP VCL setup
prk-Jr Aug 21, 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
16473c7
Merge branch 'main' into rc/202608
prk-Jr Aug 21, 2026
558bd68
Merge branch 'main' into 1009-esi-cacheable-root-spec
prk-Jr Aug 21, 2026
ab4abcb
Merge branch 'main' into fix/trusted-client-ip-header
prk-Jr Aug 21, 2026
f77e0a2
Merge #1048 remote-tracking branch 'origin/pr/1048' into rc/202608
prk-Jr Aug 21, 2026
69b30c0
Harden APS publisher-native rendering
ChristianPavilonis Aug 21, 2026
13a6ecf
Merge branch 'main' into experiment/aps-native-rendering
ChristianPavilonis Aug 21, 2026
8927e13
Preserve inactive cache policy across revalidation
ChristianPavilonis Aug 21, 2026
cf353e3
Merge main into rc/202608
ChristianPavilonis Aug 21, 2026
59dddff
Merge #823 into rc/202608
ChristianPavilonis Aug 21, 2026
d68b78c
Merge #940 into rc/202608
ChristianPavilonis Aug 21, 2026
4865d4f
Merge #1013 into rc/202608
ChristianPavilonis Aug 21, 2026
393f72f
Merge #1008 into rc/202608
ChristianPavilonis Aug 21, 2026
57591af
Merge #1042 into rc/202608
ChristianPavilonis Aug 21, 2026
58532d7
Remove duplicate APS runner helper after RC merge
ChristianPavilonis Aug 21, 2026
7fc5e9b
Merge branch 'main' into worktree-edgezero-316-upgrade
aram356 Aug 22, 2026
87546d3
Document the staged-deploy config leg and correct healthcheck retry w…
aram356 Aug 22, 2026
01d7f61
Extend CLI parse tests for staging config flags, gc gate, and --version
aram356 Aug 22, 2026
4aee052
Refresh secret-fields comment and drop last v0.0.4 qualifiers
aram356 Aug 22, 2026
66aebe3
Merge branch 'main' into feature/ts-cli-ad-templates
aram356 Aug 22, 2026
dd8bcdd
Merge branch 'main' into worktree-edgezero-316-upgrade
aram356 Aug 22, 2026
3ea0561
Omit unset trusted client IP config from serialized settings
prk-Jr Aug 22, 2026
8aaefb7
Merge branch 'main' into fix/trusted-client-ip-header
prk-Jr Aug 22, 2026
55d1702
Merge branch 'main' into fix/trusted-client-ip-header
prk-Jr Aug 24, 2026
3329711
Address trusted client IP review feedback
prk-Jr Aug 24, 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
eaa86c2
Merge main into rc/202608
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
070397f
Resolve static credentials through typed config
ChristianPavilonis Aug 24, 2026
b1e967e
Update EdgeZero static-secret support revision
ChristianPavilonis Aug 24, 2026
1315cdb
Align EdgeZero deployment mapping revision
ChristianPavilonis 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
38982d2
Merge PR 1036 into rc/202608
ChristianPavilonis Aug 25, 2026
1930dfd
Harden trusted client IP front-door documentation
prk-Jr Aug 25, 2026
dcfab7e
Merge branch 'main' into fix/trusted-client-ip-header
prk-Jr Aug 25, 2026
3e2b3d2
Fix secret reference validation and guidance
ChristianPavilonis 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
a7aadcb
Merge config-first auction providers into rc/202608
ChristianPavilonis Aug 25, 2026
a046ca5
Merge PR #1070 into rc/202608
prk-Jr Aug 26, 2026
b1d4916
Merge main into rc/202608
prk-Jr 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
1d5aae3
Merge updated PR #823 into rc/202608
ChristianPavilonis Aug 26, 2026
42dd7c3
Merge updated PR #940 into rc/202608
ChristianPavilonis Aug 26, 2026
46e4c00
Fix secret reference validation and guidance
ChristianPavilonis Aug 25, 2026
4dbfb57
Address secret configuration review findings
ChristianPavilonis Aug 26, 2026
0df3c05
Make Edge Cookie partner API tokens optional
ChristianPavilonis Aug 26, 2026
77c1e13
Merge updated PR #1048 into rc/202608
ChristianPavilonis Aug 26, 2026
321f70a
Address config-first provider review feedback
ChristianPavilonis Aug 26, 2026
059ee24
Fix merged template-cache harness cache assertion
ChristianPavilonis Aug 26, 2026
2009c03
Merge PR #1079 into rc/202608
ChristianPavilonis Aug 26, 2026
6462eb8
Upgrade edgezero dependencies to the v0.0.6 release
aram356 Aug 27, 2026
682bcff
Merge remote-tracking branch 'origin/main' into worktree-edgezero-316…
aram356 Aug 27, 2026
89c171e
Correct staging and rollback lifecycle docs, cover config gc --store
aram356 Aug 27, 2026
1b17ce0
Merge branch 'main' into edgezero-secrets
aram356 Aug 27, 2026
34d2fc7
Merge branch 'main' into telemetry-browser-family
aram356 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
330ce20
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
5c23c85
Merge branch 'main' into telemetry-browser-family
aram356 Aug 27, 2026
a163367
Merge remote-tracking branch 'origin/main' into rc/202608
aram356 Aug 27, 2026
985ff22
Restore secret-store key references in the config template
aram356 Aug 27, 2026
76f6f13
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
d282fbc
Merge main into rc/202608
ChristianPavilonis Aug 28, 2026
835cca5
Merge updated PR #823 into rc/202608
ChristianPavilonis Aug 28, 2026
7834975
Merge updated PR #940 into rc/202608
ChristianPavilonis Aug 28, 2026
f233c71
Merge updated PR #1016 into rc/202608
ChristianPavilonis Aug 28, 2026
5378d1e
Merge updated PR #1036 into rc/202608
ChristianPavilonis Aug 28, 2026
2e7b8a0
Merge updated PR #1039 into rc/202608
ChristianPavilonis Aug 28, 2026
bd6668a
Merge updated PR #1079 into rc/202608
ChristianPavilonis Aug 28, 2026
07dfc1c
Resolve RC integration test conflicts
ChristianPavilonis Aug 28, 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
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,13 @@ 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. 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.
- Publisher HTML now uses `Cache-Control: max-age=60` when server-side ad templates are inactive, while preserving origin `private`/`no-store` policies and CDN-specific cache headers. Set `[creative_opportunities].enabled = false` to disable publisher HTML and SPA template delivery without disabling direct `POST /auction` callers.
- **Breaking** — `bid_param_zone_overrides` inner values must now be JSON objects; previously non-object or empty values (`"header" = "x"`, `"header" = {}`) were accepted and silently produced a dead rule at runtime. They now fail at startup with a configuration error. Operators upgrading should audit their `bid_param_zone_overrides` config for non-object zone entries.
- **Breaking** — Integration configuration strings are no longer globally reinterpreted as JSON scalars. Operators upgrading should audit `[integrations.*]` settings and use native TOML/typed-config booleans and numbers (for example, `enabled = true`, not `enabled = "true"`); quoted numeric and boolean scalars now fail validation instead of silently converting.
- **Breaking** — Sourcepoint browser module inclusion now requires explicit `[integrations.sourcepoint].enabled = true`; operators relying on the previous unconditional Sourcepoint module should enable the integration before upgrading.
Expand Down
58 changes: 44 additions & 14 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