Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
375 commits
Select commit Hold shift + click to select a range
c469d55
Merge branch 'main' into chore/check-root-markdown-formatting
aram356 Sep 24, 2026
057a647
Merge branch 'main' into fix/dev-proxy-bare-invocation-help
aram356 Sep 24, 2026
30ecb1c
Merge branch 'main' into fix/tsjs-all-module-ids-allocation
aram356 Sep 24, 2026
9654495
Merge branch 'main' into fix/adserver-mock-dimension-truncation
aram356 Sep 24, 2026
7e3997a
Merge branch 'main' into test/settings-debug-output-redacts-secrets
aram356 Sep 24, 2026
bf96305
Pin adserver mock bid dimension boundaries in tests
dhruv8sh Sep 24, 2026
8dd9713
Assert bare proxy invocation via clap's typed error kind
dhruv8sh Sep 24, 2026
d100d1b
Resolve proxy rules before restoring pending system proxy state
dhruv8sh Sep 24, 2026
0fa7dfb
Clarify Prebid diagnostics export boundaries
ChristianPavilonis Sep 25, 2026
64eb5f6
Add design spec and plan for git version in x-ts-version
dhruv8sh Sep 25, 2026
e326f5a
Compile deployed git version into trusted-server-core as TS_GIT_VERSION
dhruv8sh Sep 25, 2026
976cdea
Add x-ts-fastly-version constant and git version header helpers
dhruv8sh Sep 25, 2026
a93ac53
Send git version as x-ts-version and Fastly version as x-ts-fastly-ve…
dhruv8sh Sep 25, 2026
0090f72
Emit x-ts-version git version on Axum, Cloudflare, and Spin
dhruv8sh Sep 25, 2026
cd704a7
Document the x-ts-version and x-ts-fastly-version split
dhruv8sh Sep 25, 2026
c4d664a
Merge branch 'main' into spec/mobile-ad-render-trace-endpoint
aram356 Sep 25, 2026
4d0ca8d
Merge branch 'main' into fix/sourcepoint-unknown-length-1088
aram356 Sep 26, 2026
325cca7
Merge branch 'main' into chore/check-root-markdown-formatting
aram356 Sep 26, 2026
b4413d2
Merge branch 'main' into fix/reject-placeholder-partner-pull-tokens
aram356 Sep 28, 2026
819ac71
Parse mock bid dimensions with the shared OpenRTB helper
dhruv8sh Sep 28, 2026
7eed6a3
Validate mock mediated bid dimensions against requested slots
dhruv8sh Sep 28, 2026
44fb9c2
Extend the Markdown format check beyond the repo root
dhruv8sh Sep 28, 2026
d7dcb18
Test that both partner token placeholders are reported together
dhruv8sh Sep 28, 2026
054b3a3
Merge branch 'main' into worktree-tester-cookie-max-age
aram356 Sep 28, 2026
eb2bae2
Merge branch 'main' into fix/reject-placeholder-partner-pull-tokens
aram356 Sep 28, 2026
4552fcf
Fix Sourcepoint HEAD pass-through test
ChristianPavilonis Sep 28, 2026
a180741
Merge branch 'main' into spec/mobile-ad-render-trace-endpoint
prk-Jr Sep 30, 2026
4e64fbf
Compose streamed Next.js and GTM script rewrites
ChristianPavilonis Sep 30, 2026
770f3d6
Share compressed HTML processing in Next.js tests
ChristianPavilonis Sep 30, 2026
8691d40
Share GTM routing policy across script rewrites
ChristianPavilonis Sep 30, 2026
fe77672
Ignore non-executable Flight spellings in script rewrites
ChristianPavilonis Sep 30, 2026
4811d98
Clarify trace failure and export cleanup contracts
prk-Jr Oct 1, 2026
162b3a4
Merge branch 'main' into spec/mobile-ad-render-trace-endpoint
prk-Jr Oct 1, 2026
e690426
Remove inherited x-ts-version and tighten local git version resolution
dhruv8sh Oct 1, 2026
35ca367
Merge branch 'main' into test/settings-debug-output-redacts-secrets
dhruv8sh Oct 1, 2026
44144f0
Merge branch 'main' into fix/tsjs-all-module-ids-allocation
dhruv8sh Oct 1, 2026
21eb725
Merge branch 'main' into fix/dev-proxy-bare-invocation-help
dhruv8sh Oct 1, 2026
4170c4c
Merge branch 'main' into fix/reject-placeholder-partner-pull-tokens
dhruv8sh Oct 1, 2026
4b03d6c
Merge branch 'main' into fix/adserver-mock-dimension-truncation
dhruv8sh Oct 1, 2026
7dc5638
Merge branch 'main' into chore/check-root-markdown-formatting
dhruv8sh Oct 1, 2026
12f1bd9
Add documentation proposal automation design and plan
dhruv8sh Oct 1, 2026
f70ce72
Propose documentation updates after code merges to main
dhruv8sh Oct 1, 2026
d738d93
Distinguish JavaScript blocks from expression-valued braces
ChristianPavilonis Oct 1, 2026
d163be2
Merge branch 'main' into worktree-tester-cookie-max-age
aram356 Oct 1, 2026
3f7c3a8
Validate request hosts before source rewriting
ChristianPavilonis Oct 1, 2026
f2a6a2a
Address script composition review cleanups
ChristianPavilonis Oct 1, 2026
b253a00
Merge branch 'main' into fix/sourcepoint-unknown-length-1088
aram356 Oct 1, 2026
209fbb2
Merge PR #1175 into rc/202610
ChristianPavilonis Oct 1, 2026
ad78650
Merge PR #1074 into rc/202610
ChristianPavilonis Oct 1, 2026
db1e1ed
Merge PR #1052 into rc/202610
ChristianPavilonis Oct 1, 2026
6968164
Merge September revision of PR #1121 into October RC
ChristianPavilonis Oct 1, 2026
f93d652
Merge PR #1154 into rc/202610
ChristianPavilonis Oct 1, 2026
51513e4
Merge PR #1107 into rc/202610
ChristianPavilonis Oct 1, 2026
7f1e736
Merge PR #1137 into rc/202610
ChristianPavilonis Oct 1, 2026
77ad504
Merge PR #1183 into rc/202610
ChristianPavilonis Oct 1, 2026
dca291c
Merge PR #1173 into rc/202610
ChristianPavilonis Oct 1, 2026
7e06e69
Merge PR #1176 into rc/202610
ChristianPavilonis Oct 1, 2026
6b082b1
Merge PR #1177 into rc/202610
ChristianPavilonis Oct 1, 2026
2f3eed7
Merge PR #1180 into rc/202610
ChristianPavilonis Oct 1, 2026
abba833
Merge PR #1181 into rc/202610
ChristianPavilonis Oct 1, 2026
22ce7b7
Merge PR #1182 into rc/202610
ChristianPavilonis Oct 1, 2026
217dd43
Allow bounded cold browser launches in audits
ChristianPavilonis Oct 1, 2026
5f527d0
Guard Sourcepoint rewrites against encoded responses
ChristianPavilonis Oct 1, 2026
e81e5d9
Merge branch 'main' into fix/1206-1208-script-composition
prk-Jr Oct 2, 2026
2028bc6
Clarify mobile trace capture and truncation rules
prk-Jr Oct 2, 2026
4d73741
Fix remaining streamed Flight composition regressions
ChristianPavilonis Oct 2, 2026
ae434d4
Merge remote-tracking branch 'origin/main' into fix/align-edgezero-pr…
aram356 Oct 2, 2026
86695c3
Address deployment-documentation review and repin EdgeZero
aram356 Oct 2, 2026
f22e366
Isolate documentation proposal builds from publication credentials
dhruv8sh Oct 3, 2026
20f4a0c
Merge branch 'main' into spec/mobile-ad-render-trace-endpoint
aram356 Oct 4, 2026
ae8d9c5
Merge branch 'main' into feat/docs-proposal-automation
prk-Jr Oct 5, 2026
870135e
Merge branch 'main' into fix/align-edgezero-pr-381
prk-Jr Oct 5, 2026
b3538b4
Merge branch 'main' into fix/1206-1208-script-composition
prk-Jr Oct 5, 2026
7871acd
Rewrite publisher origin URLs in proxied response headers
dhruv8sh Oct 5, 2026
7bc0e87
Stop replaying request bodies on 301/302/303 proxy redirects
dhruv8sh Oct 5, 2026
9988c97
Merge main into rc/202610
ChristianPavilonis Oct 5, 2026
af69781
Fail closed on uncaptured Flight source
ChristianPavilonis Oct 5, 2026
514a617
Accept underscore request hosts safely
ChristianPavilonis Oct 5, 2026
750ba8d
Add default-off mobile ad-rendering trace workflow
prk-Jr Oct 6, 2026
e076f77
Link trace release checklist to the repository plan
prk-Jr Oct 6, 2026
b2930d7
Preserve advertising behavior and trace controls
prk-Jr Oct 6, 2026
fb45d1c
Run skipped-page trace regression in CI
prk-Jr Oct 6, 2026
f6c3bd5
Record CodeQL test-fixture triage
prk-Jr Oct 6, 2026
b7e48c7
Merge branch 'main' into spec/mobile-ad-render-trace-endpoint
prk-Jr Oct 6, 2026
6e9e7c4
Bound trace capture cost and complete review corrections
prk-Jr Oct 6, 2026
c052b59
Use web_time::Instant for Cloudflare timing
dhruv8sh Oct 1, 2026
2226836
Use web_time clocks in publisher and lint core for wasm-unsafe clocks
dhruv8sh Oct 6, 2026
f01ebc7
Merge branch 'main' into fix/redirect-body-replay
prk-Jr Oct 7, 2026
3631a82
Add design spec and plan for separate creative click rewrite switch
dhruv8sh Oct 7, 2026
53cfb81
Add design spec and plan for creative asset host allowlist
dhruv8sh Oct 7, 2026
ec51817
Rewrite same-origin Origin to the upstream origin with --rewrite-host
prk-Jr Oct 7, 2026
d44d7c4
Update spec and plan after implementation review
dhruv8sh Oct 7, 2026
10e96eb
Split creative URL normalization from rewrite host policy
dhruv8sh Oct 7, 2026
cb4bd4a
Add an auction rewrite_clicks setting that follows rewrite_creatives …
dhruv8sh Oct 7, 2026
422fabf
Gate creative asset and click rewriting on separate switches
dhruv8sh Oct 7, 2026
7c7e202
Apply an explicit rewrite_clicks to HTML fetched through the first-pa…
dhruv8sh Oct 7, 2026
6b82d6d
Document rewrite_clicks in the example config and pin its overlay beh…
dhruv8sh Oct 7, 2026
3c1012d
Document the rewrite_clicks creative setting
dhruv8sh Oct 7, 2026
d8f0439
Split creative URL normalization from rewrite host policy
dhruv8sh Oct 7, 2026
c9c79b5
Add an auction rewrite_clicks setting that follows rewrite_creatives …
dhruv8sh Oct 7, 2026
5a91c92
Gate creative asset and click rewriting on separate switches
dhruv8sh Oct 7, 2026
35dd1d1
Apply an explicit rewrite_clicks to HTML fetched through the first-pa…
dhruv8sh Oct 7, 2026
0396aba
Document rewrite_clicks in the example config and pin its overlay beh…
dhruv8sh Oct 7, 2026
ee5715f
Document the rewrite_clicks creative setting
dhruv8sh Oct 7, 2026
48d59b8
Add rewrite include_domains setting with validation
dhruv8sh Oct 7, 2026
ef8ad67
Limit creative asset rewriting to rewrite include_domains
dhruv8sh Oct 7, 2026
9d9fb27
Rewrite link imagesrcset once on the inline creative path
dhruv8sh Oct 7, 2026
ea642da
Update spec and plan after implementation review
dhruv8sh Oct 7, 2026
2dfe7e7
Document rewrite include_domains and case-insensitive exclusions
dhruv8sh Oct 7, 2026
e5becfc
Treat only commas that border reserved cookies as ambiguous
prk-Jr Oct 7, 2026
e1b062a
Lead the trace viewer with what happened and per-slot cards
prk-Jr Oct 7, 2026
dd4f43c
Return 301/302 redirects unfollowed for non-POST body methods
dhruv8sh Oct 7, 2026
e26af27
Keep maintainer commits on proposal branches across retries
dhruv8sh Oct 7, 2026
46eb757
Normalize navigation targets before the redirect-loop check
dhruv8sh Oct 7, 2026
8ce9d08
Stop allowing Copilot to run git grep
dhruv8sh Oct 7, 2026
a3e7881
Log a warning when a redirect drops a request body
dhruv8sh Oct 7, 2026
f8b2229
Compare CSP source paths case-sensitively when deduplicating
dhruv8sh Oct 7, 2026
d0710fe
Drop the npm cache from jobs that run untrusted content
dhruv8sh Oct 7, 2026
0d24e64
Log the scheme-change redirect escape at warn level
dhruv8sh Oct 7, 2026
5c3fd10
Bound documentation proposal jobs with timeouts
dhruv8sh Oct 7, 2026
90fff1c
Note that CSP report-to is also left unchanged
dhruv8sh Oct 7, 2026
d73e5d6
Document the Set-Cookie Domain redirect limitation
dhruv8sh Oct 7, 2026
17a0938
Neutralize mentions in the proposal rationale
dhruv8sh Oct 7, 2026
7091873
Pass HEAD proxy responses through without body rewriting
dhruv8sh Oct 7, 2026
f9f47ee
Refuse proposal retries that inspect a different range
dhruv8sh Oct 7, 2026
947cf4c
Document the proposal scripts CI gate and first-run prerequisites
dhruv8sh Oct 7, 2026
2304a9a
Fill the proposal work directory into Copilot prompts
dhruv8sh Oct 7, 2026
4ac34aa
Scope the Origin rewrite to the /_ts namespace
prk-Jr Oct 7, 2026
fbf6a1a
Merge remote-tracking branch 'origin/main' into fix/rewrite-origin-ur…
dhruv8sh Oct 7, 2026
b3e3b22
Merge remote-tracking branch 'origin/main' into feat/docs-proposal-au…
dhruv8sh Oct 7, 2026
0bc4bf7
Guard empty-rerun branch deletion with a lease
dhruv8sh Oct 7, 2026
92d9aa3
Gate PRs on non-allowlisted URL hosts in changed lines
dhruv8sh Oct 7, 2026
2b19142
Set up pinned Node in every Rust CI job and drop unused trusted-serve…
dhruv8sh Oct 7, 2026
b9235ca
Give each Rust CI job its own cache and save caches only from main
dhruv8sh Oct 7, 2026
6323a0e
Rewrite Origin only for the trace Enable/End actions
prk-Jr Oct 8, 2026
1dd5c7b
Describe the Origin rewrite as trace-action only
prk-Jr Oct 8, 2026
8b0f200
Merge branch 'main' into spec/1231-creative-asset-host-allowlist
prk-Jr Oct 8, 2026
c0dc08c
Merge remote-tracking branch 'origin/main' into fix/align-edgezero-pr…
aram356 Oct 8, 2026
d30c3ac
Merge branch 'main' into spec/1234-creative-click-rewrite-switch
prk-Jr Oct 8, 2026
fa0353b
Address review feedback and move sandbox bounds off the deprecated store
aram356 Oct 8, 2026
4cd2024
Merge branch 'main' into fix/align-edgezero-pr-381
aram356 Oct 8, 2026
9b92886
Stop the Fastly deploy skill from recommending compute publish
aram356 Oct 8, 2026
cfa9953
Merge branch 'main' into spec/1234-creative-click-rewrite-switch
prk-Jr Oct 8, 2026
dc69eb4
Pin trace path classification across Fastly request conversion
prk-Jr Oct 8, 2026
285c75f
Merge main into spec/mobile-ad-render-trace-endpoint
prk-Jr Oct 8, 2026
fbc7372
Merge branch 'main' into fix/dev-proxy-rewrite-origin
prk-Jr Oct 8, 2026
cfa87ac
Merge branch 'main' into fix/align-edgezero-pr-381
aram356 Oct 8, 2026
a1dd0fe
Merge branch 'main' into fix/sourcepoint-unknown-length-1088
aram356 Oct 8, 2026
0d0689a
Merge branch 'main' into fix/rewrite-origin-urls-in-response-headers
aram356 Oct 8, 2026
06fd4cc
Merge branch 'main' into fix/redirect-body-replay
aram356 Oct 8, 2026
49077c6
Merge branch 'main' into fix/dev-proxy-rewrite-origin
aram356 Oct 8, 2026
70ba83f
Merge branch 'main' into chore/ci-pinned-node-tsjs-build
aram356 Oct 8, 2026
b8dbc19
Merge branch 'main' into chore/ci-per-job-rust-cache
aram356 Oct 8, 2026
c185093
Address Sourcepoint cache and review coverage
ChristianPavilonis Oct 8, 2026
c0982a5
Merge branch 'main' into fix/dev-proxy-rewrite-origin
prk-Jr Oct 9, 2026
117373e
Merge branch 'main' into spec/mobile-ad-render-trace-endpoint
prk-Jr Oct 9, 2026
ece25d3
Merge branch 'main' into spec/1231-creative-asset-host-allowlist
aram356 Oct 9, 2026
527a367
Merge branch 'main' into fix/redirect-body-replay
aram356 Oct 9, 2026
92dd203
Authenticate forwarded public origins before request dispatch
prk-Jr Oct 9, 2026
8d6ba17
Merge branch 'spec/mobile-ad-render-trace-endpoint' into fix/dev-prox…
prk-Jr Oct 9, 2026
ee024b8
Preserve browser Origin with authenticated proxy forwarding
prk-Jr Oct 9, 2026
cf36844
Document random forwarder tokens and temporary digest comparison
prk-Jr Oct 9, 2026
720ae96
Merge branch 'spec/mobile-ad-render-trace-endpoint' into fix/dev-prox…
prk-Jr Oct 9, 2026
b01b2e2
Clarify random proxy token provisioning and security review
prk-Jr Oct 9, 2026
ba227cb
Initialize proxy TLS before startup
prk-Jr Oct 9, 2026
782d83c
Merge branch 'main' into chore/ci-pinned-node-tsjs-build
aram356 Oct 9, 2026
50ad004
Unify the git version build input as TRUSTED_SERVER__GIT_VERSION
dhruv8sh Oct 9, 2026
a7ad11d
Harden documentation proposals against forks, symlinks, and live rati…
dhruv8sh Oct 9, 2026
466520b
Widen the wasm clock lint and share the std SystemTime bridge
dhruv8sh Oct 9, 2026
42fba17
Merge origin/main into fix/rewrite-origin-urls-in-response-headers
dhruv8sh Oct 9, 2026
badb5a1
Keep redirect body drops covered and finalize every proxy exit
dhruv8sh Oct 10, 2026
9f139a0
Guard the pinned Node setup in CI with a step-order check
dhruv8sh Oct 10, 2026
437b810
Keep cookieless same-URL GET redirects off the serving host
dhruv8sh Oct 10, 2026
5e54ade
Merge remote-tracking branch 'origin/main' into feat/docs-proposal-au…
dhruv8sh Oct 10, 2026
025df95
Merge remote-tracking branch 'origin/main' into fix/cloudflare-web-ti…
dhruv8sh Oct 10, 2026
959e503
Merge remote-tracking branch 'origin/main' into feat/git-version-header
dhruv8sh Oct 10, 2026
091e3cd
Merge branch 'main' into chore/ci-per-job-rust-cache
dhruv8sh Oct 10, 2026
0baefea
Merge branch 'main' into fix/redirect-body-replay
dhruv8sh Oct 10, 2026
5c66d64
Merge branch 'main' into spec/mobile-ad-render-trace-endpoint
aram356 Oct 11, 2026
bcec6ad
Move pinned Rust setup into a shared composite action
dhruv8sh Oct 12, 2026
b445b7b
Merge remote-tracking branch 'origin/chore/ci-per-job-rust-cache' int…
dhruv8sh Oct 12, 2026
b4a20f4
Address trace workflow review findings
prk-Jr Oct 12, 2026
3993b72
Merge trace base into dev proxy origin fix
prk-Jr Oct 12, 2026
ab4c378
Merge branch 'main' into chore/ci-lint-domains-gate
dhruv8sh Oct 12, 2026
a40b319
Merge branch 'main' into feat/docs-proposal-automation
prk-Jr Oct 12, 2026
cce4e2a
Address review feedback on the include_domains spec and plan
dhruv8sh Oct 12, 2026
e2970f4
Merge branch 'spec/1231-creative-asset-host-allowlist' into feat/1231…
dhruv8sh Oct 12, 2026
f1c0c14
Address review feedback on the rewrite_clicks spec and plan
dhruv8sh Oct 12, 2026
6930246
Merge branch 'spec/1234-creative-click-rewrite-switch' into feat/1234…
dhruv8sh Oct 12, 2026
72f26d2
Cover suffix spoofing in the rewrite policy test
dhruv8sh Oct 12, 2026
80fc013
Warn that public rewrite wrappers ignore switches
dhruv8sh Oct 12, 2026
d2c77d6
Keep a bidder base target when dropping its URL
dhruv8sh Oct 12, 2026
be1ae72
Correct operator docs for rewrite_clicks
dhruv8sh Oct 12, 2026
7c5eca0
Expand the CHANGELOG notes for the shared step
dhruv8sh Oct 12, 2026
f7885c1
Round-trip include_domains entries through url
dhruv8sh Oct 12, 2026
e1332c9
Use a let-chain in the creative link handler
dhruv8sh Oct 12, 2026
2af735d
Document include_domains host round-trip rules
dhruv8sh Oct 12, 2026
1b97522
Warn that public rewrite wrappers ignore switches
dhruv8sh Oct 12, 2026
ff48ae9
Keep a bidder base target when dropping its URL
dhruv8sh Oct 12, 2026
366e361
Correct operator docs for rewrite_clicks
dhruv8sh Oct 12, 2026
e210f62
Expand the CHANGELOG notes for the shared step
dhruv8sh Oct 12, 2026
1f9ab09
Keep config permissions and hide config text in ts prebid bundle errors
dhruv8sh Oct 12, 2026
1cf83d9
Merge branch 'main' into fix/prebid-bundle-config-write
dhruv8sh Oct 12, 2026
3ddf615
Merge branch 'main' into fix/sourcepoint-unknown-length-1088
aram356 Oct 12, 2026
941a5d8
Merge branch 'main' into feat/git-version-header
aram356 Oct 12, 2026
5d423a2
Merge branch 'main' into fix/cloudflare-web-time-instant
aram356 Oct 12, 2026
d824a42
Merge branch 'main' into fix/rewrite-origin-urls-in-response-headers
aram356 Oct 12, 2026
5c5e92f
Merge branch 'main' into fix/redirect-body-replay
aram356 Oct 12, 2026
b72f6df
Report a reason when an APS creative render fails
aram356 Oct 12, 2026
9610979
Record APS render failures in GPT diagnostics
aram356 Oct 12, 2026
4a1eb28
Pin EdgeZero to v0.0.9 and address the latest review round
aram356 Oct 12, 2026
fde0086
Merge remote-tracking branch 'origin/main' into fix/align-edgezero-pr…
aram356 Oct 12, 2026
c38e141
Add proxy-side identity capture design spec for lockr-issued IDs
jevansnyc Oct 8, 2026
2874689
Implement server-side identity foundation and Lockr response capture
ChristianPavilonis Oct 9, 2026
f22c4ad
Use official ECR mirror for CI framework images
ChristianPavilonis Oct 9, 2026
bb7dbf2
Fix Lockr EID capture and GPP USP consent
ChristianPavilonis Oct 12, 2026
ea39605
Reconstruct provenance for Lockr-captured ID5 IDs
ChristianPavilonis Oct 12, 2026
16b6d09
Add authenticated identity capture handoff
ChristianPavilonis Oct 12, 2026
3add18d
Name the managed-deploy token and staged-version config prerequisites
aram356 Oct 12, 2026
ceadfdc
Read the APS renderer version from its declaration in the browser spec
aram356 Oct 12, 2026
a102c12
Merge branch 'main' into feature/aps-render-failure-reasons
aram356 Oct 12, 2026
939f81f
Merge PR #1175 into rc/202610
aram356 Oct 12, 2026
8d1f530
Merge PR #1183 into rc/202610
aram356 Oct 12, 2026
9f8e21f
Merge branch 'main' into fix/sourcepoint-unknown-length-1088
aram356 Oct 12, 2026
ab326ba
Merge PR #1107 into rc/202610
aram356 Oct 12, 2026
892a26f
Merge PR #1251 into rc/202610
aram356 Oct 12, 2026
8233648
Merge PR #1213 into rc/202610
aram356 Oct 12, 2026
e887cee
Merge main into rc/202610
aram356 Oct 12, 2026
9db1d72
Merge branch 'main' into fix/sourcepoint-unknown-length-1088
aram356 Oct 12, 2026
905a8f4
Accept and drop TS Console auction evidence in trace projection
aram356 Oct 12, 2026
e65000e
Run the Axum dev server through EdgeZero's AxumDevServer
aram356 Oct 12, 2026
f4bd3d5
Merge main into rc/202610
aram356 Oct 12, 2026
549120c
Revert PR #1052 from rc/202610
aram356 Oct 12, 2026
5d84340
Merge PR #1300 into rc/202610
aram356 Oct 12, 2026
d356d76
Separate import groups in the trace projection
aram356 Oct 12, 2026
c3a33e6
Merge branch 'main' into feat/docs-proposal-automation
aram356 Oct 12, 2026
4efde34
Merge main into rc/202610
aram356 Oct 12, 2026
0484e8d
Merge PR #1183 into rc/202610
aram356 Oct 12, 2026
0ff684f
Merge PR #1239 into rc/202610
aram356 Oct 12, 2026
747126f
Merge PR #1254 into rc/202610
aram356 Oct 12, 2026
4cf890d
Merge PR #1257 into rc/202610
aram356 Oct 12, 2026
f543469
Merge PR #1259 into rc/202610
aram356 Oct 12, 2026
1f175e0
Merge PR #1291 into rc/202610
aram356 Oct 12, 2026
0ba787a
Merge PR #1222 into rc/202610
aram356 Oct 12, 2026
035b5e2
Merge PR #1225 into rc/202610
aram356 Oct 12, 2026
f8ec5ac
Merge PR #1226 into rc/202610
aram356 Oct 12, 2026
a430096
Merge PR #1238 into rc/202610
aram356 Oct 12, 2026
c556a35
Merge PR #1252 into rc/202610
aram356 Oct 12, 2026
ae3199f
Merge PR #1253 into rc/202610
aram356 Oct 12, 2026
e034e5d
Merge PR #1260 into rc/202610
aram356 Oct 12, 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
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .claude/commands/check-ci.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Run all CI checks locally, in order. Stop and report if any step fails.

