@botbuddy/cli 1.51.1 → 1.52.0

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 (2) hide show
  1. package/package.json +1 -1
  2. package/src/stack.mjs +4 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@botbuddy/cli",
3
- "version": "1.51.1",
3
+ "version": "1.52.0",
4
4
  "description": "BotBuddy — Swarm coordination CLI for multi-agent workflows",
5
5
  "type": "module",
6
6
  "bin": {
package/src/stack.mjs CHANGED
@@ -3804,7 +3804,10 @@ async function runStackLifecycleOnce(opts, childArgv, adapters, incidentBox) {
3804
3804
  incidentBox.portBlock = !provenReap
3805
3805
  ? { released: false, reason: retainBlock
3806
3806
  ? `a lease on this stack slot may still hold its ports (idle, unreaped, or another live batch)${retained} so its stack is never double-booked`
3807
- : `reap not proven (${cleanupResult?.error ?? "no cleanup ran"})${retained} so a stack the Helper may still run is never double-booked` }
3807
+ // BOT-2418: an idle release is a deliberate keep (BOT-1803), not an unproven reap.
3808
+ : cleanupResult?.ok === true && cleanupResult.idle === true
3809
+ ? `the lease is idle and keeps its stack for the next run on this slot, so its claim stays reserved with it (\`bb stack done ${leaseId} --reap\` reaps the lease; it does not release this host's claim)`
3810
+ : `reap not proven (${cleanupResult?.error ?? "no cleanup ran"})${retained} so a stack the Helper may still run is never double-booked` }
3808
3811
  : releaseError || disposition?.released === false
3809
3812
  ? { released: false, reason: `the reap was proven but the claim could not be removed (${releaseError?.message ?? "it is still on disk"})${retained}` }
3810
3813
  : { released: true };