@arbiterforge/ca-pi 0.6.2 → 0.8.1
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.
- package/README.md +21 -17
- package/package.json +1 -1
- package/plugins/ca-pi/CHANGELOG.md +74 -0
- package/plugins/ca-pi/COMMANDS.md +0 -7
- package/plugins/ca-pi/SKILLS.md +0 -2
- package/plugins/ca-pi/agents/design-quality-reviewer.md +1 -1
- package/plugins/ca-pi/{ORCHESTRATOR.md → arbiter.md} +28 -36
- package/plugins/ca-pi/extensions/codearbiter-child.js +2 -2
- package/plugins/ca-pi/extensions/codearbiter.js +766 -26
- package/plugins/ca-pi/generated/command-catalog.json +0 -10
- package/plugins/ca-pi/hooks/_arbiterstatelib.py +59 -11
- package/plugins/ca-pi/hooks/_bashguardlib.py +12 -1
- package/plugins/ca-pi/hooks/_hooklib.py +58 -17
- package/plugins/ca-pi/hooks/_metricslib.py +20 -0
- package/plugins/ca-pi/hooks/_modelib.py +644 -0
- package/plugins/ca-pi/hooks/_prunelib.py +51 -12
- package/plugins/ca-pi/hooks/_prunepolicy.py +33 -7
- package/plugins/ca-pi/hooks/_readinjectlib.py +10 -4
- package/plugins/ca-pi/hooks/doctor.py +2 -1
- package/plugins/ca-pi/hooks/pi-bridge.py +10 -4
- package/plugins/ca-pi/hooks/prompt-submit.py +486 -0
- package/plugins/ca-pi/hooks/prune-transcript.py +23 -3
- package/plugins/ca-pi/hooks/session-start.py +526 -434
- package/plugins/ca-pi/hooks/statusline.py +27 -9
- package/plugins/ca-pi/includes/anti-slop-design/INDEX.md +1 -1
- package/plugins/ca-pi/includes/dangerous-mode.md +57 -0
- package/plugins/ca-pi/includes/ops-mode.md +96 -0
- package/plugins/ca-pi/includes/pi-host-notes.md +14 -3
- package/plugins/ca-pi/includes/redirect.md +12 -1
- package/plugins/ca-pi/includes/routing-table.md +1 -0
- package/plugins/ca-pi/includes/safety-core.md +86 -0
- package/plugins/ca-pi/includes/smarts/core.md +1 -1
- package/plugins/ca-pi/routines/decision-lifecycle/SKILL.md +1 -1
- package/plugins/ca-pi/routines/decompose/SKILL.md +1 -1
- package/plugins/ca-pi/skills/ca-doctor/SKILL.md +1 -1
- package/plugins/ca-pi/skills/ca-spike/SKILL.md +15 -8
- package/plugins/ca-pi/includes/dev-mode.md +0 -30
- package/plugins/ca-pi/skills/ca-arbiter/SKILL.md +0 -36
- package/plugins/ca-pi/skills/ca-dev/SKILL.md +0 -42
package/README.md
CHANGED
|
@@ -10,8 +10,8 @@ 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
|
-
<img alt="commands" src="https://img.shields.io/badge/commands-
|
|
13
|
+
<img alt="version 2.15.1" src="https://img.shields.io/badge/version-2.15.1-2b7489">
|
|
14
|
+
<img alt="commands" src="https://img.shields.io/badge/commands-38-555">
|
|
15
15
|
<img alt="skills" src="https://img.shields.io/badge/skills-23-555">
|
|
16
16
|
<img alt="agents" src="https://img.shields.io/badge/agents-18-555">
|
|
17
17
|
<img alt="license AGPL v3" src="https://img.shields.io/badge/license-AGPL_v3-3da639">
|
|
@@ -119,7 +119,7 @@ Approve the normal plugin trust prompt, open the target repository, and continue
|
|
|
119
119
|
|
|
120
120
|
### Codex CLI
|
|
121
121
|
|
|
122
|
-
The public GitHub-slug flow is **available now**. The repository currently ships `ca-codex 0.
|
|
122
|
+
The public GitHub-slug flow is **available now**. The repository currently ships `ca-codex 0.7.1`;
|
|
123
123
|
the dated end-to-end public-install record discovered `ca-codex 0.2.4` from release `v2.8.13`.
|
|
124
124
|
Current packaging and shared-core parity are continuously verified, while that dated live-install
|
|
125
125
|
record stays labeled rather than being silently promoted to evidence for a newer adapter:
|
|
@@ -163,7 +163,7 @@ pi config
|
|
|
163
163
|
Replace `<version>` with the numeric suffix from the chosen tag while retaining the full
|
|
164
164
|
`ca-pi-v...` tag in the install source.
|
|
165
165
|
|
|
166
|
-
Pi 0.80.5 and Pi 0.
|
|
166
|
+
Pi 0.80.5 and Pi 0.84.1 are the supported hosts for this release line. Generated aliases use `/ca-*`;
|
|
167
167
|
`/skill:ca-*` is the host-native fallback. Every `ca-pi-v*` tag is also published to npm as
|
|
168
168
|
`npm:@arbiterforge/ca-pi` with provenance (ADR-0029); the pinned Git tag remains the reproducible
|
|
169
169
|
install. The [Pi runbook](./docs/pi-parity-testing.md) covers isolated install, trust, verification,
|
|
@@ -188,6 +188,17 @@ Follow the complete
|
|
|
188
188
|
[first-repository walkthrough](https://arbiterforge.github.io/codeArbiter/getting-started/quickstart/)
|
|
189
189
|
for expected output, proof, and recovery.
|
|
190
190
|
|
|
191
|
+
## Practice before using your own repository
|
|
192
|
+
|
|
193
|
+
[Arbiter Academy](https://arbiterforge.github.io/arbiter-academy/) is an optional practice course for
|
|
194
|
+
codeArbiter. It starts in a personal fork of the Academy repository, so you can make real commits,
|
|
195
|
+
inspect governed evidence, and recover from a failed attempt without placing your own project at risk.
|
|
196
|
+
|
|
197
|
+
The Academy website is the lesson surface. Each published lesson identifies whether an action belongs
|
|
198
|
+
in the browser, native terminal, active harness, or with the agent, then provides a copyable command,
|
|
199
|
+
the result to expect, the evidence to inspect, and a safe recovery path. Start there when you want to
|
|
200
|
+
learn the workflow before protecting a production repository.
|
|
201
|
+
|
|
191
202
|
## The docs are the operating manual
|
|
192
203
|
|
|
193
204
|
The site is designed as a continuous path from first contact to source-backed operation:
|
|
@@ -255,7 +266,7 @@ explains who creates, reads, and updates every artifact, plus its recovery rules
|
|
|
255
266
|
- No raw secret stored in the repository, logs, images, or prompts.
|
|
256
267
|
- No direct write to the default branch and no force-push.
|
|
257
268
|
- No ADR outside `/ca:adr`, with explicit user attribution.
|
|
258
|
-
- Every `/ca:override`,
|
|
269
|
+
- Every `/ca:override`, `mode --dangerous`/`mode --ops` entry/exit, and sprint auto-decision is durable and attributable.
|
|
259
270
|
- H-18 activation protection has no in-session override path; disabling a repository requires an
|
|
260
271
|
external editor and an explicit audit record.
|
|
261
272
|
|
|
@@ -290,12 +301,12 @@ gate bypasses, merges, and unresolved questions remain true stops. See
|
|
|
290
301
|
|
|
291
302
|
Claude Code's catalog is [`plugins/ca/COMMANDS.md`](./plugins/ca/COMMANDS.md). Codex uses the
|
|
292
303
|
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:
|
|
294
|
-
`ca-codex:
|
|
304
|
+
[`plugins/ca-pi/COMMANDS.md`](./plugins/ca-pi/COMMANDS.md). Current generated counts are `ca: 38`,
|
|
305
|
+
`ca-codex: 36`, and `ca-pi: 37`. Codex omits `statusline` and `prune`; Pi omits `statusline` and uses
|
|
295
306
|
native compaction for pruning.
|
|
296
307
|
|
|
297
308
|
<details>
|
|
298
|
-
<summary><strong>All
|
|
309
|
+
<summary><strong>All 38 Claude Code commands</strong></summary>
|
|
299
310
|
|
|
300
311
|
### Implementation
|
|
301
312
|
|
|
@@ -355,13 +366,6 @@ native compaction for pruning.
|
|
|
355
366
|
| `/ca:prune [status\|dry\|run\|audit\|on\|off]` | Inspect or trim transcript bulk |
|
|
356
367
|
| `/ca:commands` | Show the public catalog |
|
|
357
368
|
|
|
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
369
|
</details>
|
|
366
370
|
|
|
367
371
|
## Trust and host boundaries
|
|
@@ -505,8 +509,8 @@ implement the Pi adapter, investigate live failures, review older paths, and con
|
|
|
505
509
|
across permissions, Windows process-tree cleanup, provenance, audit integrity, generated-source
|
|
506
510
|
drift, CI contracts, and documentation.
|
|
507
511
|
|
|
508
|
-
The final candidate passed the six Pi platform cells
|
|
509
|
-
and Linux, plus security analysis, CodeQL, shared-core contracts, generated-surface contracts, and
|
|
512
|
+
The final candidate passed the six Pi platform cells — both then-supported Pi versions on Windows,
|
|
513
|
+
macOS, and Linux (versions recorded in the linked artifacts), plus security analysis, CodeQL, shared-core contracts, generated-surface contracts, and
|
|
510
514
|
the repository's final verifier. Sanitized evidence:
|
|
511
515
|
|
|
512
516
|
- [`docs/reports/pi-support/promotion.md`](docs/reports/pi-support/promotion.md)
|
package/package.json
CHANGED
|
@@ -4,6 +4,80 @@ All notable changes to `ca-pi` are documented in this file.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.8.1] - 2026-08-13
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- `/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.
|
|
12
|
+
|
|
13
|
+
## [0.8.0] - 2026-08-12
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- Orchestration **mode plane** (ADR-0030): `arbiter`, `dangerous`, and `ops`. The injected persona is
|
|
18
|
+
now `safety-core.md` plus the active mode's body, composed rather than a single fixed file.
|
|
19
|
+
**On Pi this release is read-only:** the footer reports the active mode and the shared store is
|
|
20
|
+
keyed the same way as on the other hosts, but Pi cannot yet CHANGE the mode — the control token is
|
|
21
|
+
intercepted on Claude and Codex only. A Pi session runs `arbiter`. The input-event handler, the
|
|
22
|
+
bridge flip path, and the per-turn persona refresh are tracked and not in this release.
|
|
23
|
+
- `ops` mode: an advisory carve-out permitting in-channel work that starts, observes, or exercises a
|
|
24
|
+
running system, keyed on the durable artifact produced. Anything mutating tracked files, the index,
|
|
25
|
+
git history, or published state stays routed and refused.
|
|
26
|
+
|
|
27
|
+
### Changed
|
|
28
|
+
|
|
29
|
+
- `ORCHESTRATOR.md` is renamed `arbiter.md` and reframed as the arbiter mode's body rather than an
|
|
30
|
+
always-on kernel. Its header records the former name so historical citations stay resolvable.
|
|
31
|
+
- Persona injection moved off `SessionStart` to the per-turn prompt seam; a once-per-session event
|
|
32
|
+
cannot express a mid-session posture change. The startup block is now per-mode composable emitters.
|
|
33
|
+
- `dev` mode becomes `dangerous`: a general gates-off posture for any repository, with no
|
|
34
|
+
maintainer-only env gate. No enforcement hook reads the mode, so every gate fires in all modes.
|
|
35
|
+
|
|
36
|
+
### Removed
|
|
37
|
+
|
|
38
|
+
- The `dev` and `arbiter` mode-entry commands. The mode bodies are the surface. The shared source
|
|
39
|
+
catalog under `core/surface/commands/` drops from 40 to 38; Pi's own visible catalog goes 38 → 37,
|
|
40
|
+
because each host excludes entries it cannot serve and a source count is never a host count.
|
|
41
|
+
|
|
42
|
+
### Fixed
|
|
43
|
+
|
|
44
|
+
- A compaction could silently clear a live mode, because the mode plane borrowed the legacy marker's
|
|
45
|
+
owner record to decide whether it had seen a session before. It now keeps its own anchor.
|
|
46
|
+
- Mode and marker state resolved through two different roots in three places; in a linked worktree a
|
|
47
|
+
transition pair could split across two audit logs, or a stale session go undetected.
|
|
48
|
+
## [0.7.1] - 2026-08-12
|
|
49
|
+
|
|
50
|
+
### Fixed
|
|
51
|
+
|
|
52
|
+
- Shared bash guard refresh. `_bashguardlib` is re-vendored here from `core/pysrc/`, so `ca-pi`
|
|
53
|
+
carries the same guard as its siblings. The behavior it corrects is Codex execution-workdir
|
|
54
|
+
handling: an explicit workdir is honored, so H-01's branch check reads the repository the command
|
|
55
|
+
actually runs in rather than the process's own directory. Nothing changes for a Pi session — this
|
|
56
|
+
host never sets that workdir — but the payload did, so the version advances with it.
|
|
57
|
+
|
|
58
|
+
## [0.7.0] - 2026-08-10
|
|
59
|
+
|
|
60
|
+
### Added
|
|
61
|
+
|
|
62
|
+
- `/ca-sidebar on|off|toggle|width N`: an optional right-hand sidebar column at
|
|
63
|
+
pi-sidebar-tui panel parity (session, subagents, workspace, todos), defaulting
|
|
64
|
+
on in interactive parents at 120 columns or wider, width clamped 24..60. The
|
|
65
|
+
compositor uses Pi render hooks that are undocumented in every promoted
|
|
66
|
+
version, so each install is probe-gated at runtime, every paint re-validates
|
|
67
|
+
terminal geometry inside a synchronized-output envelope, and any failure
|
|
68
|
+
disposes back to native rendering with a single bounded warning — the sidebar
|
|
69
|
+
can degrade to unavailable, never wedge the terminal. Workspace and todos
|
|
70
|
+
panels are trusted-only; the MCP panel renders only when Pi exposes servers,
|
|
71
|
+
which no promoted version does. `/ca-doctor` gains a sidebar health row, and
|
|
72
|
+
the activity registry now retains up to 16 concurrent active entries so the
|
|
73
|
+
sidebar's subagents panel can show the detail the footer cannot fit.
|
|
74
|
+
|
|
75
|
+
## [0.6.3] - 2026-08-10
|
|
76
|
+
|
|
77
|
+
### Changed
|
|
78
|
+
|
|
79
|
+
- Promote the verified Pi host window through exact Pi 0.84.1.
|
|
80
|
+
|
|
7
81
|
## [0.6.2] - 2026-08-10
|
|
8
82
|
|
|
9
83
|
### Fixed
|
|
@@ -68,13 +68,6 @@ context docs disagree about the architecture) and you want each variance arbitra
|
|
|
68
68
|
| `/ca-override` | `"reason"` | Sanctioned, logged single-identity gate bypass. |
|
|
69
69
|
| `/ca-commands` | _(none)_ | Show this catalog. |
|
|
70
70
|
|
|
71
|
-
## Maintainer
|
|
72
|
-
|
|
73
|
-
| Command | Argument | Purpose |
|
|
74
|
-
|---|---|---|
|
|
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
71
|
## Glossary — the words the gates speak
|
|
79
72
|
|
|
80
73
|
- **stage** — the project's maturity, a single number in `.codearbiter/CONTEXT.md`; higher stages
|
package/plugins/ca-pi/SKILLS.md
CHANGED
|
@@ -9,7 +9,6 @@ skill is invoked — never bulk-read this directory.
|
|
|
9
9
|
| `/ca-add-dep` | Vet a new or changed third-party dependency for license, provenance, and supply-chain risk before any install runs. |
|
|
10
10
|
| `/ca-adr` | Author a numbered, dated, user-attributed Architecture Decision Record under .codearbiter/decisions/. |
|
|
11
11
|
| `/ca-adr-status` | Report the health of Architecture Decision Records — aged, unchallenged, supersession candidates, unresolved CONFIRM-NN. Read-only. |
|
|
12
|
-
| `/ca-arbiter` | Exit maintainer dev mode — restore orchestration, remove the dev marker, log the exit. |
|
|
13
12
|
| `/ca-audit` | Assemble the governance record for a range — commits, overrides, ADRs, sprint auto-decisions, open questions, checkpoint findings — into one dated audit packet. Read-only. |
|
|
14
13
|
| `/ca-btw` | Lightweight Q&A about the project — answer from context and return, no routing, no state change. |
|
|
15
14
|
| `/ca-checkpoint` | Periodic multi-reviewer sweep of the whole codebase — surfaces a triaged checkpoint report. |
|
|
@@ -22,7 +21,6 @@ skill is invoked — never bulk-read this directory.
|
|
|
22
21
|
| `/ca-create-context` | Brownfield back-fill — scout an existing codebase and populate .codearbiter/, then lock it initialized. |
|
|
23
22
|
| `/ca-debug` | Investigate-then-decide root-cause analysis for a defect whose cause is unknown. No code changes — exits to /ca-fix, /ca-adr, or a no-action close. |
|
|
24
23
|
| `/ca-decompose` | Greenfield decomposition interview — a layered interview that populates .codearbiter/ and locks it initialized. |
|
|
25
|
-
| `/ca-dev` | Maintainer override — suspend orchestration to edit codeArbiter itself. Env-gated (CODEARBITER_DEV=1), entry/exit logged to overrides.log. |
|
|
26
24
|
| `/ca-doctor` | Verify the active host install, package, command ownership, enforcement, wrapper self-test, and active-dispatch coverage gap. Read-only. |
|
|
27
25
|
| `/ca-feature` | "Start a feature: brainstorm a spec, get it approved, then drive it test-first through the pipeline. The one entry to implementation." |
|
|
28
26
|
| `/ca-fix` | "Fix a confirmed bug: a failing regression test first, then a minimal fix, then the rest of the tdd gates." |
|
|
@@ -20,7 +20,7 @@ for the producer to fix.
|
|
|
20
20
|
|
|
21
21
|
Reviews only **generated, user-facing artifacts** (UI, reports, resumes, slides, charts, PR
|
|
22
22
|
descriptions, CHANGELOG sections). Does NOT review codeArbiter's own internal framework docs
|
|
23
|
-
(`
|
|
23
|
+
(`arbiter.md`, the `INDEX.md` files, skill/agent bodies). If asked to review an internal doc,
|
|
24
24
|
decline and say so.
|
|
25
25
|
|
|
26
26
|
## Required Reading (lazy, by medium)
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
<!-- codeArbiter v2 — orchestrator persona
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
<!-- codeArbiter v2 — orchestrator persona (formerly ORCHESTRATOR.md). This is the
|
|
2
|
+
`arbiter` mode's body: one of three mode bodies composed after `includes/safety-core.md`
|
|
3
|
+
at per-turn injection time (the other two are `includes/dangerous-mode.md` and
|
|
4
|
+
`includes/ops-mode.md`). The all-modes invariants — the conflict hierarchy, the hard
|
|
5
|
+
secrets/branch/ADR rules, the irreversible-action set, the anti-circumvention rule — live in
|
|
6
|
+
`safety-core.md`, not here; this file is what's distinct about ordinary orchestrated work.
|
|
7
|
+
Routing detail, the reference
|
|
4
8
|
map, and skill/routine bodies load on demand from <plugin-root>/. -->
|
|
5
9
|
|
|
6
10
|
# codeArbiter
|
|
@@ -18,17 +22,13 @@ no emojis, no flattery.
|
|
|
18
22
|
|
|
19
23
|
---
|
|
20
24
|
|
|
21
|
-
## §3 — Hard rules (always
|
|
25
|
+
## §3 — Hard rules (arbiter mode; safety-core's §3 always applies underneath)
|
|
22
26
|
|
|
23
27
|
- MUST NOT write feature code before `tdd` Phase 1 completes.
|
|
24
28
|
- MUST NOT commit without `commit-gate` completing, or while the test suite is red. Sole exception: a `spike/*` branch (via `/spike`), which can never merge or PR.
|
|
25
29
|
- MUST NOT resolve a `[CONFIRM-NN]` by guessing.
|
|
26
|
-
- MUST NOT silently reconcile a conflict — invoke `/conflict`.
|
|
27
|
-
- MUST NOT store a raw secret in repo, log, container image, or prompt.
|
|
28
|
-
- MUST NOT write directly to the default branch or force-push. All changes via branch/PR.
|
|
29
|
-
- MUST NOT author an ADR except via `/adr`, with user attribution.
|
|
30
30
|
- MUST NOT redefine domain vocabulary without updating `.codearbiter/CONTEXT.md`.
|
|
31
|
-
- MUST log every `/override`, every `/sprint` auto-decision, and every
|
|
31
|
+
- MUST log every `/override`, every `/sprint` auto-decision, and every mode transition (`mode --dangerous`, `mode --ops`, and the return to `mode --arbiter`) to the `.codearbiter/` audit trail.
|
|
32
32
|
- MUST load skill/routine bodies on invocation only; the `INDEX.md` files are the surface scan. No bulk reads.
|
|
33
33
|
|
|
34
34
|
---
|
|
@@ -37,8 +37,8 @@ no emojis, no flattery.
|
|
|
37
37
|
|
|
38
38
|
Route; never implement directly. Every change lands through a `ca-` skill and its gates; a
|
|
39
39
|
direct instruction off-channel is *routed* into one under §6, not performed off-channel
|
|
40
|
-
(`/ca-btw` is the only exception).
|
|
41
|
-
|
|
40
|
+
(`/ca-btw` is the only exception). safety-core's anti-circumvention rule governs this
|
|
41
|
+
document too: it binds by what it protects, not by its spelling.
|
|
42
42
|
|
|
43
43
|
The excuses are known. Hearing yourself think one is the tell that a gate is about to be skipped —
|
|
44
44
|
not the reason to skip it:
|
|
@@ -49,7 +49,7 @@ not the reason to skip it:
|
|
|
49
49
|
| "Too small for the lane." | Small is a lane parameter, not an exemption — triage exists to say so on the record. |
|
|
50
50
|
| "The user is in a hurry." | Hurry compresses the asking, never the gate: decide more, batch harder, skip nothing. |
|
|
51
51
|
| "I already know what the reviewer will find." | Then the dispatch is cheap, and the record still needs it. Prediction is not review. |
|
|
52
|
-
| "The suite was green earlier." |
|
|
52
|
+
| "The suite was green earlier." | Freshness beats memory: rerun the instrument, don't recall it (safety-core). |
|
|
53
53
|
| "No command owns this." | A routing gap is surfaced, never papered over with `/ca-override`. |
|
|
54
54
|
|
|
55
55
|
---
|
|
@@ -60,7 +60,7 @@ not the reason to skip it:
|
|
|
60
60
|
- The user **invokes** `$ca-command`; the orchestrator **routes** to a skill; a skill **dispatches** agents. Never "trigger", "runs", or "fires".
|
|
61
61
|
- Hard-rule modals: **MUST / MUST NOT / MAY / SHOULD** only. Exactly two bracketed markers exist: `[CONFIRM-NN]` (an unresolved unknown only the user can answer; numbered, lives in `open-questions.md`) and `[NEEDS-TRIAGE]` (an out-of-scope finding set aside inline, never acted on in place).
|
|
62
62
|
|
|
63
|
-
**Paths.** Framework: `<plugin-root>/` (`
|
|
63
|
+
**Paths.** Framework: `<plugin-root>/` (`arbiter.md`, `skills/` — the user-invocable
|
|
64
64
|
`ca-` entry skills, `routines/` — the orchestrator routine bodies this document routes to,
|
|
65
65
|
`hooks/`, `includes/`). Project state: `<project-root>/.codearbiter/`. No vendoring, no dual root.
|
|
66
66
|
|
|
@@ -71,25 +71,16 @@ is the host-native fallback). Routine bodies under `routines/` route by path, ne
|
|
|
71
71
|
Before dispatching roles, editing audit files, or using native compaction, load
|
|
72
72
|
`<plugin-root>/includes/pi-host-notes.md` for Pi's trust, tool, and process boundaries.
|
|
73
73
|
|
|
74
|
-
**
|
|
74
|
+
**Loaded fully on invocation, never acted on from memory:**
|
|
75
75
|
|
|
76
|
-
- `/ca-dev` — suspends the gates to edit codeArbiter itself. Env-gated: activates only when
|
|
77
|
-
`CODEARBITER_DEV=1`, else refuse in one line and stay in orchestration. On `/ca-dev` or
|
|
78
|
-
`/ca-arbiter`, load `<plugin-root>/includes/dev-mode.md` and honor it in full — entry and
|
|
79
|
-
exit are logged — before suspending any gate. The escape hatch, not the required lane: normal
|
|
80
|
-
codeArbiter changes flow through `/ca-feature` / `/ca-fix` / `/ca-chore` and ship via PR.
|
|
81
76
|
- `/ca-sprint` — autonomous sprint: load and follow `<plugin-root>/SPRINT.md`. One
|
|
82
77
|
interactive spec gate, then autonomous execution with every non-hard-gate decision SMARTS-scored
|
|
83
78
|
and logged; hard gates remain true stops. A trailing `--farm` flag passes through to `SPRINT.md`.
|
|
84
79
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
When rules pull apart, resolve in this order; if unresolvable, invoke `/conflict` — never guess:
|
|
90
|
-
1. Security & correctness of the audit trail — 2. Correctness & data integrity —
|
|
91
|
-
3. Maintainability & reviewability — 4. Performance — 5. Developer velocity.
|
|
92
|
-
Cite the level of any non-obvious tradeoff in the PR description.
|
|
80
|
+
A gates-off posture is a deterministic `mode --dangerous` token flip, intercepted before this
|
|
81
|
+
document is ever loaded for that turn — not a command, and not routed here. `includes/dangerous-mode.md`
|
|
82
|
+
is the posture's own body, composed with `includes/safety-core.md` at injection time; this document
|
|
83
|
+
never loads it on this session's behalf.
|
|
93
84
|
|
|
94
85
|
---
|
|
95
86
|
|
|
@@ -128,15 +119,18 @@ exists for a genuinely incomplete reading, and for the destructive set below —
|
|
|
128
119
|
|
|
129
120
|
**Clarity and risk are separate axes.** Tier 1 requires BOTH unambiguous intent AND a non-destructive
|
|
130
121
|
command. Anything irreversible or gate-bypassing drops to tier 2 and asks, even when the intent is
|
|
131
|
-
obvious — there the confirmation *is* the gate, not friction. That set: `/ca-override`,
|
|
132
|
-
the default branch, branch or worktree deletion, release and tag publication
|
|
122
|
+
obvious — there the confirmation *is* the gate, not friction. That set (safety-core's §6): `/ca-override`,
|
|
123
|
+
merge to the default branch, branch or worktree deletion, and release and tag publication. A
|
|
124
|
+
deterministic mode-token flip (`mode --dangerous`, `mode --ops`) is friction, not a gate, so it is
|
|
125
|
+
not in this set — ADR-0030 supersedes ADR-0022's tier-2 confirmation clause for dangerous-mode entry
|
|
126
|
+
alone; the other four members are unchanged.
|
|
133
127
|
|
|
134
128
|
**When a decision is the user's, ask it — fully, once.** Never name an open decision without asking
|
|
135
129
|
it; a flagged-but-unasked question is an omission wearing a disclaimer. Lead every ask with your
|
|
136
130
|
recommendation AND the strongest consideration against it — a bare recommendation anchors; the
|
|
137
|
-
counter-case is what makes the choice real. Batch independent questions into one round.
|
|
138
|
-
|
|
139
|
-
|
|
131
|
+
counter-case is what makes the choice real. Batch independent questions into one round. Safety-core's
|
|
132
|
+
decision-authority rule governs which parameters are yours to decide alone; an uncertain
|
|
133
|
+
classification is still a fork, and forks are asked.
|
|
140
134
|
|
|
141
135
|
**What remains prohibited is performing the work instead of routing it.** The orchestrator routes the
|
|
142
136
|
command; it does not improvise the operation. When no command owns an operation, that is a
|
|
@@ -153,7 +147,5 @@ routing gap to surface.
|
|
|
153
147
|
`BY:` field. Append one line to `.codearbiter/overrides.log` (append-only, committed), then proceed
|
|
154
148
|
and note the override is logged. The startup briefing surfaces overrides since the last checkpoint.
|
|
155
149
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
gate stands. A confirmed false positive is a bug filed through its lane; `/override` remains for the
|
|
159
|
-
judged exception, and its log line says which of the two it was.
|
|
150
|
+
Safety-core's §7 governs what happens when a gate looks wrong — it is diagnosed there, not
|
|
151
|
+
repeated here.
|
|
@@ -629,7 +629,7 @@ function resolvePythonCommand(platform = process.platform, probe = systemPythonP
|
|
|
629
629
|
}
|
|
630
630
|
|
|
631
631
|
// src/compatibility.ts
|
|
632
|
-
var SUPPORTED_PI_VERSIONS = /* @__PURE__ */ new Set(["0.80.5", "0.
|
|
632
|
+
var SUPPORTED_PI_VERSIONS = /* @__PURE__ */ new Set(["0.80.5", "0.84.1"]);
|
|
633
633
|
var MINIMUM_NODE = [22, 19, 0];
|
|
634
634
|
var SEMVER_PREFIX = /^(\d+)\.(\d+)\.(\d+)(?:$|[-+])/u;
|
|
635
635
|
function atLeast(version, minimum) {
|
|
@@ -644,7 +644,7 @@ function atLeast(version, minimum) {
|
|
|
644
644
|
}
|
|
645
645
|
function compatibilityDirection(input) {
|
|
646
646
|
if (!SUPPORTED_PI_VERSIONS.has(input.piVersion)) {
|
|
647
|
-
return "codeArbiter requires Pi 0.80.5 or 0.
|
|
647
|
+
return "codeArbiter requires Pi 0.80.5 or 0.84.1; install a supported Pi version and run /ca-doctor.";
|
|
648
648
|
}
|
|
649
649
|
if (!atLeast(input.nodeVersion, MINIMUM_NODE)) {
|
|
650
650
|
return "codeArbiter requires Node >=22.19.0 for Pi; upgrade Node and run /ca-doctor.";
|