confium 0.2.0

Open-source distributed trust store framework
Documentation
# Contributing to Confium

Thank you for your interest in contributing to Confium! This document covers
the basics. For design context, see `README.adoc`.

## Development Setup

Confium requires a stable Rust toolchain (1.85+ for edition 2024). The
toolchain is pinned via `rust-toolchain.toml`. To enter a Nix-based dev
shell with all dependencies:

```sh
nix develop
```

Or install Rust directly via [rustup](https://rustup.rs/).

## Common Commands

```sh
cargo build                  # build the cdylib
cargo test                   # run unit tests
cargo fmt --all              # format code
cargo clippy --all-targets -- -D warnings   # lint
cargo doc --no-deps          # build docs
cargo deny check             # license/advisory/ban checks
typos                        # spell check
```

C++ binding tests live in `cpp-tests/` and require CMake, cbindgen, and Boost:

```sh
mkdir build && cd build
cmake -DBUILD_TESTING=yes -DBUILD_C_BINDINGS=yes ..
cmake --build .
ctest -C Debug -V
```

## Pre-commit Hooks

Two options are available; both mirror CI:

- Framework version (requires `pip install pre-commit`):

  ```sh
  pre-commit install
  ```

- Shell version (no dependencies):

  ```sh
  cp .githooks/pre-commit .git/hooks/pre-commit
  chmod +x .git/hooks/pre-commit
  ```

## Pull Request Process

1. Fork the repository and create a feature branch.
2. Use [conventional commit]https://www.conventionalcommits.org/ messages
   (`feat:`, `fix:`, `docs:`, `refactor:`, `test:`, `ci:`, `chore:`). These
   drive automated versioning via release-plz.
3. Ensure CI is green locally and on the PR.
4. Breaking changes must include `!` (e.g. `feat!: ...`) and a migration note.

## Releases

Releases are automated. Merging to `main` triggers `release-plz`, which opens
a release PR with the version bump and changelog. Merging that PR publishes
to crates.io.

Never push tags directly. The bot handles it.