@telora/daemon 0.22.233 → 0.22.245

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 (219) hide show
  1. package/build-info.json +4 -3
  2. package/dist/backends/index.d.ts.map +1 -1
  3. package/dist/backends/index.js +1 -0
  4. package/dist/backends/index.js.map +1 -1
  5. package/dist/ci/ci-red-attribution.js +1 -1
  6. package/dist/ci/ci-red-attribution.js.map +1 -1
  7. package/dist/ci/ci-status-git.js +1 -1
  8. package/dist/ci/ci-status-git.js.map +1 -1
  9. package/dist/completion/detector.d.ts.map +1 -1
  10. package/dist/completion/detector.js +1 -0
  11. package/dist/completion/detector.js.map +1 -1
  12. package/dist/completion/escalations.d.ts.map +1 -1
  13. package/dist/completion/escalations.js +1 -0
  14. package/dist/completion/escalations.js.map +1 -1
  15. package/dist/completion/event-entry-phases.d.ts.map +1 -1
  16. package/dist/completion/event-entry-phases.js +13 -11
  17. package/dist/completion/event-entry-phases.js.map +1 -1
  18. package/dist/completion/event-phases.d.ts.map +1 -1
  19. package/dist/completion/event-phases.js +16 -15
  20. package/dist/completion/event-phases.js.map +1 -1
  21. package/dist/completion/merge-phase.d.ts +4 -4
  22. package/dist/completion/merge-phase.d.ts.map +1 -1
  23. package/dist/completion/merge-phase.js +10 -7
  24. package/dist/completion/merge-phase.js.map +1 -1
  25. package/dist/completion/review-breaker-hold.d.ts +107 -0
  26. package/dist/completion/review-breaker-hold.d.ts.map +1 -0
  27. package/dist/completion/review-breaker-hold.js +127 -0
  28. package/dist/completion/review-breaker-hold.js.map +1 -0
  29. package/dist/completion/review-exit-escalations.d.ts +9 -1
  30. package/dist/completion/review-exit-escalations.d.ts.map +1 -1
  31. package/dist/completion/review-exit-escalations.js +14 -3
  32. package/dist/completion/review-exit-escalations.js.map +1 -1
  33. package/dist/completion/review-exit-phase.d.ts.map +1 -1
  34. package/dist/completion/review-exit-phase.js +2 -2
  35. package/dist/completion/review-exit-phase.js.map +1 -1
  36. package/dist/completion/state-cascade.d.ts +14 -12
  37. package/dist/completion/state-cascade.d.ts.map +1 -1
  38. package/dist/completion/state-cascade.js +28 -19
  39. package/dist/completion/state-cascade.js.map +1 -1
  40. package/dist/completion/status-advance-phase.d.ts +3 -0
  41. package/dist/completion/status-advance-phase.d.ts.map +1 -1
  42. package/dist/completion/status-advance-phase.js +2 -1
  43. package/dist/completion/status-advance-phase.js.map +1 -1
  44. package/dist/completion/team-lifecycle.d.ts +3 -3
  45. package/dist/completion/team-lifecycle.d.ts.map +1 -1
  46. package/dist/completion/team-lifecycle.js +6 -5
  47. package/dist/completion/team-lifecycle.js.map +1 -1
  48. package/dist/completion/team-progress-measure.d.ts.map +1 -1
  49. package/dist/completion/team-progress-measure.js +1 -0
  50. package/dist/completion/team-progress-measure.js.map +1 -1
  51. package/dist/delivery/delivery-advance-block.d.ts +17 -4
  52. package/dist/delivery/delivery-advance-block.d.ts.map +1 -1
  53. package/dist/delivery/delivery-advance-block.js +203 -173
  54. package/dist/delivery/delivery-advance-block.js.map +1 -1
  55. package/dist/focus/advance-hold.d.ts +55 -0
  56. package/dist/focus/advance-hold.d.ts.map +1 -0
  57. package/dist/focus/advance-hold.js +155 -0
  58. package/dist/focus/advance-hold.js.map +1 -0
  59. package/dist/focus/focus-spawn-decision.d.ts +17 -6
  60. package/dist/focus/focus-spawn-decision.d.ts.map +1 -1
  61. package/dist/focus/focus-spawn-decision.js +6 -6
  62. package/dist/focus/focus-spawn-decision.js.map +1 -1
  63. package/dist/focus/focus-team-state.js +1 -1
  64. package/dist/focus/focus-worktree-state.d.ts.map +1 -1
  65. package/dist/focus/focus-worktree-state.js +1 -0
  66. package/dist/focus/focus-worktree-state.js.map +1 -1
  67. package/dist/focus/listener-auto-advance.d.ts +14 -0
  68. package/dist/focus/listener-auto-advance.d.ts.map +1 -1
  69. package/dist/focus/listener-auto-advance.js +13 -10
  70. package/dist/focus/listener-auto-advance.js.map +1 -1
  71. package/dist/focus/listener-spawn.d.ts.map +1 -1
  72. package/dist/focus/listener-spawn.js +18 -29
  73. package/dist/focus/listener-spawn.js.map +1 -1
  74. package/dist/focus/listener-state.d.ts.map +1 -1
  75. package/dist/focus/listener-state.js +1 -0
  76. package/dist/focus/listener-state.js.map +1 -1
  77. package/dist/focus/listener.d.ts.map +1 -1
  78. package/dist/focus/listener.js +10 -4
  79. package/dist/focus/listener.js.map +1 -1
  80. package/dist/focus/pending-spawn-pass-deps.d.ts +3 -0
  81. package/dist/focus/pending-spawn-pass-deps.d.ts.map +1 -1
  82. package/dist/focus/pending-spawn-pass-deps.js +1 -0
  83. package/dist/focus/pending-spawn-pass-deps.js.map +1 -1
  84. package/dist/focus/ready-focus-spawn-action.d.ts +29 -0
  85. package/dist/focus/ready-focus-spawn-action.d.ts.map +1 -0
  86. package/dist/focus/ready-focus-spawn-action.js +32 -0
  87. package/dist/focus/ready-focus-spawn-action.js.map +1 -0
  88. package/dist/focus/ready-focus-team-work.d.ts +18 -0
  89. package/dist/focus/ready-focus-team-work.d.ts.map +1 -0
  90. package/dist/focus/ready-focus-team-work.js +59 -0
  91. package/dist/focus/ready-focus-team-work.js.map +1 -0
  92. package/dist/focus/team-actionable-work.d.ts +56 -6
  93. package/dist/focus/team-actionable-work.d.ts.map +1 -1
  94. package/dist/focus/team-actionable-work.js +56 -9
  95. package/dist/focus/team-actionable-work.js.map +1 -1
  96. package/dist/git/types.d.ts.map +1 -1
  97. package/dist/git/types.js +1 -0
  98. package/dist/git/types.js.map +1 -1
  99. package/dist/merge/approval-gate-state.d.ts +24 -0
  100. package/dist/merge/approval-gate-state.d.ts.map +1 -0
  101. package/dist/merge/approval-gate-state.js +67 -0
  102. package/dist/merge/approval-gate-state.js.map +1 -0
  103. package/dist/merge/focus-merge.d.ts +3 -3
  104. package/dist/merge/focus-merge.d.ts.map +1 -1
  105. package/dist/merge/focus-merge.js +6 -6
  106. package/dist/merge/focus-merge.js.map +1 -1
  107. package/dist/merge/merge-back-loop.d.ts +3 -3
  108. package/dist/merge/merge-back-loop.d.ts.map +1 -1
  109. package/dist/merge/merge-back-loop.js +10 -10
  110. package/dist/merge/merge-back-loop.js.map +1 -1
  111. package/dist/merge/merge-gate-coverage.d.ts +32 -9
  112. package/dist/merge/merge-gate-coverage.d.ts.map +1 -1
  113. package/dist/merge/merge-gate-coverage.js +69 -18
  114. package/dist/merge/merge-gate-coverage.js.map +1 -1
  115. package/dist/nexus/return.d.ts +44 -1
  116. package/dist/nexus/return.d.ts.map +1 -1
  117. package/dist/nexus/return.js +42 -0
  118. package/dist/nexus/return.js.map +1 -1
  119. package/dist/prompt/focus-prompt-builder.d.ts +10 -8
  120. package/dist/prompt/focus-prompt-builder.d.ts.map +1 -1
  121. package/dist/prompt/focus-prompt-builder.js +19 -10
  122. package/dist/prompt/focus-prompt-builder.js.map +1 -1
  123. package/dist/prompt-sections/execution-sections.d.ts.map +1 -1
  124. package/dist/prompt-sections/execution-sections.js +10 -0
  125. package/dist/prompt-sections/execution-sections.js.map +1 -1
  126. package/dist/queries/deliveries.js +1 -1
  127. package/dist/queries/deliveries.js.map +1 -1
  128. package/dist/queries/delivery-gate-holds.d.ts +78 -0
  129. package/dist/queries/delivery-gate-holds.d.ts.map +1 -0
  130. package/dist/queries/delivery-gate-holds.js +5 -0
  131. package/dist/queries/delivery-gate-holds.js.map +1 -0
  132. package/dist/queries/delivery-gate-state.d.ts +17 -60
  133. package/dist/queries/delivery-gate-state.d.ts.map +1 -1
  134. package/dist/queries/delivery-gate-state.js +8 -3
  135. package/dist/queries/delivery-gate-state.js.map +1 -1
  136. package/dist/queries/escalations.d.ts +2 -1
  137. package/dist/queries/escalations.d.ts.map +1 -1
  138. package/dist/queries/escalations.js +3 -3
  139. package/dist/queries/escalations.js.map +1 -1
  140. package/dist/queries/focus-criteria-standing.d.ts +2 -2
  141. package/dist/queries/focus-discovery.js +1 -1
  142. package/dist/queries/focus-discovery.js.map +1 -1
  143. package/dist/queries/focuses.d.ts.map +1 -1
  144. package/dist/queries/focuses.js +1 -0
  145. package/dist/queries/focuses.js.map +1 -1
  146. package/dist/queries/issues.d.ts.map +1 -1
  147. package/dist/queries/issues.js +1 -0
  148. package/dist/queries/issues.js.map +1 -1
  149. package/dist/queries/shared.js +1 -1
  150. package/dist/queries/workflows.d.ts.map +1 -1
  151. package/dist/queries/workflows.js +1 -0
  152. package/dist/queries/workflows.js.map +1 -1
  153. package/dist/spawn/helpers.d.ts.map +1 -1
  154. package/dist/spawn/helpers.js +1 -0
  155. package/dist/spawn/helpers.js.map +1 -1
  156. package/dist/spawn/idle-work-stamp.d.ts +13 -7
  157. package/dist/spawn/idle-work-stamp.d.ts.map +1 -1
  158. package/dist/spawn/idle-work-stamp.js +22 -11
  159. package/dist/spawn/idle-work-stamp.js.map +1 -1
  160. package/dist/spawn/lead-continuation.d.ts.map +1 -1
  161. package/dist/spawn/lead-continuation.js +13 -11
  162. package/dist/spawn/lead-continuation.js.map +1 -1
  163. package/dist/spawn/spawn-cooldown.js +1 -1
  164. package/dist/testing/fixtures/index.js +1 -1
  165. package/dist/testing/fixtures/merge-log-capture.d.ts +5 -0
  166. package/dist/testing/fixtures/merge-log-capture.d.ts.map +1 -0
  167. package/dist/testing/fixtures/merge-log-capture.js +35 -0
  168. package/dist/testing/fixtures/merge-log-capture.js.map +1 -0
  169. package/dist/testing/fixtures/pending-spawn-world.js +1 -1
  170. package/dist/testing/fixtures/pending-spawn-world.js.map +1 -1
  171. package/dist/types/index.js +1 -1
  172. package/dist/verify/commit-gate-configured.d.ts.map +1 -1
  173. package/dist/verify/commit-gate-configured.js +1 -0
  174. package/dist/verify/commit-gate-configured.js.map +1 -1
  175. package/dist/verify/gate-process-group.d.ts +40 -0
  176. package/dist/verify/gate-process-group.d.ts.map +1 -0
  177. package/dist/verify/gate-process-group.js +91 -0
  178. package/dist/verify/gate-process-group.js.map +1 -0
  179. package/dist/verify/no-verdict-record.d.ts +103 -0
  180. package/dist/verify/no-verdict-record.d.ts.map +1 -0
  181. package/dist/verify/no-verdict-record.js +218 -0
  182. package/dist/verify/no-verdict-record.js.map +1 -0
  183. package/dist/verify/timed-out-rendered-verdict.d.ts +40 -0
  184. package/dist/verify/timed-out-rendered-verdict.d.ts.map +1 -0
  185. package/dist/verify/timed-out-rendered-verdict.js +52 -0
  186. package/dist/verify/timed-out-rendered-verdict.js.map +1 -0
  187. package/dist/verify/verification-attribution-base.js +1 -1
  188. package/dist/verify/verification-attribution-base.js.map +1 -1
  189. package/dist/verify/verification-attribution.js +2 -2
  190. package/dist/verify/verification-attribution.js.map +1 -1
  191. package/dist/verify/verification-baseline-run.d.ts.map +1 -1
  192. package/dist/verify/verification-baseline-run.js +5 -7
  193. package/dist/verify/verification-baseline-run.js.map +1 -1
  194. package/dist/verify/verification-baseline.js +1 -1
  195. package/dist/verify/verification-baseline.js.map +1 -1
  196. package/dist/verify/verification-checkout.js +1 -1
  197. package/dist/verify/verification-checkout.js.map +1 -1
  198. package/dist/verify/verification-commit-sharing.d.ts.map +1 -1
  199. package/dist/verify/verification-commit-sharing.js +93 -10
  200. package/dist/verify/verification-commit-sharing.js.map +1 -1
  201. package/dist/verify/verification-default-on.js +1 -1
  202. package/dist/verify/verification-default-on.js.map +1 -1
  203. package/dist/verify/verification-deps-default.d.ts.map +1 -1
  204. package/dist/verify/verification-deps-default.js +2 -0
  205. package/dist/verify/verification-deps-default.js.map +1 -1
  206. package/dist/verify/verification-deps.d.ts +8 -0
  207. package/dist/verify/verification-deps.d.ts.map +1 -1
  208. package/dist/verify/verification-deterministic.d.ts +8 -0
  209. package/dist/verify/verification-deterministic.d.ts.map +1 -1
  210. package/dist/verify/verification-deterministic.js +3 -6
  211. package/dist/verify/verification-deterministic.js.map +1 -1
  212. package/dist/worktree/provision.d.ts +6 -5
  213. package/dist/worktree/provision.d.ts.map +1 -1
  214. package/dist/worktree/provision.js +13 -8
  215. package/dist/worktree/provision.js.map +1 -1
  216. package/dist/worktree/verify-interlock.d.ts.map +1 -1
  217. package/dist/worktree/verify-interlock.js +2 -0
  218. package/dist/worktree/verify-interlock.js.map +1 -1
  219. package/package.json +1 -1
@@ -0,0 +1,155 @@
1
+ // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
+ // Pinned by: packages/daemon/src/focus/advance-hold.test.ts
3
+ // PINNED-BY-END
4
+ /**
5
+ * A held advance names its reason where the team reads it.
6
+ *
7
+ * A finished delivery (every work issue Done) advances coding -> verify on the
8
+ * live listener pass (focus/listener-auto-advance.ts) only when the daemon's
9
+ * precheck (delivery/delivery-advance-block.ts ensureWorktreeCommittedBeforeAdvance)
10
+ * admits it: the focus worktree -- which EVERY delivery of the focus shares --
11
+ * must be committed, and no verify command may be running in it. A refusal used
12
+ * to be a log.info line only, while the team prompt promised the advance was
13
+ * automatic. So a team whose delivery sat at coding could not see why, and it
14
+ * escalated to a human asking for a status the daemon owns (Tinker Tailor,
15
+ * 2026-09-25).
16
+ *
17
+ * This module puts the refusal on the delivery's gate_state: a `blocking` entry
18
+ * named for the hold (the `verify_evidence_unavailable` shape -- a named guard
19
+ * plus its own detail key) and `advanceHold`, which names the worktree and, for
20
+ * uncommitted work, the paths. A sibling's uncommitted edits hold a finished
21
+ * delivery too, which is exactly why the paths are named. The dashboard's
22
+ * Waiting-on line (src/lib/dashboard/deliveryCardUtils.ts formatGateBlockers)
23
+ * and a team reading the delivery through telora_product_delivery both see it.
24
+ *
25
+ * Cleared on the tick the advance lands (the advance write carries only the
26
+ * verification history, so the entry does not survive it) and when the delivery
27
+ * re-opens with open work ({@link clearAdvanceHold}). A guard block is a
28
+ * different path (transition_blocks + a measured gate_state) and is untouched.
29
+ *
30
+ * @module focus/advance-hold
31
+ */
32
+ import { runGitSync } from '../git/index.js';
33
+ import { rewriteDeliveryGateStateAtOwnStatus, } from '../queries/deliveries.js';
34
+ import { createLogger } from '../shell/log.js';
35
+ const log = createLogger({ module: 'advance-hold' });
36
+ /** The guard names of the paired `blocking` entries -- one per hold reason. */
37
+ export const ADVANCE_HOLD_GUARDS = new Set([
38
+ 'worktree_uncommitted',
39
+ 'verify_in_flight',
40
+ ]);
41
+ /** At most this many paths are named; the count carries the rest. */
42
+ export const ADVANCE_HOLD_PATH_CAP = 20;
43
+ /**
44
+ * The uncommitted paths in a worktree, as `git status --porcelain` names them
45
+ * (a rename names its destination). Empty when git cannot be read -- the hold
46
+ * is still recorded, just without paths.
47
+ */
48
+ export function listUncommittedPaths(worktreePath) {
49
+ const result = runGitSync(['status', '--porcelain', '--untracked-files=all'], worktreePath);
50
+ if (!result.success)
51
+ return [];
52
+ // The runner trims its output, so the FIRST line may have lost the leading
53
+ // blank of its two-column status (" M a.ts" -> "M a.ts"): strip the status
54
+ // columns by pattern, never by a fixed width.
55
+ return result.output
56
+ .split('\n')
57
+ .map((line) => line.replace(/^[ MTADRCU?!]{1,2} /, ''))
58
+ .filter((path) => path.length > 0)
59
+ .map((path) => {
60
+ const arrow = path.indexOf(' -> ');
61
+ return arrow >= 0 ? path.slice(arrow + 4) : path;
62
+ });
63
+ }
64
+ /** Build the hold detail for a precheck refusal. Pure over its inputs. */
65
+ export function buildAdvanceHold(hold, uncommittedPaths, nowIso) {
66
+ if (hold.kind === 'verify_in_flight') {
67
+ return { reason: hold.kind, worktreePath: hold.worktreePath, heldSince: nowIso };
68
+ }
69
+ return {
70
+ reason: hold.kind,
71
+ worktreePath: hold.worktreePath,
72
+ uncommittedPaths: uncommittedPaths.slice(0, ADVANCE_HOLD_PATH_CAP),
73
+ uncommittedPathCount: uncommittedPaths.length,
74
+ heldSince: nowIso,
75
+ };
76
+ }
77
+ function sameHold(a, b) {
78
+ return a !== undefined
79
+ && a.reason === b.reason
80
+ && a.worktreePath === b.worktreePath
81
+ && JSON.stringify(a.uncommittedPaths ?? []) === JSON.stringify(b.uncommittedPaths ?? [])
82
+ && (a.uncommittedPathCount ?? 0) === (b.uncommittedPathCount ?? 0);
83
+ }
84
+ /** Drop any advance-hold entry from a blocking list. */
85
+ function withoutHoldGuards(blocking) {
86
+ return (blocking ?? []).filter((b) => !ADVANCE_HOLD_GUARDS.has(b.guardName));
87
+ }
88
+ /**
89
+ * The gate_state with `hold` recorded, merged over what the row already carries
90
+ * (verification history and any other key survive). Returns undefined when the
91
+ * same hold is already recorded, so a hold that stands across polls writes once.
92
+ * `heldSince` is kept from the standing record when only the paths changed.
93
+ */
94
+ export function withAdvanceHold(prior, hold) {
95
+ const standing = prior?.advanceHold;
96
+ if (sameHold(standing, hold))
97
+ return undefined;
98
+ const heldSince = standing?.reason === hold.reason ? standing.heldSince : hold.heldSince;
99
+ return {
100
+ ...(prior ?? { warnings: [] }),
101
+ blocking: [...withoutHoldGuards(prior?.blocking), { guardName: hold.reason, passed: false }],
102
+ warnings: prior?.warnings ?? [],
103
+ evaluatedAt: hold.heldSince,
104
+ advanceHold: { ...hold, heldSince },
105
+ };
106
+ }
107
+ /** The gate_state with any advance hold removed; undefined when there is none. */
108
+ export function withoutAdvanceHold(prior) {
109
+ if (!prior)
110
+ return undefined;
111
+ const hasEntry = (prior.blocking ?? []).some((b) => ADVANCE_HOLD_GUARDS.has(b.guardName));
112
+ if (prior.advanceHold === undefined && !hasEntry)
113
+ return undefined;
114
+ const next = { ...prior, blocking: withoutHoldGuards(prior.blocking) };
115
+ delete next.advanceHold;
116
+ return next;
117
+ }
118
+ /**
119
+ * Record a precheck refusal on the delivery's gate_state, at the row's own
120
+ * status and in its serialized write turn. A standing identical hold writes
121
+ * nothing. Throws what the row read/write throws; the caller logs and moves on.
122
+ */
123
+ export async function recordAdvanceHold(deliveryId, hold, deps = {}) {
124
+ const paths = hold.kind === 'worktree_uncommitted'
125
+ ? (deps.listUncommittedPaths ?? listUncommittedPaths)(hold.worktreePath)
126
+ : [];
127
+ const detail = buildAdvanceHold(hold, paths, (deps.now ?? (() => new Date().toISOString()))());
128
+ await rewriteDeliveryGateStateAtOwnStatus(deliveryId, ({ gateState }) => withAdvanceHold(gateState, detail), { io: deps.io });
129
+ }
130
+ /**
131
+ * Clear a recorded advance hold (the delivery re-opened: it holds open work
132
+ * again, so nothing is waiting on the advance). No write when there is none.
133
+ */
134
+ export async function clearAdvanceHold(deliveryId, deps = {}) {
135
+ await rewriteDeliveryGateStateAtOwnStatus(deliveryId, ({ gateState }) => withoutAdvanceHold(gateState), { io: deps.io });
136
+ }
137
+ /**
138
+ * An advance the precheck refused: log it, and name the hold where the team and
139
+ * the dashboard read it -- a finished delivery held at coding otherwise looks
140
+ * stuck, and a team that cannot see why escalates for a status the daemon owns.
141
+ * The live pass (focus/listener-auto-advance.ts) and the team-exit pass
142
+ * (completion/status-advance-phase.ts) both call it. Logs, never throws.
143
+ */
144
+ export async function noteAdvanceRefused(delivery, precheck, record = recordAdvanceHold) {
145
+ log.info(`Skip auto-advance of "${delivery.name}": ${precheck.reason}`);
146
+ if (!precheck.hold)
147
+ return;
148
+ await record(delivery.id, precheck.hold).catch((err) => log.warn(`Recording the advance hold on "${delivery.name}" failed: ${err.message}`));
149
+ }
150
+ /** Whether a delivery's gate_state (as read) carries an advance hold. */
151
+ export function hasAdvanceHold(gateState) {
152
+ return gateState != null && typeof gateState === 'object'
153
+ && gateState.advanceHold != null;
154
+ }
155
+ //# sourceMappingURL=advance-hold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advance-hold.js","sourceRoot":"","sources":["../../src/focus/advance-hold.ts"],"names":[],"mappings":"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"}
@@ -10,8 +10,8 @@
10
10
  * 2. already has a team -> skip (do not double-spawn)
11
11
  * 3. review-cycle cap hold -> skip (the review loop reached its cap without
12
12
  * converging; focus/review-cycle-cap-hold.ts)
13
- * 4. held (no actionable work) -> skip (a verify hold defers the advance;
14
- * a spawned team would find nothing to do)
13
+ * 4. no team work / held -> skip (`skip_no_work`: nothing open for a team;
14
+ * `skip_held`: a verify hold defers the advance)
15
15
  * 5. in spawn cooldown -> skip (recently torn down)
16
16
  * 6. at total capacity -> spawn nothing more; the loop records the focus
17
17
  * as waiting for a slot and keeps classifying
@@ -19,15 +19,19 @@
19
19
  *
20
20
  * The held check reads the ONE team-actionable-work predicate
21
21
  * (focus/team-actionable-work.ts) shared with the team-exit decision, so the
22
- * spawn gate and the exit cannot disagree about a held focus: getReadyFocuses
23
- * surfaced this focus, so it has unheld actionable work by construction, and a
24
- * verify hold is the only thing that can make it non-actionable here.
22
+ * spawn gate and the exit cannot disagree about a held focus. SURFACED IS NOT
23
+ * WORK: getReadyFocuses surfaces a focus by delivery status, and a coding
24
+ * delivery whose every work issue is Done is waiting on the daemon, not a team.
25
+ * So the unheld fact is `hasTeamWork` (focus/ready-focus-team-work.ts, the same
26
+ * team-work predicate the continuation stamp and the team exit read), unless
27
+ * `forced` -- the answer re-arm and the unclaimed-migration notice, whose
28
+ * carrier is the spawn itself.
25
29
  *
26
30
  * The capacity check reads the LIVE active-team count, so the caller passes a
27
31
  * freshly-sampled count per focus (a successful spawn raises it for the next
28
32
  * focus; a skipped spawn does not).
29
33
  */
30
- export type FocusSpawnAction = 'spawn' | 'skip_unknown_role' | 'skip_active_team' | 'skip_cap_held' | 'skip_held' | 'skip_cooldown' | 'stop_capacity';
34
+ export type FocusSpawnAction = 'spawn' | 'skip_unknown_role' | 'skip_active_team' | 'skip_cap_held' | 'skip_held' | 'skip_no_work' | 'skip_cooldown' | 'stop_capacity';
31
35
  export interface FocusSpawnGate {
32
36
  /** Whether the focus's assigned_agent_role_id resolves to a known role. */
33
37
  hasRole: boolean;
@@ -55,6 +59,13 @@ export interface FocusSpawnGate {
55
59
  * (f1, 2026-09-13). Absent reads as false (the storm-safe verdict).
56
60
  */
57
61
  workOutsideVerifyHold?: boolean;
62
+ /**
63
+ * The focus holds team work (focus/ready-focus-team-work.ts). Absent reads as
64
+ * true (pure-gate tests predate it; a focus with a live team is not read).
65
+ */
66
+ hasTeamWork?: boolean;
67
+ /** An escape spawns past the work fact: an answer re-arm or an owed unclaimed-migration notice. */
68
+ forced?: boolean;
58
69
  inSpawnCooldown: boolean;
59
70
  /** Live count of active teams as of this focus's turn. */
60
71
  activeTeamCount: number;
@@ -1 +1 @@
1
- {"version":3,"file":"focus-spawn-decision.d.ts","sourceRoot":"","sources":["../../src/focus/focus-spawn-decision.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,MAAM,gBAAgB,GACxB,OAAO,GACP,mBAAmB,GACnB,kBAAkB,GAClB,eAAe,GACf,WAAW,GACX,eAAe,GACf,eAAe,CAAC;AAEpB,MAAM,WAAW,cAAc;IAC7B,2EAA2E;IAC3E,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;;OAMG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,eAAe,EAAE,OAAO,CAAC;IACzB,0DAA0D;IAC1D,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,gBAAgB,CAoBvE"}
1
+ {"version":3,"file":"focus-spawn-decision.d.ts","sourceRoot":"","sources":["../../src/focus/focus-spawn-decision.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,MAAM,gBAAgB,GACxB,OAAO,GACP,mBAAmB,GACnB,kBAAkB,GAClB,eAAe,GACf,WAAW,GACX,cAAc,GACd,eAAe,GACf,eAAe,CAAC;AAEpB,MAAM,WAAW,cAAc;IAC7B,2EAA2E;IAC3E,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;;OAMG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mGAAmG;IACnG,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,OAAO,CAAC;IACzB,0DAA0D;IAC1D,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,gBAAgB,CAoBvE"}
@@ -22,16 +22,16 @@ export function decideFocusSpawn(gate) {
22
22
  if (gate.reviewCycleCapHeld)
23
23
  return 'skip_cap_held';
24
24
  // Read the ONE team-actionable-work predicate (shared with the team-exit
25
- // decision). A ready focus has unheld actionable work by construction, so a
26
- // verify hold with no open work outside the verified delivery is the only thing
27
- // that can zero it out here: defer rather than spawn a team that would find
28
- // nothing to commit and terminate -- the billed no-op loop this gate removes.
25
+ // decision). No open work, or a verify hold with no open work outside the
26
+ // verified delivery: defer rather than spawn a team that would find nothing to
27
+ // commit and terminate -- the billed no-op loop this gate removes.
28
+ const hasUnheldActionableWork = gate.forced === true || gate.hasTeamWork !== false;
29
29
  if (!focusHasTeamActionableWork({
30
- hasUnheldActionableWork: true,
30
+ hasUnheldActionableWork,
31
31
  underVerifyHold: gate.underVerifyHold,
32
32
  workOutsideVerifyHold: gate.workOutsideVerifyHold,
33
33
  })) {
34
- return 'skip_held';
34
+ return hasUnheldActionableWork ? 'skip_held' : 'skip_no_work';
35
35
  }
36
36
  if (gate.inSpawnCooldown)
37
37
  return 'skip_cooldown';
@@ -1 +1 @@
1
- {"version":3,"file":"focus-spawn-decision.js","sourceRoot":"","sources":["../../src/focus/focus-spawn-decision.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,iFAAiF;AACjF,yGAAyG;AACzG,4DAA4D;AAC5D,yEAAyE;AACzE,4DAA4D;AAC5D,gBAAgB;AAEhB;;;;;;GAMG;AAEH,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAyEvE,MAAM,UAAU,gBAAgB,CAAC,IAAoB;IACnD,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,OAAO,mBAAmB,CAAC;IAC9C,IAAI,IAAI,CAAC,aAAa;QAAE,OAAO,kBAAkB,CAAC;IAClD,gFAAgF;IAChF,IAAI,IAAI,CAAC,kBAAkB;QAAE,OAAO,eAAe,CAAC;IACpD,yEAAyE;IACzE,4EAA4E;IAC5E,gFAAgF;IAChF,4EAA4E;IAC5E,8EAA8E;IAC9E,IAAI,CAAC,0BAA0B,CAAC;QAC9B,uBAAuB,EAAE,IAAI;QAC7B,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;KAClD,CAAC,EAAE,CAAC;QACH,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,IAAI,IAAI,CAAC,eAAe;QAAE,OAAO,eAAe,CAAC;IACjD,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,gBAAgB;QAAE,OAAO,eAAe,CAAC;IAC1E,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"focus-spawn-decision.js","sourceRoot":"","sources":["../../src/focus/focus-spawn-decision.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,iFAAiF;AACjF,yGAAyG;AACzG,4DAA4D;AAC5D,yEAAyE;AACzE,4DAA4D;AAC5D,gBAAgB;AAEhB;;;;;;GAMG;AAEH,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAqFvE,MAAM,UAAU,gBAAgB,CAAC,IAAoB;IACnD,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,OAAO,mBAAmB,CAAC;IAC9C,IAAI,IAAI,CAAC,aAAa;QAAE,OAAO,kBAAkB,CAAC;IAClD,gFAAgF;IAChF,IAAI,IAAI,CAAC,kBAAkB;QAAE,OAAO,eAAe,CAAC;IACpD,yEAAyE;IACzE,0EAA0E;IAC1E,+EAA+E;IAC/E,mEAAmE;IACnE,MAAM,uBAAuB,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC;IACnF,IAAI,CAAC,0BAA0B,CAAC;QAC9B,uBAAuB;QACvB,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;KAClD,CAAC,EAAE,CAAC;QACH,OAAO,uBAAuB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC;IAChE,CAAC;IACD,IAAI,IAAI,CAAC,eAAe;QAAE,OAAO,eAAe,CAAC;IACjD,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,gBAAgB;QAAE,OAAO,eAAe,CAAC;IAC1E,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
- // Pinned by: 50 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/focus/focus-team-state.ts
2
+ // Pinned by: 53 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/focus/focus-team-state.ts
3
3
  // PINNED-BY-END
4
4
  import { createLogger } from '../shell/log.js';
5
5
  const log = createLogger({ module: 'focus-executor' });
@@ -1 +1 @@
1
- {"version":3,"file":"focus-worktree-state.d.ts","sourceRoot":"","sources":["../../src/focus/focus-worktree-state.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AAKjC;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,oBAAoB,CAAC,EAAE,OAAO,oBAAoB,CAAC;IACnD,oBAAoB,CAAC,EAAE,OAAO,oBAAoB,CAAC;IACnD,mBAAmB,CAAC,EAAE,OAAO,mBAAmB,CAAC;CAClD;AAQD;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BpH;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAE/E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,GAAE,iBAAsB,GAAG,IAAI,CAiB7G;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAe1F;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAErE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEzD"}
1
+ {"version":3,"file":"focus-worktree-state.d.ts","sourceRoot":"","sources":["../../src/focus/focus-worktree-state.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AAKjC;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,oBAAoB,CAAC,EAAE,OAAO,oBAAoB,CAAC;IACnD,oBAAoB,CAAC,EAAE,OAAO,oBAAoB,CAAC;IACnD,mBAAmB,CAAC,EAAE,OAAO,mBAAmB,CAAC;CAClD;AAQD;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BpH;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAE/E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,GAAE,iBAAsB,GAAG,IAAI,CAiB7G;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAe1F;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAErE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEzD"}
@@ -1,6 +1,7 @@
1
1
  // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
2
  // Pinned by: packages/daemon/src/directive/directive-verify-hold-disposal-convergence.test.ts,
3
3
  // packages/daemon/src/directive/directive-verify-hold-gate.test.ts,
4
+ // packages/daemon/src/focus/advance-hold.test.ts,
4
5
  // packages/daemon/src/focus/focus-engine-characterization.test.ts,
5
6
  // packages/daemon/src/focus/focus-worktree-state-product-identity.test.ts,
6
7
  // packages/daemon/src/focus/pending-spawn-verify-hold.test.ts,
@@ -1 +1 @@
1
- {"version":3,"file":"focus-worktree-state.js","sourceRoot":"","sources":["../../src/focus/focus-worktree-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"focus-worktree-state.js","sourceRoot":"","sources":["../../src/focus/focus-worktree-state.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ import { fetchEffectiveWorkflow } from '../queries/workflows.js';
14
14
  import { getActiveTeams } from './focus-executor.js';
15
15
  import { hasFocusWorktree } from './focus-worktree-state.js';
16
16
  import { ensureWorktreeCommittedBeforeAdvance } from '../delivery/delivery-lifecycle.js';
17
+ import { recordAdvanceHold, clearAdvanceHold } from './advance-hold.js';
17
18
  import { getDeliveryIssues, updateIssueStatus } from '../queries/issues.js';
18
19
  import { findOpenOperatorHoldForDelivery } from '../queries/holds.js';
19
20
  /**
@@ -41,6 +42,15 @@ export type MeasureGuardAtAdvanceFn = (config: DaemonConfig, delivery: {
41
42
  * Dependency seam for checkDeliveryAutoAdvance. The real implementation imports
42
43
  * these eagerly; tests inject stubs to avoid the fragile bare-specifier
43
44
  * `mock.module` path under tsx (same rationale as CheckDeliveryWorkStartDeps).
45
+ *
46
+ * NOTE: neither hasFocusWorktree NOR getActiveTeams is consulted for focus
47
+ * SELECTION any longer. hasFocusWorktree was dropped from selection in the
48
+ * 2026-07-27 wedge fix; getActiveTeams (the team-presence freeze) is dropped for
49
+ * the same reason and by the same shape -- advancement eligibility is a property
50
+ * of the DELIVERY's own state, not of whether the focus has a live team. Both
51
+ * deps fields + imports are retained for back-compat with existing test call
52
+ * sites (referenced via `typeof` here); the requirements they used to gate now
53
+ * live only at the per-delivery write point (ensureWorktreeCommittedBeforeAdvance).
44
54
  */
45
55
  export interface CheckDeliveryAutoAdvanceDeps {
46
56
  measureGuardAtAdvance?: MeasureGuardAtAdvanceFn;
@@ -54,6 +64,10 @@ export interface CheckDeliveryAutoAdvanceDeps {
54
64
  fetchEffectiveWorkflow?: typeof fetchEffectiveWorkflow;
55
65
  updateDeliveryStatus?: typeof updateDeliveryStatus;
56
66
  findOpenOperatorHoldForDelivery?: typeof findOpenOperatorHoldForDelivery;
67
+ /** Record a precheck refusal on the delivery's gate_state (focus/advance-hold.ts). */
68
+ recordAdvanceHold?: typeof recordAdvanceHold;
69
+ /** Clear a recorded advance hold when the delivery re-opens. */
70
+ clearAdvanceHold?: typeof clearAdvanceHold;
57
71
  }
58
72
  export declare function checkDeliveryAutoAdvance(config: DaemonConfig, deps?: CheckDeliveryAutoAdvanceDeps): Promise<void>;
59
73
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"listener-auto-advance.d.ts","sourceRoot":"","sources":["../../src/focus/listener-auto-advance.ts"],"names":[],"mappings":"AAYA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAO7D,OAAO,EAAE,oCAAoC,EAAuC,MAAM,mCAAmC,CAAC;AAE9H,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE5E,OAAO,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAC;AAwBtE;;;;;;;;;;GAUG;AACH,yDAAyD;AACzD,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACrC;AA8CD,kEAAkE;AAClE,MAAM,MAAM,uBAAuB,GAAG,CACpC,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACtC,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC;AAE7C;;;;GAIG;AACH,MAAM,WAAW,4BAA4B;IAC3C,qBAAqB,CAAC,EAAE,uBAAuB,CAAC;IAChD,cAAc,CAAC,EAAE,OAAO,cAAc,CAAC;IACvC,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3C,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3C,kBAAkB,CAAC,EAAE,OAAO,kBAAkB,CAAC;IAC/C,iBAAiB,CAAC,EAAE,OAAO,iBAAiB,CAAC;IAC7C,iBAAiB,CAAC,EAAE,OAAO,iBAAiB,CAAC;IAC7C,oCAAoC,CAAC,EAAE,OAAO,oCAAoC,CAAC;IACnF,sBAAsB,CAAC,EAAE,OAAO,sBAAsB,CAAC;IACvD,oBAAoB,CAAC,EAAE,OAAO,oBAAoB,CAAC;IACnD,+BAA+B,CAAC,EAAE,OAAO,+BAA+B,CAAC;CAC1E;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,YAAY,EACpB,IAAI,GAAE,4BAAiC,GACtC,OAAO,CAAC,IAAI,CAAC,CAqVf;AAED;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3C,kBAAkB,CAAC,EAAE,OAAO,kBAAkB,CAAC;IAC/C,iBAAiB,CAAC,EAAE,OAAO,iBAAiB,CAAC;IAC7C,sBAAsB,CAAC,EAAE,OAAO,sBAAsB,CAAC;IACvD,oBAAoB,CAAC,EAAE,OAAO,oBAAoB,CAAC;CACpD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,YAAY,EACpB,IAAI,GAAE,0BAA+B,GACpC,OAAO,CAAC,IAAI,CAAC,CAoDf"}
1
+ {"version":3,"file":"listener-auto-advance.d.ts","sourceRoot":"","sources":["../../src/focus/listener-auto-advance.ts"],"names":[],"mappings":"AAaA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAO7D,OAAO,EAAE,oCAAoC,EAAuC,MAAM,mCAAmC,CAAC;AAC9H,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAsC,MAAM,mBAAmB,CAAC;AAE5G,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE5E,OAAO,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAC;AAwBtE;;;;;;;;;;GAUG;AACH,yDAAyD;AACzD,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACrC;AA8CD,kEAAkE;AAClE,MAAM,MAAM,uBAAuB,GAAG,CACpC,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACtC,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC;AAE7C;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,4BAA4B;IAC3C,qBAAqB,CAAC,EAAE,uBAAuB,CAAC;IAChD,cAAc,CAAC,EAAE,OAAO,cAAc,CAAC;IACvC,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3C,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3C,kBAAkB,CAAC,EAAE,OAAO,kBAAkB,CAAC;IAC/C,iBAAiB,CAAC,EAAE,OAAO,iBAAiB,CAAC;IAC7C,iBAAiB,CAAC,EAAE,OAAO,iBAAiB,CAAC;IAC7C,oCAAoC,CAAC,EAAE,OAAO,oCAAoC,CAAC;IACnF,sBAAsB,CAAC,EAAE,OAAO,sBAAsB,CAAC;IACvD,oBAAoB,CAAC,EAAE,OAAO,oBAAoB,CAAC;IACnD,+BAA+B,CAAC,EAAE,OAAO,+BAA+B,CAAC;IACzE,sFAAsF;IACtF,iBAAiB,CAAC,EAAE,OAAO,iBAAiB,CAAC;IAC7C,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;CAC5C;AAeD,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,YAAY,EACpB,IAAI,GAAE,4BAAiC,GACtC,OAAO,CAAC,IAAI,CAAC,CA6Uf;AAED;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3C,kBAAkB,CAAC,EAAE,OAAO,kBAAkB,CAAC;IAC/C,iBAAiB,CAAC,EAAE,OAAO,iBAAiB,CAAC;IAC7C,sBAAsB,CAAC,EAAE,OAAO,sBAAsB,CAAC;IACvD,oBAAoB,CAAC,EAAE,OAAO,oBAAoB,CAAC;CACpD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,YAAY,EACpB,IAAI,GAAE,0BAA+B,GACpC,OAAO,CAAC,IAAI,CAAC,CAoDf"}
@@ -1,6 +1,7 @@
1
1
  // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
2
  // Pinned by: packages/daemon/src/delivery/delivery-work-start.test.ts,
3
3
  // packages/daemon/src/delivery/discovery-only-auto-advance.test.ts,
4
+ // packages/daemon/src/focus/advance-hold.test.ts,
4
5
  // packages/daemon/src/focus/listener-auto-advance-guard-measure.test.ts,
5
6
  // packages/daemon/src/focus/listener-auto-advance-team-presence.test.ts,
6
7
  // packages/daemon/src/focus/listener-auto-advance-teamless-wedge.test.ts,
@@ -20,6 +21,7 @@ import { autoCloseContextGroups, sweepDeliveryCloseIssues } from '../delivery/de
20
21
  import { resolveReconciledWrite, workStartReconcileInput, advanceReconcileInput } from '../delivery/delivery-reconciler-apply.js';
21
22
  import { isAuditPhaseFocus } from '../audit/audit-shape.js';
22
23
  import { ensureWorktreeCommittedBeforeAdvance, evaluateGuardsForDeliveryTransition } from '../delivery/delivery-lifecycle.js';
24
+ import { clearAdvanceHold, hasAdvanceHold, noteAdvanceRefused } from './advance-hold.js';
23
25
  import { determineTransition } from '../workflow/workflow-engine.js';
24
26
  import { getDeliveryIssues, updateIssueStatus } from '../queries/issues.js';
25
27
  import { resolveOpenFocusEscalationsOfKind } from '../queries/escalations.js';
@@ -82,17 +84,17 @@ async function defaultMeasureGuardAtAdvance(config, delivery, workflow, fromStat
82
84
  });
83
85
  return { blocked: outcome.blocked, gateState: outcome.gateState ?? null };
84
86
  }
87
+ /**
88
+ * The delivery re-opened: nothing waits on the advance any more, so a hold
89
+ * recorded while it was finished no longer describes it. Logs, never throws.
90
+ */
91
+ async function clearReopenedAdvanceHold(delivery, clear) {
92
+ if (!hasAdvanceHold(delivery.gateState))
93
+ return;
94
+ await clear(delivery.id).catch((err) => log.warn(`Clearing the advance hold on "${delivery.name}" failed: ${err.message}`));
95
+ }
85
96
  export async function checkDeliveryAutoAdvance(config, deps = {}) {
86
97
  const _getActiveFocuses = deps.getActiveFocuses ?? getActiveFocuses;
87
- // NOTE: neither hasFocusWorktree NOR getActiveTeams is consulted for focus
88
- // SELECTION any longer. hasFocusWorktree was dropped from selection in the
89
- // 2026-07-27 wedge fix; getActiveTeams (the team-presence freeze) is dropped
90
- // here for the same reason and by the same shape -- advancement eligibility is
91
- // a property of the DELIVERY's own state, not of whether the focus has a live
92
- // team. Both deps fields + imports are retained for back-compat with existing
93
- // test call sites (referenced via `typeof` in CheckDeliveryAutoAdvanceDeps);
94
- // the requirements they used to gate now live only at the per-delivery write
95
- // point (ensureWorktreeCommittedBeforeAdvance below).
96
98
  const _getFocusDeliveries = deps.getFocusDeliveries ?? getFocusDeliveries;
97
99
  const _getDeliveryIssues = deps.getDeliveryIssues ?? getDeliveryIssues;
98
100
  const _updateIssueStatus = deps.updateIssueStatus ?? updateIssueStatus;
@@ -184,6 +186,7 @@ export async function checkDeliveryAutoAdvance(config, deps = {}) {
184
186
  // the reconciler's areDeliveryIssuesDone uses).
185
187
  const openWork = workIssues.filter(i => OPEN_ISSUE_STATUSES.has(i.status));
186
188
  if (openWork.length > 0) {
189
+ await clearReopenedAdvanceHold(delivery, deps.clearAdvanceHold ?? clearAdvanceHold);
187
190
  // A delivery with open work never advances FORWARD here. But the
188
191
  // re-queue edge verify_failed -> queued (delivery-reconciler.ts) is
189
192
  // the one this teamless pass MUST drive: a verify_failed delivery
@@ -232,7 +235,7 @@ export async function checkDeliveryAutoAdvance(config, deps = {}) {
232
235
  sessionId: null,
233
236
  });
234
237
  if (!precheck.ok) {
235
- log.info(`Skip auto-advance of "${delivery.name}": ${precheck.reason}`);
238
+ await noteAdvanceRefused(delivery, precheck, deps.recordAdvanceHold);
236
239
  continue;
237
240
  }
238
241
  // Advance via the single-writer reconciler. The teamless path has no
@@ -1 +1 @@
1
- {"version":3,"file":"listener-auto-advance.js","sourceRoot":"","sources":["../../src/focus/listener-auto-advance.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,uEAAuE;AACvE,sEAAsE;AACtE,2EAA2E;AAC3E,2EAA2E;AAC3E,4EAA4E;AAC5E,sEAAsE;AACtE,qEAAqE;AACrE,gFAAgF;AAChF,4EAA4E;AAC5E,gBAAgB;AAWhB,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAGjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACzG,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAClI,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,oCAAoC,EAAE,mCAAmC,EAAE,MAAM,mCAAmC,CAAC;AAC9H,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,iCAAiC,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACrH,OAAO,EAAE,mBAAmB,EAAE,mCAAmC,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAC9H,OAAO,EAAE,qCAAqC,EAAE,MAAM,sCAAsC,CAAC;AAC7F,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;AAGjD;;;;;;;GAOG;AACH,MAAM,sBAAsB,GAAG,QAAiB,CAAC;AACjD,MAAM,sBAAsB,GAAG,QAAiB,CAAC;AACjD,MAAM,sBAAsB,GAAG,QAAiB,CAAC;AACjD,MAAM,6BAA6B,GAAG,eAAwB,CAAC;AAoB/D;;;;;;;;;;;;;;GAcG;AACH,KAAK,UAAU,4BAA4B,CACzC,MAAoB,EACpB,QAAsC,EACtC,QAAkB,EAClB,UAAkB;IAElB,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;IACxE,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,UAAU,GAAG,mBAAmB,CAAC;QACrC,QAAQ;QACR,cAAc,EAAE,YAAY,CAAC,EAAE;QAC/B,QAAQ,EAAE,CAAC;QACX,cAAc,EAAE,CAAC;QACjB,YAAY,EAAE,CAAC;QACf,UAAU,EAAE,CAAC;KACd,CAAC,CAAC;IACH,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,CAAC,UAAU,CAAC,kBAAkB;QAAE,OAAO,IAAI,CAAC;IACzE,MAAM,OAAO,GAAG,MAAM,mCAAmC,CAAC;QACxD,UAAU,EAAE,QAAQ,CAAC,EAAE;QACvB,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,kBAAkB,EAAE,UAAU,CAAC,kBAAkB;QACjD,QAAQ,EAAE,CAAC;QACX,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,YAAY,EAAE,QAAQ,CAAC,IAAI;QAC3B,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;IACH,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;AAC5E,CAAC;AA6BD,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,MAAoB,EACpB,OAAqC,EAAE;IAEvC,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC;IACpE,2EAA2E;IAC3E,2EAA2E;IAC3E,6EAA6E;IAC7E,+EAA+E;IAC/E,8EAA8E;IAC9E,8EAA8E;IAC9E,6EAA6E;IAC7E,6EAA6E;IAC7E,sDAAsD;IACtD,MAAM,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,IAAI,kBAAkB,CAAC;IAC1E,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,CAAC;IACvE,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,CAAC;IACvE,MAAM,qCAAqC,GAAG,IAAI,CAAC,oCAAoC,IAAI,oCAAoC,CAAC;IAChI,MAAM,uBAAuB,GAAG,IAAI,CAAC,sBAAsB,IAAI,sBAAsB,CAAC;IACtF,MAAM,qBAAqB,GAAG,IAAI,CAAC,oBAAoB,IAAI,oBAAoB,CAAC;IAChF,MAAM,gCAAgC,GAAG,IAAI,CAAC,+BAA+B,IAAI,+BAA+B,CAAC;IACjH,MAAM,sBAAsB,GAAG,IAAI,CAAC,qBAAqB,IAAI,4BAA4B,CAAC;IAE1F,6EAA6E;IAC7E,yEAAyE;IACzE,4EAA4E;IAC5E,2EAA2E;IAC3E,6EAA6E;IAC7E,uEAAuE;IACvE,2EAA2E;IAC3E,8EAA8E;IAC9E,8EAA8E;IAC9E,2CAA2C;IAC3C,EAAE;IACF,2EAA2E;IAC3E,gFAAgF;IAChF,8EAA8E;IAC9E,uDAAuD;IACvD,6EAA6E;IAC7E,4EAA4E;IAC5E,6EAA6E;IAC7E,8EAA8E;IAC9E,iEAAiE;IACjE,EAAE;IACF,4EAA4E;IAC5E,6EAA6E;IAC7E,2EAA2E;IAC3E,kEAAkE;IAClE,qEAAqE;IACrE,2EAA2E;IAC3E,mDAAmD;IACnD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAmB,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACvF,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YAClC,4EAA4E;YAC5E,yEAAyE;YACzE,sEAAsE;YACtE,uEAAuE;YACvE,oEAAoE;YACpE,4EAA4E;YAC5E,0EAA0E;YAC1E,0EAA0E;YAC1E,wEAAwE;YACxE,sEAAsE;YACtE,eAAe,CAAC,GAAG,CACjB,KAAK,CAAC,QAAQ,EACd,iBAAiB,CAAC;gBAChB,QAAQ,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI;gBAClC,WAAW,EAAE,KAAK,CAAC,YAAY,KAAK,IAAI;gBACxC,QAAQ,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI;aACpC,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,+CAA+C,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;IACpF,CAAC;IAED,KAAK,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,eAAe,EAAE,CAAC;QACpD,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAEtD,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;gBAClC,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,eAAe,IAAI,EAAE,CAAC;oBAAE,SAAS;gBAEvE,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAErD,6DAA6D;oBAC7D,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;oBAC5C,MAAM,aAAa,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;oBAElD,uEAAuE;oBACvE,uEAAuE;oBACvE,qEAAqE;oBACrE,8DAA8D;oBAC9D,qEAAqE;oBACrE,oEAAoE;oBACpE,mEAAmE;oBACnE,qEAAqE;oBACrE,MAAM,iBAAiB,GACrB,UAAU;wBACV,UAAU,CAAC,MAAM,KAAK,CAAC;wBACvB,aAAa,CAAC,MAAM,GAAG,CAAC;wBACxB,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;oBAEjE,sEAAsE;oBACtE,qEAAqE;oBACrE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,iBAAiB;wBAAE,SAAS;oBAE5D,uEAAuE;oBACvE,gDAAgD;oBAChD,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC3E,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACxB,iEAAiE;wBACjE,oEAAoE;wBACpE,kEAAkE;wBAClE,kEAAkE;wBAClE,oEAAoE;wBACpE,mEAAmE;wBACnE,oEAAoE;wBACpE,sEAAsE;wBACtE,kEAAkE;wBAClE,qEAAqE;wBACrE,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,EAAE,CAAC,KAAK,6BAA6B,EAAE,CAAC;4BACvE,MAAM,aAAa,GAAG,CAAC,QAAQ,CAAC,eAAe,IAAI,EAAE,CAAoB,CAAC;4BAC1E,MAAM,eAAe,GAAG,MAAM,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;4BACnE,MAAM,eAAe,GAAG,sBAAsB,CAAC;gCAC7C,oEAAoE;gCACpE,gEAAgE;gCAChE,KAAK,EAAE,qBAAqB,CAAC;oCAC3B,aAAa,EAAE,aAAa;oCAC5B,MAAM;oCACN,YAAY,EAAE,IAAI;oCAClB,aAAa,EAAE,KAAK;iCACrB,CAAC;6BACH,CAAC,CAAC;4BACH,IAAI,eAAe,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;gCAC7C,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,MAAM,CAAC,CAAC;gCACzF,MAAM,qBAAqB,CACzB,QAAQ,CAAC,EAAE,EACX,eAAe,CAAC,MAAM,EACtB,YAAY,EAAE,EAAE,EAChB,SAAS,EACT,SAAS,EACT,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,CACrE,CAAC;gCACF,GAAG,CAAC,IAAI,CACN,kCAAkC,QAAQ,CAAC,IAAI,UAAU,aAAa,OAAO,eAAe,CAAC,MAAM,IAAI;oCACvG,GAAG,QAAQ,CAAC,MAAM,wDAAwD,CAC3E,CAAC;4BACJ,CAAC;wBACH,CAAC;wBACD,SAAS;oBACX,CAAC;oBAED,sEAAsE;oBACtE,oDAAoD;oBACpD,MAAM,sBAAsB,CAAC,aAAa,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC;oBACrE,MAAM,wBAAwB,CAAC,UAAU,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC;oBAEpE,yDAAyD;oBACzD,+DAA+D;oBAC/D,mEAAmE;oBACnE,kCAAkC;oBAClC,MAAM,QAAQ,GAAG,MAAM,qCAAqC,CAAC;wBAC3D,UAAU,EAAE,QAAQ,CAAC,EAAE;wBACvB,YAAY,EAAE,QAAQ,CAAC,IAAI;wBAC3B,OAAO;wBACP,cAAc,EAAE,MAAM,CAAC,cAAc;wBACrC,SAAS,EAAE,IAAI;qBAChB,CAAC,CAAC;oBACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;wBACjB,GAAG,CAAC,IAAI,CAAC,yBAAyB,QAAQ,CAAC,IAAI,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;wBACxE,SAAS;oBACX,CAAC;oBAED,qEAAqE;oBACrE,kEAAkE;oBAClE,sEAAsE;oBACtE,sEAAsE;oBACtE,6DAA6D;oBAC7D,kEAAkE;oBAClE,wEAAwE;oBACxE,+DAA+D;oBAC/D,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAC5D,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;oBAEzF,IAAI,aAAa,GAAG,CAAC,QAAQ,CAAC,eAAe,IAAI,EAAE,CAAoB,CAAC;oBAExE,IAAI,aAAa,KAAK,sBAAsB,EAAE,CAAC;wBAC7C,MAAM,QAAQ,GAAG,sBAAsB,CAAC;4BACtC,qEAAqE;4BACrE,qEAAqE;4BACrE,KAAK,EAAE,qBAAqB,CAAC;gCAC3B,aAAa;gCACb,MAAM,EAAE,gBAAgB;gCACxB,YAAY,EAAE,IAAI;gCAClB,aAAa,EAAE,iBAAiB;6BACjC,CAAC;yBACH,CAAC,CAAC;wBACH,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC;wBACpE,MAAM,qBAAqB,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;wBACjK,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC;oBAClC,CAAC;oBAED,uEAAuE;oBACvE,yEAAyE;oBACzE,0EAA0E;oBAC1E,wEAAwE;oBACxE,2EAA2E;oBAC3E,wEAAwE;oBACxE,0EAA0E;oBAC1E,oDAAoD;oBACpD,IAAI,mBAAmB,GAAgC,IAAI,CAAC;oBAC5D,IAAI,gBAAgB,GAAG,wBAAwB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;oBACpE,IAAI,aAAa,KAAK,sBAAsB,EAAE,CAAC;wBAC7C,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;wBACzF,IAAI,QAAQ,EAAE,CAAC;4BACb,mBAAmB,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;4BACpD,IAAI,QAAQ,CAAC,OAAO;gCAAE,gBAAgB,GAAG,wBAAwB,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;wBAC5G,CAAC;oBACH,CAAC;oBAED,MAAM,cAAc,GAAG,sBAAsB,CAAC;wBAC5C,0DAA0D;wBAC1D,qEAAqE;wBACrE,uEAAuE;wBACvE,KAAK,EAAE,qBAAqB,CAAC;4BAC3B,aAAa;4BACb,MAAM,EAAE,gBAAgB;4BACxB,YAAY,EAAE,mBAAmB;4BACjC,aAAa,EAAE,iBAAiB;yBACjC,CAAC;qBACH,CAAC,CAAC;oBACH,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,MAAM,CAAC,CAAC;oBAChF,MAAM,qBAAqB,CAAC,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,gBAAgB,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;oBACpL,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC;oBAEtC,qEAAqE;oBACrE,kEAAkE;oBAClE,uEAAuE;oBACvE,YAAY;oBACZ,IAAI,iBAAiB,IAAI,aAAa,KAAK,sBAAsB,EAAE,CAAC;wBAClE,MAAM,YAAY,GAAG,sBAAsB,CAAC;4BAC1C,kEAAkE;4BAClE,+DAA+D;4BAC/D,KAAK,EAAE,qBAAqB,CAAC;gCAC3B,aAAa;gCACb,MAAM,EAAE,gBAAgB;gCACxB,YAAY,EAAE,IAAI;gCAClB,aAAa,EAAE,IAAI;6BACpB,CAAC;yBACH,CAAC,CAAC;wBACH,IAAI,YAAY,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;4BAC1C,6DAA6D;4BAC7D,kEAAkE;4BAClE,kEAAkE;4BAClE,+DAA+D;4BAC/D,4DAA4D;4BAC5D,MAAM,QAAQ,GAAG;gCACf,+BAA+B,EAAE,gCAAgC;gCACjE,oBAAoB,EAAE,qBAAqB;6BAC5C,CAAC;4BACF,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;4BACvE,6DAA6D;4BAC7D,mEAAmE;4BACnE,+DAA+D;4BAC/D,8DAA8D;4BAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI;gCAC5B,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAW;gCACtD,CAAC,CAAC,MAAM,mBAAmB,CACvB,QAAQ,EACR,QAAQ,CAAC,EAAE,EACX,QAAQ,CAAC,SAAS,EAClB,mCAAmC,CAAC,MAAM,CAAC,SAAS,CAAC,CACtD,CAAC;4BACN,6DAA6D;4BAC7D,oEAAoE;4BACpE,iEAAiE;4BACjE,qCAAqC,CACnC,QAAQ,CAAC,EAAE,EACX,QAAQ,CAAC,IAAI,EACb,CAAC,oBAAoB,IAAI,YAAY,IAAI,YAAY,CAAC,kBAAkB,CAAC,IAAI,KAAK,EAClF,YAAY,CAAC,IAAI,CAClB,CAAC;4BACF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gCACd,MAAM,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;gCAClF,GAAG,CAAC,IAAI,CACN,wBAAwB,QAAQ,CAAC,IAAI,0BAA0B,oBAAoB,CAAC,IAAI,CAAC,IAAI;oCAC7F,6CAA6C,CAC9C,CAAC;4BACJ,CAAC;iCAAM,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC;gCAC7B,GAAG,CAAC,IAAI,CACN,wBAAwB,QAAQ,CAAC,IAAI,0BAA0B,oBAAoB,CAAC,YAAY,CAAC,IAAI;oCACrG,oDAAoD,CACrD,CAAC;4BACJ,CAAC;iCAAM,CAAC;gCACN,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC;gCAC5E,MAAM,qBAAqB,CAAC,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;gCACzK,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC;4BACtC,CAAC;wBACH,CAAC;oBACH,CAAC;oBAED,GAAG,CAAC,IAAI,CACN,sCAAsC,QAAQ,CAAC,IAAI,UAAU,QAAQ,CAAC,eAAe,OAAO,aAAa,IAAI;wBAC7G,CAAC,iBAAiB;4BAChB,CAAC,CAAC,4BAA4B,aAAa,CAAC,MAAM,sBAAsB;4BACxE,CAAC,CAAC,OAAO,UAAU,CAAC,MAAM,qBAAqB,CAAC,CACnD,CAAC;oBACF,wEAAwE;oBACxE,wEAAwE;oBACxE,yEAAyE;oBACzE,sEAAsE;oBACtE,sEAAsE;oBACtE,yEAAyE;oBACzE,uEAAuE;oBACvE,kBAAkB,CAAC,OAAO,CAAC,CAAC;oBAC5B,uEAAuE;oBACvE,wEAAwE;oBACxE,qEAAqE;oBACrE,yEAAyE;oBACzE,wEAAwE;oBACxE,mDAAmD;oBACnD,KAAK,iCAAiC,CACpC,OAAO,EAAE,cAAc,EAAE,YAAY,EACrC,8HAA8H,CAC/H,CAAC,KAAK,CAAC,GAAG,EAAE,GAA4C,CAAC,CAAC,CAAC;gBAC9D,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,IAAI,CACN,8DAA8D,QAAQ,CAAC,IAAI,IAAI,EAC9E,GAAa,CAAC,OAAO,CACvB,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CACN,iEAAiE,OAAO,GAAG,EAC1E,GAAa,CAAC,OAAO,CACvB,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAeD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAoB,EACpB,OAAmC,EAAE;IAErC,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC;IACpE,MAAM,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,IAAI,kBAAkB,CAAC;IAC1E,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,CAAC;IACvE,MAAM,uBAAuB,GAAG,IAAI,CAAC,sBAAsB,IAAI,sBAAsB,CAAC;IACtF,MAAM,qBAAqB,GAAG,IAAI,CAAC,oBAAoB,IAAI,oBAAoB,CAAC;IAEhF,IAAI,aAAa,CAAC;IAClB,IAAI,CAAC;QACH,aAAa,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IACnF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,6CAA6C,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QAChF,OAAO;IACT,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;QAClC,IAAI,UAAU,CAAC;QACf,IAAI,CAAC;YACH,UAAU,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,oDAAoD,KAAK,CAAC,QAAQ,GAAG,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YACxG,SAAS;QACX,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;YAClC,2DAA2D;YAC3D,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,EAAE,CAAC,KAAK,sBAAsB;gBAAE,SAAS;YAE1E,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACrD,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;gBAEzF,yEAAyE;gBACzE,qEAAqE;gBACrE,uEAAuE;gBACvE,MAAM,QAAQ,GAAG,sBAAsB,CAAC,EAAE,KAAK,EAAE,uBAAuB,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;gBAC9F,IAAI,QAAQ,CAAC,MAAM,KAAK,sBAAsB;oBAAE,SAAS,CAAC,qBAAqB;gBAE/E,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAC5D,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACpE,wEAAwE;gBACxE,4EAA4E;gBAC5E,MAAM,qBAAqB,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,UAAU,EAAE,sBAAsB,EAAE,CAAC,CAAC;gBAC1K,GAAG,CAAC,IAAI,CACN,oCAAoC,QAAQ,CAAC,IAAI,aAAa,sBAAsB,OAAO,QAAQ,CAAC,MAAM,GAAG;oBAC7G,0BAA0B,CAC3B,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,IAAI,CAAC,2CAA2C,QAAQ,CAAC,IAAI,IAAI,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YACjG,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"listener-auto-advance.js","sourceRoot":"","sources":["../../src/focus/listener-auto-advance.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"listener-spawn.d.ts","sourceRoot":"","sources":["../../src/focus/listener-spawn.ts"],"names":[],"mappings":"AAmCA,OAAO,EAA2D,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAQ5H,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACtF,OAAO,EAAkD,KAAK,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAOlJ,OAAO,EAAiC,KAAK,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAEtG,OAAO,EAAmC,KAAK,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AA+ExH;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,GAAE,kBAA0C,GAAG,OAAO,CAAC,IAAI,CAAC,CA4KzG;AAuDD;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,YAAY,EAAE,aAAa,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,GAChD,GAAG,CAAC,MAAM,CAAC,CAuBb;AAED;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAC/C,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAAC,GACxC,OAAO,CAQT;AAeD;;;;;;GAMG;AACH,wBAAsB,iCAAiC,CACrD,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAC/C,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,OAAO,CAAC,CAGlB;AA8BD;;;;;;GAMG;AACH,wBAAsB,mCAAmC,CACvD,KAAK,EAAE,cAAc,EACrB,IAAI,GAAE,6BAAkC,GACvC,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACxF,OAAO,CAUT;AAkCD;;;;;;;;;GASG;AACH,wBAAsB,gCAAgC,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,CAItH;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,GAAE,oBAA8C,GAAG,OAAO,CAAC,IAAI,CAAC,CAG7G;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,0BAA0B,CAAC,IAAI,GAAE,oBAA8C,GAAG,OAAO,CAAC,IAAI,CAAC,CAiNpH"}
1
+ {"version":3,"file":"listener-spawn.d.ts","sourceRoot":"","sources":["../../src/focus/listener-spawn.ts"],"names":[],"mappings":"AAoCA,OAAO,EAA2D,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAQ5H,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACtF,OAAO,EAAkD,KAAK,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAOlJ,OAAO,EAAiC,KAAK,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAEtG,OAAO,EAAmC,KAAK,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAiExH;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,GAAE,kBAA0C,GAAG,OAAO,CAAC,IAAI,CAAC,CAuKzG;AAuDD;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,YAAY,EAAE,aAAa,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,GAChD,GAAG,CAAC,MAAM,CAAC,CAuBb;AAED;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAC/C,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAAC,GACxC,OAAO,CAQT;AAeD;;;;;;GAMG;AACH,wBAAsB,iCAAiC,CACrD,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAC/C,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,OAAO,CAAC,CAGlB;AA8BD;;;;;;GAMG;AACH,wBAAsB,mCAAmC,CACvD,KAAK,EAAE,cAAc,EACrB,IAAI,GAAE,6BAAkC,GACvC,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACxF,OAAO,CAUT;AAkCD;;;;;;;;;GASG;AACH,wBAAsB,gCAAgC,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,CAItH;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,GAAE,oBAA8C,GAAG,OAAO,CAAC,IAAI,CAAC,CAG7G;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,0BAA0B,CAAC,IAAI,GAAE,oBAA8C,GAAG,OAAO,CAAC,IAAI,CAAC,CAiNpH"}
@@ -1,7 +1,7 @@
1
1
  // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
- // Pinned by: 21 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/focus/listener-spawn.ts
2
+ // Pinned by: 22 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/focus/listener-spawn.ts
3
3
  // PINNED-BY-END
4
- import { decideFocusSpawn } from './focus-spawn-decision.js';
4
+ import { resolveReadyFocusSpawnAction } from './ready-focus-spawn-action.js';
5
5
  import { config, roles, pollState, idleLoggedFocuses, nullRoleSkipWarnedFocuses, lastRolesRefreshAt, healthCheckConsecutiveFailures, POLL_INTERVAL_MS, ROLES_REFRESH_INTERVAL_MS, setPollState, setLastRolesRefreshAt, setLastReadyFocusCount, } from './listener-state.js';
6
6
  import { getAgentRoles } from '../queries/roles.js';
7
7
  import { hasActiveTeam, getActiveTeamCount, getActiveTeams } from './focus-executor.js';
@@ -28,6 +28,20 @@ import { startEscalationSpoolDrain } from '../queries/escalation-spool.js';
28
28
  import { recordFiring, classifyLatestUnclassifiedFiring, isMechanismDemoted, markLatestFiringUnacted, SUPERVISION_MECHANISM } from '../completion/supervision-firing-record.js';
29
29
  import { createLogger } from '../shell/log.js';
30
30
  const log = createLogger({ module: 'listener' });
31
+ /**
32
+ * The spawn-gate skips the ready pass logs at debug and passes over, re-read live
33
+ * each poll (no cooldown penalty; the focus stays in the ready count, so
34
+ * telemetry is honest):
35
+ * - skip_no_work: surfaced by status, but no open work issue and nothing to
36
+ * scope (a finished delivery waits on the daemon's advance, not on a team).
37
+ * - skip_held: held by an in-flight verify (a team would find nothing to commit
38
+ * and terminate); spawnable the cycle after the hold clears (AC5). debug so a
39
+ * multi-minute verify does not spin-log at info.
40
+ */
41
+ const QUIET_SKIP_LOG = {
42
+ skip_no_work: 'has no open team work; not spawning',
43
+ skip_held: 'held by an in-flight verify; deferring spawn',
44
+ };
31
45
  /**
32
46
  * Refresh the in-memory agent-role cache when it is older than the refresh
33
47
  * interval, so mid-run role changes are picked up. Best-effort: a fetch failure
@@ -50,26 +64,6 @@ async function refreshAgentRolesIfStale(organizationId) {
50
64
  log.warn(`Failed to refresh agent roles: ${err.message}`);
51
65
  }
52
66
  }
53
- /**
54
- * Resolve one ready focus's spawn-gate action from live state (decideFocusSpawn
55
- * is the pure decision). The capacity input is the LIVE team count sampled at
56
- * this focus's turn, so a spawn earlier in the pass is reflected for the next
57
- * focus. The review-cycle cap hold is read only for a focus with no team (the
58
- * pass's reader, one count read per product). Extracted from processReadyFocuses
59
- * to keep it under its size floor.
60
- */
61
- async function resolveReadyFocusSpawnAction(focus, role, deps, cfg, readCapHold) {
62
- const focusId = focus.focus_id;
63
- return decideFocusSpawn({
64
- hasRole: role !== undefined,
65
- hasActiveTeam: hasActiveTeam(focusId),
66
- reviewCycleCapHeld: !hasActiveTeam(focusId) && await readCapHold(focus),
67
- ...(await deps.resolveFocusVerifyHoldFacts(focusId)),
68
- inSpawnCooldown: await isNextSpawnInCooldown(cfg, focus),
69
- activeTeamCount: getActiveTeamCount(),
70
- maxTotalSessions: cfg.maxTotalSessions,
71
- });
72
- }
73
67
  /**
74
68
  * Record the focuses a spawn pass left without a team ONLY because every session
75
69
  * slot is in use (focus/awaiting-slot.ts, published as awaiting_slot), replacing
@@ -158,13 +152,8 @@ export async function processReadyFocuses(deps = READY_FOCUS_PASS_DEPS) {
158
152
  log.error(`Unknown agent role: ${focus.assigned_agent_role_id}`);
159
153
  continue;
160
154
  }
161
- if (action === 'skip_held') {
162
- // Held by an in-flight verify: defer without a spawn (a team would find
163
- // nothing to commit and terminate). Re-read live each poll, so it is
164
- // spawnable again the cycle after the hold clears -- no cooldown penalty
165
- // (AC5). Stays in the ready count (already recorded) so telemetry is
166
- // honest. debug-level so a multi-minute verify does not spin-log at info.
167
- log.debug(`Focus "${focus.focus_name}" held by an in-flight verify; deferring spawn`);
155
+ if (action === 'skip_no_work' || action === 'skip_held') {
156
+ log.debug(`Focus "${focus.focus_name}" ${QUIET_SKIP_LOG[action]}`);
168
157
  continue;
169
158
  }
170
159
  if (action === 'skip_active_team') {