Thanks for your interest in PunkGo! This document explains how to contribute.
- Rust 2024 edition (1.85+)
- SQLite (bundled via sqlx)
cargo build --workspace
cargo test --workspace
cargo clippy --workspace -- -D warningsOpen a GitHub issue with:
- Steps to reproduce
- Expected vs. actual behavior
- OS and Rust version
- Fork the repository
- Create a feature branch from
main - Make your changes with tests
- Run
cargo test --workspace && cargo clippy --workspace - Submit a pull request
PunkGo is governed by the whitepaper and PIPs (PunkGo Improvement Proposals).
- The whitepaper defines foundational axioms and invariants — it is not amended lightly.
- PIPs fill gaps in the whitepaper without overriding it.
- To propose a new PIP: open an issue titled
PIP-NNN: <title>with a draft following the format indocs/PIP-001_EN.md.
All governance changes enter the event history (whitepaper §3, invariant 6).
- Follow existing patterns in the codebase
- Add
///doc comments to all public types and functions - Add
//!module-level docs to new modules - Use
KernelResult<T>for fallible operations - No
unwrap()in production code — use?orunwrap_or_default() - Tests go in the same file (
#[cfg(test)]module) or intests/for integration tests
bins/ CLI client + kernel daemon
crates/
punkgo-core/ Core types (shared vocabulary)
punkgo-runtime/ Kernel logic (7-step pipeline)
punkgo-state/ SQLite persistence
punkgo-sandbox/ Execution backends
punkgo-audit/ Merkle tree proofs
punkgo-testkit/ Test utilities
Key principle: the kernel is a committer, not a judge. It provides a single linearization point for actions, not moral authority.
By contributing, you agree that your contributions will be licensed under the MIT License.