Repository navigation
October release candidate (DO NOT MERGE) - #1228
Draft
ChristianPavilonis wants to merge 375 commits into
Draft
ChristianPavilonis wants to merge 375 commits into
ChristianPavilonis wants to merge 375 commits into
Conversation
Cover zero height separately from missing dimensions, accept u32::MAX exactly, skip negative dimensions, rename the shared oversized dimension variable, and document why the raw upstream value is logged with Debug formatting. Signed-off-by: dhruv8sh <dhruv8sh@proton.me>
Add a fallible try_parse_args test helper and check error.kind() against DisplayHelpOnMissingArgumentOrSubcommand instead of matching a should_panic substring from clap's private ErrorInner Debug output. Signed-off-by: dhruv8sh <dhruv8sh@proton.me>
An invocation with flags but no usable rewrite rule (for example ts dev proxy --insecure) previously ran the Safari system-proxy restore, and could attempt sudo, before failing on the missing rule. Resolve the config first so it fails without touching system proxy state; a proxy stranded by a hard-killed run is still restored on the next valid run. Add a regression test using a malformed restore file, which the restore path deletes without running networksetup, and soften the guide so it no longer promises the concise one-line error output. Signed-off-by: dhruv8sh <dhruv8sh@proton.me>
Signed-off-by: dhruv8sh <dhruv8sh@proton.me>
Signed-off-by: dhruv8sh <dhruv8sh@proton.me>
Signed-off-by: dhruv8sh <dhruv8sh@proton.me>
…rsion on Fastly Signed-off-by: dhruv8sh <dhruv8sh@proton.me>
Signed-off-by: dhruv8sh <dhruv8sh@proton.me>
Signed-off-by: dhruv8sh <dhruv8sh@proton.me>
Reuse parse_optional_bid_dimension so integral float dimensions are accepted like in the other auction providers, and pin that behavior with a test. Signed-off-by: dhruv8sh <dhruv8sh@proton.me>
Build the requested-dimension index from the auction request and run mediated bids through resolve_bid_dimensions, so the mock provider rejects unrequested impressions and mismatched sizes and infers missing dimensions like the other auction providers. Signed-off-by: dhruv8sh <dhruv8sh@proton.me>
Check every tracked Markdown file outside docs/ with Prettier, and reformat the two files that failed. In pr-reviewer.md, escape BRANCH-* so Prettier does not read it as emphasis, and keep long code spans on one line so they are not split across list-item wraps. Signed-off-by: dhruv8sh <dhruv8sh@proton.me>
Let the partner test helper take an api_token, and assert that one partner with placeholder api_token and ts_pull_token values reports both fields in a single error. Signed-off-by: dhruv8sh <dhruv8sh@proton.me>
Apply matching script stages in sequence and emit each fragment once. Keep GTM buffering response-local and bounded, and rewrite captured Flight payloads only after reading their original record boundaries. Preserve unsafe originals and recompute decoded record lengths. Cover Pages and App Router data, bootstrap controls, escaped queries, source-order fallback, and complete identity/gzip adapter responses. Refs #1206, #1207, #1208
Brings #1107 to b4a20f4, its first revision in this RC that carries the trace implementation rather than only the spec. Integration decisions: - EdgeZero moves to 78439fd4 on spec/pre-dispatch-request-fidelity. It contains v0.0.9 (#1175) and the pre-dispatch ingress hooks #1107 and #1251 pin at 965d482f; no released tag carries both. - scheduleInitialAdInit takes (bids, slots, auctionDiagnostics, traceAuctionTransport). One builder emits both payloads, so the RC's diagnostics-only scripts are unchanged and trace moves to the fourth argument. recordTrustedServerOpportunity likewise takes auctionFacts then traceIdentity; #1107's positional tests and the bootstrap fallback were shifted to match. - The Fastly trace terminal path sends through the timed delivery function without Server-Timing, sandbox counters or access telemetry. - build.rs embeds trace assets from #1214's private bundle directory. The viewer rebuilds byte-identical; the pinned source digest changes only because build-all.mjs gained --out-dir. - The trace projection does not copy the RC's auction evidence fields, so the classification test marks them excluded. - The retained diagnostics toolbar resyncs its filter select after selectRequest. - Shim size guard raised to 55.5 KB for diagnostics plus trace.
Conflict resolutions: - Fastly imports keep the RC's timing, telemetry and trace imports alongside the version-header imports. - CHANGELOG keeps both sides' entries. - getting-started keeps #1175's managed ts deploy command. ts deploy consumes a prebuilt release, so TRUSTED_SERVER__GIT_VERSION is documented as a build input for the release package rather than a prefix on the deploy command.
The RC's GPT diagnostics stack adds auctionType, auctionWinner, prebidAuction, serverAuctionTimings and serverAuctionTimingOrigin to each request cycle. The trace projection rejects unknown cycle keys, so any cycle with auction evidence failed report capture and the overlay's trace handoff never navigated. Accept these members and drop them, as the projection already does for adManager. The viewer bundle is unchanged; only the pinned trace source digest moves with the projection source.
EdgeZero marks each request from its own listener so it can record the request's inbound origin, and #1107's trace actions require that origin. The marker is crate-private, so the RC's custom timing server produced no origin and every trace action returned 403. Restore main's entry point. The Axum dev server loses the request-timing Server-Timing header until EdgeZero offers a seam to wrap its service.
#1300 replaces #1052, reverted from this RC in the previous commit. Integration decisions: - gpt_diagnostics/store.ts keeps the trace imports beside #1300's creative failure list import. - #1300 adds eight aps_* creative failure reasons that #1107's trace projection does not accept, so any cycle carrying one failed trace capture. The projection now validates against the full diagnostics list and drops the APS reasons; unknown values are still rejected. The viewer bundle is unchanged; the pinned trace source digest moves.
ESLint's import/order rule requires a blank line between the core types import and the local trace imports. The pinned trace source digest moves with the file; the viewer bundle is unchanged.
Brings in the squash-merged #1213 (9cf3055), replacing the RC's earlier #1213 branch revision. Conflict resolutions: - #1213's own code (middleware Fastly version header, core build.rs, design spec) takes main's final form. - CHANGELOG keeps #1107's entries beside main's. - Fastly main.rs keeps the RC's timing, telemetry and trace imports. - getting-started keeps #1175's managed ts deploy command and the build-input wording for TRUSTED_SERVER__GIT_VERSION.
Brings #1222 at 514a617. Integration decisions: - RequestInfo::from_request keeps #1251's source order (authenticated forwarder, immutable ingress, runtime origin, Host) and applies #1222's host syntax check to whichever host is selected. It returns BadRequest for a malformed or non-text selected host. Raw Forwarded and X-Forwarded-Host are never selected in the RC, so #1222's tests for those headers now assert they are ignored instead of rejected. - RC-only callers (DataDome protection, Fastly compat, Spin, forwarder, orchestrator and publisher tests) handle the fallible signature. DataDome only reads RequestInfo behind an authenticated origin and keeps its request_host fallback. - The first-party sign path prefers the authenticated forwarder scheme (#1251) and propagates #1222's host error. - The GTM rewriter takes #1222's per-document GtmScriptState, which supersedes main's ScriptTextAccumulator use from #1179; state still lives in IntegrationDocumentState, and #1179's two-document residue tests remain.
Brings #1225 at c3a33e6. Integration decisions: - .gitignore, AGENTS.md and scripts/README.md keep both sides: #1254's lint-domains gate stays CI gate 10 and #1225's documentation proposal scripts become gate 11; the scripts table keeps #1257's check-ci-node-pin.py row beside #1225's docs-proposal rows. - The lint-domains job from #1254 now uses #1259's setup-rust action and pins Node before cargo, so #1257's check-ci-node-pin gate passes. The two PRs merged cleanly but the combination failed that gate.
Brings #1226 at 5d423a2. Integration decisions: - AGENTS.md lists #1226's wasm clock lint as CI gate 12, after #1254's lint-domains (10) and #1225's documentation proposal scripts (11). - The integration fixture builder keeps #1226's table-customizing app_config_envelope and gains #1107's trace flag as a parameter; integration_app_config_envelope_with_trace and #1226's auction fixture both build on it. - The Cloudflare environment keeps #1226's spawn_with_config_json and shared wrangler launcher, and threads #1107's readiness probe through it, so spawn_with_readiness and the default spawn path still use their own readiness checks. - scripts/lint-wasm-clock.sh passes across the RC's Cloudflare build.
Brings #1238 at d824a42. Integration decisions: - CHANGELOG.md, lib.rs and publisher.rs imports keep both sides: the RC's request_timing module and #1238's response_header_rewrite module sit side by side. - The header rewrite runs where #1238 placed it, after the RC's trace extension and unexpected-304 handling and before the template-cache gate.
Brings #1252 at 7c5eca0, including the design spec and plan from its spec/1234-creative-click-rewrite-switch base. Integration decisions: - Settings normalization runs #1252's rewrite.normalize() and keeps main's fallible image_optimizer.normalize()? from #1221. - CHANGELOG.md keeps the RC's entries and replaces the older rewrite_creatives entry with #1252's version, which defers click wrapping to rewrite_clicks.
Brings #1253 at e210f62, including the design spec and plan from its spec/1231-creative-asset-host-allowlist base. #1253 carries its own copy of #1252's rewrite_clicks commits plus the include_domains allowlist, so its conflicts with #1252 are two versions of the same change. Integration decisions: - proxy.rs, creative.rs and settings.rs take a clean three-way merge of #1253 against the RC before #1252. #1253's versions of the shared rewrite_clicks code supersede #1252's, and they also carry #1252's suffix-spoofing test case and doc-link fix. Every other file #1253 touches matches that re-merge exactly, so nothing is duplicated. - Settings normalization keeps main's fallible image_optimizer normalize()? beside rewrite.normalize(). - CHANGELOG.md keeps the RC's entries and takes #1253's exclude_domains, include_domains, rewrite_clicks and rewrite_creatives entries.
Brings #1260 at 16b6d09 (draft). Integration decisions: - Fastly delivery uses #1260's send_identity_response, extended with the RC's SendContext and post-send steps: identity effects apply after send, pull sync runs only when capture storage is available, and access telemetry always reports the delivered response. - require_identity_graph stays untimed; its doc now names identity capture as a second post-send caller. - The /auction response keeps #1107's trace cache privacy and drops the x-ts-eids headers, as #1260 does. - The integration proxy route reads #1260's integration id from the RC's three-field route tuple. - #1260 removes server-side ts-eids cookie parsing. #1107's trace cookie health now checks the ts-eids format with a local validator that accepts the same shapes the removed parser did. - ec_finalize_kv_lands_before_freeze drives its KV round trip with a SharedID cookie instead of the removed ts-eids ingestion.
| default: | ||
| return unhandledCase(cycle.delivery); | ||
| return unhandledCase(cycle.delivery) ?? 'Delivery evidence: Not observed'; |
| const items = traceItems(item, maximumBytes); | ||
| if (!items || !add('[')) okay = false; | ||
| else { | ||
| for (let index = 0; index < items.length && okay; index += 1) { |
| for pattern in &self.exclude_domains { | ||
| if let Err(reason) = check_include_domain(pattern) { | ||
| log::warn!( | ||
| "rewrite.exclude_domains: entry `{pattern}` never matches a URL host ({reason})" |
8 tasks
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
October release candidate, replacing September RC #1112.
This PR is an integration branch for release-candidate validation. Do not merge it into
main.Contents
The RC head
e034e5decontainsmainthrough9cf30558(#1213), every open PR in milestone202610at the revision listed below, and the September revisions of the #1074 stack.Open milestone PRs
b4a20f493add18d89db1d720514a617ac3a33e675d423a23d824a42d5c5e92f83993b7257c5eca0drewrite_clickscode is superseded by #1253'se210f623rewrite_clickscommitsab4c378c9f139a0ab445b7b816b6d09a1cf83d98a102c121#1252 and #1253 target the
spec/1234-creative-click-rewrite-switchandspec/1231-creative-asset-host-allowlistbranches, so their design specs and plans are included too.Merged milestone PRs
#1137, #1166, #1173, #1176, #1177, #1179, #1180, #1181, #1182, #1209, #1210, #1213, #1214, #1220, #1221, #1223, #1227 and #1256 are in
mainand reach the RC through themainmerge. Earlier RC merges of #1137 and #1173 through #1182 are superseded by their finalmainversions.Closed PRs still carried
a152367558f8a354f951955f0fa7dfb6#1052 was closed in favor of #1300. Its RC merge was reverted before #1300 was merged, so none of its superseded code remains.
#1261 has no milestone and is not in this RC. Swapping the carried stack for #1261 would require rebuilding the branch. #1217 was closed in favor of #1225 and was never included.
Each included revision was verified as an ancestor of the RC head.
EdgeZero pin
The RC pins EdgeZero to
78439fd4on the unreleasedspec/pre-dispatch-request-fidelitybranch. It is the only revision that has both the v0.0.9 store bindings #1175 needs and the pre-dispatch ingress hooks #1107 and #1251 need (they pin965d482f, which predates v0.0.9). A released tag carrying both is a release gate.RC-only integration changes
These adapt PRs to each other and exist only in this branch:
scheduleInitialAdInittakes(bids, slots, auctionDiagnostics, traceAuctionTransport), andrecordTrustedServerOpportunitytakesauctionFactsbeforetraceIdentity. The diagnostics stack and Add mobile ad-rendering trace workflow #1107 each added the third and sixth arguments respectively; Add mobile ad-rendering trace workflow #1107's call sites and positional tests were shifted.RUST_LOGhandling and Add mobile ad-rendering trace workflow #1107's trace terminal path. Trace terminal responses skip Server-Timing, sandbox counters, access telemetry andx-ts-version.build.rsembeds Add mobile ad-rendering trace workflow #1107's trace assets from Build tsjs bundles into a private OUT_DIR and validate the set #1214's private bundle directory. The viewer rebuilds byte-identical; the pinned trace source digest changed becausebuild-all.mjsgained--out-dir.AxumDevServer, as onmain. EdgeZero records the inbound origin Add mobile ad-rendering trace workflow #1107's trace actions require only for requests from its own listener, so the RC's custom timing server made every trace action return 403. The Axum dev server therefore omits the timing stack's Server-Timing header until EdgeZero offers a seam to wrap its service.aps_*creative failure reasons that the trace report does not carry. The trace projection drops them instead of failing capture, and still rejects unknown values.ts deploycommand and documents Report deployed git version in x-ts-version #1213'sTRUSTED_SERVER__GIT_VERSIONas a build input for the release package.RequestInfo::from_requestkeeps Preserve browser Origin with authenticated proxy forwarding #1251's source order (authenticated forwarder, immutable ingress, runtime origin,Host) and applies Preserve Next.js and Google Tag Manager rewrites in streamed pages #1222's host syntax check to whichever host is selected, returningBadRequestfor a malformed or non-text host. RawForwardedandX-Forwarded-Hostare never selected here, so Preserve Next.js and Google Tag Manager rewrites in streamed pages #1222's tests for those headers assert they are ignored rather than rejected. RC-only callers (DataDome protection, Fastly compat, Spin, and the forwarder, orchestrator and publisher tests) handle the fallible signature.GtmScriptStatein place ofmain'sScriptTextAccumulatorfrom Adopt EdgeZero reusable-sandbox lifecycle for Fastly #1179. The state still lives inIntegrationDocumentState, and Adopt EdgeZero reusable-sandbox lifecycle for Fastly #1179's two-document residue tests remain.lint-domainsjob from Gate PRs on non-allowlisted URL hosts in changed lines #1254 uses Give each Rust CI job its own cache and save caches only from main #1259'ssetup-rustaction and pins Node before cargo, so Set up pinned Node in Rust CI jobs and drop unused tsjs deps #1257'scheck-ci-node-pingate passes. The three PRs merged cleanly, but the combination failed that gate.AGENTS.mdlists Gate PRs on non-allowlisted URL hosts in changed lines #1254'slint-domains, Propose documentation updates after code merges to main #1225's documentation proposal scripts and Use web_time::Instant for Cloudflare timing #1226's wasm clock lint as CI gates 10, 11 and 12.app_config_envelopeand takes Add mobile ad-rendering trace workflow #1107's trace flag as a parameter. The Cloudflare environment keeps Use web_time::Instant for Cloudflare timing #1226'sspawn_with_config_jsonand threads Add mobile ad-rendering trace workflow #1107's readiness probe through the shared wrangler launcher.proxy.rs,creative.rsandsettings.rstake Add a host allowlist for creative asset rewriting #1253's versions of therewrite_clickscode it shares with Make creative click rewriting a separate switch #1252; they include Make creative click rewriting a separate switch #1252's suffix-spoofing test case and doc-link fix. Settings normalization keepsmain's fallibleimage_optimizer.normalize()?from Reject image optimizer names that collide after trimming #1221.send_identity_response, extended with the timing stack'sSendContextand post-send steps. Identity effects apply after send, pull sync runs only when capture storage is available, and access telemetry always reports the delivered response.ts-eidscookie parsing and thex-ts-eidsresponse headers. Add mobile ad-rendering trace workflow #1107's trace cookie health checks thets-eidsformat with a local validator that accepts the same shapes the removed parser did, and/auctionkeeps Add mobile ad-rendering trace workflow #1107's trace cache privacy.ec_finalize_kv_lands_before_freezedrives its KV round trip with a SharedID cookie instead of the removedts-eidsingestion.Verification
At
e034e5deon macOS:cargo fmt, all eight clippy gates plus the build-digest clippy,test-fastly,test-fastly-reuse,test-axum,test-cloudflare,test-spin, parity, the CLI suite and the native build-digest test (5,118 Rust tests, 0 failures), plus 72 vitest files (1,813 tests), ESLint, JS, docs and Markdown formatting, the docs build, the wasm clock lint, the CI Node-pin check and the documentation proposal script tests. The full Next.js (49) and WordPress (28) browser suites and the Axum trace browser workflow also pass locally.ts dev lint domains --changed-vs origin/main, which #1254'slint-domainsjob runs on this PR, fails on 57 lines in 18 files. Every line comes from an included PR, not from an RC integration change: #1238 (19), #1253 (12), #1252 (10), #1107 and #1251 (8), #1222 (3) and the carried timing stack (5). Each PR has to clear its own lines before it lands onmainafter #1254.