Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
dbc1a2a
Add the integration provider seam design spec
jwrosewell Aug 27, 2026
12ad16c
Revise the integration seam spec to carry identity, geo and device as…
jwrosewell Aug 28, 2026
216596a
Record what implementing the integration seam found
jwrosewell Aug 28, 2026
62a01b6
Move the provider series design specs ahead of their implementation
jwrosewell Aug 30, 2026
4ee2ab1
Carve evidence interfaces out of the trait minimalism rule
jwrosewell Aug 30, 2026
a8bf675
Say create rather than mint throughout the provider specs
jwrosewell Aug 30, 2026
26f6954
Remove the reserved 51Degrees provider code row and apply spec house-…
jwrosewell Aug 31, 2026
115a88c
Finish the clause-punctuation sweep on the permission model spec
jwrosewell Aug 31, 2026
580081a
Finish the clause-punctuation sweep on the response-header-hook spec
jwrosewell Aug 31, 2026
47ef741
Restatus the unmerged provider specs and correct the seam spec counts
jwrosewell Aug 31, 2026
369dd23
Answer the PR #1084 review findings in the series specs
jwrosewell Sep 1, 2026
6718cbf
Qualify the completeness claim against the browser-side APS coupling
jwrosewell Sep 1, 2026
5386424
Format the provider specs for the docs Prettier gate and correct two …
jwrosewell Sep 1, 2026
fa1df47
Cite RFC 6454 for the resolve endpoint's origin comparison
jwrosewell Sep 1, 2026
48e6ade
Record the chosen page carrier for resolved permissions
jwrosewell Sep 1, 2026
60c9214
Replace an en dash in a section range with plain words
jwrosewell Sep 1, 2026
bb4f0f7
Align the provider specs with how permissions reach filters, provider…
jwrosewell Sep 1, 2026
760e49a
Record the permission rules tree in the design specs
jwrosewell Sep 1, 2026
52ab79f
Match the spec's jurisdiction values to the policy parser
jwrosewell Sep 1, 2026
5b27ceb
Record per-node jurisdiction and the retirement of the consent lists
jwrosewell Sep 1, 2026
742bb3f
Record the unknown jurisdiction on a failed geo lookup
jwrosewell Sep 1, 2026
fb7cf3e
Say precisely that geo is a provider and give migrated vendor crates …
jwrosewell Sep 1, 2026
687ea90
Record the transport evidence types as EdgeZero migration candidates
jwrosewell Sep 2, 2026
3f9bf12
Point the specs at the config/permissions sample location
jwrosewell Sep 2, 2026
c9dfe75
Restate signal precedence as the configured order
jwrosewell Sep 14, 2026
d6807ec
Say what the shipped opt-out revoke set lists
jwrosewell Sep 14, 2026
ed7c121
Follow the permissions sample rename in the specs
jwrosewell Sep 14, 2026
46dfab7
Follow main's compiled auction plan in the seam spec
jwrosewell Sep 15, 2026
4d0f3bf
Follow the one provider configuration convention in the series specs
jwrosewell Sep 15, 2026
ae60466
Join two decision rows in the seam spec with words rather than marks
jwrosewell Sep 15, 2026
3aea007
Merge main into the integration seam spec
jwrosewell Sep 25, 2026
829d804
Merge remote-tracking branch 'upstream/main' into refresh/split-6
jwrosewell Oct 6, 2026
6b9fd1a
Add the module name, build-time discovery and page changes as middleware
jwrosewell Oct 6, 2026
fbcef74
The specs say module where an operator selects a capability
jwrosewell Oct 6, 2026
c973181
The design names a module by its crate folder and selects page integr…
jwrosewell Oct 7, 2026
52d5f12
The specs select the auction's tables with modules and module
jwrosewell Oct 7, 2026
a098a8e
The seam design reads the type sections where section 3 read [integra…
jwrosewell Oct 7, 2026
8936d94
The specs name an implementation by its module path
jwrosewell Oct 7, 2026
3f6dc48
The seam design has a registration name the modules it supplies
jwrosewell Oct 7, 2026
367bc9e
The seam design records that a vendor crate cannot declare a secret s…
jwrosewell Oct 7, 2026
ce3ca0e
The seam design says a deployment hands its builders to the settings …
jwrosewell Oct 7, 2026
27c2913
The seam design records that a device module is asked on Fastly alone
jwrosewell Oct 7, 2026
de6c94d
The seam design says the probe supplies a demand source and an ad server
jwrosewell Oct 7, 2026
d2702cf
The seam design says the Fastly adapter takes a vendor crate through …
jwrosewell Oct 7, 2026
ac38955
Merge upstream main 182fdf4 into split/6-integration-seam
jwrosewell Oct 8, 2026
e573d10
The seam design says where the modules went and what moving them needed
jwrosewell Oct 8, 2026
ce848d6
One design document for each of the stack's pull requests
jwrosewell Oct 12, 2026
e85c99c
Say what placing a middleware means, and say it in plain words for ro…
jwrosewell Oct 12, 2026
a84de81
The cookie constant came from the stack's own earlier pull request, n…
jwrosewell Oct 12, 2026
9b4ed05
The cookie constant corrects a prior pull request of the stack
jwrosewell Oct 12, 2026
fe8edca
The device signals design says the score is written and read by nothi…
jwrosewell Oct 12, 2026
3c43876
Merge main into split/6-integration-seam
Jamesr51d Oct 13, 2026
13db8ce
The request addressing, object storage origin and origin redirect des…
jwrosewell Oct 14, 2026
02ed3bb
Allow the hosts the stack's modules name in the URL host linter
jwrosewell Oct 14, 2026
5ee9e1a
Format the linter spec as the docs check expects
jwrosewell Oct 14, 2026
dfdf88c
The source modules design page
jwrosewell Oct 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions crates/trusted-server-cli/src/commands/dev/lint/domains.rs
Original file line number Diff line number Diff line change
Expand Up @@ -46,19 +46,25 @@ pub const EXACT_HOSTS: &[&str] = &[
"sdk.privacy-center.org",
// sourcepoint
"cdn.privacy-mgmt.com",
"cdn-eu.privacy-mgmt.com",
// lockr
"aim.loc.kr",
"identity.loc.kr",
// datadome
"js.datadome.co",
"api-js.datadome.co",
"api-fastly.datadome.co",
// aps / Amazon
"aax.amazon-adsystem.com",
"aax-events.amazon-adsystem.com",
"client.aps.amazon-adsystem.com",
"web.ads.aps.amazon-adsystem.com",
// permutive
"api.permutive.com",
"secure-signals.permutive.app",
"cdn.permutive.com",
"events.permutive.app",
"sync.permutive.com",
// Google Tag Manager / Analytics
"www.googletagmanager.com",
"www.google-analytics.com",
Expand All @@ -70,6 +76,13 @@ pub const EXACT_HOSTS: &[&str] = &[
"cdn.prebid.org",
// Fastly platform
"api.fastly.com",
// inmobi: the Choice consent prompt script and its CDN
"cmp.inmobi.com",
"cdn.inmobi.com",
// ad-tag.google: the AdSense loader
"pagead2.googlesyndication.com",
// permission-signal.mtm: the Model Terms document
"m4ow.uk",
];

/// Hosts where exact match AND any subdomain (`*.host`) is allowed.
Expand Down Expand Up @@ -116,6 +129,8 @@ pub const REFERENCE_HOSTS: &[&str] = &[
"rslstandard.org",
// Specs (other)
"webassembly.org",
// IETF RFCs
"www.rfc-editor.org",
// Fastly docs
"www.fastly.com",
"developer.fastly.com",
Expand All @@ -125,6 +140,8 @@ pub const REFERENCE_HOSTS: &[&str] = &[
// Vendor docs
"docs.datadome.co",
"docs.prebid.org",
"support.google.com",
"developers.google.com",
// Tooling docs
"vitepress.dev",
"playwright.dev",
Expand Down Expand Up @@ -1555,6 +1572,15 @@ fn path_is_scanned(rel_path: &str) -> bool {
{
return false;
}
// A module crate's own fixtures, the page its middleware is tested on
// and the page it records: exactly crates/<type>/<vendor>/src/fixtures/.
if components.len() > 5
&& components[0] == "crates"
&& components[3] == "src"
&& components[4] == "fixtures"
{
return false;
}

let basename = components.last().copied().unwrap_or("");
// Excluded lockfiles (exact basename). Name comparisons below are
Expand Down Expand Up @@ -2588,6 +2614,9 @@ mod path_is_scanned_tests {
"crates/integration-tests/fixtures/frameworks/nextjs/app/page.tsx",
"crates/integration-tests/fixtures/frameworks/nextjs/Dockerfile",
"crates/integration-tests/fixtures/frameworks/wordpress/Dockerfile",
"crates/cmp/inmobi/src/lib.rs",
"crates/cmp/inmobi/fixtures/page.html",
"crates/trusted-server-cli/src/fixtures/page.html",
"README.md",
"CHANGELOG.md",
"CONTRIBUTING.md",
Expand All @@ -2607,6 +2636,8 @@ mod path_is_scanned_tests {
for p in [
"crates/trusted-server-core/src/integrations/nextjs/fixtures/inlined-data-escaped.html",
"crates/trusted-server-core/src/integrations/google_tag_manager/fixtures/captured.html",
"crates/cmp/inmobi/src/fixtures/page-change.input.html",
"crates/testing/testlight/src/fixtures/page-change.settings.toml",
"node_modules/foo.js",
".worktrees/x/y.rs",
".claude/worktrees/x/y.rs",
Expand Down
41 changes: 27 additions & 14 deletions docs/superpowers/specs/2026-05-18-check-domains-design.md
Original file line number Diff line number Diff line change
Expand Up @@ -284,19 +284,22 @@ a legitimate documentation source we link to repeatedly?"
Integration proxies and loopback. Subdomains are **not** allowed
(e.g., `anything.api.privacy-center.org` is disallowed).

| Category | Hosts |
| ---------------------------------------------------- | ------------------------------------------------------------------------------ |
| Loopback | `127.0.0.1`, `::1`, `localhost` |
| Integration proxies (didomi) | `api.privacy-center.org`, `sdk.privacy-center.org` |
| Integration proxies (sourcepoint) | `cdn.privacy-mgmt.com` |
| Integration proxies (lockr) | `aim.loc.kr`, `identity.loc.kr` |
| Integration proxies (datadome) | `js.datadome.co`, `api-js.datadome.co` |
| Integration proxies (aps / Amazon) | `aax.amazon-adsystem.com`, `aax-events.amazon-adsystem.com` |
| Integration proxies (permutive) | `api.permutive.com`, `secure-signals.permutive.app`, `cdn.permutive.com` |
| Integration proxies (Google Tag Manager / Analytics) | `www.googletagmanager.com`, `www.google-analytics.com`, `analytics.google.com` |
| Integration proxies (adserver mock) | `securepubads.g.doubleclick.net`, `origin-mocktioneer.cdintel.com` |
| Integration proxies (Prebid CDN) | `cdn.prebid.org` |
| Integration proxies (Fastly platform) | `api.fastly.com` |
| Category | Hosts |
| ---------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| Loopback | `127.0.0.1`, `::1`, `localhost` |
| Integration proxies (didomi) | `api.privacy-center.org`, `sdk.privacy-center.org` |
| Integration proxies (sourcepoint) | `cdn.privacy-mgmt.com`, `cdn-eu.privacy-mgmt.com` |
| Integration proxies (lockr) | `aim.loc.kr`, `identity.loc.kr` |
| Integration proxies (datadome) | `js.datadome.co`, `api-js.datadome.co`, `api-fastly.datadome.co` |
| Integration proxies (aps / Amazon) | `aax.amazon-adsystem.com`, `aax-events.amazon-adsystem.com`, `client.aps.amazon-adsystem.com`, `web.ads.aps.amazon-adsystem.com` |
| Integration proxies (permutive) | `api.permutive.com`, `secure-signals.permutive.app`, `cdn.permutive.com`, `events.permutive.app`, `sync.permutive.com` |
| Integration proxies (Google Tag Manager / Analytics) | `www.googletagmanager.com`, `www.google-analytics.com`, `analytics.google.com` |
| Integration proxies (adserver mock) | `securepubads.g.doubleclick.net`, `origin-mocktioneer.cdintel.com` |
| Integration proxies (Prebid CDN) | `cdn.prebid.org` |
| Integration proxies (Fastly platform) | `api.fastly.com` |
| Integration proxies (inmobi) | `cmp.inmobi.com`, `cdn.inmobi.com` |
| Integration proxies (Google ad tag) | `pagead2.googlesyndication.com` |
| Integration proxies (Model Terms signal) | `m4ow.uk` |

### Subdomain-permitting hosts (`SUBDOMAIN_HOSTS`)

Expand Down Expand Up @@ -335,9 +338,10 @@ suppress per-line.
| IAB Tech Lab | `iab.com`, `iabtechlab.com`, `iabtechlab.github.io`, `iabeurope.github.io` |
| Specs (supply chain) | `in-toto.io`, `rslstandard.org` |
| Specs (other) | `webassembly.org` |
| IETF RFCs | `www.rfc-editor.org` |
| Fastly docs | `www.fastly.com`, `developer.fastly.com`, `manage.fastly.com` |
| Cloudflare docs | `developers.cloudflare.com` |
| Vendor docs | `docs.datadome.co`, `docs.prebid.org` |
| Vendor docs | `docs.datadome.co`, `docs.prebid.org`, `support.google.com`, `developers.google.com` |
| Tooling docs | `vitepress.dev`, `playwright.dev`, `testcontainers.com`, `grafana.com`, `docsearch.algolia.com` |

One-off references not on this list (e.g., a single arxiv.org link in
Expand Down Expand Up @@ -562,6 +566,15 @@ fenced code blocks.
`crates/integration-tests/fixtures/frameworks/nextjs/app/*.tsx`,
which we deliberately scan).

- **A module crate's own fixtures**, `crates/<type>/<vendor>/src/fixtures/**`.
A module in a crate of its own under `crates/<type>/<vendor>/` (the layout
the seam design gives) keeps the page its middleware is tested on, and the
page it records, under `src/fixtures/`. Those pages carry the vendor's own
script hosts and other vendors' tags the test proves untouched, as the
publisher captures above do. The rule is the two-level crate layout
exactly, so `crates/<crate>/src/fixtures/` and
`crates/integration-tests/fixtures/...` stay scanned.

**Source files under `crates/integration-tests/fixtures/frameworks/*` —
including `.tsx`, `.ts`, `.json`, `next.config.mjs`, `Dockerfile` —
ARE scanned.** Only the publisher-capture path above is excluded.
Expand Down
Loading
Loading