Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
645 commits
Select commit Hold shift + click to select a range
c64c9c4
Google Tag Manager's page changes are one middleware
jwrosewell Oct 9, 2026
a6c4be1
DataDome's page changes are two middleware, one in each phase
jwrosewell Oct 9, 2026
4d6e7b2
Prebid's page changes are one middleware
jwrosewell Oct 9, 2026
60732a7
A registration states the attributes it puts on the bundle's tag
jwrosewell Oct 9, 2026
99066ff
APS states its bundle tag attribute and changes no page
jwrosewell Oct 9, 2026
cb72186
GPT's page changes are one middleware
jwrosewell Oct 9, 2026
847a02d
GPT diagnostics writes into a reader's copy as a serve middleware
jwrosewell Oct 9, 2026
d81b56b
Next.js's page changes are one middleware
jwrosewell Oct 9, 2026
d4d5fe1
The JavaScript asset proxy changes a page as a middleware
jwrosewell Oct 9, 2026
0b6c1e3
Core's deferred and payload stand-ins change a page as middleware
jwrosewell Oct 9, 2026
072e362
Core's request stand-in writes into a reader's copy as a serve middle…
jwrosewell Oct 9, 2026
a00b005
Test the two attributes core rewrites that nothing asserted on
jwrosewell Oct 9, 2026
7e039ae
The four page hook traits are removed
jwrosewell Oct 9, 2026
3352f8d
The stock list says which middleware its modules supply
jwrosewell Oct 9, 2026
21623bb
`ts audit` places the page changes of the modules it selects
jwrosewell Oct 9, 2026
c4c4076
What was named for a hook is named for the middleware
jwrosewell Oct 9, 2026
448f41d
A Fastly sandbox keeps an application for each app-config key
jwrosewell Oct 9, 2026
e802375
A `__KEY` selector with `{host}` names an app-config blob for each host
jwrosewell Oct 9, 2026
0e4f153
A harness serves two publishers from one local Viceroy instance
jwrosewell Oct 9, 2026
64750a4
The guides say how one service serves several publishers
jwrosewell Oct 9, 2026
12301a6
A build reports when and from what it was made
jwrosewell Oct 9, 2026
4edaec8
Signed evidence of who operates a deployment and which build it runs
jwrosewell Oct 9, 2026
94ae6a2
Every adapter serves the attestation pages
jwrosewell Oct 9, 2026
dffb3b2
The attestation guide, for an operator, a relying party and a reviewer
jwrosewell Oct 9, 2026
896942c
What a key schedule may hold is tested
jwrosewell Oct 9, 2026
a4cebd8
A harness checks the evidence as a verifier would
jwrosewell Oct 9, 2026
1060456
The permissions inspector's lock file takes the two signing crates
jwrosewell Oct 9, 2026
e95ca11
ts keys rotates and retires the signing keys through the host
jwrosewell Oct 9, 2026
95f4346
ts cache purge asks the host to purge
jwrosewell Oct 9, 2026
492f172
The Edge Cookie lookups under /_ts/admin are removed
jwrosewell Oct 9, 2026
86c9344
Key rotation leaves the publisher's domain
jwrosewell Oct 9, 2026
f0b4379
The signing store ids leave the settings
jwrosewell Oct 9, 2026
b4a22e9
The service holds no token for its own platform's API
jwrosewell Oct 9, 2026
57fa6dc
The cache purge route is removed
jwrosewell Oct 9, 2026
3720762
No request is asked for a password
jwrosewell Oct 9, 2026
a5a8704
Bot protection is asked about the publisher's admin paths
jwrosewell Oct 9, 2026
31dd42d
A module can add rules to robots.txt, and core writes the file
jwrosewell Oct 9, 2026
0188f5d
The seam probe supplies a robots.txt contributor
jwrosewell Oct 9, 2026
3701fbc
Every adapter serves /robots.txt and the refusal's response header
jwrosewell Oct 9, 2026
6d27af2
The guides describe [robots-txt]
jwrosewell Oct 9, 2026
f1b6fef
Core can remove the headers that describe a deployment
jwrosewell Oct 9, 2026
506727f
Every adapter strips the diagnostic headers before it finalizes
jwrosewell Oct 9, 2026
5b632c4
The guide says which headers leave a response
jwrosewell Oct 9, 2026
7505ff7
Auction telemetry is a module [analytics] selects
jwrosewell Oct 9, 2026
75fc697
The guides describe [analytics]
jwrosewell Oct 9, 2026
f208663
The Model Terms cookie name is declared by the module that reads it
jwrosewell Oct 9, 2026
97a31f2
The InMobi Choice consent prompt is a module
jwrosewell Oct 9, 2026
8fb826d
CI runs a module's page script tests with Node
jwrosewell Oct 9, 2026
4e1b379
The guides describe [cmp.inmobi]
jwrosewell Oct 9, 2026
a0a48b7
A middleware may run on a media type other than HTML
jwrosewell Oct 10, 2026
218636c
The guides describe entries for other media types
jwrosewell Oct 10, 2026
1e20c83
The sellers a deployment adds to the publisher's ads.txt are a module
jwrosewell Oct 10, 2026
e660d2c
The guides describe [ads-txt]
jwrosewell Oct 10, 2026
7b08d94
A consent prompt runs in the phase the publisher chooses
jwrosewell Oct 10, 2026
9cb281d
The guides say a consent prompt's phase is the publisher's choice
jwrosewell Oct 10, 2026
11706a2
A file the origin does not have is made by the middleware named for i…
jwrosewell Oct 10, 2026
303e923
The guides say a file the origin does not have is made by its middleware
jwrosewell Oct 10, 2026
0567c33
A middleware may prepare, with the request's services, and may refuse
jwrosewell Oct 11, 2026
012d5bf
The integration guide describes a middleware that prepares
jwrosewell Oct 11, 2026
bfeacda
Declare a loading cache in core
jwrosewell Oct 10, 2026
b51e896
Each robots.txt contributor's answer is held by the loading cache
jwrosewell Oct 10, 2026
e0e4c7b
Every adapter takes the loading cache its builders offer
jwrosewell Oct 10, 2026
3c5a37c
The 51Degrees loading cache is a module a stock build ships
jwrosewell Oct 10, 2026
80b3a93
A store that cannot give an entry a lifetime still holds it
jwrosewell Oct 10, 2026
2d7936e
The guides describe the loading cache
jwrosewell Oct 10, 2026
464f9a9
A Cloudflare load runs on after the response only inside scope_request
jwrosewell Oct 10, 2026
6948c5d
The crate's documentation names scope_request without linking it
jwrosewell Oct 10, 2026
b2069dd
Record the loading cache crate and its dependencies in Cargo.lock
jwrosewell Oct 10, 2026
bff016e
Each feature selects the loading cache that holds its copies
jwrosewell Oct 11, 2026
49b2802
robots.txt is a middleware named for its path
jwrosewell Oct 11, 2026
71dbb17
The guides say robots.txt is made by its middleware
jwrosewell Oct 11, 2026
c281894
A vendor's modules share one table
jwrosewell Oct 11, 2026
ad011ff
The guides describe a vendor's shared table
jwrosewell Oct 11, 2026
ef80b76
A module names the browser's cookies and the shared store keys
jwrosewell Oct 5, 2026
1683757
Every cookie and storage entry is named after the public prefix
jwrosewell Oct 5, 2026
3e425bd
Refuse a public prefix a browser treats specially
jwrosewell Oct 5, 2026
308b6b4
The seam probe supplies a prefix module
jwrosewell Oct 11, 2026
ed947f2
The guides describe the prefix module
jwrosewell Oct 11, 2026
359e30a
A value absent where a route runs answers 500, and each rule is said …
Jamesr51d Oct 12, 2026
52c4583
Merge branch 'review/8-module-context' into review/9-visibility-endpo…
Jamesr51d Oct 12, 2026
1c02104
The deploy check refuses what the load refuses
Jamesr51d Oct 12, 2026
411c05a
Merge branch 'review/9-visibility-endpoints' into review/10-page-midd…
Jamesr51d Oct 12, 2026
5ec3fb4
Next.js handles text directly and messages say module
Jamesr51d Oct 12, 2026
f30aed1
Merge branch 'review/10-page-middleware' into review/11-config-by-host
Jamesr51d Oct 12, 2026
0166d02
A host name with a label that starts or ends in a hyphen is refused
Jamesr51d Oct 12, 2026
5ec0217
Merge branch 'review/11-config-by-host' into review/12-attestation
Jamesr51d Oct 12, 2026
96d8caf
A key schedule refuses a repeated key id or start
Jamesr51d Oct 12, 2026
9b0f6e6
Merge branch 'review/12-attestation' into review/13-removals
Jamesr51d Oct 12, 2026
91bb208
ts cache purge joins every value to its flag
Jamesr51d Oct 12, 2026
a2a5497
Merge branch 'review/13-removals' into review/14-robots-txt
Jamesr51d Oct 12, 2026
e6a1d51
A robots.txt value cannot start a record of its own
Jamesr51d Oct 12, 2026
87b3683
Merge branch 'review/14-robots-txt' into review/15-diagnostic-headers
Jamesr51d Oct 12, 2026
450dc2d
The origin's answer beneath /_ts loses the deployment headers
Jamesr51d Oct 12, 2026
6b0597d
Merge branch 'review/15-diagnostic-headers' into review/16-analytics
Jamesr51d Oct 12, 2026
7de3882
The analytics module is named analytics in every identifier
Jamesr51d Oct 12, 2026
a3016c1
Merge branch 'review/16-analytics' into review/17-cookie-constant
Jamesr51d Oct 12, 2026
cd6b05a
Merge branch 'review/17-cookie-constant' into review/18-inmobi
Jamesr51d Oct 12, 2026
ff7d68e
Only a text/html entry places the InMobi Choice prompt
Jamesr51d Oct 12, 2026
615ac4d
Merge branch 'review/18-inmobi' into review/19-media-types
Jamesr51d Oct 12, 2026
41a410e
A middleware runs only on a UTF-8 text body it can change
Jamesr51d Oct 12, 2026
7f2aa4a
Merge branch 'review/19-media-types' into review/20-ads-txt
Jamesr51d Oct 12, 2026
097b5f2
The sellers module reads a variable name in either case
Jamesr51d Oct 12, 2026
0883a7d
Merge branch 'review/20-ads-txt' into review/21-cmp-phases
Jamesr51d Oct 12, 2026
4ce40e2
The InMobi guide says where a prompt in the serve phase lands
Jamesr51d Oct 12, 2026
d09b282
Format the merged InMobi placement check
Jamesr51d Oct 12, 2026
5395ae9
Merge branch 'review/21-cmp-phases' into review/22-creating
Jamesr51d Oct 12, 2026
514f8fe
An HTML entry makes no missing file and does not shadow the entry for it
Jamesr51d Oct 12, 2026
2ec489e
Merge branch 'review/22-creating' into review/23-prepare
Jamesr51d Oct 12, 2026
9aebc66
A fetch preparation of a document that may be stored is not handed th…
Jamesr51d Oct 12, 2026
8b5451b
Merge branch 'review/23-prepare' into review/24-loading-cache
Jamesr51d Oct 12, 2026
6d022e6
An unreadable held robots.txt copy is removed and the module asked again
Jamesr51d Oct 12, 2026
3a417af
Merge branch 'review/24-loading-cache' into review/25-robots-txt-midd…
Jamesr51d Oct 12, 2026
7b34f7c
Only a fetch entry on /robots.txt places the robots.txt middleware
Jamesr51d Oct 12, 2026
f4291a2
Merge branch 'review/25-robots-txt-middleware' into review/26-shared-…
Jamesr51d Oct 12, 2026
1f320b3
A builder its shared table runs takes no module name
Jamesr51d Oct 12, 2026
a085a3c
The data page keeps its sandbox under an operator's headers
Jamesr51d Oct 12, 2026
e8239da
Merge the data page sandbox from the inspection endpoints into page-m…
Jamesr51d Oct 12, 2026
ba4008f
Merge the data page sandbox from the inspection endpoints into config…
Jamesr51d Oct 12, 2026
7308239
Merge the data page sandbox from the inspection endpoints into attest…
Jamesr51d Oct 12, 2026
19bf300
Merge the data page sandbox from the inspection endpoints into removals
Jamesr51d Oct 12, 2026
3cd312b
Merge branch 'review/13-removals' into review/14-robots-txt
Jamesr51d Oct 12, 2026
06ba471
Merge branch 'review/14-robots-txt' into review/15-diagnostic-headers
Jamesr51d Oct 12, 2026
c5aff4e
Merge branch 'review/15-diagnostic-headers' into review/16-analytics
Jamesr51d Oct 12, 2026
eebde11
Merge branch 'review/16-analytics' into review/17-cookie-constant
Jamesr51d Oct 12, 2026
51ceca3
Merge branch 'review/17-cookie-constant' into review/18-inmobi
Jamesr51d Oct 12, 2026
e0da4b7
Merge branch 'review/18-inmobi' into review/19-media-types
Jamesr51d Oct 12, 2026
e30d4f2
Merge branch 'review/19-media-types' into review/20-ads-txt
Jamesr51d Oct 12, 2026
ffa635f
Merge branch 'review/20-ads-txt' into review/21-cmp-phases
Jamesr51d Oct 12, 2026
c323348
Merge branch 'review/21-cmp-phases' into review/22-creating
Jamesr51d Oct 12, 2026
42c20b5
Merge branch 'review/22-creating' into review/23-prepare
Jamesr51d Oct 12, 2026
f1ab013
Merge branch 'review/23-prepare' into review/24-loading-cache
Jamesr51d Oct 12, 2026
2f01b3c
Merge branch 'review/24-loading-cache' into review/25-robots-txt-midd…
Jamesr51d Oct 12, 2026
e416ee0
Merge branch 'review/25-robots-txt-middleware' into review/26-shared-…
Jamesr51d Oct 12, 2026
73fd38d
A robots.txt comment ends neither a rule nor a run of User-Agent lines
Jamesr51d Oct 12, 2026
5d8e010
Merge branch 'review/26-shared-tables' into review/27-prefix-module
Jamesr51d Oct 12, 2026
2102c09
The page takes its public prefix from the request's services
Jamesr51d Oct 12, 2026
c66316b
Merge the robots.txt comment fix into 14-robots-txt
Jamesr51d Oct 12, 2026
d4d3149
Merge 14-robots-txt into 15-diagnostic-headers
Jamesr51d Oct 12, 2026
8f8bc98
Merge 15-diagnostic-headers into 16-analytics
Jamesr51d Oct 12, 2026
f3cf800
Merge 16-analytics into 17-cookie-constant
Jamesr51d Oct 12, 2026
58312af
Merge 17-cookie-constant into 18-inmobi
Jamesr51d Oct 12, 2026
c820df3
Merge 18-inmobi into 19-media-types
Jamesr51d Oct 12, 2026
6fdc503
Merge 19-media-types into 20-ads-txt
Jamesr51d Oct 12, 2026
77e4f13
Merge 20-ads-txt into 21-cmp-phases
Jamesr51d Oct 12, 2026
ed35b64
Merge 21-cmp-phases into 22-creating
Jamesr51d Oct 12, 2026
f24ef97
Merge 22-creating into 23-prepare
Jamesr51d Oct 12, 2026
7098880
Merge 23-prepare into 24-loading-cache
Jamesr51d Oct 12, 2026
1380309
Merge 24-loading-cache into 25-robots-txt-middleware
Jamesr51d Oct 12, 2026
0e1e9ad
Merge 25-robots-txt-middleware into 26-shared-tables
Jamesr51d Oct 12, 2026
faf380d
Merge 26-shared-tables into 27-prefix-module
Jamesr51d Oct 12, 2026
e553db9
The data page sandbox test passes the public prefix
Jamesr51d Oct 12, 2026
82c1a19
The entry with the longest covering path makes a missing file
Jamesr51d Oct 12, 2026
4b4d667
Merge 22-creating into 23-prepare
Jamesr51d Oct 12, 2026
1c0c244
What a middleware prepares is kept for the phase it prepared in
Jamesr51d Oct 12, 2026
9dc219c
Merge 23-prepare into 24-loading-cache
Jamesr51d Oct 12, 2026
4a62705
Merge 24-loading-cache into 25-robots-txt-middleware
Jamesr51d Oct 12, 2026
895e66c
The robots.txt middleware takes what it prepared for its own phase
Jamesr51d Oct 12, 2026
7926a0e
Merge 25-robots-txt-middleware into 26-shared-tables
Jamesr51d Oct 12, 2026
580cd27
Merge 26-shared-tables into 27-prefix-module
Jamesr51d Oct 12, 2026
a433d6d
The guide says what selecting another prefix orphans
jwrosewell Oct 13, 2026
4bd093a
A cache table naming no module takes the one loading cache module the…
jwrosewell Oct 13, 2026
f393547
The serve phase of a document that may be stored is prepared for its …
jwrosewell Oct 13, 2026
c0a048a
Merge 23-prepare into 24-loading-cache
jwrosewell Oct 13, 2026
58c3456
Merge 24-loading-cache into 25-robots-txt-middleware
jwrosewell Oct 13, 2026
1eacbf2
Merge 25-robots-txt-middleware into 26-shared-tables
jwrosewell Oct 13, 2026
65aa6e9
Merge 26-shared-tables into 27-prefix-module
jwrosewell Oct 13, 2026
eacc120
The Fastly adapter no longer writes X-TS-Version on every response
jwrosewell Oct 13, 2026
a656298
The attestation evidence names the tag the build was made from
jwrosewell Oct 13, 2026
5cc8fe7
A serve middleware may write a response header, and is told the platform
jwrosewell Oct 13, 2026
0991047
Core supplies a middleware that writes the service version where named
jwrosewell Oct 13, 2026
6844050
Merge upstream main d2f0d8cc0 into split/1-ec-provider
Jamesr51d Oct 13, 2026
7819409
Merge 12-attestation into 13-removals
jwrosewell Oct 13, 2026
1f1e27a
Merge 13-removals into 14-robots-txt
jwrosewell Oct 13, 2026
50c10da
Merge 14-robots-txt into 15-diagnostic-headers
jwrosewell Oct 13, 2026
04ee8ad
Merge 15-diagnostic-headers into 16-analytics
jwrosewell Oct 13, 2026
891a43c
Merge 16-analytics into 17-cookie-constant
jwrosewell Oct 13, 2026
71bf6a3
Merge 17-cookie-constant into 18-inmobi
jwrosewell Oct 13, 2026
3ea9c1f
Merge 18-inmobi into 19-media-types
jwrosewell Oct 13, 2026
6b5b486
A serve middleware's headers reach a response that is not HTML
jwrosewell Oct 13, 2026
2cf9fbc
Merge 19-media-types into 20-ads-txt
jwrosewell Oct 13, 2026
d8f020c
Merge 20-ads-txt into 21-cmp-phases
jwrosewell Oct 13, 2026
138faf1
Merge split/1-ec-provider into split/2-device-geo
Jamesr51d Oct 13, 2026
ce608fd
Merge 21-cmp-phases into 22-creating
jwrosewell Oct 13, 2026
95d4c4e
Merge 22-creating into 23-prepare
jwrosewell Oct 13, 2026
1eae9e4
Merge 23-prepare into 24-loading-cache
jwrosewell Oct 13, 2026
5fb7c64
Merge 24-loading-cache into 25-robots-txt-middleware
jwrosewell Oct 13, 2026
1564f19
Merge 25-robots-txt-middleware into 26-shared-tables
jwrosewell Oct 13, 2026
ab6ab9f
Merge 26-shared-tables into 27-prefix-module
jwrosewell Oct 13, 2026
a028c00
Merge split/2-device-geo into split/3-permissions
Jamesr51d Oct 13, 2026
a70e9d2
Merge split/3-permissions into split/4-client-resolve
Jamesr51d Oct 13, 2026
61b1399
Merge split/4-client-resolve into split/5-response-hook-docs
Jamesr51d Oct 13, 2026
b826d6e
Merge split/5-response-hook-docs into split/7-integration-seam-impl
Jamesr51d Oct 13, 2026
af04ad6
Lock the web-time dependency of the DataDome crate
Jamesr51d Oct 13, 2026
3f25457
Merge split/7-integration-seam-impl into split/8-module-context
Jamesr51d Oct 13, 2026
bf58e02
Merge split/8-module-context into split/9-visibility-endpoints
Jamesr51d Oct 13, 2026
b76c5b9
Merge split/9-visibility-endpoints into split/10-page-middleware
Jamesr51d Oct 13, 2026
5ae3b03
Merge split/10-page-middleware into split/11-config-by-host
Jamesr51d Oct 13, 2026
b76c010
Merge split/11-config-by-host into split/12-attestation
Jamesr51d Oct 13, 2026
2c7f32f
Merge split/12-attestation into split/13-removals
Jamesr51d Oct 13, 2026
8038607
Merge split/13-removals into split/14-robots-txt
Jamesr51d Oct 13, 2026
49940a8
Merge split/14-robots-txt into split/15-diagnostic-headers
Jamesr51d Oct 13, 2026
50a9d3d
Merge split/15-diagnostic-headers into split/16-analytics
Jamesr51d Oct 13, 2026
9680cdf
Merge split/16-analytics into split/17-cookie-constant
Jamesr51d Oct 13, 2026
b431bf0
Merge split/17-cookie-constant into split/18-inmobi
Jamesr51d Oct 13, 2026
33ba0bc
Merge split/18-inmobi into split/19-media-types
Jamesr51d Oct 13, 2026
f18aed1
Merge split/19-media-types into split/20-ads-txt
Jamesr51d Oct 13, 2026
0287372
Merge split/20-ads-txt into split/21-cmp-phases
Jamesr51d Oct 13, 2026
33f6298
Merge split/21-cmp-phases into split/22-creating
Jamesr51d Oct 13, 2026
dc3584d
Merge split/22-creating into split/23-prepare
Jamesr51d Oct 13, 2026
92826a3
Merge split/23-prepare into split/24-loading-cache
Jamesr51d Oct 13, 2026
b04af3d
Merge split/24-loading-cache into split/25-robots-txt-middleware
Jamesr51d Oct 13, 2026
d57a449
Merge split/25-robots-txt-middleware into split/26-shared-tables
Jamesr51d Oct 13, 2026
671a749
Merge split/26-shared-tables into split/27-prefix-module
Jamesr51d Oct 13, 2026
d3bbc32
Keep the compiled-in git version out of the legacy settings loader an…
Jamesr51d Oct 13, 2026
bc28b3e
Merge split/7-integration-seam-impl into split/8-module-context
Jamesr51d Oct 13, 2026
497d553
Merge split/8-module-context into split/9-visibility-endpoints
Jamesr51d Oct 13, 2026
0b0320f
Merge split/9-visibility-endpoints into split/10-page-middleware
Jamesr51d Oct 13, 2026
b8314cb
Merge split/10-page-middleware into split/11-config-by-host
Jamesr51d Oct 13, 2026
196da17
Merge split/11-config-by-host into split/12-attestation
Jamesr51d Oct 13, 2026
59e09b6
Allow the host clock in the build script's build time
Jamesr51d Oct 13, 2026
f735e0f
Merge split/12-attestation into split/13-removals
Jamesr51d Oct 13, 2026
35eb5ae
Merge split/13-removals into split/14-robots-txt
Jamesr51d Oct 13, 2026
e4de006
Merge split/14-robots-txt into split/15-diagnostic-headers
Jamesr51d Oct 13, 2026
c4f0302
Merge split/15-diagnostic-headers into split/16-analytics
Jamesr51d Oct 13, 2026
2018369
Merge split/16-analytics into split/17-cookie-constant
Jamesr51d Oct 13, 2026
27c720c
Merge split/17-cookie-constant into split/18-inmobi
Jamesr51d Oct 13, 2026
cca2847
Merge split/18-inmobi into split/19-media-types
Jamesr51d Oct 13, 2026
192f34b
Merge split/19-media-types into split/20-ads-txt
Jamesr51d Oct 13, 2026
9945df2
Merge split/20-ads-txt into split/21-cmp-phases
Jamesr51d Oct 13, 2026
5db9a1c
Merge split/21-cmp-phases into split/22-creating
Jamesr51d Oct 13, 2026
03053fa
Merge split/22-creating into split/23-prepare
Jamesr51d Oct 13, 2026
f4e81af
Merge split/23-prepare into split/24-loading-cache
Jamesr51d Oct 13, 2026
c56c240
Merge split/24-loading-cache into split/25-robots-txt-middleware
Jamesr51d Oct 13, 2026
ea44f6d
Merge split/25-robots-txt-middleware into split/26-shared-tables
Jamesr51d Oct 13, 2026
b3b578a
Merge split/26-shared-tables into split/27-prefix-module
Jamesr51d Oct 13, 2026
a43a05a
No adapter writes a version on a response
jwrosewell Oct 13, 2026
7b19336
Merge 15-diagnostic-headers into 16-analytics
jwrosewell Oct 13, 2026
af8af38
Merge 16-analytics into 17-cookie-constant
jwrosewell Oct 13, 2026
badd6fb
Merge 17-cookie-constant into 18-inmobi
jwrosewell Oct 13, 2026
149280a
Merge 18-inmobi into 19-media-types
jwrosewell Oct 13, 2026
de85e19
Merge 19-media-types into 20-ads-txt
jwrosewell Oct 13, 2026
938be5d
Merge 20-ads-txt into 21-cmp-phases
jwrosewell Oct 13, 2026
7723c5e
Merge 21-cmp-phases into 22-creating
jwrosewell Oct 13, 2026
d9fb81a
Merge 22-creating into 23-prepare
jwrosewell Oct 13, 2026
844b01f
Merge 23-prepare into 24-loading-cache
jwrosewell Oct 13, 2026
1624877
Merge 24-loading-cache into 25-robots-txt-middleware
jwrosewell Oct 13, 2026
5cbd69d
Merge 25-robots-txt-middleware into 26-shared-tables
jwrosewell Oct 13, 2026
d4c3ea9
Merge 26-shared-tables into 27-prefix-module
jwrosewell Oct 13, 2026
c61b6c5
The Prebid test closes the test the merge of main left open
jwrosewell Oct 13, 2026
9a99934
The served shim's size bound allows the cookie names the public prefi…
jwrosewell Oct 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
14 changes: 8 additions & 6 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,20 +26,22 @@ test_details = "test --target aarch64-apple-darwin"
# native crate needs no change here. Axum (native), Cloudflare
# (wasm32-unknown-unknown), Spin, the CLI (native), and integration-tests
# (native) are simply not listed.
build-fastly = "build -p trusted-server-core -p trusted-server-adapter-fastly -p trusted-server-js -p trusted-server-openrtb --target wasm32-wasip1"
check-fastly = "check -p trusted-server-core -p trusted-server-adapter-fastly -p trusted-server-js -p trusted-server-openrtb --target wasm32-wasip1"
clippy-fastly = "clippy -p trusted-server-core -p trusted-server-adapter-fastly -p trusted-server-js -p trusted-server-openrtb --all-targets --all-features --target wasm32-wasip1 -- -D warnings"
test-fastly = "test -p trusted-server-core -p trusted-server-adapter-fastly -p trusted-server-js -p trusted-server-openrtb --target wasm32-wasip1"
build-fastly = "build -p trusted-server-core -p trusted-server-adapter-fastly -p trusted-server-device-fastly -p trusted-server-geo-fastly -p trusted-server-cmp-osano -p trusted-server-modules -p trusted-server-identity-lockr -p trusted-server-audience-permutive -p trusted-server-cmp-sourcepoint -p trusted-server-cmp-didomi -p trusted-server-cmp-inmobi -p trusted-server-ads-txt-sellers -p trusted-server-tag-google-tag-manager -p trusted-server-testing-testlight -p trusted-server-framework-nextjs -p trusted-server-ad-tag-google -p trusted-server-bot-protection-datadome -p trusted-server-ad-server-mock -p trusted-server-auction-aps -p trusted-server-auction-prebid -p trusted-server-auction-prebid-server -p trusted-server-auction-protocol-openrtb -p trusted-server-js -p trusted-server-openrtb --target wasm32-wasip1"
check-fastly = "check -p trusted-server-core -p trusted-server-adapter-fastly -p trusted-server-device-fastly -p trusted-server-geo-fastly -p trusted-server-cmp-osano -p trusted-server-modules -p trusted-server-identity-lockr -p trusted-server-audience-permutive -p trusted-server-cmp-sourcepoint -p trusted-server-cmp-didomi -p trusted-server-cmp-inmobi -p trusted-server-ads-txt-sellers -p trusted-server-tag-google-tag-manager -p trusted-server-testing-testlight -p trusted-server-framework-nextjs -p trusted-server-ad-tag-google -p trusted-server-bot-protection-datadome -p trusted-server-ad-server-mock -p trusted-server-auction-aps -p trusted-server-auction-prebid -p trusted-server-auction-prebid-server -p trusted-server-auction-protocol-openrtb -p trusted-server-js -p trusted-server-openrtb --target wasm32-wasip1"
clippy-fastly = "clippy -p trusted-server-core -p trusted-server-adapter-fastly -p trusted-server-device-fastly -p trusted-server-geo-fastly -p trusted-server-cmp-osano -p trusted-server-modules -p trusted-server-identity-lockr -p trusted-server-audience-permutive -p trusted-server-cmp-sourcepoint -p trusted-server-cmp-didomi -p trusted-server-cmp-inmobi -p trusted-server-ads-txt-sellers -p trusted-server-tag-google-tag-manager -p trusted-server-testing-testlight -p trusted-server-framework-nextjs -p trusted-server-ad-tag-google -p trusted-server-bot-protection-datadome -p trusted-server-ad-server-mock -p trusted-server-auction-aps -p trusted-server-auction-prebid -p trusted-server-auction-prebid-server -p trusted-server-auction-protocol-openrtb -p trusted-server-js -p trusted-server-openrtb --all-targets --all-features --target wasm32-wasip1 -- -D warnings"
test-fastly = "test -p trusted-server-core -p trusted-server-adapter-fastly -p trusted-server-device-fastly -p trusted-server-geo-fastly -p trusted-server-cmp-osano -p trusted-server-modules -p trusted-server-identity-lockr -p trusted-server-audience-permutive -p trusted-server-cmp-sourcepoint -p trusted-server-cmp-didomi -p trusted-server-cmp-inmobi -p trusted-server-ads-txt-sellers -p trusted-server-tag-google-tag-manager -p trusted-server-testing-testlight -p trusted-server-framework-nextjs -p trusted-server-ad-tag-google -p trusted-server-bot-protection-datadome -p trusted-server-ad-server-mock -p trusted-server-auction-aps -p trusted-server-auction-prebid -p trusted-server-auction-prebid-server -p trusted-server-auction-protocol-openrtb -p trusted-server-js -p trusted-server-openrtb --target wasm32-wasip1"
# Feature-on counterpart of `test-fastly`. `test-fastly` does NOT pass
# --all-features, so without this the reusable-sandbox code is linted by
# `clippy-fastly` but its tests never execute.
test-fastly-reuse = "test -p trusted-server-adapter-fastly --target wasm32-wasip1 --features reusable-sandbox"

