@feigi/fleet-ctl 3.22.7 → 3.22.9

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@feigi/fleet-ctl",
3
- "version": "3.22.7",
3
+ "version": "3.22.9",
4
4
  "description": "Agent fleet: run-team controller, merge bot, PR reviewer, and the ticket pipeline they share",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -113,6 +113,34 @@ test("run-team/SKILL.md: the release-claims section carries the same limitation"
113
113
  );
114
114
  });
115
115
 
116
+ test("run-team/SKILL.md: the release deletes the branch with update-ref's compare-and-swap, not `-D`", () => {
117
+ // release-ticket.sh deletes with `git update-ref -d refs/heads/<branch> <tip>`
118
+ // on a tip read once, which refuses if the ref moved off that tip. SKILL.md
119
+ // kept saying `-D` after the script stopped using it, so a controller read
120
+ // the release as a force-delete of whatever the ref held at that moment.
121
+ const section = between(
122
+ RUN_TEAM,
123
+ "### Release the claims that never became PRs",
124
+ "**That refusal is the",
125
+ "run-team/SKILL.md",
126
+ );
127
+ assert.match(
128
+ section,
129
+ phrase("deletes the branch with `git update-ref -d` on the tip it read once"),
130
+ "SKILL.md's release section no longer names `git update-ref -d` on a tip read once as the branch delete",
131
+ );
132
+ assert.match(
133
+ section,
134
+ phrase("compare-and-swap that refuses if the branch has moved off that tip"),
135
+ "SKILL.md's release section no longer says the update-ref delete is a compare-and-swap that refuses if the branch has moved off the tip",
136
+ );
137
+ assert.doesNotMatch(
138
+ section,
139
+ /(?:deletes?|deleted)\s+(?:the\s+branch\s+)?(?:is\s+)?with\s+`(?:git\s+branch\s+)?-D`/,
140
+ "SKILL.md's release section says the branch is deleted with `-D` — release-ticket.sh deletes it with `git update-ref -d`",
141
+ );
142
+ });
143
+
116
144
  test("run-team/SKILL.md: the by-hand fallback names worktree-audit.sh's no-argument contract", () => {
117
145
  // #525. The by-hand fallback for a claim `release-ticket.sh` refused sends
118
146
  // the reader to `worktree-audit.sh`, which takes NO argument and audits
@@ -3149,9 +3149,12 @@ immediately before the branch delete, because a commit can land across the
3149
3149
  pushed-branch checks are **not** re-run there — a commit landing in that window
3150
3150
  is ahead of `origin/main` by construction, so the recount covers it. All clear →
3151
3151
  drops the label, removes the worktree without `--force`, deletes the branch with
3152
- `-D`, authorized by those two commit checks plus the recount and by nothing else
3153
- (`-d` measures against local HEAD, and a claim has no upstream, so it refuses a
3154
- pristine claim whenever local `main` is behind `origin/main` — #760). Any one of
3152
+ `git update-ref -d` on the tip it read once before the recount — a
3153
+ compare-and-swap that refuses if the branch has moved off that tip — authorized
3154
+ by those two commit checks, the recount and a fresh check that no worktree holds
3155
+ the branch, and by nothing else (not `git branch -d`: it measures against local
3156
+ HEAD, and a claim has no upstream, so it refuses a pristine claim whenever local
3157
+ `main` is behind `origin/main`). Any one of
3155
3158
  them failing → it touches nothing and names the blocker. **That refusal is the
3156
3159
  finding, never an obstacle**: a claim carrying commits or a pushed branch is not
3157
3160
  auto-released, ever — run `worktree-audit.sh` (it audits every worktree; find