Skip to content

conformance: wizer-pre-initialize the composed leg's suite - #400

Merged
lannbot merged 1 commit into
mainfrom
composed-wizen
Aug 23, 2026
Merged

conformance: wizer-pre-initialize the composed leg's suite#400
lannbot merged 1 commit into
mainfrom
composed-wizen

Conversation

@lannbot

@lannbot lannbot commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Takes the wizer item from #372, corrected by measurement — the item's premises needed inverting in two places, and the payoff concentrates in one leg:

  • The composed artifact is NOT wizen-able with the shipped bin (the issue assumed it was the only wizen-able one): component-test wizen on the wac plug output fails with wasmtime-wizer's "nested components with modules not currently supported". The route that works is the reverse order: wizen the bare suite, then compose. The bare suite's polymorph:webcrypto/* imports put it past the shipped plain-suite bin, so ct-driver — which already owns exactly the right linker — grows a --wizen <out.wasm> mode calling component_test_runner::wizen::wizen_with with the same store data and full-support LinkOptions its run path uses (the wizer cargo feature on component-test-runner; wasmtime-wizer 47 matches the tree's wasmtime 47.0.2).
  • run-wasmtime and the mutants oracle gain nothing (the issue projected "collapse to seconds" / "sequential ~4x"): both run through ct-driver, whose default is cases_per_instance: 0 — instance-per-worker — so the enumeration tax wizer removes is already amortized there (measured: the full shared suite runs in 2.6s locally at --jobs 8; its ~50s on CI is phase contention). They are deliberately left unchanged.
  • run-composed is where K=1 lives: the generic ct-runner's fresh-instance-per-case default pays the suite's registry construction per case, 19k times — and post-conformance: stripe the polyengine-deno leg across Deno Web Worker shards #399 this leg is the conformance phase's tail (finished at +296s in run 32659451264's parallel phase). Wizening keeps the per-case isolation and removes the construction: measured locally (18 cores, --jobs 8), 27.8s → 11.9s wall and 197.9s → 73.3s total CPU (~2.6x); on the CPU-bound 4-vCPU runner the leg's demand drops proportionally, which should take it off the critical path and return the freed share to the other legs. The residual per-case cost is the census handle lift, which is the price of the isolation and stays.

The wizen step runs inside run-composed (0.2s locally): ct-driver --wizenwac plug the wizened suite → ct-runner unchanged. --suite-artifact still names the canonical bare artifact, so envelope identity, tags scheduling, and the aggregate's lock binding are untouched.

Verification: wizened and unwizened composed runs are row-identical including order (19,093 lines, duration-ms stripped); just conformance-ct::all green (8 targets / 76,364 results and 7 / 2,316, 0 failing beyond declared expected-fail, 0 validation errors — committed matrices unchanged); just test (20 suites), just fmt-check, just clippy pass.

Part of #372 (the artifact-cache-key residue item remains; this PR closes out the wizer item with the leg-level corrections above recorded on the issue).

@lannbot
lannbot enabled auto-merge August 23, 2026 19:25
@lannbot
lannbot merged commit 0cde561 into main Aug 23, 2026
10 checks passed
@lannbot
lannbot deleted the composed-wizen branch August 23, 2026 19:33
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.

2 participants