@telora/daemon 0.22.104 → 0.22.132

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 (482) hide show
  1. package/build-info.json +4 -3
  2. package/dist/completion/commit-verdict-release.d.ts +49 -0
  3. package/dist/completion/commit-verdict-release.d.ts.map +1 -0
  4. package/dist/completion/commit-verdict-release.js +240 -0
  5. package/dist/completion/commit-verdict-release.js.map +1 -0
  6. package/dist/completion/completion-phase-registry.d.ts +10 -4
  7. package/dist/completion/completion-phase-registry.d.ts.map +1 -1
  8. package/dist/completion/completion-phase-registry.js +19 -7
  9. package/dist/completion/completion-phase-registry.js.map +1 -1
  10. package/dist/completion/detector.d.ts.map +1 -1
  11. package/dist/completion/detector.js +1 -0
  12. package/dist/completion/detector.js.map +1 -1
  13. package/dist/completion/event-entry-phases.d.ts +6 -3
  14. package/dist/completion/event-entry-phases.d.ts.map +1 -1
  15. package/dist/completion/event-entry-phases.js +135 -76
  16. package/dist/completion/event-entry-phases.js.map +1 -1
  17. package/dist/completion/event-phases.d.ts +24 -3
  18. package/dist/completion/event-phases.d.ts.map +1 -1
  19. package/dist/completion/event-phases.js +9 -9
  20. package/dist/completion/event-phases.js.map +1 -1
  21. package/dist/completion/event.d.ts +8 -0
  22. package/dist/completion/event.d.ts.map +1 -1
  23. package/dist/completion/event.js +47 -21
  24. package/dist/completion/event.js.map +1 -1
  25. package/dist/completion/exit-classification.d.ts.map +1 -1
  26. package/dist/completion/exit-classification.js +1 -0
  27. package/dist/completion/exit-classification.js.map +1 -1
  28. package/dist/completion/merge-phase.d.ts +21 -9
  29. package/dist/completion/merge-phase.d.ts.map +1 -1
  30. package/dist/completion/merge-phase.js +35 -10
  31. package/dist/completion/merge-phase.js.map +1 -1
  32. package/dist/completion/review-auto-approval-record.d.ts +19 -0
  33. package/dist/completion/review-auto-approval-record.d.ts.map +1 -0
  34. package/dist/completion/review-auto-approval-record.js +102 -0
  35. package/dist/completion/review-auto-approval-record.js.map +1 -0
  36. package/dist/completion/review-cycle-cap.d.ts +62 -0
  37. package/dist/completion/review-cycle-cap.d.ts.map +1 -0
  38. package/dist/completion/review-cycle-cap.js +180 -0
  39. package/dist/completion/review-cycle-cap.js.map +1 -0
  40. package/dist/completion/review-exit-deps.d.ts +17 -2
  41. package/dist/completion/review-exit-deps.d.ts.map +1 -1
  42. package/dist/completion/review-exit-deps.js +19 -2
  43. package/dist/completion/review-exit-deps.js.map +1 -1
  44. package/dist/completion/review-exit-escalations.d.ts +45 -23
  45. package/dist/completion/review-exit-escalations.d.ts.map +1 -1
  46. package/dist/completion/review-exit-escalations.js +15 -74
  47. package/dist/completion/review-exit-escalations.js.map +1 -1
  48. package/dist/completion/review-exit-evidence.d.ts +9 -0
  49. package/dist/completion/review-exit-evidence.d.ts.map +1 -1
  50. package/dist/completion/review-exit-evidence.js +4 -1
  51. package/dist/completion/review-exit-evidence.js.map +1 -1
  52. package/dist/completion/review-exit-foreign-findings.d.ts +151 -0
  53. package/dist/completion/review-exit-foreign-findings.d.ts.map +1 -0
  54. package/dist/completion/review-exit-foreign-findings.js +474 -0
  55. package/dist/completion/review-exit-foreign-findings.js.map +1 -0
  56. package/dist/completion/review-exit-phase.d.ts.map +1 -1
  57. package/dist/completion/review-exit-phase.js +71 -64
  58. package/dist/completion/review-exit-phase.js.map +1 -1
  59. package/dist/completion/review-exit-progress.d.ts +20 -0
  60. package/dist/completion/review-exit-progress.d.ts.map +1 -1
  61. package/dist/completion/review-exit-progress.js +28 -19
  62. package/dist/completion/review-exit-progress.js.map +1 -1
  63. package/dist/completion/review-exit-rehoming.d.ts +5 -0
  64. package/dist/completion/review-exit-rehoming.d.ts.map +1 -1
  65. package/dist/completion/review-exit-rehoming.js.map +1 -1
  66. package/dist/completion/review-exit-verdict-gate.d.ts +202 -0
  67. package/dist/completion/review-exit-verdict-gate.d.ts.map +1 -0
  68. package/dist/completion/review-exit-verdict-gate.js +228 -0
  69. package/dist/completion/review-exit-verdict-gate.js.map +1 -0
  70. package/dist/completion/review-next-step.d.ts +62 -0
  71. package/dist/completion/review-next-step.d.ts.map +1 -0
  72. package/dist/completion/review-next-step.js +63 -0
  73. package/dist/completion/review-next-step.js.map +1 -0
  74. package/dist/completion/session-hold-sweep-deps.d.ts +17 -0
  75. package/dist/completion/session-hold-sweep-deps.d.ts.map +1 -0
  76. package/dist/completion/session-hold-sweep-deps.js +89 -0
  77. package/dist/completion/session-hold-sweep-deps.js.map +1 -0
  78. package/dist/completion/session-hold.d.ts +180 -0
  79. package/dist/completion/session-hold.d.ts.map +1 -0
  80. package/dist/completion/session-hold.js +238 -0
  81. package/dist/completion/session-hold.js.map +1 -0
  82. package/dist/completion/state-cascade.d.ts +19 -0
  83. package/dist/completion/state-cascade.d.ts.map +1 -1
  84. package/dist/completion/state-cascade.js +85 -31
  85. package/dist/completion/state-cascade.js.map +1 -1
  86. package/dist/completion/team-lifecycle.d.ts +35 -2
  87. package/dist/completion/team-lifecycle.d.ts.map +1 -1
  88. package/dist/completion/team-lifecycle.js +165 -94
  89. package/dist/completion/team-lifecycle.js.map +1 -1
  90. package/dist/completion/team-phase.d.ts +27 -15
  91. package/dist/completion/team-phase.d.ts.map +1 -1
  92. package/dist/completion/team-phase.js +34 -15
  93. package/dist/completion/team-phase.js.map +1 -1
  94. package/dist/delivery/commit-verdict-hold.d.ts +55 -0
  95. package/dist/delivery/commit-verdict-hold.d.ts.map +1 -0
  96. package/dist/delivery/commit-verdict-hold.js +118 -0
  97. package/dist/delivery/commit-verdict-hold.js.map +1 -0
  98. package/dist/directive/directive-dispatch.d.ts.map +1 -1
  99. package/dist/directive/directive-dispatch.js +10 -3
  100. package/dist/directive/directive-dispatch.js.map +1 -1
  101. package/dist/directive/directive-executor.d.ts.map +1 -1
  102. package/dist/directive/directive-executor.js +1 -0
  103. package/dist/directive/directive-executor.js.map +1 -1
  104. package/dist/directive/directive-queue.d.ts.map +1 -1
  105. package/dist/directive/directive-queue.js +6 -1
  106. package/dist/directive/directive-queue.js.map +1 -1
  107. package/dist/directive/phase-sync.d.ts +29 -2
  108. package/dist/directive/phase-sync.d.ts.map +1 -1
  109. package/dist/directive/phase-sync.js +30 -6
  110. package/dist/directive/phase-sync.js.map +1 -1
  111. package/dist/drift/artifact-ref-shape.d.ts +34 -0
  112. package/dist/drift/artifact-ref-shape.d.ts.map +1 -0
  113. package/dist/drift/artifact-ref-shape.js +94 -0
  114. package/dist/drift/artifact-ref-shape.js.map +1 -0
  115. package/dist/drift/drift-eval-loop.d.ts +7 -0
  116. package/dist/drift/drift-eval-loop.d.ts.map +1 -1
  117. package/dist/drift/drift-eval-loop.js +34 -5
  118. package/dist/drift/drift-eval-loop.js.map +1 -1
  119. package/dist/drift/drift-evaluator.d.ts.map +1 -1
  120. package/dist/drift/drift-evaluator.js +8 -3
  121. package/dist/drift/drift-evaluator.js.map +1 -1
  122. package/dist/focus/awaiting-slot.d.ts +34 -0
  123. package/dist/focus/awaiting-slot.d.ts.map +1 -0
  124. package/dist/focus/awaiting-slot.js +26 -0
  125. package/dist/focus/awaiting-slot.js.map +1 -0
  126. package/dist/focus/focus-lifecycle.js +2 -2
  127. package/dist/focus/focus-lifecycle.js.map +1 -1
  128. package/dist/focus/focus-phase.d.ts.map +1 -1
  129. package/dist/focus/focus-phase.js +3 -1
  130. package/dist/focus/focus-phase.js.map +1 -1
  131. package/dist/focus/focus-spawn-decision.d.ts +62 -0
  132. package/dist/focus/focus-spawn-decision.d.ts.map +1 -0
  133. package/dist/focus/focus-spawn-decision.js +41 -0
  134. package/dist/focus/focus-spawn-decision.js.map +1 -0
  135. package/dist/focus/focus-team-state.d.ts.map +1 -1
  136. package/dist/focus/focus-team-state.js +1 -13
  137. package/dist/focus/focus-team-state.js.map +1 -1
  138. package/dist/focus/listener-spawn.d.ts +16 -55
  139. package/dist/focus/listener-spawn.d.ts.map +1 -1
  140. package/dist/focus/listener-spawn.js +102 -64
  141. package/dist/focus/listener-spawn.js.map +1 -1
  142. package/dist/focus/listener-state.d.ts.map +1 -1
  143. package/dist/focus/listener-state.js +4 -1
  144. package/dist/focus/listener-state.js.map +1 -1
  145. package/dist/focus/listener.d.ts +41 -2
  146. package/dist/focus/listener.d.ts.map +1 -1
  147. package/dist/focus/listener.js +135 -83
  148. package/dist/focus/listener.js.map +1 -1
  149. package/dist/focus/pending-spawn-pass-deps.d.ts +69 -0
  150. package/dist/focus/pending-spawn-pass-deps.d.ts.map +1 -0
  151. package/dist/focus/pending-spawn-pass-deps.js +34 -0
  152. package/dist/focus/pending-spawn-pass-deps.js.map +1 -0
  153. package/dist/focus/pending-spawn-review-next-step.d.ts +83 -0
  154. package/dist/focus/pending-spawn-review-next-step.d.ts.map +1 -0
  155. package/dist/focus/pending-spawn-review-next-step.js +325 -0
  156. package/dist/focus/pending-spawn-review-next-step.js.map +1 -0
  157. package/dist/focus/review-cycle-cap-hold.d.ts +132 -0
  158. package/dist/focus/review-cycle-cap-hold.d.ts.map +1 -0
  159. package/dist/focus/review-cycle-cap-hold.js +178 -0
  160. package/dist/focus/review-cycle-cap-hold.js.map +1 -0
  161. package/dist/focus/team-actionable-work.js +2 -2
  162. package/dist/focus/verify-open-issues.d.ts +22 -0
  163. package/dist/focus/verify-open-issues.d.ts.map +1 -1
  164. package/dist/focus/verify-open-issues.js +118 -57
  165. package/dist/focus/verify-open-issues.js.map +1 -1
  166. package/dist/focus/verify-routing-passes.d.ts +32 -0
  167. package/dist/focus/verify-routing-passes.d.ts.map +1 -0
  168. package/dist/focus/verify-routing-passes.js +18 -0
  169. package/dist/focus/verify-routing-passes.js.map +1 -0
  170. package/dist/git/index.d.ts.map +1 -1
  171. package/dist/git/index.js +9 -5
  172. package/dist/git/index.js.map +1 -1
  173. package/dist/merge/focus-merge.d.ts +16 -2
  174. package/dist/merge/focus-merge.d.ts.map +1 -1
  175. package/dist/merge/focus-merge.js +53 -30
  176. package/dist/merge/focus-merge.js.map +1 -1
  177. package/dist/merge/merge-back-loop.d.ts +5 -0
  178. package/dist/merge/merge-back-loop.d.ts.map +1 -1
  179. package/dist/merge/merge-back-loop.js +17 -8
  180. package/dist/merge/merge-back-loop.js.map +1 -1
  181. package/dist/merge/merge-gate-coverage.d.ts +94 -0
  182. package/dist/merge/merge-gate-coverage.d.ts.map +1 -0
  183. package/dist/merge/merge-gate-coverage.js +217 -0
  184. package/dist/merge/merge-gate-coverage.js.map +1 -0
  185. package/dist/prompt/focus-prompt-builder.d.ts.map +1 -1
  186. package/dist/prompt/focus-prompt-builder.js +6 -0
  187. package/dist/prompt/focus-prompt-builder.js.map +1 -1
  188. package/dist/prompt/prompt-listing.d.ts.map +1 -1
  189. package/dist/prompt/prompt-listing.js +8 -0
  190. package/dist/prompt/prompt-listing.js.map +1 -1
  191. package/dist/prompt/team-prompt-base.d.ts.map +1 -1
  192. package/dist/prompt/team-prompt-base.js +5 -1
  193. package/dist/prompt/team-prompt-base.js.map +1 -1
  194. package/dist/prompt-sections/execution-sections.d.ts.map +1 -1
  195. package/dist/prompt-sections/execution-sections.js +14 -39
  196. package/dist/prompt-sections/execution-sections.js.map +1 -1
  197. package/dist/prompt-sections/gate-ownership.d.ts +36 -0
  198. package/dist/prompt-sections/gate-ownership.d.ts.map +1 -0
  199. package/dist/prompt-sections/gate-ownership.js +68 -0
  200. package/dist/prompt-sections/gate-ownership.js.map +1 -0
  201. package/dist/prompt-sections/gate-verdict-section.d.ts +58 -0
  202. package/dist/prompt-sections/gate-verdict-section.d.ts.map +1 -0
  203. package/dist/prompt-sections/gate-verdict-section.js +88 -0
  204. package/dist/prompt-sections/gate-verdict-section.js.map +1 -0
  205. package/dist/prompt-sections/persona-sections.d.ts +10 -0
  206. package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
  207. package/dist/prompt-sections/persona-sections.js +35 -11
  208. package/dist/prompt-sections/persona-sections.js.map +1 -1
  209. package/dist/prompt-sections/shared.js +1 -1
  210. package/dist/prompt-sections/shared.js.map +1 -1
  211. package/dist/queries/agent-resolvable-promotion.d.ts +6 -3
  212. package/dist/queries/agent-resolvable-promotion.d.ts.map +1 -1
  213. package/dist/queries/agent-resolvable-promotion.js +20 -9
  214. package/dist/queries/agent-resolvable-promotion.js.map +1 -1
  215. package/dist/queries/deliveries.d.ts +46 -4
  216. package/dist/queries/deliveries.d.ts.map +1 -1
  217. package/dist/queries/deliveries.js +69 -16
  218. package/dist/queries/deliveries.js.map +1 -1
  219. package/dist/queries/delivery-gate-state.d.ts +151 -1
  220. package/dist/queries/delivery-gate-state.d.ts.map +1 -1
  221. package/dist/queries/delivery-gate-state.js +95 -14
  222. package/dist/queries/delivery-gate-state.js.map +1 -1
  223. package/dist/queries/delivery-write-discipline.d.ts +65 -0
  224. package/dist/queries/delivery-write-discipline.d.ts.map +1 -0
  225. package/dist/queries/delivery-write-discipline.js +101 -0
  226. package/dist/queries/delivery-write-discipline.js.map +1 -0
  227. package/dist/queries/escalation-consumption.d.ts +11 -0
  228. package/dist/queries/escalation-consumption.d.ts.map +1 -1
  229. package/dist/queries/escalation-consumption.js +22 -0
  230. package/dist/queries/escalation-consumption.js.map +1 -1
  231. package/dist/queries/escalation-spool.d.ts +75 -0
  232. package/dist/queries/escalation-spool.d.ts.map +1 -0
  233. package/dist/queries/escalation-spool.js +232 -0
  234. package/dist/queries/escalation-spool.js.map +1 -0
  235. package/dist/queries/escalation-suppression.d.ts.map +1 -1
  236. package/dist/queries/escalation-suppression.js +2 -0
  237. package/dist/queries/escalation-suppression.js.map +1 -1
  238. package/dist/queries/escalations.js +1 -1
  239. package/dist/queries/filing-observation.d.ts.map +1 -1
  240. package/dist/queries/filing-observation.js +2 -0
  241. package/dist/queries/filing-observation.js.map +1 -1
  242. package/dist/queries/focus-discovery.d.ts +4 -4
  243. package/dist/queries/focus-discovery.d.ts.map +1 -1
  244. package/dist/queries/focus-discovery.js +1 -0
  245. package/dist/queries/focus-discovery.js.map +1 -1
  246. package/dist/queries/focus-review-approval.d.ts +84 -0
  247. package/dist/queries/focus-review-approval.d.ts.map +1 -0
  248. package/dist/queries/focus-review-approval.js +158 -0
  249. package/dist/queries/focus-review-approval.js.map +1 -0
  250. package/dist/queries/focuses.d.ts +6 -5
  251. package/dist/queries/focuses.d.ts.map +1 -1
  252. package/dist/queries/focuses.js +9 -5
  253. package/dist/queries/focuses.js.map +1 -1
  254. package/dist/queries/incident-correlation.d.ts +5 -4
  255. package/dist/queries/incident-correlation.d.ts.map +1 -1
  256. package/dist/queries/incident-correlation.js +11 -5
  257. package/dist/queries/incident-correlation.js.map +1 -1
  258. package/dist/queries/issues.d.ts.map +1 -1
  259. package/dist/queries/issues.js +2 -1
  260. package/dist/queries/issues.js.map +1 -1
  261. package/dist/queries/loop-refusal-observation.d.ts +64 -0
  262. package/dist/queries/loop-refusal-observation.d.ts.map +1 -0
  263. package/dist/queries/loop-refusal-observation.js +137 -0
  264. package/dist/queries/loop-refusal-observation.js.map +1 -0
  265. package/dist/queries/schemas.d.ts +9 -0
  266. package/dist/queries/schemas.d.ts.map +1 -1
  267. package/dist/queries/schemas.js +11 -3
  268. package/dist/queries/schemas.js.map +1 -1
  269. package/dist/queries/shared.js +1 -1
  270. package/dist/queries/verification.d.ts.map +1 -1
  271. package/dist/queries/verification.js +1 -15
  272. package/dist/queries/verification.js.map +1 -1
  273. package/dist/queries/wire-contract.generated.d.ts +3 -0
  274. package/dist/queries/wire-contract.generated.d.ts.map +1 -1
  275. package/dist/queries/wire-contract.generated.js +3 -0
  276. package/dist/queries/wire-contract.generated.js.map +1 -1
  277. package/dist/resolvers/assembly-engine.d.ts.map +1 -1
  278. package/dist/resolvers/assembly-engine.js +3 -1
  279. package/dist/resolvers/assembly-engine.js.map +1 -1
  280. package/dist/resolvers/git-diff-against-base.d.ts +5 -2
  281. package/dist/resolvers/git-diff-against-base.d.ts.map +1 -1
  282. package/dist/resolvers/git-diff-against-base.js +121 -39
  283. package/dist/resolvers/git-diff-against-base.js.map +1 -1
  284. package/dist/resolvers/shared/git-diff.d.ts +2 -0
  285. package/dist/resolvers/shared/git-diff.d.ts.map +1 -1
  286. package/dist/resolvers/shared/git-diff.js +5 -1
  287. package/dist/resolvers/shared/git-diff.js.map +1 -1
  288. package/dist/resolvers/shared/review-window-commits.d.ts +96 -0
  289. package/dist/resolvers/shared/review-window-commits.d.ts.map +1 -0
  290. package/dist/resolvers/shared/review-window-commits.js +262 -0
  291. package/dist/resolvers/shared/review-window-commits.js.map +1 -0
  292. package/dist/session/session-lineage.d.ts.map +1 -1
  293. package/dist/session/session-lineage.js +4 -1
  294. package/dist/session/session-lineage.js.map +1 -1
  295. package/dist/shell/fail-stop.d.ts +18 -0
  296. package/dist/shell/fail-stop.d.ts.map +1 -0
  297. package/dist/shell/fail-stop.js +53 -0
  298. package/dist/shell/fail-stop.js.map +1 -0
  299. package/dist/shell/graceful-shutdown.d.ts +48 -0
  300. package/dist/shell/graceful-shutdown.d.ts.map +1 -0
  301. package/dist/shell/graceful-shutdown.js +152 -0
  302. package/dist/shell/graceful-shutdown.js.map +1 -0
  303. package/dist/shell/heartbeat.d.ts.map +1 -1
  304. package/dist/shell/heartbeat.js +5 -4
  305. package/dist/shell/heartbeat.js.map +1 -1
  306. package/dist/shell/log.d.ts.map +1 -1
  307. package/dist/shell/log.js +4 -1
  308. package/dist/shell/log.js.map +1 -1
  309. package/dist/shell/stop-request.d.ts.map +1 -1
  310. package/dist/shell/stop-request.js +2 -1
  311. package/dist/shell/stop-request.js.map +1 -1
  312. package/dist/shell/unified-shell.d.ts.map +1 -1
  313. package/dist/shell/unified-shell.js +41 -114
  314. package/dist/shell/unified-shell.js.map +1 -1
  315. package/dist/spawn/lifecycle.d.ts +12 -0
  316. package/dist/spawn/lifecycle.d.ts.map +1 -1
  317. package/dist/spawn/lifecycle.js +25 -21
  318. package/dist/spawn/lifecycle.js.map +1 -1
  319. package/dist/spawn/prompt-assembly.d.ts +19 -1
  320. package/dist/spawn/prompt-assembly.d.ts.map +1 -1
  321. package/dist/spawn/prompt-assembly.js +70 -21
  322. package/dist/spawn/prompt-assembly.js.map +1 -1
  323. package/dist/spawn/review-hold-park.d.ts.map +1 -1
  324. package/dist/spawn/review-hold-park.js +18 -8
  325. package/dist/spawn/review-hold-park.js.map +1 -1
  326. package/dist/spawn/spawn-cooldown.d.ts.map +1 -1
  327. package/dist/spawn/spawn-cooldown.js +4 -0
  328. package/dist/spawn/spawn-cooldown.js.map +1 -1
  329. package/dist/spawn/spawn-decision.d.ts.map +1 -1
  330. package/dist/spawn/spawn-decision.js +2 -1
  331. package/dist/spawn/spawn-decision.js.map +1 -1
  332. package/dist/spawn/worktree-session.d.ts +6 -0
  333. package/dist/spawn/worktree-session.d.ts.map +1 -1
  334. package/dist/spawn/worktree-session.js +15 -2
  335. package/dist/spawn/worktree-session.js.map +1 -1
  336. package/dist/testing/fixtures/index.d.ts +10 -1
  337. package/dist/testing/fixtures/index.d.ts.map +1 -1
  338. package/dist/testing/fixtures/index.js +59 -1
  339. package/dist/testing/fixtures/index.js.map +1 -1
  340. package/dist/testing/fixtures/pending-spawn-world.d.ts +34 -0
  341. package/dist/testing/fixtures/pending-spawn-world.d.ts.map +1 -0
  342. package/dist/testing/fixtures/pending-spawn-world.js +92 -0
  343. package/dist/testing/fixtures/pending-spawn-world.js.map +1 -0
  344. package/dist/types/index.js +1 -1
  345. package/dist/verify/commit-gate-configured.d.ts +86 -0
  346. package/dist/verify/commit-gate-configured.d.ts.map +1 -0
  347. package/dist/verify/commit-gate-configured.js +234 -0
  348. package/dist/verify/commit-gate-configured.js.map +1 -0
  349. package/dist/verify/commit-verdict-record.d.ts +98 -0
  350. package/dist/verify/commit-verdict-record.d.ts.map +1 -0
  351. package/dist/verify/commit-verdict-record.js +297 -0
  352. package/dist/verify/commit-verdict-record.js.map +1 -0
  353. package/dist/verify/explicit-gate-outcome.d.ts +161 -0
  354. package/dist/verify/explicit-gate-outcome.d.ts.map +1 -0
  355. package/dist/verify/explicit-gate-outcome.js +215 -0
  356. package/dist/verify/explicit-gate-outcome.js.map +1 -0
  357. package/dist/verify/explicit-rearm.d.ts +27 -0
  358. package/dist/verify/explicit-rearm.d.ts.map +1 -0
  359. package/dist/verify/explicit-rearm.js +161 -0
  360. package/dist/verify/explicit-rearm.js.map +1 -0
  361. package/dist/verify/explicit-run-ledger.d.ts +26 -0
  362. package/dist/verify/explicit-run-ledger.d.ts.map +1 -0
  363. package/dist/verify/explicit-run-ledger.js +93 -0
  364. package/dist/verify/explicit-run-ledger.js.map +1 -0
  365. package/dist/verify/failure-signature.d.ts.map +1 -1
  366. package/dist/verify/failure-signature.js +5 -1
  367. package/dist/verify/failure-signature.js.map +1 -1
  368. package/dist/verify/gate-run-registry.d.ts +105 -0
  369. package/dist/verify/gate-run-registry.d.ts.map +1 -0
  370. package/dist/verify/gate-run-registry.js +111 -0
  371. package/dist/verify/gate-run-registry.js.map +1 -0
  372. package/dist/verify/gate-verdict-source.d.ts +68 -0
  373. package/dist/verify/gate-verdict-source.d.ts.map +1 -0
  374. package/dist/verify/gate-verdict-source.js +143 -0
  375. package/dist/verify/gate-verdict-source.js.map +1 -0
  376. package/dist/verify/judged-commit-gate.d.ts +11 -0
  377. package/dist/verify/judged-commit-gate.d.ts.map +1 -0
  378. package/dist/verify/judged-commit-gate.js +48 -0
  379. package/dist/verify/judged-commit-gate.js.map +1 -0
  380. package/dist/verify/rework-judgment.d.ts +58 -0
  381. package/dist/verify/rework-judgment.d.ts.map +1 -0
  382. package/dist/verify/rework-judgment.js +54 -0
  383. package/dist/verify/rework-judgment.js.map +1 -0
  384. package/dist/verify/verification-attribution.d.ts +105 -0
  385. package/dist/verify/verification-attribution.d.ts.map +1 -0
  386. package/dist/verify/verification-attribution.js +322 -0
  387. package/dist/verify/verification-attribution.js.map +1 -0
  388. package/dist/verify/verification-baseline-run.d.ts +123 -0
  389. package/dist/verify/verification-baseline-run.d.ts.map +1 -0
  390. package/dist/verify/verification-baseline-run.js +386 -0
  391. package/dist/verify/verification-baseline-run.js.map +1 -0
  392. package/dist/verify/verification-baseline.d.ts +79 -33
  393. package/dist/verify/verification-baseline.d.ts.map +1 -1
  394. package/dist/verify/verification-baseline.js +99 -106
  395. package/dist/verify/verification-baseline.js.map +1 -1
  396. package/dist/verify/verification-checkout.d.ts +13 -0
  397. package/dist/verify/verification-checkout.d.ts.map +1 -1
  398. package/dist/verify/verification-checkout.js +39 -2
  399. package/dist/verify/verification-checkout.js.map +1 -1
  400. package/dist/verify/verification-commit-sharing.d.ts +84 -0
  401. package/dist/verify/verification-commit-sharing.d.ts.map +1 -0
  402. package/dist/verify/verification-commit-sharing.js +416 -0
  403. package/dist/verify/verification-commit-sharing.js.map +1 -0
  404. package/dist/verify/verification-config.d.ts.map +1 -1
  405. package/dist/verify/verification-config.js +12 -2
  406. package/dist/verify/verification-config.js.map +1 -1
  407. package/dist/verify/verification-default-on.d.ts +27 -11
  408. package/dist/verify/verification-default-on.d.ts.map +1 -1
  409. package/dist/verify/verification-default-on.js +159 -29
  410. package/dist/verify/verification-default-on.js.map +1 -1
  411. package/dist/verify/verification-deps-default.d.ts.map +1 -1
  412. package/dist/verify/verification-deps-default.js +49 -42
  413. package/dist/verify/verification-deps-default.js.map +1 -1
  414. package/dist/verify/verification-deps.d.ts +69 -4
  415. package/dist/verify/verification-deps.d.ts.map +1 -1
  416. package/dist/verify/verification-deterministic.d.ts +15 -2
  417. package/dist/verify/verification-deterministic.d.ts.map +1 -1
  418. package/dist/verify/verification-deterministic.js +12 -3
  419. package/dist/verify/verification-deterministic.js.map +1 -1
  420. package/dist/verify/verification-diagnostics.d.ts +16 -0
  421. package/dist/verify/verification-diagnostics.d.ts.map +1 -0
  422. package/dist/verify/verification-diagnostics.js +219 -0
  423. package/dist/verify/verification-diagnostics.js.map +1 -0
  424. package/dist/verify/verification-engine.d.ts +12 -8
  425. package/dist/verify/verification-engine.d.ts.map +1 -1
  426. package/dist/verify/verification-engine.js +110 -92
  427. package/dist/verify/verification-engine.js.map +1 -1
  428. package/dist/verify/verification-evidence-unavailable-feedback.d.ts +2 -1
  429. package/dist/verify/verification-evidence-unavailable-feedback.d.ts.map +1 -1
  430. package/dist/verify/verification-evidence-unavailable-feedback.js +14 -4
  431. package/dist/verify/verification-evidence-unavailable-feedback.js.map +1 -1
  432. package/dist/verify/verification-failure-parser.d.ts +37 -3
  433. package/dist/verify/verification-failure-parser.d.ts.map +1 -1
  434. package/dist/verify/verification-failure-parser.js +66 -3
  435. package/dist/verify/verification-failure-parser.js.map +1 -1
  436. package/dist/verify/verification-feedback.d.ts +21 -34
  437. package/dist/verify/verification-feedback.d.ts.map +1 -1
  438. package/dist/verify/verification-feedback.js +37 -88
  439. package/dist/verify/verification-feedback.js.map +1 -1
  440. package/dist/verify/verification-gate-stages.d.ts +110 -0
  441. package/dist/verify/verification-gate-stages.d.ts.map +1 -0
  442. package/dist/verify/verification-gate-stages.js +179 -0
  443. package/dist/verify/verification-gate-stages.js.map +1 -0
  444. package/dist/verify/verification-history-reset.d.ts +61 -0
  445. package/dist/verify/verification-history-reset.d.ts.map +1 -0
  446. package/dist/verify/verification-history-reset.js +90 -0
  447. package/dist/verify/verification-history-reset.js.map +1 -0
  448. package/dist/verify/verification-manifest.d.ts.map +1 -1
  449. package/dist/verify/verification-manifest.js +2 -1
  450. package/dist/verify/verification-manifest.js.map +1 -1
  451. package/dist/verify/verification-rework-messages.d.ts +19 -0
  452. package/dist/verify/verification-rework-messages.d.ts.map +1 -0
  453. package/dist/verify/verification-rework-messages.js +52 -0
  454. package/dist/verify/verification-rework-messages.js.map +1 -0
  455. package/dist/worktree/install-inputs.d.ts +89 -0
  456. package/dist/worktree/install-inputs.d.ts.map +1 -0
  457. package/dist/worktree/install-inputs.js +625 -0
  458. package/dist/worktree/install-inputs.js.map +1 -0
  459. package/dist/worktree/install-script-effects.d.ts +30 -0
  460. package/dist/worktree/install-script-effects.d.ts.map +1 -0
  461. package/dist/worktree/install-script-effects.js +524 -0
  462. package/dist/worktree/install-script-effects.js.map +1 -0
  463. package/dist/worktree/install-script-tokens.d.ts +57 -0
  464. package/dist/worktree/install-script-tokens.d.ts.map +1 -0
  465. package/dist/worktree/install-script-tokens.js +299 -0
  466. package/dist/worktree/install-script-tokens.js.map +1 -0
  467. package/dist/worktree/provision.d.ts +27 -4
  468. package/dist/worktree/provision.d.ts.map +1 -1
  469. package/dist/worktree/provision.js +46 -7
  470. package/dist/worktree/provision.js.map +1 -1
  471. package/dist/worktree/safety.d.ts +11 -0
  472. package/dist/worktree/safety.d.ts.map +1 -1
  473. package/dist/worktree/safety.js +20 -3
  474. package/dist/worktree/safety.js.map +1 -1
  475. package/dist/worktree/verify-interlock.d.ts.map +1 -1
  476. package/dist/worktree/verify-interlock.js +3 -1
  477. package/dist/worktree/verify-interlock.js.map +1 -1
  478. package/dist/worktree/worktree-package-provisioning.d.ts +75 -0
  479. package/dist/worktree/worktree-package-provisioning.d.ts.map +1 -0
  480. package/dist/worktree/worktree-package-provisioning.js +362 -0
  481. package/dist/worktree/worktree-package-provisioning.js.map +1 -0
  482. package/package.json +1 -1
@@ -0,0 +1,180 @@
1
+ // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
+ // Pinned by: packages/daemon/src/completion/review-cycle-cap-regression.test.ts,
3
+ // packages/daemon/src/completion/review-cycle-churn-meter.test.ts
4
+ // PINNED-BY-END
5
+ /**
6
+ * The review-cycle cap: count the review cycles a focus spends without
7
+ * converging, and at TELORA_REVIEW_CYCLE_CAP stop the loop.
8
+ *
9
+ * Replaces the churn METER that used to live in review-exit-escalations.ts. That
10
+ * meter filed one review_cycle_cap_exceeded observation and let the loop keep
11
+ * spawning; the hand-off breaker it deferred to never advances on a cycle that
12
+ * files a new finding, so a non-converging loop billed passes until an operator
13
+ * disarmed it (2026-09-15). Now the crossing holds every spawn gate
14
+ * (focus/review-cycle-cap-hold.ts).
15
+ *
16
+ * What the count measures (recordReviewCycleAndMaybeHold, on every routed exit of
17
+ * a REVIEW session -- a routed coding exit, e.g. the open-work self-heal, is not a
18
+ * review cycle and leaves the count, the window and the filings alone):
19
+ * - a CONVERGED cycle -- a delivery reached done, nothing re-opened to
20
+ * verify_failed, and no open blocking review-filed finding is left on the
21
+ * focus -- resets it to 0. The cap measures consecutive unconverged cycles,
22
+ * not lifetime cycles, so a focus shipping many deliveries one clean review at
23
+ * a time never nears it.
24
+ * - any other routed cycle increments it. Below the cap nothing else happens:
25
+ * the count's only reader is the hold, so cycling below the cap is unchanged.
26
+ * - at the cap: the count is written first (a failed filing still holds by
27
+ * count), the review window is closed, and ONE observation is filed
28
+ * enumerating the open blocking review-filed findings. Nothing closes those
29
+ * issues: they stay open work, and the observation carries them to the agent
30
+ * routing decision (the promotion sweep hands a held focus's observations to
31
+ * the routing decider). Once the observation is filed the count resets to 0,
32
+ * so resolving it -- or, once a routing decider made it human-facing,
33
+ * resolving that filing (focus/review-cycle-cap-hold.ts reads the lineage
34
+ * carrier) -- lifts the hold, and a fresh cap of cycles is needed to re-cross:
35
+ * the review_handoff_exhausted precedent.
36
+ *
37
+ * reconcileReviewCycleCapFiling is the failed-filing half: a focus whose count
38
+ * stands at or past the cap with no observation filed would otherwise be held
39
+ * with nothing for the routing decider to take. The cascade re-files each poll
40
+ * until the filing lands.
41
+ *
42
+ * @module completion/review-cycle-cap
43
+ */
44
+ import { createEscalation, hasOpenFocusEscalation } from '../queries/escalations.js';
45
+ import { setReviewCycleCount, getFocusIssues, getFocusReviewFiledIssueIds } from '../queries/focuses.js';
46
+ import { resolveReviewCycleCap } from '../verify/stall-detector-config.js';
47
+ import { NO_HUMAN_ACT } from '../queries/filing-observation.js';
48
+ import { REVIEW_CYCLE_CAP_EXCEEDED_KIND } from '../focus/review-cycle-cap-hold.js';
49
+ import { fileDedupedFocusEscalation, } from './review-exit-escalations.js';
50
+ import { filterBlockingReviewFiledComplete } from './review-defect-detector.js';
51
+ import { createLogger } from '../shell/log.js';
52
+ const log = createLogger({ module: 'focus-executor' });
53
+ /** Pure: whether a routed review exit converged -- it resets the count instead of climbing it. */
54
+ export function reviewCycleConverged(outcome) {
55
+ return outcome.convergedAny && !outcome.anyReopenedToVerifyFailed && outcome.openBlockingFindings.length === 0;
56
+ }
57
+ /** Best-effort count write; returns whether it landed. */
58
+ async function writeCycleCount(setCount, ctx, count) {
59
+ try {
60
+ await setCount(ctx.focusId, count);
61
+ return true;
62
+ }
63
+ catch (err) {
64
+ log.warn(`[focus-executor] setReviewCycleCount(${count}) failed for "${ctx.focusName}": ${err.message}`);
65
+ return false;
66
+ }
67
+ }
68
+ /**
69
+ * Record one routed review cycle: reset on convergence, climb otherwise, and hold
70
+ * the focus at the cap. Best-effort -- never aborts the routing that already ran.
71
+ * A deps object without the count writer or the cap skips the whole cap.
72
+ */
73
+ export async function recordReviewCycleAndMaybeHold(deps, ctx, priorCycleCount, outcome) {
74
+ if (!deps.setReviewCycleCount || !deps.resolveReviewCycleCap)
75
+ return;
76
+ // MEASURE, don't assume: only a review-session exit moves the count (ReviewCycleOutcome.sessionType).
77
+ if (outcome.sessionType && outcome.sessionType !== 'review') {
78
+ log.info(`[focus-executor] "${ctx.focusName}" ${outcome.sessionType} session exit routed -- not a review pass; ` +
79
+ `review-cycle count left at ${priorCycleCount}.`);
80
+ return;
81
+ }
82
+ if (reviewCycleConverged(outcome)) {
83
+ if (priorCycleCount > 0)
84
+ await writeCycleCount(deps.setReviewCycleCount, ctx, 0);
85
+ return;
86
+ }
87
+ const cycleCount = priorCycleCount + 1;
88
+ const cap = deps.resolveReviewCycleCap();
89
+ // Durable first: if the filing below fails, count >= cap is what holds.
90
+ await writeCycleCount(deps.setReviewCycleCount, ctx, cycleCount);
91
+ if (cycleCount < cap)
92
+ return;
93
+ // Close the window (as the hand-off breaker does) unless a delivery awaits its
94
+ // gate verdict -- that replay converges without a spawn and needs the window.
95
+ if (!outcome.verdictHeldAny) {
96
+ try {
97
+ await deps.clearReviewRequestedAt(ctx.focusId);
98
+ }
99
+ catch (err) {
100
+ log.warn(`[focus-executor] clearReviewRequestedAt (review-cycle cap) failed for "${ctx.focusName}": ${err.message}`);
101
+ }
102
+ }
103
+ const filed = await fileReviewCycleCapObservation(deps, ctx, { cycleCount, cap, openBlockingFindings: outcome.openBlockingFindings });
104
+ if (filed)
105
+ await writeCycleCount(deps.setReviewCycleCount, ctx, 0);
106
+ log.warn(`[focus-executor] "${ctx.focusName}" reached its review-cycle cap without converging (${cycleCount} >= cap ${cap}): ` +
107
+ `spawns held, review window ${outcome.verdictHeldAny ? 'left open for a pending gate verdict' : 'closed'}, ` +
108
+ (filed ? 'observation filed and count reset to 0.' : 'observation NOT filed -- the count holds and the cascade re-files it.'));
109
+ }
110
+ /**
111
+ * File the review_cycle_cap_exceeded observation (at most one open per focus).
112
+ * Returns whether one is now open (filed, or already open). NO_HUMAN_ACT: what the
113
+ * unconverged findings need -- route, re-scope, descope -- is planning work an
114
+ * agent performs; the hold is keyed on this observation's kind, not on an act.
115
+ */
116
+ export async function fileReviewCycleCapObservation(deps, ctx, args) {
117
+ const findings = args.openBlockingFindings;
118
+ const findingsBlock = findings.length > 0
119
+ ? `\n\nMEASURED: ${findings.length} open blocking review-filed finding(s) remain on this focus, still open ` +
120
+ `(the daemon closed none):\n` +
121
+ findings.map(f => ` - ${f.key} (${f.id}): ${f.title}${f.deliveryId ? ` (delivery ${f.deliveryId})` : ''}`).join('\n')
122
+ : `\n\nMEASURED: 0 open blocking review-filed findings on this focus at the capped exit -- the cycles ` +
123
+ `failed to converge for another reason (e.g. uninspected reviews or deliveries re-opening).`;
124
+ return fileDedupedFocusEscalation(deps, ctx, {
125
+ escalationKind: REVIEW_CYCLE_CAP_EXCEEDED_KIND,
126
+ label: 'review-cycle-cap',
127
+ description: `Focus "${ctx.focusName}" completed ${args.cycleCount} review cycle(s) without converging ` +
128
+ `(cap ${args.cap}, TELORA_REVIEW_CYCLE_CAP). The daemon has STOPPED its review loop: the review ` +
129
+ `window is closed and no coding or review pass spawns while this observation is open.` +
130
+ findingsBlock +
131
+ `\n\nDecide what the unconverged findings need -- route or re-scope them onto a delivery, descope ` +
132
+ `them, or re-scope the focus -- then resolve this observation. Resolving it lifts the hold and the ` +
133
+ `focus gets a fresh ${args.cap} review cycles; a focus that converges retires it automatically. ` +
134
+ `If what they need is an act only a human can perform, a filing made human-facing from this ` +
135
+ `observation (sourceEscalationId naming it) keeps the hold standing until THAT filing is resolved.`,
136
+ humanAct: NO_HUMAN_ACT,
137
+ metadata: {
138
+ review_cycle_count: args.cycleCount,
139
+ cap: args.cap,
140
+ routed_via: 'review_cycle_cap_hold',
141
+ holds_spawns: true,
142
+ open_blocking_review_filed_count: findings.length,
143
+ open_blocking_review_filed_findings: findings.map(f => ({ key: f.key, id: f.id, delivery_id: f.deliveryId })),
144
+ terminates_when: 'focus_converged',
145
+ },
146
+ });
147
+ }
148
+ const defaultReconcileDeps = {
149
+ createEscalation,
150
+ hasOpenFocusEscalation,
151
+ setReviewCycleCount,
152
+ resolveReviewCycleCap,
153
+ getFocusIssues,
154
+ getFocusReviewFiledIssueIds,
155
+ };
156
+ /**
157
+ * The failed-filing half, run by the cascade each poll: a focus whose count
158
+ * stands at or past the cap is held by count; file (or find) its observation and
159
+ * reset the count, so the routing decider has the observation to take and its
160
+ * resolution lifts the hold. A no-op below the cap (no read). Best-effort.
161
+ */
162
+ export async function reconcileReviewCycleCapFiling(ctx, reviewCycleCount, deps = defaultReconcileDeps) {
163
+ const cap = (deps.resolveReviewCycleCap ?? resolveReviewCycleCap)();
164
+ if (reviewCycleCount < cap || !deps.setReviewCycleCount)
165
+ return;
166
+ let openBlockingFindings = [];
167
+ try {
168
+ const [issues, reviewFiledIds] = await Promise.all([deps.getFocusIssues(ctx.focusId), deps.getFocusReviewFiledIssueIds(ctx.focusId)]);
169
+ openBlockingFindings = filterBlockingReviewFiledComplete(issues, new Set(reviewFiledIds), null)
170
+ .map(i => ({ id: i.id, key: i.key, title: i.title, deliveryId: i.deliveryId ?? null, description: i.description ?? null }));
171
+ }
172
+ catch (err) {
173
+ log.warn(`[focus-executor] review-cycle cap re-file could not read findings for "${ctx.focusName}": ${err.message}`);
174
+ }
175
+ const filed = await fileReviewCycleCapObservation(deps, { ...ctx, sessionId: '' }, { cycleCount: reviewCycleCount, cap, openBlockingFindings });
176
+ if (filed && await writeCycleCount(deps.setReviewCycleCount, ctx, 0)) {
177
+ log.info(`[focus-executor] "${ctx.focusName}" review-cycle cap observation re-filed (count ${reviewCycleCount} >= cap ${cap}); count reset to 0.`);
178
+ }
179
+ }
180
+ //# sourceMappingURL=review-cycle-cap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-cycle-cap.js","sourceRoot":"","sources":["../../src/completion/review-cycle-cap.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,iFAAiF;AACjF,oEAAoE;AACpE,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,2BAA2B,EAA+B,MAAM,uBAAuB,CAAC;AACtI,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AACnF,OAAO,EACL,0BAA0B,GAI3B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,iCAAiC,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAuBvD,kGAAkG;AAClG,MAAM,UAAU,oBAAoB,CAAC,OAAwG;IAC3I,OAAO,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,yBAAyB,IAAI,OAAO,CAAC,oBAAoB,CAAC,MAAM,KAAK,CAAC,CAAC;AACjH,CAAC;AAOD,0DAA0D;AAC1D,KAAK,UAAU,eAAe,CAC5B,QAAoC,EACpC,GAA2C,EAC3C,KAAa;IAEb,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,wCAAwC,KAAK,iBAAiB,GAAG,CAAC,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACpH,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,IAAwB,EACxB,GAAgC,EAChC,eAAuB,EACvB,OAA2B;IAE3B,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,qBAAqB;QAAE,OAAO;IACrE,sGAAsG;IACtG,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC5D,GAAG,CAAC,IAAI,CACN,qBAAqB,GAAG,CAAC,SAAS,KAAK,OAAO,CAAC,WAAW,6CAA6C;YACvG,8BAA8B,eAAe,GAAG,CACjD,CAAC;QACF,OAAO;IACT,CAAC;IACD,IAAI,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,IAAI,eAAe,GAAG,CAAC;YAAE,MAAM,eAAe,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QACjF,OAAO;IACT,CAAC;IACD,MAAM,UAAU,GAAG,eAAe,GAAG,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACzC,wEAAwE;IACxE,MAAM,eAAe,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;IACjE,IAAI,UAAU,GAAG,GAAG;QAAE,OAAO;IAE7B,+EAA+E;IAC/E,8EAA8E;IAC9E,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,0EAA0E,GAAG,CAAC,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAClI,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,6BAA6B,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACtI,IAAI,KAAK;QAAE,MAAM,eAAe,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACnE,GAAG,CAAC,IAAI,CACN,qBAAqB,GAAG,CAAC,SAAS,sDAAsD,UAAU,WAAW,GAAG,KAAK;QACrH,8BAA8B,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,QAAQ,IAAI;QAC5G,CAAC,KAAK,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,uEAAuE,CAAC,CAC9H,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,IAA8B,EAC9B,GAAgC,EAChC,IAAqG;IAErG,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC;IAC3C,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC;QACvC,CAAC,CAAC,iBAAiB,QAAQ,CAAC,MAAM,0EAA0E;YAC1G,6BAA6B;YAC7B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACxH,CAAC,CAAC,qGAAqG;YACrG,4FAA4F,CAAC;IACjG,OAAO,0BAA0B,CAAC,IAAI,EAAE,GAAG,EAAE;QAC3C,cAAc,EAAE,8BAA8B;QAC9C,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACT,UAAU,GAAG,CAAC,SAAS,eAAe,IAAI,CAAC,UAAU,sCAAsC;YAC3F,QAAQ,IAAI,CAAC,GAAG,iFAAiF;YACjG,sFAAsF;YACtF,aAAa;YACb,mGAAmG;YACnG,oGAAoG;YACpG,sBAAsB,IAAI,CAAC,GAAG,mEAAmE;YACjG,6FAA6F;YAC7F,mGAAmG;QACrG,QAAQ,EAAE,YAAY;QACtB,QAAQ,EAAE;YACR,kBAAkB,EAAE,IAAI,CAAC,UAAU;YACnC,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,UAAU,EAAE,uBAAuB;YACnC,YAAY,EAAE,IAAI;YAClB,gCAAgC,EAAE,QAAQ,CAAC,MAAM;YACjD,mCAAmC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;YAC7G,eAAe,EAAE,iBAAiB;SACnC;KACF,CAAC,CAAC;AACL,CAAC;AAQD,MAAM,oBAAoB,GAAgC;IACxD,gBAAgB;IAChB,sBAAsB;IACtB,mBAAmB;IACnB,qBAAqB;IACrB,cAAc;IACd,2BAA2B;CAC5B,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,GAAmE,EACnE,gBAAwB,EACxB,OAAoC,oBAAoB;IAExD,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,qBAAqB,IAAI,qBAAqB,CAAC,EAAE,CAAC;IACpE,IAAI,gBAAgB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB;QAAE,OAAO;IAChE,IAAI,oBAAoB,GAAgC,EAAE,CAAC;IAC3D,IAAI,CAAC;QACH,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACtI,oBAAoB,GAAG,iCAAiC,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC;aAC5F,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IAChI,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,0EAA0E,GAAG,CAAC,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAClI,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,6BAA6B,CAAC,IAAI,EAAE,EAAE,GAAG,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAChJ,IAAI,KAAK,IAAI,MAAM,eAAe,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;QACrE,GAAG,CAAC,IAAI,CAAC,qBAAqB,GAAG,CAAC,SAAS,kDAAkD,gBAAgB,WAAW,GAAG,sBAAsB,CAAC,CAAC;IACrJ,CAAC;AACH,CAAC"}
@@ -10,16 +10,19 @@
10
10
  * import-x/no-cycle. Bodies verbatim.