# --- Axum adapter (native dev server) ---
# Test and clippy also cover the permission signal crates, whose own tests
# run with the Axum adapter in CI.
build-axum = "build -p trusted-server-adapter-axum"
check-axum = "check -p trusted-server-adapter-axum"
clippy-axum = "clippy -p trusted-server-adapter-axum --all-targets --all-features -- -D warnings"
test-axum = "test -p trusted-server-adapter-axum"
clippy-axum = "clippy -p trusted-server-adapter-axum -p trusted-server-permission-signal-gpc -p trusted-server-permission-signal-gpp -p trusted-server-permission-signal-mtm -p trusted-server-permission-signal-tcf -p trusted-server-permission-signal-us-privacy -p trusted-server-cmp-osano -p trusted-server-modules -p trusted-server-identity-lockr -p trusted-server-audience-permutive -p trusted-server-cmp-sourcepoint -p trusted-server-cmp-didomi -p trusted-server-cmp-inmobi -p trusted-server-ads-txt-sellers -p trusted-server-loading-cache-51degrees -p trusted-server-tag-google-tag-manager -p trusted-server-testing-testlight -p trusted-server-framework-nextjs -p trusted-server-ad-tag-google -p trusted-server-bot-protection-datadome -p trusted-server-ad-server-mock -p trusted-server-auction-aps -p trusted-server-auction-prebid -p trusted-server-auction-prebid-server -p trusted-server-auction-protocol-openrtb --all-targets --all-features -- -D warnings"
test-axum = "test -p trusted-server-adapter-axum -p trusted-server-permission-signal-gpc -p trusted-server-permission-signal-gpp -p trusted-server-permission-signal-mtm -p trusted-server-permission-signal-tcf -p trusted-server-permission-signal-us-privacy -p trusted-server-cmp-osano -p trusted-server-modules -p trusted-server-identity-lockr -p trusted-server-audience-permutive -p trusted-server-cmp-sourcepoint -p trusted-server-cmp-didomi -p trusted-server-cmp-inmobi -p trusted-server-ads-txt-sellers -p trusted-server-loading-cache-51degrees -p trusted-server-tag-google-tag-manager -p trusted-server-testing-testlight -p trusted-server-framework-nextjs -p trusted-server-ad-tag-google -p trusted-server-bot-protection-datadome -p trusted-server-ad-server-mock -p trusted-server-auction-aps -p trusted-server-auction-prebid -p trusted-server-auction-prebid-server -p trusted-server-auction-protocol-openrtb"

