@telora/daemon 0.24.25 → 0.24.29

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 (433) hide show
  1. package/build-info.json +10 -3
  2. package/dist/audit/audit-prompt.d.ts.map +1 -1
  3. package/dist/audit/audit-prompt.js +15 -0
  4. package/dist/audit/audit-prompt.js.map +1 -1
  5. package/dist/completion/completion-event/event.d.ts +4 -3
  6. package/dist/completion/completion-event/event.d.ts.map +1 -1
  7. package/dist/completion/completion-event/event.js.map +1 -1
  8. package/dist/completion/review-cycle-budget/review-cycle-cap.d.ts +19 -11
  9. package/dist/completion/review-cycle-budget/review-cycle-cap.d.ts.map +1 -1
  10. package/dist/completion/review-cycle-budget/review-cycle-cap.js +36 -36
  11. package/dist/completion/review-cycle-budget/review-cycle-cap.js.map +1 -1
  12. package/dist/completion/review-cycle-budget/review-loop-detection.d.ts +101 -0
  13. package/dist/completion/review-cycle-budget/review-loop-detection.d.ts.map +1 -0
  14. package/dist/completion/review-cycle-budget/review-loop-detection.js +105 -0
  15. package/dist/completion/review-cycle-budget/review-loop-detection.js.map +1 -0
  16. package/dist/completion/review-cycle-budget/spent-budget-release.d.ts +70 -0
  17. package/dist/completion/review-cycle-budget/spent-budget-release.d.ts.map +1 -0
  18. package/dist/completion/review-cycle-budget/spent-budget-release.js +98 -0
  19. package/dist/completion/review-cycle-budget/spent-budget-release.js.map +1 -0
  20. package/dist/completion/review-exit/review-defect-detector.d.ts +71 -49
  21. package/dist/completion/review-exit/review-defect-detector.d.ts.map +1 -1
  22. package/dist/completion/review-exit/review-defect-detector.js +75 -69
  23. package/dist/completion/review-exit/review-defect-detector.js.map +1 -1
  24. package/dist/completion/review-exit/review-exit-attribution.d.ts +1 -1
  25. package/dist/completion/review-exit/review-exit-attribution.js +1 -1
  26. package/dist/completion/review-exit/review-exit-deps.d.ts +5 -2
  27. package/dist/completion/review-exit/review-exit-deps.d.ts.map +1 -1
  28. package/dist/completion/review-exit/review-exit-deps.js +1 -1
  29. package/dist/completion/review-exit/review-exit-evidence.d.ts +10 -1
  30. package/dist/completion/review-exit/review-exit-evidence.d.ts.map +1 -1
  31. package/dist/completion/review-exit/review-exit-evidence.js +17 -14
  32. package/dist/completion/review-exit/review-exit-evidence.js.map +1 -1
  33. package/dist/completion/review-exit/review-exit-foreign-findings.d.ts +1 -1
  34. package/dist/completion/review-exit/review-exit-foreign-findings.d.ts.map +1 -1
  35. package/dist/completion/review-exit/review-exit-phase.d.ts.map +1 -1
  36. package/dist/completion/review-exit/review-exit-phase.js +12 -8
  37. package/dist/completion/review-exit/review-exit-phase.js.map +1 -1
  38. package/dist/completion/state-cascade/review-next-step.d.ts +12 -3
  39. package/dist/completion/state-cascade/review-next-step.d.ts.map +1 -1
  40. package/dist/completion/state-cascade/review-next-step.js +10 -1
  41. package/dist/completion/state-cascade/review-next-step.js.map +1 -1
  42. package/dist/completion/state-cascade/standing-approval-convergence.d.ts +1 -1
  43. package/dist/completion/state-cascade/standing-approval-convergence.d.ts.map +1 -1
  44. package/dist/completion/state-cascade/standing-approval-convergence.js +10 -4
  45. package/dist/completion/state-cascade/standing-approval-convergence.js.map +1 -1
  46. package/dist/completion/state-cascade/state-cascade.d.ts +3 -0
  47. package/dist/completion/state-cascade/state-cascade.d.ts.map +1 -1
  48. package/dist/completion/state-cascade/state-cascade.js +16 -1
  49. package/dist/completion/state-cascade/state-cascade.js.map +1 -1
  50. package/dist/completion/team-exit/status-advance-phase.d.ts +1 -1
  51. package/dist/completion/team-exit/status-advance-phase.d.ts.map +1 -1
  52. package/dist/completion/team-exit/status-advance-phase.js +6 -4
  53. package/dist/completion/team-exit/status-advance-phase.js.map +1 -1
  54. package/dist/completion/team-outcome/apply-turn.d.ts.map +1 -1
  55. package/dist/completion/team-outcome/apply-turn.js +9 -4
  56. package/dist/completion/team-outcome/apply-turn.js.map +1 -1
  57. package/dist/completion/team-outcome/decide-turn-entry-rows.d.ts.map +1 -1
  58. package/dist/completion/team-outcome/decide-turn-entry-rows.js +28 -3
  59. package/dist/completion/team-outcome/decide-turn-entry-rows.js.map +1 -1
  60. package/dist/completion/team-outcome/decide.d.ts.map +1 -1
  61. package/dist/completion/team-outcome/decide.js +1 -0
  62. package/dist/completion/team-outcome/decide.js.map +1 -1
  63. package/dist/completion/team-outcome/exit-limits.d.ts +6 -0
  64. package/dist/completion/team-outcome/exit-limits.d.ts.map +1 -1
  65. package/dist/completion/team-outcome/exit-limits.js +6 -0
  66. package/dist/completion/team-outcome/exit-limits.js.map +1 -1
  67. package/dist/completion/team-outcome/exit-pipeline-state.d.ts +5 -0
  68. package/dist/completion/team-outcome/exit-pipeline-state.d.ts.map +1 -1
  69. package/dist/completion/team-outcome/exit-pipeline-state.js.map +1 -1
  70. package/dist/completion/team-teardown/session-hold-bounds.d.ts +10 -1
  71. package/dist/completion/team-teardown/session-hold-bounds.d.ts.map +1 -1
  72. package/dist/completion/team-teardown/session-hold-bounds.js +11 -0
  73. package/dist/completion/team-teardown/session-hold-bounds.js.map +1 -1
  74. package/dist/completion/team-teardown/session-hold.d.ts.map +1 -1
  75. package/dist/completion/team-teardown/session-hold.js +2 -0
  76. package/dist/completion/team-teardown/session-hold.js.map +1 -1
  77. package/dist/composition/engine-start-context.d.ts.map +1 -1
  78. package/dist/composition/engine-start-context.js +9 -1
  79. package/dist/composition/engine-start-context.js.map +1 -1
  80. package/dist/composition/execution-spawn-context.d.ts.map +1 -1
  81. package/dist/composition/execution-spawn-context.js +2 -0
  82. package/dist/composition/execution-spawn-context.js.map +1 -1
  83. package/dist/composition/judgement-contexts.d.ts.map +1 -1
  84. package/dist/composition/judgement-contexts.js +8 -2
  85. package/dist/composition/judgement-contexts.js.map +1 -1
  86. package/dist/composition/review-exit-context.d.ts.map +1 -1
  87. package/dist/composition/review-exit-context.js +2 -0
  88. package/dist/composition/review-exit-context.js.map +1 -1
  89. package/dist/composition/review-loop-context.d.ts +28 -0
  90. package/dist/composition/review-loop-context.d.ts.map +1 -0
  91. package/dist/composition/review-loop-context.js +147 -0
  92. package/dist/composition/review-loop-context.js.map +1 -0
  93. package/dist/composition/runtime-heartbeat-context.d.ts.map +1 -1
  94. package/dist/composition/runtime-heartbeat-context.js +8 -2
  95. package/dist/composition/runtime-heartbeat-context.js.map +1 -1
  96. package/dist/composition/spawn-pass-deps.d.ts.map +1 -1
  97. package/dist/composition/spawn-pass-deps.js +3 -0
  98. package/dist/composition/spawn-pass-deps.js.map +1 -1
  99. package/dist/composition/state-cascade-context.d.ts.map +1 -1
  100. package/dist/composition/state-cascade-context.js +3 -1
  101. package/dist/composition/state-cascade-context.js.map +1 -1
  102. package/dist/composition/tower-escalation-context.d.ts +12 -0
  103. package/dist/composition/tower-escalation-context.d.ts.map +1 -0
  104. package/dist/composition/tower-escalation-context.js +109 -0
  105. package/dist/composition/tower-escalation-context.js.map +1 -0
  106. package/dist/composition/workstation-intervals-context.d.ts +3 -0
  107. package/dist/composition/workstation-intervals-context.d.ts.map +1 -0
  108. package/dist/composition/workstation-intervals-context.js +33 -0
  109. package/dist/composition/workstation-intervals-context.js.map +1 -0
  110. package/dist/daemon-state/awaiting-slot.d.ts +18 -1
  111. package/dist/daemon-state/awaiting-slot.d.ts.map +1 -1
  112. package/dist/daemon-state/awaiting-slot.js +7 -0
  113. package/dist/daemon-state/awaiting-slot.js.map +1 -1
  114. package/dist/delivery/delivery-reconciler.d.ts +7 -7
  115. package/dist/delivery/recorded-concerns.d.ts +63 -28
  116. package/dist/delivery/recorded-concerns.d.ts.map +1 -1
  117. package/dist/delivery/recorded-concerns.js +72 -28
  118. package/dist/delivery/recorded-concerns.js.map +1 -1
  119. package/dist/directive/directive-queue.d.ts +8 -0
  120. package/dist/directive/directive-queue.d.ts.map +1 -1
  121. package/dist/directive/directive-queue.js +1 -1
  122. package/dist/directive/directive-queue.js.map +1 -1
  123. package/dist/focus/control-state.d.ts +6 -4
  124. package/dist/focus/control-state.d.ts.map +1 -1
  125. package/dist/focus/control-state.js +6 -4
  126. package/dist/focus/control-state.js.map +1 -1
  127. package/dist/focus/daemon-contexts-judgement.d.ts +6 -0
  128. package/dist/focus/daemon-contexts-judgement.d.ts.map +1 -1
  129. package/dist/focus/daemon-contexts.d.ts +6 -0
  130. package/dist/focus/daemon-contexts.d.ts.map +1 -1
  131. package/dist/focus/daemon-contexts.js.map +1 -1
  132. package/dist/focus/focus-engine.d.ts.map +1 -1
  133. package/dist/focus/focus-engine.js +3 -1
  134. package/dist/focus/focus-engine.js.map +1 -1
  135. package/dist/focus/focus-executor.d.ts.map +1 -1
  136. package/dist/focus/focus-executor.js +3 -2
  137. package/dist/focus/focus-executor.js.map +1 -1
  138. package/dist/focus/focus-loop-registry.d.ts.map +1 -1
  139. package/dist/focus/focus-loop-registry.js +42 -0
  140. package/dist/focus/focus-loop-registry.js.map +1 -1
  141. package/dist/focus/focus-poller-auto-advance.d.ts +4 -2
  142. package/dist/focus/focus-poller-auto-advance.d.ts.map +1 -1
  143. package/dist/focus/focus-poller-auto-advance.js +24 -18
  144. package/dist/focus/focus-poller-auto-advance.js.map +1 -1
  145. package/dist/focus/focus-poller-spawn.d.ts.map +1 -1
  146. package/dist/focus/focus-poller-spawn.js +8 -6
  147. package/dist/focus/focus-poller-spawn.js.map +1 -1
  148. package/dist/focus/heartbeat.d.ts +9 -2
  149. package/dist/focus/heartbeat.d.ts.map +1 -1
  150. package/dist/focus/heartbeat.js +9 -1
  151. package/dist/focus/heartbeat.js.map +1 -1
  152. package/dist/focus/pending-directive-gates.d.ts +14 -0
  153. package/dist/focus/pending-directive-gates.d.ts.map +1 -1
  154. package/dist/focus/pending-directive-gates.js +25 -1
  155. package/dist/focus/pending-directive-gates.js.map +1 -1
  156. package/dist/focus/pending-spawn-pass-deps.d.ts +7 -0
  157. package/dist/focus/pending-spawn-pass-deps.d.ts.map +1 -1
  158. package/dist/focus/pending-spawn-review-next-step.d.ts +1 -1
  159. package/dist/focus/pending-spawn-review-next-step.d.ts.map +1 -1
  160. package/dist/focus/pending-spawn-review-next-step.js +2 -0
  161. package/dist/focus/pending-spawn-review-next-step.js.map +1 -1
  162. package/dist/focus/ready-focus-team-work.d.ts +9 -4
  163. package/dist/focus/ready-focus-team-work.d.ts.map +1 -1
  164. package/dist/focus/ready-focus-team-work.js +14 -3
  165. package/dist/focus/ready-focus-team-work.js.map +1 -1
  166. package/dist/focus/verify-open-issues.d.ts +3 -2
  167. package/dist/focus/verify-open-issues.d.ts.map +1 -1
  168. package/dist/focus/verify-open-issues.js +6 -4
  169. package/dist/focus/verify-open-issues.js.map +1 -1
  170. package/dist/focus/workstation-intervals.d.ts +83 -0
  171. package/dist/focus/workstation-intervals.d.ts.map +1 -0
  172. package/dist/focus/workstation-intervals.js +81 -0
  173. package/dist/focus/workstation-intervals.js.map +1 -0
  174. package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts +5 -2
  175. package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts.map +1 -1
  176. package/dist/focus-stage-lifecycle/wedge-watchdog.js +2 -2
  177. package/dist/focus-stage-lifecycle/wedge-watchdog.js.map +1 -1
  178. package/dist/nexus/escalation-bridge.d.ts.map +1 -1
  179. package/dist/nexus/escalation-bridge.js +2 -1
  180. package/dist/nexus/escalation-bridge.js.map +1 -1
  181. package/dist/nexus/file-escalation.d.ts.map +1 -1
  182. package/dist/nexus/file-escalation.js +1 -0
  183. package/dist/nexus/file-escalation.js.map +1 -1
  184. package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
  185. package/dist/prompt-sections/persona-sections.js +4 -1
  186. package/dist/prompt-sections/persona-sections.js.map +1 -1
  187. package/dist/prompt-sections/qa-author-section.d.ts.map +1 -1
  188. package/dist/prompt-sections/qa-author-section.js +18 -1
  189. package/dist/prompt-sections/qa-author-section.js.map +1 -1
  190. package/dist/prompt-sections/scoping-sections.d.ts +0 -12
  191. package/dist/prompt-sections/scoping-sections.d.ts.map +1 -1
  192. package/dist/prompt-sections/scoping-sections.js +16 -2
  193. package/dist/prompt-sections/scoping-sections.js.map +1 -1
  194. package/dist/prompts/bounded-universals.d.ts +13 -0
  195. package/dist/prompts/bounded-universals.d.ts.map +1 -0
  196. package/dist/prompts/bounded-universals.js +32 -0
  197. package/dist/prompts/bounded-universals.js.map +1 -0
  198. package/dist/queries/api-client/shared.d.ts +2 -1
  199. package/dist/queries/api-client/shared.d.ts.map +1 -1
  200. package/dist/queries/api-client/shared.js +31 -1
  201. package/dist/queries/api-client/shared.js.map +1 -1
  202. package/dist/queries/deliveries/deliveries.js +1 -1
  203. package/dist/queries/deliveries/issues.d.ts.map +1 -1
  204. package/dist/queries/deliveries/issues.js +1 -0
  205. package/dist/queries/deliveries/issues.js.map +1 -1
  206. package/dist/queries/delivery-gate-state/delivery-gate-state.js +1 -1
  207. package/dist/queries/delivery-gate-state/verify-own-holds.d.ts +24 -2
  208. package/dist/queries/delivery-gate-state/verify-own-holds.d.ts.map +1 -1
  209. package/dist/queries/delivery-gate-state/verify-own-holds.js.map +1 -1
  210. package/dist/queries/escalations/cause-key.d.ts.map +1 -1
  211. package/dist/queries/escalations/cause-key.js +1 -0
  212. package/dist/queries/escalations/cause-key.js.map +1 -1
  213. package/dist/queries/escalations/escalation-consumption.d.ts +13 -0
  214. package/dist/queries/escalations/escalation-consumption.d.ts.map +1 -1
  215. package/dist/queries/escalations/escalation-consumption.js +12 -2
  216. package/dist/queries/escalations/escalation-consumption.js.map +1 -1
  217. package/dist/queries/escalations/escalations.d.ts.map +1 -1
  218. package/dist/queries/escalations/escalations.js +2 -1
  219. package/dist/queries/escalations/escalations.js.map +1 -1
  220. package/dist/queries/escalations/tower-escalations.d.ts +82 -0
  221. package/dist/queries/escalations/tower-escalations.d.ts.map +1 -0
  222. package/dist/queries/escalations/tower-escalations.js +97 -0
  223. package/dist/queries/escalations/tower-escalations.js.map +1 -0
  224. package/dist/queries/focus-review/recorded-concern-ids.d.ts +48 -11
  225. package/dist/queries/focus-review/recorded-concern-ids.d.ts.map +1 -1
  226. package/dist/queries/focus-review/recorded-concern-ids.js +42 -12
  227. package/dist/queries/focus-review/recorded-concern-ids.js.map +1 -1
  228. package/dist/queries/focus-review/review-criterion-verdicts.d.ts +37 -0
  229. package/dist/queries/focus-review/review-criterion-verdicts.d.ts.map +1 -0
  230. package/dist/queries/focus-review/review-criterion-verdicts.js +64 -0
  231. package/dist/queries/focus-review/review-criterion-verdicts.js.map +1 -0
  232. package/dist/queries/focus-review/review-finding-facts.d.ts +18 -6
  233. package/dist/queries/focus-review/review-finding-facts.d.ts.map +1 -1
  234. package/dist/queries/focus-review/review-finding-facts.js +21 -8
  235. package/dist/queries/focus-review/review-finding-facts.js.map +1 -1
  236. package/dist/queries/focuses/ended-arm.d.ts +56 -13
  237. package/dist/queries/focuses/ended-arm.d.ts.map +1 -1
  238. package/dist/queries/focuses/ended-arm.js +40 -14
  239. package/dist/queries/focuses/ended-arm.js.map +1 -1
  240. package/dist/queries/focuses/focus-criteria-standing.d.ts +12 -0
  241. package/dist/queries/focuses/focus-criteria-standing.d.ts.map +1 -1
  242. package/dist/queries/focuses/focus-criteria-standing.js +13 -0
  243. package/dist/queries/focuses/focus-criteria-standing.js.map +1 -1
  244. package/dist/queries/focuses/focus-discovery.d.ts +14 -3
  245. package/dist/queries/focuses/focus-discovery.d.ts.map +1 -1
  246. package/dist/queries/focuses/focus-discovery.js +2 -19
  247. package/dist/queries/focuses/focus-discovery.js.map +1 -1
  248. package/dist/queries/focuses/focuses.d.ts +15 -12
  249. package/dist/queries/focuses/focuses.d.ts.map +1 -1
  250. package/dist/queries/focuses/focuses.js +15 -13
  251. package/dist/queries/focuses/focuses.js.map +1 -1
  252. package/dist/queries/sessions/sessions.d.ts.map +1 -1
  253. package/dist/queries/sessions/sessions.js +2 -1
  254. package/dist/queries/sessions/sessions.js.map +1 -1
  255. package/dist/queries/tower-decisions/tower-decisions.d.ts +103 -0
  256. package/dist/queries/tower-decisions/tower-decisions.d.ts.map +1 -0
  257. package/dist/queries/tower-decisions/tower-decisions.js +138 -0
  258. package/dist/queries/tower-decisions/tower-decisions.js.map +1 -0
  259. package/dist/queries/verification/verification.js +1 -1
  260. package/dist/queries/wire-schemas/schemas.d.ts +2 -0
  261. package/dist/queries/wire-schemas/schemas.d.ts.map +1 -1
  262. package/dist/queries/wire-schemas/schemas.js +8 -2
  263. package/dist/queries/wire-schemas/schemas.js.map +1 -1
  264. package/dist/queries/workstation-intervals/workstation-intervals.d.ts +52 -0
  265. package/dist/queries/workstation-intervals/workstation-intervals.d.ts.map +1 -0
  266. package/dist/queries/workstation-intervals/workstation-intervals.js +49 -0
  267. package/dist/queries/workstation-intervals/workstation-intervals.js.map +1 -0
  268. package/dist/resolvers/escalation-answers.d.ts +31 -0
  269. package/dist/resolvers/escalation-answers.d.ts.map +1 -1
  270. package/dist/resolvers/escalation-answers.js +31 -17
  271. package/dist/resolvers/escalation-answers.js.map +1 -1
  272. package/dist/resolvers/focus-criteria-standing.d.ts.map +1 -1
  273. package/dist/resolvers/focus-criteria-standing.js +20 -0
  274. package/dist/resolvers/focus-criteria-standing.js.map +1 -1
  275. package/dist/shell/unified-engine-lifecycle.d.ts +11 -1
  276. package/dist/shell/unified-engine-lifecycle.d.ts.map +1 -1
  277. package/dist/shell/unified-engine-lifecycle.js +10 -1
  278. package/dist/shell/unified-engine-lifecycle.js.map +1 -1
  279. package/dist/spawn/directive-dispatch.d.ts.map +1 -1
  280. package/dist/spawn/directive-dispatch.js +1 -0
  281. package/dist/spawn/directive-dispatch.js.map +1 -1
  282. package/dist/spawn/lead-continuation.d.ts +4 -3
  283. package/dist/spawn/lead-continuation.d.ts.map +1 -1
  284. package/dist/spawn/lead-continuation.js.map +1 -1
  285. package/dist/spawn/live-answer-delivery.d.ts +53 -0
  286. package/dist/spawn/live-answer-delivery.d.ts.map +1 -0
  287. package/dist/spawn/live-answer-delivery.js +26 -0
  288. package/dist/spawn/live-answer-delivery.js.map +1 -0
  289. package/dist/spawn/routing-decider-spawn.d.ts +64 -2
  290. package/dist/spawn/routing-decider-spawn.d.ts.map +1 -1
  291. package/dist/spawn/routing-decider-spawn.js +65 -20
  292. package/dist/spawn/routing-decider-spawn.js.map +1 -1
  293. package/dist/spawn/worktree-session.d.ts +7 -5
  294. package/dist/spawn/worktree-session.d.ts.map +1 -1
  295. package/dist/spawn/worktree-session.js +11 -7
  296. package/dist/spawn/worktree-session.js.map +1 -1
  297. package/dist/supervision/escalation-filing.js +1 -1
  298. package/dist/supervision/incident-correlation.d.ts +4 -1
  299. package/dist/supervision/incident-correlation.d.ts.map +1 -1
  300. package/dist/supervision/incident-correlation.js +7 -2
  301. package/dist/supervision/incident-correlation.js.map +1 -1
  302. package/dist/supervision/review-cycle-cap-hold.d.ts +11 -5
  303. package/dist/supervision/review-cycle-cap-hold.d.ts.map +1 -1
  304. package/dist/supervision/review-cycle-cap-hold.js +29 -11
  305. package/dist/supervision/review-cycle-cap-hold.js.map +1 -1
  306. package/dist/supervision/review-loop-detector.d.ts +48 -0
  307. package/dist/supervision/review-loop-detector.d.ts.map +1 -0
  308. package/dist/supervision/review-loop-detector.js +13 -0
  309. package/dist/supervision/review-loop-detector.js.map +1 -0
  310. package/dist/supervision/review-loop-hold.d.ts +29 -0
  311. package/dist/supervision/review-loop-hold.d.ts.map +1 -0
  312. package/dist/supervision/review-loop-hold.js +99 -0
  313. package/dist/supervision/review-loop-hold.js.map +1 -0
  314. package/dist/supervision/stall-detector-config.d.ts +8 -0
  315. package/dist/supervision/stall-detector-config.d.ts.map +1 -1
  316. package/dist/supervision/stall-detector-config.js +14 -3
  317. package/dist/supervision/stall-detector-config.js.map +1 -1
  318. package/dist/supervision/stop-registry.d.ts +4 -0
  319. package/dist/supervision/stop-registry.d.ts.map +1 -1
  320. package/dist/supervision/stop-registry.js +3 -1
  321. package/dist/supervision/stop-registry.js.map +1 -1
  322. package/dist/supervision/stop-rows-delivery.d.ts +10 -0
  323. package/dist/supervision/stop-rows-delivery.d.ts.map +1 -1
  324. package/dist/supervision/stop-rows-delivery.js +29 -0
  325. package/dist/supervision/stop-rows-delivery.js.map +1 -1
  326. package/dist/supervision/stop-rows-review-loop.d.ts +35 -0
  327. package/dist/supervision/stop-rows-review-loop.d.ts.map +1 -0
  328. package/dist/supervision/stop-rows-review-loop.js +150 -0
  329. package/dist/supervision/stop-rows-review-loop.js.map +1 -0
  330. package/dist/supervision/stop-rows-team-session.d.ts +1 -1
  331. package/dist/supervision/stop-rows-team-session.d.ts.map +1 -1
  332. package/dist/supervision/stop-rows-team-session.js.map +1 -1
  333. package/dist/supervision/unreviewed-settle-detector.d.ts +7 -2
  334. package/dist/supervision/unreviewed-settle-detector.d.ts.map +1 -1
  335. package/dist/supervision/unreviewed-settle-detector.js +15 -2
  336. package/dist/supervision/unreviewed-settle-detector.js.map +1 -1
  337. package/dist/templates/agents-md.d.ts.map +1 -1
  338. package/dist/templates/agents-md.js +1 -0
  339. package/dist/templates/agents-md.js.map +1 -1
  340. package/dist/templates/claude-md.d.ts +1 -1
  341. package/dist/templates/claude-md.d.ts.map +1 -1
  342. package/dist/templates/claude-md.js +12 -0
  343. package/dist/templates/claude-md.js.map +1 -1
  344. package/dist/testing/fixtures/api-client.js +1 -1
  345. package/dist/testing/fixtures/index.js +1 -1
  346. package/dist/testing/fixtures/pending-spawn-world.d.ts +4 -0
  347. package/dist/testing/fixtures/pending-spawn-world.d.ts.map +1 -1
  348. package/dist/testing/fixtures/pending-spawn-world.js +15 -2
  349. package/dist/testing/fixtures/pending-spawn-world.js.map +1 -1
  350. package/dist/testing/fixtures/recording-api-client.js +1 -1
  351. package/dist/testing/fixtures/review-exit-deps.d.ts.map +1 -1
  352. package/dist/testing/fixtures/review-exit-deps.js +3 -1
  353. package/dist/testing/fixtures/review-exit-deps.js.map +1 -1
  354. package/dist/testing/fixtures/review-loop.d.ts +19 -0
  355. package/dist/testing/fixtures/review-loop.d.ts.map +1 -0
  356. package/dist/testing/fixtures/review-loop.js +30 -0
  357. package/dist/testing/fixtures/review-loop.js.map +1 -0
  358. package/dist/testing/fixtures/shortfall-rework-hold-deps.d.ts.map +1 -1
  359. package/dist/testing/fixtures/shortfall-rework-hold-deps.js +1 -0
  360. package/dist/testing/fixtures/shortfall-rework-hold-deps.js.map +1 -1
  361. package/dist/testing/fixtures/tower-loop.d.ts +28 -0
  362. package/dist/testing/fixtures/tower-loop.d.ts.map +1 -0
  363. package/dist/testing/fixtures/tower-loop.js +83 -0
  364. package/dist/testing/fixtures/tower-loop.js.map +1 -0
  365. package/dist/tower/tower-escalation-gather.d.ts +33 -0
  366. package/dist/tower/tower-escalation-gather.d.ts.map +1 -0
  367. package/dist/tower/tower-escalation-gather.js +38 -0
  368. package/dist/tower/tower-escalation-gather.js.map +1 -0
  369. package/dist/tower/tower-escalation-prompt.d.ts +62 -0
  370. package/dist/tower/tower-escalation-prompt.d.ts.map +1 -0
  371. package/dist/tower/tower-escalation-prompt.js +130 -0
  372. package/dist/tower/tower-escalation-prompt.js.map +1 -0
  373. package/dist/tower/tower-escalation-routing.d.ts +49 -0
  374. package/dist/tower/tower-escalation-routing.d.ts.map +1 -0
  375. package/dist/tower/tower-escalation-routing.js +53 -0
  376. package/dist/tower/tower-escalation-routing.js.map +1 -0
  377. package/dist/tower/tower-escalation-session.d.ts +149 -0
  378. package/dist/tower/tower-escalation-session.d.ts.map +1 -0
  379. package/dist/tower/tower-escalation-session.js +238 -0
  380. package/dist/tower/tower-escalation-session.js.map +1 -0
  381. package/dist/tower/tower-supervisor-history.d.ts +129 -0
  382. package/dist/tower/tower-supervisor-history.d.ts.map +1 -0
  383. package/dist/tower/tower-supervisor-history.js +217 -0
  384. package/dist/tower/tower-supervisor-history.js.map +1 -0
  385. package/dist/tower/tower-supervisor-prompt.d.ts +21 -0
  386. package/dist/tower/tower-supervisor-prompt.d.ts.map +1 -0
  387. package/dist/tower/tower-supervisor-prompt.js +205 -0
  388. package/dist/tower/tower-supervisor-prompt.js.map +1 -0
  389. package/dist/tower/tower-supervisor-session.d.ts +220 -0
  390. package/dist/tower/tower-supervisor-session.d.ts.map +1 -0
  391. package/dist/tower/tower-supervisor-session.js +307 -0
  392. package/dist/tower/tower-supervisor-session.js.map +1 -0
  393. package/dist/tower/tower-supervisor.d.ts +86 -0
  394. package/dist/tower/tower-supervisor.d.ts.map +1 -0
  395. package/dist/tower/tower-supervisor.js +8 -0
  396. package/dist/tower/tower-supervisor.js.map +1 -0
  397. package/dist/types/index.js +1 -1
  398. package/dist/verify/deterministic-gate/verification-deterministic.js +1 -1
  399. package/dist/verify/effect-reconciliation/verify-reconciliation.d.ts +11 -0
  400. package/dist/verify/effect-reconciliation/verify-reconciliation.d.ts.map +1 -1
  401. package/dist/verify/effect-reconciliation/verify-reconciliation.js +35 -2
  402. package/dist/verify/effect-reconciliation/verify-reconciliation.js.map +1 -1
  403. package/dist/verify/effect-reconciliation/verify-restatement.d.ts +4 -0
  404. package/dist/verify/effect-reconciliation/verify-restatement.d.ts.map +1 -1
  405. package/dist/verify/effect-reconciliation/verify-restatement.js +3 -3
  406. package/dist/verify/effect-reconciliation/verify-restatement.js.map +1 -1
  407. package/dist/verify/engine/reconciliation-step.d.ts +9 -2
  408. package/dist/verify/engine/reconciliation-step.d.ts.map +1 -1
  409. package/dist/verify/engine/reconciliation-step.js +26 -3
  410. package/dist/verify/engine/reconciliation-step.js.map +1 -1
  411. package/dist/verify/outcome-routing/incurable-model-hold.d.ts +2 -0
  412. package/dist/verify/outcome-routing/incurable-model-hold.d.ts.map +1 -1
  413. package/dist/verify/outcome-routing/incurable-model-hold.js +21 -6
  414. package/dist/verify/outcome-routing/incurable-model-hold.js.map +1 -1
  415. package/dist/verify/outcome-routing/repeating-model-hold.d.ts.map +1 -1
  416. package/dist/verify/outcome-routing/repeating-model-hold.js +13 -7
  417. package/dist/verify/outcome-routing/repeating-model-hold.js.map +1 -1
  418. package/dist/verify/outcome-routing/unjudged-node-hold.d.ts +31 -0
  419. package/dist/verify/outcome-routing/unjudged-node-hold.d.ts.map +1 -0
  420. package/dist/verify/outcome-routing/unjudged-node-hold.js +134 -0
  421. package/dist/verify/outcome-routing/unjudged-node-hold.js.map +1 -0
  422. package/dist/verify/outcome-routing/verification-model-unavailable-hold.d.ts +4 -0
  423. package/dist/verify/outcome-routing/verification-model-unavailable-hold.d.ts.map +1 -1
  424. package/dist/verify/outcome-routing/verification-model-unavailable-hold.js +25 -8
  425. package/dist/verify/outcome-routing/verification-model-unavailable-hold.js.map +1 -1
  426. package/dist/verify/outcome-routing/verification-rework-issue.d.ts +4 -4
  427. package/dist/verify/outcome-routing/verification-rework-issue.d.ts.map +1 -1
  428. package/dist/verify/outcome-routing/verification-rework-issue.js +16 -6
  429. package/dist/verify/outcome-routing/verification-rework-issue.js.map +1 -1
  430. package/dist/verify/shortfalls/pre-judge-rulings.d.ts.map +1 -1
  431. package/dist/verify/shortfalls/pre-judge-rulings.js +1 -0
  432. package/dist/verify/shortfalls/pre-judge-rulings.js.map +1 -1
  433. package/package.json +3 -3
@@ -30,6 +30,7 @@
30
30
  * directive's lineage -- and records what it spawned, so a test reads "the next
31
31
  * actual spawn" rather than inferring it from a gate's return value.
32
32
  */
33
+ import { RecordedConcernsUnreadableError } from '../../delivery/recorded-concerns.js';
33
34
  import { PassThrough } from 'node:stream';
34
35
  import { tmpdir } from 'node:os';
35
36
  import { join } from 'node:path';
@@ -39,6 +40,7 @@ import { getActiveTeams } from '../../daemon-state/focus-team-state.js';
39
40
  import { makeFocusTeamState } from './index.js';
40
41
  import { isNextSpawnInTeardownCooldown } from '../../spawn/next-spawn-cooldown.js';
41
42
  import { recordFocusTeardown } from '../../supervision/spawn-cooldown.js';
43
+ import { NO_REVIEW_LOOPS } from './review-loop.js';
42
44
  /** The deliveries/issues reads over the world (honouring the fail flags). */
43
45
  export function makeWorldReads(world) {
44
46
  return {
@@ -54,6 +56,14 @@ export function makeWorldReads(world) {
54
56
  },
55
57
  };
56
58
  }
59
+ /** The world's recorded-concern read: none recorded, or the defer error while concernsReadFails. */
60
+ export function makeWorldConcernReader(world) {
61
+ return async (focusId) => {
62
+ if (world.concernsReadFails)
63
+ throw new RecordedConcernsUnreadableError(focusId, new Error('facts read failed (api down)'));
64
+ return new Set();
65
+ };
66
+ }
57
67
  /**
58
68
  * PendingSpawnPassDeps over the world: the world's row is the only active focus,
59
69
  * no escalation parks a respawn, and every gate reads the world. Spawns are
@@ -66,6 +76,8 @@ export function makePendingSpawnPassDeps(world, spawns) {
66
76
  return {
67
77
  // The tower is off in this world: spawning exactly as before it.
68
78
  tower: { mode: () => 'off', passStanding: () => 'ok' },
79
+ // No workstation record in this world: a slot wait it leaves is not written anywhere.
80
+ slotWaits: { slotWaitsMoved: () => { } },
69
81
  getActiveFocuses: async () => [world.row],
70
82
  spawnFocusTeam: async (params) => {
71
83
  const consumed = consumePendingSpawnDirective(params.focusId);
@@ -87,10 +99,10 @@ export function makePendingSpawnPassDeps(world, spawns) {
87
99
  hasOpenReviewCoverageIncompleteEscalation: async () => false,
88
100
  },
89
101
  // The review-budget backstop reads the row's own review_cycle_count against this budget.
90
- reviewCycleCapHold: { resolveReviewCycleCap: () => 8 },
102
+ reviewCycleCapHold: { resolveReviewCycleCap: () => 8, reviewLoopHold: NO_REVIEW_LOOPS },
91
103
  reviewNextStep: {
92
104
  ...reads,
93
- readRecordedConcernIds: async () => new Set(),
105
+ readRecordedConcernIds: makeWorldConcernReader(world),
94
106
  now: () => Date.now(),
95
107
  fileDeferralExpiry: async () => { },
96
108
  escalationSpoolDir: spoolDir,
@@ -148,6 +160,7 @@ export function makeWorldCascadeDeps(world, stamps) {
148
160
  return {
149
161
  getFocusDeliveries: reads.getFocusDeliveries,
150
162
  getFocusIssues: reads.getFocusIssues,
163
+ readRecordedConcernIds: makeWorldConcernReader(world),
151
164
  setReviewRequestedAt: async (_focusId, isoTimestamp) => {
152
165
  stamps.push(isoTimestamp);
153
166
  world.row = { ...world.row, review_requested_at: isoTimestamp };
@@ -1 +1 @@
1
- {"version":3,"file":"pending-spawn-world.js","sourceRoot":"","sources":["../../../src/testing/fixtures/pending-spawn-world.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pending-spawn-world.js","sourceRoot":"","sources":["../../../src/testing/fixtures/pending-spawn-world.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,gHAAgH;AAChH,4FAA4F;AAC5F,2EAA2E;AAC3E,kEAAkE;AAClE,uEAAuE;AACvE,8DAA8D;AAC9D,oEAAoE;AACpE,sEAAsE;AACtE,+DAA+D;AAC/D,iEAAiE;AACjE,2FAA2F;AAC3F,gGAAgG;AAChG,mFAAmF;AACnF,2FAA2F;AAC3F,mFAAmF;AACnF,gFAAgF;AAChF,iEAAiE;AACjE,gBAAgB;AAEhB;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,+BAA+B,EAAE,MAAM,qCAAqC,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAMzC,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AA4BnD,6EAA6E;AAC7E,MAAM,UAAU,cAAc,CAAC,KAAwB;IAIrD,OAAO;QACL,kBAAkB,EAAE,KAAK,IAAI,EAAE;YAC7B,IAAI,KAAK,CAAC,mBAAmB;gBAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACpF,OAAO,KAAK,CAAC,UAAU,CAAC;QAC1B,CAAC;QACD,cAAc,EAAE,KAAK,IAAI,EAAE;YACzB,IAAI,KAAK,CAAC,eAAe;gBAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAC5E,OAAO,KAAK,CAAC,MAAM,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,sBAAsB,CAAC,KAAwB;IAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,EAAE;QACvB,IAAI,KAAK,CAAC,iBAAiB;YAAE,MAAM,IAAI,+BAA+B,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;QAC3H,OAAO,IAAI,GAAG,EAAU,CAAC;IAC3B,CAAC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAwB,EAAE,MAAuB;IACxF,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACpC,yGAAyG;IACzG,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,uBAAuB,OAAO,CAAC,GAAG,IAAI,UAAU,EAAE,EAAE,CAAC,CAAC;IACtF,OAAO;QACL,iEAAiE;QACjE,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE;QACtD,sFAAsF;QACtF,SAAS,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE;QACvC,gBAAgB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QACzC,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,QAAQ,GAAG,4BAA4B,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC9D,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,IAAI,IAAI,EAAE,CAAC,CAAC;YACzH,cAAc,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,kBAAkB,CAAC;gBACtD,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;gBACvB,WAAW,EAAE,QAAQ,EAAE,WAAW,IAAI,QAAQ;gBAC9C,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,QAAQ;gBACtC,yBAAyB,EAAE,QAAQ,EAAE,WAAW,IAAI,IAAI;gBACxD,aAAa,EAAE,gBAAgB,MAAM,CAAC,MAAM,EAAE;gBAC9C,OAAO,EAAE,IAAI,GAAG,MAAM,CAAC,MAAM;gBAC7B,SAAS,EAAE,IAAI,WAAW,EAAE;aAC7B,CAAC,CAAC,CAAC;QACN,CAAC;QACD,YAAY,EAAE;YACZ,4BAA4B,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK;YAC/C,yCAAyC,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK;SAC7D;QACD,yFAAyF;QACzF,kBAAkB,EAAE,EAAE,qBAAqB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,eAAe,EAAE;QACvF,cAAc,EAAE;YACd,GAAG,KAAK;YACR,sBAAsB,EAAE,sBAAsB,CAAC,KAAK,CAAC;YACrD,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YACrB,kBAAkB,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;YAClC,kBAAkB,EAAE,QAAQ;YAC5B,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;SACnB;QACD,cAAc,EAAE;YACd,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;YAC5C,+BAA+B,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;YACjD,oBAAoB,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;YACpC,yBAAyB,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;SAC5C;QACD,kBAAkB,EAAE;YAClB,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;YAC5C,sBAAsB,EAAE,KAAK,IAAI,EAAE;gBACjC,IAAI,KAAK,CAAC,YAAY,KAAK,YAAY;oBAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;gBAC1F,OAAO,KAAK,CAAC,YAAY,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YACpE,CAAC;YACD,yBAAyB,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;YAC3C,iBAAiB,EAAE,GAAG,EAAE,CAAC,IAAI;YAC7B,0BAA0B,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,mBAA4B,EAAE,CAAC;YAChF,sBAAsB,EAAE,KAAK,IAAI,EAAE;gBACjC,KAAK,CAAC,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC;YAC1D,CAAC;YACD,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,YAAqB,EAAE,MAAM,EAAE,yCAAyC,EAAE,CAAC;SAC7G;QACD,UAAU,EAAE;YACV,GAAG,KAAK;YACR,qBAAqB,EAAE,GAAG,EAAE,CAAC,IAAI,GAAG,EAAU;YAC9C,gBAAgB,EAAE,GAAG,EAAE,CAAC,SAAS;YACjC,qBAAqB,EAAE,GAAG,EAAE,CAAC,KAAK;SACnC;QACD,eAAe,EAAE;YACf,GAAG,EAAE,QAAQ;YACb,gBAAgB,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;SACjC;QACD,wEAAwE;QACxE,cAAc,EAAE;YACd,gBAAgB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;YACzC,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;YAC5C,kBAAkB,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC;SAC5F;QACD,kFAAkF;QAClF,iBAAiB,EAAE,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,mBAAmB,EAAE;QAC5F,sBAAsB,EAAE;YACtB,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;YACpF,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI;YACrB,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;SACtB;KACF,CAAC;AACJ,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,oBAAoB,CAAC,KAAwB,EAAE,MAAgB;IAC7E,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACpC,OAAO;QACL,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;QAC5C,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,sBAAsB,EAAE,sBAAsB,CAAC,KAAK,CAAC;QACrD,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE;YACrD,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC1B,KAAK,CAAC,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,mBAAmB,EAAE,YAAY,EAAE,CAAC;QAClE,CAAC;QACD,sBAAsB,EAAE,KAAK,IAAI,EAAE;YACjC,KAAK,CAAC,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC;QAC1D,CAAC;QACD,qBAAqB,EAAE,GAAG,EAAE,CAAC,KAAK;QAClC,gBAAgB,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;QAChC,eAAe,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAe,EAAE,CAAC;KAC1D,CAAC;AACJ,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: 32 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/testing/fixtures/recording-api-client.ts
2
+ // Pinned by: 36 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/testing/fixtures/recording-api-client.ts
3
3
  // PINNED-BY-END
4
4
  /**
5
5
  * Test fixture: install a RECORDING fake product-api client -- every call is
@@ -1 +1 @@
1
- {"version":3,"file":"review-exit-deps.d.ts","sourceRoot":"","sources":["../../../src/testing/fixtures/review-exit-deps.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kDAAkD,CAAC;AAEvF,6EAA6E;AAC7E,wBAAgB,kBAAkB,CAAC,SAAS,GAAE,OAAO,CAAC,cAAc,CAAM,GAAG,cAAc,CA+C1F"}
1
+ {"version":3,"file":"review-exit-deps.d.ts","sourceRoot":"","sources":["../../../src/testing/fixtures/review-exit-deps.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kDAAkD,CAAC;AAGvF,6EAA6E;AAC7E,wBAAgB,kBAAkB,CAAC,SAAS,GAAE,OAAO,CAAC,cAAc,CAAM,GAAG,cAAc,CAgD1F"}
@@ -1,6 +1,7 @@
1
1
  // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
- // Pinned by: 59 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/testing/fixtures/review-exit-deps.ts
2
+ // Pinned by: 60 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/testing/fixtures/review-exit-deps.ts
3
3
  // PINNED-BY-END
4
+ import { inertReviewLoopDetectionDeps } from './review-loop.js';
4
5
  /** A complete inert review-exit context, with `overrides` spread over it. */