11
11
  */
12
12
  import { fetchEffectiveWorkflow } from '../queries/workflows.js';
13
- import { updateDeliveryStatus, markDeliveryAutoApproved } from '../queries/deliveries.js';
13
+ import { updateDeliveryStatus, markDeliveryAutoApproved, getIssueDelivery } from '../queries/deliveries.js';
14
+ import { type ReviewWindowCommit } from '../resolvers/shared/review-window-commits.js';
14
15
  import { getActiveFocuses } from '../queries/focus-discovery.js';
15
16
  import { hasPendingSpawnDirective } from '../directive/directive-queue.js';
16
17
  import { emitLoopTrigger } from '../loops/index.js';
17
18
  import { getFocusDeliveries, getFocusIssues, clearReviewRequestedAt, setReviewedThroughSha, setReviewCycleCount, setReviewHandoffCount, getFocusReviewReportForSession, getFocusReviewFiledIssueIds } from '../queries/focuses.js';
18
19
  import { resolveReviewCycleCap, resolveReviewHandoffCap } from '../verify/stall-detector-config.js';
19
20
  import { getDeliveryIssues, rehomeIssueToDelivery } from '../queries/issues.js';
20
- import { createEscalation, hasOpenFocusEscalation } from '../queries/escalations.js';
21
+ import { createEscalation, hasOpenFocusEscalation, hasOpenEscalationForDelivery } from '../queries/escalations.js';
21
22
  import { findOpenOperatorHoldForDelivery } from '../queries/holds.js';
