Skip to content

August release candidate (DO NOT MERGE) - #1019

Draft
aram356 wants to merge 643 commits into
mainfrom
rc/202608
Draft

August release candidate (DO NOT MERGE)#1019
aram356 wants to merge 643 commits into
mainfrom
rc/202608

Conversation

@aram356

@aram356 aram356 commented Aug 12, 2026

Copy link
Copy Markdown
Collaborator

Summary

August release candidate: current main plus the remaining open PRs, staged together for RC validation. Supersedes the July RC (#919).

Already included through main:

In Review:

Verification

  • cargo fmt --all -- --check
  • All six clippy targets (fastly, axum, cloudflare, cloudflare-wasm, spin-native, spin-wasm) with -D warnings
  • cargo test-fastly (2,075 tests via Viceroy), test-axum, test-cloudflare, test-spin
  • CLI tests via ./scripts/test-cli.sh (34 tests, exercising the Upgrade EdgeZero to v0.0.6 #940 run.rs changes)
  • Integration parity suite (13/13)
  • JS: vitest (829 tests), lint, format, build

prk-Jr and others added 25 commits August 18, 2026 15:53
Derive a coarse browser family (chrome, safari, firefox, edge, opera) from
the User-Agent in DeviceSignals, next to is_mobile and platform_class. Order
the checks so Edge, Opera, and the iOS Chrome/Firefox agents classify
correctly despite embedding Chrome/Safari tokens.

Carry browser_family through the auction observation context onto
AuctionEventRow so it ships in the Tinybird NDJSON, and add the matching
browser_family column to the auction_events_raw datasource.

The value is a low-cardinality family label only; no raw User-Agent leaves
the edge, consistent with the existing device-signal privacy stance. The
field is forward-only: rows emitted before deploy stay null.
ChristianPavilonis and others added 30 commits August 26, 2026 12:54
stackpop/edgezero#316 was squash-merged and released as v0.0.6, so the six
deps move from the interim rev = "5f3d648c" pin to tag = "v0.0.6"
(c8d6e414). The squash makes this different bytes rather than a mechanical
reference swap: the CLI argument surface is byte-identical to the prior
pin, the documented behaviors (healthcheck attempts clamp, staging
selector-only mirror, leaves-only env overlay) were re-verified at the
tag, and the full local gate list was re-run. The lock is rebuilt from
main with a scoped update and the five resolver-unified edges restored;
the only non-edgezero changes are syn 3.0.4 and toml_edit 0.25.12.
…-upgrade

# Conflicts:
#	crates/trusted-server-cli/tests/config_env_overlay.rs
Apply review round 4: capture the production rollback target with
active-version before deploying (nothing emits it afterwards), label the
lifecycle trio Fastly-only, state where healthcheck's <version> comes from,
name --store alongside --no-env as a way a destructive gc sweep can
retarget, and present the deploy -- separator as the migration it is.

Document the staging config limitation honestly: a staged version currently
loads the production blob because the Fastly entry point does not read the
version-linked edgezero_runtime_env selectors. The non-hack fix needs
edgezero to expose its runtime-env loader as public API, filed as
stackpop/edgezero#349 with the downstream wiring tracked in #1082; the
stale previous-version rollback hint is stackpop/edgezero#350.

Add parse coverage for config gc --store.
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
# Conflicts:
#	crates/trusted-server-core/src/auction_config_types.rs
#	crates/trusted-server-core/src/integrations/prebid.rs
#	crates/trusted-server-core/src/settings.rs
#	scripts/template-cache-local-test.sh
#	trusted-server.example.toml
The main merge adopted #870's literal placeholder values for secret
fields, but on rc/202608 the app config carries secret-store key names
at rest: TrustedServerAppConfig::secret_fields() declares
publisher.proxy_secret, ec.passphrase, handler passwords, and partner
tokens as references the runtime resolves from the secrets store, and
the ts CLI maps them to Spin variable names (lowercase, digits,
underscores only). The literal placeholders broke that mapping in the
template-cache harness CI step.

Revert those fields to their key-reference values (handler_password,
publisher_proxy_secret, ec_passphrase, partner tokens), reword the
template docs for key-name semantics, drop the harness substitutions of
secret values (the harness provisions the referenced keys in its local
ts_secrets store), restore the CLI test helpers' key-name replaces, and
have the core template test swap password and passphrase for strong
literals so parse-time resolved-value validation passes.
* 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
# Conflicts:
#	crates/trusted-server-adapter-axum/src/app.rs
#	crates/trusted-server-adapter-axum/src/middleware.rs
#	crates/trusted-server-adapter-cloudflare/src/middleware.rs
#	crates/trusted-server-adapter-fastly/src/app.rs
#	crates/trusted-server-adapter-fastly/src/middleware.rs
#	crates/trusted-server-adapter-spin/src/middleware.rs
#	crates/trusted-server-core/src/auth.rs
#	crates/trusted-server-core/src/proxy.rs
#	crates/trusted-server-core/src/publisher.rs
# Conflicts:
#	crates/trusted-server-core/src/publisher.rs
# Conflicts:
#	Cargo.lock
#	Cargo.toml
# Conflicts:
#	crates/trusted-server-adapter-spin/src/platform.rs
#	crates/trusted-server-core/src/auction/endpoints.rs
#	crates/trusted-server-core/src/auction_config_types.rs
#	crates/trusted-server-core/src/config.rs
#	crates/trusted-server-core/src/config_payload.rs
#	crates/trusted-server-core/src/creative_opportunities.rs
#	crates/trusted-server-core/src/integrations/prebid.rs
#	crates/trusted-server-core/src/integrations/registry.rs
#	crates/trusted-server-core/src/publisher.rs
#	crates/trusted-server-core/src/settings.rs
#	docs/guide/api-reference.md
#	docs/guide/auction-orchestration.md
#	docs/guide/configuration.md
#	docs/guide/ec-setup-guide.md
#	docs/guide/error-reference.md
#	docs/guide/fastly.md
#	docs/guide/first-party-proxy.md
#	docs/guide/getting-started.md
#	docs/guide/integrations/aps.md
#	docs/guide/proxy-signing.md
#	scripts/template-cache-local-test.sh
#	trusted-server.example.toml
# Conflicts:
#	.env.example
#	Cargo.lock
#	crates/trusted-server-adapter-axum/src/app.rs
#	crates/trusted-server-adapter-fastly/src/app.rs
#	crates/trusted-server-core/src/config.rs
#	crates/trusted-server-core/src/config_payload.rs
#	crates/trusted-server-core/src/ec/registry.rs
#	crates/trusted-server-core/src/integrations/datadome.rs
#	crates/trusted-server-core/src/integrations/datadome/protection.rs
#	crates/trusted-server-core/src/proxy.rs
#	crates/trusted-server-core/src/secret_resolution.rs
#	crates/trusted-server-core/src/settings.rs
#	docs/guide/configuration.md
#	docs/guide/ec-setup-guide.md
#	docs/guide/getting-started.md
#	docs/guide/integrations/datadome.md
#	docs/guide/proxy-signing.md
#	scripts/template-cache-local-test.sh
#	trusted-server.example.toml
# Conflicts:
#	crates/trusted-server-core/src/integrations/gpt_bootstrap.js
#	crates/trusted-server-integration-tests/browser/tests/shared/aps-renderer.spec.ts
#	crates/trusted-server-js/lib/src/core/first_impression.ts
#	crates/trusted-server-js/lib/src/core/types.ts
#	crates/trusted-server-js/lib/src/integrations/gpt/index.ts
#	crates/trusted-server-js/lib/src/integrations/prebid/index.ts
#	crates/trusted-server-js/lib/test/integrations/gpt/ad_init.test.ts
#	crates/trusted-server-js/lib/test/integrations/prebid/index.test.ts
#	docs/guide/integrations/aps.md
#	docs/superpowers/specs/2026-07-24-prevent-duplicate-gpt-slot-requests-design.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants