P03 is a public guided and runnable lesson in this preview. It uses the shared Markdown-plus-action-manifest renderer and the installed Academy Prepare, Check, and Reset commands. The immutable scenario, checkpoint, and action contract ID stay P03-record-an-adr.
Keep a native terminal at the clone root and one codeArbiter harness at the same clone. Native terminal commands never begin with !; host-native codeArbiter commands and harness requests never begin with ! either.
Academy accepts a prepared author name only when it has 1–80 Unicode scalar values. It captures %an, never echo a rejected name, and keeps no learner email. No learner email is retained, rendered, or required. The prepared decision log is an append-only byte prefix.
You will record ADR-0004 for the Workshop Queue summary-format boundary. The learner chooses and approves the ADR/log boundary. The agent may analyze and draft, but it cannot choose, replace, or broaden the decision.
The two allowed learner choices are stable text and structured JSON. The committed evidence is an accepted .codearbiter/decisions/0004-academy-lab.md and a matching append to .codearbiter/decisions/decision-log.md; ADR-0003 remains untouched. The permitted history is one commit or two linear commits, with the ADR before the log when split.
Use the selected harness to establish the boundary before any drafting: the learner chooses and approves the ADR and decision-log boundary; the agent may analyze and draft but may not make that decision.
Why this matters: The exercise records a real architectural choice without assigning decision authority to the agent.
Any OS · Claude Code
Read the P03 decision boundary. I choose and approve the ADR/log boundary; do not choose it for me.
Any OS · Codex
Read the P03 decision boundary. I choose and approve the ADR/log boundary; do not choose it for me.
Any OS · Pi
Read the P03 decision boundary. I choose and approve the ADR/log boundary; do not choose it for me.
Expected result
The learner and agent share the boundary: analysis and drafting can be delegated, but the decision and approval remain learner-owned.
Evidence
Check can inspect the resulting artifacts but cannot authenticate who chose or approved them.
If that does not happen
If the agent selects an alternative or commits before learner approval, preserve the attempt and reset rather than treating that action as learner evidence.
2
You
Keep prepared identity private
Use the selected harness to keep identity within Academy's prepared boundary. Academy records the display-safe Git author name from %an; do not paste an email address or a rejected name into the ADR, log, or chat.
Why this matters: The lesson needs attributable committed evidence without retaining unnecessary personal data.
Any OS · Claude Code
Keep the prepared author identity private. Do not request, display, or record an email address.
Any OS · Codex
Keep the prepared author identity private. Do not request, display, or record an email address.
Any OS · Pi
Keep the prepared author identity private. Do not request, display, or record an email address.
Expected result
The ADR and log use only the prepared display-safe name, while no learner email is retained or rendered.
Evidence
Check reads committed author metadata and artifact attribution, not a learner-supplied identity transcript.
If that does not happen
If the prepared name is rejected, preserve the error and retry through Academy; never echo the rejected value as evidence.
3
You
Prepare the numbered P03 attempt
P03 is public, guided, and runnable in this preview. 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. Run the installed Academy Prepare command; do not substitute source checkout behavior.
Why this matters: Prepare establishes the verifier-owned attempt baseline and branch before the learner creates evidence.
In a native terminal at the prepared clone root, inspect ADR-0003 and the current decision log before drafting ADR-0004. Native terminal commands never begin with !.
Why this matters: The existing record establishes the occupied number and the byte prefix that P03 must preserve.
sed -n '1,240p' .codearbiter/decisions/0003-local-verifier-trust-boundary.md
sed -n '1,240p' .codearbiter/decisions/decision-log.md
Linux
sed -n '1,240p' .codearbiter/decisions/0003-local-verifier-trust-boundary.md
sed -n '1,240p' .codearbiter/decisions/decision-log.md
Expected result
ADR-0003 remains occupied and the learner can identify the current log as the append-only prefix.
Evidence
The later log must retain the prepared decision-log bytes as its prefix.
If that does not happen
If either artifact is missing or unexpectedly edited, stop and reset to a prepared baseline; do not recreate governance history by hand.
5
You
Request analysis, then make the exact choice
Ask the agent to analyze the two alternatives and wait. The learner chooses and approves the ADR/log boundary; the agent may analyze and draft but may not select, replace, or broaden the choice.
Why this matters: A comparison can make consequences legible without making an architecture decision on the learner's behalf.
Any OS · Claude Code
Compare stable text and structured JSON for Workshop Queue summaries across compatibility, automation, schema evolution, and local-first consequences. Do not choose, draft, append, stage, or commit. Wait for my exact choice.
Any OS · Claude Code
Use stable text for Workshop Queue summaries.
Any OS · Claude Code
Use structured JSON for Workshop Queue summaries.
Any OS · Codex
Compare stable text and structured JSON for Workshop Queue summaries across compatibility, automation, schema evolution, and local-first consequences. Do not choose, draft, append, stage, or commit. Wait for my exact choice.
Any OS · Codex
Use stable text for Workshop Queue summaries.
Any OS · Codex
Use structured JSON for Workshop Queue summaries.
Any OS · Pi
Compare stable text and structured JSON for Workshop Queue summaries across compatibility, automation, schema evolution, and local-first consequences. Do not choose, draft, append, stage, or commit. Wait for my exact choice.
Any OS · Pi
Use stable text for Workshop Queue summaries.
Any OS · Pi
Use structured JSON for Workshop Queue summaries.
Expected result
The agent presents analysis, and the learner supplies one of the two exact choice statements before any ADR or log draft exists.
Evidence
The committed decision can match the selected statement, but Check cannot prove who sent it or why.
If that does not happen
If the agent chooses or writes before the learner sends one exact choice, preserve the attempt and reset instead of treating agent direction as learner evidence.
Read the analysis, select one exact learner choice, then explicitly approve the ADR/log draft before the agent runs the ADR command. Review the draft against that choice, then explicitly approve its committed form before the agent runs the commit gate.
6
Your host
Run the host-native ADR command after learner approval
After the learner sends one exact choice and explicitly approves drafting the ADR/log boundary, invoke the selected host-native ADR command. The agent drafts the record; it does not decide for the learner.
Why this matters: The shared codeArbiter ADR lane creates a structured record while preserving learner authority over the content.
Any OS · Claude Code
/ca:adr "Choose the Workshop Queue summary-format boundary"
Any OS · Codex
$ca-adr "Choose the Workshop Queue summary-format boundary"
Any OS · Pi
/ca-adr "Choose the Workshop Queue summary-format boundary"
Any OS · Pi
/skill:ca-adr "Choose the Workshop Queue summary-format boundary"
Expected result
The agent drafts ADR-0004 and its matching log entry for the learner-approved boundary.
Evidence
The host command is a drafting route, not proof that the learner approved the content.
If that does not happen
If the command cannot preserve the learner-owned choice or writes a different boundary, stop and reset; do not hand-edit around the ADR lane.
7
Your host
Run the host-native commit gate after approval
After the learner reviews and explicitly approves the ADR/log content, invoke the selected host-native commit gate. Do not use a raw git commit as a substitute.
Why this matters: The shared commit gate records the approved evidence through the supported host workflow.
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 commit or two linear commits record only the approved ADR/log evidence, with ADR before log when split.
Evidence
Git can show the resulting commit range and changed paths, but not the learner's approval process.
If that does not happen
If the gate blocks or the staged boundary includes another path, preserve the finding and reset; do not amend or force a commit.
In a native terminal at the clone root, inspect the clean worktree, the latest one or two commits, and the ADR/log paths. Native terminal commands never begin with !.
Why this matters: Native Git evidence makes the narrow committed boundary visible before Check reconstructs it.
The worktree is clean and the visible range contains only the ADR and decision-log paths in the permitted ordering.
Evidence
The native output exposes the same narrow final-state facts that Check can validate.
If that does not happen
If another path, a merge, an uncommitted change, or reversed ADR/log order appears, preserve the evidence and reset; do not rewrite the attempt.
Success is an accepted ADR-0004 and matching decision-log append on the prepared branch. The record carries the learner-approved choice, attribution, alternatives, consequences, and risks; the worktree is clean.
Check reports whether the prepared evidence satisfies the immutable P03 checkpoint.
Evidence
Check evaluates final committed artifacts and Git state, not a claimed live process.
If that does not happen
If Check fails, preserve the predicate output and reset instead of amending, rebasing, or fabricating history.
Check proves only final-state evidence: a clean worktree; 1–2 linear commits; only ADR/log paths; ADR before log if split; commit date/name; artifact format/choice; and the append-only log prefix. It cannot prove human acceptance, host command use, reasoning quality, chronology, or independent review.
If evidence is wrong or Check names a failed predicate, preserve the attempt. Do not amend, rebase, overwrite ADR-0003, rewrite the log prefix, or manufacture a generic governance event.
10
You
Preserve the failed attempt and reset
P03 Reset is public in this preview. Run the installed Academy command from a native terminal only after preserving the failed evidence.
Why this matters: Reset protects the failed attempt as evidence before restoring a new prepared baseline.
The record needs consequences: explain what callers, automation, compatibility, and future schema evolution gain or lose under the learner-approved choice.
An ADR makes a consequential choice durable: context explains why it matters, alternatives preserve the trade-off, the decision records the approved boundary, and consequences guide future maintainers. The append-only log makes that lifecycle discoverable; Check reconstructs the committed boundary from Git rather than trusting a transcript.