Preview 0.30

U01: Govern an autonomous sprint without outsourcing approval

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.

Why

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

Expected result

You are in a clean forked checkout that completed P08 and can safely create a U01 attempt.

If that does not happen

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.

Evidence

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.

Why

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

Expected result

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 that does not happen

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.

Evidence

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 !.

Why

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

Expected result

The prepared attempt shows autonomous_sprint, academy-sprint, approval-required, and docs/academy-sprint-summary.md.

If that does not happen

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.

Evidence

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.

Why

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

Expected result

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 that does not happen

If the host cannot find the sprint command, do not replace it with shell syntax. Confirm the supported host installation and prepared attempt first.

Evidence

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.

Why

The learner, not the autonomous process, owns the scope decision that permits later execution.

Expected result

The host either records an explicit approved specification and proceeds, or stops with the requested revision still visible.

If that does not happen

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.

Evidence

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.

Why

The learner owns the plan approval that permits autonomous execution; approving a specification alone is not enough.

Expected result

The host either records an explicit approved plan and begins autonomous execution, or stops with the requested plan revision visible.

If that does not happen

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.

Evidence

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 !.

Why

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

Expected result

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 that does not happen

If any artifact is absent or the worktree is not the prepared attempt, stop. Do not create substitute files to imitate evidence.

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.

Why

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

Expected result

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.

If that does not happen

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.

Evidence

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 !.

Why

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

Expected result

git status --short prints nothing before main becomes the active branch.

If that does not happen

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.

Evidence

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.

Why

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

Expected result

Academy reports academy/U01-autonomous-sprint/N+1 and a new preparation commit; the earlier attempt branch remains reachable.

If that does not happen

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.

Evidence

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.

Next step

Continue with U02-override-audit-metrics.

Recovery guidance