@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.
- package/README.md +6 -5
- package/package.json +2 -1
- package/plugins/ca-pi/CHANGELOG.md +165 -0
- package/plugins/ca-pi/SKILLS.md +1 -1
- package/plugins/ca-pi/SPRINT.md +40 -10
- package/plugins/ca-pi/agents/backend-author.md +1 -1
- package/plugins/ca-pi/agents/frontend-author.md +1 -1
- package/plugins/ca-pi/generated/command-catalog.json +1 -1
- package/plugins/ca-pi/helpers/artifacts/ca-artifact-darwin-amd64 +0 -0
- package/plugins/ca-pi/helpers/artifacts/ca-artifact-darwin-arm64 +0 -0
- package/plugins/ca-pi/helpers/artifacts/ca-artifact-linux-amd64 +0 -0
- package/plugins/ca-pi/helpers/artifacts/ca-artifact-linux-arm64 +0 -0
- package/plugins/ca-pi/helpers/artifacts/ca-artifact-windows-amd64.exe +0 -0
- package/plugins/ca-pi/helpers/artifacts/ca-artifact-windows-arm64.exe +0 -0
- package/plugins/ca-pi/helpers/artifacts/release.json +38 -0
- package/plugins/ca-pi/hooks/_approvallib.py +355 -0
- package/plugins/ca-pi/hooks/_artifactlib.py +855 -0
- package/plugins/ca-pi/hooks/_cleanuplib.py +1553 -0
- package/plugins/ca-pi/hooks/_hooklib.py +37 -13
- package/plugins/ca-pi/hooks/_host.py +1 -1
- package/plugins/ca-pi/hooks/_intentlib.py +31 -0
- package/plugins/ca-pi/hooks/_planfilelib.py +34 -1
- package/plugins/ca-pi/hooks/_protectedstatelib.py +11 -1
- package/plugins/ca-pi/hooks/_readinjectlib.py +120 -0
- package/plugins/ca-pi/hooks/_releaselib.py +933 -85
- package/plugins/ca-pi/hooks/_standuplib.py +38 -10
- package/plugins/ca-pi/hooks/doctor.py +103 -0
- package/plugins/ca-pi/hooks/hostapi.py +1 -1
- package/plugins/ca-pi/hooks/pi-bridge.py +5 -1
- package/plugins/ca-pi/hooks/prompt-submit.py +33 -10
- package/plugins/ca-pi/hooks/releasehash.py +46 -32
- package/plugins/ca-pi/hooks/session-start.py +5 -4
- package/plugins/ca-pi/includes/artifacts.md +166 -0
- package/plugins/ca-pi/includes/author-tdd-workflow.md +2 -1
- package/plugins/ca-pi/includes/farm.md +27 -4
- package/plugins/ca-pi/includes/routing-table.md +2 -2
- package/plugins/ca-pi/includes/verification-boundary.md +27 -0
- package/plugins/ca-pi/package.json +18 -0
- package/plugins/ca-pi/routines/INDEX.md +4 -4
- package/plugins/ca-pi/routines/brainstorming/SKILL.md +23 -4
- package/plugins/ca-pi/routines/commit-gate/SKILL.md +30 -5
- package/plugins/ca-pi/routines/executing-plans/SKILL.md +52 -7
- package/plugins/ca-pi/routines/finishing-a-development-branch/SKILL.md +25 -3
- package/plugins/ca-pi/routines/refactor/SKILL.md +3 -2
- package/plugins/ca-pi/routines/release/SKILL.md +150 -44
- package/plugins/ca-pi/routines/subagent-driven-development/SKILL.md +53 -9
- package/plugins/ca-pi/routines/subagent-driven-development/references/farm-dispatch.md +20 -3
- package/plugins/ca-pi/routines/tdd/SKILL.md +27 -5
- package/plugins/ca-pi/routines/using-git-worktrees/SKILL.md +11 -2
- package/plugins/ca-pi/routines/writing-plans/SKILL.md +39 -10
- package/plugins/ca-pi/routines/writing-plans/references/farm-plan.md +34 -13
- package/plugins/ca-pi/skills/ca-chore/SKILL.md +7 -3
- package/plugins/ca-pi/skills/ca-commit/SKILL.md +3 -2
- package/plugins/ca-pi/skills/ca-doctor/SKILL.md +14 -0
- package/plugins/ca-pi/skills/ca-feature/SKILL.md +42 -8
- package/plugins/ca-pi/skills/ca-refactor/SKILL.md +4 -2
- package/plugins/ca-pi/skills/ca-release/SKILL.md +7 -6
- 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 —
|
|
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,
|
|
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
|
|
19
|
-
3. **Surfaces** — roll the section into the declared changelog, update every declared manifest, and run the row's declared `pre-tag` checks.
|
|
20
|
-
4. **Tag** —
|
|
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`
|
|
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
|
|
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
|