22
23
  import { listOpenShortfallProposalIds } from '../queries/reality-tree.js';
24
+ import type { CommitVerdictGateDeps } from './review-exit-verdict-gate.js';
25
+ import { type ReviewAutoApproval } from './review-auto-approval-record.js';
23
26
  /**
24
27
  * Dependencies for runReviewExitHandler. Defaults to real implementations;
25
28
  * overridable in tests via the optional `deps` argument.
@@ -32,6 +35,7 @@ export interface ReviewExitDeps {
32
35
  fetchEffectiveWorkflow: typeof fetchEffectiveWorkflow;
33
36
  updateDeliveryStatus: typeof updateDeliveryStatus;
34
37
  markDeliveryAutoApproved: typeof markDeliveryAutoApproved;
38
+ recordReviewAutoApproval?: (approval: ReviewAutoApproval) => boolean;
35
39
  clearReviewRequestedAt: typeof clearReviewRequestedAt;
36
40
  setReviewedThroughSha: typeof setReviewedThroughSha;
37
41
  setReviewCycleCount?: typeof setReviewCycleCount;
@@ -43,7 +47,18 @@ export interface ReviewExitDeps {
43
47
  hasOpenFocusEscalation?: typeof hasOpenFocusEscalation;
44
48
  listOpenShortfallProposalIds?: typeof listOpenShortfallProposalIds;
45
49
  findOpenOperatorHoldForDelivery?: typeof findOpenOperatorHoldForDelivery;
50
+ isCommitGateConfigured?: CommitVerdictGateDeps['isCommitGateConfigured'];
51
+ resolveCommitGate?: CommitVerdictGateDeps['resolveCommitGate'];
52
+ resolveJudgedCommit?: CommitVerdictGateDeps['resolveJudgedCommit'];
53
+ readCommitVerdict?: CommitVerdictGateDeps['readCommitVerdict'];
54
+ readDeliveryGateOutcome?: CommitVerdictGateDeps['readDeliveryGateOutcome'];
55
+ hasPendingGateRun?: CommitVerdictGateDeps['hasPendingGateRun'];
46
56
  rehomeIssueToDelivery?: typeof rehomeIssueToDelivery;
57
+ listReviewWindowCommits?: (focusId: string, base: string, tip: string) => readonly ReviewWindowCommit[] | null;
58
+ blameLines?: (focusId: string, tip: string, file: string, start: number, end: number) => readonly string[] | null;
59
+ resolveDeliveryFocusId?: (deliveryId: string) => Promise<string | null>;
60
+ getIssueDelivery?: typeof getIssueDelivery;
61
+ hasOpenEscalationForDelivery?: typeof hasOpenEscalationForDelivery;
47
62
  hasPendingSpawnDirective: typeof hasPendingSpawnDirective;
48
63
  emitLoopTrigger: typeof emitLoopTrigger;
49
64
  getFocusReviewReportForSession: typeof getFocusReviewReportForSession;
@@ -1 +1 @@
1
- {"version":3,"file":"review-exit-deps.d.ts","sourceRoot":"","sources":["../../src/completion/review-exit-deps.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,8BAA8B,EAC9B,2BAA2B,EAC5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AACpG,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAuE,MAAM,2BAA2B,CAAC;AAC1J,OAAO,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAE1E;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;IAC1C,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;IAC9C,cAAc,EAAE,OAAO,cAAc,CAAC;IACtC,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;IAC5C,sBAAsB,EAAE,OAAO,sBAAsB,CAAC;IACtD,oBAAoB,EAAE,OAAO,oBAAoB,CAAC;IAClD,wBAAwB,EAAE,OAAO,wBAAwB,CAAC;IAC1D,sBAAsB,EAAE,OAAO,sBAAsB,CAAC;IACtD,qBAAqB,EAAE,OAAO,qBAAqB,CAAC;IAGpD,mBAAmB,CAAC,EAAE,OAAO,mBAAmB,CAAC;IACjD,qBAAqB,CAAC,EAAE,OAAO,qBAAqB,CAAC;IAKrD,qBAAqB,CAAC,EAAE,OAAO,qBAAqB,CAAC;IACrD,uBAAuB,CAAC,EAAE,OAAO,uBAAuB,CAAC;IAKzD,2BAA2B,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAKlF,gCAAgC,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAGvF,sBAAsB,CAAC,EAAE,OAAO,sBAAsB,CAAC;IAKvD,4BAA4B,CAAC,EAAE,OAAO,4BAA4B,CAAC;IAMnE,+BAA+B,CAAC,EAAE,OAAO,+BAA+B,CAAC;IAKzE,qBAAqB,CAAC,EAAE,OAAO,qBAAqB,CAAC;IACrD,wBAAwB,EAAE,OAAO,wBAAwB,CAAC;IAC1D,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,8BAA8B,EAAE,OAAO,8BAA8B,CAAC;IAMtE,2BAA2B,CAAC,EAAE,OAAO,2BAA2B,CAAC;IACjE,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;CAC3C;AAED,eAAO,MAAM,qBAAqB,EAAE,cA0BnC,CAAC"}
1
+ {"version":3,"file":"review-exit-deps.d.ts","sourceRoot":"","sources":["../../src/completion/review-exit-deps.ts"],"names":[],"mappings":"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"}
@@ -13,16 +13,20 @@
13
13
  * import-x/no-cycle. Bodies verbatim.
14
14
  */
