Contributing
Contribute through specifications, review and meaningful tests.
Overview
Umbra follows specification-driven development. Before implementing a capability, propose an OpenSpec change and have its requirements reviewed and approved. Implement the approved tasks with tests mapped to scenarios. Existing Rust code, public APIs and protocol behavior remain subject to the repository's AGENTS.md and contribution rules.
Details
Run formatting, strict linting, tests, dependency checks and the coverage gate for relevant changes. Line coverage must remain at least 90%; do not lower thresholds or add tests without meaningful assertions to satisfy a number. Network parsers need boundary/error coverage, and cryptographic or fingerprint changes require the applicable vectors and capture-based evidence. Keep dependencies in the workspace catalog and preserve the one-way crate dependency structure.
cargo fmt --all --check
cargo clippy --workspace --all-targets -- -D warnings
cargo nextest run --workspace
cargo deny check
cargo xtask coverage
npx --yes @fission-ai/openspec@latest validate --all --strictVerify
Documentation changes should cite current public sources, preserve stable document IDs and update all seven published translations. Distinguish implemented behavior from design goals, and never include real keys, addresses of private infrastructure or unpublished vulnerability details. AI-assisted contributions must be understood, reviewed and tested by a responsible human contributor; disclose substantial generation in the PR or commit trailer. Use Conventional Commits and follow the repository branch and review conventions. The project is MIT licensed; review dependency license compatibility before introducing a package.