1. `cargo fmt --all -- --check`
2. `cargo clippy-fastly && cargo clippy-axum && cargo clippy-cloudflare`
2. `cargo clippy-fastly && cargo clippy-axum && cargo clippy-cloudflare && cargo clippy-cloudflare-wasm && scripts/lint-wasm-clock.sh`
3. `cargo test-fastly && cargo test-axum && cargo test-cloudflare`
4. `cargo check-cloudflare` (wasm32-unknown-unknown target check, mirrors CI)
5. `cd crates/trusted-server-js/lib && npx vitest run`
Expand Down
15 changes: 12 additions & 3 deletions .claude/skills/deploying-trusted-server-to-fastly/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,18 @@ accounts and harmless for single-service ones, so prefer it by default.
- **Always `ts config push --dry-run` first.** It prints the exact target
physical store; confirm it is the service-scoped one, not a shared default,
before writing.
- **Always pass `--service-id=<SID>`** to `fastly compute publish`. A checked-in
`fastly.toml` may pin a different (or dead) `service_id`; without the flag,
publish targets that one.
- **Never deploy with `fastly compute publish`.** This app declares Config, KV,
and Secret Stores, and only EdgeZero's managed deploy links each selected
physical store to the service version under its logical ID. Publishing with
the Fastly CLI clones the active version's links, so the new version is
missing the links the runtime opens: app config fails to load and every
publisher route returns 500 while `/health` still answers 200. Deploy with
`ts deploy --adapter fastly --service-id=<SID> --application-release <root>`,
with `EDGEZERO_MANIFEST` set to the release's `edgezero.toml`, or EdgeZero's
`deploy-fastly` action.
- **Always pass `--service-id=<SID>`** to any deploy or publish command. A
checked-in `fastly.toml` may pin a different (or dead) `service_id`; without
the flag, the command targets that one.
- **`ts config push` only upserts entries**; the target store must already exist
(`fastly config-store create`) before pushing.
- **Verify a shared store stayed untouched** by recording its `updated`
Expand Down
33 changes: 24 additions & 9 deletions .github/actions/setup-integration-test-env/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,16 +34,23 @@ outputs:
runs:
using: composite
steps:
- name: Retrieve Rust version
id: rust-version
shell: bash
run: echo "rust-version=$(grep '^rust ' .tool-versions | awk '{print $2}')" >> "$GITHUB_OUTPUT"

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

