Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
20 changes: 10 additions & 10 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -95,17 +95,17 @@ jobs:
# Owns the rev derivation, the rev-keyed tools cache, the
# install, and the pins gate; `just conformance`'s _ct-tools
# recognizes the stamped install and does not repeat it.
uses: polymorph-components/polymorph-test/actions/setup@b4444a25a22106ad4128549bdc9e579552e62210
uses: polymorph-components/polymorph-test/actions/setup@38bfedf2b989522b82ddce5320fc1557a2f61461
with:
js-locks: |
conformance/driver-ct/deltic/package-lock.json
- name: Set up Node 24 (the deltic-browser page driver)
conformance/driver-ct/polyengine/package-lock.json
- name: Set up Node 24 (the polyengine-browser page driver)
uses: actions/setup-node@v4
with:
node-version: 24
cache: npm
cache-dependency-path: conformance/driver-ct/deltic/package-lock.json
- name: Set up Deno (the deltic-deno legs; stock, no flags)
cache-dependency-path: conformance/driver-ct/polyengine/package-lock.json
- name: Set up Deno (the polyengine-deno legs; stock, no flags)
uses: denoland/setup-deno@v2
with:
deno-version: "2.9.5"
Expand All @@ -122,17 +122,17 @@ jobs:
- run: just gha::conformance-checks
- name: Publish the conformance matrix
if: always() && hashFiles('conformance/driver-ct/results/*.jsonl') != ''
uses: polymorph-components/polymorph-test/actions/aggregate@b4444a25a22106ad4128549bdc9e579552e62210
uses: polymorph-components/polymorph-test/actions/aggregate@38bfedf2b989522b82ddce5320fc1557a2f61461
with:
lock: conformance/guest-ct/tests.lock
manifest: conformance/driver-ct/targets.toml
results: |
composed=conformance/driver-ct/results/composed.jsonl
composed-delegated=conformance/driver-ct/results/composed-delegated.jsonl
deltic-deno=conformance/driver-ct/results/deltic-deno.jsonl
deltic-deno-delegated=conformance/driver-ct/results/deltic-deno-delegated.jsonl
deltic-browser=conformance/driver-ct/results/deltic-browser.jsonl
deltic-browser-delegated=conformance/driver-ct/results/deltic-browser-delegated.jsonl
polyengine-deno=conformance/driver-ct/results/polyengine-deno.jsonl
polyengine-deno-delegated=conformance/driver-ct/results/polyengine-deno-delegated.jsonl
polyengine-browser=conformance/driver-ct/results/polyengine-browser.jsonl
polyengine-browser-delegated=conformance/driver-ct/results/polyengine-browser-delegated.jsonl
summary-title: Conformance matrix
cli: target/ct-tools/bin/component-test
# The action fails on a uses: ref that skews from this pin.
Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
/conformance/driver-ct/results/
/conformance/driver-ct/jco/node_modules/
/conformance/driver-ct/jco/generated/
conformance/driver-ct/deltic/node_modules/
conformance/driver-ct/polyengine/node_modules/
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ design record.
| --- | --- |
| `just check` | fmt, clippy (all features), workspace tests (RFC 9001 vectors, profile/provider pinning, class-D key rejection), wasm build |
| `just ci` | every gating CI job's body, exactly as CI runs it — each CI job runs one gha:: job recipe (.github/justfile). The timing lab is schedule-only and excluded |
| `just conformance` | the cross-implementation conformance suite (see `conformance/README.md`): the shared guest suite composed with each delivery — the `tls` world's in-guest Ed25519 posture and the `tls-delegated` world with the fixture signer — run under the pinned component-test runner, runtime-linked under deltic on stock Deno (the deltic-deno targets — no transpile, no engine flag; JSR-pinned in `conformance/driver-ct/deltic/`), and runtime-linked in headless Chromium (the deltic-browser targets; CI or CONFORMANCE_BROWSER=1), with import-satisfaction and signer-reachability gates, validated against the committed case inventory (`tests.lock`) and target manifest, and diffed against the committed matrix. `just conformance-ct::run-webcrypto` (on demand: clones the sibling repo) adds the delegated posture over a real `polymorph:webcrypto` provider |
| `just conformance` | the cross-implementation conformance suite (see `conformance/README.md`): the shared guest suite composed with each delivery — the `tls` world's in-guest Ed25519 posture and the `tls-delegated` world with the fixture signer — run under the pinned component-test runner, runtime-linked under polyengine on stock Deno (the polyengine-deno targets — no transpile, no engine flag; JSR-pinned in `conformance/driver-ct/polyengine/`), and runtime-linked in headless Chromium (the polyengine-browser targets; CI or CONFORMANCE_BROWSER=1), with import-satisfaction and signer-reachability gates, validated against the committed case inventory (`tests.lock`) and target manifest, and diffed against the committed matrix. `just conformance-ct::run-webcrypto` (on demand: clones the sibling repo) adds the delegated posture over a real `polymorph:webcrypto` provider |
| `just smoke-quic` | QUIC over `wasi:sockets` UDP under Wasmtime |
| `just smoke-tls-virt` | both tls-virt deliveries against `openssl s_server` over real TCP (needs openssl + python3): the composed guest virtualizer (handle-address and import-satisfaction gates), and the wasmtime host provider on both sockets generations — wasip3 and `std::net`/0.2 guests — with handle-address and profile-cipher-suite gates plus plain-TCP passthrough-delegation legs |
| `just interop` | cross-implementation, over real transports, fresh Ed25519 private PKI per run: the composed TLS component against OpenSSL and Go peers over TCP in both directions (including the close_notify-vs-truncation and reset scenarios), and the noq leg against quic-go over UDP in both directions |
Expand Down
12 changes: 6 additions & 6 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -49,16 +49,16 @@ futures = { version = "0.3", default-features = false, features = ["std", "async

# The conformance stack: the Rust crates pinned by git rev, the JS
# runner core from JSR (@jsr/polymorph__test, JSR's npm-compat registry
# via conformance/driver-ct/deltic/.npmrc). Both sides of a bump name
# via conformance/driver-ct/polyengine/.npmrc). Both sides of a bump name
# ONE polymorph-test release: `component-test pins bump <rev>
# --cargo-toml Cargo.toml --workflow .github/workflows/ci.yml` with the
# release-tag commit, then set the matching release version on the
# `@jsr/polymorph__test` dependency in
# conformance/driver-ct/deltic/package.json and `npm install` there —
# conformance/driver-ct/polyengine/package.json and `npm install` there —
# the cargo pins gate, the runner-js pin gate
# (conformance-ct::runner-js-pin-check), and the CI ref guard fail on
# skew.
component-test-sdk = { git = "https://github.com/polymorph-components/polymorph-test", rev = "b4444a25a22106ad4128549bdc9e579552e62210" }
component-test-sdk = { git = "https://github.com/polymorph-components/polymorph-test", rev = "38bfedf2b989522b82ddce5320fc1557a2f61461" }

aead = { version = "0.6", default-features = false, features = ["alloc"] }
aes = { version = "0.9", features = ["zeroize"] }
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ two deliveries, and the QUIC compatibility layer exist; they pass a
cross-implementation [conformance suite](conformance/README.md) on the
[`polymorph:test`](https://github.com/polymorph-components/polymorph-test)
harness (one shared guest suite against every composed delivery, under
Wasmtime, under deltic on stock Deno, and in headless Chromium),
Wasmtime, under polyengine on stock Deno, and in headless Chromium),
cross-implementation interop against OpenSSL, Go `crypto/tls`, and
quic-go over real transports, and a scheduled dudect-style
[timing lab](timing-lab/README.md), with the performance tradeoff
Expand All @@ -25,7 +25,7 @@ Everything here is **unstable** (0.x), but [releases](../../releases) are
**caret-honest**: within a minor line they stay backward-compatible, and
anything breaking bumps the minor. Consumption is pinned at a release's
commit — cargo git dependencies, vendored WIT, the release-pinned
deltic/JSR graph — and bumped deliberately.
polyengine/JSR graph — and bumped deliberately.

## Why pure-wasm TLS 1.3 is plausible

Expand Down
20 changes: 10 additions & 10 deletions conformance/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,34 +12,34 @@ guest-ct/ the suite: cases on the polymorph:test contract, the
polymorph:tls surface imported as a consumer would;
tests.lock is the committed case inventory
driver-ct/ target manifest (targets.toml), the recipes
(justfile, module `conformance-ct`), the deltic
drivers (deltic/), the committed matrix (matrix.md);
(justfile, module `conformance-ct`), the polyengine
drivers (polyengine/), the committed matrix (matrix.md);
results/ is generated
```

`just conformance` (from the repository root) runs the standing
matrix: build, inventory check, the wasmtime and deltic targets under
matrix: build, inventory check, the wasmtime and polyengine targets under
the pinned tooling, aggregate, and the committed-matrix diff.

## Targets

A target is a composition, not a runtime configuration: the suite is
`wac plug`-ged with one TLS stack, and the resulting artifact imports
only wasi and `polymorph:test/test-context`. The wasmtime rows run
under the generic component-test host runner; the deltic rows
runtime-link the same artifacts under the JSR-pinned deltic
runtime (`driver-ct/deltic/`) — one suite, one composition, two
under the generic component-test host runner; the polyengine rows
runtime-link the same artifacts under the JSR-pinned polyengine
runtime (`driver-ct/polyengine/`) — one suite, one composition, two
engines.

| Target | Composition |
| --- | --- |
| `composed` | the `tls` world build: in-guest Ed25519 signing only |
| `composed-delegated` | the `tls-delegated` world build ⊕ the fixture signer (`examples/test-signer`) |
| `composed-delegated-webcrypto` | as above, but the signer is the `examples/webcrypto-signer` shim over a real `polymorph:webcrypto` provider; on demand (`just conformance-ct::run-webcrypto`), declared `optional` |
| `deltic-deno` | the `composed` artifact runtime-linked under deltic on stock Deno (no transpile, no engine flag) |
| `deltic-deno-delegated` | the `composed-delegated` artifact, likewise |
| `deltic-browser` | the `composed` artifact runtime-linked inside headless Chromium (gates in CI, locally `CONFORMANCE_BROWSER=1`; declared `optional`) |
| `deltic-browser-delegated` | the `composed-delegated` artifact, likewise |
| `polyengine-deno` | the `composed` artifact runtime-linked under polyengine on stock Deno (no transpile, no engine flag) |
| `polyengine-deno-delegated` | the `composed-delegated` artifact, likewise |
| `polyengine-browser` | the `composed` artifact runtime-linked inside headless Chromium (gates in CI, locally `CONFORMANCE_BROWSER=1`; declared `optional`) |
| `polyengine-browser-delegated` | the `composed-delegated` artifact, likewise |

In-suite QUIC cases are
[#29](https://github.com/polymorph-components/polymorph-tls/issues/29).
Expand Down
42 changes: 0 additions & 42 deletions conformance/driver-ct/deltic/README.md

This file was deleted.

10 changes: 0 additions & 10 deletions conformance/driver-ct/deltic/browser-bundle-entry.ts

This file was deleted.

14 changes: 0 additions & 14 deletions conformance/driver-ct/deltic/deno.json

This file was deleted.

67 changes: 0 additions & 67 deletions conformance/driver-ct/deltic/deno.lock

This file was deleted.

10 changes: 0 additions & 10 deletions conformance/driver-ct/deltic/package.json

This file was deleted.

Loading
Loading