September release candidate (DO NOT MERGE) - #1112
Draft
ChristianPavilonis wants to merge 589 commits into
Draft
ChristianPavilonis wants to merge 589 commits into
ChristianPavilonis wants to merge 589 commits into
Conversation
Adds section 18 to the request phase timing spec: three first-call-wins T0 offsets (auction dispatched, resolved, committed) on RequestTimings, emitted as additive nullable columns on access_logs_raw with auction_id as the join key to the per-bidder auction dataset. Answers the overlap-proof questions the two existing clocks cannot: when the auction started relative to request entry, when the final bid landed, and when targeting was committed toward GAM.
Implements spec section 18: three first-call-wins marks on RequestTimings (dispatched at the DispatchAuctionOutcome::Dispatched arm, resolved after collect at both sites, committed after write_bids_to_state at both sites), carried through TimingSnapshot into four additive access_logs_raw columns: auction_dispatched_ms, auction_resolved_ms, auction_committed_ms, and auction_id as the join key to the per-bidder auction dataset. Null offsets mean no auction ran; a failed dispatch records nothing. FORWARD_QUERY fills the new columns with typed defaults for pre-existing rows. No header emission, no config surface, no adapter changes: the values ride the existing snapshot and the tinybird.access_enabled gate.
The Cloudflare integration harness writes wrangler.integration.generated.toml at test time; it was swept into the previous commit by accident. Ignore it so local CI=1 runs cannot commit it again.
* docs: plan PR 1079 review remediation * fix(js): scope first impression delivery ownership * fix(js): reject stale creatives and expand nested shells * Prevent delayed publisher refresh overwrites
Main added the dedicated `[creative_opportunities].enabled` template switch (#1008) with its own publisher-local ad-stack gate, while this branch moved the same gate into core as `evaluate_ad_stack_gate`. Resolve in favor of the shared gate and give it the new switch, so the CLI diagnostics keep reporting the same verdict the runtime reaches: - Drop `ServerSideAdStackConfig`/`should_run_server_side_ad_stack` and route the publisher call site through `evaluate_ad_stack_gate` with `ad_templates_enabled`. - Keep `is_server_side_ad_eligible_navigation`; the inactive-template cache policy needs the request-only half of the gate. - Add `AdStackGateName::AdTemplatesEnabled` and widen the exhaustive gate tests to the eighth gate, absorbing the coverage of main's deleted unit test. - Feed the switch from both CLI gate call sites, add the `Gates` JSON field, the `explain` gate row, and the `lint` switch line and status.
# Conflicts: # crates/trusted-server-cli/src/commands/audit/generate/slot_toml.rs
Unify Tinybird, DataDome, and S3 static credentials under the logical default secret store, resolve them during typed config loading, and remove request-time static secret reads. Honor Fastly logical-to-physical store mappings, preserve deserialize-only selector compatibility, redact runtime values, and document provisioning and migration behavior.
…o issue-355-liveramp-integration # Conflicts: # trusted-server.example.toml
The rebase onto main brought EcKvStore::list_keys_with_prefix, but the EidConflictEcKv test double was not updated alongside its siblings, so trusted-server-core failed to compile under cfg(test) with E0046. Delegate to the inner store, matching every other test double in the module.
15 tasks
# Conflicts: # docs/guide/integrations/prebid.md
# Conflicts: # crates/trusted-server-cli/src/commands/config/ad_templates.rs
Upstream now parses the live Fastly resource-link types (`config`, `kv-store`, `secret-store`), documents the custom entry point migration, and moves the release verifier into edgezero-adapter, which adds serde, serde_json, sha2, and walkdir edges under its cli feature. No public API used by Trusted Server changed, so this is a lockfile-only update.
# Conflicts: # crates/trusted-server-core/src/publisher.rs # crates/trusted-server-integration-tests/browser/tests/nextjs/gpt-diagnostics.spec.ts # crates/trusted-server-js/lib/src/integrations/gpt/index.ts # crates/trusted-server-js/lib/src/integrations/gpt_diagnostics/api.ts # crates/trusted-server-js/lib/src/integrations/gpt_diagnostics/badges.ts # crates/trusted-server-js/lib/src/integrations/gpt_diagnostics/overlay.ts # crates/trusted-server-js/lib/src/integrations/gpt_diagnostics/store.ts # crates/trusted-server-js/lib/src/integrations/prebid/index.ts # crates/trusted-server-js/lib/test/integrations/gpt_diagnostics/badges.test.ts # crates/trusted-server-js/lib/test/integrations/gpt_diagnostics/overlay.test.ts # crates/trusted-server-js/lib/test/integrations/prebid/index.test.ts # docs/guide/integrations/gpt-diagnostics-dictionary.md # docs/guide/integrations/gpt-diagnostics.md
The two upstream commits since 4531aeec touch only the deploy action script and a demo lockfile. No crate source changed, so this is a lockfile-only update.
# Conflicts: # crates/trusted-server-adapter-fastly/src/app.rs # crates/trusted-server-adapter-fastly/src/main.rs # crates/trusted-server-adapter-spin/src/platform.rs # crates/trusted-server-core/src/ec/batch_sync.rs # crates/trusted-server-core/src/ec/finalize.rs # crates/trusted-server-core/src/ec/kv.rs # crates/trusted-server-core/src/ec/mod.rs # crates/trusted-server-core/src/ec/prebid_eids.rs # crates/trusted-server-core/src/ec/pull_sync.rs # crates/trusted-server-core/src/ec/pull_sync_marker.rs # crates/trusted-server-core/src/publisher.rs # docs/guide/api-reference.md # docs/guide/configuration.md # docs/guide/edge-cookies.md # docs/guide/fastly.md # docs/superpowers/plans/2026-07-13-issue-880-no-op-pull-sync-kv-reads.md # docs/superpowers/plans/2026-07-13-issue-881-idempotent-withdrawal-tombstones.md
The two upstream commits since 7162b7e2 only reorganize the EdgeZero CI test workflows. No crate source changed, so this is a lockfile-only update.
Upstream replaces the Compute-unsupported version diff snapshot with per-collection reads and drops the parent service ID comparison from the staged-source guard and staging rollback. No public API used by Trusted Server changed, so this is a lockfile-only update.
The only upstream change since fd45db1f corrects the Google Pub/Sub logging snapshot path to the Fastly API's `logging/pubsub` and adds `logentries` to the swept endpoint kinds. No public API used by Trusted Server changed, so this is a lockfile-only update.
The only upstream change since 6258b6b2 switches the Fastly deploy to the current `service resource-link` and `service version` command spellings, removing the CLI deprecation notices. No public API used by Trusted Server changed, so this is a lockfile-only update.
# Conflicts: # crates/trusted-server-adapter-fastly/src/app.rs # crates/trusted-server-adapter-fastly/src/main.rs # crates/trusted-server-integration-tests/fixtures/configs/viceroy-template.toml # fastly.toml
The only crate change since bb4e0040 canonicalizes the Fastly configuration snapshot by sorting object keys before ordering rows, so the drift check no longer fails on Fastly's random JSON key order. No public API used by Trusted Server changed, so this is a lockfile-only update.
The only upstream commit since cf9a96a0 adds a Cargo target cache to EdgeZero's CI. No crate source changed, so this is a lockfile-only update.
The build script asked Cargo to rerun on every file under lib/, including node_modules, which emitted 33,932 rerun-if-changed directives in a 2.8 MB output that Cargo re-checked on every build and invalidated the crate after any npm install. Watch the TypeScript sources, package manifests, and bundler configuration explicitly instead. Measured on an Apple Silicon host with a warm cache: a no-op `cargo check -p trusted-server-js` drops from 1.1s to 0.15s, the script emits 7 directives, touching a node_modules file no longer reruns it, and touching lib/src or package-lock.json still does.
The only upstream commit since 119fbf80 fixes a shellcheck finding in EdgeZero's CI cache action. No crate source changed, so this is a lockfile-only update.
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
September release candidate.
This PR is an integration branch for release-candidate validation. Do not merge it into
main.Refreshed on 2026-09-18: every included PR is now at its latest commit.
mainis fullycontained in
rc/202609. RC head76ef421ae.Already included through main
Included PRs
All at latest. The two stacks were integrated at their tips, since the lower PRs are
ancestors of their tip.
feature/ts-cli-ad-templatesfix/no-op-kv-readsfix/idempotent-ec-withdrawal-tombstonesperf/group-batch-sync-by-ec-idrefactor/remove-legacy-consent-storeaps-renderer-failure-diagnosticsissue-355-liveramp-integrationfeat/request-phase-timingspec/auction-timeline-offsetsfeature/ts-console-improvementsfeature/ts-console-clarityfix/issue-993-eid-kv-conflictsfix/pbs-stored-requestsfix/align-edgezero-pr-381Conflict resolution notes
Conflicts were resolved as genuine three-way merges rather than by taking one side.
Each file was audited by commit subject to establish which side carried work the other
had never seen, because several RC-side features postdate the branches.
Deliberate resolutions worth reviewing:
gpt/index.tskept both sides. The RC'sdelete ts.firstImpression(first-impressionarbitration, Prevent competing GPT first impressions and resize PUC shells #1079 / Harden PR 1079 first-impression arbitration #1083 / Resolve the GPT bootstrap test fixture without assuming a platform #1162) and the branch's
ts.auctionDiagnostics = undefinedare independent cleanups on the same reset path. Taking the branch alone reverted Prevent competing GPT first impressions and resize PUC shells #1079
and broke 24 tests.
publisher.rskept the RC'sdispatch_auction/collect_dispatched_auctionsplitand
legacy_provider_map(Add configuration-driven OpenRTB auction providers #1016), and layered the branch's no-argumentmark_auction_dispatched,auction_wait_placement_wirehelper, and two-phaseBrowserAuctionDiagnosticsconstruction on top.prebid/index.tskept the RC's first-impression token reconciliation and took thebranch's removal of the
hb_curcurrency field, which a later review commit on thatbranch had deliberately dropped.
app.rsrestoredis_publisher_navigation = ec.is_real_browser && is_navigationfrom the merge base. The RC side had dropped the
is_real_browserterm, which widenedset_recovery_eligibleto non-browser navigations.platform/timed_kv.rsandsettings.rsneeded repair after auto-merging into anon-compiling state: the
EcKvStoretrait madelist_keys_with_prefixrequired andcount_keys_with_prefixa provided default, andsettings.rskept two copies of thesame two tests.
to name the feature set. The shim is 42158 bytes with LiveRamp and GPT diagnostics both
shipping. The guard exists to catch a Prebid value-import multiplying the bundle, and its
Prebid-free assertions still pass.
#1175 (deployment / store selectors). Merged at
ae47b4350. The conflicts were theFastly store-binding model changing underneath RC-side work:
fastly.tomland the Viceroy fixture dropped theedgezero_runtime_envconfig store,which is the selector store Align Fastly staging store selectors with EdgeZero PR 381 #1175 removes. The rename to
trusted_server_secretsauto-merged around it.
app.rstook the branch'sRuntimeStoreConfig::logical()body. The RC's conflictedside still referenced
env, whichlogical()no longer takes, so the RC side could notcompile against the merged signature.
main.rstook the branch'sedgezero_main(req)signature and dropped the deadruntime_env_config/RuntimeStoreConfig::from_envplumbing. Four RC-side call sitesthen needed
&runtime_stores, sinceruntime_storesbecame a local value.app.rstest imports kept the RC's wider set (HeaderValue,response_builder, used9 times each) and dropped
EnvConfig, now unused.A fix was also pushed to #1157's own branch (
bd0b83a98): its rebase ontomainleft theEidConflictEcKvtest double missinglist_keys_with_prefix, failingtrusted-server-coreunder
cfg(test)with E0046 and takingcargo fmtdown as a cascade.Verification
Run locally against the merged branch:
cargo fmt --all -- --checkcargo test-fastlycargo test-axum/test-cloudflare/test-spinnpx vitest runThe table above was measured at
589a8e9b9. After merging #1175 the Rust gates werere-run at
9297c734b: fmt, all six clippy targets,cargo test-fastly(3057),axum, cloudflare, spin, parity (13) and the ts CLI suite (505) all pass.
The
browser integration testscheck that was failing on the previous RC head now passes.The failure was the
nextjs/gpt-diagnosticsspec timing out against a stale GPT diagnosticssnapshot, which #1154 updates.