Skip to content

Commit 69e7d57

Browse files
committed
Merge main into client resolve through split/3
Brings upd/split/3-permissions at 3c9f4b0, which carries main at 066ea3c through split/1, split/2 and split/3, into split/4-client-resolve. Two files conflicted. Each resolution keeps both sides' changes. ec/finalize.rs takes main's imports for identity-graph writes and EID collection, and keeps this branch's expire_ec_resolved_marker beside them. This branch's two resolved-marker tests from ee07418 sit beside main's orphan-recovery tests from #885, and now pass main's mutable context to ec_finalize_response. docs/guide/api-reference.md keeps this branch's section for the POST /_ts/api/v1/ec/resolve endpoint and drops the POST /third-party/ad section, which main's #1016 removed.
2 parents 8c36bba + 3c9f4b0 commit 69e7d57

150 files changed

Lines changed: 41414 additions & 7552 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.claude/agents/code-simplifier.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ Find overly complex code and suggest simpler alternatives.
1818
## Rules
1919

2020
- Read the code before suggesting changes.
21-
- Respect the project's conventions (see `CLAUDE.md`).
21+
- Respect the project's conventions (see `AGENTS.md`).
2222
- Ensure suggestions maintain correctness — simplification must not break behavior.
2323
- Consider WASM constraints when suggesting alternatives.
2424

