Preview 0.32 publishes F03 as a runnable Foundation lesson. Complete F02 — Orient to live governance
state) first, then begin from a clean numbered attempt with
academy.docs.0001 queued and docs/ticket-list-contract.md seeded. Keep a native terminal and one
active codeArbiter host at that same repository. Agent commands do not run in the shell.
This attempt uses $ca-task start academy.docs.0001, then $ca-chore docs, to create one
post-Prepare commit. That commit must contain both .codearbiter/open-tasks.md and
docs/ticket-list-contract.md. The task remains [~]; this lesson starts bounded work but does not
mark it done.
The docs chore ends at its normal branch-completion handoff. Choose Keep the branch as-is (I’ll
handle it later). This exercise stays local, with no push and no hosted pull request.
Academy creates a clean numbered F03 attempt with academy.docs.0001 queued and docs/ticket-list-contract.md seeded.
Evidence
The prepared commit establishes the comparison base.
If that does not happen
If Prepare reports a missing prerequisite, complete F02 before returning to clean main and trying again. If it reports an existing attempt or dirty checkout, return to clean main or use Reset before trying again.
2
You
Read the bounded docs task
On the prepared attempt, read academy.docs.0001 and its continuation lines before changing anything. Its boundary is docs/ticket-list-contract.md, and the task must remain in progress.
Why this matters: The exact task text defines the work file, evidence, and prohibition on completing the task in this lesson.
In the prepared attempt, use the host-native task command to start academy.docs.0001. This is an agent command, not a shell command.
Why this matters: The task writer owns the canonical [~] transition and started date.
Any OS · Claude Code
/ca:task start academy.docs.0001
Any OS · Codex
$ca-task start academy.docs.0001
Any OS · Pi
/ca-task start academy.docs.0001
Any OS · Pi
/skill:ca-task start academy.docs.0001
Expected result
The task writer changes academy.docs.0001 from [ ] to [~], adds the real started date, and leaves its text unchanged.
Evidence
The durable board state can later be inspected, but it cannot authenticate which agent command produced it.
If that does not happen
If the command blocks, preserve its message and stop. Do not imitate the transition with a direct board edit.
4
You
Inspect the in-progress transition
Inspect the task writer's diff before starting the docs chore. Confirm that only academy.docs.0001 moved to [~] with a started date.
Why this matters: The board transition must ride the work commit, so it remains unstaged and uncommitted at this point.
Windows
git diff -- .codearbiter/open-tasks.md
macOS
git diff -- .codearbiter/open-tasks.md
Linux
git diff -- .codearbiter/open-tasks.md
Expected result
The board diff contains one queued-to-started line change for academy.docs.0001, and no commit exists after Prepare yet.
Evidence
The reviewed unstaged diff shows the candidate board half of the co-commit.
If that does not happen
If another task or continuation line changed, stop before the docs lane. Preserve the diff for diagnosis.
The task writer’s change stays uncommitted while you do the work it started.
5
You
Read the exact contract correction
Read docs/ticket-list-contract.md. The bounded correction replaces its false sentence with: Ticket list output shows the claimant for a claimed ticket and no claimant for an open ticket.
Why this matters: The docs chore needs one exact factual correction, not a broad rewrite or implementation change.
Windows
Get-Content 'docs/ticket-list-contract.md'
macOS
cat docs/ticket-list-contract.md
Linux
cat docs/ticket-list-contract.md
Expected result
You can state the one replacement sentence and the rule it records: claimed tickets show a claimant; open tickets do not.
Evidence
The prepared document supplies the original byte boundary for Check.
If that does not happen
If the prepared sentence already differs, stop. Do not adapt the correction to a different document version.
6
Your host
Run the real docs chore
Invoke the host-native docs chore. When the host asks for scope, supply only the approved claimant-visibility correction in docs/ticket-list-contract.md. Keep academy.docs.0001 at [~].
Why this matters: The docs lane applies its normal review, anti-slop, commit-gate, and branch-completion workflow to the bounded correction.
Any OS · Claude Code
/ca:chore docs Correct claimant visibility in docs/ticket-list-contract.md
Any OS · Codex
$ca-chore docs Correct claimant visibility in docs/ticket-list-contract.md
Any OS · Pi
/ca-chore docs Correct claimant visibility in docs/ticket-list-contract.md
Any OS · Pi
/skill:ca-chore docs Correct claimant visibility in docs/ticket-list-contract.md
Expected result
The host changes only the contract sentence, preserves the in-progress board transition, and pauses for review before its normal commit gate.
Evidence
The later commit can prove the resulting repository boundary, not that this agent command ran.
If that does not happen
If the host proposes code, task completion, another document, or release metadata, stop the chore and preserve the current diff.
When the docs chore pauses at its commit gate, inspect the staged state before you approve it.
7
You
Review the staged co-commit
When the docs chore pauses before commit, run both native-terminal inspections for your operating system: the staged path list and the full staged diff. Authorize its commit gate only after both prove that exactly .codearbiter/open-tasks.md and docs/ticket-list-contract.md are staged, academy.docs.0001 remains [~], and the document contains only the approved sentence replacement.
Why this matters: Starting the task and doing its bounded work belong in one commit. A board-only commit or a document-only commit breaks that rule.
Windows
git diff --staged --name-only
git diff --staged
macOS
git diff --staged --name-only
git diff --staged
Linux
git diff --staged --name-only
git diff --staged
Expected result
Both inspections prove that the staged path set is exactly .codearbiter/open-tasks.md and docs/ticket-list-contract.md. The full staged diff shows the [~] board transition plus only the approved sentence replacement, ready for one commit.
Evidence
The learner reviews the exact staged co-commit before authorizing the docs lane to continue.
If that does not happen
If either inspection shows a missing or extra path, a different diff, or academy.docs.0001 as [x], do not authorize the commit gate. Keep the staged state visible for correction, then run both inspections again before authorizing.
After the commit gate succeeds, use the normal branch-completion handoff.
8
YouActive harness
Keep the attempt branch local
After the docs chore's normal commit gate succeeds and its branch-completion handoff appears, choose Keep the branch as-is (I'll handle it later).
Why this matters: The Academy attempt needs its local evidence branch intact and does not need remote publication.
Expected result
The numbered attempt stays checked out and clean with one local co-commit, no push, and no hosted pull request.
Evidence
The local branch and commit remain available; no hosted pull request is created or claimed.
If that does not happen
Do not choose merge, push, pull request, or discard. If another option already ran, stop and preserve the resulting state.
9
You
Confirm the one-commit result
Inspect status, the latest commit, and its changed paths after choosing Keep the branch as-is.
Why this matters: Check requires one post-Prepare commit, the exact two-path co-commit, and no non-ignored worktree state.
Windows
git status --short
git log --oneline --decorate -1
git diff-tree --no-commit-id --name-only -r HEAD
macOS
git status --short
git log --oneline --decorate -1
git diff-tree --no-commit-id --name-only -r HEAD
Linux
git status --short
git log --oneline --decorate -1
git diff-tree --no-commit-id --name-only -r HEAD
Expected result
Status is empty, and the only post-Prepare commit changes .codearbiter/open-tasks.md and docs/ticket-list-contract.md.
Evidence
The one post-Prepare commit and no non-ignored worktree state form the durable local result.
If that does not happen
If status is not clean or history has another learner commit, preserve the branch. Do not amend, squash, reset, or delete evidence.
The numbered attempt is clean and has exactly one learner commit after Prepare. Its changed
path set is exactly .codearbiter/open-tasks.md plus docs/ticket-list-contract.md. The board keeps
the original academy.docs.0001 task text, changes its marker from [ ] to [~], and records the
started date that matches the commit date.
The contract note has one correction: claimed tickets show their claimant, while open tickets show
no claimant. No other content changes. The branch remains local and checked out after Keep the
branch as-is. There is no hosted pull request.
Check accepts only the exact one-commit, two-path, clean result with academy.docs.0001 still [~].
Evidence
Check can inspect board bytes, document bytes, commit topology, commit date, changed paths, and worktree cleanliness. It cannot prove `$ca-task` ran and cannot prove `$ca-chore` ran.
If that does not happen
Read the named durable-state mismatch, repair only that mismatch, and run Check again.
A Check can compare the prepared board and document blobs with the one post-Prepare commit. It can
validate the exact task transition, correction, commit parent, commit date, changed paths, and clean
worktree. It cannot prove that $ca-task ran, and it cannot prove that $ca-chore ran. Those
are agent invocations, not authenticated repository facts.
If Check reports a durable-state mismatch, repair only that mismatch and run Check again. Stay on the
clean retained F03 attempt branch, not main, when you use Reset for a fresh numbered attempt; it
preserves failed evidence rather than rewriting the retained branch.
Hint 1. The target is academy.docs.0001, and its only work file is
docs/ticket-list-contract.md.
Hint 2. The task must remain [~]. A done transition belongs to later work, not this co-commit.
Hint 3. Review the staged path list before authorizing the docs chore’s commit gate. A board-only
commit and a document-only commit both fail the boundary.
11
You
Reset for a fresh retry
From the clean retained F03 attempt branch, not main, run the installed Preview 0.32 Academy Reset command for your operating system when you need a fresh F03 attempt.
Why this matters: A new attempt must preserve failed evidence instead of rewriting the one-commit history.
Reset archives the failed prepared attempt before a new numbered attempt is created.
Evidence
Reset preserves failed evidence before a new attempt begins.
If that does not happen
Keep work you need intact; do not force-reset, rebase, or delete the branch to imitate Academy attempt bookkeeping.
When F03 Check passes and you are continuing rather than retrying, return to clean main before
opening F04. This preserves the completed F03 branch as evidence while satisfying F04 Prepare’s
base-branch requirement.
12
You
Return safely to main for F04
After F03 Check passes and you do not need Reset, return to main before beginning F04. Keep the completed F03 attempt branch intact.
Why this matters: F04 Prepare requires the Academy base branch, while the retained F03 branch remains the durable local evidence.
Windows
git switch main
if ($LASTEXITCODE -ne 0) { throw "git switch main failed" }
git status --short --branch
macOS
git switch main && git status --short --branch
Linux
git switch main && git status --short --branch
Expected result
main is checked out with an empty status, and the completed numbered F03 attempt branch still exists locally.
Evidence
The terminal shows main and no worktree changes; the retained F03 branch remains available for its Check evidence.
If that does not happen
If status is not empty, do not force-switch, reset, rebase, delete, or hide the attempt. Preserve it and resolve the reported state before continuing.
$ca-task start records that work began. $ca-chore docs performs the bounded non-behavioral change
and carries the dirty board transition through the same governed commit. Co-locating those paths
prevents a board-only commit from claiming progress without work and prevents a document-only commit
from hiding that the task entered progress.
The local Git result is deliberately narrower than the workflow that produced it. Check can
verify the one commit and its bytes, but not either agent invocation, the learner’s review, or the
branch-handoff choice. The guide states those limits instead of treating durable state as telemetry.