# Pin Node before anything compiles trusted-server-core: its dependency on
# trusted-server-js runs the TSJS build with the `npm` on PATH. That covers
# the Rust builds below and the callers' later cargo steps, and callers use
# this Node directly too (e.g. `npm install -g wrangler`), so keep the step
# unconditional.
- name: Use Node.js for the TSJS build
uses: actions/setup-node@v4
with:
node-version: ${{ steps.node-version.outputs.node-version }}
cache: npm
cache-dependency-path: crates/trusted-server-js/lib/package-lock.json

- name: Retrieve Viceroy version
id: viceroy-version
if: ${{ inputs.install-viceroy == 'true' }}
Expand All @@ -52,11 +59,15 @@ runs:
run: echo "viceroy-version=$(grep '^viceroy ' .tool-versions | awk '{print $2}')" >> "$GITHUB_OUTPUT"

- name: Set up Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
uses: ./.github/actions/setup-rust
with:
toolchain: ${{ steps.rust-version.outputs.rust-version }}
target: wasm32-wasip1
cache-shared-key: cargo-${{ runner.os }}
# Restore the axum job's main cache: it builds the same axum debug and
# Fastly release WASM artifacts. Restore only: test-axum owns this key,
# and rust-cache never replaces an exact-match key, so a partial cache
# saved by a workflow_dispatch run on main would stick.
cache-key: cargo-axum
save-cache: "false"

