@arbiterforge/ca-pi 0.10.11 → 0.10.13
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 +7 -6
- package/package.json +1 -1
- package/plugins/ca-pi/CHANGELOG.md +13 -0
- package/plugins/ca-pi/extensions/codearbiter-child.js +2 -2
- package/plugins/ca-pi/extensions/codearbiter.js +8 -8
- package/plugins/ca-pi/hooks/_host.py +1 -1
- package/plugins/ca-pi/hooks/hostapi.py +1 -1
- package/plugins/ca-pi/hooks/session-start.py +5 -4
- package/plugins/ca-pi/includes/pi-host-notes.md +1 -1
- package/plugins/ca-pi/skills/ca-doctor/SKILL.md +1 -1
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ 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.17.
|
|
13
|
+
<img alt="version 2.17.11" src="https://img.shields.io/badge/version-2.17.11-2b7489">
|
|
14
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
16
|
<img alt="agents" src="https://img.shields.io/badge/agents-19-555">
|
|
@@ -117,10 +117,11 @@ Approve the normal plugin trust prompt, open the target repository, and continue
|
|
|
117
117
|
|
|
118
118
|
### Codex CLI
|
|
119
119
|
|
|
120
|
-
The public GitHub-slug flow is **available now**.
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
120
|
+
The public GitHub-slug flow is **available now**.
|
|
121
|
+
The current adapter version is read from `plugins/ca-codex/.codex-plugin/plugin.json`.
|
|
122
|
+
The dated end-to-end public-install record discovered `ca-codex 0.2.4` from release `v2.8.13`.
|
|
123
|
+
Current packaging and shared-core parity are continuously verified, while that historical record
|
|
124
|
+
stays labeled rather than being promoted to evidence for a newer adapter:
|
|
124
125
|
|
|
125
126
|
```text
|
|
126
127
|
codex plugin marketplace add arbiterForge/codeArbiter
|
|
@@ -161,7 +162,7 @@ pi config
|
|
|
161
162
|
Replace `<version>` with the numeric suffix from the chosen tag while retaining the full
|
|
162
163
|
`ca-pi-v...` tag in the install source.
|
|
163
164
|
|
|
164
|
-
Pi 0.
|
|
165
|
+
Pi 0.84.1 is the supported host for this release line. Generated aliases use `/ca-*`;
|
|
165
166
|
`/skill:ca-*` is the host-native fallback. Every `ca-pi-v*` tag is also published to npm as
|
|
166
167
|
`npm:@arbiterforge/ca-pi` with provenance (ADR-0029); the pinned Git tag remains the reproducible
|
|
167
168
|
install. The [Pi runbook](./docs/pi-parity-testing.md) covers isolated install, trust, verification,
|
package/package.json
CHANGED
|
@@ -4,6 +4,19 @@ All notable changes to `ca-pi` are documented in this file.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.10.13] - 2026-09-13
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- Continue active authorized work across startup, resume, and compact hook boundaries while retaining the idle-session command prompt.
|
|
12
|
+
|
|
13
|
+
## [0.10.12] - 2026-09-09
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- Bind the reviewed Pi 0.84.1 npm configuration and lock bytes across Windows and POSIX checkouts, require CI to execute the integrity-checked install step, and reject the retired Pi 0.80.5 host explicitly.
|
|
18
|
+
- Correct singleton Pi support wording and reconcile authenticated publication receipts for the already-published 0.10.11 release line.
|
|
19
|
+
|
|
7
20
|
## [0.10.11] - 2026-09-08
|
|
8
21
|
|
|
9
22
|
### Fixed
|
|
@@ -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.
|
|
632
|
+
var SUPPORTED_PI_VERSIONS = /* @__PURE__ */ new Set(["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.
|
|
647
|
+
return "codeArbiter requires Pi 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.";
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
var define_CODEARBITER_PI_PERMISSION_POLICY_SURFACES_default = { "ca-plan": "planning-write", codearbiter_background_bash: "background-launch" };
|
|
3
3
|
|
|
4
4
|
// <define:__CODEARBITER_PI_SKILL_EXPANSION_FINGERPRINTS__>
|
|
5
|
-
var define_CODEARBITER_PI_SKILL_EXPANSION_FINGERPRINTS_default = { "0.
|
|
5
|
+
var define_CODEARBITER_PI_SKILL_EXPANSION_FINGERPRINTS_default = { "0.84.1": "12632f365440b07d5183cff871d889b796a3c711b6b49df20f95d9bc198d6c51" };
|
|
6
6
|
|
|
7
7
|
// <define:__CODEARBITER_PI_TOOL_CLASSES__>
|
|
8
8
|
var define_CODEARBITER_PI_TOOL_CLASSES_default = { bash: "EXEC", codearbiter_background_bash: "EXEC", codearbiter_dispatch: "EXEC", codearbiter_farm_preview: "EXEC", write: "WRITE", edit: "EDIT", read: "READ" };
|
|
@@ -16,7 +16,7 @@ import { fileURLToPath as fileURLToPath5, pathToFileURL as pathToFileURL2 } from
|
|
|
16
16
|
import { types as utilTypes9 } from "node:util";
|
|
17
17
|
|
|
18
18
|
// src/compatibility.ts
|
|
19
|
-
var SUPPORTED_PI_VERSIONS = /* @__PURE__ */ new Set(["0.
|
|
19
|
+
var SUPPORTED_PI_VERSIONS = /* @__PURE__ */ new Set(["0.84.1"]);
|
|
20
20
|
var MINIMUM_NODE = [22, 19, 0];
|
|
21
21
|
var SEMVER_PREFIX = /^(\d+)\.(\d+)\.(\d+)(?:$|[-+])/u;
|
|
22
22
|
function atLeast(version, minimum) {
|
|
@@ -31,7 +31,7 @@ function atLeast(version, minimum) {
|
|
|
31
31
|
}
|
|
32
32
|
function compatibilityDirection(input) {
|
|
33
33
|
if (!SUPPORTED_PI_VERSIONS.has(input.piVersion)) {
|
|
34
|
-
return "codeArbiter requires Pi 0.
|
|
34
|
+
return "codeArbiter requires Pi 0.84.1; install a supported Pi version and run /ca-doctor.";
|
|
35
35
|
}
|
|
36
36
|
if (!atLeast(input.nodeVersion, MINIMUM_NODE)) {
|
|
37
37
|
return "codeArbiter requires Node >=22.19.0 for Pi; upgrade Node and run /ca-doctor.";
|
|
@@ -6881,10 +6881,10 @@ async function collectPiDoctorInput(dependencies) {
|
|
|
6881
6881
|
var REMEDIATION = {
|
|
6882
6882
|
package: "Reinstall ca-pi from the approved pinned Git tag, then restart Pi.",
|
|
6883
6883
|
trust: "Run /trust in Pi, inspect the project, grant trust only if you accept it, then start a new session.",
|
|
6884
|
-
version: "Upgrade Pi to 0.
|
|
6884
|
+
version: "Upgrade Pi to 0.84.1 and Node to >=22.19.0, then restart Pi.",
|
|
6885
6885
|
python: "Upgrade or install Python 3, then run /ca-doctor again.",
|
|
6886
6886
|
core: "Reinstall ca-pi to restore the generated shared core, then run /ca-doctor again.",
|
|
6887
|
-
commands: "Remove conflicting command owners or run Pi 0.
|
|
6887
|
+
commands: "Remove conflicting command owners or run Pi 0.84.1, then restart Pi and run /ca-doctor.",
|
|
6888
6888
|
bridge: "Reinstall ca-pi and Python 3, then run /ca-doctor again.",
|
|
6889
6889
|
child: "Reinstall ca-pi if the hardened child artifact is missing or tampered, then run /ca-doctor again.",
|
|
6890
6890
|
"ambient-marker": "Remove CODEARBITER_SUBAGENT from the parent environment and restart Pi.",
|
|
@@ -6913,7 +6913,7 @@ function diagnosePi(input) {
|
|
|
6913
6913
|
const packageHealthy = input.package.declared && input.package.name === "@arbiterforge/ca-pi" && existsSync(input.package.root) && existsSync(input.package.extensionPath) && samePath2(input.package.extensionPath, expectedExtension) && canonicallyInside(input.package.extensionPath, input.package.root);
|
|
6914
6914
|
const trustHealthy = input.trust.inspected && (!input.trust.required || input.trust.projectTrusted);
|
|
6915
6915
|
const waitingForTrust = input.trust.required && !input.trust.projectTrusted;
|
|
6916
|
-
const versionHealthy =
|
|
6916
|
+
const versionHealthy = input.runtime.piVersion === "0.84.1" && atLeast(input.runtime.nodeVersion, [22, 19, 0]);
|
|
6917
6917
|
const piBelowMinimum = !atLeast(input.runtime.piVersion, [0, 80, 5]);
|
|
6918
6918
|
const supportedExpansion = input.commands.expansionVerifiedVersions.includes(input.runtime.piVersion);
|
|
6919
6919
|
const expectedDoctorSkill = resolve9(input.package.root, "skills", "ca-doctor", "SKILL.md");
|
|
@@ -7034,7 +7034,7 @@ function diagnosePi(input) {
|
|
|
7034
7034
|
{
|
|
7035
7035
|
id: "active-dispatch",
|
|
7036
7036
|
state: "degraded",
|
|
7037
|
-
message: "Supported Pi 0.
|
|
7037
|
+
message: "Supported Pi 0.84.1 public extension APIs cannot submit this deterministic self-test through the active dispatcher; the wrapper self-test does not exercise active dispatch.",
|
|
7038
7038
|
remediation: REMEDIATION["active-dispatch"]
|
|
7039
7039
|
}
|
|
7040
7040
|
];
|
|
@@ -10588,7 +10588,7 @@ async function codeArbiterPi(pi) {
|
|
|
10588
10588
|
activeTools: pi.getActiveTools(),
|
|
10589
10589
|
allTools: pi.getAllTools(),
|
|
10590
10590
|
expansionFingerprints,
|
|
10591
|
-
childFingerprint: "
|
|
10591
|
+
childFingerprint: "22e5231b36a0af4a4202ced48a20e7dc9de435b6c6af985c6007bff96c5e04d1"
|
|
10592
10592
|
});
|
|
10593
10593
|
const wrapperSelfTest = await runPiWrapperSelfTest({
|
|
10594
10594
|
enabled: enabledForDoctor,
|
|
@@ -11,7 +11,7 @@ import hostapi # noqa: E402
|
|
|
11
11
|
class PiHost(hostapi.Host):
|
|
12
12
|
name = "pi"
|
|
13
13
|
adapter_name = "@arbiterforge/ca-pi"
|
|
14
|
-
adapter_version = "0.10.
|
|
14
|
+
adapter_version = "0.10.13"
|
|
15
15
|
update_target = "ca-pi"
|
|
16
16
|
update_tag_prefix = "ca-pi-v"
|
|
17
17
|
update_command = "pi update npm:@arbiterforge/ca-pi"
|
|
@@ -313,7 +313,7 @@ class Host:
|
|
|
313
313
|
|
|
314
314
|
name = "claude"
|
|
315
315
|
adapter_name = "ca"
|
|
316
|
-
adapter_version = "2.17.
|
|
316
|
+
adapter_version = "2.17.11"
|
|
317
317
|
|
|
318
318
|
# Update-notifier descriptor. Each independently versioned host overrides
|
|
319
319
|
# these three values in its per-plugin _host.py. Keeping the target,
|
|
@@ -1080,10 +1080,11 @@ def emit_update_notice(update_line):
|
|
|
1080
1080
|
|
|
1081
1081
|
|
|
1082
1082
|
def emit_trailer(host):
|
|
1083
|
-
"""AC-32: the
|
|
1083
|
+
"""AC-32: the continue-or-await trailer + catalog reference. ARBITER-ONLY —
|
|
1084
1084
|
the caller omits this emitter entirely for a non-arbiter startup (a mode
|
|
1085
|
-
with no commands has
|
|
1086
|
-
print(
|
|
1085
|
+
with no commands has no command catalog to reference)."""
|
|
1086
|
+
print("Present this state. Continue any active authorized work or accompanying "
|
|
1087
|
+
f"user request; otherwise await a {host.command_noun}. "
|
|
1087
1088
|
f"Type {host.cmd_ref('commands')} for the catalog.")
|
|
1088
1089
|
|
|
1089
1090
|
|
|
@@ -1221,7 +1222,7 @@ def main():
|
|
|
1221
1222
|
# --- Startup-state block: per-mode composable emitters (T-44) ---------
|
|
1222
1223
|
# AC-30: each emitter below is individually callable with only its own
|
|
1223
1224
|
# explicit inputs. AC-32: host/stage/active-mode are unconditional in
|
|
1224
|
-
# every mode; the
|
|
1225
|
+
# every mode; the continue-or-await trailer and the daily briefing (which
|
|
1225
1226
|
# references {standup}) are ARBITER-ONLY.
|
|
1226
1227
|
print("=== codeArbiter startup state ===")
|
|
1227
1228
|
# observability-004 (#268): name the RESOLVED host so a dormant/broken
|
|
@@ -74,7 +74,7 @@ file maps those actions to Pi's extension API.
|
|
|
74
74
|
operator-launched Pi CLI, imported module, package root, and reported version.
|
|
75
75
|
It does not prove publisher authenticity. Verify the source separately with
|
|
76
76
|
`pi list` and `pi config`.
|
|
77
|
-
-
|
|
77
|
+
- The supported promotion target is exact Pi 0.84.1. The package is
|
|
78
78
|
published as `npm:@arbiterforge/ca-pi` on every `ca-pi-v*` tag (ADR-0029);
|
|
79
79
|
the pinned Git tag remains the reproducible install. A Pi-native embedded
|
|
80
80
|
farm worker is a future spike, not an installed dependency.
|
|
@@ -21,7 +21,7 @@ remediation.
|
|
|
21
21
|
Pi bash wrapper. The exact shared-core `[H-03]` block is healthy and cannot stage files; execution
|
|
22
22
|
or a different block is unhealthy. This self-test does not traverse Pi's active dispatcher. Do not
|
|
23
23
|
rerun or respell it.
|
|
24
|
-
4. Its `active-dispatch` row remains degraded because supported Pi 0.
|
|
24
|
+
4. Its `active-dispatch` row remains degraded because supported Pi 0.84.1 public extension
|
|
25
25
|
APIs cannot submit that deterministic call through the active dispatcher. PI-AC-28 remains blocked
|
|
26
26
|
until supported-version real-host promotion/CI evidence closes the gap.
|
|
27
27
|
|