P02 is a public guided and runnable lesson in this preview. Its action cards use the installed Academy verifier and the shared public lesson renderer.
The installed receipt recorder creates the same contained, untracked local receipt on Windows, macOS, and Linux. Select your operating system on each native-terminal card.
This is an offline-local pull-request rehearsal. Academy temporarily routes the checkout to two verifier-owned local bare repositories. It does not open GitHub, contact a hosted reviewer, run hosted CI, or prove that a person reviewed the change. The Browser explains the boundary; the native terminal and active codeArbiter harness perform the lesson work.
1
YouBrowser
Read the offline boundary
Read this public lesson before running a command. The exercise uses local bare repositories and never creates a hosted pull request. The installed recorder creates the same single local receipt on Windows, macOS, and Linux.
Why this matters: The learner must distinguish local proof from a hosted collaboration workflow.
Expected result
You can state that this is a public offline-local rehearsal with a complete native Windows, macOS, and Linux receipt path.
Evidence
No repository state changes yet.
If that does not happen
If you expected a GitHub pull request or hosted CI, stop here and reread the boundary.
You will leave two learner commits after the prepared commit: one exact Workshop Queue work range, then one separate receipt-only commit. The prepared learner origin receives the work head. The prepared official upstream never receives the attempt branch.
2
You
Prepare the numbered local attempt
In a native terminal outside the checkout, replace every literal <learner-repository> in the selected command with the absolute path to the fork clone you used for P01. It is a placeholder, not a directory you can paste literally. Then run Prepare and record the printed branch and prepared commit before entering that checkout.
Why this matters: Prepare establishes the verifier-owned local topology before learner work begins.
Prepare from outside the checkout, preserve the printed branch, prepared commit, and logical repository IDs, then enter that exact checkout. Do not use an active harness shell command for this setup: it changes the repository and belongs in the native terminal.
3
You
Enter and guard the prepared checkout
Enter the learner checkout in the native terminal. Compare the printed branch and prepared commit to the live checkout, then inspect status and remotes.
Why this matters: The guard prevents review or commit work in the wrong repository or attempt.
Windows
Set-Location -LiteralPath '<learner-repository>'
git branch --show-current
git rev-parse HEAD
git status --short
git remote -v
macOS
cd '<learner-repository>'
git branch --show-current
git rev-parse HEAD
git status --short
git remote -v
Linux
cd '<learner-repository>'
git branch --show-current
git rev-parse HEAD
git status --short
git remote -v
Expected result
The branch and HEAD match Prepare, status is clean, and origin and upstream use local exercise routes.
Evidence
You confirmed the target before generating work evidence.
If that does not happen
If any value differs, preserve the output and Reset instead of changing remotes by hand.
4
You
Inspect the prepared exercise change
Inspect the two prepared paths and read the scenario before staging them. Do not stage a third path.
Why this matters: The work range is intentionally limited to the two Workshop Queue paths.
You decide whether the local review is cleared. Ask the active agent to inspect the staged two-file boundary and run the codeArbiter review gate. A cleared learner declaration is evidence you supply; it is not authenticated human approval.
6
You
Declare the review boundary
Paste the reviewed request into your selected active harness. It asks the agent to inspect only the staged two-path change and stop with findings; you decide whether findings are cleared before asking for a commit.
Why this matters: The learner owns the review decision; Academy does not authenticate it as human approval.
Any OS · Claude Code
Review only the staged change in tests/test_cli.py and workshop_queue/cli.py. Show the staged path list, inspect the staged diff for the prepared exercise boundary, and report concrete findings or state that none remain. Do not stage, commit, push, change files, or declare the review cleared; stop for my decision.
Any OS · Codex
Review only the staged change in tests/test_cli.py and workshop_queue/cli.py. Show the staged path list, inspect the staged diff for the prepared exercise boundary, and report concrete findings or state that none remain. Do not stage, commit, push, change files, or declare the review cleared; stop for my decision.
Any OS · Pi
Review only the staged change in tests/test_cli.py and workshop_queue/cli.py. Show the staged path list, inspect the staged diff for the prepared exercise boundary, and report concrete findings or state that none remain. Do not stage, commit, push, change files, or declare the review cleared; stop for my decision.
Expected result
You have a bounded review request and a conscious cleared or not-cleared decision.
Evidence
The later receipt records only your cleared declaration.
If that does not happen
If findings remain, correct only the exercise change and review again. Do not declare it cleared early.
7
Your host
Let the agent run the review gate
Use the host-native codeArbiter review command after the learner asks for the bounded review. This is a harness command, never a shell command.
Why this matters: The review gate produces the agent-side review result without the learner imitating a terminal command.
Any OS · Claude Code
/ca:review
Any OS · Codex
$ca-review
Any OS · Pi
/ca-review
Any OS · Pi
/skill:ca-review
Expected result
The active agent reports the review result for the staged work boundary.
Evidence
The learner has inspected the review result but Check cannot authenticate who reviewed.
If that does not happen
If the review gate blocks, preserve the finding and resolve it before the work commit.
8
Your host
Let the agent commit the reviewed work
After the learner approves the exact two staged paths and clears the review, invoke the host-native codeArbiter commit gate.
Why this matters: The work commit remains separate from the later receipt-only commit.
Any OS · Claude Code
/ca:commit
Any OS · Codex
$ca-commit
Any OS · Pi
/ca-commit
Any OS · Pi
/skill:ca-commit
Expected result
One new commit changes only tests/test_cli.py and workshop_queue/cli.py.
Evidence
The local work range starts after the prepared commit.
If that does not happen
If the gate blocks, preserve its finding. Do not substitute git commit or amend another attempt.
9
You
Prove the work range and push only origin
In the native terminal, inspect the nonempty one-commit range, push its head to origin, then compare both local bare remotes. Never push upstream.
Why this matters: The receipt binds the exact work head only after the learner origin contains it.
Origin reports the attempt work head and upstream reports no attempt ref.
Evidence
The receipt will bind the origin-only local push proof.
If that does not happen
If origin differs or upstream has the ref, stop and preserve the evidence. Do not force-push or edit the remotes.
10
You
Record the declared local receipt
After deciding the review is cleared, run the installed helper in the native terminal. It writes one untracked canonical receipt and does not stage, commit, or push it.
Why this matters: The helper formats only recomputable local facts plus the learner declaration.
Windows
$academy = "$env:LOCALAPPDATA\ArbiterAcademy\preview-0.32\Scripts\arbiter-academy.exe"
& $academy --repository (Get-Location).Path record P02-commit-review-pr --review-declared-cleared
macOS
academy="${XDG_DATA_HOME:-$HOME/.local/share}/arbiter-academy/preview-0.32/bin/arbiter-academy"
"$academy" --repository "$PWD" record P02-commit-review-pr --review-declared-cleared
Linux
academy="${XDG_DATA_HOME:-$HOME/.local/share}/arbiter-academy/preview-0.32/bin/arbiter-academy"
"$academy" --repository "$PWD" record P02-commit-review-pr --review-declared-cleared
Expected result
Only .codearbiter/reports/academy/P02-pr-receipt.json appears as untracked work.
Evidence
The output says it recorded a learner-declared offline-local review receipt.
If that does not happen
If it refuses, preserve the message and use Reset. Do not hand-write a replacement receipt.
11
You
Stage only the receipt
Stage the one canonical receipt path and inspect the staged path list before asking the agent to commit it.
Why this matters: The final commit may contain only the receipt.
The worktree is clean. The work range is nonempty, origin has its exact work head, upstream has no attempt ref, and the receipt is committed separately. This is local evidence only, not a hosted pull request.
13
You
Confirm the attempt is clean
Inspect status in the native terminal before Check. A clean worktree means the receipt is committed rather than merely present.
Why this matters: Check accepts committed evidence, not an uncommitted local file.
Windows
git status --short
macOS
git status --short
Linux
git status --short
Expected result
Git prints nothing.
Evidence
The checkout matches the receipt commit.
If that does not happen
If Git prints a path, preserve the committed attempt and resolve only the uncommitted path. Do not reset completed evidence.
Academy Check recomputes the prepared branch, remotes, exact patch, pushed work range, and later receipt-only commit. It cannot prove who reviewed, review quality, command chronology, a hosted pull request, hosted CI, or GitHub remote use.
14
You
Run external Academy Check
Run the installed Check command from the native terminal. It recomputes the offline-local evidence and records progress only after passing.
Why this matters: External verification separates accepted Git facts from the learner's local narration.
If a guard, record, or Check step fails, preserve its output. Use the rendered Reset action only when the prepared topology still matches; it archives the attempt before restoring original remotes. Do not edit remotes, delete evidence, rebase, force-push, or manufacture a receipt.
15
You
Preserve and reset an attempt
Use Reset only for a retry or when directed by a failure message. It archives the current attempt before restoring the original topology.
Why this matters: Preservation-first recovery keeps failed evidence inspectable.
Compare the branch and HEAD printed by Prepare with git branch --show-current and git rev-parse HEAD. A mismatch means you are not in the prepared attempt.
Keep the two commits distinct: first the two Workshop Queue paths, then the one receipt path. The helper refuses an uncommitted or ambiguous work range.
If origin or upstream evidence differs, stop. The local bare routes are verifier-owned exercise state; editing them would erase the condition you need to understand.
The receipt is a canonical local statement that binds your declared cleared review to Git facts the verifier can recompute. The separate receipt commit keeps the reviewed work range distinct from the declaration about it. Continue to P03 after Reset or after preserving this completed attempt.