- name: Cache Viceroy binary
if: ${{ inputs.install-viceroy == 'true' }}
Expand Down Expand Up @@ -96,8 +107,11 @@ runs:
- name: Build WordPress test container
if: ${{ inputs.build-test-images == 'true' }}
shell: bash
# Docker's official ECR mirror avoids Docker Hub anonymous pull limits.
run: |
docker build -t test-wordpress:latest \
docker build \
--build-arg DOCKER_LIBRARY=public.ecr.aws/docker/library \
-t test-wordpress:latest \
crates/trusted-server-integration-tests/fixtures/frameworks/wordpress/

- name: Build Next.js test container
Expand All @@ -106,6 +120,7 @@ runs:
run: |
docker build \
--build-arg NODE_VERSION=${{ steps.node-version.outputs.node-version }} \
--build-arg DOCKER_LIBRARY=public.ecr.aws/docker/library \
-t test-nextjs:latest \
crates/trusted-server-integration-tests/fixtures/frameworks/nextjs/

Expand Down
45 changes: 45 additions & 0 deletions .github/actions/setup-rust/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: Set up pinned Rust
description: Install the .tool-versions Rust toolchain with a per-job cache that only main saves.

inputs:
cache-key:
description: Per-job rust-cache key prefix; the runner OS is appended.
required: true
target:
description: Comma-separated extra targets.
required: false
default: ""
components:
description: Comma-separated extra components.
required: false
default: ""
save-cache:
description: Set to "false" for restore-only callers.
required: false
default: "true"