15
15
  import { fetchEffectiveWorkflow } from '../queries/workflows.js';
16
- import { updateDeliveryStatus, markDeliveryAutoApproved } from '../queries/deliveries.js';
16
+ import { updateDeliveryStatus, markDeliveryAutoApproved, getDeliveryContext, getIssueDelivery } from '../queries/deliveries.js';
17
+ import { getFocusWorktree } from '../focus/focus-worktree-state.js';
18
+ import { blameLineCommits, listReviewWindowCommits } from '../resolvers/shared/review-window-commits.js';
17
19
  import { getActiveFocuses } from '../queries/focus-discovery.js';
18
20
  import { hasPendingSpawnDirective } from '../directive/directive-queue.js';
19
21
  import { emitLoopTrigger } from '../loops/index.js';
20
22
  import { getFocusDeliveries, getFocusIssues, clearReviewRequestedAt, setReviewedThroughSha, setReviewCycleCount, setReviewHandoffCount, getFocusReviewReportForSession, getFocusReviewFiledIssueIds, } from '../queries/focuses.js';
21
23
  import { resolveReviewCycleCap, resolveReviewHandoffCap } from '../verify/stall-detector-config.js';
22
24
  import { getDeliveryIssues, rehomeIssueToDelivery } from '../queries/issues.js';
