Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
26d69ce
Record approved attestation phase assignment and closure checks
prk-Jr Oct 26, 2026
4ee86da
Require runtime source resources in release CLI builds
prk-Jr Oct 26, 2026
15a7b40
Propose ordinary Fastly release equality integration
prk-Jr Oct 26, 2026
8874e4f
Record approved Fastly gate activation and compatibility conditions
prk-Jr Oct 26, 2026
1534d46
Port strict release documents and process supervision
prk-Jr Oct 26, 2026
d0d5c37
Specify reviewed ordinary Fastly gate implementation
prk-Jr Oct 26, 2026
d1c1d69
Align integration notes with immutable release facts
prk-Jr Oct 26, 2026
021fdfd
Validate ordinary Fastly build observations
prk-Jr Oct 26, 2026
ad78fc5
Compare complete ordinary Fastly final bytes
prk-Jr Oct 26, 2026
bb05d98
Validate bounded ordinary Fastly transfer archives
prk-Jr Oct 26, 2026
6de495a
Merge Phase 1 updates into Phase 2
prk-Jr Oct 26, 2026
ce7daa5
Bind ordinary uploads to current producing jobs
prk-Jr Oct 26, 2026
4447b68
Port reviewed tool tree content measurement
prk-Jr Oct 26, 2026
ee5598b
Port reviewed final executable inspection
prk-Jr Oct 26, 2026
cb5f16a
Join ordinary archive bytes to release observations
prk-Jr Oct 26, 2026
13f63f0
Port the closed recipe and composition dependency graph
prk-Jr Oct 26, 2026
f0d00dd
Record the closed Phase 2 port and policy boundaries
prk-Jr Oct 26, 2026
c8ea09d
Measure ordinary recipe and private JavaScript input identities
prk-Jr Oct 26, 2026
c0f53a5
Port checked JavaScript preparation alongside ordinary release builds
prk-Jr Oct 26, 2026
f721ddb
Align remaining source identity documentation and comments
prk-Jr Oct 26, 2026
b2cde8b
Record compatible preparation and remaining release integration
prk-Jr Oct 26, 2026
3776d27
Link excluded compatibility notes through their committed source
prk-Jr Oct 26, 2026
cc4d0f3
Record source-pinned ordinary Fastly build observations
prk-Jr Oct 26, 2026
6e9f713
Seal real ordinary equality results in fresh atomic outputs
prk-Jr Oct 26, 2026
d365f56
Expose checked ordinary measurement and comparison commands
prk-Jr Oct 26, 2026
f9e6cce
Acquire ordinary transfer archives through bounded authenticated reads
prk-Jr Oct 26, 2026
4ede699
Keep diagnostic payload assertions independent of optional backtraces
prk-Jr Oct 26, 2026
1e9a209
Record ordinary adapter progress and remaining release wiring
prk-Jr Oct 26, 2026
cc7df93
Compare fresh ordinary Fastly builds before signing
prk-Jr Oct 26, 2026
604d5d8
Propose Fastly path normalization after the real A/B mismatch
prk-Jr Oct 27, 2026
7885bed
Bind Docker image configuration and disable inherited commands
prk-Jr Oct 27, 2026
18df990
Remove owned comparison outputs after sealing failures
prk-Jr Oct 27, 2026
635086d
Close inherited build controls and check direct JS entrypoints
prk-Jr Oct 27, 2026
7beaa54
Normalize compiler paths before ordinary Fastly byte comparison
prk-Jr Oct 27, 2026
169e2a3
Attest and publish the real Fastly rebuild check
prk-Jr Oct 27, 2026
6f34d62
Prove failed comparison skips downstream CI stages
prk-Jr Oct 27, 2026
886cf33
Pin the browser integration test job to ubuntu-24.04
prk-Jr Oct 27, 2026
a7e2056
Verify the pinned Fastly package route without network access
prk-Jr Oct 27, 2026
a8f8bcb
Record bounded raw Fastly package header diagnostics
prk-Jr Oct 27, 2026
7127077
Accept the confirmed Fastly directory header forms
prk-Jr Oct 27, 2026
3ccfe29
Construct duplicate-key fixtures explicitly
prk-Jr Oct 27, 2026
770a425
Merge Phase 1 updates into Phase 2
prk-Jr Oct 27, 2026
2ed1b94
Record verified rehearsals and online SBOM checks
prk-Jr Oct 27, 2026
81020c0
Merge branch 'feature/binary-attestations-phase1' into feature/binary…
prk-Jr Oct 28, 2026
3ae0e19
Record the exact Phase 2 integration commit
prk-Jr Oct 28, 2026
7d55177
Merge commit '054c7b777ce67db34744cb1f4100b14e59c4bc5a' into feature/…
prk-Jr Oct 28, 2026
5349b7c
Record the newer-main Phase 2 integration
prk-Jr Oct 28, 2026
08e1c33
Merge the Phase 1 spec review log into Phase 2
prk-Jr Oct 28, 2026
8a797db
Merge the updated Phase 1 branch into Phase 2
prk-Jr Oct 28, 2026
f2b2fa8
Retain structured ordinary comparison failure diagnostics
prk-Jr Oct 28, 2026
5fa3843
Record Phase 2 spec reviews and reconcile readiness evidence
prk-Jr Oct 28, 2026
fb48433
Record the exact-source Phase 2 rehearsal and completed checks
prk-Jr Oct 28, 2026
927109f
Observe process groups without signalling after reaping
prk-Jr Oct 28, 2026
36454c5
Record the runtime verification and current phase tracking
prk-Jr Oct 28, 2026
5163241
Record the remaining rehearsal gate and runner failures
prk-Jr Oct 28, 2026
0f89eae
Record the successful Phase 2 release rehearsal
prk-Jr Oct 29, 2026
121ad4e
Merge the updated Phase 1 branch into Phase 2
prk-Jr Nov 3, 2026
28d3552
Address self-review findings on the Phase 2 release gate
prk-Jr Nov 3, 2026
eb61157
Potential fix for pull request finding 'Unused variable, import, func…
prk-Jr Nov 3, 2026
3ddcd19
Merge the narrowed Phase 1 into Phase 2
prk-Jr Nov 5, 2026
9eeccbb
Restore the Cargo metadata file the ordinary capture reads
prk-Jr Nov 5, 2026
c8c1efd
Record rehearsal .27 of the narrowed Phase 2
prk-Jr Nov 5, 2026
4455722
Merge the Phase 1 branch check into Phase 2
prk-Jr Nov 5, 2026
1858b6d
Address Phase 2 review: drop inert canaries and unrelated churn
prk-Jr Nov 5, 2026
1860b99
Document Phase 2 review follow-ups
prk-Jr Nov 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 7 additions & 1 deletion .github/workflows/format.yml
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,12 @@ jobs:
- name: Run host-target CLI clippy
run: cargo clippy --package trusted-server-cli --target x86_64-unknown-linux-gnu --all-targets --all-features -- -D warnings

- name: Run host-target release producer clippy
run: cargo clippy --package trusted-server-release --target x86_64-unknown-linux-gnu --all-targets --all-features --locked -- -D warnings

- name: Lint native JS release build fixtures
run: cargo clippy --package trusted-server-js --target x86_64-unknown-linux-gnu --all-targets --all-features --locked -- -D warnings

# The codegen crate is a workspace member but is not a default member and
# is not covered by any adapter-scoped alias, so lint it explicitly.
- name: Run host-target OpenRTB codegen clippy
Expand Down Expand Up @@ -247,7 +253,7 @@ jobs:
node-version: ${{ steps.node-version.outputs.node-version }}

- name: Run shellcheck
run: shellcheck scripts/release/phase1-build.sh
run: shellcheck scripts/release/phase1-build.sh scripts/release/bootstrap.sh scripts/release/build.sh scripts/release/build-js.sh

- name: Test release producer scripts
run: node --test scripts/release/phase1.test.mjs
401 changes: 389 additions & 12 deletions .github/workflows/release-build.yml

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ jobs:
uses: ./.github/workflows/release-build.yml
permissions:
contents: read
actions: read
id-token: write
attestations: write
release:
Expand Down
22 changes: 22 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,23 @@ jobs:
- name: Run host-target CLI tests
run: ./scripts/test-cli.sh

- name: Run release producer primitive and process tests
run: |
set -euo pipefail
cargo test --package trusted-server-release --target x86_64-unknown-linux-gnu --locked --test commands -- --list > "$RUNNER_TEMP/ordinary-command-tests.txt"
grep -Fx 'ordinary_comparison_failure_prevents_signing_and_publication_sentinels: test' "$RUNNER_TEMP/ordinary-command-tests.txt"
cargo test --package trusted-server-release --target x86_64-unknown-linux-gnu --locked
cargo test --package trusted-server-release --target x86_64-unknown-linux-gnu --locked --test commands ordinary_comparison_failure_prevents_signing_and_publication_sentinels -- --exact > "$RUNNER_TEMP/ordinary-negative-result.txt"
cat "$RUNNER_TEMP/ordinary-negative-result.txt"
grep -E '^test result: ok\. 1 passed; 0 failed; 0 ignored;' "$RUNNER_TEMP/ordinary-negative-result.txt"

- name: Run checked and ordinary JS release build fixtures
shell: bash
run: |
cargo test --package trusted-server-js --target x86_64-unknown-linux-gnu --locked --test release_prebuilt -- --list > "$RUNNER_TEMP/js-release-tests.txt"
grep -Fx 'ordinary_release_without_prebuilt_builds_private_bundles: test' "$RUNNER_TEMP/js-release-tests.txt"
cargo test --package trusted-server-js --target x86_64-unknown-linux-gnu --locked --test release_prebuilt

