@feigi/fleet-ctl 3.96.0 → 3.96.1

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.96.0",
3
+ "version": "3.96.1",
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": {
@@ -252,6 +252,19 @@ export function endingOf({ member, pr, signals = null, earlierPrs = new Set(), v
252
252
 
253
253
  // The member's last report, when the last one it wrote is a valid impl report
254
254
  // naming this member; null when it wrote none, or the last one is malformed.
255
+ // "Valid" is `reportViolation("impl", …)` as it stands now, so a last report
256
+ // that fails an impl rule is no report and the member reads the stop its
257
+ // transcript actually had (`provider`, `budget`, `abort`, `crash`, `hollow`).
258
+ // That includes a `bailed` report that names a `pr` or a `head`, and a
259
+ // `blocked` one that does: a bail is the pre-code outcome and a block reports
260
+ // no PR, so neither reads `bail:<cause>` or `blocked`. A `covered` bail names
261
+ // its PR in `bailDetail` with `pr: null`, and stays a bail.
262
+ // A transcript written before that rule existed is read under the current
263
+ // rule, so a re-scrape can turn a recorded `bail:<cause>` into a non-bail
264
+ // ending. When this was written the one recorded case was `impl-3655`,
265
+ // `bail:hands` with `pr: null` and a `head`, which reads `hollow` once
266
+ // re-scraped. That flip is accepted: it matches the glossary's "valid bail",
267
+ // and `mergeRows()` keeps no earlier `bail:*` row against it.
255
268
  function lastReport(reportWrites, leaf) {
256
269
  const last = reportWrites.filter((r) => r.file === `${leaf}.json`).at(-1);
257
270
  if (!last) return null;