# Contributing to JCP JCP is one of the [Transaction Science open standards](../README.md). The wire format and the right to fork are public; Transaction Science is the steward, not the proprietor. ## Ground rules - **Reference code** (`jcp-rs/`) is Apache-2.0. **Specification text** (`SPEC.md`) is CC-BY-4.0. - Rust toolchain is pinned by the repo `rust-toolchain.toml`. `cargo test --workspace` MUST pass and `cargo clippy --workspace --all-targets` MUST be warning-free. - Any change to a wire structure (the Grant, the Frame, the `jcp/1` receipt core, the canonical encoding) requires regenerating and committing `conformance/v1/` (`cargo run -p jcp-conformance --bin gen-vectors -- conformance/v1`). - Two invariants are correctness, not style, and a PR that weakens either will be declined: **enforcement happens outside the model**, and a `data` frame can **never** exercise a capability. ## The smallest valuable contributions - **Transport bindings:** map Frames onto a concrete ordered, authenticated channel (e.g. an MCP/A2A bridge that wraps existing tool/agent calls in Grants and Frames) without moving the decision into the model. - **Measured energy:** a `HwShunt` cost backend (RAPL/NVML) so a runtime debits hardware-measured joules instead of a model estimate. - **Conformance:** adversarial negatives (a chain that amplifies mid-delegation, a receipt whose budget disagrees with the grant, a frame that replays a spent nonce) and independent implementations certifying against `conformance/v1/`. - **Revocation & chains:** grant revocation lists and multi-hop attenuation-chain verification (validate the whole chain narrows monotonically to its root). - **Capability discovery:** a signed, content-addressed catalog of a server's resources and actions, so a grant's `resource`/`actions` bind to real content. Issues and PRs scope by the `jcp` subdirectory tag.