@arbiterforge/ca-pi 0.6.3 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +41 -98
  2. package/package.json +1 -1
  3. package/plugins/ca-pi/CHANGELOG.md +145 -0
  4. package/plugins/ca-pi/COMMANDS.md +138 -68
  5. package/plugins/ca-pi/SKILLS.md +137 -30
  6. package/plugins/ca-pi/agents/INDEX.md +3 -2
  7. package/plugins/ca-pi/agents/checkpoint-aggregator.md +8 -7
  8. package/plugins/ca-pi/agents/design-quality-reviewer.md +1 -1
  9. package/plugins/ca-pi/agents/finding-triage.md +31 -14
  10. package/plugins/ca-pi/agents/verdict-aggregator.md +64 -0
  11. package/plugins/ca-pi/{ORCHESTRATOR.md → arbiter.md} +37 -36
  12. package/plugins/ca-pi/extensions/codearbiter.js +844 -19
  13. package/plugins/ca-pi/generated/command-catalog.json +386 -196
  14. package/plugins/ca-pi/generated/roles.json +9 -0
  15. package/plugins/ca-pi/hooks/_arbiterstatelib.py +59 -11
  16. package/plugins/ca-pi/hooks/_bashguardlib.py +30 -12
  17. package/plugins/ca-pi/hooks/_gitexec.py +23 -0
  18. package/plugins/ca-pi/hooks/_githooks.py +50 -23
  19. package/plugins/ca-pi/hooks/_hooklib.py +148 -20
  20. package/plugins/ca-pi/hooks/_host.py +9 -1
  21. package/plugins/ca-pi/hooks/_metricslib.py +20 -0
  22. package/plugins/ca-pi/hooks/_modelib.py +762 -0
  23. package/plugins/ca-pi/hooks/_protectedlib.py +13 -4
  24. package/plugins/ca-pi/hooks/_prunelib.py +51 -12
  25. package/plugins/ca-pi/hooks/_prunepolicy.py +33 -7
  26. package/plugins/ca-pi/hooks/_readinjectlib.py +10 -4
  27. package/plugins/ca-pi/hooks/_releaselib.py +278 -48
  28. package/plugins/ca-pi/hooks/_updatelib.py +230 -50
  29. package/plugins/ca-pi/hooks/doctor.py +58 -9
  30. package/plugins/ca-pi/hooks/git-enforce.py +10 -3
  31. package/plugins/ca-pi/hooks/hostapi.py +220 -22
  32. package/plugins/ca-pi/hooks/pi-bridge.py +10 -4
  33. package/plugins/ca-pi/hooks/prompt-submit.py +486 -0
  34. package/plugins/ca-pi/hooks/prune-transcript.py +23 -3
  35. package/plugins/ca-pi/hooks/session-start.py +529 -435
  36. package/plugins/ca-pi/hooks/statusline.py +28 -10
  37. package/plugins/ca-pi/hooks/wire-statusline.py +13 -8
  38. package/plugins/ca-pi/includes/anti-slop-design/INDEX.md +1 -1
  39. package/plugins/ca-pi/includes/command-compatibility.md +16 -0
  40. package/plugins/ca-pi/includes/dangerous-mode.md +57 -0
  41. package/plugins/ca-pi/includes/ops-mode.md +96 -0
  42. package/plugins/ca-pi/includes/pi-host-notes.md +10 -1
  43. package/plugins/ca-pi/includes/redirect.md +12 -1
  44. package/plugins/ca-pi/includes/routing-table.md +14 -5
  45. package/plugins/ca-pi/includes/safety-core.md +86 -0
  46. package/plugins/ca-pi/includes/smarts/core.md +1 -1
  47. package/plugins/ca-pi/routines/INDEX.md +1 -1
  48. package/plugins/ca-pi/routines/decision-lifecycle/SKILL.md +55 -3
  49. package/plugins/ca-pi/routines/decision-lifecycle/references/adr-template.md +9 -1
  50. package/plugins/ca-pi/routines/decompose/SKILL.md +1 -1
  51. package/plugins/ca-pi/routines/dispatching-parallel-agents/SKILL.md +4 -4
  52. package/plugins/ca-pi/routines/release/SKILL.md +1 -1
  53. package/plugins/ca-pi/skills/ca-checkpoint/SKILL.md +5 -4
  54. package/plugins/ca-pi/skills/ca-cleanup/SKILL.md +6 -0
  55. package/plugins/ca-pi/skills/ca-context-check/SKILL.md +6 -0
  56. package/plugins/ca-pi/skills/ca-create-context/SKILL.md +6 -0
  57. package/plugins/ca-pi/skills/ca-decompose/SKILL.md +6 -0
  58. package/plugins/ca-pi/skills/ca-doctor/SKILL.md +4 -0
  59. package/plugins/ca-pi/skills/ca-init/SKILL.md +18 -1
  60. package/plugins/ca-pi/skills/ca-pr/SKILL.md +17 -1
  61. package/plugins/ca-pi/skills/ca-review/SKILL.md +3 -4
  62. package/plugins/ca-pi/skills/ca-spike/SKILL.md +15 -8
  63. package/plugins/ca-pi/skills/ca-status/SKILL.md +13 -1
  64. package/plugins/ca-pi/skills/ca-watch/SKILL.md +6 -0
  65. package/plugins/ca-pi/includes/dev-mode.md +0 -30
  66. package/plugins/ca-pi/skills/ca-arbiter/SKILL.md +0 -36
  67. package/plugins/ca-pi/skills/ca-dev/SKILL.md +0 -42
