@telora/daemon 0.22.4 → 0.22.42

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 (159) hide show
  1. package/build-info.json +5 -3
  2. package/dist/backends/index.d.ts.map +1 -1
  3. package/dist/backends/index.js +2 -0
  4. package/dist/backends/index.js.map +1 -1
  5. package/dist/ci/ci-sensor-loop.d.ts +36 -2
  6. package/dist/ci/ci-sensor-loop.d.ts.map +1 -1
  7. package/dist/ci/ci-sensor-loop.js +48 -9
  8. package/dist/ci/ci-sensor-loop.js.map +1 -1
  9. package/dist/ci/ci-status.d.ts.map +1 -1
  10. package/dist/ci/ci-status.js +1 -0
  11. package/dist/ci/ci-status.js.map +1 -1
  12. package/dist/completion/detector.d.ts +9 -0
  13. package/dist/completion/detector.d.ts.map +1 -1
  14. package/dist/completion/detector.js +18 -0
  15. package/dist/completion/detector.js.map +1 -1
  16. package/dist/completion/event-phases.d.ts +24 -8
  17. package/dist/completion/event-phases.d.ts.map +1 -1
  18. package/dist/completion/event-phases.js +81 -45
  19. package/dist/completion/event-phases.js.map +1 -1
  20. package/dist/completion/event.d.ts +9 -0
  21. package/dist/completion/event.d.ts.map +1 -1
  22. package/dist/completion/event.js +4 -0
  23. package/dist/completion/event.js.map +1 -1
  24. package/dist/completion/exit-classification.d.ts +2 -2
  25. package/dist/completion/exit-classification.d.ts.map +1 -1
  26. package/dist/completion/exit-classification.js +2 -0
  27. package/dist/completion/exit-classification.js.map +1 -1
  28. package/dist/completion/index.js +1 -1
  29. package/dist/completion/liveness-firing.d.ts +27 -0
  30. package/dist/completion/liveness-firing.d.ts.map +1 -0
  31. package/dist/completion/liveness-firing.js +79 -0
  32. package/dist/completion/liveness-firing.js.map +1 -0
  33. package/dist/completion/stdin-turn-tracker.d.ts +19 -0
  34. package/dist/completion/stdin-turn-tracker.d.ts.map +1 -0
  35. package/dist/completion/stdin-turn-tracker.js +57 -0
  36. package/dist/completion/stdin-turn-tracker.js.map +1 -0
  37. package/dist/completion/supervision-firing-record.d.ts +190 -0
  38. package/dist/completion/supervision-firing-record.d.ts.map +1 -0
  39. package/dist/completion/supervision-firing-record.js +232 -0
  40. package/dist/completion/supervision-firing-record.js.map +1 -0
  41. package/dist/completion/team-lifecycle.d.ts.map +1 -1
  42. package/dist/completion/team-lifecycle.js +3 -0
  43. package/dist/completion/team-lifecycle.js.map +1 -1
  44. package/dist/completion/team-phase.d.ts.map +1 -1
  45. package/dist/completion/team-phase.js +2 -1
  46. package/dist/completion/team-phase.js.map +1 -1
  47. package/dist/directive/directive-dispatch.d.ts +7 -1
  48. package/dist/directive/directive-dispatch.d.ts.map +1 -1
  49. package/dist/directive/directive-dispatch.js +75 -12
  50. package/dist/directive/directive-dispatch.js.map +1 -1
  51. package/dist/directive/directive-executor.d.ts +1 -1
  52. package/dist/directive/directive-executor.d.ts.map +1 -1
  53. package/dist/directive/directive-executor.js +10 -6
  54. package/dist/directive/directive-executor.js.map +1 -1
  55. package/dist/directive/directive-queue.d.ts +35 -9
  56. package/dist/directive/directive-queue.d.ts.map +1 -1
  57. package/dist/directive/directive-queue.js +15 -8
  58. package/dist/directive/directive-queue.js.map +1 -1
  59. package/dist/directive/directive-verify-hold-gate.d.ts +20 -0
  60. package/dist/directive/directive-verify-hold-gate.d.ts.map +1 -0
  61. package/dist/directive/directive-verify-hold-gate.js +47 -0
  62. package/dist/directive/directive-verify-hold-gate.js.map +1 -0
  63. package/dist/drift/staleness-sensor.d.ts +62 -67
  64. package/dist/drift/staleness-sensor.d.ts.map +1 -1
  65. package/dist/drift/staleness-sensor.js +233 -68
  66. package/dist/drift/staleness-sensor.js.map +1 -1
  67. package/dist/drift/staleness.d.ts +8 -0
  68. package/dist/drift/staleness.d.ts.map +1 -1
  69. package/dist/drift/staleness.js +7 -1
  70. package/dist/drift/staleness.js.map +1 -1
  71. package/dist/focus/focus-engine.js +1 -1
  72. package/dist/focus/focus-engine.js.map +1 -1
  73. package/dist/focus/focus-executor.d.ts.map +1 -1
  74. package/dist/focus/focus-executor.js +12 -6
  75. package/dist/focus/focus-executor.js.map +1 -1
  76. package/dist/focus/focus-team-state.d.ts.map +1 -1
  77. package/dist/focus/focus-team-state.js +1 -0
  78. package/dist/focus/focus-team-state.js.map +1 -1
  79. package/dist/focus/focus-worktree-state.d.ts.map +1 -1
  80. package/dist/focus/focus-worktree-state.js +4 -2
  81. package/dist/focus/focus-worktree-state.js.map +1 -1
  82. package/dist/focus/listener-spawn.d.ts +59 -6
  83. package/dist/focus/listener-spawn.d.ts.map +1 -1
  84. package/dist/focus/listener-spawn.js +164 -39
  85. package/dist/focus/listener-spawn.js.map +1 -1
  86. package/dist/focus/listener.d.ts.map +1 -1
  87. package/dist/focus/listener.js +20 -11
  88. package/dist/focus/listener.js.map +1 -1
  89. package/dist/focus/team-actionable-work.d.ts +90 -0
  90. package/dist/focus/team-actionable-work.d.ts.map +1 -0
  91. package/dist/focus/team-actionable-work.js +113 -0
  92. package/dist/focus/team-actionable-work.js.map +1 -0
  93. package/dist/merge/focus-merge.d.ts.map +1 -1
  94. package/dist/merge/focus-merge.js +2 -1
  95. package/dist/merge/focus-merge.js.map +1 -1
  96. package/dist/nexus/return.d.ts +60 -1
  97. package/dist/nexus/return.d.ts.map +1 -1
  98. package/dist/nexus/return.js +78 -2
  99. package/dist/nexus/return.js.map +1 -1
  100. package/dist/queries/schemas.d.ts +61 -0
  101. package/dist/queries/schemas.d.ts.map +1 -1
  102. package/dist/queries/schemas.js +12 -2
  103. package/dist/queries/schemas.js.map +1 -1
  104. package/dist/shell/heartbeat-metadata.d.ts +91 -0
  105. package/dist/shell/heartbeat-metadata.d.ts.map +1 -0
  106. package/dist/shell/heartbeat-metadata.js +169 -0
  107. package/dist/shell/heartbeat-metadata.js.map +1 -0
  108. package/dist/shell/heartbeat.d.ts +7 -22
  109. package/dist/shell/heartbeat.d.ts.map +1 -1
  110. package/dist/shell/heartbeat.js +120 -89
  111. package/dist/shell/heartbeat.js.map +1 -1
  112. package/dist/shell/model-resolution.d.ts +54 -0
  113. package/dist/shell/model-resolution.d.ts.map +1 -1
  114. package/dist/shell/model-resolution.js +50 -0
  115. package/dist/shell/model-resolution.js.map +1 -1
  116. package/dist/shell/unified-shell.d.ts.map +1 -1
  117. package/dist/shell/unified-shell.js +21 -12
  118. package/dist/shell/unified-shell.js.map +1 -1
  119. package/dist/spawn/helpers.d.ts.map +1 -1
  120. package/dist/spawn/helpers.js +6 -1
  121. package/dist/spawn/helpers.js.map +1 -1
  122. package/dist/spawn/model-routing.d.ts +14 -19
  123. package/dist/spawn/model-routing.d.ts.map +1 -1
  124. package/dist/spawn/model-routing.js +57 -39
  125. package/dist/spawn/model-routing.js.map +1 -1
  126. package/dist/spawn/process-spawn.d.ts +32 -1
  127. package/dist/spawn/process-spawn.d.ts.map +1 -1
  128. package/dist/spawn/process-spawn.js +43 -5
  129. package/dist/spawn/process-spawn.js.map +1 -1
  130. package/dist/spawn/spawn-cooldown.d.ts.map +1 -1
  131. package/dist/spawn/spawn-cooldown.js +2 -1
  132. package/dist/spawn/spawn-cooldown.js.map +1 -1
  133. package/dist/spawn/worktree-session.d.ts +53 -5
  134. package/dist/spawn/worktree-session.d.ts.map +1 -1
  135. package/dist/spawn/worktree-session.js +61 -29
  136. package/dist/spawn/worktree-session.js.map +1 -1
  137. package/dist/testing/fixtures/index.js +1 -1
  138. package/dist/types/focus.d.ts +12 -2
  139. package/dist/types/focus.d.ts.map +1 -1
  140. package/dist/types/index.js +1 -1
  141. package/dist/types/session.d.ts +1 -1
  142. package/dist/types/session.d.ts.map +1 -1
  143. package/dist/update/auto-update-idle.d.ts +22 -0
  144. package/dist/update/auto-update-idle.d.ts.map +1 -1
  145. package/dist/update/auto-update-idle.js +8 -1
  146. package/dist/update/auto-update-idle.js.map +1 -1
  147. package/dist/update/auto-update.d.ts +0 -6
  148. package/dist/update/auto-update.d.ts.map +1 -1
  149. package/dist/update/auto-update.js +20 -6
  150. package/dist/update/auto-update.js.map +1 -1
  151. package/dist/update/version-check.d.ts +73 -0
  152. package/dist/update/version-check.d.ts.map +1 -1
  153. package/dist/update/version-check.js +107 -11
  154. package/dist/update/version-check.js.map +1 -1
  155. package/dist/worktree/verify-interlock.d.ts +34 -0
  156. package/dist/worktree/verify-interlock.d.ts.map +1 -1
  157. package/dist/worktree/verify-interlock.js +27 -1
  158. package/dist/worktree/verify-interlock.js.map +1 -1
  159. package/package.json +3 -3