# --- Cloudflare adapter (native host + wasm32-unknown-unknown) ---
# Build/check target the WASM runtime (requires the `cloudflare` feature);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,17 @@ Before asking questions the repository can answer:
4. Add observations to the existing deployment decision record with source path/key, candidate requirement, confidence/status, and the remaining question. Report credential identifiers or presence only; keep raw TOML, credential values, and commercially sensitive publisher values out of reports and generated examples.
5. Verify candidate adapters against the selected PBS Go release and confirm partner authorization. Record each host-secret requirement as required, not needed, or unresolved. A bidder name alone proves neither a secret requirement nor permission to use the bidder.

| Trusted Server input | Discovery use |
| ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------- |
| `auction.enabled` | Determine active versus disabled server-auction intent without expanding defaults |
| `auction.providers.<id>` with `profile = "prebid-server"` | Identify each configured PBS provider; withhold endpoint values |
| Provider `timeout_ms` and `profile_config.test_mode` or `debug` | Record explicit timeout and diagnostic intent, not permission to contact bidders |
| Provider `profile_config.bid_param_override_rules` | Count conditional publisher or placement inputs without reporting their values |
| `auction.bidders.<bidder>.provider` | Group candidate server-side adapters under the referenced PBS provider |
| `integrations.prebid.enabled`, `account_id`, `timeout_ms`, `debug` | Record browser integration intent and compatibility questions separately from server demand |
| `integrations.prebid.client_side_bidders` | Browser-side participation; do not automatically enable these adapters in PBS |
| `integrations.prebid.bundle` | Browser bundle and identity capabilities, not proof of server-side use |
| Relevant privacy, format, and stored-request settings | Identify dependencies that need confirmation from the caller or request path |
| Trusted Server input | Discovery use |
| --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| `auction.enabled` | Determine active versus disabled server-auction intent without expanding defaults |
| `demand.<name>` with `implementation = "auction.prebid-server"` | Identify each configured PBS demand source and whether `demand.modules` selects it; withhold endpoint values |
| Demand source `timeout_ms`, `test_mode` and `debug` | Record explicit timeout and diagnostic intent, not permission to contact bidders |
| Demand source `bid_param_override_rules` | Count conditional publisher or placement inputs without reporting their values |
| `auction.bidders.<bidder>.module` | Group candidate server-side adapters under the referenced PBS demand source |
| `prebid` in `auction.modules`, and `auction.prebid` `account_id`, `timeout_ms`, `debug` | Record browser integration intent and compatibility questions separately from server demand |
| `auction.prebid.client_side_bidders` | Browser-side participation; do not automatically enable these adapters in PBS |
| `auction.prebid.bundle` | Browser bundle and identity capabilities, not proof of server-side use |
| Relevant privacy, format, and stored-request settings | Identify dependencies that need confirmation from the caller or request path |

