From 11e39dde4b7d6f78bd50fe0b47b3d084a773c871 Mon Sep 17 00:00:00 2001 From: Christian Date: Wed, 18 Mar 2026 13:17:02 -0500 Subject: [PATCH 1/5] Rename Synthetic ID to Edge Cookie (EC) and simplify generation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Rename all external identifiers: x-synthetic-id → x-ts-ec, synthetic_id cookie → ts-ec, synthetic_fresh → ec_fresh - Simplify hash generation to use only client IP with HMAC-SHA256, removing User-Agent, Accept-Language, Accept-Encoding, and template rendering - Rename config section [synthetic] → [ec] with backward-compat alias - Rename ec.rs to edge_cookie.rs for clarity - Remove handlebars dependency (and transitive deps) - Add x-ts-ec-fresh to internal headers blocklist - Update all docs with new Edge Cookie (EC) terminology - Fix review findings: remove redundant serde rename, stale optimization entry, leftover 'synthetic' references in agent configs and docs Closes #462 --- .claude/agents/issue-creator.md | 2 +- .claude/agents/repo-explorer.md | 2 +- CLAUDE.md | 4 +- Cargo.lock | 670 ++++++++++-------- OPTIMIZATION.md | 3 +- PUBLISHER_IDS_AUDIT.md | 2 +- crates/common/Cargo.toml | 1 - crates/common/README.md | 18 +- crates/common/src/auction/README.md | 4 +- crates/common/src/auction/endpoints.rs | 17 +- crates/common/src/auction/formats.rs | 25 +- crates/common/src/auction/types.rs | 2 +- crates/common/src/consent/kv.rs | 57 +- crates/common/src/consent/mod.rs | 27 +- crates/common/src/constants.rs | 8 +- crates/common/src/cookies.rs | 43 +- crates/common/src/edge_cookie.rs | 320 +++++++++ crates/common/src/error.rs | 13 +- crates/common/src/http_util.rs | 6 +- .../src/integrations/google_tag_manager.rs | 8 +- crates/common/src/integrations/gpt.rs | 8 +- crates/common/src/integrations/prebid.rs | 7 +- crates/common/src/integrations/registry.rs | 115 ++- crates/common/src/integrations/testlight.rs | 14 +- crates/common/src/lib.rs | 5 +- crates/common/src/openrtb.rs | 4 +- crates/common/src/proxy.rs | 121 ++-- crates/common/src/publisher.rs | 71 +- crates/common/src/settings.rs | 35 +- crates/common/src/settings_data.rs | 8 +- crates/common/src/synthetic.rs | 354 --------- crates/common/src/test_support.rs | 6 +- .../fastly/tests/kv_store/counter_store.json | 2 +- crates/fastly/tests/kv_store/opid_store.json | 2 +- crates/js/lib/src/integrations/gpt/index.ts | 4 +- docs/.vitepress/config.mts | 4 +- docs/business-use-cases.md | 4 +- docs/epics/revenue-operations-dashboard.md | 4 +- docs/guide/ad-serving.md | 6 +- docs/guide/api-reference.md | 16 +- docs/guide/architecture.md | 8 +- docs/guide/auction-orchestration.md | 15 +- docs/guide/collective-sync.md | 38 +- docs/guide/configuration.md | 92 +-- docs/guide/creative-processing.md | 4 +- docs/guide/edge-cookies.md | 42 ++ docs/guide/error-reference.md | 8 +- docs/guide/first-party-proxy.md | 50 +- docs/guide/gdpr-compliance.md | 2 +- docs/guide/getting-started.md | 4 +- docs/guide/integration-guide.md | 14 +- docs/guide/integrations-overview.md | 8 +- docs/guide/integrations/didomi.md | 2 +- docs/guide/integrations/google_tag_manager.md | 2 +- docs/guide/integrations/gpt.md | 2 +- docs/guide/integrations/lockr.md | 14 +- docs/guide/integrations/nextjs.md | 2 +- docs/guide/integrations/prebid.md | 10 +- docs/guide/onboarding.md | 4 +- docs/guide/synthetic-ids.md | 43 -- docs/guide/testing.md | 51 +- docs/guide/what-is-trusted-server.md | 2 +- docs/index.md | 4 +- docs/roadmap.md | 6 +- trusted-server.toml | 9 +- 65 files changed, 1188 insertions(+), 1270 deletions(-) create mode 100644 crates/common/src/edge_cookie.rs delete mode 100644 crates/common/src/synthetic.rs create mode 100644 docs/guide/edge-cookies.md delete mode 100644 docs/guide/synthetic-ids.md diff --git a/.claude/agents/issue-creator.md b/.claude/agents/issue-creator.md index ed99dd37..f3f1d405 100644 --- a/.claude/agents/issue-creator.md +++ b/.claude/agents/issue-creator.md @@ -79,7 +79,7 @@ Output the issue URL and type. - Use issue **types**, not labels, for categorization. - Every issue should have clear done-when / acceptance criteria. - Use the affected area dropdown values from the templates: - - Core (synthetic IDs, cookies, GDPR) + - Core (Edge Cookies, GDPR) - Integrations (prebid, lockr, permutive, etc.) - HTML processing / JS injection - Ad serving (Equativ) diff --git a/.claude/agents/repo-explorer.md b/.claude/agents/repo-explorer.md index e7fa3114..d1286ced 100644 --- a/.claude/agents/repo-explorer.md +++ b/.claude/agents/repo-explorer.md @@ -11,7 +11,7 @@ implementation details. This is a Rust workspace with three crates: -- `crates/common/` — core library (integrations, HTML processing, synthetic IDs, GDPR) +- `crates/common/` — core library (integrations, HTML processing, Edge Cookies, GDPR) - `crates/fastly/` — Fastly Compute entry point - `crates/js/` — TypeScript/JS build pipeline (per-integration IIFE bundles) diff --git a/CLAUDE.md b/CLAUDE.md index 9ad1845c..26a58929 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -6,7 +6,7 @@ ## Project Overview Rust-based edge computing application targeting **Fastly Compute**. Handles -privacy-preserving synthetic ID generation, ad serving with GDPR compliance, +privacy-preserving Edge Cookie (EC) ID generation, ad serving with GDPR compliance, real-time bidding integration, and publisher-side JavaScript injection. ## Workspace Layout @@ -366,7 +366,7 @@ both runtime behavior and build/tooling changes. | `crates/common/src/tsjs.rs` | Script tag generation with module IDs | | `crates/common/src/html_processor.rs` | Injects `