.claude/agents/pr-reviewer.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,7 @@ if [ -n "$NUMBER" ]; then
411411
# to distinguish pending/no-output from command failures.
412412
#
413413
# Query the *full* check set — not `--required`. Branch protection's
414-
# required list in this repo omits gates that CLAUDE.md still treats as PR
414+
# required list in this repo omits gates that AGENTS.md still treats as PR
415415
# gates (e.g. `Analyze (rust)`, `vitest`, CodeQL, browser/integration
416416
# tests), so a `--required`-only query can report clean CI while one of
417417
# those failed and hide a real regression.
@@ -460,7 +460,7 @@ Classify CI by `bucket`, not by the `gh pr checks` exit code, over the
460460
in step 8a's "Cross-cutting / body-level findings" section. This applies to
461461
**any** failed check, not just required ones — a failed non-required gate
462462
(`vitest`, `Analyze (rust)`, integration tests, CodeQL) is still a real
463-
regression CLAUDE.md treats as a PR gate. Note in the finding whether the
463+
regression AGENTS.md treats as a PR gate. Note in the finding whether the
464464
check name appears in `$required_names` (merge-blocking under branch
465465
protection) or not (a failing gate branch protection doesn't enforce). That
466466
finding feeds the verdict rules below, so a PR with any failed CI cannot fall
@@ -501,7 +501,7 @@ For each changed file, evaluate:
501501
- No Tokio or runtime-specific deps in `crates/trusted-server-core`
502502
- Fastly-specific APIs only in `crates/trusted-server-adapter-fastly`
503503

504-
#### Convention compliance (from CLAUDE.md)
504+
#### Convention compliance (from AGENTS.md)
505505

506506
- `expect("should ...")` instead of `unwrap()` in production code
507507
- `error-stack` (`Report<E>`) with `derive_more::Display` for errors (not thiserror/anyhow)
@@ -921,7 +921,7 @@ pure-renaming suggestions don't need that disclaimer.
921921

922922
The targeted preflight above narrows clippy to the touched adapter. That's
923923
deliberately cheap so verification stays fast for one-line edits. But
924-
CLAUDE.md's required CI gates include the full target-matched clippy alias
924+
AGENTS.md's required CI gates include the full target-matched clippy alias
925925
chain, all four adapter test aliases, and the cross-adapter parity suite, and
926926
the targeted run won't catch issues that appear only under another adapter's
927927
target or feature set, in `--tests`, or in a downstream crate. Use the full
@@ -946,7 +946,7 @@ gate when **any** of these is true:
946946
```
947947

948948
**JS/TS suggestions** (run from the package root in a subshell so the
949-
worktree's cwd is unaffected). CLAUDE.md's JS-side build pipeline also runs
949+
worktree's cwd is unaffected). AGENTS.md's JS-side build pipeline also runs
950950
`node build-all.mjs` to re-bundle the per-integration IIFEs; skipping it
951951
means a suggestion that edits `src/integrations/*/index.ts` could compile
952952
under `vitest` but break the runtime bundle the Rust crate `include_str!`s

.claude/commands/review-changes.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Review all staged and unstaged changes in the working tree.
33
1. Run `git diff` and `git diff --cached` to see all changes.
44
2. Review each changed file for:
55
- Correctness and logic errors
6-
- Style violations (see CLAUDE.md conventions)
6+
- Style violations (see AGENTS.md conventions)
77
- Missing error handling
88
- Security concerns (hardcoded secrets, injection risks)
99
- Missing or incorrect tests

.env.dev

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
1+
# Non-secret development overlays used while generating the Axum config blob.
2+
# Sourcing this file alone does not configure the Axum server: also export the
3+
# blob and referenced secret-store values as shown in docs/guide/getting-started.md.
4+
15
# [publisher]
6+
TRUSTED_SERVER__PUBLISHER__DOMAIN=localhost
7+
TRUSTED_SERVER__PUBLISHER__COOKIE_DOMAIN=localhost
28
TRUSTED_SERVER__PUBLISHER__ORIGIN_URL=http://localhost:9090
39

410
# [synthetic]

.env.example

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,27 @@
1-
# Trusted Server Environment Variables
2-
# Copy this file to .env.dev, .env.staging, or .env.production and fill in values
3-
# See docs/guide/configuration.md for details
1+
# Trusted Server development environment variables
2+
# Copy this file to .env.dev, .env.staging, or .env.production and fill in
3+
# non-secret values. App-config secrets are key names in the pushed blob and
4+
# their values belong in the platform secret store; see the configuration guide.
5+
# For Axum runtime loading, export the config blob as:
6+
# TRUSTED_SERVER_CONFIG_TRUSTED_SERVER_CONFIG_TRUSTED_SERVER_CONFIG=<blob-envelope-json>
7+
# and export one secret per key name as:
8+
# TRUSTED_SERVER_SECRET_TRUSTED_SERVER_SECRETS_<KEY_NAME>=<secret-value>
9+
# The commented examples below are CLI overlays for ordinary fields only.
10+
# Fastly example: map logical app-config secrets to physical `ts_secrets`.
11+
# EDGEZERO__STORES__SECRETS__TRUSTED_SERVER_SECRETS__NAME=ts_secrets
412

513
# =============================================================================
614
# Publisher Settings
715
# =============================================================================
816
TRUSTED_SERVER__PUBLISHER__DOMAIN=publisher.com
917
TRUSTED_SERVER__PUBLISHER__COOKIE_DOMAIN=.publisher.com
1018
TRUSTED_SERVER__PUBLISHER__ORIGIN_URL=https://origin.publisher.com
11-
TRUSTED_SERVER__PUBLISHER__PROXY_SECRET=<your-proxy-secret>
1219

1320
# =============================================================================
1421
# Synthetic ID Settings
1522
# =============================================================================
1623
TRUSTED_SERVER__SYNTHETIC__COUNTER_STORE=counter_store
1724
TRUSTED_SERVER__SYNTHETIC__OPID_STORE=opid_store
18-
TRUSTED_SERVER__SYNTHETIC__SECRET_KEY=<your-synthetic-secret>
1925
# Template variables: client_ip, user_agent, first_party_id, auth_user_id, publisher_domain, accept_language
2026
TRUSTED_SERVER__SYNTHETIC__TEMPLATE={{ client_ip }}:{{ user_agent }}:{{ first_party_id }}
2127

.github/pull_request_template.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ Closes #
3535

3636
## Checklist
3737

38-
- [ ] Changes follow [CLAUDE.md](/CLAUDE.md) conventions
38+
- [ ] Changes follow [AGENTS.md](/AGENTS.md) conventions
3939
- [ ] No `unwrap()` in production code — use `expect("should ...")`
4040
- [ ] Uses `tracing` macros (not `println!`)
4141
- [ ] New code has tests

.github/workflows/format.yml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,36 @@ permissions:
99
contents: read
1010

1111
jobs:
12+
check-claude-md-symlink:
13+
name: CLAUDE.md symlink guard
14+
runs-on: ubuntu-latest
15+
steps:
16+
- uses: actions/checkout@v4
17+
18+
# AGENTS.md is the source of truth and CLAUDE.md must stay a symlink to
19+
# it. A checkout with core.symlinks=false (the Git for Windows default)
20+
# materializes the symlink as a plain text file containing "AGENTS.md";
21+
# if that file is committed, agents silently load it as the entire
22+
# project instructions. Guard the tree entry so the broken form cannot
23+
# land (see issue #1091).
24+
- name: Verify CLAUDE.md is a symlink to AGENTS.md
25+
shell: bash
26+
run: |
27+
mode=$(git ls-tree HEAD CLAUDE.md | awk '{print $1}')
28+
if [ "$mode" != "120000" ]; then
29+
echo "::error file=CLAUDE.md::CLAUDE.md must be a symlink to AGENTS.md (tree mode 120000), found mode ${mode:-<missing>}. This usually means a checkout with core.symlinks=false committed the materialized text file; re-add the symlink with core.symlinks=true."
30+
exit 1
31+
fi
32+
target=$(git cat-file blob HEAD:CLAUDE.md)
33+
if [ "$target" != "AGENTS.md" ]; then
34+
echo "::error file=CLAUDE.md::CLAUDE.md must point at AGENTS.md, found '${target}'."
35+
exit 1
36+
fi
37+
if [ ! -f AGENTS.md ]; then
38+
echo "::error file=AGENTS.md::CLAUDE.md points at AGENTS.md, but AGENTS.md does not exist."
39+
exit 1
40+
fi
41+
1242
format-rust:
1343
name: cargo fmt
1444
runs-on: ubuntu-latest

.github/workflows/test.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ jobs:
1212
test-rust:
1313
name: cargo test
1414
runs-on: ubuntu-latest
15+
timeout-minutes: 45
1516
steps:
1617
- uses: actions/checkout@v4
1718

0 commit comments

Comments
 (0)