# Contributing to chunkah## Getting startedchunkah is written in Rust so you'll need a Rust toolchain set up. It also uses[just](https://github.com/casey/just) instead of the more common `make`.To build chunkah and run unit tests:```bashjust check```Your iteration loop as you're hacking on chunkah will likely be mostly this inearly development.There is also `just checkall` which runs additional checks/lints. Run thisbefore submitting a PR.## e2e testsTo run the e2e tests, you first need to build the chunkah image locally. Thiscan be done using```bashjust buildimg --no-chunk```(The `--no-chunk` option skips the self-chunking step for faster builds.)And then you can run e2e tests with```bashjust test```It also supports running just some tests (e.g. `just test reproducible`).## Support toolingThere's also various development tools available to make it easier to debug/testcode. Two are documented here, but definitely look at all the scripts in the`tools/` directory.### just splitHelper to split an image using the `Containerfile.splitter` flow. Example usage:```bashjust split quay.io/fedora/fedora -v```### just diffHelper to diff between two images, usually the original image and the result ofpassing it through chunkah. Example usage:```bashjust diff quay.io/fedora/fedora-minimal localhost/fedora-minimal```## AI-assisted contributionsThis project heavily uses AI for development. This section sets clearexpectations on using AI for contributions. The guidance below is inspired byOxide's [RFD 576] on using LLMs (the whole doc is definitely worth a read!).### You own what you submitHowever the code was produced, the contributor bears full responsibility forit. AI is a tool; the human using it is accountable for the result. **This meansyou MUST understand every line of code you submit** and be able to explain thedesign decisions behind it.### Self-review is mandatory**DO NOT request reviews on AI-generated code you did not yourself reviewfirst**. Check for correctness and clarity. If you wouldn't be comfortabledefending a line of code in review, don't submit it. Failure to do thisself-review and catching obvious AI slop during the review process wastes timeand erodes trust.### Don't re-generate in response to reviewYou can use AI to help address review feedback, but it must be intentional andtargeted to the review areas. **DO NOT regenerate the whole contribution**. Theinterdiff (the diff between the last reviewed patches and your addressing ofthem) must be in line with what reviewers expect given the feedback they gave.### Disclose AI usageDisclosure of AI usage is recommended but not mandatory. The best way todisclose it is via an `Assisted-by:` trailer in your commit messages to indicatewhich AI tool was used. For example:```textAssisted-by: Claude Opus 4.6```This isn't about shaming or gatekeeping (many/most commits in this repo areAI-assisted!). It's about providing useful context to make review easier, andto help us learn collectively about where AI assistance works well and whereit doesn't.### The AGENTS.md fileThe [AGENTS.md](AGENTS.md) file provides detailed guidance to AI coding agentsworking in this repository, including project architecture, codingconventions, and build commands. If you use an AI coding agent, make sure ithas access to this file.[RFD 576]: https://rfd.shared.oxide.computer/rfd/0576