@@ -6,8 +6,10 @@ import { resolveLineageSpec } from '../session/session-lineage.js';
6
6
  import { sendMessage, ESCALATION_REASONS, ESCALATION_DISPOSITIONS } from '@telora/daemon-core';
7
7
  import { terminateTeam, waitForTeamExit } from '../completion/index.js';
8
8
  import { createEscalation } from '../queries/escalations.js';
9
- import { pendingSpawnDirectives, computeDirectiveHash, SPAWN_GUARD_WINDOW_MS, shouldSkipSpawnDirective, } from './directive-queue.js';
9
+ import { pendingSpawnDirectives, computeDirectiveHash, shouldSkipSpawnDirective, } from './directive-queue.js';
10
10
  import { assembleDirectiveContent } from './directive-assembly.js';
11
+ import { directiveSpawnBlockedByVerifyHold } from './directive-verify-hold-gate.js';
12
+ import { recordStdinMessageSent } from '../completion/stdin-turn-tracker.js';
11
13
  import { createLogger } from '../shell/log.js';
12
14
  const log = createLogger({ module: 'directive-executor' });
13
15
  // ── Core execution ───────────────────────────────────────────────
@@ -115,10 +117,10 @@ export async function executeDirective(config, focusId, directive, focusWorkflow
115
117
  log.info(`[directive-executor] Executing ${mode ?? `unresolved(${directive.execution})`} directive ` +
116
118
  `for focus ${focusId.slice(0, 8)} (stage ${focusWorkflowStageId.slice(0, 8)})`);
117
119
  if (mode === 'inject') {
118
- await executeInjectDirective(config, focusId, directive, sessionType, spec, focusOverrideModel);
120
+ await executeInjectDirective(config, focusId, directive, sessionType, spec, focusOverrideModel, focusWorkflowStageId);
119
121
  }
120
122
  else if (mode === 'spawn') {
121
- await executeSpawnDirective(config, focusId, directive, sessionType, spec, focusOverrideModel);
123
+ await executeSpawnDirective(config, focusId, directive, sessionType, spec, focusOverrideModel, focusWorkflowStageId);
122
124
  }
123
125
  else {
124
126
  // Fail loud: an unknown/undefined execution mode on a non-review lineage
@@ -130,13 +132,47 @@ export async function executeDirective(config, focusId, directive, focusWorkflow
130
132
  `(lineage "${spec.lineage}", stage "${stageName ?? 'unknown'}") for focus ${focusId.slice(0, 8)}`);
131
133
  }
132
134
  }
135
+ /**
136
+ * A human summary of a directive's compaction recipe (preserve / shed), or null
137
+ * when it carries none. Pure + exported so the "compact rides the spawn" log and
138
+ * the no-team stash are testable without driving the DB-touching dispatch path.
139
+ */
140
+ export function compactRecipeSummary(directive) {
141
+ if (!directive.compact)
142
+ return null;
143
+ return `Preserve: "${directive.compact.preserve}"; Shed: "${directive.compact.shed}"`;
144
+ }
145
+ /**
146
+ * Log that a coding-stage /compact the no-active-team spawn path stashed will RIDE
147
+ * the next spawn: it is carried on the PendingSpawnDirective (compact field) and
148
+ * composed as the spawn's FIRST stdin turn, so it runs at the kickoff->coding
149
+ * boundary rather than being dropped (delivery d5e72914 -- UDE #9). No-op when the
150
+ * directive has no compact recipe; the fresh-vs-resume decision (nothing to
151
+ * compact on a fresh session) is made and logged at the spawn (writeSpawnStdin).
152
+ */
153
+ function logCompactRidesSpawn(focusId, directive) {
154
+ const summary = compactRecipeSummary(directive);
155
+ if (!summary)
156
+ return;
157
+ log.info(`[directive-executor] Coding-stage /compact for focus ${focusId.slice(0, 8)} will ride the next ` +
158
+ `spawn (${summary}) -- composed as the kickoff's first turn at the kickoff->coding boundary.`);
159
+ }
133
160
  /**
134
161
  * Inject mode: send /compact + assembled context + prompt to the active team's stdin.
135
162
  */
136
- export async function executeInjectDirective(config, focusId, directive, sessionType = 'coding', spec = resolveLineageSpec({ declared: directive, stageName: undefined }), focusOverrideModel = null) {
163
+ export async function executeInjectDirective(config, focusId, directive, sessionType = 'coding', spec = resolveLineageSpec({ declared: directive, stageName: undefined }), focusOverrideModel = null, originStageId = null) {
137
164
  const activeTeams = getActiveTeams();
138
165
  const team = activeTeams.get(focusId);
139
166
  if (!team || !team.leadStdin) {
167
+ // Read the ONE actionable-work world-model before turning a no-team inject
168
+ // into a spawn directive: a focus under an in-flight verify hold has NO
169
+ // team-actionable work, so queuing a PendingSpawnDirective would only feed the
170
+ // listener a spawn it must refuse (same verdict as the spawn gate / team-exit).
171
+ if (directiveSpawnBlockedByVerifyHold(focusId)) {
172
+ log.info(`[directive-executor] No active team for focus ${focusId.slice(0, 8)} but it is under a ` +
173
+ `verify hold (no team-actionable work) -- not queuing a spawn directive while held`);
174
+ return;
175
+ }
140
176
  // No active team -- fall back to spawn mode so the directive is
141
177
  // delivered when the next team spawns (e.g., review triggered while
142
178
  // pipeline was stopped; the pipeline gets activated but the team
@@ -151,10 +187,13 @@ export async function executeInjectDirective(config, focusId, directive, session
151
187
  localModel: directive.localModel ?? null,
152
188
  focusOverrideModel,
153
189
  sessionType,
190
+ compact: directive.compact ?? null,
154
191
  lineage: spec.lineage,
155
192
  continuity: spec.continuity,
156
193
  contentHash: computeDirectiveHash(directive),
194
+ originStageId,
157
195
  });
196
+ logCompactRidesSpawn(focusId, directive);
158
197
  return;
159
198
  }
160
199
  // Don't retask a live review team. Phase changes can fire while a review
@@ -178,9 +217,8 @@ export async function executeInjectDirective(config, focusId, directive, session
178
217
  // gaps filed, no focus_reviews report) handleReviewExit's auto-approve gate
179
218
  // requires sessionType === 'review' (completion/review-exit-phase.ts), so it never fires:
180
219
  // the verify delivery is left in verify and the next poll re-triggers
181
- // auto-review -- an infinite review/respawn loop. Flipping the label here
182
- // also arms the `team.sessionType === 'review'` retask guard above for any
183
- // subsequent inject. (Guaranteed `!== 'review'` at this point by the guard.)
220
+ // auto-review -- an infinite review/respawn loop. Flipping the label here also
221
+ // arms the retask guard above for subsequent injects (guaranteed non-review here).
184
222
  team.sessionType = sessionType;
185
223
  // Keep the team's session-id map slot in step with the injected directive's
186
224
  // lineage so a subsequent resume reads/writes the right slot (INJ-B).
@@ -190,6 +228,7 @@ export async function executeInjectDirective(config, focusId, directive, session
190
228
  const compactMessage = `/compact Preserve: ${directive.compact.preserve}. Shed: ${directive.compact.shed}.`;
191
229
  log.info(`Sending /compact for focus ${focusId.slice(0, 8)}`);
192
230
  sendMessage(team.leadStdin, compactMessage);
231
+ recordStdinMessageSent(focusId);
193
232
  }
194
233
  // Step 2: Assemble and send context + prompt
195
234
  const fullMessage = await assembleDirectiveContent(config, focusId, directive, team.worktreePath);
@@ -197,29 +236,45 @@ export async function executeInjectDirective(config, focusId, directive, session
197
236
  log.info(`[directive-executor] Sending directive message to focus ${focusId.slice(0, 8)} ` +
198
237
  `(${fullMessage.length} chars)`);
199
238
  sendMessage(team.leadStdin, fullMessage);
239
+ recordStdinMessageSent(focusId);
200
240
  }
201
241
  }
202
242
  /**
203
243
  * Spawn mode: terminate the current team, assemble directive content,
204
244
  * and store it for the next spawn cycle to deliver.
205
245
  */
206
- async function executeSpawnDirective(config, focusId, directive, sessionType = 'coding', spec = resolveLineageSpec({ declared: directive, stageName: undefined }), focusOverrideModel = null) {
246
+ async function executeSpawnDirective(config, focusId, directive, sessionType = 'coding', spec = resolveLineageSpec({ declared: directive, stageName: undefined }), focusOverrideModel = null, originStageId = null) {
207
247
  const activeTeams = getActiveTeams();
208
248
  const team = activeTeams.get(focusId);
249
+ // Read the ONE actionable-work world-model before terminating a live team and
250
+ // stashing a respawn. A focus held by an in-flight verify has NO
251
+ // team-actionable work, so a handoff-respawn here would kill a team into a
252
+ // hold and drive the listener toward a spawn it must refuse -- the storm shape
253
+ // this focus converges. Suppress: leave any live team be (it exits naturally),
254
+ // stash nothing. Same verdict the spawn gate and the team-exit classifier read.
255
+ if (directiveSpawnBlockedByVerifyHold(focusId)) {
256
+ log.info(`[directive-executor] Spawn directive for focus ${focusId.slice(0, 8)} suppressed -- ` +
257
+ `focus is under a verify hold (no team-actionable work); no terminate, no respawn while held`);
258
+ return;
259
+ }
209
260
  const worktreePath = team?.worktreePath ?? null;
210
261
  // Assemble the directive content before terminating the team
211
262
  // (the team's worktree path is needed for git diff resolution)
212
263
  const message = await assembleDirectiveContent(config, focusId, directive, worktreePath);
213
264
  const contentHash = computeDirectiveHash(directive);
214
- // Store the assembled content for the next spawn to pick up
265
+ // Store the assembled content for the next spawn to pick up. The compact
266
+ // recipe rides with it so a spawn-coinciding /compact runs at the kickoff
267
+ // boundary (UDE #9), delivered by writeSpawnStdin as the spawn's first turn.
215
268
  pendingSpawnDirectives.set(focusId, {
216
269
  message,
217
270
  model: directive.model ?? null,
218
271
  focusOverrideModel,
219
272
  sessionType,
273
+ compact: directive.compact ?? null,
220
274
  lineage: spec.lineage,
221
275
  continuity: spec.continuity,
222
276
  contentHash,
277
+ originStageId,
223
278
  });
224
279
  // If a team was recently spawned, it may have already consumed this exact
225
280
  // directive via the pending spawn directive mechanism. Skip the kill/respawn
@@ -239,10 +294,18 @@ async function executeSpawnDirective(config, focusId, directive, sessionType = '
239
294
  `(${ageSec}s ago) with identical directive content -- skipping respawn`);
240
295
  return;
241
296
  }
242
- if (ageSec < SPAWN_GUARD_WINDOW_MS / 1000) {
243
- log.info(`[directive-executor] Team for focus ${focusId.slice(0, 8)} was recently spawned ` +
244
- `(${ageSec}s ago) but directive content diverged -- proceeding with respawn`);
297
+ if (decision === 'defer_young_divergence') {
298
+ // Directive dispatch does NOT own team lifecycle: a young team is left to
299
+ // finish its turn rather than killed because a newer stage's directive
300
+ // content differs (the 2026-09-06 focus 6f866509 case -- a 28s-old team
301
+ // terminated 0.4s after a stage change). The divergent directive is already
302
+ // stashed in pendingSpawnDirectives above, so it rides the natural exit.
303
+ log.info(`[directive-executor] Team for focus ${focusId.slice(0, 8)} is only ${ageSec}s old; ` +
304
+ `directive content diverged but NOT terminating a young team -- it stays queued for the natural exit`);
305
+ return;
245
306
  }
307
+ // decision === 'respawn': team is past the guard window -- replaced because
308
+ // it has had its full turn, NOT because content diverged.
246
309
  }
247
310
  // Terminate existing team if one exists
248
311
  if (team) {
@@ -1 +1 @@
1
- {"version":3,"file":"directive-dispatch.js","sourceRoot":"","sources":["../../src/directive/directive-dispatch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"directive-dispatch.js","sourceRoot":"","sources":["../../src/directive/directive-dispatch.ts"],"names":[],"mappings":"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"}
@@ -21,7 +21,7 @@ export { seedLastProcessedStage, getLastProcessedStages } from './stage-tracker.
21
21
  export { computeDirectiveHash, SPAWN_GUARD_WINDOW_MS, shouldSkipSpawnDirective, consumePendingSpawnDirective, __setPendingSpawnDirectiveForTesting, hasPendingSpawnDirective, getPendingSpawnDirective, getPendingSpawnFocusIds, clearPendingSpawnDirective, shouldSuppressRefireForPendingSpawn, shouldLogRefireSuppression, recordRefireSuppression, shouldReapPendingSpawnDirective, type PendingSpawnDirective, } from './directive-queue.js';
22
22
  export { type AssembledDirective, assembleDirectiveContent, assembleDirectiveContentWithManifest, } from './directive-assembly.js';
23
23
  export { fireFocusTransitionTriggers, resolveFocusStageName, shouldRefireStrandedReview, syncFocusPhase, } from './phase-sync.js';
24
- export { resolveDirectiveExecutionMode, isAgentlessDirective, isQuietTerminalStage, AGENTLESS_EXECUTION_MODE, executeDirective, executeInjectDirective, type DirectiveRunResult, type RunDirectiveOptions, runDirectiveWithRetry, escalateDirectiveFailure, } from './directive-dispatch.js';
24
+ export { resolveDirectiveExecutionMode, isAgentlessDirective, isQuietTerminalStage, AGENTLESS_EXECUTION_MODE, executeDirective, executeInjectDirective, compactRecipeSummary, type DirectiveRunResult, type RunDirectiveOptions, runDirectiveWithRetry, escalateDirectiveFailure, } from './directive-dispatch.js';
25
25
  /**
26
26
  * Check all active focuses for stage changes with directives.
27
27
  *
@@ -1 +1 @@
1
- {"version":3,"file":"directive-executor.d.ts","sourceRoot":"","sources":["../../src/directive/directive-executor.ts"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAsCtD,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,4BAA4B,EAC5B,oCAAoC,EACpC,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,EACvB,0BAA0B,EAC1B,mCAAmC,EACnC,0BAA0B,EAC1B,uBAAuB,EACvB,+BAA+B,EAC/B,KAAK,qBAAqB,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,kBAAkB,EACvB,wBAAwB,EACxB,oCAAoC,GACrC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,2BAA2B,EAC3B,qBAAqB,EACrB,0BAA0B,EAC1B,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EACtB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AAIjC;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAgPzE"}
1
+ {"version":3,"file":"directive-executor.d.ts","sourceRoot":"","sources":["../../src/directive/directive-executor.ts"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAuCtD,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,4BAA4B,EAC5B,oCAAoC,EACpC,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,EACvB,0BAA0B,EAC1B,mCAAmC,EACnC,0BAA0B,EAC1B,uBAAuB,EACvB,+BAA+B,EAC/B,KAAK,qBAAqB,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,kBAAkB,EACvB,wBAAwB,EACxB,oCAAoC,GACrC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,2BAA2B,EAC3B,qBAAqB,EACrB,0BAA0B,EAC1B,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AAIjC;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAgPzE"}
@@ -3,10 +3,13 @@
3
3
  // packages/daemon/src/directive/directive-executor.test.ts,
4
4
  // packages/daemon/src/directive/directive-reap-stale-spawn.test.ts,
5
5
  // packages/daemon/src/directive/directive-refire-capacity-backoff.test.ts,
6
+ // packages/daemon/src/directive/directive-verify-hold-gate.test.ts,
6
7
  // packages/daemon/src/directive/no-machine-focus-completion.test.ts,
7
8
  // packages/daemon/src/directive/stranded-review-refire-bound.test.ts,
8
9
  // packages/daemon/src/focus/focus-executor-characterization.test.ts,
9
10
  // packages/daemon/src/focus/listener-operator-stop-drop.test.ts,
11
+ // packages/daemon/src/focus/pending-spawn-stage-currency.test.ts,
12
+ // packages/daemon/src/focus/pending-spawn-verify-hold.test.ts,
10
13
  // packages/daemon/src/focus/teardown-clears-pending-spawn.test.ts
11
14
  // PINNED-BY-END
12
15
  import { getActiveTeams, getActiveTeamCount } from '../focus/focus-team-state.js';
@@ -15,6 +18,7 @@ import { getActiveFocuses } from '../queries/focus-discovery.js';
15
18
  import { configForProduct } from '../shell/config.js';
16
19
  import { emitLoopTrigger } from '../loops/index.js';
17
20
  import { resolveLineageSpec } from '../session/session-lineage.js';
21
+ import { focusPipelineModelForPass } from '../shell/model-resolution.js';
18
22
  import { lastProcessedStages } from './stage-tracker.js';
19
23
  import { computeDirectiveHash, getPendingSpawnDirective, hasPendingSpawnDirective, shouldSuppressRefireForPendingSpawn, shouldLogRefireSuppression, recordRefireSuppression, } from './directive-queue.js';
20
24
  import { fireFocusTransitionTriggers, shouldRefireStrandedReview, syncFocusPhase, } from './phase-sync.js';
@@ -26,7 +30,7 @@ export { seedLastProcessedStage, getLastProcessedStages } from './stage-tracker.
26
30
  export { computeDirectiveHash, SPAWN_GUARD_WINDOW_MS, shouldSkipSpawnDirective, consumePendingSpawnDirective, __setPendingSpawnDirectiveForTesting, hasPendingSpawnDirective, getPendingSpawnDirective, getPendingSpawnFocusIds, clearPendingSpawnDirective, shouldSuppressRefireForPendingSpawn, shouldLogRefireSuppression, recordRefireSuppression, shouldReapPendingSpawnDirective, } from './directive-queue.js';
27
31
  export { assembleDirectiveContent, assembleDirectiveContentWithManifest, } from './directive-assembly.js';
28
32
  export { fireFocusTransitionTriggers, resolveFocusStageName, shouldRefireStrandedReview, syncFocusPhase, } from './phase-sync.js';
29
- export { resolveDirectiveExecutionMode, isAgentlessDirective, isQuietTerminalStage, AGENTLESS_EXECUTION_MODE, executeDirective, executeInjectDirective, runDirectiveWithRetry, escalateDirectiveFailure, } from './directive-dispatch.js';
33
+ export { resolveDirectiveExecutionMode, isAgentlessDirective, isQuietTerminalStage, AGENTLESS_EXECUTION_MODE, executeDirective, executeInjectDirective, compactRecipeSummary, runDirectiveWithRetry, escalateDirectiveFailure, } from './directive-dispatch.js';
30
34
  // ── Poll loop integration ────────────────────────────────────────
31
35
  /**
32
36
  * Check all active focuses for stage changes with directives.
@@ -191,11 +195,11 @@ export async function checkDirectives(config) {
191
195
  // escalate and emit a loop trigger so operators see the failure
192
196
  // instead of a silent drop, then mark the stage processed so the
193
197
  // focus does not loop on it every poll cycle.
194
- // Capture the focus's explicit model override so the respawn path
195
- // resolves the team model under the SAME precedence as initial spawn
196
- // (focus override -> stage directive -> CLI default). Null => the
197
- // focus inherits the per-stage workflow model.
198
- const focusOverrideModel = focus.pipeline_config?.model ?? null;
198
+ // Per-pass focus cloud-model snapshot for the respawn: read the slot for
199
+ // the pass this directive spawns (lineage -> review | coding), same
200
+ // precedence as initial spawn (focus override -> stage -> CLI default).
201
+ const spawnPass = resolveLineageSpec({ declared: stage.agentDirective, stageName: stage.name }).lineage === 'review' ? 'review' : 'coding';
202
+ const focusOverrideModel = focusPipelineModelForPass(focus.pipeline_config, spawnPass);
199
203
  const result = await runDirectiveWithRetry(() => executeDirective(pc, focus.focus_id, stage.agentDirective, currentStageId, stage.name, focusOverrideModel), { label: `directive-execute-${focus.focus_id.slice(0, 8)}/${stage.name}` });
200
204
  lastProcessedStages.set(focus.focus_id, currentStageId);
201
205
  if (!result.ok && result.error) {
@@ -1 +1 @@
1
- {"version":3,"file":"directive-executor.js","sourceRoot":"","sources":["../../src/directive/directive-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"directive-executor.js","sourceRoot":"","sources":["../../src/directive/directive-executor.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { StageDirective } from '../types/index.js';
1
+ import type { CompactRecipe, StageDirective } from '../types/index.js';
2
2
  import type { SessionContinuity } from '../session/session-lineage.js';
3
3
  /**
4
4
  * Pending spawn directive content, keyed by focusId.
@@ -33,6 +33,15 @@ export interface PendingSpawnDirective {
33
33
  engine?: string | null;
34
34
  localModel?: string | null;
35
35
  sessionType: 'coding' | 'review';
36
+ /**
37
+ * The stage directive's compaction recipe, carried onto the spawn so a
38
+ * spawn-coinciding /compact runs at the kickoff->coding boundary (UDE #9): the
39
+ * spawn path composes it as the FIRST stdin turn, ahead of the kickoff message,
40
+ * so on a resume it sheds the prior (scoping) context BEFORE the first coding
41
+ * cycle rather than after it. Null when the directive declares no compact. Was
42
+ * previously dropped (logged undelivered) on the no-active-team path.
43
+ */
44
+ compact?: CompactRecipe | null;
36
45
  /** Session-id map slot this spawn reads/writes (INJ-B). */
37
46
  lineage: string;
38
47
  /** Resume-vs-fresh policy for this spawn's lineage (INJ-B). */
@@ -44,6 +53,16 @@ export interface PendingSpawnDirective {
44
53
  * can detect divergent content within the 60s skip window.
45
54
  */
46
55
  contentHash: string;
56
+ /**
57
+ * The workflow stage this directive belongs to (the focus's
58
+ * current_workflow_stage_id when the directive was stashed), or null when the
59
+ * stash site did not know it. Read at consumption to DROP a directive whose
60
+ * stage the focus has already left -- the 2026-09-06 focus 6f866509 case, where
61
+ * a directive queued for the verifying stage was consumed by a spawn 0.4s after
62
+ * the focus moved to reviewing. Optional for back-compat with entries built
63
+ * before the field existed (a null origin skips the currency check).
64
+ */
65
+ originStageId?: string | null;
47
66
  /**
48
67
  * Blocked-on-capacity backoff counter. Incremented each poll tick that a
49
68
  * re-fire is suppressed because an equivalent directive is already queued
@@ -75,15 +94,22 @@ export declare function computeDirectiveHash(directive: StageDirective): string;
75
94
  * the directive that produced it. */
76
95
  export declare const SPAWN_GUARD_WINDOW_MS = 60000;
77
96
  /**
78
- * Decide whether executeSpawnDirective should skip the terminate+respawn
79
- * cycle for a recently-spawned team. Pure function so the divergence rule
80
- * is unit-testable without mocking the active teams map.
97
+ * Decide what executeSpawnDirective should do with a live team when a stage
98
+ * directive fires. Pure function so the whole terminate rule is unit-testable
99
+ * without mocking the active teams map or terminateTeam.
81
100
  *
82
101
  * - skip: team is within the spawn window AND its last-consumed directive
83
- * hash matches the new directive's hash. The team is already running
84
- * under the same intent.
85
- * - respawn: team is older than the window OR the hashes diverge. Both
86
- * cases require terminate+respawn so the team picks up fresh intent.
102
+ * hash matches the new directive's hash. Already running the same intent.
103
+ * - defer_young_divergence: team is within the spawn window but the hashes
104
+ * diverge. Directive dispatch does NOT own team lifecycle -- a young team is
105
+ * NOT terminated because a newer stage's directive content differs; it is
106
+ * left to finish its turn, and the divergent directive (already stashed in
107
+ * pendingSpawnDirectives) rides its natural exit. This is the 2026-09-06
108
+ * focus 6f866509 fix: a 28s-old team must not be killed 0.4s after a stage
109
+ * change.
110
+ * - respawn: team is OLDER than the window. Only here does executeSpawnDirective
111
+ * terminate + respawn, and only because the team has had its full turn -- NOT
112
+ * because content diverged.
87
113
  */
88
114
  export declare function shouldSkipSpawnDirective(args: {
89
115
  team: {
@@ -92,7 +118,7 @@ export declare function shouldSkipSpawnDirective(args: {
92
118
  } | undefined;
93
119
  contentHash: string;
94
120
  now: number;
95
- }): 'skip' | 'respawn';
121
+ }): 'skip' | 'defer_young_divergence' | 'respawn';
96
122
  /**
97
123
  * Consume a pending spawn directive for a focus.
98
124
  * Returns the directive content and removes it from the map.
@@ -1 +1 @@
1
- {"version":3,"file":"directive-queue.d.ts","sourceRoot":"","sources":["../../src/directive/directive-queue.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAIvE;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;;;;;OAMG;IACH,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACjC,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,UAAU,EAAE,iBAAiB,CAAC;IAC9B;;;;;OAKG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;OAWG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,oCAA2C,CAAC;AAE/E;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM,CAMtE;AAED;sCACsC;AACtC,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAE3C;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,IAAI,EAAE;QAAE,SAAS,EAAE,IAAI,CAAC;QAAC,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,SAAS,CAAC;IAChF,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACb,GAAG,MAAM,GAAG,SAAS,CAMrB;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAM/F;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,oCAAoC,CAClD,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,qBAAqB,GAC/B,IAAI,CAEN;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAE3F;AAED,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,CAElD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mCAAmC,CAAC,KAAK,EAAE;IACzD,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAC7C,aAAa,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAEV;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE;IACrD,cAAc,EAAE,OAAO,CAAC;IACxB,uBAAuB,EAAE,OAAO,CAAC;CAClC,GAAG,OAAO,CAGV;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAKV;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAM/D"}
1
+ {"version":3,"file":"directive-queue.d.ts","sourceRoot":"","sources":["../../src/directive/directive-queue.ts"],"names":[],"mappings":"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"}
@@ -36,15 +36,22 @@ export function computeDirectiveHash(directive) {
36
36
  * the directive that produced it. */
37
37
  export const SPAWN_GUARD_WINDOW_MS = 60000;
38
38
  /**
39
- * Decide whether executeSpawnDirective should skip the terminate+respawn
40
- * cycle for a recently-spawned team. Pure function so the divergence rule
41
- * is unit-testable without mocking the active teams map.
39
+ * Decide what executeSpawnDirective should do with a live team when a stage
40
+ * directive fires. Pure function so the whole terminate rule is unit-testable
41
+ * without mocking the active teams map or terminateTeam.
42
42
  *
43
43
  * - skip: team is within the spawn window AND its last-consumed directive
44
- * hash matches the new directive's hash. The team is already running
45
- * under the same intent.
46
- * - respawn: team is older than the window OR the hashes diverge. Both
47
- * cases require terminate+respawn so the team picks up fresh intent.
44
+ * hash matches the new directive's hash. Already running the same intent.
45
+ * - defer_young_divergence: team is within the spawn window but the hashes
46
+ * diverge. Directive dispatch does NOT own team lifecycle -- a young team is
47
+ * NOT terminated because a newer stage's directive content differs; it is
48
+ * left to finish its turn, and the divergent directive (already stashed in
49
+ * pendingSpawnDirectives) rides its natural exit. This is the 2026-09-06
50
+ * focus 6f866509 fix: a 28s-old team must not be killed 0.4s after a stage
51
+ * change.
52
+ * - respawn: team is OLDER than the window. Only here does executeSpawnDirective
53
+ * terminate + respawn, and only because the team has had its full turn -- NOT
54
+ * because content diverged.
48
55
  */
49
56
  export function shouldSkipSpawnDirective(args) {
50
57
  const { team, contentHash, now } = args;
@@ -53,7 +60,7 @@ export function shouldSkipSpawnDirective(args) {
53
60
  const age = now - team.startedAt.getTime();
54
61
  if (age >= SPAWN_GUARD_WINDOW_MS)
55
62
  return 'respawn';
56
- return team.lastConsumedDirectiveHash === contentHash ? 'skip' : 'respawn';
63
+ return team.lastConsumedDirectiveHash === contentHash ? 'skip' : 'defer_young_divergence';
57
64
  }
58
65
  /**
59
66
  * Consume a pending spawn directive for a focus.
@@ -1 +1 @@
1
- {"version":3,"file":"directive-queue.js","sourceRoot":"","sources":["../../src/directive/directive-queue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"directive-queue.js","sourceRoot":"","sources":["../../src/directive/directive-queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /** Injectable seam so callers unit-test the gate without a live verify. */
2
+ export interface DirectiveVerifyHoldDeps {
3
+ focusUnderVerifyHold?: (focusId: string) => boolean;
4
+ }
5
+ /**
6
+ * True when a stage directive that would SPAWN (or respawn) a team for this
7
+ * focus must be suppressed because the focus has no team-actionable work: its
8
+ * worktree is held by an in-flight verify. Reads the one canonical predicate
9
+ * (focus/team-actionable-work.ts) shared with the spawn gate and the team-exit
10
+ * classifier.
11
+ *
12
+ * `hasUnheldActionableWork` is true by construction at this call site -- the
13
+ * directive executor only reaches a spawn-producing path for a focus it already
14
+ * decided has a directive to run; the hold is the only thing that can flip the
15
+ * shared verdict to "no actionable work". An inject to an already-live team is
16
+ * NOT a spawn and is never gated here; callers apply this only on their
17
+ * spawn-producing branches.
18
+ */
19
+ export declare function directiveSpawnBlockedByVerifyHold(focusId: string, deps?: DirectiveVerifyHoldDeps): boolean;
20
+ //# sourceMappingURL=directive-verify-hold-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directive-verify-hold-gate.d.ts","sourceRoot":"","sources":["../../src/directive/directive-verify-hold-gate.ts"],"names":[],"mappings":"AA+BA,2EAA2E;AAC3E,MAAM,WAAW,uBAAuB;IACtC,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;CACrD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,uBAA4B,GACjC,OAAO,CAMT"}
@@ -0,0 +1,47 @@
1
+ // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
+ // Pinned by: packages/daemon/src/directive/directive-verify-hold-gate.test.ts,
3
+ // packages/daemon/src/focus/team-actionable-work.test.ts
4
+ // PINNED-BY-END
5
+ /**
6
+ * Directive executor's read of the ONE actionable-work world-model.
7
+ *
8
+ * The directive dispatcher has two spawn-PRODUCING paths: the no-active-team
9
+ * fallback in executeInjectDirective (which stashes a PendingSpawnDirective for
10
+ * the listener to spawn) and executeSpawnDirective (which terminates the live
11
+ * team and stashes a respawn). Both would drive a team into a focus whose
12
+ * worktree is currently held by an in-flight verify -- a focus with NO
13
+ * team-actionable work -- which is exactly the respawn class that produced the
14
+ * 2026-09-06 storm (a lead spawned, ran one turn, found nothing it could commit
15
+ * or advance, and exited, 80 times).
16
+ *
17
+ * This module gives the directive executor the SAME verdict the spawn gate
18
+ * (focus/listener-spawn.ts) and the team-exit classifier read: the one predicate
19
+ * in focus/team-actionable-work.ts, with the verify-interlock hold as an input.
20
+ * So all four controllers cannot disagree about whether a focus has actionable
21
+ * work -- the "one world-model" this focus converges.
22
+ *
23
+ * @module directive/directive-verify-hold-gate
24
+ */
25
+ import { focusHasTeamActionableWork, focusUnderVerifyHold, } from '../focus/team-actionable-work.js';
26
+ /**
27
+ * True when a stage directive that would SPAWN (or respawn) a team for this
28
+ * focus must be suppressed because the focus has no team-actionable work: its
29
+ * worktree is held by an in-flight verify. Reads the one canonical predicate
30
+ * (focus/team-actionable-work.ts) shared with the spawn gate and the team-exit
31
+ * classifier.
32
+ *
33
+ * `hasUnheldActionableWork` is true by construction at this call site -- the
34
+ * directive executor only reaches a spawn-producing path for a focus it already
35
+ * decided has a directive to run; the hold is the only thing that can flip the
36
+ * shared verdict to "no actionable work". An inject to an already-live team is
37
+ * NOT a spawn and is never gated here; callers apply this only on their
38
+ * spawn-producing branches.
39
+ */
40
+ export function directiveSpawnBlockedByVerifyHold(focusId, deps = {}) {
41
+ const underVerifyHold = (deps.focusUnderVerifyHold ?? focusUnderVerifyHold)(focusId);
42
+ return !focusHasTeamActionableWork({
43
+ hasUnheldActionableWork: true,
44
+ underVerifyHold,
45
+ });
46
+ }
47
+ //# sourceMappingURL=directive-verify-hold-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directive-verify-hold-gate.js","sourceRoot":"","sources":["../../src/directive/directive-verify-hold-gate.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,+EAA+E;AAC/E,2DAA2D;AAC3D,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,GACrB,MAAM,kCAAkC,CAAC;AAO1C;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iCAAiC,CAC/C,OAAe,EACf,OAAgC,EAAE;IAElC,MAAM,eAAe,GAAG,CAAC,IAAI,CAAC,oBAAoB,IAAI,oBAAoB,CAAC,CAAC,OAAO,CAAC,CAAC;IACrF,OAAO,CAAC,0BAA0B,CAAC;QACjC,uBAAuB,EAAE,IAAI;QAC7B,eAAe;KAChB,CAAC,CAAC;AACL,CAAC"}