F03: Start a task with its work
Choose the commands you use
Operating system
CodeArbiter host
Know before you begin
Preview 0.30 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.
What you will prove
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.
Prepare safely
Prepare a runnable attempt
From clean main, run the installed Preview 0.30 Academy Prepare command for your operating system.
The prepared commit must bind the original board line and contract sentence before learner work begins.
You · Native terminal · Windows
$academy = "$env:LOCALAPPDATA\ArbiterAcademy\preview-0.30\Scripts\arbiter-academy.exe"
& $academy --repository (Get-Location).Path prepare F03-work-the-board
You · Native terminal · macOS
academy="${XDG_DATA_HOME:-$HOME/.local/share}/arbiter-academy/preview-0.30/bin/arbiter-academy"
"$academy" --repository "$PWD" prepare F03-work-the-board
You · Native terminal · Linux
academy="${XDG_DATA_HOME:-$HOME/.local/share}/arbiter-academy/preview-0.30/bin/arbiter-academy"
"$academy" --repository "$PWD" prepare F03-work-the-board
Academy creates a clean numbered F03 attempt with academy.docs.0001 queued and docs/ticket-list-contract.md seeded.
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.
The prepared commit establishes the comparison base.
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.
The exact task text defines the work file, evidence, and prohibition on completing the task in this lesson.
You · Native terminal · Windows
Select-String -Path '.codearbiter/open-tasks.md' -Pattern 'academy.docs.0001' -Context 1,5
You · Native terminal · macOS
grep -n -A 5 -B 1 'academy.docs.0001' .codearbiter/open-tasks.md
You · Native terminal · Linux
grep -n -A 5 -B 1 'academy.docs.0001' .codearbiter/open-tasks.md
The prepared board shows academy.docs.0001 as [ ] and names docs/ticket-list-contract.md as its sole work boundary.
If the task is absent, already started, completed, or points elsewhere, stop. Do not substitute another task or edit the board by hand.
The prepared task line and continuation fields identify this exercise boundary.
Read the task's description, done condition, boundary, lane, and evidence link. Do not substitute a similarly named task or broaden the correction.
Practice
Start the docs task through CodeArbiter
In the prepared attempt, use the host-native task command to start academy.docs.0001. This is an agent command, not a shell command.
The task writer owns the canonical [~] transition and started date.
Your agent · Claude Code harness · All operating systems
/ca:task start academy.docs.0001
Your agent · Codex harness · All operating systems
$ca-task start academy.docs.0001
Your agent · Pi harness · All operating systems
/ca-task start academy.docs.0001
Your agent · Pi harness · All operating systems
/skill:ca-task start academy.docs.0001
The task writer changes academy.docs.0001 from [ ] to [~], adds the real started date, and leaves its text unchanged.
If the command blocks, preserve its message and stop. Do not imitate the transition with a direct board edit.
The durable board state can later be inspected, but it cannot authenticate which agent command produced it.
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.
The board transition must ride the work commit, so it remains unstaged and uncommitted at this point.
You · Native terminal · Windows
git diff -- .codearbiter/open-tasks.md
You · Native terminal · macOS
git diff -- .codearbiter/open-tasks.md
You · Native terminal · Linux
git diff -- .codearbiter/open-tasks.md
The board diff contains one queued-to-started line change for academy.docs.0001, and no commit exists after Prepare yet.
If another task or continuation line changed, stop before the docs lane. Preserve the diff for diagnosis.
The reviewed unstaged diff shows the candidate board half of the co-commit.
The task writer's change stays uncommitted while you do the work it started.
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.
The docs chore needs one exact factual correction, not a broad rewrite or implementation change.
You · Native terminal · Windows
Get-Content 'docs/ticket-list-contract.md'
You · Native terminal · macOS
cat docs/ticket-list-contract.md
You · Native terminal · Linux
cat docs/ticket-list-contract.md
You can state the one replacement sentence and the rule it records: claimed tickets show a claimant; open tickets do not.
If the prepared sentence already differs, stop. Do not adapt the correction to a different document version.
The prepared document supplies the original byte boundary for Check.
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 [~].
The docs lane applies its normal review, anti-slop, commit-gate, and branch-completion workflow to the bounded correction.
Your agent · Claude Code harness · All operating systems
/ca:chore docs Correct claimant visibility in docs/ticket-list-contract.md
Your agent · Codex harness · All operating systems
$ca-chore docs Correct claimant visibility in docs/ticket-list-contract.md
Your agent · Pi harness · All operating systems
/ca-chore docs Correct claimant visibility in docs/ticket-list-contract.md
Your agent · Pi harness · All operating systems
/skill:ca-chore docs Correct claimant visibility in docs/ticket-list-contract.md
The host changes only the contract sentence, preserves the in-progress board transition, and pauses for review before its normal commit gate.
If the host proposes code, task completion, another document, or release metadata, stop the chore and preserve the current diff.
The later commit can prove the resulting repository boundary, not that this agent command ran.
When the docs chore pauses at its commit gate, inspect the staged state before you approve it.
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.
Starting the task and doing its bounded work belong in one commit. A board-only commit or a document-only commit breaks that rule.
You · Native terminal · Windows
git diff --staged --name-only
git diff --staged
You · Native terminal · macOS
git diff --staged --name-only
git diff --staged
You · Native terminal · Linux
git diff --staged --name-only
git diff --staged
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.
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.
The learner reviews the exact staged co-commit before authorizing the docs lane to continue.
After the commit gate succeeds, use the normal branch-completion handoff.
Keep the attempt branch local
You · Active CodeArbiter harness · All operating systems
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).
The Academy attempt needs its local evidence branch intact and does not need remote publication.
The numbered attempt stays checked out and clean with one local co-commit, no push, and no hosted pull request.
Do not choose merge, push, pull request, or discard. If another option already ran, stop and preserve the resulting state.
The local branch and commit remain available; no hosted pull request is created or claimed.
Confirm the one-commit result
Inspect status, the latest commit, and its changed paths after choosing Keep the branch as-is.
Check requires one post-Prepare commit, the exact two-path co-commit, and no non-ignored worktree state.
You · Native terminal · Windows
git status --short
git log --oneline --decorate -1
git diff-tree --no-commit-id --name-only -r HEAD
You · Native terminal · macOS
git status --short
git log --oneline --decorate -1
git diff-tree --no-commit-id --name-only -r HEAD
You · Native terminal · Linux
git status --short
git log --oneline --decorate -1
git diff-tree --no-commit-id --name-only -r HEAD
Status is empty, and the only post-Prepare commit changes .codearbiter/open-tasks.md and docs/ticket-list-contract.md.
If status is not clean or history has another learner commit, preserve the branch. Do not amend, squash, reset, or delete evidence.
The one post-Prepare commit and no non-ignored worktree state form the durable local result.
Recognize success
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
Check the durable co-commit
From the retained attempt branch, run the installed Preview 0.30 Academy Check command for your operating system.
Repository evidence can validate content and history without claiming agent telemetry.
You · Native terminal · Windows
$academy = "$env:LOCALAPPDATA\ArbiterAcademy\preview-0.30\Scripts\arbiter-academy.exe"
& $academy --repository (Get-Location).Path check F03-work-the-board
You · Native terminal · macOS
academy="${XDG_DATA_HOME:-$HOME/.local/share}/arbiter-academy/preview-0.30/bin/arbiter-academy"
"$academy" --repository "$PWD" check F03-work-the-board
You · Native terminal · Linux
academy="${XDG_DATA_HOME:-$HOME/.local/share}/arbiter-academy/preview-0.30/bin/arbiter-academy"
"$academy" --repository "$PWD" check F03-work-the-board
Check accepts only the exact one-commit, two-path, clean result with academy.docs.0001 still [~].
Read the named durable-state mismatch, repair only that mismatch, and run Check again.
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.
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.
Recover or continue
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.
Reset for a fresh retry
From the clean retained F03 attempt branch, not main, run the installed Preview 0.30 Academy Reset command for your operating system when you need a fresh F03 attempt.
A new attempt must preserve failed evidence instead of rewriting the one-commit history.
You · Native terminal · Windows
$academy = "$env:LOCALAPPDATA\ArbiterAcademy\preview-0.30\Scripts\arbiter-academy.exe"
& $academy --repository (Get-Location).Path reset F03-work-the-board
You · Native terminal · macOS
academy="${XDG_DATA_HOME:-$HOME/.local/share}/arbiter-academy/preview-0.30/bin/arbiter-academy"
"$academy" --repository "$PWD" reset F03-work-the-board
You · Native terminal · Linux
academy="${XDG_DATA_HOME:-$HOME/.local/share}/arbiter-academy/preview-0.30/bin/arbiter-academy"
"$academy" --repository "$PWD" reset F03-work-the-board
Reset archives the failed prepared attempt before a new numbered attempt is created.
Keep work you need intact; do not force-reset, rebase, or delete the branch to imitate Academy attempt bookkeeping.
Reset preserves failed evidence before a new attempt begins.
Understand the mechanism
$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.