mirror of
https://github.com/jmcorgan/fips.git
synced 2026-08-09 00:04:54 +00:00
Four short prose corrections folded together to align operator-facing
docs with current v0.3.0 reality:
- README Rust prerequisite reconciled with the toolchain pin (1.94.1,
was 1.85+).
- CONTRIBUTING.md bumps the Rust prerequisite and adds the squash-merge
policy note.
- examples/sidecar-nostr-relay/Dockerfile drops stale --features tui
and the paired --no-default-features; the tui/ble/gateway cargo
features were replaced by platform cfg gates in cbc7809.
- README Features list adds two v0.3.0-visible items: the mesh-
interface security baseline (fips.nft conffile, fips.d/ drop-in,
opt-in fips-firewall.service across all packaging formats) and the
fipsctl stats time-series queries plus fipstop inline sparkline
dashboards.
Status badge bump (v0.3.0--dev to v0.3.0) is deferred to tag time per
the release-prep checklist.
95 lines
2.5 KiB
Markdown
95 lines
2.5 KiB
Markdown
# Contributing to FIPS
|
|
|
|
## Getting Started
|
|
|
|
Clone the repo:
|
|
|
|
```
|
|
git clone https://github.com/jmcorgan/fips.git
|
|
cd fips
|
|
```
|
|
|
|
Before changing code, read the protocol docs in this order:
|
|
|
|
- [docs/design/README.md](docs/design/README.md)
|
|
- [docs/design/fips-intro.md](docs/design/fips-intro.md)
|
|
- the specific design doc for the behavior you are touching
|
|
|
|
## Prerequisites
|
|
|
|
- Rust 1.94.1 and Linux with TUN support
|
|
- Use the pinned toolchain from [rust-toolchain.toml](rust-toolchain.toml) for deterministic builds
|
|
- For the default BLE-enabled build on Debian/Ubuntu:
|
|
`sudo apt install bluez libdbus-1-dev pkg-config`
|
|
- Docker is required for the integration harnesses under [testing/](testing/)
|
|
|
|
If you do not want BLE locally, build and test without default features:
|
|
|
|
```bash
|
|
cargo build --no-default-features --features tui
|
|
cargo test --no-default-features --features tui
|
|
```
|
|
|
|
## Local Verification
|
|
|
|
Choose the narrowest check that matches your change:
|
|
|
|
- Docs-only changes:
|
|
|
|
```bash
|
|
git diff --check
|
|
```
|
|
|
|
- Normal code changes:
|
|
|
|
```bash
|
|
cargo build
|
|
cargo test
|
|
cargo clippy --all -- -D warnings
|
|
```
|
|
|
|
- Local CI-style unit test run:
|
|
|
|
```bash
|
|
./testing/ci-local.sh --test-only
|
|
```
|
|
|
|
- Narrow integration run for transport, routing, Docker, or packaging-sensitive changes:
|
|
|
|
```bash
|
|
./testing/ci-local.sh --only static-mesh
|
|
```
|
|
|
|
See [testing/README.md](testing/README.md) for the available integration and chaos harnesses.
|
|
|
|
## Filing Issues
|
|
|
|
- Search existing issues before opening a new one.
|
|
- Include FIPS version, Rust version, and OS.
|
|
- For bugs: steps to reproduce, expected vs actual behavior.
|
|
|
|
## Pull Requests
|
|
|
|
- All PRs must pass `cargo build`, `cargo test`, and `cargo clippy --all -- -D warnings`.
|
|
- Keep commits focused — one logical change per commit.
|
|
- Add tests for new functionality.
|
|
- Reference relevant design docs if the change touches protocol behavior.
|
|
- Pull requests are merged via squash-merge.
|
|
- Update docs in the same change when you modify:
|
|
- protocol or routing behavior
|
|
- wire formats
|
|
- configuration shape or defaults
|
|
- operational workflows or testing instructions
|
|
|
|
In practice this usually means updating one or more of:
|
|
|
|
- [docs/design/fips-mesh-operation.md](docs/design/fips-mesh-operation.md)
|
|
- [docs/design/fips-wire-formats.md](docs/design/fips-wire-formats.md)
|
|
- [docs/design/fips-configuration.md](docs/design/fips-configuration.md)
|
|
- [README.md](README.md)
|
|
- [testing/README.md](testing/README.md)
|
|
|
|
## Questions
|
|
|
|
Open a GitHub issue for design or implementation questions.
|