Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
504 commits
Select commit Hold shift + click to select a range
e255521
Remove unused parser and client-fill spike paths
prk-Jr Aug 12, 2026
9468dc0
Merge branch 'main' into log/datadome
aram356 Aug 12, 2026
7a53900
Canonicalize shared template cache keys
prk-Jr Aug 12, 2026
6d84ab2
Harden ESI template freshness and miss collapse
prk-Jr Aug 12, 2026
67a5706
Complete ESI byte-seam hardening
prk-Jr Aug 12, 2026
024cb5b
Verify C2 assembly end to end
prk-Jr Aug 12, 2026
cbcbcc4
Document ESI rollout and rollback
prk-Jr Aug 12, 2026
62ab04a
Honor Fastly surrogate freshness for ESI
prk-Jr Aug 12, 2026
fe907ac
Allow reloads to reuse ESI templates
prk-Jr Aug 12, 2026
73b700b
Harden DataDome exclusion and bypass handling
ChristianPavilonis Aug 12, 2026
ed7e192
Merge branch 'main' into log/datadome
ChristianPavilonis Aug 12, 2026
b80c094
Make ESI template lifetime configurable
prk-Jr Aug 12, 2026
be4a24f
Merge PR #992: Align DataDome tag injection with IP exclusions and ad…
aram356 Aug 12, 2026
0374cb9
Merge PR #1008: Add a server-side ad template switch and cache policy
aram356 Aug 12, 2026
c9b5b27
Merge PR #940: Upgrade EdgeZero to the deploy-actions branch
aram356 Aug 12, 2026
ba4f24d
Bump typescript-eslint from 8.57.2 to 8.66.0 in /docs
dependabot[bot] Aug 13, 2026
806b564
Document GPT diagnostics attribution and correlation evidence
prk-Jr Aug 13, 2026
2af557a
Simplify the shared-template ad seam
prk-Jr Aug 13, 2026
4868436
Clarify ESI byte-seam terminology
prk-Jr Aug 13, 2026
ea48ad6
Merge branch 'main' into rc/202608
aram356 Aug 13, 2026
d173079
Merge branch 'main' into 1009-esi-cacheable-root-spec
prk-Jr Aug 13, 2026
297325a
Add GAM ts cohort attribution design spec
aram356 Aug 13, 2026
a4b7829
Merge branch 'main' into feature/ts-cli-ad-templates
aram356 Aug 13, 2026
2650aa2
Show observed slot size in GPT diagnostics
ChristianPavilonis Aug 13, 2026
3843e40
Restore ESI parsing for cold template assembly
prk-Jr Aug 14, 2026
fa37cfb
Merge current main into #1009 ESI cacheable-root work
prk-Jr Aug 14, 2026
fa93269
Merge ESI #1013 into rc/202608
prk-Jr Aug 14, 2026
a86c4ce
Add GAM ts cohort attribution design spec
aram356 Aug 13, 2026
f5ca22e
Show requested slot sizes in GPT diagnostics
ChristianPavilonis Aug 14, 2026
400f299
Finalize GAM cohort attribution design
prk-Jr Aug 14, 2026
ec62128
Add GAM attribution implementation plan
prk-Jr Aug 14, 2026
71e0714
Add GPT GAM attribution option
prk-Jr Aug 14, 2026
990b6bf
Authorize GAM attribution bundle
prk-Jr Aug 14, 2026
0bfee82
Cover disabled GPT attribution
prk-Jr Aug 14, 2026
06ec213
Queue page-level GAM attribution
prk-Jr Aug 14, 2026
31a104f
Merge pull request #1032 from fix/gpt-diagnostics-observed-slot-size
ChristianPavilonis Aug 14, 2026
19c3709
Render APS creatives in opaque data frames
ChristianPavilonis Aug 14, 2026
18d28a5
Add GAM attribution bundle fallback
prk-Jr Aug 15, 2026
d65f656
Characterize targeting collisions
prk-Jr Aug 15, 2026
ef37c11
Define GAM attribution streaming semantics
prk-Jr Aug 15, 2026
1749414
Document GAM attribution configuration
prk-Jr Aug 15, 2026
ef35343
Use explicit GAM attribution branch
prk-Jr Aug 15, 2026
97e097d
Align GAM rollback and failure coverage
prk-Jr Aug 15, 2026
367a593
Merge remote GAM attribution spec
prk-Jr Aug 15, 2026
78107e6
Merge GAM cohort attribution implementation
prk-Jr Aug 15, 2026
fb07665
Merge branch 'main' into feature/ts-cli-ad-templates
prk-Jr Aug 15, 2026
5420390
Sync EdgeZero to latest deploy-actions tip and adopt config gc
aram356 Aug 15, 2026
acca2dd
Re-merge PR #940: Sync EdgeZero to latest deploy-actions tip and adop…
aram356 Aug 15, 2026
b23f270
Merge remote-tracking branch 'origin/main' into worktree-edgezero-316…
aram356 Aug 15, 2026
f2a5eb8
Re-merge PR #940 after syncing it with main (which now carries #992 a…
aram356 Aug 15, 2026
1e3edc7
Merge origin/rc/202608 (ESI #1013, GPT diagnostics slot size #1032, m…
aram356 Aug 16, 2026
fe5767e
Sync EdgeZero to deploy-actions tip 5f3d648c
aram356 Aug 16, 2026
cc0126e
Re-merge PR #940: Sync EdgeZero to deploy-actions tip 5f3d648c
aram356 Aug 16, 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
5156908
Merge branch 'main' into 1014-gpt-diagnostics-doc-completeness
prk-Jr Aug 17, 2026
866bcd4
Merge branch 'main' into feat/admin-ec-lookup-endpoint
prk-Jr Aug 17, 2026
253ff9c
Merge #1025 1014-gpt-diagnostics-doc-completeness into rc/202608
prk-Jr Aug 17, 2026
0fb0cbb
Merge remote-tracking branch 'origin/main' into feat/ssat-debug-comme…
prk-Jr Aug 17, 2026
7d2ba2d
Revise SSAT debug comment sensitivity model
prk-Jr Aug 17, 2026
a04f47d
Merge #1034 docs/gam-ts-cohort-attribution-spec into rc/202608
prk-Jr Aug 17, 2026
3715f27
Tighten SSAT debug metadata privacy model
prk-Jr Aug 17, 2026
b8b917e
Merge #928 feat/admin-ec-lookup-endpoint into rc/202608
prk-Jr Aug 17, 2026
8a61578
Validate redacted SSAT metadata by schema
prk-Jr Aug 17, 2026
de3db0a
Clarify SSAT upstream safety contract
prk-Jr Aug 17, 2026
1af743c
Update SSAT debug comment implementation plan
prk-Jr Aug 17, 2026
691706d
Merge #823 feature/ts-cli-ad-templates into rc/202608
prk-Jr Aug 17, 2026
e7f057d
Correct SSAT implementation verification plan
prk-Jr Aug 17, 2026
a99033f
Fix SSAT plan metadata type handling
prk-Jr Aug 17, 2026
9825743
Harden SSAT debug comment configuration modes
prk-Jr Aug 17, 2026
567c963
Enforce SSAT debug response metadata schemas
prk-Jr Aug 17, 2026
737c18a
Document SSAT debug sensitivity modes
prk-Jr Aug 17, 2026
d7737d3
Implement configurable cache header policies
ChristianPavilonis Jul 8, 2026
d6328f4
Format cache configuration docs
ChristianPavilonis Jul 8, 2026
0e413c2
Address cache policy review feedback
ChristianPavilonis Jul 15, 2026
2de213d
Fix cache policy clippy warnings
ChristianPavilonis Jul 17, 2026
d6920d4
Fix publisher test cache policy argument
ChristianPavilonis Jul 29, 2026
3b9063f
Preserve integration configuration values on rebase
ChristianPavilonis Jul 29, 2026
f4169fb
Harden configurable asset cache rules
ChristianPavilonis Jul 30, 2026
56083e3
Improve publisher HTML cache policy when SSAT is inactive
ChristianPavilonis Aug 6, 2026
d7bfa92
Document dedicated server-side ad template switch
ChristianPavilonis Aug 6, 2026
e9a55d4
Add dedicated server-side ad template switch
ChristianPavilonis Aug 6, 2026
03e429a
Address cache policy review feedback
ChristianPavilonis Aug 13, 2026
38c9636
Preserve origin cache privacy on inactive templates
ChristianPavilonis Aug 17, 2026
fd6d832
Resolve cache policy review feedback
ChristianPavilonis Aug 17, 2026
fefe73a
Merge remote-tracking branch 'origin/pr/1033' into rc/202608
ChristianPavilonis Aug 17, 2026
49061aa
Merge remote-tracking branch 'origin/pr/860' into rc/202608
ChristianPavilonis Aug 17, 2026
0e1a405
Document admin diagnostics review fixes
prk-Jr Aug 18, 2026
ec8ca8c
Clarify admin authentication probes
prk-Jr Aug 18, 2026
2ec38e7
Plan admin diagnostics review fixes
prk-Jr Aug 18, 2026
e637524
Fail closed for concrete admin routes
prk-Jr Aug 18, 2026
539beba
Deny admin diagnostics in publisher fallback
prk-Jr Aug 18, 2026
17f0ac4
Keep admin diagnostics out of publisher fallback
prk-Jr Aug 18, 2026
4657cbf
Keep admin EID diagnostics read only
prk-Jr Aug 18, 2026
63e39b8
Preserve raw admin EC diagnostic records
prk-Jr Aug 18, 2026
178e2cd
Document admin EC and EID diagnostics
prk-Jr Aug 18, 2026
c70de71
Fix admin diagnostic test lint
prk-Jr Aug 18, 2026
69e1b8a
Reserve the full admin fallback namespace
prk-Jr Aug 18, 2026
9841fcc
Collect the root page on every device profile
prk-Jr Aug 18, 2026
8f5b345
Design SSAT debug comment output formatting
prk-Jr Aug 18, 2026
0565947
Plan SSAT debug comment output formatting
prk-Jr Aug 18, 2026
2050f18
Configure SSAT debug comment output format
prk-Jr Aug 18, 2026
00a969a
Pretty print SSAT debug comment dumps
prk-Jr Aug 18, 2026
e4c52a8
Document SSAT debug comment formatting
prk-Jr Aug 18, 2026
ccda520
Format SSAT debug comment implementation plan
prk-Jr Aug 18, 2026
67d1608
Document SSAT auction debug comment usage
prk-Jr Aug 18, 2026
2f4e77e
Merge #943 feat/ssat-debug-comment-config into rc/202608
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
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
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
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
6078a46
Inject APS publisher-native runner
ChristianPavilonis 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
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
78c0db4
Template a slot that never appears on the site root
prk-Jr Aug 20, 2026
84b84c3
Scope the retired admin keys reservation to its own namespace
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
0bd1c7c
Merge remote-tracking branch 'origin/pr/1008' into rc/202608
ChristianPavilonis 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
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
47faca4
Merge branch 'experiment/aps-native-rendering' into rc/202608
ChristianPavilonis Aug 20, 2026
d4cd2cc
Prevent APS creative frame scrollbars
ChristianPavilonis Aug 20, 2026
4bb56f9
Add Prebid ad-latency optimizations design spec
aram356 Aug 21, 2026
796da05
Correct spec: slim-prebid loader gate and requestBids promise contract
aram356 Aug 21, 2026
63fb221
Return spec to draft and address review findings
aram356 Aug 21, 2026
7bc1235
Address second review round on ad-latency spec
aram356 Aug 21, 2026
e2c8de5
Address third review round on ad-latency spec
aram356 Aug 21, 2026
84bb7c1
Address fourth review round on ad-latency spec
aram356 Aug 21, 2026
401c641
Address fifth review round on ad-latency spec
aram356 Aug 22, 2026
162d4e2
Point the guardrail table at the coalesced group rollup
aram356 Aug 22, 2026
a133947
Align rollout step 3 check cadence with the daily hold decision rule
aram356 Aug 22, 2026
f97ca30
Address sixth review round on ad-latency spec
aram356 Aug 23, 2026
151d822
Address seventh review round on ad-latency spec
aram356 Aug 23, 2026
1aab56e
Address eighth review round on ad-latency spec
aram356 Aug 23, 2026
4fa73e7
Address ninth review round on ad-latency spec
aram356 Aug 27, 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
25 changes: 23 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@ jobs:
run: echo "viceroy-version=$(grep '^viceroy ' .tool-versions | awk '{print $2}')" >> $GITHUB_OUTPUT
shell: bash

- name: Retrieve Node.js version
id: node-version
run: echo "node-version=$(grep '^nodejs ' .tool-versions | awk '{print $2}')" >> $GITHUB_OUTPUT
shell: bash

- name: Set up Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
Expand All @@ -45,9 +50,20 @@ jobs:
if: steps.cache-viceroy.outputs.cache-hit != 'true'
run: cargo install viceroy --version "${{ steps.viceroy-version.outputs.viceroy-version }}" --locked --force

- name: Use Node.js for the served-seam contract
uses: actions/setup-node@v4
with:
node-version: ${{ steps.node-version.outputs.node-version }}

- name: Run tests
run: cargo test-fastly

- name: Run template cache ESI local harness
run: BID_DELAY=3 ./scripts/template-cache-local-test.sh esi

- name: Run inline control harness
run: BID_DELAY=3 ./scripts/template-cache-local-test.sh inline

test-axum:
name: cargo test (axum native)
runs-on: ubuntu-latest
Expand Down Expand Up @@ -214,9 +230,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 .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ src/*.html
.specstory
.vscode

# Agent implementation worktrees
/.worktrees/

# Claude Code — ignore all, then whitelist shared config
.claude/*
!.claude/settings.json
Expand Down
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Changed

- **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.
- Publisher HTML uses `Cache-Control: max-age=60` for successful GET document responses when server-side ad templates are structurally inactive, while preserving origin `private`/`no-store` policies and request-scoped bot, prefetch, or consent-denied responses. Cookie-bearing responses are finalized as `private, max-age=0`; CDN-specific cache headers remain unchanged for inactive templates. 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 All @@ -21,6 +24,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Security

- Reserved the complete admin namespace at the publisher-fallback boundary. Percent-encoded separators (`/_ts/admin%2Fec`, `%2f`, and double-encoded forms) matched the `^/_ts/admin` Basic-auth handler but escaped the literal-slash namespace check, so an authenticated request fell through to publisher fallback and forwarded its `Authorization` header and body to the publisher origin. The reservation now spans the whole `/_ts/admin` prefix plus the retired `/admin/keys` aliases — including trailing, descendant, and encoded-separator forms — evaluated on both the raw and percent-decoded path, and applies to every adapter.
- Validate synthetic ID format on inbound values from the `x-synthetic-id` header and `synthetic_id` cookie; values that do not match the expected format (`64-hex-hmac.6-alphanumeric-suffix`) are discarded and a fresh ID is generated rather than forwarded to response headers, cookies, or third-party APIs

### Fixed
Expand Down
Loading
Loading