Skip to content

ci(gust): syscall-seam WIT↔impl drift gate (gale#214) - #220

Merged
avrabe merged 1 commit into
mainfrom
feat/gust-syscall-seam-drift-gate
Jul 23, 2026
Merged

ci(gust): syscall-seam WIT↔impl drift gate (gale#214)#220
avrabe merged 1 commit into
mainfrom
feat/gust-syscall-seam-drift-gate

Conversation

@avrabe

@avrabe avrabe commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

What

Closes gale#214 — the process gap that let #202 ship green: it added time.resolution() to the gust:os WIT (drivers/wit-os/gust-os.wit) without the matching time-provider Guest impl, which is an E0046 compile error — but no workflow built the provider crates, so the break never fired in CI and only surfaced when the gust_os_tl/ts dissolve was exercised by hand (fixed in #213).

The gate

benches/gust/drivers/check-providers.sh builds every gust:os provider/app crate for wasm32-unknown-unknown (the same target build-os-tl.sh / build-os-ts.sh dissolve from): app-time, app-tl, app-ts, time-provider, log-provider, spawn-provider, timer-provider, exec-provider. Each calls wit_bindgen::generate! against ../wit-os, so a WIT method that outruns its Guest impl fails the build.

.github/workflows/gust-syscall-seam.yml runs it on push/PR (path-filtered to the WIT / provider / app crates). Cargo-only — no meld/loom/synth/qemu needed; the compile is the oracle (wit-bindgen turns the WIT into the Guest trait).

Oracle-gated (red-tested)

Kill-criterion

If a future WIT-interface change to gust:os merges without updating the provider that exports it, this gate goes red. If it stays green through such a change, the gate isn't covering that crate — add it to CRATES in the script.

🤖 Generated with Claude Code

…32 (gale#214)

Closes the process gap that let #202 ship green: it added time.resolution() to
the gust:os WIT without the time-provider Guest impl (E0046), silently breaking
the gust_os_tl/ts dissolve until #213 caught it by hand. No workflow built the
provider crates, so the compile error never fired in CI.

This gate builds every gust:os provider/app crate for wasm32 (the dissolve
target) — a WIT method that outruns its Guest impl now fails RED. Cargo-only;
the wit-bindgen-generated Guest trait makes the compile the oracle. Red-tested:
injecting a method into the time interface without the impl reproduces
E0046 'not all trait items implemented'; the gate on main is green (8/8 crates).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@codecov

codecov Bot commented Jul 23, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@avrabe
avrabe merged commit 45702e5 into main Jul 23, 2026
99 of 100 checks passed
@avrabe
avrabe deleted the feat/gust-syscall-seam-drift-gate branch July 23, 2026 17:07
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