# The codegen crate is not a default member and no adapter alias builds it,
# so its tests only run if invoked explicitly on the host target.
- name: Run host-target OpenRTB codegen tests
Expand Down Expand Up @@ -351,6 +368,11 @@ jobs:
run: |
cargo clippy --manifest-path crates/trusted-server-cli/Cargo.toml --target "$(rustc -vV | sed -n 's/host: //p')" --all-targets -- -D warnings

- name: Run producer process supervision on macOS
if: runner.os == 'macOS'
run: |
cargo test --package trusted-server-release --target "$(rustc -vV | sed -n 's/host: //p')" --locked --bin trusted-server-release process::

- name: Set up Chrome for browser fixture tests
if: runner.os == 'macOS'
id: setup-chrome
Expand Down
4 changes: 3 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -377,7 +377,9 @@ Every PR must pass:
13. CI Node pin guard: `node --test scripts/check-ci-node-pin.test.mjs && node scripts/check-ci-node-pin.mjs` with the `.tool-versions` Node (every CI job that compiles Rust sets up the `.tool-versions` Node before its first cargo step)
14. Fastly absolute-deadline network fixtures under Viceroy (the harness builds the adapter test binary itself): `node crates/trusted-server-adapter-fastly/tests/deadline-origin.mjs "$(command -v viceroy)"`
15. Worker auction-deadline runtime fixtures (`worker-auction-deadlines.yml`): build and lint the runtime fixture, then run it under the local runtime. For Cloudflare, `cargo build --locked -p trusted-server-adapter-cloudflare --example deadline-runtime --target wasm32-unknown-unknown --features cloudflare` and `node scripts/test-worker-auction-deadlines.mjs cloudflare --runtime "$(command -v wrangler)"` (requires wrangler and the `Cargo.lock` wasm-bindgen CLI). For Spin, `cargo build --locked -p trusted-server-adapter-spin --example deadline-runtime --target wasm32-wasip1 --features spin` and `node scripts/test-worker-auction-deadlines.mjs spin --runtime "$(command -v spin)"`. CI lints each fixture with the same `cargo clippy` arguments plus `-- -D warnings`
16. Release producer checks: `node --test scripts/release/phase1.test.mjs && shellcheck scripts/release/phase1-build.sh`
16. Release producer helpers: `node --test scripts/release/phase1.test.mjs && shellcheck scripts/release/phase1-build.sh scripts/release/bootstrap.sh scripts/release/build.sh scripts/release/build-js.sh`
17. Native release producer tests and lint: `cargo test --package trusted-server-release --target <host-triple> --locked` and `cargo clippy --package trusted-server-release --target <host-triple> --all-targets --all-features --locked -- -D warnings` (CI uses `x86_64-unknown-linux-gnu`).
18. Native checked/ordinary JS release fixtures: `cargo test --package trusted-server-js --target <host-triple> --locked --test release_prebuilt` and `cargo clippy --package trusted-server-js --target <host-triple> --all-targets --all-features --locked -- -D warnings` (CI uses `x86_64-unknown-linux-gnu`).

CI also runs these HTML EOF checks. Run them locally only when changing EOF
finalization, publisher or HTML-processor code:
Expand Down
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Added

- Add an ordinary Fastly release byte-equality gate and a real provenance-attested `trusted-server-fastly.wasm.rebuild-check.json`. Merging Phase 2 activates a second fresh Fastly build plus comparison on the next release tag; mismatch prevents signing and publication. The ordinary profile remains unqualified, native reproduction is not a release gate, and the four binary names and signer identity stay unchanged.
- Add Phase 1 attested release binaries: the Fastly wasm and the `ts` CLI for Linux x86-64 and macOS (ARM64 and x86-64), with SPDX 2.3 inventories, provenance/SBOM bundles, immutable verification and a GNU glibc 2.34 startup check. Reproducibility, other adapters and the custom verifier remain later work; production publication requires maintainer settings.

### Changed

- **Breaking:** Cargo builds of `trusted-server-js` now fail whenever `TSJS_SKIP_BUILD` is set to any value, including empty or `0`; previously only `TSJS_SKIP_BUILD=1` was rejected. Remove it from shell profiles and `.env` files, and use `TSJS_PREBUILT_DIR` to embed prebuilt bundles instead.
- Attested release binaries report `x-ts-version` as the full 40-character source commit; deploy-pipeline builds keep the tag, branch or short-commit value described below.
- **Breaking:** `ts --version` now prints `ts package=<version> source=<commit> target=<triple> variant=default` instead of `ts <version>`. Update scripts that parse the old output.
- The Lockr browser module no longer polls for private SDK state or mutates its API host, removing the "Lockr SDK not detected" timeout warning (#1247). Root-relative Lockr XHR API requests and rewritten SDK URLs now stay on the page origin even with an external `<base href>`. Custom or unreplaced legacy SDKs that relied on the removed host rewrite must route their own API calls through `/integrations/lockr/api`; `rewrite_sdk = false` leaves static SDK tags unchanged but does not disable dynamic interception. See the [Lockr migration guide](docs/guide/integrations/lockr.md#migration-from-the-sdk-host-shim).
Expand Down
Loading
Loading