@arbiterforge/ca-pi 0.10.12 → 0.14.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.
Files changed (58) hide show
  1. package/README.md +6 -5
  2. package/package.json +2 -1
  3. package/plugins/ca-pi/CHANGELOG.md +165 -0
  4. package/plugins/ca-pi/SKILLS.md +1 -1
  5. package/plugins/ca-pi/SPRINT.md +40 -10
  6. package/plugins/ca-pi/agents/backend-author.md +1 -1
  7. package/plugins/ca-pi/agents/frontend-author.md +1 -1
  8. package/plugins/ca-pi/generated/command-catalog.json +1 -1
  9. package/plugins/ca-pi/helpers/artifacts/ca-artifact-darwin-amd64 +0 -0
  10. package/plugins/ca-pi/helpers/artifacts/ca-artifact-darwin-arm64 +0 -0
  11. package/plugins/ca-pi/helpers/artifacts/ca-artifact-linux-amd64 +0 -0
  12. package/plugins/ca-pi/helpers/artifacts/ca-artifact-linux-arm64 +0 -0
  13. package/plugins/ca-pi/helpers/artifacts/ca-artifact-windows-amd64.exe +0 -0
  14. package/plugins/ca-pi/helpers/artifacts/ca-artifact-windows-arm64.exe +0 -0
  15. package/plugins/ca-pi/helpers/artifacts/release.json +38 -0
  16. package/plugins/ca-pi/hooks/_approvallib.py +355 -0
  17. package/plugins/ca-pi/hooks/_artifactlib.py +855 -0
  18. package/plugins/ca-pi/hooks/_cleanuplib.py +1553 -0
  19. package/plugins/ca-pi/hooks/_hooklib.py +37 -13
  20. package/plugins/ca-pi/hooks/_host.py +1 -1
  21. package/plugins/ca-pi/hooks/_intentlib.py +31 -0
  22. package/plugins/ca-pi/hooks/_planfilelib.py +34 -1
  23. package/plugins/ca-pi/hooks/_protectedstatelib.py +11 -1
  24. package/plugins/ca-pi/hooks/_readinjectlib.py +120 -0
  25. package/plugins/ca-pi/hooks/_releaselib.py +933 -85
  26. package/plugins/ca-pi/hooks/_standuplib.py +38 -10
  27. package/plugins/ca-pi/hooks/doctor.py +103 -0
  28. package/plugins/ca-pi/hooks/hostapi.py +1 -1
  29. package/plugins/ca-pi/hooks/pi-bridge.py +5 -1
  30. package/plugins/ca-pi/hooks/prompt-submit.py +33 -10
  31. package/plugins/ca-pi/hooks/releasehash.py +46 -32
  32. package/plugins/ca-pi/hooks/session-start.py +5 -4
  33. package/plugins/ca-pi/includes/artifacts.md +166 -0
  34. package/plugins/ca-pi/includes/author-tdd-workflow.md +2 -1
  35. package/plugins/ca-pi/includes/farm.md +27 -4
  36. package/plugins/ca-pi/includes/routing-table.md +2 -2
  37. package/plugins/ca-pi/includes/verification-boundary.md +27 -0
  38. package/plugins/ca-pi/package.json +18 -0
  39. package/plugins/ca-pi/routines/INDEX.md +4 -4
  40. package/plugins/ca-pi/routines/brainstorming/SKILL.md +23 -4
  41. package/plugins/ca-pi/routines/commit-gate/SKILL.md +30 -5
  42. package/plugins/ca-pi/routines/executing-plans/SKILL.md +52 -7
  43. package/plugins/ca-pi/routines/finishing-a-development-branch/SKILL.md +25 -3
  44. package/plugins/ca-pi/routines/refactor/SKILL.md +3 -2
  45. package/plugins/ca-pi/routines/release/SKILL.md +150 -44
  46. package/plugins/ca-pi/routines/subagent-driven-development/SKILL.md +53 -9
  47. package/plugins/ca-pi/routines/subagent-driven-development/references/farm-dispatch.md +20 -3
  48. package/plugins/ca-pi/routines/tdd/SKILL.md +27 -5
  49. package/plugins/ca-pi/routines/using-git-worktrees/SKILL.md +11 -2
  50. package/plugins/ca-pi/routines/writing-plans/SKILL.md +39 -10
  51. package/plugins/ca-pi/routines/writing-plans/references/farm-plan.md +34 -13
  52. package/plugins/ca-pi/skills/ca-chore/SKILL.md +7 -3
  53. package/plugins/ca-pi/skills/ca-commit/SKILL.md +3 -2
  54. package/plugins/ca-pi/skills/ca-doctor/SKILL.md +14 -0
  55. package/plugins/ca-pi/skills/ca-feature/SKILL.md +42 -8
  56. package/plugins/ca-pi/skills/ca-refactor/SKILL.md +4 -2
  57. package/plugins/ca-pi/skills/ca-release/SKILL.md +7 -6
  58. package/plugins/ca-pi/skills/ca-standup/SKILL.md +36 -8
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ca-release
3
- description: Cut a release the only sanctioned way — SemVer bump from the commit log, a CHANGELOG section, an annotated tag. Takes the declared target's name as its only argument, or --dry-run to preview one with no write. The only path to a version tag.
3
+ description: Cut a release the only sanctioned way — derive the target's declared version policy from the commit log, roll its changelog, compose an annotated tag, and optionally publish its exact declared assets. Takes the declared target's name as its only argument, or --dry-run to preview one with no write. The only path to a version tag.
4
4
  argument-hint: "[target] | --dry-run"
