When changing repo structure, CI gates, release flow, or agent guidance, walk this checklist so nothing rots out of sync.
- Update the relevant manifest, gate, or script.
- If you added a gate:
ci/gates/<name>.pywithdef run() -> int.- Register in
ci.py::GATE_ORDER. - Add a step to
.github/workflows/ci.yml. - Add a row to
tests/test_gates.pycovering the happy path.
- If you added a hook:
ci/hooks/<name>.pyreading JSON from stdin.- Wire in
.claude/settings.jsonunder the right event.
- Update README.md if the user-visible workflow changed.
- Update docs/ARCHITECTURE.md if crate or package responsibilities changed.
- Update docs/RELEASE.md if build or publish behavior changed.
- If the composite action's surface changed, update
action.yml(andaction/cleanup/action.ymlif the cleanup contract changed), and re-run./ci.sh action_yaml action_surfacelocally to confirm the gates still pass.
- Update CLAUDE.md if agent-facing rules changed (the essential-rules list, hooks vs gates split, etc.).
- Update LINTING.md if the lint surface changed.
- For version bumps, keep Python (
pyproject.toml::project.version) and Rust (Cargo.toml::workspace.package.version) aligned. The release pipeline assumes they match.
If a step on this list stops applying (e.g., gates aren't keyed by GATE_ORDER anymore), update this file too. An update procedure that references removed concepts is worse than no procedure.