package/README.md CHANGED
@@ -10,10 +10,10 @@ project context. You decide. codeArbiter enforces.
10
10
  <img alt="Claude Code plugin" src="https://img.shields.io/badge/Claude_Code-plugin-d97757">
11
11
  <img alt="Codex plugin" src="https://img.shields.io/badge/OpenAI_Codex-plugin-10a37f">
12
12
  <img alt="Pi Feature Forge preview" src="https://img.shields.io/badge/ca--pi-Feature_Forge_preview-d97757">
13
- <img alt="version 2.14.0" src="https://img.shields.io/badge/version-2.14.0-2b7489">
14
- <img alt="commands" src="https://img.shields.io/badge/commands-40-555">
13
+ <img alt="version 2.17.0" src="https://img.shields.io/badge/version-2.17.0-2b7489">
14
+ <img alt="core lanes" src="https://img.shields.io/badge/core_lanes-18-555">
15
15
  <img alt="skills" src="https://img.shields.io/badge/skills-23-555">
16
- <img alt="agents" src="https://img.shields.io/badge/agents-18-555">
16
+ <img alt="agents" src="https://img.shields.io/badge/agents-19-555">
17
17
  <img alt="license AGPL v3" src="https://img.shields.io/badge/license-AGPL_v3-3da639">
18
18
 
