Skip to content

fix!: restore frozen process@1.0.0; move file-injection to new process@1.1.0#20

Merged
joshuajbouw merged 1 commit into
mainfrom
fix/process-dual-version
Jul 2, 2026
Merged

fix!: restore frozen process@1.0.0; move file-injection to new process@1.1.0#20
joshuajbouw merged 1 commit into
mainfrom
fix/process-dual-version

Conversation

@joshuajbouw

Copy link
Copy Markdown
Contributor

Closes #19

#15 mutated the frozen astrid:process@1.0.0 in place (spawn-request gained file-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 fails astrid init, and capsule-shell v0.2.0 fails to load, both with component 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 as http@1.0.0/1.1.0. Header documents the provenance.
  • README: package-table row for the new version.
  • scripts/validate-wit.sh passes 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/astrid branch fix/process-dual-version-host; its submodule pin bumps to this once merged. Tracked: astrid-runtime/astrid#1107.

https://claude.ai/code/session_01NvX2tE7tgXuCRevqqiXTGU

…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
Copilot AI review requested due to automatic review settings July 2, 2026 19:20

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.wit to remove the previously added file-injection types/field, re-freezing the @1.0.0 shape.
  • Add host/process@1.1.0.wit defining astrid:process@1.1.0, including the file-injection types and spawn-request.file-injections.
  • Update README package table to document the new astrid:process@1.1.0 package.

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.

Comment thread host/process@1.1.0.wit
/// 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
Comment thread host/process@1.1.0.wit
Comment on lines +49 to +50
/// 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).
Comment thread host/process@1.1.0.wit
Comment on lines +69 to +70
/// Stdin payload exceeded the per-call 1 MB cap or the
/// cumulative-per-process write quota.
@joshuajbouw joshuajbouw merged commit 278dbca into main Jul 2, 2026
2 checks passed
@joshuajbouw joshuajbouw deleted the fix/process-dual-version branch July 2, 2026 19:23
joshuajbouw added a commit to astrid-runtime/sdk-rust that referenced this pull request Jul 2, 2026
… 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
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.

process@1.0.0 was mutated in place by #15 — restore the frozen shape, move file-injections to process@1.1.0

2 participants