This is an active document, expect changes.
Thanks for your interest in forge-cute-py. This repository is currently in an early, fast-moving phase while the KernelHeim v0 harness is being stabilized.
We are not accepting unsolicited pull requests at this time.
To avoid wasted work and long review cycles during rapid iteration, contributions are coordinated through maintainers. Unsolicited PRs may be closed without detailed review (you are welcome to keep your work in a fork).
What we do welcome right now:
- Bug reports (with reproduction details)
- Design feedback (on issues/discussions)
- Benchmark results, profiler traces, and hardware notes
- Requests for features or missing coverage
Current LLM policy (augmented from nanochat): disclosure. When submitting a PR, please declare any parts that had substantial LLM contribution and that you have not written or that you do not fully understand. The current aim of the repo is to be educational. It is now simpler than ever to submit a PR with LLM contributions, so please avoid adding more work on maintainers.
-
Open an Issue describing what you want to change:
- Motivation / problem statement
- Proposed approach
- Affected ops
- How you will test correctness
- Any expected perf impact and how you’ll measure it
-
(TBA) Wait for a maintainer to label the issue
approved-for-work(or similar)- Only then should implementation start.
- If you’re unsure, start a Discussion first.
-
(TBA) Once approved, you may:
- Ask to be assigned, or
- Share a fork/branch link for early feedback
We will update this section as we stabilize the contribution process.
Please install hooks with pre-commit to ensure code quality checks run locally:
uv run pre-commit installTo run checks manually on all files (-a is equivalent to --all-files):
uv run pre-commit run -a- Keep PRs small and scoped to a single issue.
- Include:
- Correctness tests (PyTorch reference-gated)
- Benchmark coverage where relevant
- Notes on profiling changes if performance-sensitive
A change that affects kernels or harness behavior should include:
- A reference implementation (or verified equivalence to an existing reference)
- Deterministic and reproducible tests (tolerances documented)
- Benchmark entry (if it changes performance or adds a kernel/variant)
- Clear failure modes and input validation where applicable
- Link the approved issue in the PR description:
Closes #123orRefs #123 - Include:
- What changed
- Why it changed
- How it was tested (commands + environment)
- Bench results (before/after) if relevant
forge-cute-py follows Semantic Versioning (SemVer):
- MAJOR (x.0.0): Incompatible API changes
- MINOR (0.x.0): New functionality, backwards-compatible
- PATCH (0.0.x): Backwards-compatible bug fixes
The project is currently between RC and final 0.1.0:
- Latest pre-release tag:
v0.1.0-rc1 maincontains post-RC changes targeting the finalv0.1.0- Final
v0.1.0tag is pending completion of remaining milestones - See ROADMAP.md for detailed progress tracking
When ready to create a release:
-
Update CHANGELOG.md:
- Move items from
[Unreleased]to a new version section - Use SemVer-compatible version heading:
- final release:
## [0.1.0] - YYYY-MM-DD - pre-release:
## [0.1.0-rc2] - YYYY-MM-DD
- final release:
- Update compare links at bottom
- Move items from
-
Update version in pyproject.toml:
version = "0.1.0"
-
Create and push git tag:
git tag -a v0.1.0 -m "Release v0.1.0: KernelHeim Weeks 0-2 harness" git push origin v0.1.0 -
Create GitHub release:
- Use tag
v0.1.0 - Copy relevant CHANGELOG section as release notes
- Mark as pre-release if appropriate
- Use tag
The single source of truth for version is pyproject.toml:
[project]
version = "0.1.0"Git tags should match: v0.1.0 (with v prefix).
See CHANGELOG.md for detailed change history.
Be respectful and constructive. Harassment and abuse are not tolerated.
If you believe you’ve found a security issue, do not open a public issue. Instead, contact the maintainers privately (see repository contacts).