19
19
  [Start learning](https://arbiterforge.github.io/codeArbiter/learn/)
@@ -26,12 +26,6 @@ project context. You decide. codeArbiter enforces.
26
26
 
27
27
  </div>
28
28
 
29
- > [!IMPORTANT]
30
- > **License notice.** Since v2.6.0, codeArbiter is licensed under the
31
- > [GNU AGPLv3](LICENSE), a change from its earlier MIT license. Copyright (C) 2026 SUaDtL, who
32
- > reserves the right to dual-license under separate proprietary terms; commercial licenses are not
33
- > offered at this time. See [License and contributions](#license-and-contributions).
34
-
35
29
  ## Agentic coding, with a record
36
30
 
37
31
  codeArbiter is for teams and power users who let coding agents do consequential work and need more
@@ -105,7 +99,9 @@ stability, command syntax, trust, and platform differences.
105
99
  **Prerequisites:** Python 3 on `PATH` and `git config user.email` set. Pi also requires Node.js
106
100
  22.19+. If Python is missing, Pi installs its final wrappers but blocks mutating calls and points to
107
101
  `/ca-doctor`; Claude Code and Codex surface an interpreter breadcrumb instead of silently claiming
108
- governance is active.
102
+ governance is active. The [compatibility matrix](https://arbiterforge.github.io/codeArbiter/getting-started/compatibility/)
103
+ defines the supported native Git/runtime and linked-worktree boundary; mixed Windows Git and WSL Git
104
+ over one shared repository are not supported.
109
105
 
110
106
  ### Claude Code
111
107
 
@@ -119,7 +115,7 @@ Approve the normal plugin trust prompt, open the target repository, and continue
119
115
 
120
116
  ### Codex CLI
121
117
 
122
- The public GitHub-slug flow is **available now**. The repository currently ships `ca-codex 0.6.1`;
118
+ The public GitHub-slug flow is **available now**. The repository currently ships `ca-codex 0.9.0`;
123
119
  the dated end-to-end public-install record discovered `ca-codex 0.2.4` from release `v2.8.13`.
124
120
  Current packaging and shared-core parity are continuously verified, while that dated live-install
125
121
  record stays labeled rather than being silently promoted to evidence for a newer adapter:
@@ -188,6 +184,17 @@ Follow the complete
188
184
  [first-repository walkthrough](https://arbiterforge.github.io/codeArbiter/getting-started/quickstart/)
189
185
  for expected output, proof, and recovery.
190
186
 
187
+ ## Practice before using your own repository
188
+
189
+ [Arbiter Academy](https://arbiterforge.github.io/arbiter-academy/) is an optional practice course for
190
+ codeArbiter. It starts in a personal fork of the Academy repository, so you can make real commits,
191
+ inspect governed evidence, and recover from a failed attempt without placing your own project at risk.
192
+
193
+ The Academy website is the lesson surface. Each published lesson identifies whether an action belongs
194
+ in the browser, native terminal, active harness, or with the agent, then provides a copyable command,
195
+ the result to expect, the evidence to inspect, and a safe recovery path. Start there when you want to
196
+ learn the workflow before protecting a production repository.
197
+
191
198
  ## The docs are the operating manual
192
199
 
193
200
  The site is designed as a continuous path from first contact to source-backed operation:
@@ -255,7 +262,7 @@ explains who creates, reads, and updates every artifact, plus its recovery rules
255
262
  - No raw secret stored in the repository, logs, images, or prompts.
256
263
  - No direct write to the default branch and no force-push.
257
264
  - No ADR outside `/ca:adr`, with explicit user attribution.
258
- - Every `/ca:override`, `/ca:dev` entry/exit, and sprint auto-decision is durable and attributable.
265
+ - Every `/ca:override`, `mode --dangerous`/`mode --ops` entry/exit, and sprint auto-decision is durable and attributable.
259
266
  - H-18 activation protection has no in-session override path; disabling a repository requires an
260
267
  external editor and an explicit audit record.
261
268
 
@@ -276,93 +283,29 @@ gate bypasses, merges, and unresolved questions remain true stops. See
276
283
 
277
284
  ## Core lanes
278
285
 
279
- | Intent | Claude Code | What the lane proves |
280
- |---|---|---|
281
- | New behavior | `/ca:feature "desc"` | approved spec and plan, test-first implementation, review, commit, PR |
282
- | Autonomous delivery | `/ca:sprint "goal"` | one interactive design gate, persisted work, logged SMARTS decisions |
283
- | Confirmed defect | `/ca:fix "bug"` | failing regression test before the minimal fix |
284
- | Unknown cause | `/ca:debug "symptom"` | investigation and root-cause decision before any fix lane |
285
- | Structural change | `/ca:refactor "surface"` | behavioral parity through unchanged pre-existing tests |
286
- | Dependency | `/ca:add-dep "pkg"` | license, provenance, maintenance, CVE, and supply-chain review |
287
- | Architecture decision | `/ca:adr "title"` | numbered, dated, user-attributed decision record |
288
- | Commit | `/ca:commit` | the full commit gate and selective staging |
289
- | Pull request | `/ca:pr` | cleared BLOCK findings and a draft PR, never a direct default-branch write |
290
-
291
- Claude Code's catalog is [`plugins/ca/COMMANDS.md`](./plugins/ca/COMMANDS.md). Codex uses the
292
- generated [`plugins/ca-codex/COMMANDS.md`](./plugins/ca-codex/COMMANDS.md), and Pi uses the generated
293
- [`plugins/ca-pi/COMMANDS.md`](./plugins/ca-pi/COMMANDS.md). Current generated counts are `ca: 40`,
294
- `ca-codex: 38`, and `ca-pi: 39`. Codex omits `statusline` and `prune`; Pi omits `statusline` and uses
295
- native compaction for pruning.
286
+ Choose the workflow first. The canonical lanes keep daily work compact; advanced operations and
287
+ compatibility routes remain available in the complete reference.
296
288
 
297
- <details>
298
- <summary><strong>All 40 Claude Code commands</strong></summary>
299
-
300
- ### Implementation
301
-
302
- | Command | Purpose |
303
- |---|---|
304
- | `/ca:feature "desc"` | Spec-driven feature; the only entry to new implementation |
305
- | `/ca:sprint "goal"` | Autonomous spec-to-PR sprint with SMARTS-scored decisions |
306
- | `/ca:fix "bug"` | Regression-test-first defect fix |
307
- | `/ca:refactor "surface"` | Behavior-preserving restructure behind a parity gate |
308
- | `/ca:debug "symptom"` | Investigate, identify root cause, then choose the owning lane |
309
- | `/ca:chore <docs\|deps\|revert>` | Type-scaled non-behavioral lane |
310
- | `/ca:spike "question"` | Throwaway exploration that never merges |
311
-
312
- ### Commit and ship
313
-
314
- | Command | Purpose |
315
- |---|---|
316
- | `/ca:commit` | The only path to a commit |
317
- | `/ca:pr` | Clear review findings and open or finish a pull request |
318
- | `/ca:watch <PR>` | Watch hosted CI, diagnose red, offer merge on green |
319
- | `/ca:review [path]` | Reviewer-fleet pass over the current diff |
320
- | `/ca:checkpoint` | Lean periodic whole-codebase reviewer sweep |
321
- | `/ca:tribunal [scope-path]` | Deep, resumable eleven-lens audit; never a routine gate |
322
- | `/ca:release [--dry-run]` | Target-aware SemVer, changelog, and annotated tag |
323
- | `/ca:add-dep "pkg"` | Vet license, provenance, maintenance, CVEs, and supply chain |
324
-
325
- ### Decisions
326
-
327
- | Command | Purpose |
328
- |---|---|
329
- | `/ca:adr "title"` | Author a numbered, user-attributed ADR |
330
- | `/ca:adr-status [--adr N]` | Inspect ADR health and supersession chains |
331
- | `/ca:reconcile ["scope"]` | Reconcile architectural artifacts through SMARTS |
332
- | `/ca:conflict "description"` | Stop work and surface an unresolvable rule conflict |
333
- | `/ca:threat-model "scope"` | Optional lightweight STRIDE pass |
334
-
335
- ### Project and meta
336
-
337
- | Command | Purpose |
338
- |---|---|
339
- | `/ca:decompose` | Greenfield interview that populates `.codearbiter/` |
340
- | `/ca:create-context` | Brownfield source scout and context backfill |
341
- | `/ca:init` | Scaffold the shared project-state store |
342
- | `/ca:status` | Show stage, branch, tasks, questions, and recent overrides |
343
- | `/ca:task` | The only sanctioned writer for `open-tasks.md` |
344
- | `/ca:statusline` | Install or remove the Claude Code statusline |
345
- | `/ca:doctor` | Prove interpreter, payload, hooks, cache, and live-fire behavior |
346
- | `/ca:preview` | Read-only prediction of reviewers plus a state-free secret scan |
347
- | `/ca:context-check` | Manual provenance-drift audit |
348
- | `/ca:standup` | Read repo hygiene, then confirm safe cleanup actions one by one |
349
- | `/ca:cleanup` | Finish an already-merged branch with ancestry proof |
350
- | `/ca:new-skill "gap"` | Author a new skill only after proving the gap |
351
- | `/ca:btw "question"` | Lightweight project Q&A with no state change |
352
- | `/ca:override "reason"` | Logged, attributed bypass for one immediate action when the gate permits it; never H-18 |
353
- | `/ca:audit [range]` | Assemble a dated governance packet |
354
- | `/ca:metrics [--window N]` | Read-only override, small-lane, and confidence trends |
355
- | `/ca:prune [status\|dry\|run\|audit\|on\|off]` | Inspect or trim transcript bulk |
356
- | `/ca:commands` | Show the public catalog |
357
-
358
- ### Maintainer
359
-
360
- | Command | Purpose |
361
- |---|---|
362
- | `/ca:dev ["note"]` | Enter the env-gated, logged maintainer override |
363
- | `/ca:arbiter` | Exit dev mode and restore orchestration |
364
-
365
- </details>
289
+ <!-- core-lane-chooser:start -->
290
+ | Workflow | Choose | Use it for |
291
+ |---|---|---|
292
+ | Evaluate | `/ca:preview` | Predict reviewers and run a read-only secret scan |
293
+ | Initialize | `/ca:init` | Create or inspect the repository-owned state store |
294
+ | Change | `/ca:feature`, `/ca:sprint`, `/ca:fix`, `/ca:refactor`, `/ca:chore`, `/ca:spike`, `/ca:add-dep` | Build, repair, restructure, explore, or change the supply chain through the owning gate |
295
+ | Review | `/ca:review` | Run the reviewer fleet over a diff or bounded path |
296
+ | Decide | `/ca:adr` | Record a numbered, user-attributed architecture decision |
297
+ | Ship | `/ca:commit`, `/ca:pr`, `/ca:release` | Commit, stage a pull request, or prepare an authorized release |
298
+ | Operate | `/ca:status`, `/ca:task`, `/ca:doctor`, `/ca:override` | Inspect state, manage the task board, verify enforcement, or log an allowed bypass |
299
+ <!-- core-lane-chooser:end -->
300
+
301
+ [Complete command reference](https://arbiterforge.github.io/codeArbiter/reference/commands/) includes
302
+ advanced operations, compatibility routes, internal protocols, deprecation guidance, and host
303
+ availability. The generated host catalogs remain inspectable in
304
+ [`plugins/ca/COMMANDS.md`](./plugins/ca/COMMANDS.md),
305
+ [`plugins/ca-codex/COMMANDS.md`](./plugins/ca-codex/COMMANDS.md), and
306
+ [`plugins/ca-pi/COMMANDS.md`](./plugins/ca-pi/COMMANDS.md). Claude Code includes `statusline` and
307
+ `prune`; Codex intentionally omits both. Pi omits `statusline` and uses native compaction through
308
+ its `prune` route.
366
309
 
367
310
  ## Trust and host boundaries
368
311
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arbiterforge/ca-pi",
3
- "version": "0.6.3",
3
+ "version": "0.10.0",
4
4
  "license": "AGPL-3.0-only",
5
5
  "repository": {
6
6
  "type": "git",
@@ -4,6 +4,151 @@ All notable changes to `ca-pi` are documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.10.0] - 2026-09-02
8
+
9
+ ### Added
10
+
11
+ - Command discovery now groups the supported core lanes while retaining
12
+ advanced operations and compatibility routes in the generated Pi catalog.
13
+ - Pi rejects malformed alias graphs at runtime, and release-state plus
14
+ documentation-inventory drift now fail closed against canonical source;
15
+ tag-only or unverified Releases are rejected.
16
+
17
+ ## [0.9.0] - 2026-09-02
18
+
19
+ ### Added
20
+
21
+ - Accepted ADRs now have content-bound lifecycle records, sealed obligation
22
+ sets, and evidence-derived implementation and verification states.
23
+ - Destructive-operation policy now uses one four-item registry with generated
24
+ host parity and item-for-item enforcement.
25
+
26
+ ## [0.8.9] - 2026-09-02
27
+
28
+ ### Fixed
29
+
30
+ - Hook registration and doctor now bind every Git probe to the requested
31
+ repository, resolve effective hook paths through Git, and fail closed when
32
+ linked-worktree ownership cannot be proven.
33
+
34
+ ## [0.8.8] - 2026-09-02
35
+
36
+ ### Fixed
37
+
38
+ - Release-note reconstruction now accepts only exact changelog headings,
39
+ rejects ambiguous `Unreleased` and duplicate sections, and reads the
40
+ regular-file blob from the exact tag and repository root without inherited
41
+ Git repository overrides or replacement objects.
42
+
43
+ ## [0.8.7] - 2026-09-01
44
+
45
+ ### Added
46
+
47
+ - Review and generic parallel batches now terminate at a read-only verdict
48
+ aggregator, while checkpoint persistence remains a separate non-overwriting
49
+ writer invoked only by the explicit checkpoint workflow.
50
+
51
+ ## [0.8.6] - 2026-09-01
52
+
53
+ ### Fixed
54
+
55
+ - The update notifier now ignores unrelated release series, keeps `ca-pi-v*`
56
+ state independent from Claude and Codex, and emits Pi's native package
57
+ update command.
58
+
59
+ ## [0.8.5] - 2026-08-26
60
+
61
+ ### Changed
62
+
63
+ - The shared generated root kernel now derives its internal package root from the executing module and validates containment independently of host-native boundaries; Pi remains Forge-only and keeps its module/file-location semantics.
64
+ - Generated status-line and hook payloads were refreshed in lockstep with the Claude and Codex adapters without adding a separate runtime core package.
65
+
66
+ ## [0.8.4] - 2026-08-24
67
+
68
+ ### Fixed
69
+
70
+ - The shared Git enforcement hook now resolves linked-worktree security and migration markers through the main-checkout marker root while preserving worktree-local commit inspection.
71
+
72
+ ## [0.8.3] - 2026-08-21
73
+
74
+ ### Fixed
75
+
76
+ - Shared hook payload refresh: the explicit-workdir recognition added for Codex desktop wrapped execution is carried by the common guard. Pi does not set this field, so its runtime behavior is unchanged.
77
+
78
+ ## [0.8.2] - 2026-08-13
79
+
80
+ ### Fixed
81
+
82
+ - Shared-core mode-plane fix: the orchestration mode is stored one file per session under `.codearbiter/.markers/mode.d/` instead of a single shared map, so sessions sharing one `.codearbiter/` store can no longer overwrite each other's posture. Pi reports the mode read-only, and now reports a value no concurrent session can have silently reverted.
83
+
84
+ ## [0.8.1] - 2026-08-13
85
+
86
+ ### Changed
87
+
88
+ - `/ca-spike` now preserves only the committed findings file on the parent before deleting its disposable spike branch. Exploratory spike code and commits never land in implementation history.
89
+
90
+ ## [0.8.0] - 2026-08-12
91
+
92
+ ### Added
93
+
94
+ - Orchestration **mode plane** (ADR-0030): `arbiter`, `dangerous`, and `ops`. The injected persona is
95
+ now `safety-core.md` plus the active mode's body, composed rather than a single fixed file.
96
+ **On Pi this release is read-only:** the footer reports the active mode and the shared store is
97
+ keyed the same way as on the other hosts, but Pi cannot yet CHANGE the mode — the control token is
98
+ intercepted on Claude and Codex only. A Pi session runs `arbiter`. The input-event handler, the
99
+ bridge flip path, and the per-turn persona refresh are tracked and not in this release.
100
+ - `ops` mode: an advisory carve-out permitting in-channel work that starts, observes, or exercises a
101
+ running system, keyed on the durable artifact produced. Anything mutating tracked files, the index,
102
+ git history, or published state stays routed and refused.
103
+
104
+ ### Changed
105
+
106
+ - `ORCHESTRATOR.md` is renamed `arbiter.md` and reframed as the arbiter mode's body rather than an
107
+ always-on kernel. Its header records the former name so historical citations stay resolvable.
108
+ - Persona injection moved off `SessionStart` to the per-turn prompt seam; a once-per-session event
109
+ cannot express a mid-session posture change. The startup block is now per-mode composable emitters.
110
+ - `dev` mode becomes `dangerous`: a general gates-off posture for any repository, with no
111
+ maintainer-only env gate. No enforcement hook reads the mode, so every gate fires in all modes.
112
+
113
+ ### Removed
114
+
115
+ - The `dev` and `arbiter` mode-entry commands. The mode bodies are the surface. The shared source
116
+ catalog under `core/surface/commands/` drops from 40 to 38; Pi's own visible catalog goes 38 → 37,
117
+ because each host excludes entries it cannot serve and a source count is never a host count.
118
+
119
+ ### Fixed
120
+
121
+ - A compaction could silently clear a live mode, because the mode plane borrowed the legacy marker's
122
+ owner record to decide whether it had seen a session before. It now keeps its own anchor.
123
+ - Mode and marker state resolved through two different roots in three places; in a linked worktree a
124
+ transition pair could split across two audit logs, or a stale session go undetected.
125
+ ## [0.7.1] - 2026-08-12
126
+
127
+ ### Fixed
128
+
129
+ - Shared bash guard refresh. `_bashguardlib` is re-vendored here from `core/pysrc/`, so `ca-pi`
130
+ carries the same guard as its siblings. The behavior it corrects is Codex execution-workdir
131
+ handling: an explicit workdir is honored, so H-01's branch check reads the repository the command
132
+ actually runs in rather than the process's own directory. Nothing changes for a Pi session — this
133
+ host never sets that workdir — but the payload did, so the version advances with it.
134
+
135
+ ## [0.7.0] - 2026-08-10
136
+
137
+ ### Added
138
+
139
+ - `/ca-sidebar on|off|toggle|width N`: an optional right-hand sidebar column at
140
+ pi-sidebar-tui panel parity (session, subagents, workspace, todos), defaulting
141
+ on in interactive parents at 120 columns or wider, width clamped 24..60. The
142
+ compositor uses Pi render hooks that are undocumented in every promoted
143
+ version, so each install is probe-gated at runtime, every paint re-validates
144
+ terminal geometry inside a synchronized-output envelope, and any failure
145
+ disposes back to native rendering with a single bounded warning — the sidebar
146
+ can degrade to unavailable, never wedge the terminal. Workspace and todos
147
+ panels are trusted-only; the MCP panel renders only when Pi exposes servers,
148
+ which no promoted version does. `/ca-doctor` gains a sidebar health row, and
149
+ the activity registry now retains up to 16 concurrent active entries so the
150
+ sidebar's subagents panel can show the detail the footer cannot fit.
151
+
7
152
  ## [0.6.3] - 2026-08-10
8
153
 
9
154
  ### Changed
@@ -1,90 +1,160 @@
1
- # codeArbiter commands
1
+ # codeArbiter commands
2
2
 
3
- All user intent flows through these commands. A direct instruction outside a command channel gets a
4
- redirect to the closest command (see the §6 redirect). Every command ships as a `ca-`-prefixed
5
- skill invoke `$ca-<name>`.
3
+ Start with the job in front of you. A direct instruction outside a command channel routes to the
4
+ closest supported lane; installed legacy entry points remain listed under [Compatibility
5
+ routes](#compatibility-routes). Each route ships as a `ca-`-prefixed skill; invoke it as
6
+ `$ca-<name>`.
6
7
 
7
- This table is the surface scan. A command body (`<plugin-root>/skills/ca-<name>/SKILL.md`) loads
8
- ONLY when that command is invoked never bulk-read the directory.
8
+ A command body (`<plugin-root>/skills/ca-<name>/SKILL.md`)
9
+ loads only when that route is invoked. Never bulk-read the directory.
9
10
 
10
- ## Implementation
11
+ ## Installed surface
12
+
13
+ | Visibility | Count |
14
+ |---|---:|
15
+ | Core | 18 |
16
+ | Advanced | 12 |
17
+ | Canonical total | 30 |
18
+ | Compatibility aliases | 5 |
19
+ | Internal | 1 |
20
+ | Deprecated | 1 |
21
+ | **Total** | **37** |
22
+
23
+ ## Core lanes
24
+
25
+ ### Evaluate
26
+
27
+ | Command | Argument | Purpose |
28
+ |---|---|---|
29
+ | `/ca-preview` | _(none)_ | Predict the reviewer fleet and run a state-free secret scan without writing. |
30
+
31
+ ### Initialize
32
+
33
+ | Command | Argument | Purpose |
34
+ |---|---|---|
35
+ | `/ca-init` | `[--stage N] [--greenfield\|--brownfield] \| --check` | Scaffold or inspect `.codearbiter/`; explicit strategies enter the existing greenfield or brownfield workflows. |
36
+
37
+ ### Change
38
+
39
+ | Command | Argument | Purpose |
40
+ |---|---|---|
41
+ | `/ca-feature` | `"description"` | Approve a spec and plan, then build test-first. This is the entry to new behavior. |
42
+ | `/ca-sprint` | `["goal"] [--farm]` | Run one approved spec through plan-to-PR execution with SMARTS-scored decisions. `--farm` is an off-by-default Feature Forge preview that requires `FARM_API_KEY`. |
43
+ | `/ca-fix` | `"bug description"` | Prove a confirmed defect with a failing regression test, then make the smallest fix. |
44
+ | `/ca-refactor` | `"surface and motivation"` | Restructure behind behavioral parity proven by unchanged pre-existing tests. |
45
+ | `/ca-chore` | `<docs\|deps\|revert> …` | Route non-behavioral work through type-scaled gates. |
46
+ | `/ca-spike` | `"question" [timebox]` | Explore on a disposable branch and exit to findings or `/ca-feature`; never merge the spike. |
47
+ | `/ca-add-dep` | `"package"` | Vet license, provenance, maintenance, known vulnerabilities, and supply-chain risk before install. |
48
+
49
+ ### Review
50
+
51
+ | Command | Argument | Purpose |
52
+ |---|---|---|
53
+ | `/ca-review` | `[path or scope]` | Run the reviewer fleet over the current diff and block on CRITICAL or HIGH findings. |
54
+
55
+ ### Decide
11
56
 
12
57
  | Command | Argument | Purpose |
13
58
  |---|---|---|
14
- | `/ca-feature` | `"description"` | Spec-driven feature: brainstorm plan → test-first build → commit → finish. The only path to implementation. |
15
- | `/ca-sprint` | `["goal"] [--farm]` | Autonomous sprint: one interactive spec gate, then plan-to-PR execution; every auto-decision SMARTS-scored and logged with a confidence flag. Hard gates still stop. `--farm` is a Feature Forge `preview` (off by default, needs `FARM_API_KEY`; not yet validated). |
16
- | `/ca-fix` | `"bug description"` | Fix a defect via `tdd`, regression-test-first. |
17
- | `/ca-refactor` | `"surface and motivation"` | Behavior-preserving restructure behind a parity-coverage gate. |
18
- | `/ca-debug` | `"symptom"` | Investigate-then-decide root-cause analysis; exits to `/ca-fix`, `/ca-adr`, or a no-action close. |
19
- | `/ca-chore` | `<docs\|deps\|revert> …` | Non-behavioral lane: docs edits, dependency bumps, reverts — type-scaled gates, no TDD demanded of prose. |
20
- | `/ca-spike` | `"question" [timebox]` | Throwaway exploration on a `spike/*` branch. Never merges; exits to a findings note or `/ca-feature`. |
59
+ | `/ca-adr` | `"title"` | Author a numbered, dated, user-attributed architecture decision. |
21
60
 
22
- ## Commit & ship
61
+ ### Ship
23
62
 
24
63
  | Command | Argument | Purpose |
25
64
  |---|---|---|
26
- | `/ca-commit` | _(none)_ | The only path to a commit; routes to `commit-gate` (nine gates). |
27
- | `/ca-pr` | `["title"]` | Finish a branch: open-PR / merge-via-PR / discard. No direct-to-default. |
28
- | `/ca-watch` | `<PR number\|url\|branch>` | Babysit a PR's CI server-side: diagnose on red, notify + offer the merge on green. Never auto-merges. Auto-attaches from `/ca-pr` when `CODEARBITER_BABYSIT` is on. |
29
- | `/ca-review` | `[path or scope]` | Dispatch the reviewer fleet over the diff; BLOCK on CRITICAL/HIGH. |
30
- | `/ca-checkpoint` | `[focus]` | Lean periodic reviewer sweep; surfaces a triaged report. |
31
- | `/ca-tribunal` | `[scope-path] [--tag <label>]` | Deep, rarely-run whole-codebase audit across eleven specialist lenses; one file per finding plus append-only run/triage logs, resumable from disk; files GitHub issues on approval. Never a required gate. |
32
- | `/ca-release` | `[--dry-run]` | Lean SemVer release: bump-from-commits + changelog + annotated tag. |
33
- | `/ca-add-dep` | `"package"` | Vet a dependency (license, provenance, supply chain) before install. |
65
+ | `/ca-commit` | _(none)_ | Run the full commit gate and stage only the reviewed paths. |
66
+ | `/ca-pr` | `["title"] \| --watch [PR] \| --cleanup` | Open or finish a pull request; watch hosted CI; or clean a proven merged branch. Never write directly to the default branch. |
67
+ | `/ca-release` | `[--dry-run]` | Prepare a target-aware SemVer bump, changelog, and annotated tag when release authority is explicit. |
34
68
 
35
- ## Decisions
69
+ ### Operate
36
70
 
37
71
  | Command | Argument | Purpose |
38
72
  |---|---|---|
39
- | `/ca-adr` | `"title"` | Author a numbered, user-attributed ADR. |
40
- | `/ca-adr-status` | `[--adr N]` | List/inspect ADR status and supersede chains. |
41
- | `/ca-reconcile` | `["scope"]` | Reconcile artifacts vs. scaffold; arbitrate via SMARTS, user-attributed. |
42
- | `/ca-conflict` | `"description"` | Stop all work and surface a rule conflict. |
43
- | `/ca-threat-model` | `"scope"` | Optional lightweight STRIDE pass for a sensitive feature. |
73
+ | `/ca-status` | `(none) \| drift` | Show project state, or explicitly inspect provenance drift. The default path is read-only. |
74
+ | `/ca-task` | `add "<desc>" \| start <id\|"title"> \| done <id\|"title">` | Add, start, or complete task-board entries through the only sanctioned writer. |
75
+ | `/ca-doctor` | _(none)_ | Verify the active install, payload, package ownership, enforcement, and a harmless live-fire probe. |
76
+ | `/ca-override` | `"reason"` | Log one attributed bypass when the governing hard rule permits it. |
77
+
78
+ <details>
79
+ <summary><strong>Advanced operations</strong></summary>
80
+
81
+ ### Change
44
82
 
45
- Which one? `/ca-conflict` when two *rules* contradict (persona vs. docs vs. code) and work cannot
46
- safely continue — it halts everything. `/ca-reconcile` when *artifacts* have drifted (ADRs, scaffold,
47
- context docs disagree about the architecture) and you want each variance arbitrated work continues.
83
+ | Command | Argument | Purpose |
84
+ |---|---|---|
85
+ | `/ca-debug` | `"symptom"` | Investigate an unknown cause, then exit to `/ca-fix`, `/ca-adr`, or a no-action close. |
48
86
 
49
- ## Project & meta
87
+ ### Review
50
88
 
51
89
  | Command | Argument | Purpose |
52
90
  |---|---|---|
53
- | `/ca-decompose` | _(none)_ | Greenfield: layered interview to populate `.codearbiter/`. |
54
- | `/ca-create-context` | _(none)_ | Brownfield: back-fill `.codearbiter/` from existing source. |
55
- | `/ca-init` | `[--stage N \| --check]` | Scaffold the root-level `.codearbiter/` state store, or `--check` to report detection state without writing. |
56
- | `/ca-status` | _(none)_ | Show maturity, open tasks, unresolved `CONFIRM-NN`, overrides since checkpoint. |
57
- | `/ca-task` | `add "<desc>" \| start <id\|"title"> \| done <id\|"title">` | The sanctioned task-board writer: add a queued task, start one (flips to in-progress + stamps the date, minting a dotted ID on pick-up), or mark an in-progress task done. The only blessed write to `open-tasks.md`. |
58
- | `/ca-audit` | `[range]` | Assemble the governance packet for a window — commits, overrides, ADRs, sprint decisions, open items — into `.codearbiter/audits/`. Read-only. |
59
- | `/ca-metrics` | `[--window N]` | Read-only governance trend glance: override rate, small-lane rate, sprint low-confidence ratio, each with a direction arrow vs. the prior 20-commit window. Not a second `/ca-audit` packet. |
60
- | `/ca-prune` | `status \| dry \| run <path> \| audit <path> \| on \| off` | Select shared semantic prune policy and use Pi native compaction without rewriting the active session. |
61
- | `/ca-doctor` | _(none)_ | Verify the install is enforcing: interpreter, payload, cache staleness, repo state, wrapper self-test and active-dispatch coverage gap. |
62
- | `/ca-preview` | _(none)_ | Zero-onboarding read-only dry-run of the reviewer fleet on the current diff: predicts reviewers by path, runs the state-free secret scan, writes nothing. |
63
- | `/ca-context-check` | _(none)_ | Optional manual drift audit: report stale provenance-tracked docs, then per stale doc offer re-scout, re-baseline, or defer. Not the daily loop — commit-gate auto-heal owns routine maintenance. |
64
- | `/ca-standup` | _(none)_ | Daily hygiene: review repo state, then ff-only pull / prune merged branches / remove stale worktrees / surface stashes — each under per-action confirmation. |
65
- | `/ca-cleanup` | _(none)_ | Finish an already-merged branch: prove ancestry of the fetched default, classify leftover artifacts as unique/redundant/superseded, `--ff-only` to the default branch, delete the merged local branch. Every discard confirmed per item. |
66
- | `/ca-new-skill` | `"gap"` | Author a new skill after the gap is proven uncovered. |
67
- | `/ca-btw` | `"question"` | Lightweight Q&A; no state change. |
68
- | `/ca-override` | `"reason"` | Sanctioned, logged single-identity gate bypass. |
69
- | `/ca-commands` | _(none)_ | Show this catalog. |
70
-
71
- ## Maintainer
91
+ | `/ca-checkpoint` | `[focus]` | Run a periodic whole-codebase reviewer sweep and return a triaged report. |
92
+ | `/ca-threat-model` | `"scope"` | Run an opt-in lightweight STRIDE pass for a sensitive feature. |
93
+ | `/ca-tribunal` | `[scope-path] [--tag <label>]` | Run a deep, resumable eleven-lens audit. It is expensive and never a routine gate. |
94
+
95
+ ### Decide
72
96
 
73
97
  | Command | Argument | Purpose |
74
98
  |---|---|---|
75
- | `/ca-dev` | `["note"]` | Suspend orchestration to edit codeArbiter itself. Requires `CODEARBITER_DEV=1`; entry/exit logged to `overrides.log`. |
76
- | `/ca-arbiter` | _(none)_ | Exit dev mode: restore orchestration, log the exit. |
77
-
78
- ## Glossary — the words the gates speak
79
-
80
- - **stage** the project's maturity, a single number in `.codearbiter/CONTEXT.md`; higher stages
81
- demand stricter coverage and review.
82
- - **skill** a gated routine a command routes to (e.g. `tdd`, `commit-gate`).
83
- - **phase** one step inside a skill; each ends in a gate.
84
- - **gate** a phase exit condition. **STOP** waits for you; **BLOCK** halts until the condition is met.
85
- - **severity** a review finding's class (CRITICAL/HIGH/MEDIUM/LOW), independent of gate action.
86
- - **`[CONFIRM-NN]`** — a numbered open question only you can answer; dependent work pauses until
87
- it is resolved in `.codearbiter/open-questions.md`.
88
- - **SMARTS** — the six-lens scoring rubric used to arbitrate decisions; every arbitration is
89
- attributed to you, never decided silently.
90
- - **ADR** — an Architecture Decision Record under `.codearbiter/decisions/`, authored only via `/ca-adr`.
99
+ | `/ca-adr-status` | `[--adr N]` | Inspect ADR health, age, challenges, and supersession chains without writing. |
100
+ | `/ca-reconcile` | `["scope"]` | Reconcile architectural artifacts through explicit, user-attributed SMARTS choices. |
101
+
102
+ ### Operate
103
+
104
+ | Command | Argument | Purpose |
105
+ |---|---|---|
106
+ | `/ca-standup` | _(none)_ | Review repository hygiene, then confirm each safe cleanup action separately. |
107
+ | `/ca-audit` | `[range]` | Assemble a dated governance packet from source records. Read-only. |
108
+ | `/ca-metrics` | `[--window N]` | Report override, small-lane, and low-confidence trends against the prior window. |
109
+ | `/ca-prune` | `status \| dry \| run <path> \| audit <path> \| on \| off` | Select shared prune policy and use Pi native compaction without rewriting the active session. |
110
+
111
+ ### Extend
112
+
113
+ | Command | Argument | Purpose |
114
+ |---|---|---|
115
+ | `/ca-new-skill` | `"gap"` | Prove a capability gap, approve a spec, then author a new skill. |
116
+
117
+ ### Help
118
+
119
+ | Command | Argument | Purpose |
120
+ |---|---|---|
121
+ | `/ca-commands` | _(none)_ | Show this grouped catalog. |
122
+
123
+ </details>
124
+
125
+ <details>
126
+ <summary><strong>Compatibility routes</strong></summary>
127
+
128
+ These entry points remain installed for the declared compatibility window. New work should use the
129
+ canonical form; each legacy route continues to execute its original workflow.
130
+
131
+ | Existing route | Canonical form | Purpose |
132
+ |---|---|---|
133
+ | `/ca-watch` | `/ca-pr --watch [PR]` | Watch hosted CI, diagnose red, and offer the merge on green. |
134
+ | `/ca-cleanup` | `/ca-pr --cleanup` | Finish a proven merged branch under per-item discard consent. |
135
+ | `/ca-decompose` | `/ca-init --greenfield` | Populate a new project through the layered decomposition interview. |
136
+ | `/ca-create-context` | `/ca-init --brownfield` | Scout an existing codebase and backfill repository context. |
137
+ | `/ca-context-check` | `/ca-status drift` | Inspect provenance-tracked document drift and offer explicit follow-up choices. |
138
+
139
+ </details>
140
+
141
+ <details>
142
+ <summary><strong>Internal and deprecated routes</strong></summary>
143
+
144
+ | Status | Command | Argument | Purpose |
145
+ |---|---|---|---|
146
+ | Internal protocol | `/ca-conflict` | `"description"` | Stop work when governing rules contradict and surface both sides for the user. |
147
+ | Deprecated | `/ca-btw` | `"question"` | Ask a lightweight project question without state change. Prefer asking the question directly. |
148
+
149
+ </details>
150
+
151
+ ## Glossary
152
+
153
+ - **stage:** the project's maturity level in `.codearbiter/CONTEXT.md`; higher stages demand stricter coverage and review.
154
+ - **skill:** a gated routine that a command routes to, such as `tdd` or `commit-gate`.
155
+ - **phase:** one step inside a skill. Each phase ends at a gate.
156
+ - **gate:** a phase exit condition. **STOP** waits for the user; **BLOCK** halts until the condition is met.
157
+ - **severity:** a review finding's CRITICAL, HIGH, MEDIUM, or LOW classification, independent of gate action.
158
+ - **`[CONFIRM-NN]`:** a numbered question only the user can resolve; dependent work pauses until `.codearbiter/open-questions.md` records the answer.
159
+ - **SMARTS:** the Scalable, Maintainable, Available, Reliable, Testable, and Securable lenses used for attributed arbitration.
160
+ - **ADR:** an Architecture Decision Record under `.codearbiter/decisions/`, authored only through `/ca-adr`.