PR workflow
Keep each change focused, with no unrelated refactors. Update tests when behavior changes.
When a change touches a feature’s implementation, update that feature’s design
docs under docs/ in the same pull request. Refresh
last_updated. Add a titled entry to the feature’s 4_decisions. only for a
decision that explains surprising code or governs future choices, and point a
replaced entry at its successor with a Superseded link.
Checks
Section titled “Checks”For a task that delivers a diff, run the checks the change needs: tests of the behavior you changed, Clippy on touched crates, and goldens for changed golden surfaces. The repository provides these broader targets when needed:
make ci-fast # formatting and repository guardrails; no Rust testsmake ci-test-affected # full test targets for changed crates and their dependentsmake ci-lint # dependency direction, then clippy and rustdoc with warnings as errorsmake goldens # CLI help, MCP, CI log, and sandbox profile goldensmake , make , and make check formatting, guardrails,
lints, and snapshots, but they don’t run the test suite. make
runs the full test targets of every changed crate and its reverse workspace
dependents. These are focused tools, not blanket pre-handoff gates. Required
PR checks gate formatting, guardrails, lint, rustdoc, goldens, and the full
test suite. The repository’s
validation policy
describes the checks required for each kind of change.
After an intentional change to CLI help, the MCP surface, or a sandbox policy,
regenerate the goldens with make and review the diff. Use
targeted checks while you iterate. In a managed delivery, the pipeline runs
the configured workflow. on the final candidate.
Pull requests target agent-main, the development integration branch. main
is for releases.
Commits
Section titled “Commits”Write clear commit messages with a type prefix: feat:, fix:, docs:,
refactor:, or chore:. When a commit belongs to an Orbit task, include the
task’s allocated ID in square brackets.
An agent-authored commit uses the agent’s commit identity (for example claude
or codex) for that commit only. Don’t leave the repository configured with
that identity afterward.
When you author tasks or design docs, identify yourself by agent family
(codex, claude, gemini, or grok), not by a full model string.