runs:
using: composite
steps:
- name: Retrieve Rust version
id: rust-version
shell: bash
run: echo "rust-version=$(grep '^rust ' .tool-versions | awk '{print $2}')" >> "$GITHUB_OUTPUT"

- name: Remove runner-image Rust toolchain
# rust-cache hashes every installed toolchain into its key, so the image's
# preinstalled stable would rotate the key on each runner-image rollout.
# Unsetting the default stops rustup from silently reinstalling stable
# when cargo runs outside the checkout.
shell: bash
run: if command -v rustup >/dev/null; then rustup toolchain uninstall stable && rustup default none; fi

- name: Set up Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: ${{ steps.rust-version.outputs.rust-version }}
target: ${{ inputs.target }}
components: ${{ inputs.components }}
cache-shared-key: ${{ inputs.cache-key }}-${{ runner.os }}
# PR caches are scoped to their ref and only evict main's shared caches.
cache-save-if: ${{ inputs.save-cache == 'true' && github.ref == 'refs/heads/main' }}
4 changes: 2 additions & 2 deletions .github/workflows/deploy-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,12 @@ jobs:
id: node-version
run: echo "node-version=$(grep '^nodejs ' .tool-versions | awk '{print $2}')" >> $GITHUB_OUTPUT

# No dependency cache: the docs-proposal workflow runs generated content
# on the main ref, where it could save a poisoned entry under this key.
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ steps.node-version.outputs.node-version }}
cache: "npm"
cache-dependency-path: docs/package-lock.json

