U01: Govern an autonomous sprint without outsourcing approval
Choose the commands you use
Operating system
CodeArbiter host
Know before you begin
U01 is a guided, runnable lesson in Preview 0.30. The website remains the primary lesson surface. Academy CLI prepares the reviewed attempt, checks its local evidence boundary, and creates a non-destructive numbered retry when recovery is needed.
Complete P08 first. In your personal fork, keep the repository root open in a native terminal and the selected CodeArbiter harness. A command typed directly in a native terminal has no !. A shell command passed through a harness begins with exactly one !. A host-native CodeArbiter command belongs to the harness and has no !. The action cards label each case.
Confirm the fork-first lesson boundary
You · Browser · All operating systems
Open the reviewed immutable Preview 0.30 U01 boundary manifest before using any command. U01 is public only in your personal fork with origin as the fork, upstream fetch-only, and origin as the effective push remote.
The scenario and sprint can create commits, a fork branch, and a pull request; keeping upstream non-pushable is the exercise's safety boundary.
Reviewed resources for Confirm the fork-first lesson boundary
You are in a clean forked checkout that completed P08 and can safely create a U01 attempt.
If origin can push to arbiterForge or the topology is incomplete, stop and return to P08. Do not rewrite remotes or bypass the safety check for this lesson.
The public Preview 0.30 manifest lists U01, while the Prepare preflight independently validates the live fork topology.
What you will prove
On a prepared U01 attempt, you will prove that a sprint did not self-authorize its work. The learner reads the proposed specification, decides whether its scope is acceptable, then reads and explicitly approves the derived plan before autonomy can begin. The completed attempt preserves the derived specification, plan, append-only sprint log, and one bounded operator guide.
This is a documentation-only sprint. Its allowed final commit contains four paths: the spec, plan, sprint log, and docs/academy-sprint-summary.md. The real sprint lane then pushes only the learner fork branch and opens a pull request. It never pushes directly to upstream or merges. It does not change product code, tests, dependencies, or remotes.
Prepare safely
Prepare a fork-safe U01 attempt
Run one installed Academy Prepare command from the clean forked repository root. It creates a numbered academy/U01-autonomous-sprint attempt with the reviewed scenario and brief.
Prepare installs only reviewed scenario bytes after validating the fork/upstream push boundary, so the sprint begins from an inspectable base.
Academy · Native terminal · Windows
$academy = "$env:LOCALAPPDATA\ArbiterAcademy\preview-0.30\Scripts\arbiter-academy.exe"
& $academy --repository (Get-Location).Path prepare U01-autonomous-sprint
Academy · Native terminal · macOS
academy="${XDG_DATA_HOME:-$HOME/.local/share}/arbiter-academy/preview-0.30/bin/arbiter-academy"
"$academy" --repository "$PWD" prepare U01-autonomous-sprint
Academy · Native terminal · Linux
academy="${XDG_DATA_HOME:-$HOME/.local/share}/arbiter-academy/preview-0.30/bin/arbiter-academy"
"$academy" --repository "$PWD" prepare U01-autonomous-sprint
Academy reports the numbered attempt branch and preparation commit; training_scenarios/U01-autonomous-sprint.json and U01-sprint-brief.json are committed on that branch.
If remote validation or preparation fails, preserve the error and return to P08. Do not copy scenario files or create an academy attempt branch yourself.
The Academy output names academy/U01-autonomous-sprint/N and its preparation commit; git status --short is empty afterward.
Prepare must run in the forked checkout that passed P08's remote safety work. It creates the numbered attempt from reviewed fixture bytes; do not recreate that branch or scenario manually.
Inspect the prepared scenario
After Prepare reports the numbered attempt, use one command surface to inspect the installed scenario file. A native terminal command has no !. A harness shell command begins with exactly one !.
The scenario declares the bounded target, approval-required starting condition, and the future operator-guide evidence without claiming that the current public toolchain installed it.
You · Native terminal · Windows
Get-Content training_scenarios/U01-autonomous-sprint.json
You · Native terminal · macOS
cat training_scenarios/U01-autonomous-sprint.json
You · Native terminal · Linux
cat training_scenarios/U01-autonomous-sprint.json
You · Codex harness · Windows
! Get-Content training_scenarios/U01-autonomous-sprint.json
You · Claude Code harness · All operating systems
! cat training_scenarios/U01-autonomous-sprint.json
The prepared attempt shows autonomous_sprint, academy-sprint, approval-required, and docs/academy-sprint-summary.md.
If the file is absent, do not create it by hand. Confirm that Prepare succeeded on the U01 attempt branch, then use Reset only after preserving the failed attempt.
Retain the scenario file, U01-sprint-brief.json, and the numbered attempt branch name.
The scenario is installed by the reviewed Academy fixture. Its named deliverable and approval-required starting condition explain the exact boundary the prepared attempt now contains.
Practice
The next actions run only on the numbered attempt that Prepare just created. They do not authorize an autonomous sprint on an ordinary checkout.
Use the host-native sprint command on the prepared attempt
On the prepared U01 attempt, run this CodeArbiter command in the selected harness. It is not a shell command, so it never begins with !. The real sprint lane requires explicit learner approval of both its proposed specification and its derived plan before autonomous work begins; it ends by pushing the learner fork branch and opening a pull request.
An autonomous sprint may execute only after its specification and plan gates. It cannot self-authorize the scope of an Academy exercise or merge its own pull request.
Your agent · Claude Code harness · All operating systems
/ca:sprint academy-sprint
Your agent · Codex harness · All operating systems
$ca-sprint academy-sprint
Your agent · Pi harness · All operating systems
/ca-sprint academy-sprint
Your agent · Pi harness · All operating systems
/skill:ca-sprint academy-sprint
The host presents the proposed specification, then its derived plan, before autonomous work begins; after its commit gate it opens a pull request from the learner fork and never merges it.
If the host cannot find the sprint command, do not replace it with shell syntax. Confirm the supported host installation and prepared attempt first.
Preserve the proposed specification, derived plan, operator guide, and appended sprint-log decision record. Check validates repository facts, not host invocation, approval, or pull-request creation.
Make the sprint specification decision
You · Active CodeArbiter harness · All operating systems
Read the proposed specification before answering the host. Approve only the bounded academy-sprint operator guide with explicit acceptance criteria, no product-code, test, dependency, or remote changes, and the real sprint terminal: push only the learner fork branch, open a pull request, never merge. Decline or revise vague scope.
The learner, not the autonomous process, owns the scope decision that permits later execution.
The host either records an explicit approved specification and proceeds, or stops with the requested revision still visible.
If the proposal changes boundaries you did not intend, decline it. Preserve the proposal and use Reset only after you have reviewed the failed attempt.
Check inspects the prepared brief, final spec, plan, guide, append-only log, exact commit paths, and clean worktree. It does not verify the approval itself.
Make the sprint plan decision
You · Active CodeArbiter harness · All operating systems
After approving the bounded specification, read the derived plan before answering the host. Approve only a plan that preserves the academy-sprint operator-guide scope, acceptance criteria, no product-code, test, dependency, or remote changes, and the fork-only pull-request terminal. Decline or revise a plan that expands those boundaries.
The learner owns the plan approval that permits autonomous execution; approving a specification alone is not enough.
The host either records an explicit approved plan and begins autonomous execution, or stops with the requested plan revision visible.
If the plan changes boundaries you did not intend, decline it. Preserve the proposed specification and derived plan, then use Reset only after reviewing the failed attempt.
Check inspects final repository facts. It does not verify either approval or a host conversation.
Inspect the governed artifact paths
On the prepared attempt after the sprint has stopped or completed, inspect the four named artifact paths in a native terminal. This is an observation command, so it has no !.
The verifier-owned evidence boundary is explicit before the lesson becomes publicly runnable.
You · Native terminal · Windows
Get-ChildItem .codearbiter/specs/academy-sprint.md, .codearbiter/plans/academy-sprint.md, .codearbiter/sprint-log.md, docs/academy-sprint-summary.md
You · Native terminal · macOS
ls -l .codearbiter/specs/academy-sprint.md .codearbiter/plans/academy-sprint.md .codearbiter/sprint-log.md docs/academy-sprint-summary.md
You · Native terminal · Linux
ls -l .codearbiter/specs/academy-sprint.md .codearbiter/plans/academy-sprint.md .codearbiter/sprint-log.md docs/academy-sprint-summary.md
A completed exercise exposes the spec, plan, append-only sprint log, and operator guide for review. Their presence alone is not a passing result.
If any artifact is absent or the worktree is not the prepared attempt, stop. Do not create substitute files to imitate evidence.
Retain the paths and review result. The predicate also requires their scope, one commit, preserved log prefix, and a clean worktree.
The sprint specification and plan gates are where the learner sets authority. Check can verify the resulting repository evidence, but it cannot prove that a person understood the proposal, made a good judgment call, typed a host command, or created the pull request.
Recognize success
Success is a reviewable boundary: a prepared attempt, a bounded specification and plan, an append-only sprint record, and one operator guide in the same committed packet. The real sprint lane opens a pull request from the learner fork after its commit gate. It is not a public release claim, proof that a pull request exists, or permission to merge.
Check accepts one linear learner commit containing exactly those four paths. It checks the prepared brief, exact headings and scope, a preserved sprint-log prefix, the required guide topics, and a clean worktree. It does not authenticate approval.
Check
Check the bounded local evidence
Run one installed Academy Check command from the prepared attempt. The reviewed profile evaluates the bounded four-artifact packet described by this lesson.
The installed release accepts only the reviewed sprint-evidence contract and fails closed for altered scope or unsafe remotes.
Academy · Native terminal · Windows
$academy = "$env:LOCALAPPDATA\ArbiterAcademy\preview-0.30\Scripts\arbiter-academy.exe"
& $academy --repository (Get-Location).Path check U01-autonomous-sprint
Academy · Native terminal · macOS
academy="${XDG_DATA_HOME:-$HOME/.local/share}/arbiter-academy/preview-0.30/bin/arbiter-academy"
"$academy" --repository "$PWD" check U01-autonomous-sprint
Academy · Native terminal · Linux
academy="${XDG_DATA_HOME:-$HOME/.local/share}/arbiter-academy/preview-0.30/bin/arbiter-academy"
"$academy" --repository "$PWD" check U01-autonomous-sprint
Academy Check reports pass only when the prepared brief, exact artifact scope, safe remote topology, one learner commit, and clean worktree all match; otherwise it reports a nonzero failure.
Do not edit progress or release data to change the result. Inspect the reported repository boundary, preserve the attempt, then Reset for a numbered retry if needed.
The Check result and the committed four-path packet are local evidence. They do not prove host invocation, approval, or pull-request creation.
Check verifies repository-derived evidence rather than a transcript supplied by the learner. It does not prove that a host command ran, that a learner approved a proposal knowingly, or that an autonomous process reasoned well. It does not prove that a pull request was created.
Recover or continue
Keep a failed attempt intact for review. Do not amend, rebase, force-update, delete, or overwrite history to make an incomplete sprint look completed.
Hint 1
Separate the sprint's specification approval and plan approval from its later implementation activity. Autonomous execution may begin only after both explicit gates.
Hint 2
The four named artifact paths are an evidence boundary. A valid packet keeps the prepared sprint-log prefix unchanged and commits no unrelated file.
Hint 3
Treat a failed Check as evidence to inspect, not an invitation to rewrite history or manufacture artifact content. Preserve the attempt and use Reset only after returning safely to main.
Return to main only after the attempt is clean
On a clean checked attempt, return to main from a native terminal. This is a direct shell command, so it has no !.
Leaving evidence intact keeps an incomplete training run inspectable without treating it as public completion.
You · Native terminal · Windows
$status = git status --short
if ($status) {
Write-Error "The U01 attempt is dirty. Inspect it before switching branches."
exit 1
}
git switch main
You · Native terminal · macOS
status="$(git status --short)"
if [ -n "$status" ]; then
printf '%s\n' "The U01 attempt is dirty. Inspect it before switching branches." >&2
exit 1
fi
git switch main
You · Native terminal · Linux
status="$(git status --short)"
if [ -n "$status" ]; then
printf '%s\n' "The U01 attempt is dirty. Inspect it before switching branches." >&2
exit 1
fi
git switch main
git status --short prints nothing before main becomes the active branch.
If status shows changes, stop and inspect them. Do not discard, amend, rebase, force-update, or delete the attempt branch to make it look clean.
The numbered attempt remains reachable for later review.
Reset safely to a numbered retry
After returning to main with the failed attempt preserved, run one installed Academy Reset command. Reset archives no history destructively and creates the next numbered U01 attempt from the reviewed base.
A retry must preserve the prior evidence while creating an independent, inspectable scenario branch.
Academy · Native terminal · Windows
$academy = "$env:LOCALAPPDATA\ArbiterAcademy\preview-0.30\Scripts\arbiter-academy.exe"
& $academy --repository (Get-Location).Path reset U01-autonomous-sprint
Academy · Native terminal · macOS
academy="${XDG_DATA_HOME:-$HOME/.local/share}/arbiter-academy/preview-0.30/bin/arbiter-academy"
"$academy" --repository "$PWD" reset U01-autonomous-sprint
Academy · Native terminal · Linux
academy="${XDG_DATA_HOME:-$HOME/.local/share}/arbiter-academy/preview-0.30/bin/arbiter-academy"
"$academy" --repository "$PWD" reset U01-autonomous-sprint
Academy reports academy/U01-autonomous-sprint/N+1 and a new preparation commit; the earlier attempt branch remains reachable.
Do not simulate Reset with destructive Git commands. If Reset refuses because the current attempt is dirty or still active, inspect and preserve it before retrying.
Both numbered attempt refs are reachable and git status --short is empty on the new attempt.
U02 is published in Preview 0.30. Continue through its published Academy lesson rather than using unpublished source exercises as a substitute for a guided route.
Understand the mechanism
The scenario supplies an approval-required documentation scope, the required operator-guide title, and three topics. The checkpoint compares that prepared brief with the final spec, plan, guide, and append-only sprint log. It accepts one clean descendant commit with no extra paths.
This guide uses the shared action manifest and renderer, records each actor and execution surface, and keeps the website-first lesson boundary intact.