arbiter
Exit maintainer dev mode — restore orchestration, remove the dev marker, log the exit.
What it does
Section titled “What it does”The exit door for /ca:dev: it ends the maintainer override and restores normal orchestration.
It writes the exit line to .codearbiter/overrides.log before anything else, removes the
gitignored dev-active marker so the statusline drops out of alarm-red, then re-presents the
startup state — current stage, any blocking [CONFIRM-NN], in-flight tasks — and waits for a
slash command with routing, gates, and skills all back in force. If dev mode wasn’t active, this
command is a no-op.
If a prior session ended mid-dev, SessionStart already appended a synthetic close line
(BY: session-cleanup | DEV: exit) and cleared the marker for that orphaned entry; this command
does not write a second exit line for it.
/ca:arbiterTakes no arguments.
Example
Section titled “Example”> /ca:arbiter
[2026-07-02T14:41:03Z] | BY: dev@example.com | DEV: exitdev-active marker removed; statusline back to normal.
stage: implementation · tasks: 2 open · q: 0 · overrides: 1 since last checkpointOrchestration restored. Awaiting a command.| Gate | When | Effect |
|---|---|---|
| append-only audit | exiting dev mode | an exit line is appended to overrides.log and the dev-active marker is removed before orchestration resumes |
Related
Section titled “Related”Source
Section titled “Source”Source — plugins/ca/commands/arbiter.md (v2.9.1)
---description: Exit maintainer dev mode — restore orchestration, remove the dev marker, log the exit.argument-hint: (none)---
# /ca:arbiter — restore orchestration
The exit door for `/ca:dev`. No-op if dev mode is not active.
## Flow
1. **Log exit** — append to `${CLAUDE_PROJECT_DIR}/.codearbiter/overrides.log` (append-only, `>>`):
``` [ISO-8601 timestamp] | BY: <email> | DEV: exit ```
2. **Marker** — remove `${CLAUDE_PROJECT_DIR}/.codearbiter/.markers/dev-active`; the statusline returns to normal.3. **Resume** — re-present the startup state (stage, blocking `CONFIRM-NN`, in-flight tasks) and await a slash command. Orchestration, routing, and all gates are back in force.
## Hard gate
MUST write the `DEV: exit` line to `overrides.log` and remove the `dev-active` marker before resumingorchestration — the exit is on the audit trail like the entry. MUST NOT rewrite or truncate`overrides.log` — the append-only rule has no dev exception, on entry or exit. If a prior sessionended mid-dev, SessionStart has already appended the synthetic `BY: session-cleanup | DEV: exit` closeline and cleared the marker (`session-start.py`, observability-001). In that case MUST NOT write asecond `DEV: exit` for that orphaned entry — the close is already on the trail.
Session-scoped clearing (#271): SessionStart's synthetic close is now conditional on the markerplausibly being abandoned rather than owned by a different, still-live session — it will NOT clobberanother concurrently-running session's live `/dev` marker or write a false `DEV: exit` for it.`/ca:arbiter` remains the ONLY way to cleanly close your OWN `/dev` session's audit pair; do notrely on a future SessionStart to do it for you.