- name: Setup Pages
uses: actions/configure-pages@v4
Expand Down
187 changes: 187 additions & 0 deletions .github/workflows/docs-proposal.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,187 @@
name: Documentation proposal

# Proposes documentation edits with Copilot CLI after code merges to main and
# opens one reviewable pull request per merge. See
# docs/superpowers/specs/2026-10-01-docs-proposal-automation-design.md.
on:
push:
branches: [main]
paths:
- "crates/**"
- "trusted-server.example.toml"
- "edgezero.toml"
- "fastly.toml"
- ".cargo/config.toml"
- "scripts/**"
- "!scripts/docs-proposal/**"
workflow_dispatch:
inputs:
sha:
description: Full SHA of a commit on main to propose documentation for
required: true
type: string
base:
description: >-
Full SHA of main before the push that added the commit, when that
push added several commits; defaults to the commit's first parent
required: false
type: string

permissions: {}

# Sequential merges are proposed one at a time, in order. The default queue
# keeps only one pending run and cancels older ones, so keep them all. Every
# job has a timeout so a hung run cannot hold the queue for hours.
concurrency:
group: docs-proposal
cancel-in-progress: false
queue: max

# Each job runs the proposal scripts from the workflow's own revision in
# `tools/` against a checkout of the merge commit in `source/`, so retrying a
# merge that predates this tooling, or a later fix to it, still works. A push
# that adds several commits is inspected from the previous main head; a manual
# retry of such a push needs that head as its `base` input.
env:
MERGE_SHA: ${{ inputs.sha || github.sha }}
BASE_SHA: ${{ github.event_name == 'push' && github.event.before || inputs.base }}

