Requires uv and Node.js 20+.
uv sync
source .venv/bin/activate
make agent-bootstrap
make agent-test- read AGENTS.md
- read docs/agent/README.md
- run
make agent-report CHANGED_FILES="..." - run the smallest relevant gate before asking for review
PR-intended commits must follow this format:
<type>(<scope>): <summary>
Examples:
feat(runtime): add task scheduler skeletondocs(agent): add release modelchore(harness): tighten worktree guardrails
Rules:
- allowed types:
build,chore,ci,docs,feat,fix,perf,refactor,revert,test - scope is required
- keep the subject line to 72 characters or fewer
- do not end the subject with a period
- use one atomic change per commit
- sign PR-intended commits with
git commit -s
Preferred scopes while the runtime is still settling:
agentarchitecturecontextdocsharnessmemoryplanningreleaseruntimesessionteststools
Local enforcement is installed by:
make agent-bootstrap- one task or subtask per worktree
- one branch per worktree
- avoid overlapping write scopes between concurrent agents
- prefer branch names that explain intent:
feat/<topic>fix/<topic>docs/<topic>chore/<topic>exp/<topic>
Canonical commands:
make agent-worktree-add WORKTREE_NAME=harness-docs WORKTREE_BRANCH=docs/harness-docs
make agent-worktree-list
make agent-worktree-remove WORKTREE_NAME=harness-docs
make agent-wave-show WAVE=wave-0
make agent-wave-start WAVE=wave-0
make agent-wave-status WAVE=wave-0The first commit on main must exist before worktrees can be created.
For parallel implementation waves, the repo defaults to one user-facing main
session on main.
That main session should:
- choose the largest ready subset of task cards that can move in parallel without overlapping write scopes
- create one worktree per card
- assign one worker session per worktree, explicitly pinning the worker model to
gpt-5.4 - hand off assignment packets that make the write scope, validation command, and ship path explicit
- return once those assignments are clear, or continue directly into review and integration if a finished branch is already waiting
- review finished worker branches when resuming the main checkout
- cherry-pick approved atomic commits into
main - push
main, clean up completed lanes, and open the next ready tracks
Worker sessions should:
- stay inside one task-card write scope
- run the repo gate in their own worktree
- ship their own branch to
origin - never integrate directly into
main
Run the smallest gate that proves the current change:
make agent-validatemake agent-context-audit CHANGED_FILES="..."make agent-lintmake agent-testmake agent-fast-gatemake agent-pr-gatemake agent-ship AGENT_COMMIT_MESSAGE='...'
When the current change is truly one atomic capability and the working tree only contains that scope, this is the default closeout path for both worker branches and standalone main-session changes:
make agent-ship AGENT_COMMIT_MESSAGE='docs(system-design): import provisional design baseline'agent-ship will:
- inspect the current working tree
- run the repo PR gate against the active diff
- stage all current changes
- create a signed commit with the supplied scoped Conventional Commit subject
- push the current branch to
origin
Do not stop at agent-validate, agent-test, or agent-pr-gate alone when the
change is complete and publishable. For repo-visible completed work, close out
with agent-ship unless one of the exceptions below applies.
Do not use agent-ship when:
- the working tree contains multiple unrelated changes
- you still need to split the diff into more than one commit
- you are not ready for the branch to be published
Use docs/agent/plans/ when:
- the task spans multiple sessions
- several agents need disjoint ownership
- the dependency order matters
- the repo needs a durable execution graph that should survive chat history
- the main session needs to maximize safe parallelism without losing track ownership
Use docs/agent/adr/ when:
- a decision changes stable repo structure, not just one execution step
Use docs/agent/tech-debt/ when:
- a deliberate gap remains after shipping
Every PR should state:
- what changed
- why it changed now
- affected surfaces
- validation run
- open follow-ups or debt, if any
Use the PR template and keep the scope small enough that the reviewer can reason about the change without reconstructing hidden context.