AllocDB should be developed through small GitHub issues and reviewable pull requests.
The default path for substantive work is:
- open or refine a GitHub issue
- create a branch from
main - implement one task-sized change
- run the required validation locally
- open a pull request
- triage human review and CodeRabbit feedback
- wait for the CodeRabbit review to complete and produce visible output
- rerun validation after review-driven changes
- merge only when the branch is green and the review notes are resolved
Do not use main as the day-to-day development branch.
- milestones use
M0,M1,M1H,M2,M3,M4,M5,M6 - planned tasks use
M#-T#, for exampleM2-T08 - approved spikes use
M#-S#, for exampleM1-S01
When a GitHub issue maps to planned work, reuse the same identifier in the title.
Examples:
M2-T08 Safe checkpoint coordination and WAL retentionM3-T06 Finalize indefinite-outcome retry behaviorM5-T02 Expose recovery status and operational signals
Prefer short branch names derived from the task or issue.
Examples:
m2-t08-safe-checkpointm3-t06-indefinite-retriesdocs/review-workflow
- every substantial code or design change should link to an issue
- keep each issue scoped to one task or one tightly related doc change
- add the appropriate milestone and area labels
- add planned work to the GitHub Project
AllocDB - close or retitle stale issues instead of letting the tracker drift
Use the GitHub Project AllocDB as the operational board for the repository.
Current policy:
- milestones are the roadmap view
- the project board is the live execution queue
Todomeans not startedIn Progressmeans active implementation or active PR reviewDonemeans merged or otherwise completed
When you pick up an issue:
- move it to
In Progress - keep it linked to the correct milestone
- leave it
In Progresswhile the PR is open - move it to
Doneafter merge or explicit closure
Limit In Progress to 2 items per contributor at a time. If a third item is urgent, either
finish or hand off one of the existing items first.
- keep PRs small enough to review in one pass
- link the issue in the PR body
- explain behavioral impact, not just file edits
- include the exact validation commands you ran
- update docs in the same PR when behavior, invariants, failure modes, or operator-visible semantics change
Run the local preflight before opening or merging a PR:
scripts/preflight.sh
That command is the preferred local path because CI runs the same script.
It currently runs:
cargo fmt --all --checkcargo clippy --all-targets --all-features -- -D warningscargo testscripts/check_repo.sh
Add narrower commands too when they strengthen confidence for the specific change.
Install the repository-managed hooks once per clone:
scripts/install-hooks.sh
This configures git to use .githooks/ and runs scripts/preflight.sh on pre-push.
- human review focuses first on correctness, regressions, missing tests, recovery behavior, and docs drift
- CodeRabbit is part of the review path when enabled on the repository
- wait for CodeRabbit status to complete before merge
- if CodeRabbit completes without a visible review comment or review thread, request visible output
with
@coderabbitai summarybefore merge - every CodeRabbit suggestion or comment that affects the PR must be addressed explicitly before merge
- apply CodeRabbit suggestions by default when they improve correctness, safety, testing, observability, or documentation
- reject CodeRabbit suggestions when they add churn without value or weaken determinism, boundedness, dependency discipline, or trusted-core isolation
Addressing CodeRabbit means one of:
appliednot applied- short reason when not applied
Do not leave substantive CodeRabbit comments unresolved or silently ignored. When leaving PR comments for review follow-ups, keep them brief: identify the change, note the validation command rerun, and avoid pasting full validation output unless the output itself is important to the discussion.
Until the repository has more human reviewers, self-merge is acceptable only after:
scripts/preflight.shpasses locally- required checks pass
- CodeRabbit status is complete and its visible output has been reviewed
- review comments are addressed
- CodeRabbit feedback is triaged
When the team grows, switch to at least one human approval before merge.
The GitHub repository is configured so that main:
- requires pull requests before merge
- requires the
checksCI job and uses strict status checks - requires resolved review conversations
- requires linear history
- disallows force pushes and branch deletion
When enabled on the repository, CodeRabbit is part of the normal review path and its feedback must
be addressed before merge. The repository-level CodeRabbit configuration lives in
.coderabbit.yaml.
Recommended milestone shape:
M2 Durability and RecoveryM3 Submission PipelineM4 Deterministic SimulationM5 Single-Node AlphaM6 Replication Design Gate
Recommended labels:
area:corearea:nodearea:storagearea:simulationarea:replicationarea:docstype:tasktype:spiketype:designtype:bugtype:docstype:testtype:infrapriority:p0priority:p1status:blocked
- new behavior should come with tests that exercise invariants, negative paths, and regressions
- logs should stay structured and deliberate
- use
errorfor corruption and invariant breaks - use
warnfor bounded overload and rejected requests - use
infofor meaningful lifecycle and state transitions - use
debugandtraceonly when the extra volume is justified