# runx-contracts

Shared Rust contract types at runx JSON and protocol boundaries.

This crate owns stable serde shapes and JSON Schema emission for runx JSON and
protocol boundaries. It does not execute skills, evaluate policy, perform IO,
or host runtime behavior.

The surface is contract-only:

- `json`: contract-owned JSON values backed by deterministic `BTreeMap`
  objects.
- `act`: governed act payloads and act assignment envelopes.
- `receipt`: signed governed proof records.
- `authority`, `decision`, `signal`, `verification`, and Aster objects:
  spine contracts used at governed boundaries.
- `schema_artifacts`: the Rust-owned manifest that emits `oss/schemas/*.json`
  and the generated TypeScript schema artifact table.

SDKs and TypeScript packages consume these schemas and generated artifacts;
they must not hand-maintain mirror schemas for Rust-owned contracts.

Workspace fixtures under `fixtures/contracts` are not vendored into this crate.
The Cargo package `include allowlist` ships only `Cargo.toml`, `README.md`, and
`src/**/*.rs`, so fixture files are excluded from the packaged crate.

New modules belong here only when they define a portable wire contract. Runtime
services, adapters, fixture runners, and presentation helpers belong in their
own crates.
