Repository navigation
Conversation
Read the cookie named by the Prebid sharedId module's storage.name, default the source to pubcid.org with atype 1, and keep a stored SharedID for as long as the row lives instead of letting a different cookie replace it after a day. Signed-off-by: dhruv8sh <dhruv8sh@proton.me>
…provider Core cannot see the provider crate's kinds, so its deploy validation refused any enabled identity provider. ts config already builds every enabled provider, which refuses an unregistered kind; core now leaves that check to it. Signed-off-by: dhruv8sh <dhruv8sh@proton.me>
Axum now builds the partner registry and both provider coordinators at startup, reads and mints ts-ec on publisher navigations, runs page-phase lookups through Axum's HTTP client, and finalizes through KvIdentityGraph with a single page-load write. After-response providers run on a spawned blocking task with their follow-up compare-and-swap write. The identity graph is a process-local store with generation-based CAS, enabled when ec.ec_store is set. Signed-off-by: dhruv8sh <dhruv8sh@proton.me>
Signed-off-by: dhruv8sh <dhruv8sh@proton.me>
53edc2f to
117a58e
Compare
jevansnyc
left a comment
There was a problem hiding this comment.
Reviewed the Axum identity lifecycle, process-local KV/CAS behavior, auction wiring, and included SharedID changes. No blocking runtime issues found. One non-blocking documentation correction below. All reported CI checks pass. Local verification: cargo test-axum passed all 73 tests (including all six new identity tests); one documentation example is ignored.
| Identity providers run on Fastly and on the Axum dev server. This release | ||
| registers no provider kind, so `ts config validate`, `push` and `diff` reject an | ||
| enabled provider; keep `enabled = false` until a kind ships. The Cloudflare and | ||
| Spin adapters refuse to start when an enabled provider is configured. On Fastly |
There was a problem hiding this comment.
P3: Remove the obsolete instruction to disable all providers. This PR removes the blanket deployment rejection, and the provider crate already registers supported kinds, so this guidance would prevent readers from enabling the Axum feature described here.
| Identity providers run on Fastly and on the Axum dev server. This release | |
| registers no provider kind, so `ts config validate`, `push` and `diff` reject an | |
| enabled provider; keep `enabled = false` until a kind ships. The Cloudflare and | |
| Spin adapters refuse to start when an enabled provider is configured. On Fastly | |
| Identity providers run on Fastly and on the Axum dev server. The Cloudflare and | |
| Spin adapters refuse to start when an enabled provider is configured. On Fastly |
ChristianPavilonis
left a comment
There was a problem hiding this comment.
Summary
Adds server-side identity collection to the Axum dev server with process-local generation-based CAS storage, and updates SharedID defaults and retention. Approved with one non-blocking documentation correction.
Non-blocking
🏕 camp site
- Update contradictory provider documentation — see inline at
docs/guide/configuration.md:926–929.
The inline comment is prose-only because the complete correction spans multiple files and lines outside the diff.
Verification
- Focused configuration-validation scratch probe: PASS.
git diff --check: PASS.- Passing remote CI results reused; full local suites and deployed-runtime testing were not rerun.
CI Status
- integration tests (Fastly EC lifecycle): PASS
- integration tests: PASS
- browser integration tests: PASS
- trace runtime and browser acceptance: PASS
- cargo test (ts CLI, native) (macos-latest): PASS
- cargo test (ts CLI, native) (ubuntu-latest): PASS
- cargo check (cloudflare native + wasm32-unknown-unknown): PASS
- cargo test (cross-adapter parity): PASS
- worker-deadlines (cloudflare): PASS
- cargo test (axum native): PASS
- ts dev lint domains (changed lines): PASS
- cargo check/build/test (spin native + wasm32-wasip1): PASS
- HTML EOF runtime (Fastly): PASS
- CI Node pin guard: PASS
- format-typescript: PASS
- prepare integration artifacts: PASS
- cargo test: PASS
- vitest: PASS
- cargo fmt: PASS
- release scripts: PASS
- CLAUDE.md symlink guard: PASS
- docs-proposal scripts: PASS
- format-docs: PASS
- worker-deadlines (spin): PASS
GitHub reports no required checks for this branch.
| Identity providers run on Fastly and on the Axum dev server. This release | ||
| registers no provider kind, so `ts config validate`, `push` and `diff` reject an | ||
| enabled provider; keep `enabled = false` until a kind ships. The Cloudflare and | ||
| Spin adapters refuse to start when an enabled provider is configured. On Fastly |
There was a problem hiding this comment.
🏕 camp site — Update the remaining contradictory provider documentation
This paragraph still says the release registers no provider kinds and rejects every enabled provider, but this build includes registered kinds and this PR removes that blanket rejection. Related contradictions remain at lines 981–982, 999–1000, 1016–1017 and 1033–1034; trusted-server.example.toml:124 also still says “Fastly only.”
Proposed wording:
Identity providers run on Fastly and on the Axum dev server. `ts config validate`,
`push` and `diff` reject unregistered kinds and invalid provider-specific
settings. Cloudflare and Spin refuse to start with enabled providers.
Invalid enabled provider configuration also fails startup on Fastly and Axum.Retain the process-local storage and TLS explanation, and align the other references above with this behavior.
Apply manually — the complete correction spans multiple files and lines outside the diff.
Per the user, every feature is built once and works on every adapter in platform order, with platform gaps sent to EdgeZero (DEC-16, SH-5). T21 moves the identity routes, EC lifecycle, providers and write-back into one router in core that each adapter mounts; A2, A10, T8, T9, T17 and T18 shrink to turning it on per adapter and passing the conformance suite, and T7, T14 and A11 fold into A2 and A10. EZI-2a adds EdgeZero's local store for Axum development and EZI-4 binds Axum's geo provider from the manifest. Restack the Axum RC units on #1506: #1531 carries A1 in place of #1528, #1533 and #1534 close as copies of #1525 and #1526, and the image and Terraform units sit directly on #1532 so A6 and A7 stop waiting on A2. Record #1566, refresh the provider stack's fixes at their current heads, and flag #1535 as unplanned.
|
CREATOR: From the server-side identity plan (#1559, Part of #1574 |
Summary
Changes
crates/trusted-server-adapter-axum/src/ec_kv.rsEcKvStore: one Mutex makes reads strongly consistent and gives a real generation compare-and-swap. Generations are never reused, and TTLs are honoured. Also adds an in-memory lookup rate limiter that rounds to a per-minute budget, as Fastly's does.crates/trusted-server-adapter-axum/src/identity.rsKvIdentityGraph, and the after-response tokio task.crates/trusted-server-adapter-axum/src/app.rsreject_enabled_providersfor Axum. Wires identity into the publisher fallback route. Gives/auction,/_ts/page-bidsand the publisher auction the shared registry and graph./_ts/admin/eidsuses the shared registry.crates/trusted-server-adapter-axum/src/identity_tests.rscrates/trusted-server-adapter-axum/src/lib.rs,Cargo.toml,Cargo.locktrusted-server-identity-providers.docs/guide/configuration.mdDifferences from Fastly
Closes
No linked issue. Follow-up into #1488. It includes the two SharedID commits from #1565, which the Axum tests depend on, rebased onto the current
feat/s2s-eid-vendors.Spec
Brings the existing Fastly identity flow to Axum, following the design in the #1487/#1488 stack.
Test plan
cargo test-fastly && cargo test-axumcargo clippy-fastly && cargo clippy-axum(andcargo clippy-cli)cargo fmt --all -- --checkJS tests:
cd crates/trusted-server-js/lib && npx vitest run(no JS changes)JS format:
cd crates/trusted-server-js/lib && npm run format(no JS changes)Docs format: prettier check on
docs/guide/configuration.mdWASM build:
cargo build --package trusted-server-adapter-fastly --release --target wasm32-wasip1Manual testing via
fastly compute serveOther: Axum router tests against a stub server. Each test runs real navigations:
_pubcidcookie is stored, and a later different cookie doesn't replace it;_pubcid_optout=1removes a stored ID and blocks a new one;All six identity tests passed five repeated runs.
Checklist
unwrap()in production code — useexpect("should ...")logmacros (notprintln!)