Changing a runtime behavior
Changing a runtime behavior
When an MR changes what a generated Go or Rust assembly does, or how a runtime test checks it, update the docs in the same MR.
- Change the rules in the feature’s contract doc, for example the
HTTP adapter contract. If the feature
has no contract doc yet and the rules aren’t obvious, add one under
docs/design/. - Add or update the test in both runtime scripts. Put a shared assertion in
tests/runtime-checks.shonly when both runtimes share the expectation, and keep runtime-specific setup in that runtime’s script. List the cases in the contract doc’s tests section. - Update the runtime support row only when the feature’s status, known differences, or checking assertion changes. A new feature gets a new row. When an in-flight feature ships, move it from “In flight” to “Features”.
- If support or a test is intentionally missing in one runtime, mark it ⚠️ or ❌ and link an assigned follow-up with completion criteria. Owner, schedule, and progress live in the follow-up. When it’s fixed, update the row and close the follow-up.
Running the runtime tests
From the root of a trusted checkout, with mise activated in your shell:
mise install
./tests/integration-go.sh
./tests/integration-rust.shYou’ll need Rust and Cargo, Go, copier, curl, protoc, and network access. The native path doesn’t need Docker.
In
.gitlab-ci.yml, the test:runtime job runs both
native scripts on every MR pipeline and blocks merge.
The --release jobs add cross-compilation, OCI packaging, and container runs.
They run on the default branch, schedules, and every MR pipeline, and also block
merge. See each script’s header for its prerequisites:
tests/integration-go.sh and
tests/integration-rust.sh.
Last updated on