Use `ts prebid server inspect --config <selected-path>` for redacted local discovery. It reports explicit values without expanding defaults or proving host-secret requirements. Resolve schema defaults and adapter metadata separately, recording unsupported details as unresolved rather than fetching credentials or inventing mappings. Read config without invoking commands that publish or rewrite it. Leave `trusted-server.toml` unchanged. Propose caller endpoint/account changes separately after integration approval; discovery must not activate bidders, publish configuration, or change traffic.

Expand Down
47 changes: 21 additions & 26 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -40,41 +40,36 @@ TRUSTED_SERVER__REQUEST_SIGNING__ENABLED=false
# =============================================================================
# Integrations
# =============================================================================
# Which integrations run is set in the TOML file, in the section of each
# one's type, as `[auction] modules = ["prebid"]` and
# `[framework] module = "nextjs"`. There is no per-integration enabled flag.
# An overlay below changes a setting the file already carries, and it cannot
# add one the file leaves out or replace a list. An overlay names its section
# as the file writes it, so a section with a hyphen in its name, such as
# `[ad-tag]`, is set with `env 'NAME=value' command`, because a shell's
# `export` refuses the name.

# Prebid
TRUSTED_SERVER__INTEGRATIONS__PREBID__ENABLED=false
# TRUSTED_SERVER__INTEGRATIONS__PREBID__SERVER_URL=https://prebid-server.example.com/openrtb2/auction
# TRUSTED_SERVER__INTEGRATIONS__PREBID__TIMEOUT_MS=1000
# TRUSTED_SERVER__INTEGRATIONS__PREBID__BIDDERS=kargo,rubicon,appnexus
# TRUSTED_SERVER__INTEGRATIONS__PREBID__BID_PARAM_OVERRIDES='{"bidder-name":{"param1":12345,"param2":"value"}}'
# Compatibility env shape for bidder -> zone -> params overrides
# TRUSTED_SERVER__INTEGRATIONS__PREBID__BID_PARAM_ZONE_OVERRIDES='{"kargo":{"header":{"placementId":"_abc"}}}'
# Preferred canonical env shape for future generic rules
# TRUSTED_SERVER__INTEGRATIONS__PREBID__BID_PARAM_OVERRIDE_RULES='[{"when":{"bidder":"kargo","zone":"header"},"set":{"placementId":"_abc"}}]'
# TRUSTED_SERVER__INTEGRATIONS__PREBID__SUPPRESS_NURL_BIDDERS=exampleBidder,anotherBidder
# TRUSTED_SERVER__INTEGRATIONS__PREBID__AUTO_CONFIGURE=false
# TRUSTED_SERVER__INTEGRATIONS__PREBID__DEBUG=false
# TRUSTED_SERVER__INTEGRATIONS__PREBID__TEST_MODE=false
# Prebid, the browser side. The Prebid Server endpoint belongs to a demand
# source, so its overlay is TRUSTED_SERVER__DEMAND__<NAME>__ENDPOINT.
# TRUSTED_SERVER__AUCTION__PREBID__ACCOUNT_ID=
# TRUSTED_SERVER__AUCTION__PREBID__TIMEOUT_MS=1000
# TRUSTED_SERVER__AUCTION__PREBID__DEBUG=false

