fix!: restore frozen process@1.0.0; move file-injection to new process@1.1.0#20
Conversation
…s@1.1.0 #15 added file-injections to spawn-request inside the frozen astrid:process@1.0.0 package. The component-model linker matches package versions structurally, so every capsule built against the published contract (astrid-sys 0.7.1 embeds the pre-#15 shape) fails to instantiate on a host serving the mutated 1.0.0 — the #890 frozen-WIT-mutation class. process@1.0.0 is restored byte-identical to 83ebc6c (the shape sdk 0.7.1 ships); the injection extension moves to astrid:process@1.1.0, the same dual-version pattern as http@1.0.0/1.1.0. Closes #19 Claude-Session: https://claude.ai/code/session_01NvX2tE7tgXuCRevqqiXTGU
There was a problem hiding this comment.
Code Review
This pull request introduces version 1.1.0 of the astrid:process WIT interface (host/process@1.1.0.wit) to support host-verified, read-only per-spawn file injection. It also reverts the accidental in-place addition of these features to version 1.0.0 (host/process@1.0.0.wit), which previously broke backward compatibility. The README.md has been updated to document the new version. I have no further feedback to provide as there are no review comments.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
There was a problem hiding this comment.
Pull request overview
Restores compatibility for capsules built against the published astrid:process@1.0.0 contract by reverting the @1.0.0 WIT surface to its frozen shape, while introducing astrid:process@1.1.0 as an additive successor that carries the file-injections extension.
Changes:
- Revert
host/process@1.0.0.witto remove the previously added file-injection types/field, re-freezing the@1.0.0shape. - Add
host/process@1.1.0.witdefiningastrid:process@1.1.0, including thefile-injectiontypes andspawn-request.file-injections. - Update README package table to document the new
astrid:process@1.1.0package.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| README.md | Documents the new astrid:process@1.1.0 package in the package/version table. |
| host/process@1.0.0.wit | Removes the file-injection surface from the frozen @1.0.0 contract to restore compatibility. |
| host/process@1.1.0.wit | Introduces the additive @1.1.0 contract that contains file-injections support. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| /// surface stdout/stderr as UTF-8, which is LOSSY on non-UTF-8 output — fine | ||
| /// for text, use `read-since` for binary. | ||
| /// | ||
| /// IMPLEMENTATION STATUS. This file is the full 1.0 contract; the host |
| /// now so behaviour can land without a breaking change. Draft until the | ||
| /// 1.0 release freezes it per the ABI evolution discipline (RFC: host_abi). |
| /// Stdin payload exceeded the per-call 1 MB cap or the | ||
| /// cumulative-per-process write quota. |
… to @1.1.0 (#62) The `contracts` submodule pinned wit@812c833, where file-injection had been added **in place** to the frozen `astrid:process@1.0.0` (wit#15). That structurally broke every capsule built against the published contract on the 0.9.0 host (astrid-runtime/astrid#1107). wit#20 (merged) restores `@1.0.0` byte-for-byte to its published shape and re-homes injection on an additive `@1.1.0`. This re-syncs the SDK to that: - Bumps `contracts` 812c833 → **278dbca**; `build.rs` re-stages both process versions into `wit-staging/`. - Moves the `process` host import in the `astrid-sys` `world capsule` from `@1.0.0` → **`@1.1.0`** (the same move `http` already made), so the SDK still exposes the `Command::inject_*` file-injection API — now backed by `@1.1.0`. Alias becomes `astrid::process1_1_0::host` (bindgen suffixes when both versions are staged, exactly as `http1_1_0`). - CHANGELOG: the injection entry and the submodule-bump entry updated to the restored-shape reality. **Host-floor note (intentional, per decision):** a capsule rebuilt against this SDK imports `astrid:process/host@1.1.0` and requires a host that serves it (astrid ≥ 0.9.1). Published capsules on the 0.7.1 SDK import the restored `@1.0.0` and are unaffected — the dual-version 0.9.1 host serves both. No version bump here (release is a separate PR). Pairs with astrid-runtime/wit#20 (merged) and astrid-runtime/astrid#1108. ## Verification - `cargo build --workspace`, `cargo clippy --workspace -- -D warnings`, `cargo test --workspace` — all green. - `scripts/sync-contracts-wit.sh --check` — in sync (process is a `host/` package, so the interface bundle is unchanged). - Confirmed the `Command::inject_*` surface resolves against `process@1.1.0`. https://claude.ai/code/session_01NvX2tE7tgXuCRevqqiXTGU
Closes #19
#15 mutated the frozen
astrid:process@1.0.0in place (spawn-requestgainedfile-injections). The component-model linker matches package versions structurally, so every capsule built against the published contract fails to instantiate on a host serving the mutated shape — confirmed live on astrid 0.9.0: the sage supervisor failsastrid init, and capsule-shell v0.2.0 fails to load, both withcomponent imports instance astrid:process/host@1.0.0, but a matching implementation was not found in the linker.astrid-sys 0.7.1(crates.io — what every shipped capsule embeds) carries the pre-#15 shape, verified by extracting the artifact.host/process@1.0.0.wit: restored byte-identical to 83ebc6c (the published shape; verified by diff in CI-adjacent check).host/process@1.1.0.wit: the injection extension as an additive successor — same dual-version pattern ashttp@1.0.0/1.1.0. Header documents the provenance.scripts/validate-wit.shpasses for both (it already stages same-package multi-version since the http split).Core-side dual-version serving is implemented and green (570 tests) on
unicity-astrid/astridbranchfix/process-dual-version-host; its submodule pin bumps to this once merged. Tracked: astrid-runtime/astrid#1107.https://claude.ai/code/session_01NvX2tE7tgXuCRevqqiXTGU