5
5
  ---
6
6
 
@@ -10,14 +10,14 @@ The only permitted path to a version tag. A release is a deployment-readiness as
10
10
 
11
11
  ## Flow
12
12
 
13
- Routes to the `release` skill, which resolves everything about the release from the project's **declared target file**, `<project-root>/.codearbiter/release-targets.md` — the tag prefix, the manifests, the changelog, the payload scope, and the optional checks. Nothing about any target is written here.
13
+ Routes to the `release` skill, which resolves everything about the release from the project's **declared target file**, `<project-root>/.codearbiter/release-targets.md` — the tag prefix, declared version policy, manifests, changelog, payload scope, optional checks, and optional exact release-asset inventory. Nothing about any target is written here.
14
14
 
15
15
  `/ca-release` takes the target's name as its only argument. When the declared file names exactly one target, a bare `/ca-release` uses it; when it names more, the argument is required and the skill STOPs rather than guessing. A project with no declared file at all enters the skill's own back-fill lane, which proposes a row and writes nothing without explicit confirmation.
16
16
 
17
17
  1. **Pre-flight** — declared row resolved, working tree clean, not on the default branch, suite green, no blocking `[CONFIRM-NN]` open. Resolve `LAST_TAG` within that target's own tag series and scope the commit window to the row's declared payload, so a sibling target's commit never bumps this one or lands in its changelog.
18
- 2. **Version** — classify the window by Conventional Commits type and apply the highest-precedence bump, against a base that accounts for both the last tag and every declared manifest. Every bumping commit must carry a `CHANGELOG:` footer; a missing one BLOCKs and is never auto-filled.
19
- 3. **Surfaces** — roll the section into the declared changelog, update every declared manifest, and run the row's declared `pre-tag` checks. Those checks are check-only: one that mutates the tree BLOCKs.
20
- 4. **Tag** — commit the release edits, then compose the annotated tag. Never push it or publish a Release without explicit user authorization — publication is a separate decision.
18
+ 2. **Version** — classify the window by Conventional Commits type and derive the next identity through the row's declared `version-policy` (`semver` by default). The base accounts for both the last compatible tag and every declared manifest. Every bumping commit must carry a `CHANGELOG:` footer; a missing one BLOCKs and is never auto-filled.
19
+ 3. **Surfaces** — roll the section into the declared changelog, update every declared manifest, and run the row's declared `pre-tag` checks. After those edits are committed, declared assets are qualified in the protected publisher before any tag push: either `release-build` produces an exact inventory in an empty hosted directory, or a reviewed retained exact-head CI cohort supplies provenance-bound packages with the same declared filenames. Tracked-tree mutation, arbitrary build failure, provenance mismatch, or inventory drift BLOCKs.
20
+ 4. **Tag** — compose the annotated tag and report any verified asset inventory. Never push it or publish a Release without explicit user authorization. On authorization, upload only the verified inventory and require the published names to match exactly.
21
21
 
22
22
  ## Dry run
23
23
 
@@ -31,7 +31,8 @@ prints the resolved row's fields verbatim, which doubles as a way to validate a
31
31
  `<project-root>/.codearbiter/release-targets.md` without tagging anything. Declared `pre-tag` checks