# Next.js
TRUSTED_SERVER__INTEGRATIONS__NEXTJS__ENABLED=false
# TRUSTED_SERVER__INTEGRATIONS__NEXTJS__REWRITE_ATTRIBUTES=href,link,url
# TRUSTED_SERVER__FRAMEWORK__NEXTJS__MAX_COMBINED_PAYLOAD_BYTES=10485760

# Didomi
TRUSTED_SERVER__INTEGRATIONS__DIDOMI__ENABLED=false
# TRUSTED_SERVER__INTEGRATIONS__DIDOMI__SDK_ORIGIN=https://sdk.privacy-center.org
# TRUSTED_SERVER__INTEGRATIONS__DIDOMI__API_ORIGIN=https://api.privacy-center.org
# TRUSTED_SERVER__CMP__DIDOMI__SDK_ORIGIN=https://sdk.privacy-center.org
# TRUSTED_SERVER__CMP__DIDOMI__API_ORIGIN=https://api.privacy-center.org

# Permutive
TRUSTED_SERVER__INTEGRATIONS__PERMUTIVE__ENABLED=false
# TRUSTED_SERVER__INTEGRATIONS__PERMUTIVE__ORGANIZATION_ID=
# TRUSTED_SERVER__INTEGRATIONS__PERMUTIVE__WORKSPACE_ID=
# TRUSTED_SERVER__INTEGRATIONS__PERMUTIVE__PROJECT_ID=
# TRUSTED_SERVER__AUDIENCE__PERMUTIVE__ORGANIZATION_ID=
# TRUSTED_SERVER__AUDIENCE__PERMUTIVE__WORKSPACE_ID=
# TRUSTED_SERVER__AUDIENCE__PERMUTIVE__PROJECT_ID=

