# Contributing ## Development checks Before opening a change, run the Rust formatter, Clippy with warnings denied, the Rust tests, the `wasm32-unknown-unknown` check, and the web checks documented in the README. Core CPU, IR, memory, ELF, and Linux semantics must remain testable without a browser. Browser capabilities belong behind explicit host boundaries. Add focused regression tests with every behavior change. ## Dependencies Keep dependencies small and explicit. Record the license, browser compatibility, native-host assumptions, and reason for any foundational dependency in an architecture decision record. GPL implementation code must not enter the permissively licensed core accidentally. ## Safety The workspace forbids `unsafe` code by default. A future exception must be narrowly scoped, document its invariants, and include targeted tests. ## Commit style Use concise imperative subjects, such as `feat: add Memory64 browser probe` or `docs: record Icicle feasibility decision`.