23
- import { createEscalation, hasOpenFocusEscalation, resolveOpenFocusEscalationsOfKind, resolveConvergedFocusEscalations } from '../queries/escalations.js';
25
+ import { createEscalation, hasOpenFocusEscalation, hasOpenEscalationForDelivery, resolveOpenFocusEscalationsOfKind, resolveConvergedFocusEscalations } from '../queries/escalations.js';
24
26
  import { findOpenOperatorHoldForDelivery } from '../queries/holds.js';
25
27
  import { listOpenShortfallProposalIds } from '../queries/reality-tree.js';
28
+ import { commitGateSeams } from '../verify/commit-gate-configured.js';
29
+ import { writeReviewAutoApproval } from './review-auto-approval-record.js';
26
30
  export const defaultReviewExitDeps = {
27
31
  getActiveFocuses,
28
32
  getFocusDeliveries,
@@ -31,6 +35,7 @@ export const defaultReviewExitDeps = {
31
35
  fetchEffectiveWorkflow,
32
36
  updateDeliveryStatus,
33
37
  markDeliveryAutoApproved,
38
+ recordReviewAutoApproval: (approval) => writeReviewAutoApproval(approval),
34
39
  clearReviewRequestedAt,
35
40
  setReviewedThroughSha,
36
41
  setReviewCycleCount,
@@ -42,7 +47,19 @@ export const defaultReviewExitDeps = {
42
47
  hasOpenFocusEscalation,
43
48
  listOpenShortfallProposalIds,
44
49
  findOpenOperatorHoldForDelivery,
50
+ ...commitGateSeams,
45
51
  rehomeIssueToDelivery,
52
+ listReviewWindowCommits: (focusId, base, tip) => {
53
+ const worktree = getFocusWorktree(focusId);
54
+ return worktree ? listReviewWindowCommits(worktree.worktreePath, base, tip) : null;
55
+ },
56
+ blameLines: (focusId, tip, file, start, end) => {
57
+ const worktree = getFocusWorktree(focusId);
58
+ return worktree ? blameLineCommits(worktree.worktreePath, tip, file, start, end) : null;
59
+ },
60
+ resolveDeliveryFocusId: async (deliveryId) => (await getDeliveryContext(deliveryId))?.focus?.id ?? null,
61
+ getIssueDelivery,
62
+ hasOpenEscalationForDelivery,
46
63
  hasPendingSpawnDirective,
47
64
  emitLoopTrigger,
48
65
  getFocusReviewReportForSession,
@@ -1 +1 @@
1
- {"version":3,"file":"review-exit-deps.js","sourceRoot":"","sources":["../../src/completion/review-exit-deps.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,0FAA0F;AAC1F,gBAAgB;AAEhB;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,8BAA8B,EAC9B,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AACpG,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,iCAAiC,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAC;AAC1J,OAAO,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAmE1E,MAAM,CAAC,MAAM,qBAAqB,GAAmB;IACnD,gBAAgB;IAChB,kBAAkB;IAClB,cAAc;IACd,iBAAiB;IACjB,sBAAsB;IACtB,oBAAoB;IACpB,wBAAwB;IACxB,sBAAsB;IACtB,qBAAqB;IACrB,mBAAmB;IACnB,qBAAqB;IACrB,qBAAqB;IACrB,uBAAuB;IACvB,2BAA2B,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAC9C,iCAAiC,CAAC,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,KAAK,CAAC;IAChG,gCAAgC;IAChC,sBAAsB;IACtB,4BAA4B;IAC5B,+BAA+B;IAC/B,qBAAqB;IACrB,wBAAwB;IACxB,eAAe;IACf,8BAA8B;IAC9B,2BAA2B;IAC3B,gBAAgB;CACjB,CAAC"}
1
+ {"version":3,"file":"review-exit-deps.js","sourceRoot":"","sources":["../../src/completion/review-exit-deps.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,23 @@
1
+ /**
2
+ * Escalation tail of the review-exit gate.
3
+ *
4
+ * Every notice in this module fires AFTER routing has already been decided --
5
+ * none of them gate a delivery transition. The delivery has moved toward intent
6
+ * (or been held) by the time any of these file; what they carry is the residue
7
+ * the routing decider or an agent reconciles: a hand-off that keeps routing
8
+ * nothing, a review whose coverage keeps falling behind the branch, a gaps_found
9
+ * verdict with nothing actionable filed, an agent that skipped review_complete.
10
+ * (The review-cycle cap, which DOES stop the loop, lives in review-cycle-cap.ts
11
+ * and files through fileDedupedFocusEscalation here.)
12
+ *
13
+ * Extracted from review-exit-phase.ts to keep that file under the daemon
14
+ * file-size limit -- sibling of review-exit-shortfall.ts, same seam. Bodies are
15
+ * verbatim; the one piece of new code is `fileDedupedFocusEscalation`, which
16
+ * the filers were hand-rolling identically.
17
+ *
18
+ * @module completion/review-exit-escalations
19
+ */
20
+ import { ESCALATION_REASONS } from '@telora/daemon-core';
1
21
  import type { createEscalation, hasOpenFocusEscalation } from '../queries/escalations.js';
2
22
  import type { setReviewCycleCount, clearReviewRequestedAt, setReviewHandoffCount } from '../queries/focuses.js';
3
23
  import type { resolveReviewCycleCap } from '../verify/stall-detector-config.js';
@@ -19,8 +39,9 @@ export interface ReviewExitEscalationContext {
19
39
  }
20
40
  /**
21
41
  * A compact summary of one open, blocking, review-filed finding on a focus,
22
- * enumerated in the hand-off-exhausted escalation so an operator can see the
23
- * outstanding findings without opening the daemon log.
42
+ * enumerated in the hand-off-exhausted escalation and the review-cycle cap
43
+ * observation so whoever routes them sees the outstanding findings without
44
+ * opening the daemon log.
24
45
  */
25
46
  export interface ReviewFiledFindingSummary {
26
47
  /** The issue id -- carried so the re-homing pass can move the issue. */
@@ -32,30 +53,31 @@ export interface ReviewFiledFindingSummary {
32
53
  description: string | null;
33
54
  }
34
55
  /**
35
- * Focus-level review-cycle churn METER (NOT a breaker), plus the one escalation
36
- * it arms.
37
- *
38
- * This meters and SURFACES; it never halts. When the count crosses the cap it
39
- * files ONE review_cycle_cap_exceeded escalation for visibility and lets the
40
- * loop continue -- the terminating breaker is recordHandoffAndMaybeTerminate
41
- * (the hand-off cap), which actually closes the review window. Keeping the two
42
- * roles distinct is deliberate: this one is the "how many cycles has this focus
43
- * burned" gauge; that one is the "stop" valve.
56
+ * File a focus-anchored needs_operator escalation, at most one open per
57
+ * (focus, kind). Each caller decides `humanAct`: a named act only a human can
58
+ * perform reaches the operator; NO_HUMAN_ACT files an observation the focus's
59
+ * next agent session decides (queries/filing-observation.ts).
44
60
  *
45
- * Increments on EVERY completed review cycle (including auto-approve /
46
- * no-report cycles the focus_reviews-row meter misses) so the take-turns-failing
47
- * tail -- deliveries taking turns failing so no single delivery hits its
48
- * per-delivery iteration cap while the focus cycles reviews forever -- becomes
49
- * visible. When the count CROSSES the cap, file one needs_operator escalation
50
- * per focus. Normal verify->review->requeue cycling below the cap is NOT a stall
51
- * and files nothing.
61
+ * Best-effort throughout: a dedup-probe failure files anyway (a duplicate
62
+ * notice is cheaper than a swallowed one), and a create failure is logged, not
63
+ * thrown -- none of these notices may abort an exit handler that has already
64
+ * written delivery state. Returns whether a row of the kind is now open (filed,
65
+ * or already open): the review-cycle cap (review-cycle-cap.ts) resets its count
66
+ * only once its observation exists.
52
67
  *
53
- * The crossing condition fires exactly once: monotonic and single-writer here,
54
- * so this is a deterministic one-per-focus escalation without a DB probe (hence
55
- * no dedup call). Best-effort: a meter/escalation failure never aborts routing.
56
- * A deps object that omits either half skips the meter entirely.
68
+ * `label` names the site in the warn lines so the pre-extraction log text
69
+ * survives verbatim.
57
70
  */
58
- export declare function recordReviewCycleAndMaybeEscalate(deps: ReviewExitEscalationDeps, ctx: ReviewExitEscalationContext, priorCycleCount: number): Promise<void>;
71
+ export declare function fileDedupedFocusEscalation(deps: ReviewExitEscalationDeps, ctx: ReviewExitEscalationContext, args: {
72
+ escalationKind: string;
73
+ label: string;
74
+ description: string;
75
+ metadata: Record<string, unknown>;
76
+ /** Required so every site states its routing: a named act, or NO_HUMAN_ACT. */
77
+ humanAct: HumanAct | null;
78
+ reasonType?: typeof ESCALATION_REASONS[keyof typeof ESCALATION_REASONS];
79
+ onFiled?: () => void;
80
+ }): Promise<boolean>;
59
81
  /**
60
82
  * Drift persisted after the full-pass respawn -- an operator must look.
61
83
  *
@@ -1 +1 @@
1
- {"version":3,"file":"review-exit-escalations.d.ts","sourceRoot":"","sources":["../../src/completion/review-exit-escalations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"review-exit-escalations.d.ts","sourceRoot":"","sources":["../../src/completion/review-exit-escalations.ts"],"names":[],"mappings":"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"}
@@ -6,16 +6,18 @@
6
6
  * Escalation tail of the review-exit gate.
7
7
  *
8
8
  * Every notice in this module fires AFTER routing has already been decided --
9
- * none of them gate a transition. The delivery has moved toward intent (or been
10
- * held) by the time any of these file; what they carry is the residue a human
11
- * has to reconcile: a focus that keeps cycling reviews without converging, a
12
- * review whose coverage keeps falling behind the branch, a gaps_found verdict
13
- * with nothing actionable filed, an agent that skipped review_complete.
9
+ * none of them gate a delivery transition. The delivery has moved toward intent
10
+ * (or been held) by the time any of these file; what they carry is the residue
11
+ * the routing decider or an agent reconciles: a hand-off that keeps routing
12
+ * nothing, a review whose coverage keeps falling behind the branch, a gaps_found
13
+ * verdict with nothing actionable filed, an agent that skipped review_complete.
14
+ * (The review-cycle cap, which DOES stop the loop, lives in review-cycle-cap.ts
15
+ * and files through fileDedupedFocusEscalation here.)
14
16
  *
15
17
  * Extracted from review-exit-phase.ts to keep that file under the daemon
16
18
  * file-size limit -- sibling of review-exit-shortfall.ts, same seam. Bodies are
17
19
  * verbatim; the one piece of new code is `fileDedupedFocusEscalation`, which
18
- * three of the four filers were hand-rolling identically.
20
+ * the filers were hand-rolling identically.
19
21
  *
20
22
  * @module completion/review-exit-escalations
21
23
  */
@@ -33,12 +35,14 @@ const log = createLogger({ module: 'focus-executor' });
33
35
  * Best-effort throughout: a dedup-probe failure files anyway (a duplicate
34
36
  * notice is cheaper than a swallowed one), and a create failure is logged, not
35
37
  * thrown -- none of these notices may abort an exit handler that has already
36
- * written delivery state.
38
+ * written delivery state. Returns whether a row of the kind is now open (filed,
39
+ * or already open): the review-cycle cap (review-cycle-cap.ts) resets its count
40
+ * only once its observation exists.
37
41
  *
38
42
  * `label` names the site in the warn lines so the pre-extraction log text
39
43
  * survives verbatim.
40
44
  */
41
- async function fileDedupedFocusEscalation(deps, ctx, args) {
45
+ export async function fileDedupedFocusEscalation(deps, ctx, args) {
42
46
  const { focusId, focusName, organizationId, sessionId } = ctx;
43
47
  let alreadyOpen = false;
44
48
  if (deps.hasOpenFocusEscalation) {
@@ -52,7 +56,7 @@ async function fileDedupedFocusEscalation(deps, ctx, args) {
52
56
  }
53
57
  }
54
58
  if (alreadyOpen)
55
- return;
59
+ return true;
56
60
  try {
57
61
  await deps.createEscalation({
58
62
  organizationId,
@@ -67,74 +71,11 @@ async function fileDedupedFocusEscalation(deps, ctx, args) {
67
71
  metadata: args.metadata,
68
72
  });
69
73
  args.onFiled?.();
74
+ return true;
70
75
  }
71
76
  catch (err) {
72
77
  log.warn(`createEscalation (${args.label}) failed for "${focusName}": ${err.message}`);
73
- }
74
- }
75
- /**
76
- * Focus-level review-cycle churn METER (NOT a breaker), plus the one escalation
77
- * it arms.
78
- *
79
- * This meters and SURFACES; it never halts. When the count crosses the cap it
80
- * files ONE review_cycle_cap_exceeded escalation for visibility and lets the
81
- * loop continue -- the terminating breaker is recordHandoffAndMaybeTerminate
82
- * (the hand-off cap), which actually closes the review window. Keeping the two
83
- * roles distinct is deliberate: this one is the "how many cycles has this focus
84
- * burned" gauge; that one is the "stop" valve.
85
- *
86
- * Increments on EVERY completed review cycle (including auto-approve /
87
- * no-report cycles the focus_reviews-row meter misses) so the take-turns-failing
88
- * tail -- deliveries taking turns failing so no single delivery hits its
89
- * per-delivery iteration cap while the focus cycles reviews forever -- becomes
90
- * visible. When the count CROSSES the cap, file one needs_operator escalation
91
- * per focus. Normal verify->review->requeue cycling below the cap is NOT a stall
92
- * and files nothing.
93
- *
94
- * The crossing condition fires exactly once: monotonic and single-writer here,
95
- * so this is a deterministic one-per-focus escalation without a DB probe (hence
96
- * no dedup call). Best-effort: a meter/escalation failure never aborts routing.
97
- * A deps object that omits either half skips the meter entirely.
98
- */
99
- export async function recordReviewCycleAndMaybeEscalate(deps, ctx, priorCycleCount) {
100
- if (!deps.setReviewCycleCount || !deps.resolveReviewCycleCap)
101
- return;
102
- const { focusId, focusName, organizationId, sessionId } = ctx;
103
- const newCycleCount = priorCycleCount + 1;
104
- try {
105
- await deps.setReviewCycleCount(focusId, newCycleCount);
106
- }
107
- catch (err) {
108
- log.warn(`[focus-executor] setReviewCycleCount failed for "${focusName}": ${err.message}`);
109
- }
110
- const reviewCycleCap = deps.resolveReviewCycleCap();
111
- if (!(priorCycleCount < reviewCycleCap && newCycleCount >= reviewCycleCap))
112
- return;
113
- try {
114
- await deps.createEscalation({
115
- organizationId,
116
- sessionId,
117
- issueId: null,
118
- reasonType: ESCALATION_REASONS.DECISION_NEEDED,
119
- disposition: ESCALATION_DISPOSITIONS.NEEDS_OPERATOR,
120
- // A METER, not a breaker: the loop keeps converging and nothing waits on a
121
- // human. A named act would make this focus row a spawn gate, turning the
122
- // gauge into a halt -- so it is an observation the next session reads.
123
- humanAct: NO_HUMAN_ACT,
124
- anchor: { focusId, sessionId },
125
- description: `Focus "${focusName}" has completed ${newCycleCount} review cycle(s) ` +
126
- `(cap: ${reviewCycleCap}) without converging. This counts auto-approve ` +
127
- `and no-report cycles the focus_reviews meter misses -- the take-turns-` +
128
- `failing tail. An operator must decide: descope remaining gaps, raise ` +
129
- `TELORA_REVIEW_CYCLE_CAP, or close the focus.`,
130
- escalationKind: 'review_cycle_cap_exceeded',
131
- metadata: { review_cycle_count: newCycleCount, cap: reviewCycleCap, terminates_when: 'focus_converged' },
132
- });
133
- log.warn(`[focus-executor] review_cycle_cap_exceeded escalation filed for ` +
134
- `"${focusName}" (cycles=${newCycleCount}, cap=${reviewCycleCap}).`);
135
- }
136
- catch (err) {
137
- log.warn(`[focus-executor] createEscalation (review_cycle_cap) failed for "${focusName}": ${err.message}`);
78
+ return false;
138
79
  }
139
80
  }
140
81
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"review-exit-escalations.js","sourceRoot":"","sources":["../../src/completion/review-exit-escalations.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,8EAA8E;AAC9E,gEAAgE;AAChE,gBAAgB;AAEhB;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAIlF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAiB,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAqCvD;;;;;;;;;;;;;GAaG;AACH,KAAK,UAAU,0BAA0B,CACvC,IAA8B,EAC9B,GAAgC,EAChC,IASC;IAED,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC;IAC9D,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,4EAA4E;YAC5E,6EAA6E;YAC7E,WAAW,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/G,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,2BAA2B,IAAI,CAAC,KAAK,iBAAiB,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1G,CAAC;IACH,CAAC;IACD,IAAI,WAAW;QAAE,OAAO;IACxB,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,gBAAgB,CAAC;YAC1B,cAAc;YACd,SAAS;YACT,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,kBAAkB,CAAC,eAAe;YACjE,WAAW,EAAE,uBAAuB,CAAC,cAAc;YACnD,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;YAC9B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,KAAK,iBAAiB,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACpG,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,KAAK,UAAU,iCAAiC,CACrD,IAA8B,EAC9B,GAAgC,EAChC,eAAuB;IAEvB,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,qBAAqB;QAAE,OAAO;IACrE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC;IAE9D,MAAM,aAAa,GAAG,eAAe,GAAG,CAAC,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CACN,oDAAoD,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CAC5F,CAAC;IACJ,CAAC;IACD,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACpD,IAAI,CAAC,CAAC,eAAe,GAAG,cAAc,IAAI,aAAa,IAAI,cAAc,CAAC;QAAE,OAAO;IAEnF,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,gBAAgB,CAAC;YAC1B,cAAc;YACd,SAAS;YACT,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,kBAAkB,CAAC,eAAe;YAC9C,WAAW,EAAE,uBAAuB,CAAC,cAAc;YACnD,2EAA2E;YAC3E,yEAAyE;YACzE,uEAAuE;YACvE,QAAQ,EAAE,YAAY;YACtB,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;YAC9B,WAAW,EACT,UAAU,SAAS,mBAAmB,aAAa,mBAAmB;gBACtE,SAAS,cAAc,iDAAiD;gBACxE,wEAAwE;gBACxE,uEAAuE;gBACvE,8CAA8C;YAChD,cAAc,EAAE,2BAA2B;YAC3C,QAAQ,EAAE,EAAE,kBAAkB,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE;SACzG,CAAC,CAAC;QACH,GAAG,CAAC,IAAI,CACN,kEAAkE;YAClE,IAAI,SAAS,aAAa,aAAa,SAAS,cAAc,IAAI,CACnE,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CACN,oEAAoE,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CAC5G,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,IAA8B,EAC9B,GAAgC,EAChC,IAAoF;IAEpF,MAAM,0BAA0B,CAAC,IAAI,EAAE,GAAG,EAAE;QAC1C,cAAc,EAAE,4BAA4B;QAC5C,KAAK,EAAE,UAAU;QACjB,WAAW,EACT,UAAU,GAAG,CAAC,SAAS,yDAAyD;YAChF,qDAAqD,IAAI,CAAC,MAAM,kBAAkB;YAClF,8EAA8E;YAC9E,iFAAiF;YACjF,0DAA0D;QAC5D,6EAA6E;QAC7E,2EAA2E;QAC3E,QAAQ,EAAE,YAAY;QACtB,QAAQ,EAAE;YACR,WAAW,EAAE,IAAI,CAAC,UAAU;YAC5B,WAAW,EAAE,IAAI,CAAC,gBAAgB;YAClC,YAAY,EAAE,IAAI,CAAC,MAAM;SAC1B;QACD,OAAO,EAAE,GAAG,EAAE;YACZ,GAAG,CAAC,IAAI,CACN,qEAAqE,GAAG,CAAC,SAAS,mBAAmB,IAAI,CAAC,MAAM,IAAI,CACrH,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAiBD;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,IAAsB,EACtB,GAAgC,EAChC,mBAA2B,EAC3B,IA2BC;IAED,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,uBAAuB,CAAC;IACzD,sEAAsE;IACtE,4EAA4E;IAC5E,IAAI,IAAI,EAAE,WAAW,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QACvD,GAAG,CAAC,IAAI,CACN,qBAAqB,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,WAAW,+BAA+B;YACtF,YAAY,OAAO,wDAAwD,CAC5E,CAAC;QACF,OAAO;IACT,CAAC;IACD,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,uBAAuB,IAAI,uBAAuB,CAAC,EAAE,CAAC;IAC/E,MAAM,gBAAgB,GAAG,mBAAmB,GAAG,CAAC,CAAC;IAEjD,MAAM,OAAO,GAAG,KAAK,IAAmB,EAAE;QACxC,IAAI,CAAC,IAAI,CAAC,qBAAqB;YAAE,OAAO;QACxC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QAClE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CACN,sDAAsD,GAAG,CAAC,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CAClG,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,IAAI,CAAC,qBAAqB,IAAI,gBAAgB,IAAI,UAAU,EAAE,CAAC;QACjE,4EAA4E;QAC5E,+EAA+E;QAC/E,4EAA4E;QAC5E,4EAA4E;QAC5E,8EAA8E;QAC9E,8EAA8E;QAC9E,4EAA4E;QAC5E,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CACN,qEAAqE,GAAG,CAAC,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CACjH,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,8BAA8B,CAAC,IAAI,EAAE,GAAG,EAAE;YAC9C,YAAY,EAAE,gBAAgB;YAC9B,GAAG,EAAE,UAAU;YACf,OAAO;YACP,oBAAoB,EAAE,IAAI,EAAE,oBAAoB,IAAI,EAAE;SACvD,CAAC,CAAC;QACH,GAAG,CAAC,IAAI,CACN,qBAAqB,GAAG,CAAC,SAAS,yCAAyC,gBAAgB,WAAW,UAAU,IAAI;YACpH,WAAW,OAAO,oFAAoF;YACtG,0GAA0G,CAC3G,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,8EAA8E;QAC9E,4EAA4E;QAC5E,8EAA8E;QAC9E,gCAAgC;QAChC,MAAM,OAAO,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,OAAO,KAAK,gBAAgB;YACzC,CAAC,CAAC,iEAAiE;YACnE,CAAC,CAAC,0GAA0G,CAAC;QAC/G,GAAG,CAAC,IAAI,CACN,qBAAqB,GAAG,CAAC,SAAS,iBAAiB,MAAM,GAAG;YAC5D,gBAAgB,gBAAgB,IAAI,UAAU,IAAI,CACnD,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CAAC,SAAiB,EAAE,wBAAgC;IAC1F,IAAI,wBAAwB,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IACtD,OAAO;QACL,IAAI,EAAE,wBAAwB;QAC9B,GAAG,EACD,gBAAgB,SAAS,oEAAoE;YAC7F,uDAAuD;KAC1D,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,IAA8B,EAC9B,GAAgC,EAChC,IAKC;IAED,2EAA2E;IAC3E,6EAA6E;IAC7E,4EAA4E;IAC5E,+EAA+E;IAC/E,8CAA8C;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC;IACjD,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC;QACvC,CAAC,CAAC,iBAAiB,QAAQ,CAAC,MAAM,8DAA8D;YAC9F,8BAA8B;YAC9B,QAAQ;iBACL,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;iBACxF,IAAI,CAAC,IAAI,CAAC;YACb,kFAAkF;QACpF,CAAC,CAAC,6FAA6F;YAC7F,4FAA4F;YAC5F,wBAAwB,CAAC;IAE7B,MAAM,0BAA0B,CAAC,IAAI,EAAE,GAAG,EAAE;QAC1C,cAAc,EAAE,0BAA0B;QAC1C,KAAK,EAAE,mBAAmB;QAC1B,UAAU,EAAE,kBAAkB,CAAC,mBAAmB;QAClD,WAAW,EACT,cAAc,GAAG,CAAC,SAAS,2CAA2C,IAAI,CAAC,YAAY,WAAW;YAClG,QAAQ,IAAI,CAAC,GAAG,6EAA6E;YAC7F,4FAA4F;YAC5F,+DAA+D;YAC/D,aAAa;QACf,QAAQ,EAAE,wBAAwB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC;QAClE,QAAQ,EAAE;YACR,UAAU,EAAE,GAAG,CAAC,SAAS;YACzB,aAAa,EAAE,IAAI,CAAC,YAAY;YAChC,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,UAAU,EAAE,mBAAmB;YAC/B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,uBAAuB;YAChD,gCAAgC,EAAE,QAAQ,CAAC,MAAM;YACjD,mCAAmC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YAC7D,wEAAwE;YACxE,gEAAgE;YAChE,eAAe,EAAE,iBAAiB;SACnC;QACD,OAAO,EAAE,GAAG,EAAE;YACZ,GAAG,CAAC,IAAI,CACN,mEAAmE,GAAG,CAAC,SAAS,IAAI;gBACpF,cAAc,IAAI,CAAC,YAAY,SAAS,IAAI,CAAC,GAAG,0BAA0B,CAC3E,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,IAA8B,EAC9B,GAAgC;IAEhC,MAAM,0BAA0B,CAAC,IAAI,EAAE,GAAG,EAAE;QAC1C,cAAc,EAAE,2BAA2B;QAC3C,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EACT,cAAc,GAAG,CAAC,SAAS,4CAA4C;YACvE,qEAAqE;YACrE,wEAAwE;YACxE,qEAAqE;YACrE,uEAAuE;YACvE,sEAAsE;YACtE,qBAAqB;QACvB,0EAA0E;QAC1E,QAAQ,EAAE,YAAY;QACtB,QAAQ,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,eAAe,EAAE,iBAAiB,EAAE;QACpI,OAAO,EAAE,GAAG,EAAE;YACZ,GAAG,CAAC,IAAI,CACN,oEAAoE,GAAG,CAAC,SAAS,IAAI;gBACrF,0CAA0C,CAC3C,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,IAA8B,EAC9B,GAAgC;IAEhC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC;IAC9D,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,gBAAgB,CAAC;YAC1B,cAAc;YACd,SAAS;YACT,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,kBAAkB,CAAC,mBAAmB;YAClD,0EAA0E;YAC1E,2EAA2E;YAC3E,WAAW,EAAE,uBAAuB,CAAC,cAAc;YACnD,QAAQ,EAAE,YAAY;YACtB,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;YAC9B,WAAW,EACT,sEAAsE;gBACtE,qEAAqE;gBACrE,qEAAqE;YACvE,cAAc,EAAE,uBAAuB;YACvC,sEAAsE;YACtE,QAAQ,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE;SAClE,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CACN,yEAAyE,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CACjH,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"review-exit-escalations.js","sourceRoot":"","sources":["../../src/completion/review-exit-escalations.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { ReviewFiledFindingSummary } from './review-exit-escalations.js';
2
2
  import type { ReviewExitDeps } from './review-exit-deps.js';
3
+ import type { FocusIssueInfo } from '../types/index.js';
3
4
  /** The review-filed evidence bundle the routing decision tree consumes. */
4
5
  export interface ReviewExitEvidence {
5
6
  reportExists: boolean;
@@ -11,6 +12,14 @@ export interface ReviewExitEvidence {
11
12
  attributedDeliveryIds: ReadonlySet<string>;
12
13
  reviewFiledTargetDeliveryIds: ReadonlySet<string>;
13
14
  openBlockingFindings: ReviewFiledFindingSummary[];
15
+ /**
16
+ * The focus issue read the signals above were derived from, and the review-filed
17
+ * id union they keyed on -- carried so the foreign-finding scope
18
+ * (review-exit-foreign-findings.ts) can re-derive the target sets without the
19
+ * findings it routed to another focus. Empty on a read failure.
20
+ */
21
+ focusIssues: FocusIssueInfo[];
22
+ reviewFiledIds: ReadonlySet<string>;
14
23
  }
15
24
  /**
16
25
  * Gather the review-exit evidence for a focus/session. Every read is best-effort:
@@ -1 +1 @@
1
- {"version":3,"file":"review-exit-evidence.d.ts","sourceRoot":"","sources":["../../src/completion/review-exit-evidence.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK5D,2EAA2E;AAC3E,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI,CAAC;IAChD,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,wBAAwB,EAAE,OAAO,CAAC;IAClC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,4BAA4B,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClD,oBAAoB,EAAE,yBAAyB,EAAE,CAAC;CACnD;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAChG,OAAO,CAAC,kBAAkB,CAAC,CA6F7B"}
1
+ {"version":3,"file":"review-exit-evidence.d.ts","sourceRoot":"","sources":["../../src/completion/review-exit-evidence.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAKxD,2EAA2E;AAC3E,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI,CAAC;IAChD,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,wBAAwB,EAAE,OAAO,CAAC;IAClC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,4BAA4B,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClD,oBAAoB,EAAE,yBAAyB,EAAE,CAAC;IAClD;;;;;OAKG;IACH,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACrC;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAChG,OAAO,CAAC,kBAAkB,CAAC,CAgG7B"}