# Lockr
TRUSTED_SERVER__INTEGRATIONS__LOCKR__ENABLED=false
# TRUSTED_SERVER__INTEGRATIONS__LOCKR__APP_ID=
# TRUSTED_SERVER__INTEGRATIONS__LOCKR__CACHE_TTL_SECONDS=3600
# TRUSTED_SERVER__IDENTITY__LOCKR__APP_ID=
# TRUSTED_SERVER__IDENTITY__LOCKR__CACHE_TTL_SECONDS=3600

# =============================================================================
# Rewrite Configuration (optional)
Expand Down
26 changes: 26 additions & 0 deletions .github/workflows/inspector.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: "Permissions Inspector"

on:
push:
branches: [main]
pull_request:

permissions:
contents: read

jobs:
build-inspector-wasm:
name: build inspector wasm
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Retrieve Rust version
id: rust-version
run: echo "rust-version=$(grep -oP 'channel = "\K[^"]+' rust-toolchain.toml)" >> "$GITHUB_OUTPUT"
- name: Set up Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: ${{ steps.rust-version.outputs.rust-version }}
target: wasm32-unknown-unknown
- name: Build the inspector engine
run: ./scripts/build-inspector-wasm.sh
50 changes: 44 additions & 6 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,12 +68,23 @@ jobs:
- name: Run inline control harness
run: BID_DELAY=3 ./scripts/template-cache-local-test.sh inline

- name: Run cache purge harness
run: BID_DELAY=3 ./scripts/template-cache-local-test.sh purge
- name: Run config by host harness
run: ./scripts/config-by-host-local-test.sh

- name: Run config by host harness (reusable-sandbox feature)
run: ./scripts/config-by-host-local-test.sh reuse

# Last, because it builds core with a key schedule compiled in.
- name: Run attestation harness
run: ./scripts/attestation-local-test.sh

test-axum:
name: cargo test (axum native)
runs-on: ubuntu-latest
name: cargo test (axum native, ${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
steps:
- uses: actions/checkout@v4

Expand Down Expand Up @@ -122,12 +133,33 @@ jobs:
run: |
cargo test --package trusted-server-openrtb-codegen --target "$(rustc -vV | sed -n 's/host: //p')"

# The core library's unit tests otherwise run only on the WebAssembly
# targets, which build with panic=abort, so their harness stops at the
# first failing test and reports every later one as never run. A run that
# looks like a single failure can hide many more. This native run reports
# them all at once, which is what makes a red build readable.
- name: Run host-target core library tests
run: |
cargo test --package trusted-server-core --target "$(rustc -vV | sed -n 's/host: //p')"

# The seam-probe fixture crate's own unit tests only run when invoked on
# the host target, because no adapter alias compiles its test target. Run
# them here so a fault in the seam fixture cannot sit unseen behind a
# green gate set.
- name: Run host-target seam-probe integration tests
run: |
cargo test --package trusted-server-integration-seam-probe --target "$(rustc -vV | sed -n 's/host: //p')"

- name: Verify Fastly WASM release build
run: cargo build --package trusted-server-adapter-fastly --release --target wasm32-wasip1

test-cloudflare:
name: cargo check (cloudflare native + wasm32-unknown-unknown)
runs-on: ubuntu-latest
name: cargo check (cloudflare native + wasm32-unknown-unknown, ${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
steps:
- uses: actions/checkout@v4

Expand Down Expand Up @@ -322,3 +354,9 @@ jobs:

- name: Run unit tests
run: npm test -- --run

# A module that writes a script into pages tests it in its own folder,
# with Node's test runner and no packages.
- name: Run module page script tests
working-directory: .
run: node --test "crates/*/*/tests/*.test.mjs"
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
/spin
/spin.sig

# logs
*.log

# EdgeZero local KV store (created by edgezero-adapter-axum framework)
.edgezero/
/dist/prebid/
Expand Down
Loading
Loading