Contribution Guidelines¶
First and foremost: Thank you for showing interest in contributing to Fortress Rollback (a fork of GGRS)! Make sure to read the Code of Conduct. If you have a cool example or showcase of Fortress Rollback in use, let me know so your project can be highlighted!
Create an issue¶
Visit GitHub Issues to:
- Report a bug
- Request a feature
Contribute to Fortress Rollback¶
Please send a GitHub Pull Request with a clear list of what you've done
(read more about pull requests). When you send a pull request,
it would be great if you wrote unit- or integration tests for your changes. Please format your code via cargo fmt and
make sure all of your commits are atomic (one feature per commit).
Always write a clear log message for your commits. One-line messages are fine for small changes, but bigger changes should look like this:
git commit -m "prefix: brief summary of the commit
A paragraph describing what changed and its impact."
With the following prefixes commonly used:
feat: for new featuresfix: for fixing a bugdoc: for adding/changing documentationtest: for adding/changing testschore: for any minor code cleanups
More about the GitHub flow. More about the Conventional Commits Specification
Local Hooks¶
This project uses pre-commit for fast local feedback before commits and pushes. CI runs exhaustive Rust, documentation, and feature-matrix checks; developers can run those checks manually when needed.
Setup¶
# Install pre-commit (requires Python)
pip install pre-commit
# Install the git hooks managed by .pre-commit-config.yaml
pre-commit install --hook-type pre-commit --hook-type pre-push
What's Checked¶
The pre-commit hook is intentionally fast (<10 seconds) and file-scoped. It validates:
- Code formatting:
rustfmtfor changed Rust files - Markdown formatting:
markdownlintfor consistent documentation - General hygiene: Trailing whitespace, YAML/TOML syntax, merge conflicts
Slow full-repository checks such as cargo clippy, cargo doc, link
validation, and cargo hack are manual/CI checks rather than blocking every
commit or push.
Running Manually¶
# Run fast pre-commit hooks on current changes
pre-commit run
# Run manual full-repository hooks
pre-commit run --hook-stage manual cargo-clippy --all-files
pre-commit run --hook-stage manual rustdoc-links --all-files
pre-commit run --hook-stage manual check-links --all-files
pre-commit run --hook-stage manual cargo-hack-check --all-files
pre-commit run --hook-stage manual sync-wiki --all-files
pre-commit run --hook-stage manual check-llm-skills --all-files
pre-commit run --hook-stage manual check-shell-portability --all-files
pre-commit run --hook-stage manual sync-version-check --all-files
pre-commit run --hook-stage manual check-doc-claims --all-files
pre-commit run --hook-stage manual check-derive-bounds --all-files
# Run a specific hook
pre-commit run markdownlint --all-files
# Run the link checker script directly
python3 scripts/docs/check-links.py --verbose
# Verify markdown code samples compile
./scripts/docs/verify-markdown-code.sh
# With verbose output for debugging
./scripts/docs/verify-markdown-code.sh --verbose
# Check a specific file
./scripts/docs/verify-markdown-code.sh docs/user-guide.md
# Check for invalid rustdoc-style code fence attributes in markdown
./scripts/docs/check-code-fence-syntax.sh
# Check a specific directory
./scripts/docs/check-code-fence-syntax.sh docs/
Bypassing Hooks (Emergencies Only)¶
Note: CI will still run these checks on pull requests