Skip to content

Migrate the composed smokes to a polymorph:test conformance suite - #30

Merged
lann merged 1 commit into
mainfrom
conformance-harness
Aug 7, 2026
Merged

Migrate the composed smokes to a polymorph:test conformance suite#30
lann merged 1 commit into
mainfrom
conformance-harness

Conversation

@lann

@lann lann commented Aug 6, 2026

Copy link
Copy Markdown
Collaborator

Adopts the polymorph:test harness for cross-implementation conformance, replacing the smoke-tls / smoke-tls-delegated / smoke-tls-webcrypto rigs. One decision — the composed smokes become the shared suite — with its consequences; the pieces are co-dependent (deleting the loopback crates while keeping their recipes, or landing the suite while keeping the duplicate smokes, leaves main worse between PRs).

What lands

  • conformance/guest-ct — the suite: the loopback smokes recast as discrete cases (identity/ed25519/reject-foreign-key, handshake/alpn-sni, data/echo, shutdown/close-notify, delegated/*) on the polymorph:test contract, the polymorph:tls surface imported exactly as a consumer would. tests.lock is the committed inventory.
  • conformance/driver-ct — targets, recipes, committed matrix. A target is a composition: the suite ⊕ one delivery, so the generic ct-runner executes every target (composed, the artifact imports only wasi 0.2 + test-context — no custom driver crate, unlike the webcrypto sibling which has a host-side SUT). Standing targets: composed (in-guest Ed25519 posture) and composed-delegated (⊕ fixture signer); composed-delegated-webcrypto (⊕ webcrypto-signer shim ⊕ real polymorph:webcrypto provider) is on demand and optional, replacing smoke-tls-webcrypto.
  • Feature model: one gated feature, delegated-signer. The old structural gate ("delegated identity must fail without a composed signer") becomes the !delegated-signer decline case — the decline pair the harness's tag scheme calls for.
  • CI: a conformance job (just conformance), the aggregate action pinned at the workspace rev with a skew grep guard, ct-tools cached by Cargo.lock rev, results artifact. The smoke job drops to smoke-quic + smoke-tls-virt.
  • The import-satisfaction and signer-reachability grep gates from the old recipes carry over into conformance-ct::build.

What deliberately doesn't

Verification

  • just conformance: 7 cases; composed 5 pass + 2 N/A, composed-delegated 6 pass + 1 N/A; lock-check and matrix-check green.
  • just conformance-ct::run-webcrypto + aggregate: 21 results, 0 failing across all three targets (delegated cases pass over the real webcrypto provider).
  • just check (incl. the new wasm32 clippy pass over the suite) and just smoke-quic green.

Incidental fix folded in where the recipe moved: the sibling checkout under target/webcrypto-src is a build cache, so checkout -f — a previously dirtied lockfile wedged the old recipe on rev moves.

Adopt the family's conformance harness: conformance/guest-ct carries
the former tls-loopback and tls-delegated-loopback assertions as
discrete cases on the polymorph:test contract (structural signing
gates, handshake facts, bidirectional data, clean close_notify, the
delegated posture), and conformance/driver-ct composes the suite with
each delivery — the tls world build, the tls-delegated build with the
fixture signer, and (on demand) the webcrypto-signer shim over a real
polymorph:webcrypto provider — as targets validated against the
committed inventory (tests.lock), manifest (targets.toml), and matrix.

No custom driver crate is needed: composed with a delivery, the suite
imports only wasi 0.2 and test-context, so the generic ct-runner
(which enables component-model async) serves every target. The
delegated-signer split maps onto one gated feature: tagged cases run
where a signer is composed; the !delegated-signer decline case pins
that delegated identities fail at construction elsewhere.

jco targets are absent: transpiling the composed artifact trips two
upstream defects in jco's p3 stream/future path (a TDZ emission-order
bug for the future.transfer trampoline, and a missing current-task
global when a detached-task continuation transfers a stream across the
fused wasm-to-wasm boundary), verified against lann/jco
jco-transpile-0.6.2-fa6990d under Node 24 JSPI. Tracked in #28;
in-suite QUIC cases are #29.

The webcrypto-src checkout step gains -f: the checkout is a build
cache, and a previous build's dirtied lockfile wedged the old
smoke-tls-webcrypto recipe on rev moves.

Verified: just conformance green (7 cases; composed 5 pass + 2 N/A,
composed-delegated 6 pass + 1 N/A); conformance-ct::run-webcrypto
green (21 results, 0 failing across all three targets); just check
and just smoke-quic green.
@lann
lann merged commit 45b328c into main Aug 7, 2026
4 checks passed
@lann
lann deleted the conformance-harness branch August 7, 2026 03:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant