Skip to content

Latest commit

 

History

History
106 lines (73 loc) · 2.17 KB

File metadata and controls

106 lines (73 loc) · 2.17 KB

Contributing to proven

Thank you for your interest in contributing!

Code of Conduct

This project follows the Contributor Covenant v2.1.

How to Contribute

Reporting Bugs

  1. Check existing issues first

  2. Use the bug report template

  3. Include reproduction steps

  4. Specify your environment (OS, language versions)

Suggesting Features

  1. Open a discussion first

  2. Explain the use case

  3. Consider backward compatibility

Pull Requests

  1. Fork the repository

  2. Create a feature branch (git checkout -b feature/amazing-feature)

  3. Make your changes

  4. Run tests (idris2 --build proven.ipkg)

  5. Commit with conventional commits (feat:, fix:, docs:, etc.)

  6. Push and open a PR

Development Setup

# Clone
git clone https://github.com/hyperpolymath/proven
cd proven

# Install Idris 2 (via pack)
pack install-deps

# Install Zig
# See: https://ziglang.org/download/

# Environment fallback (Guix)
guix time-machine -C guix/channels.scm -- \
  shell -m guix/manifest.scm

# Environment fallback (Nix)
nix-shell nix/shard.nix

# Pin cadence (Guix + Nix)
# Monthly on the first Saturday, plus CVE-driven updates as needed:
./scripts/update-env-pins.sh

# Build
idris2 --build proven.ipkg

# Test
idris2 --build proven.ipkg

Code Style

Idris 2

  • 2-space indentation

  • Explicit type signatures for all exports

  • Document with ||| doc comments

  • Prove properties where practical

Zig

  • 4-space indentation

  • Use zig fmt

  • Prefer comptime verification

  • Document public APIs

Python Bindings

  • Use Black formatter

  • Type hints required

  • Docstrings for all public functions

Commit Messages

  • feat: New feature

  • fix: Bug fix

  • docs: Documentation only

  • style: Formatting, no code change

  • refactor: Code restructuring

  • test: Adding tests

  • chore: Maintenance

Contact

Questions? Reach out at j.d.a.jewell@open.ac.uk or open a GitHub issue.

License

By contributing, you agree that your contributions will be licensed under MPL-2.0.