jobs:
# Copilot runs here with a read-only token; it cannot push or open PRs.
# Copilot can write files that later steps execute, so treat this job as
# untrusted: it uses no dependency cache that later runs would restore.
propose:
runs-on: ubuntu-latest
timeout-minutes: 30
permissions:
contents: read
copilot-requests: write
steps:
- name: Checkout tools
uses: actions/checkout@v4
with:
ref: ${{ github.workflow_sha }}
path: tools
persist-credentials: false

- name: Checkout merge commit
uses: actions/checkout@v4
with:
ref: ${{ env.MERGE_SHA }}
path: source
fetch-depth: 0
persist-credentials: false

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

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ steps.node-version.outputs.node-version }}

- name: Install Copilot CLI
run: npm install -g @github/copilot@1.0.90

- name: Propose documentation edits
working-directory: source
env:
GITHUB_TOKEN: ${{ github.token }}
run: ../tools/scripts/docs-proposal/propose.sh "$MERGE_SHA" .docs-proposal "$BASE_SHA"

- name: Upload proposal
uses: actions/upload-artifact@v4
with:
name: docs-proposal
path: source/.docs-proposal/
include-hidden-files: true
if-no-files-found: error

# VitePress executes Vue in Markdown during the build, so the docs gates run
# here with no write token, persisted credentials, or dependency cache.
validate:
needs: propose
runs-on: ubuntu-latest
timeout-minutes: 15
permissions:
contents: read
steps:
- name: Checkout tools
uses: actions/checkout@v4
with:
ref: ${{ github.workflow_sha }}
path: tools
persist-credentials: false

