Skip to content

ct-runner: feature-tag scheduling from the suite's own inventory (#25) - #30

Merged
lann merged 1 commit into
mainfrom
ct-runner-tag-gating
Aug 9, 2026
Merged

ct-runner: feature-tag scheduling from the suite's own inventory (#25)#30
lann merged 1 commit into
mainfrom
ct-runner-tag-gating

Conversation

@lann

@lann lann commented Aug 9, 2026

Copy link
Copy Markdown
Collaborator

Phase 2 of the polymorph-test migration (#14) + the #26-review parity nits, closing the tls smoke's last xfail class.

Tag gating (closes #25): ct-runner/src/tags.ts ports polymorph-test's L0 inventory — component-test:tags@0.1 custom sections (newline-delimited name tag… records, exact + prefix/* generated rows), collected from the component and nested modules/components: the SDK embeds records in the guest core module via #[link_section], and they survive wac composition (verified empirically on the polymorph-tls composed suites — the upstream 'wac strips custom sections' note covers component-level sections only). Scheduling follows harness.mjs runCases exactly: only → drift (uncovered case throws, unsound-not-failing) → applicability (f needs the feature present, !f needs it missing); N/A rows use the embed runner's wire shape byte-for-byte; envelope scheduling: "tags"; RunCounts.na; --missing f1,f2 on the CLI. Inventory-less suites run feature-blind as before; --missing without an inventory refuses loudly.

Parity nits from the #26 review: returned rows now carry diagnostics-complete: true (trap/timeout already emitted false); smoke-tls's dead webcryptoImports import removed.

smoke-tls: per-target missing-features; all TAG-GATING xfails went stale under gating and are pruned — zero failures, zero xfails on all three compositions (plain schedules out both delegated-signer cases, one of which previously passed only by feature-blind accident; the N/A set now matches their harness legs by construction).

Consumer blast radius: websocket suite has an inventory with no tagged cases — gating activates with an empty schedule, conformance 55/55 unchanged. polymorph-test's verify-deltic lane is pinned at pre-58875e8, unaffected; pin-bump note in the commit (fixture leg gains N/A rows; their runner.ts needs an N/A branch; regenerate lane goldens).

Gates: ct-runner 17/17 (new tags unit + e2e tests; seeds unset/1/4242), runtime suite, websocket conformance 55/55, smoke-tls PASS, deno check all packages touched.

The runner now reads polymorph-test's L0 tags inventory — newline-
delimited 'name tag...' records in component-test:tags@0.1 custom
sections, collected from the component and nested modules/components
(ct-runner/src/tags.ts, ported from their inventory.rs; the SDK embeds
records in the guest core module via #[link_section] and they survive
wac composition, verified on the polymorph-tls composed suites). When an
inventory exists, gating is on: harness.mjs runCases order (only, drift,
applicability), N/A rows in the embed runner's exact wire shape
(status/first-excluding-mark detail/diagnostics-complete:true), envelope
scheduling 'tags', RunCounts.na, --missing f1,f2 on the CLI. Suites
without an inventory run feature-blind as before; --missing without an
inventory refuses rather than silently degrading (their runner's
posture). Drift (an enumerated case no record covers) throws — unsound,
not failing.

Also the #26-review parity nits: returned rows now emit
diagnostics-complete:true (trap/timeout already emitted false), and
smoke-tls's dead webcryptoImports import is gone.

smoke-tls: per-target missing-features lists; every TAG-GATING xfail
went stale and is pruned — zero failures, zero xfails on all three
compositions (delegated: decline N/A; plain: both delegated-signer
cases N/A, decline runs and passes). The websocket suite carries an
inventory with no tagged cases: gating activates with an empty
schedule, 55/55 unchanged.

Pin-bump note for polymorph-test's verify-deltic lane (not affected
today, pinned pre-58875e8): at the next bump their fixture leg gains
hsm N/A rows + envelope scheduling 'tags', and their runner.ts needs an
N/A branch — regenerate the lane goldens then.

Gates: ct-runner 17/17 (seeds unset/1/4242), runtime suite, websocket
conformance 55/55, smoke-tls PASS. Closes #25.
@lann
lann enabled auto-merge August 9, 2026 22:42
@lann
lann merged commit 2a03d55 into main Aug 9, 2026
4 checks passed
@lann
lann deleted the ct-runner-tag-gating branch August 9, 2026 22:48
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.

ct-runner: no tag/missing feature-gating (cases N/A per target run and fail)

1 participant