@feigi/fleet-ctl 3.81.2 → 3.81.3

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.81.2",
3
+ "version": "3.81.3",
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": {
@@ -446,10 +446,17 @@ export function describe(check, live = null) {
446
446
  switch (check.state) {
447
447
  case "clean":
448
448
  return null;
449
- case "dirty":
450
- // The HEAD entry is text, not a path: quoting it would blur it.
449
+ case "dirty": {
450
+ // The HEAD entry is text, not a path: quoting it would blur it, and
451
+ // ignoring cannot clear it, so only a path entry names the ignore remedy.
452
+ // An exclude hides untracked paths alone, and changedPaths reads a
453
+ // baseline entry that vanishes as changed, so the remedy is limited to
454
+ // untracked paths new since the baseline.
455
+ const hasPath = check.changed.some((p) => p !== check.headMove);
451
456
  return `MAIN-CHECKOUT-DIRTY ${check.changed.map((p) => (p === check.headMove ? p : shown(p))).join(" ")} — changed since the run's baseline${members}`
452
- + ` — dispatch held: resolve the stray paths FIRST, then re-baseline with ${RECORD_COMMAND} (it overwrites, it does not compare)`;
457
+ + ` — dispatch held: resolve the stray paths FIRST, then re-baseline with ${RECORD_COMMAND} (it overwrites, it does not compare)`
458
+ + (hasPath ? " — or, for an untracked path new since the baseline, the maintainer may instead ignore it in .git/info/exclude or the global excludes file: it clears on the next check with no re-baseline, so long as the pattern matches no path the baseline holds; ignoring never clears a tracked or staged file's change" : "");
459
+ }
453
460
  case "absent":
454
461
  return `MAIN-CHECKOUT-NO-BASELINE no baseline at ${check.baseline} — dispatch held: record it at run start with ${RECORD_COMMAND}`;
455
462
  default:
@@ -75,6 +75,7 @@ older-version baseline and a baseline whose commit is missing from the
75
75
  repository; Phase 3's tick lines say how each is cleared.
76
76
  `main-checkout.mjs --check` prints the same answer
77
77
  without a tick.
78
+ On `MAIN-CHECKOUT-DIRTY` the maintainer may instead ignore a stray path that is untracked and new since the baseline: an entry in `.git/info/exclude` or in the global excludes file hides it from the check, and the hold clears on the next tick with no re-record. Ignoring never clears a tracked or staged file's change, which `git status` reports whatever the excludes say, nor a pattern that also matches a path the baseline holds, which then reads as changed. Ignoring is the maintainer's decision, never the controller's: the controller never writes an exclude or a `.gitignore` entry. Keep the pattern narrow, because an ignored path is invisible to this check, so a later member write that matches it is never seen.
78
79
 
79
80
  ## Run the pre-flight
80
81
 
@@ -129,6 +129,7 @@ The full text of each row `fleet-tick.mjs` prints and what it asks of the contro
129
129
  checkout and the close-out commit's round trip through a branch; **Fix the
130
130
  tooling mid-run** and the commit section of references/close-out.md say how
131
131
  each is cleared.
132
+ The maintainer may instead ignore a stray path that is untracked and new since the baseline: an entry in `.git/info/exclude` or in the global excludes file hides it from the check, and the hold clears on the next tick with no re-baseline. Ignoring never clears a tracked or staged file's change, which `git status` reports whatever the excludes say, nor a pattern that also matches a path the baseline holds, which then reads as changed. Ignoring is the maintainer's decision; the controller never writes an exclude or a `.gitignore` entry. Keep the pattern narrow, because an ignored path is invisible to this check, so a member write that matches it is never seen.
132
133
  - `MAIN-CHECKOUT-UNKNOWN …` with `HOLD (main checkout unknown)` — the tick
133
134
  could not look: a git or hash read failed (`could not look:`), or the
134
135
  baseline exists but cannot be read (`baseline unreadable:`). Never clean,