- name: Checkout merge commit
uses: actions/checkout@v4
with:
ref: ${{ env.MERGE_SHA }}
path: source
fetch-depth: 0
persist-credentials: false

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

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ steps.node-version.outputs.node-version }}

- name: Download proposal
uses: actions/download-artifact@v4
with:
name: docs-proposal
path: source/.docs-proposal

- name: Validate proposal
working-directory: source
run: ../tools/scripts/docs-proposal/validate.sh "$MERGE_SHA" .docs-proposal

# Copilot does not run here, and neither does any proposal content: this job
# re-checks the path allowlist on a fresh checkout and publishes the patch.
publish:
needs: validate
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: write
pull-requests: write
steps:
- name: Checkout tools
uses: actions/checkout@v4
with:
ref: ${{ github.workflow_sha }}
path: tools
persist-credentials: false

- name: Checkout merge commit
uses: actions/checkout@v4
with:
ref: ${{ env.MERGE_SHA }}
path: source
fetch-depth: 0

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

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ steps.node-version.outputs.node-version }}

- name: Download proposal
uses: actions/download-artifact@v4
with:
name: docs-proposal
path: source/.docs-proposal

- name: Publish proposal pull request
working-directory: source
env:
GH_TOKEN: ${{ github.token }}
run: ../tools/scripts/docs-proposal/publish.sh "$MERGE_SHA" .docs-proposal
Loading
Loading