feat(KB-176): make enginePaused a soft pause that lets running agents finish

- Remove agent termination listeners for enginePaused in executor and triage
- Update Settings.enginePaused JSDoc to document soft-pause semantics
- Update executor/triage/integration tests to assert sessions are NOT disposed on enginePaused
- Remove pause-abort tracking for enginePaused (only globalPause hard-stops agents)
- Add changeset for the behavioral change
This commit is contained in:
Dustin Byrne
2026-03-28 16:47:23 -04:00
parent 6fdd83dcca
commit d2e2e50a15
7 changed files with 91 additions and 194 deletions

View File

@@ -101,17 +101,15 @@ export interface Settings {
* global emergency stop for the entire AI engine.
* Individual per-task pause flags are unaffected. */
globalPause?: boolean;
/** Engine pause: when true, the scheduler and triage processor stop
* dispatching **new** work (scheduling, triage specification, and
* auto-merge), and all active agent sessions (executor and triage) are
* terminated — matching the {@link globalPause} behavior for agent
* lifecycle. Terminated tasks are moved back to `todo` (executor) or
* have their `specifying` status cleared (triage) so they can resume
* cleanly when the engine is unpaused. Remains independent from
* `globalPause` for scheduling control: `globalPause` is the emergency
* stop, while `enginePaused` is the normal on/off toggle for the AI
* engine. Has no additional effect when {@link globalPause} is also
* true (hard stop already covers agent termination). */
/** Engine pause (soft pause): when true, the scheduler and triage
* processor stop dispatching **new** work (scheduling, triage
* specification, and auto-merge), but currently running agent sessions
* are allowed to finish naturally — no sessions are terminated.
* This is the normal on/off toggle for the AI engine.
* Contrast with {@link globalPause}, which is a hard stop that
* immediately terminates all active agent sessions. Has no additional
* effect when {@link globalPause} is also true (hard stop already
* covers everything). */
enginePaused?: boolean;
/** Maximum number of concurrent AI agents across all activity types
* (triage specification, task execution, and merge operations). */