32
32
  are listed, not run — they assert against the manifests AFTER the bump this mode never performs, so
33
33
  running them early would report false failures against files `--dry-run` deliberately leaves
34
- untouched, not a preview of anything real. `release`'s own SKILL.md is authoritative for the exact
34
+ untouched, not a preview of anything real. A declared `release-build` and its asset templates are also
35
+ listed but never executed or rendered into files. `release`'s own SKILL.md is authoritative for the exact
35
36
  stopping point.
36
37
 
37
38
  ## Arguments
@@ -68,14 +68,7 @@ that names every member, never an implied yes.
68
68
  accumulate on the board; they are already excluded from the in-flight count.
69
69
  List dated done items strictly more than 14 calendar days old
70
70
  (`ARCHIVE_CUTOFF_DAYS`), then ask about **each one
71
- separately** and archive only the ones the user says yes to:
72
- `"$PY" "<plugin-root>/hooks/taskwrite.py" archive <id>`.
73
-
74
- One confirmation per item, one helper call per item — the two map 1:1 on
75
- purpose. A batched "archive all 12?" turns twelve decisions into one, and the
76
- helper's own per-item ordering (append to `done-tasks.md` first, then remove
77
- from `open-tasks.md`) is what makes an interrupted sweep recoverable; a batch
78
- loop that answered once would throw that away.
71
+ separately**, noting which ones the user says yes to.
79
72
 
80
73
  An item marked `[x]` with **no `(done YYYY-MM-DD)` stamp** cannot be aged, so
81
74
  it is never in the proposed set. Offer it only if the user asks, and only with
@@ -86,6 +79,41 @@ that names every member, never an implied yes.
86
79
  Declining is always available and costs nothing: an unarchived task stays
87
80
  exactly where it is. Never archive without a yes.
88
81
 
82
+ **If at least one item was confirmed:** an archive is calendar-driven hygiene,
83
+ not a consequence of any in-flight work, so it never rides another commit.
84
+ Before creating the archive branch, require a **clean working tree and index**
85
+ (`git status --porcelain` emits nothing); otherwise STOP before mutating the
86
+ board. Then switch to the configured default branch, fetch it and fast-forward
87
+ it with step 1's `--ff-only` pull, and STOP on checkout, fetch, divergence, or
88
+ pull failure. Verify that HEAD is the fetched default tip. Only then create and
89
+ switch to a fresh dedicated branch with non-overwriting `git switch -c`, e.g.
90
+ `chore/board-archive-<YYYY-MM-DD>-<HHMMSSZ>`. Branch creation MUST fail closed
91
+ if the branch name already exists; never reuse or reset an earlier sweep's
92
+ branch. Verify the new branch is current and still points at the fetched
93
+ default tip before the first archive helper call.
94
+
95
+ This ordered isolation is what makes the sweep committable at all: writing
96
+ straight to disk on whatever branch happens to be current would either land
97
+ on `main` (refused outright) or mix into an unrelated feature branch's staged
98
+ work (a type split under commit-gate Phase 3) — see #573. One fresh branch per
99
+ sweep, never reused across sessions.
100
+
101
+ On that branch, archive each confirmed item, still one at a time:
102
+ `"$PY" "<plugin-root>/hooks/taskwrite.py" archive <id>`.
103
+
104
+ One confirmation per item, one helper call per item — the two map 1:1 on
105
+ purpose. A batched "archive all 12?" turns twelve decisions into one, and the
106
+ helper's own per-item ordering (append to `done-tasks.md` first, then remove
107
+ from `open-tasks.md`) is what makes an interrupted sweep recoverable; a batch
108
+ loop that answered once would throw that away.
109
+
110
+ Once every confirmed item is archived, stage `.codearbiter/open-tasks.md` and
111
+ `.codearbiter/done-tasks.md` — the very first archive ever run creates
112
+ `done-tasks.md`; that new file is expected here, not scope creep — and hand
113
+ off to `/ca-chore docs`, which exits through `commit-gate` (classification
114
+ `docs`) and `finishing-a-development-branch` as usual. `.codearbiter/` prose
115
+ is already a listed `docs` chore type.
116
+
89
117
  Present a one-line summary of what was done and what was declined.
90
118
 
91
119
  ## When NOT to use