Migrate the composed smokes to a polymorph:test conformance suite - #30
Merged
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adopts the
polymorph:testharness for cross-implementation conformance, replacing thesmoke-tls/smoke-tls-delegated/smoke-tls-webcryptorigs. 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, leavesmainworse 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 thepolymorph:testcontract, thepolymorph:tlssurface imported exactly as a consumer would.tests.lockis the committed inventory.conformance/driver-ct— targets, recipes, committed matrix. A target is a composition: the suite ⊕ one delivery, so the genericct-runnerexecutes 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) andcomposed-delegated(⊕ fixture signer);composed-delegated-webcrypto(⊕ webcrypto-signer shim ⊕ realpolymorph:webcryptoprovider) is on demand andoptional, replacingsmoke-tls-webcrypto.delegated-signer. The old structural gate ("delegated identity must fail without a composed signer") becomes the!delegated-signerdecline case — the decline pair the harness's tag scheme calls for.conformancejob (just conformance), the aggregate action pinned at the workspace rev with a skew grep guard, ct-tools cached by Cargo.lock rev, results artifact. Thesmokejob drops tosmoke-quic+smoke-tls-virt.conformance-ct::build.What deliberately doesn't
future.transfertrampoline; the callee task's teardown clearing the current-task register before the return-positionstreamTransferof a fused sync call), reproduced againstlann/jcojco-transpile-0.6.2-fa6990d. Tracked with repro in Conformance: jco targets blocked on upstream jco defects in composed p3 stream/future paths #28; filed upstream as -I async: future.transfer trampoline const is emitted after the init generator that references it (TDZ ReferenceError at instantiation) lann/jco#34 and Fused sync call returning a stream: callee task teardown clears CURRENT_TASK_META before the return-position streamTransfer ('missing global current task') lann/jco#35.smoke-quic,interop,bench,audit, the timing lab, and the tls-virt rigs stay as they are (conformance/README.mdrecords the boundary).Verification
just conformance: 7 cases;composed5 pass + 2 N/A,composed-delegated6 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) andjust smoke-quicgreen.Incidental fix folded in where the recipe moved: the sibling checkout under
target/webcrypto-srcis a build cache, socheckout -f— a previously dirtied lockfile wedged the old recipe on rev moves.