@arbiterforge/ca-pi 0.10.4 → 0.10.6

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 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.3" src="https://img.shields.io/badge/version-2.17.3-2b7489">
13
+ <img alt="version 2.17.5" src="https://img.shields.io/badge/version-2.17.5-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,7 +117,7 @@ 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**. The repository currently ships `ca-codex 0.9.3`;
120
+ The public GitHub-slug flow is **available now**. The repository currently ships `ca-codex 0.9.5`;
121
121
  the dated end-to-end public-install record discovered `ca-codex 0.2.4` from release `v2.8.13`.
122
122
  Current packaging and shared-core parity are continuously verified, while that dated live-install
123
123
  record stays labeled rather than being silently promoted to evidence for a newer adapter:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arbiterforge/ca-pi",
3
- "version": "0.10.4",
3
+ "version": "0.10.6",
4
4
  "license": "AGPL-3.0-only",
5
5
  "repository": {
6
6
  "type": "git",
@@ -4,6 +4,18 @@ All notable changes to `ca-pi` are documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.10.6] - 2026-09-06
8
+
9
+ ### Changed
10
+
11
+ - Correct privacy disclosures and align task archival documentation with the established standup-owned policy.
12
+
13
+ ## [0.10.5] - 2026-09-05
14
+
15
+ ### Fixed
16
+
17
+ - Upgrade earlier codeArbiter-managed Git hook shims after ownership-banner wording changes while preserving foreign hooks.
18
+
7
19
  ## [0.10.4] - 2026-09-05
8
20
 
9
21
  ### Fixed
@@ -117,8 +117,9 @@ from _durabilitylib import is_ephemeral_path
117
117
  from _gitexec import (git_executable, root_bound_git_env,
118
118
  trusted_git_executable, trusted_python_executable)
119
119
 
120
- SENTINEL = (
121
- "# codeArbiter-managed git hook (#161) — this SHIM is refreshed by any live "
120
+ SENTINEL = "# codeArbiter-managed git hook (#161)"
121
+ SHIM_NOTICE = (
122
+ "# This SHIM is refreshed by any live "
122
123
  "host's session (it is host-neutral, ADR-0014); the plugin-specific enforcer "
123
124
  "entries it dispatches to (.git/codearbiter-hooksd/*.path) each self-heal "
124
125
  "only on THAT plugin's own next session (#556) — edits here are overwritten."
@@ -581,6 +582,7 @@ def _shim(dropin_dir, phase):
581
582
  return (
582
583
  "#!/bin/sh\n"
583
584
  f"{SENTINEL}\n"
585
+ f"{SHIM_NOTICE}\n"
584
586
  f"D={quote(_shell_path(dropin_dir))}\n"
585
587
  f'if [ -e "$D/{_TRUSTED_IDENTITY_FILE}" ] || [ -L "$D/{_TRUSTED_IDENTITY_FILE}" ]; then\n'
586
588
  f' [ -f "$D/{_TRUSTED_IDENTITY_FILE}" ] || exit 1\n'
@@ -860,7 +862,11 @@ def install(root):
860
862
  desired = _shim(dropin_dir, phase)
861
863
  if os.path.exists(dest):
862
864
  existing = _read(dest)
863
- if existing is not None and SENTINEL not in existing:
865
+ lines = existing.splitlines() if existing is not None else []
866
+ managed = len(lines) >= 2 and lines[0] == "#!/bin/sh" and (
867
+ lines[1] == SENTINEL or lines[1].startswith(f"{SENTINEL} — ")
868
+ )
869
+ if existing is not None and not managed:
864
870
  _warn(f"an existing {phase} hook is not codeArbiter-managed — leaving it "
865
871
  f"untouched. For git-level enforcement, call "
866
872
  f"'{os.path.basename(enforcer)} {phase}' from it (see includes docs).")
@@ -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.4"
14
+ adapter_version = "0.10.6"
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.3"
316
+ adapter_version = "2.17.5"
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,
@@ -65,8 +65,9 @@ that names every member, never an implied yes.
65
65
  user; do not auto-flip.
66
66
 
67
67
  6. **Archival sweep — proposed per item, never batched** (B-24). Long-done tasks
68
- accumulate on the board and inflate the in-flight count until it stops meaning
69
- anything. List the done items older than the cutoff, then ask about **each one
68
+ accumulate on the board; they are already excluded from the in-flight count.
69
+ List dated done items strictly more than 14 calendar days old
70
+ (`ARCHIVE_CUTOFF_DAYS`), then ask about **each one
70
71
  separately** and archive only the ones the user says yes to:
71
72
  `"$PY" "<plugin-root>/hooks/taskwrite.py" archive <id>`.
72
73
 
@@ -46,7 +46,13 @@ an ID (`/ca-task start --as <group>.<type> -- "<title>"`) to disambiguate.
46
46
  - Promoting workflow follow-ups in bulk → that is the harvest
47
47
  (`<plugin-root>/includes/harvest.md`), which calls this writer for you.
48
48
  - Reading the board / counts → `/ca-status` (read-only).
49
- - Archiving long-settled done items → deferred (D-2); done items stay in-place for now.
49
+ - Archiving long-settled done items → `/ca-standup` owns the sweep (D-2,
50
+ resolved 2026-07-31). It proposes dated done items strictly more than 14 calendar
51
+ days old and requires a separate yes for each item before invoking
52
+ `<plugin-root>/hooks/taskwrite.py` with `archive <id>`. This is the helper's
53
+ archive verb, not a new public `/ca-task archive` mode. Undated done items are never
54
+ proposed automatically; standup's explicit-request and `--allow-undated` rules
55
+ apply. Declined items stay on the board.
50
56
  - Filing a separate `chore(board)` PR just to flip a task state → task-board transitions
51
57
  (`[x]` done-flip, `[~]` start-flip, new `[ ]` add) ride the **work commit** via
52
58
  commit-gate, co-located atomically with the code that completes, starts, or spawns the