A single CLI that hides the plumbing (wasi-test's future-ideas list called for this):
compose: wrap wac plug for suite + runner (+ provider components under test), with the recipes documented for people who want the raw commands.
run: pick a runner (cli/http/browser/native), pass filters and missing-features (read from the targets manifest), collect canonical results JSON.
list / update-lock / update-ratchet / aggregate / emit --format junit|tap.
- Negative composition gates: assert that a given suite does not compose with a given provider, matching the error on the specific interface name. Webcrypto's
class-d-composition gate is the prior art, and the failure mode is subtle — wac plug tolerates unsatisfied imports, so the assertion must pin why composition fails, not just that it does.
A single CLI that hides the plumbing (wasi-test's future-ideas list called for this):
compose: wrapwac plugfor suite + runner (+ provider components under test), with the recipes documented for people who want the raw commands.run: pick a runner (cli/http/browser/native), pass filters and missing-features (read from the targets manifest), collect canonical results JSON.list/update-lock/update-ratchet/aggregate/emit --format junit|tap.class-d-compositiongate is the prior art, and the failure mode is subtle —wac plugtolerates unsatisfied imports, so the assertion must pin why composition fails, not just that it does.