Thank you for your interest in contributing.
Please read SECURITY.md before contributing any security-sensitive code. All contributors must agree that their contributions are licensed under GPL-3.0.
git clone https://github.com/YOUR_USERNAME/cipherrescue.git
cd cipherrescue
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"Verify the baseline passes:
pytest tests/ -v
ruff check src/ tests/The project is structured by layer. The most useful contributions right now, in priority order:
-
Layer 2 — Detection Engine (
src/cipherrescue/detection/) SMART attribute parsing, entropy sampling, header signature checks. Pure Python, no special hardware required for unit testing. -
Layer 3 — BackupManager (
src/cipherrescue/safety/)dd/ddrescuewrapper, SHA-256 verification, BackupToken issuance. -
Layer 4 — Plugins (
src/cipherrescue/plugins/) Concrete implementations ofLUKS2Plugin,BitLockerPlugin,VeraCryptPlugin. Requires access to test drive images. -
Layer 6 — Orchestration (
src/cipherrescue/orchestration/) Full state machine implementation. -
Layer 7 — TUI (
src/cipherrescue/tui/) Textual screens following the state machine flow.
- All code must pass
ruff checkandruff format. - All public functions and classes require docstrings.
- New functionality requires unit tests in
tests/unit/. - Type annotations are required (
mypy --strictmust pass).
Community plugins must:
- Subclass
SchemePluginand implement all abstract methods. - Route ALL writes through
self._wb.write_gate()(Contract C4). - Include a
plugin.jsonmanifest. - Be submitted with a GPG-signed commit.
Plugins that bypass the WriteBlocker will not be accepted.
Follow the conventional commits format:
feat(scpr): add LP-based variable fixing for SCPR reduction
fix(safety): correct hash ordering in AuditLog chain
test(detection): add LUKS2 header signature unit tests
docs: update plugin contract documentation
- Open a PR against the
developbranch. - All CI checks must pass.
- At least one maintainer review is required before merge.
- Security-sensitive PRs require two reviews.