This lesson uses the released codeArbiter contract. The website gives the sequence and your host runs the real commands. Academy can inspect repository facts at the end, but it cannot prove an agent’s private reasoning or a human conflict decision.
1
YouBrowser
confirm the released command boundary
Confirm that your host has codeArbiter 2.15.1 for Claude, ca-codex 0.7.2 for Codex, or ca-pi 0.8.1 for Pi. U05 uses only real $ca-debug, $ca-spike, $ca-commit, and $ca-conflict behavior.
Why this matters: The exercise depends on the released spike contract, not an Academy substitute command.
Expected result
You know which host command to use and that a spike never merges or opens a pull request. Next safe step: Prepare the bounded attempt.
Evidence
Your host integration version and the public U05 lesson boundary.
If that does not happen
If your host is older or does not expose the command, update the integration or stop; do not imitate its output by hand.
You will preserve two real outputs. The debug no-action exit records its cited conclusion through
taskwrite; its optional debug.note ID is not evidence. The spike preserves only its four-part
findings file on the parent branch, then deletes the exploratory branch. Neither output proves a
command transcript or invents a conflict receipt.
Run Academy Prepare from the clean training repository. It creates the U05 attempt branch and commits the observation fixture without changing the task board.
Why this matters: Prepare supplies a reproducible input, not a simulated debug or spike result.
Academy creates a clean U05 attempt on academy/U05-debug-spike-conflict/1 with the committed observation and scenario files. Next safe step: read the observation.
Evidence
Prepare output, the new attempt branch, its preparation commit, and a clean worktree.
If that does not happen
If Prepare refuses because the repository is dirty or a prior attempt exists, preserve that state, use Reset only after reviewing it, then retry Prepare.
3
YouActive harness
read the prepared cache-key observation
Read docs/U05-cache-key-observation.md before invoking a host command. It is a fictional Academy input, never output from $ca-debug or $ca-spike.
Why this matters: The bounded observation makes the real debug question reproducible without a fabricated transcript.
Expected result
You can state the observed behavior, reproduction boundary, expected no-action disposition, and spike question. Next safe step: run host-native debug.
Evidence
The committed prepared observation, with no debug.note receipt in it.
If that does not happen
If the observation is absent or differs from the prepared fixture, stop and preserve the attempt; do not rewrite it.
Keep the parent attempt clean between the two commits. The commands below state which surface owns each action and what evidence must remain afterward.
Run the host-native debug command on the prepared cache-key observation and take its no-action exit. Do not write a debug report or modify product code.
Why this matters: $ca-debug owns the investigation and its real no-action exit writes the board only through taskwrite.py.
Any OS · Claude Code
/ca:debug U05 cache-key observation
Any OS · Codex
$ca-debug U05 cache-key observation
Any OS · Pi
/ca-debug U05 cache-key observation
Any OS · Pi
/skill:ca-debug U05 cache-key observation
Expected result
The no-action exit queues one taskwrite-written U05 cache-key entry with a Desc: rationale and makes no code change. Its dotted ID is optional. Next safe step: review only the board diff.
Evidence
An unstaged taskwrite-shaped .codearbiter/open-tasks.md entry with Desc:, not a transcript.
If that does not happen
If the diagnosis selects fix or ADR, stop; this bounded exercise requires the declared no-action exit.
5
You
review the debug-board boundary
Inspect the board diff and confirm it contains only the taskwrite-written U05 cache-key entry with its Desc: continuation; a dotted debug.note ID is optional.
Why this matters: The board is durable plugin output; reviewing it prevents unrelated changes from being committed as debug evidence.
The only intended diff is the cited taskwrite-written U05 cache-key board entry with Desc:, and git diff --check is silent. Next safe step: commit the board through the host.
Evidence
Reviewed unstaged taskwrite-shaped diff limited to .codearbiter/open-tasks.md.
If that does not happen
If other paths or an entry without taskwrite's Desc: form appear, stop and preserve the diff; do not edit a receipt to imitate taskwrite.
6
Your host
commit the no-action board entry
Use the host-native commit gate to commit the reviewed debug board entry by itself.
Why this matters: $ca-commit is the sanctioned commit path and keeps the debug close distinct from the later spike finding.
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 clean parent-branch commit changes only .codearbiter/open-tasks.md. Next safe step: run the disposable spike.
Evidence
A committed taskwrite-shaped board change and a clean worktree.
If that does not happen
If the gate blocks, preserve its findings and resolve them; do not fold the board entry into the findings commit.
The first parent commit contains only .codearbiter/open-tasks.md. Check verifies the resulting
taskwrite-shaped U05 cache-key entry and clean tree, not a claimed command invocation or a fixed task ID.
Use the host-native spike command with the fixture question U05 cache key. Work only on spike/u05-cache-key and commit only its findings file there.
Why this matters: $ca-spike discards implementation while preserving a bounded answer.
Any OS · Claude Code
/ca:spike U05 cache key
Any OS · Codex
$ca-spike U05 cache key
Any OS · Pi
/ca-spike U05 cache key
Any OS · Pi
/skill:ca-spike U05 cache key
Expected result
The host restates the bounded U05 cache-key question and pauses before creating spike/u05-cache-key. Next safe step: confirm that exact question.
Evidence
The prompt is transient. The durable evidence is the committed findings file restored to the parent; the spike branch must be absent at Check.
If that does not happen
If code, a merge, or a pull request is proposed, stop; a spike has no implementation, merge, or PR exit.
8
YouActive harness
confirm the spike question
When the host restates U05 cache key and asks for confirmation, confirm only if it is the bounded fixture question and the branch is spike/u05-cache-key.
Why this matters: $ca-spike stops for user confirmation before it creates the disposable branch or explores.
Expected result
The confirmed host flow creates spike/u05-cache-key and on its answered exit commits only .codearbiter/spikes/u05-cache-key.md. Next safe step: restore only that findings file to the parent.
Evidence
The prompt is not Check evidence; the findings-only commit and absent branch are observable evidence.
If that does not happen
If the question, branch, or timebox differs, decline and correct the prompt; do not let a spike start from an unconfirmed or broadened question.
9
You
restore only the committed findings
Return to the Academy attempt branch and restore only the committed finding from spike/u05-cache-key. This is a native Git transfer, not a merge.
Why this matters: The released spike contract permits the finding�s contents to cross back but forbids the spike commit and exploratory code.
The cached path list contains only .codearbiter/spikes/u05-cache-key.md with all four findings headings. Next safe step: commit the parent transfer through the host.
Evidence
Cached diff and path list for exactly the one findings file.
If that does not happen
If any code or extra path is staged, unstage it and preserve the evidence; do not use a broad add command.
11
Your host
commit the parent findings transfer
Use the host-native commit gate to commit the reviewed parent findings transfer by itself.
Why this matters: The parent commit is distinct from the disposable spike commit and preserves only the answer.
Any OS · Claude Code
/ca:commit
Any OS · Codex
$ca-commit
Any OS · Pi
/ca-commit
Any OS · Pi
/skill:ca-commit
Expected result
A second clean parent-branch commit changes only .codearbiter/spikes/u05-cache-key.md. Next safe step: delete the disposable branch.
Evidence
A clean parent worktree and a distinct one-file findings commit.
If that does not happen
If the gate blocks, keep the parent and spike state intact until its finding is resolved; do not merge the spike branch.
12
You
delete the unmerged disposable branch
After the parent findings commit is clean, delete the intentionally unmerged disposable spike branch. Force deletion is required because the findings-only restore did not merge its commit.
Why this matters: The branch is disposable by contract, and Git correctly treats its unmerged exploratory commit as not merged.
Windows
git branch -D spike/u05-cache-key
macOS
git branch -D spike/u05-cache-key
Linux
git branch -D spike/u05-cache-key
Expected result
refs/heads/spike/u05-cache-key is absent while the committed parent findings file remains. Next safe step: use Check.
Evidence
Absent U05 spike ref and retained parent findings commit.
If that does not happen
If the branch still contains unreviewed findings, stop before deletion; never merge it merely to make ordinary branch deletion succeed.
The native git branch -D is intentional. The findings-only restore leaves the disposable spike commit unmerged. Do not merge merely to make ordinary branch deletion succeed. The parent receives the findings file’s contents, never the spike commit or exploratory code.
Check accepts repository facts only: the exact prepared observation; a first parent commit containing the taskwrite-shaped no-action board entry; a second parent commit with only .codearbiter/spikes/u05-cache-key.md; and no spike/u05-cache-key ref. It rejects copied or uncommitted exploratory code. It cannot prove that a host command ran or that a person resolved a conflict wisely.
Academy removes the U05 attempt branch and restores the original branch without altering unrelated work. Next safe step: Prepare a new attempt.
Evidence
Reset output, restored original branch, and preserved unrelated repository state.
If that does not happen
If Reset refuses because the attempt contains state it must preserve, archive that state first and follow the refusal guidance.
Never merge or open a pull request for a spike branch, copy spike code to the parent, or keep a spike branch merely to satisfy Check. If $ca-conflict fires, stop work and wait for the user’s resolution before continuing.
git branch -D is correct only after the parent has committed the restored findings file. It deletes the intentionally unmerged disposable branch; it does not merge it.
Prepare commits the fictional observation so every learner begins from the same bounded question.
The host owns debug and spike behavior. Academy Check reads only the resulting Git range, task board,
findings file, deleted U05 spike ref, and clean worktree. That is why a copied exploratory change,
retained branch, invented receipt, or merged spike cannot pass.