5
6
  export function makeReviewExitDeps(overrides = {}) {
6
7
  return {
@@ -24,6 +25,7 @@ export function makeReviewExitDeps(overrides = {}) {
24
25
  resolveReviewCycleCap: () => Number.MAX_SAFE_INTEGER,
25
26
  releaseFocusArm: async () => { },
26
27
  isShuttingDown: () => false,
28
+ reviewLoop: inertReviewLoopDetectionDeps(),
27
29
  setReviewHandoffCount: async () => { },
28
30
  resolveReviewHandoffCap: () => Number.MAX_SAFE_INTEGER,
29
31
  resolveHandoffExhaustedHold: async () => 0,
@@ -1 +1 @@
1
- {"version":3,"file":"review-exit-deps.js","sourceRoot":"","sources":["../../../src/testing/fixtures/review-exit-deps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"review-exit-deps.js","sourceRoot":"","sources":["../../../src/testing/fixtures/review-exit-deps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Inert non-converging review-loop collaborators: no reviews, no decisions, a
3
+ * supervisor that is never called, and a hold read that answers no open loops.
4
+ * Every review-exit and spawn-gate fixture that does not exercise the loop
5
+ * binds these, so the loop machinery is present (its deps are required) and
6
+ * decides nothing.
7
+ *
8
+ * @module testing/fixtures/review-loop
9
+ */
10
+ import type { ReviewLoopDetectionDeps } from '../../completion/review-cycle-budget/review-loop-detection.js';
11
+ import type { ReviewLoopHoldDeps } from '../../supervision/review-loop-hold.js';
12
+ import { type TowerSupervisor } from '../../tower/tower-supervisor.js';
13
+ /** A supervisor that decides nothing and sweeps nothing. */
14
+ export declare const INERT_TOWER_SUPERVISOR: TowerSupervisor;
15
+ /** Detection deps that read nothing and record nothing (any write throws: an inert fixture must not be written through). */
16
+ export declare function inertReviewLoopDetectionDeps(overrides?: Partial<ReviewLoopDetectionDeps>): ReviewLoopDetectionDeps;
17
+ /** A hold read that answers no open loops. */
18
+ export declare const NO_REVIEW_LOOPS: ReviewLoopHoldDeps;
19
+ //# sourceMappingURL=review-loop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-loop.d.ts","sourceRoot":"","sources":["../../../src/testing/fixtures/review-loop.ts"],"names":[],"mappings":"AASA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+DAA+D,CAAC;AAC7G,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEzF,4DAA4D;AAC5D,eAAO,MAAM,sBAAsB,EAAE,eAGpC,CAAC;AAEF,4HAA4H;AAC5H,wBAAgB,4BAA4B,CAAC,SAAS,GAAE,OAAO,CAAC,uBAAuB,CAAM,GAAG,uBAAuB,CAWtH;AAED,8CAA8C;AAC9C,eAAO,MAAM,eAAe,EAAE,kBAA4D,CAAC"}
@@ -0,0 +1,30 @@
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-budget/review-cycle-cap-regression.test.ts,
3
+ // packages/daemon/src/completion/review-cycle-budget/review-loop-detection.test.ts,
4
+ // packages/daemon/src/focus/awaiting-slot.test.ts,
5
+ // packages/daemon/src/integration/review-request-verdict-composed.test.ts,
6
+ // packages/daemon/src/supervision/review-cycle-cap-hold.test.ts,
7
+ // packages/daemon/src/tower/tower-entrypoints.test.ts, packages/daemon/src/tower/tower-spawn-modes.test.ts
8
+ // PINNED-BY-END
9
+ import { emptySweepCounts } from '../../tower/tower-supervisor.js';
10
+ /** A supervisor that decides nothing and sweeps nothing. */
11
+ export const INERT_TOWER_SUPERVISOR = {
12
+ onLoopDetected: async () => { },
13
+ sweep: async () => emptySweepCounts(),
14
+ };
15
+ /** Detection deps that read nothing and record nothing (any write throws: an inert fixture must not be written through). */
16
+ export function inertReviewLoopDetectionDeps(overrides = {}) {
17
+ return {
18
+ listReviewCriterionVerdicts: async () => [],
19
+ listTowerDecisions: async () => ({ decisions: [], openLoopDecisionIds: [] }),
20
+ recordTowerDecision: async () => {
21
+ throw new Error('inertReviewLoopDetectionDeps: recordTowerDecision is not stubbed -- supply it in the overrides');
22
+ },
23
+ resolveReviewLoopThreshold: () => 3,
24
+ towerSupervisor: INERT_TOWER_SUPERVISOR,
25
+ ...overrides,
26
+ };
27
+ }
28
+ /** A hold read that answers no open loops. */
29
+ export const NO_REVIEW_LOOPS = { listOpenReviewLoops: async () => [] };
30
+ //# sourceMappingURL=review-loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-loop.js","sourceRoot":"","sources":["../../../src/testing/fixtures/review-loop.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,qGAAqG;AACrG,sFAAsF;AACtF,qDAAqD;AACrD,6EAA6E;AAC7E,mEAAmE;AACnE,6GAA6G;AAC7G,gBAAgB;AAchB,OAAO,EAAE,gBAAgB,EAAwB,MAAM,iCAAiC,CAAC;AAEzF,4DAA4D;AAC5D,MAAM,CAAC,MAAM,sBAAsB,GAAoB;IACrD,cAAc,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;IAC9B,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,gBAAgB,EAAE;CACtC,CAAC;AAEF,4HAA4H;AAC5H,MAAM,UAAU,4BAA4B,CAAC,YAA8C,EAAE;IAC3F,OAAO;QACL,2BAA2B,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE;QAC3C,kBAAkB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,CAAC;QAC5E,mBAAmB,EAAE,KAAK,IAAI,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,gGAAgG,CAAC,CAAC;QACpH,CAAC;QACD,0BAA0B,EAAE,GAAG,EAAE,CAAC,CAAC;QACnC,eAAe,EAAE,sBAAsB;QACvC,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,8CAA8C;AAC9C,MAAM,CAAC,MAAM,eAAe,GAAuB,EAAE,mBAAmB,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"shortfall-rework-hold-deps.d.ts","sourceRoot":"","sources":["../../../src/testing/fixtures/shortfall-rework-hold-deps.ts"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC7B,MAAM,kDAAkD,CAAC;AAE1D,mEAAmE;AACnE,wBAAgB,4BAA4B,CAAC,SAAS,GAAE,OAAO,CAAC,uBAAuB,CAAM,GAAG,uBAAuB,CAUtH;AAED,+FAA+F;AAC/F,wBAAgB,wBAAwB,CAAC,SAAS,GAAE,OAAO,CAAC,uBAAuB,CAAM,GAAG,uBAAuB,CAElH"}
1
+ {"version":3,"file":"shortfall-rework-hold-deps.d.ts","sourceRoot":"","sources":["../../../src/testing/fixtures/shortfall-rework-hold-deps.ts"],"names":[],"mappings":"AAaA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC7B,MAAM,kDAAkD,CAAC;AAE1D,mEAAmE;AACnE,wBAAgB,4BAA4B,CAAC,SAAS,GAAE,OAAO,CAAC,uBAAuB,CAAM,GAAG,uBAAuB,CAUtH;AAED,+FAA+F;AAC/F,wBAAgB,wBAAwB,CAAC,SAAS,GAAE,OAAO,CAAC,uBAAuB,CAAM,GAAG,uBAAuB,CAElH"}
@@ -5,6 +5,7 @@
5
5
  // packages/daemon/src/focus/recorded-delivery-auto-advance.test.ts,
6
6
  // packages/daemon/src/focus/unarmed-advance-hold.test.ts,
7
7
  // packages/daemon/src/integration/advancement-path-parity.test.ts,
8
+ // packages/daemon/src/integration/f114-review-concern-never-holds-done-regression.test.ts,
8
9
  // packages/daemon/src/integration/last-shortfall-judgment-round-trip.test.ts,
9
10
  // packages/daemon/src/integration/verification-history-round-trip.test.ts,
10
11
  // packages/daemon/src/verify/shortfalls/shortfall-rework-hold.test.ts
@@ -1 +1 @@
1
- {"version":3,"file":"shortfall-rework-hold-deps.js","sourceRoot":"","sources":["../../../src/testing/fixtures/shortfall-rework-hold-deps.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,gEAAgE;AAChE,sEAAsE;AACtE,4DAA4D;AAC5D,sEAAsE;AACtE,4DAA4D;AAC5D,qEAAqE;AACrE,gFAAgF;AAChF,6EAA6E;AAC7E,wEAAwE;AACxE,gBAAgB;AAEhB;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,uBAAuB,GAGxB,MAAM,kDAAkD,CAAC;AAE1D,mEAAmE;AACnE,MAAM,UAAU,4BAA4B,CAAC,YAA8C,EAAE;IAC3F,OAAO;QACL,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI;QACzB,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAC3D,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK;QACxB,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,uBAAuB;QAChD,iBAAiB,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;QACjC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QACZ,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,wBAAwB,CAAC,YAA8C,EAAE;IACvF,OAAO,uBAAuB,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1E,CAAC"}
1
+ {"version":3,"file":"shortfall-rework-hold-deps.js","sourceRoot":"","sources":["../../../src/testing/fixtures/shortfall-rework-hold-deps.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,gEAAgE;AAChE,sEAAsE;AACtE,4DAA4D;AAC5D,sEAAsE;AACtE,4DAA4D;AAC5D,qEAAqE;AACrE,6FAA6F;AAC7F,gFAAgF;AAChF,6EAA6E;AAC7E,wEAAwE;AACxE,gBAAgB;AAEhB;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,uBAAuB,GAGxB,MAAM,kDAAkD,CAAC;AAE1D,mEAAmE;AACnE,MAAM,UAAU,4BAA4B,CAAC,YAA8C,EAAE;IAC3F,OAAO;QACL,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI;QACzB,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAC3D,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK;QACxB,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,uBAAuB;QAChD,iBAAiB,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;QACjC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QACZ,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,wBAAwB,CAAC,YAA8C,EAAE;IACvF,OAAO,uBAAuB,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1E,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * A held review loop in the shape of Tinker Tailor f114 (escalation c1b8cae9):
3
+ * one criterion -- "TARA says a held piece can be made shorter or longer only
4
+ * when a shorter or longer piece exists for the design as it stands." -- not met
5
+ * on three consecutive reviews, each naming one new blocking Bug against it,
6
+ * every other criterion met. The operator bounded it by hand into 13 closed
7
+ * claim forms held by tests plus the TARA battery LLM grader for the rest; the
8
+ * Tower supervisor is the actor that now does that.
9
+ *
10
+ * @module testing/fixtures/tower-loop
11
+ */
12
+ import type { TowerDecision } from '../../queries/tower-decisions/tower-decisions.js';
13
+ import type { ReviewVerdictRecord } from '../../queries/focus-review/review-criterion-verdicts.js';
14
+ import type { FocusIssueInfo } from '../../types/index.js';
15
+ export declare const F114_FOCUS_ID = "11400000-0000-4000-8000-000000000001";
16
+ export declare const F114_PRODUCT_ID = "11400000-0000-4000-8000-0000000000a1";
17
+ export declare const F114_LOOP_ID = "11400000-0000-4000-8000-0000000000d1";
18
+ export declare const F114_NODE_ID = "11400000-0000-4000-8000-0000000000e1";
19
+ export declare const F114_DELIVERY_ID = "11400000-0000-4000-8000-0000000000b1";
20
+ export declare const F114_CRITERION = "TARA says a held piece can be made shorter or longer only when a shorter or longer piece exists for the design as it stands.";
21
+ export declare const F114_CRITERION_KEY = "node:11400000-0000-4000-8000-0000000000e1";
22
+ /** The loop_detected decision the review exit recorded. */
23
+ export declare function f114LoopDecision(over?: Partial<TowerDecision>): TowerDecision;
24
+ /** The three reviews as the verdict read answers them (newest first). */
25
+ export declare function f114Reviews(): ReviewVerdictRecord[];
26
+ /** The blocking Bugs the reviews filed. */
27
+ export declare function f114Issues(): FocusIssueInfo[];
28
+ //# sourceMappingURL=tower-loop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tower-loop.d.ts","sourceRoot":"","sources":["../../../src/testing/fixtures/tower-loop.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kDAAkD,CAAC;AACtF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yDAAyD,CAAC;AACnG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,eAAO,MAAM,aAAa,yCAAyC,CAAC;AACpE,eAAO,MAAM,eAAe,yCAAyC,CAAC;AACtE,eAAO,MAAM,YAAY,yCAAyC,CAAC;AACnE,eAAO,MAAM,YAAY,yCAAyC,CAAC;AACnE,eAAO,MAAM,gBAAgB,yCAAyC,CAAC;AACvE,eAAO,MAAM,cAAc,iIACqG,CAAC;AACjI,eAAO,MAAM,kBAAkB,8CAAyB,CAAC;AAQzD,2DAA2D;AAC3D,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,OAAO,CAAC,aAAa,CAAM,GAAG,aAAa,CA4BjF;AAED,yEAAyE;AACzE,wBAAgB,WAAW,IAAI,mBAAmB,EAAE,CAcnD;AAED,2CAA2C;AAC3C,wBAAgB,UAAU,IAAI,cAAc,EAAE,CAiB7C"}
@@ -0,0 +1,83 @@
1
+ // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
+ // Pinned by: packages/daemon/src/tower/tower-supervisor-history.test.ts,
3
+ // packages/daemon/src/tower/tower-supervisor-prompt.test.ts,
4
+ // packages/daemon/src/tower/tower-supervisor-session.test.ts
5
+ // PINNED-BY-END
6
+ export const F114_FOCUS_ID = '11400000-0000-4000-8000-000000000001';
7
+ export const F114_PRODUCT_ID = '11400000-0000-4000-8000-0000000000a1';
8
+ export const F114_LOOP_ID = '11400000-0000-4000-8000-0000000000d1';
9
+ export const F114_NODE_ID = '11400000-0000-4000-8000-0000000000e1';
10
+ export const F114_DELIVERY_ID = '11400000-0000-4000-8000-0000000000b1';
11
+ export const F114_CRITERION = 'TARA says a held piece can be made shorter or longer only when a shorter or longer piece exists for the design as it stands.';
12
+ export const F114_CRITERION_KEY = `node:${F114_NODE_ID}`;
13
+ const REVIEWS = [
14
+ { reviewId: 'r-114-7', completedAt: '2026-10-18T10:00:00.000Z', sha: 'aaaaaaa1', bug: 'b-114-7', title: 'TARA offers "longer" when only a same-length piece exists' },
15
+ { reviewId: 'r-114-8', completedAt: '2026-10-18T14:00:00.000Z', sha: 'aaaaaaa2', bug: 'b-114-8', title: 'TARA implies "a bit shorter" is possible for a sold-out size' },
16
+ { reviewId: 'r-114-9', completedAt: '2026-10-18T18:00:00.000Z', sha: 'aaaaaaa3', bug: 'b-114-9', title: 'TARA paraphrases "can be adjusted" with no shorter piece' },
17
+ ];
18
+ /** The loop_detected decision the review exit recorded. */
19
+ export function f114LoopDecision(over = {}) {
20
+ return {
21
+ towerDecisionId: F114_LOOP_ID,
22
+ focusId: F114_FOCUS_ID,
23
+ kind: 'loop_detected',
24
+ decidedByKind: 'daemon',
25
+ agentSessionId: null,
26
+ summary: `Held the review loop on criterion "${F114_CRITERION}"`,
27
+ rationale: 'The criterion was the only one not_met on 3 consecutive reviews; each named a new blocking finding.',
28
+ evidence: {
29
+ criterionKey: F114_CRITERION_KEY,
30
+ criterion: F114_CRITERION,
31
+ nodeId: F114_NODE_ID,
32
+ threshold: 3,
33
+ reviewCycleCount: 7,
34
+ cap: 8,
35
+ // Newest first, as the detector records them: the history must order them.
36
+ reviews: [...REVIEWS].reverse().map((r) => ({
37
+ reviewId: r.reviewId, completedAt: r.completedAt, blockingIssueIds: [r.bug], newBlockingIssueIds: [r.bug],
38
+ })),
39
+ },
40
+ criterionKey: F114_CRITERION_KEY,
41
+ nodeId: F114_NODE_ID,
42
+ escalationId: null,
43
+ resolvesDecisionId: null,
44
+ createdAt: '2026-10-18T18:01:00.000Z',
45
+ ...over,
46
+ };
47
+ }
48
+ /** The three reviews as the verdict read answers them (newest first). */
49
+ export function f114Reviews() {
50
+ return [...REVIEWS].reverse().map((r) => ({
51
+ reviewId: r.reviewId,
52
+ completedAt: r.completedAt,
53
+ outcome: 'gaps_found',
54
+ criterionVerdicts: [
55
+ { criterionKey: F114_CRITERION_KEY, nodeId: F114_NODE_ID, source: 'tree', criterion: F114_CRITERION, verdict: 'not_met', issueIds: [r.bug] },
56
+ { criterionKey: 'text:the fit guide renders', nodeId: null, source: 'focus', criterion: 'The fit guide renders', verdict: 'met', issueIds: [] },
57
+ ],
58
+ blockingIssueIds: [r.bug],
59
+ createdIssueIds: [r.bug],
60
+ reviewedSha: r.sha,
61
+ summary: `## Verdicts\n- not_met: ${r.title} (src/tara/length-claims.test.ts misses it)`,
62
+ }));
63
+ }
64
+ /** The blocking Bugs the reviews filed. */
65
+ export function f114Issues() {
66
+ return REVIEWS.map((r, i) => ({
67
+ id: r.bug,
68
+ key: `TT-${900 + i}`,
69
+ title: r.title,
70
+ description: `Seen in a battery transcript. The length check in src/tara/length-claims.test.ts does not cover this phrasing.`,
71
+ status: 'To Do',
72
+ issueType: 'Bug',
73
+ priority: 'high',
74
+ deliveryId: F114_DELIVERY_ID,
75
+ parentIssueId: null,
76
+ context: null,
77
+ relevantFiles: 'src/tara/length-claims.ts, src/tara/length-claims.test.ts',
78
+ dependsOn: null,
79
+ createdByRoleId: null,
80
+ createdAt: r.completedAt,
81
+ }));
82
+ }
83
+ //# sourceMappingURL=tower-loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tower-loop.js","sourceRoot":"","sources":["../../../src/testing/fixtures/tower-loop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * What the Tower supervisor is shown about a team escalation's focus: the
3
+ * assembled focus context (the focus, the criteria its arm stamped and where
4
+ * they stand), its deliveries labelled by whether the arm covers them, and the
5
+ * product's standing decisions (read from the product repo by the same
6
+ * convention the review-loop supervisor uses, tower-supervisor-history.ts
7
+ * readStandingDecisions). A failed read never fails the gathering: it is named
8
+ * in readErrors, which the prompt shows.
9
+ *
10
+ * @module tower/tower-escalation-gather
11
+ */
12
+ import type { DaemonConfig, FocusDeliveryInfo } from '../types/index.js';
13
+ import { type LoopHistoryDeps } from './tower-supervisor-history.js';
14
+ import type { EscalationContext, EscalationFocusDelivery } from './tower-escalation-prompt.js';
15
+ import type { TowerEscalationFocus } from './tower-escalation-session.js';
16
+ /** The context ladder an escalation supervisor reads: the focus, and its arm's stamped criteria and where they stand. */
17
+ export declare const TOWER_ESCALATION_CONTEXT_RECIPE: readonly string[];
18
+ /** The reads the gathering makes. Bound at the composition root. */
19
+ export interface EscalationGatherDeps {
20
+ getFocusDeliveries: (focusId: string) => Promise<FocusDeliveryInfo[]>;
21
+ assembleFocusContext: (focusId: string, productId: string, config: DaemonConfig) => Promise<string>;
22
+ readTextFile: LoopHistoryDeps['readTextFile'];
23
+ listDirectory: LoopHistoryDeps['listDirectory'];
24
+ }
25
+ /** Pure: a delivery labelled by the arm's baseline (null when the arm records none). */
26
+ export declare function labelDelivery(d: FocusDeliveryInfo, baseline: readonly string[] | null): EscalationFocusDelivery;
27
+ /** Gather everything the escalation supervisor is shown. Never throws. */
28
+ export declare function gatherEscalationContext(deps: EscalationGatherDeps, args: {
29
+ focus: TowerEscalationFocus;
30
+ config: DaemonConfig;
31
+ repoRoot: string;
32
+ }): Promise<EscalationContext>;
33
+ //# sourceMappingURL=tower-escalation-gather.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tower-escalation-gather.d.ts","sourceRoot":"","sources":["../../src/tower/tower-escalation-gather.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAyB,KAAK,eAAe,EAA0B,MAAM,+BAA+B,CAAC;AACpH,OAAO,KAAK,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC/F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAE1E,yHAAyH;AACzH,eAAO,MAAM,+BAA+B,EAAE,SAAS,MAAM,EAAiD,CAAC;AAE/G,oEAAoE;AACpE,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACtE,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACpG,YAAY,EAAE,eAAe,CAAC,cAAc,CAAC,CAAC;IAC9C,aAAa,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;CACjD;AAED,wFAAwF;AACxF,wBAAgB,aAAa,CAAC,CAAC,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,GAAG,uBAAuB,CAO/G;AAED,0EAA0E;AAC1E,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,oBAAoB,EAC1B,IAAI,EAAE;IAAE,KAAK,EAAE,oBAAoB,CAAC;IAAC,MAAM,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC5E,OAAO,CAAC,iBAAiB,CAAC,CAmB5B"}
@@ -0,0 +1,38 @@
1
+ // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
+ // Pinned by: packages/daemon/src/tower/tower-escalation-prompt.test.ts
3
+ // PINNED-BY-END
4
+ import { readStandingDecisions } from './tower-supervisor-history.js';
5
+ /** The context ladder an escalation supervisor reads: the focus, and its arm's stamped criteria and where they stand. */
6
+ export const TOWER_ESCALATION_CONTEXT_RECIPE = ['focus.context', 'focus.criteria_standing'];
7
+ /** Pure: a delivery labelled by the arm's baseline (null when the arm records none). */
8
+ export function labelDelivery(d, baseline) {
9
+ return {
10
+ deliveryId: d.id,
11
+ name: d.name,
12
+ executionStatus: d.executionStatus ?? 'unknown',
13
+ covered: baseline === null ? null : baseline.includes(d.id),
14
+ };
15
+ }
16
+ /** Gather everything the escalation supervisor is shown. Never throws. */
17
+ export async function gatherEscalationContext(deps, args) {
18
+ const { focus, config, repoRoot } = args;
19
+ const readErrors = [];
20
+ const [deliveries, focusContext] = await Promise.all([
21
+ deps.getFocusDeliveries(focus.focusId).catch((err) => { readErrors.push(`focus deliveries: ${err.message}`); return []; }),
22
+ deps.assembleFocusContext(focus.focusId, focus.productId, config).catch((err) => { readErrors.push(`focus context: ${err.message}`); return ''; }),
23
+ ]);
24
+ let standingDecisions = { source: null, text: '', truncated: false };
25
+ try {
26
+ standingDecisions = readStandingDecisions(repoRoot, deps);
27
+ }
28
+ catch (err) {
29
+ readErrors.push(`standing decisions: ${err.message}`);
30
+ }
31
+ return {
32
+ focusContext,
33
+ deliveries: deliveries.map((d) => labelDelivery(d, focus.armedBaselineDeliveryIds)),
34
+ standingDecisions,
35
+ readErrors,
36
+ };
37
+ }
38
+ //# sourceMappingURL=tower-escalation-gather.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tower-escalation-gather.js","sourceRoot":"","sources":["../../src/tower/tower-escalation-gather.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,uEAAuE;AACvE,gBAAgB;AAehB,OAAO,EAAE,qBAAqB,EAAgD,MAAM,+BAA+B,CAAC;AAIpH,yHAAyH;AACzH,MAAM,CAAC,MAAM,+BAA+B,GAAsB,CAAC,eAAe,EAAE,yBAAyB,CAAC,CAAC;AAU/G,wFAAwF;AACxF,MAAM,UAAU,aAAa,CAAC,CAAoB,EAAE,QAAkC;IACpF,OAAO;QACL,UAAU,EAAE,CAAC,CAAC,EAAE;QAChB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,eAAe,EAAE,CAAC,CAAC,eAAe,IAAI,SAAS;QAC/C,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5D,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,IAA0B,EAC1B,IAA6E;IAE7E,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACzC,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACnD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,qBAAsB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,EAAyB,CAAC,CAAC,CAAC,CAAC;QACrK,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,kBAAmB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;KACvK,CAAC,CAAC;IACH,IAAI,iBAAiB,GAAsB,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACxF,IAAI,CAAC;QACH,iBAAiB,GAAG,qBAAqB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,UAAU,CAAC,IAAI,CAAC,uBAAwB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,OAAO;QACL,YAAY;QACZ,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACnF,iBAAiB;QACjB,UAAU;KACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * The Tower supervisor's ESCALATION prompt: a pure builder over one team
3
+ * escalation pending on it and what the daemon gathered about its focus.
4
+ *
5
+ * The operator ruled the scope: the supervisor decides what lies within the
6
+ * scope the team is solving for -- usually by authorizing the team's own
7
+ * recommendation -- WITHOUT the operator, and every decision is recorded on the
8
+ * focus. It defers to the operator a major new build, and anything it feels
9
+ * needs a human. (An escalation naming a human-only act never reaches it: the
10
+ * daemon hands those straight on, tower/tower-escalation-routing.ts.)
11
+ *
12
+ * What it is shown: the escalation (description, what was tried, the help
13
+ * asked for -- where the team's recommendation is), the focus and its assembled
14
+ * context, the ARM (the criteria it stamped and where they stand; the
15
+ * deliveries it covers and those recorded as new intent after it) and the
16
+ * product's standing decisions.
17
+ *
18
+ * What it is never given: a budget lever. The prompt carries no review-cycle
19
+ * count, no cap and no arm act, and says outright that none exist for it; the
20
+ * bound is the scoped `tower_supervisor` MCP profile, under which no tool can
21
+ * arm, unarm or grant review cycles (mcp/telora-products src/profile-scope.ts).
22
+ *
23
+ * @module tower/tower-escalation-prompt
24
+ */
25
+ import type { StandingDecisions } from './tower-supervisor-history.js';
26
+ import type { TowerPendingEscalation } from '../queries/escalations/tower-escalations.js';
27
+ /** The last line the session prints (informational; the record decides). */
28
+ export declare const TOWER_ESCALATION_LINE_PREFIX = "TOWER DECISION:";
29
+ /** One delivery of the focus, and whether the arm covers it. */
30
+ export interface EscalationFocusDelivery {
31
+ deliveryId: string;
32
+ name: string;
33
+ executionStatus: string;
34
+ /** true = in the arm's baseline; false = recorded as new intent after it; null = the arm records no baseline. */
35
+ covered: boolean | null;
36
+ }
37
+ /** What the daemon gathered for one escalation. */
38
+ export interface EscalationContext {
39
+ /** The assembled focus context ladder (the focus, its stamped criteria and where they stand). */
40
+ focusContext: string;
41
+ deliveries: EscalationFocusDelivery[];
42
+ standingDecisions: StandingDecisions;
43
+ readErrors: string[];
44
+ }
45
+ /** Inputs of one escalation prompt. */
46
+ export interface TowerEscalationPromptInput {
47
+ focus: {
48
+ focusId: string;
49
+ focusName: string;
50
+ focusDescription: string | null;
51
+ productId: string;
52
+ };
53
+ escalation: TowerPendingEscalation;
54
+ /** The id this session acts under: every act it takes carries it as agentSessionId. */
55
+ supervisorSessionId: string;
56
+ context: EscalationContext;
57
+ }
58
+ /** Pure: the whole escalation prompt. */
59
+ export declare function buildTowerEscalationPrompt(input: TowerEscalationPromptInput): string;
60
+ /** Pure: the decision the session's last line states, or null. Informational: the record decides. */
61
+ export declare function parseTowerEscalationLine(stdout: string): 'answered' | 'deferred' | null;
62
+ //# sourceMappingURL=tower-escalation-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tower-escalation-prompt.d.ts","sourceRoot":"","sources":["../../src/tower/tower-escalation-prompt.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAE1F,4EAA4E;AAC5E,eAAO,MAAM,4BAA4B,oBAAoB,CAAC;AAE9D,gEAAgE;AAChE,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,iHAAiH;IACjH,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACzB;AAED,mDAAmD;AACnD,MAAM,WAAW,iBAAiB;IAChC,iGAAiG;IACjG,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,uBAAuB,EAAE,CAAC;IACtC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,uCAAuC;AACvC,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAClG,UAAU,EAAE,sBAAsB,CAAC;IACnC,uFAAuF;IACvF,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,iBAAiB,CAAC;CAC5B;AA2FD,yCAAyC;AACzC,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,0BAA0B,GAAG,MAAM,CAmBpF;AAED,qGAAqG;AACrG,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,IAAI,CASvF"}