@telora/daemon 0.22.160 → 0.22.181

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 (302) hide show
  1. package/build-info.json +10 -3
  2. package/dist/audit/audit-phase.d.ts +11 -1
  3. package/dist/audit/audit-phase.d.ts.map +1 -1
  4. package/dist/audit/audit-phase.js +2 -14
  5. package/dist/audit/audit-phase.js.map +1 -1
  6. package/dist/audit/audit-prompt.d.ts +7 -4
  7. package/dist/audit/audit-prompt.d.ts.map +1 -1
  8. package/dist/audit/audit-prompt.js +34 -23
  9. package/dist/audit/audit-prompt.js.map +1 -1
  10. package/dist/completion/advancement-stall-watchdog.d.ts +12 -0
  11. package/dist/completion/advancement-stall-watchdog.d.ts.map +1 -0
  12. package/dist/completion/advancement-stall-watchdog.js +79 -0
  13. package/dist/completion/advancement-stall-watchdog.js.map +1 -0
  14. package/dist/completion/arm-visible-progress-inputs.d.ts +51 -0
  15. package/dist/completion/arm-visible-progress-inputs.d.ts.map +1 -0
  16. package/dist/completion/arm-visible-progress-inputs.js +19 -0
  17. package/dist/completion/arm-visible-progress-inputs.js.map +1 -0
  18. package/dist/completion/commit-verdict-release.d.ts +37 -1
  19. package/dist/completion/commit-verdict-release.d.ts.map +1 -1
  20. package/dist/completion/commit-verdict-release.js +90 -15
  21. package/dist/completion/commit-verdict-release.js.map +1 -1
  22. package/dist/completion/delivery-advancement-guard.d.ts.map +1 -1
  23. package/dist/completion/delivery-advancement-guard.js +1 -0
  24. package/dist/completion/delivery-advancement-guard.js.map +1 -1
  25. package/dist/completion/event-entry-phases.d.ts.map +1 -1
  26. package/dist/completion/event-entry-phases.js +9 -2
  27. package/dist/completion/event-entry-phases.js.map +1 -1
  28. package/dist/completion/event-phases.d.ts +15 -8
  29. package/dist/completion/event-phases.d.ts.map +1 -1
  30. package/dist/completion/event-phases.js +26 -64
  31. package/dist/completion/event-phases.js.map +1 -1
  32. package/dist/completion/event.d.ts.map +1 -1
  33. package/dist/completion/event.js +7 -1
  34. package/dist/completion/event.js.map +1 -1
  35. package/dist/completion/review-exit-verdict-gate.d.ts +11 -5
  36. package/dist/completion/review-exit-verdict-gate.d.ts.map +1 -1
  37. package/dist/completion/review-exit-verdict-gate.js +6 -3
  38. package/dist/completion/review-exit-verdict-gate.js.map +1 -1
  39. package/dist/completion/shutdown-attribution.d.ts +107 -0
  40. package/dist/completion/shutdown-attribution.d.ts.map +1 -0
  41. package/dist/completion/shutdown-attribution.js +106 -0
  42. package/dist/completion/shutdown-attribution.js.map +1 -0
  43. package/dist/completion/team-lifecycle.d.ts.map +1 -1
  44. package/dist/completion/team-lifecycle.js +16 -0
  45. package/dist/completion/team-lifecycle.js.map +1 -1
  46. package/dist/delivery/commit-verdict-hold.d.ts.map +1 -1
  47. package/dist/delivery/commit-verdict-hold.js +2 -1
  48. package/dist/delivery/commit-verdict-hold.js.map +1 -1
  49. package/dist/delivery/delivery-lifecycle.d.ts.map +1 -1
  50. package/dist/delivery/delivery-lifecycle.js +1 -0
  51. package/dist/delivery/delivery-lifecycle.js.map +1 -1
  52. package/dist/directive/directive-assembly.d.ts +19 -1
  53. package/dist/directive/directive-assembly.d.ts.map +1 -1
  54. package/dist/directive/directive-assembly.js +15 -3
  55. package/dist/directive/directive-assembly.js.map +1 -1
  56. package/dist/directive/directive-dispatch.d.ts +67 -2
  57. package/dist/directive/directive-dispatch.d.ts.map +1 -1
  58. package/dist/directive/directive-dispatch.js +188 -45
  59. package/dist/directive/directive-dispatch.js.map +1 -1
  60. package/dist/directive/directive-executor.d.ts +2 -2
  61. package/dist/directive/directive-executor.d.ts.map +1 -1
  62. package/dist/directive/directive-executor.js +49 -12
  63. package/dist/directive/directive-executor.js.map +1 -1
  64. package/dist/directive/directive-queue.d.ts.map +1 -1
  65. package/dist/directive/directive-queue.js +1 -0
  66. package/dist/directive/directive-queue.js.map +1 -1
  67. package/dist/directive/stage-tracker.d.ts +20 -0
  68. package/dist/directive/stage-tracker.d.ts.map +1 -1
  69. package/dist/directive/stage-tracker.js +29 -1
  70. package/dist/directive/stage-tracker.js.map +1 -1
  71. package/dist/directive/stranded-review-reroute.js +1 -1
  72. package/dist/directive/stranded-review-reroute.js.map +1 -1
  73. package/dist/focus/focus-engine.d.ts.map +1 -1
  74. package/dist/focus/focus-engine.js +5 -1
  75. package/dist/focus/focus-engine.js.map +1 -1
  76. package/dist/focus/focus-executor.d.ts.map +1 -1
  77. package/dist/focus/focus-executor.js +14 -3
  78. package/dist/focus/focus-executor.js.map +1 -1
  79. package/dist/focus/focus-phase.d.ts +11 -1
  80. package/dist/focus/focus-phase.d.ts.map +1 -1
  81. package/dist/focus/focus-phase.js +12 -2
  82. package/dist/focus/focus-phase.js.map +1 -1
  83. package/dist/focus/focus-team-state.js +1 -1
  84. package/dist/focus/listener-auto-advance.d.ts.map +1 -1
  85. package/dist/focus/listener-auto-advance.js +1 -0
  86. package/dist/focus/listener-auto-advance.js.map +1 -1
  87. package/dist/focus/listener-spawn.d.ts.map +1 -1
  88. package/dist/focus/listener-spawn.js +33 -10
  89. package/dist/focus/listener-spawn.js.map +1 -1
  90. package/dist/focus/listener.d.ts.map +1 -1
  91. package/dist/focus/listener.js +21 -8
  92. package/dist/focus/listener.js.map +1 -1
  93. package/dist/focus/live-arm-facts.d.ts +10 -0
  94. package/dist/focus/live-arm-facts.d.ts.map +1 -0
  95. package/dist/focus/live-arm-facts.js +47 -0
  96. package/dist/focus/live-arm-facts.js.map +1 -0
  97. package/dist/focus/pending-review-approved-head.d.ts +1 -1
  98. package/dist/focus/pending-review-approved-head.d.ts.map +1 -1
  99. package/dist/focus/pending-review-approved-head.js +4 -3
  100. package/dist/focus/pending-review-approved-head.js.map +1 -1
  101. package/dist/focus/recorded-new-intent.d.ts +81 -0
  102. package/dist/focus/recorded-new-intent.d.ts.map +1 -0
  103. package/dist/focus/recorded-new-intent.js +147 -0
  104. package/dist/focus/recorded-new-intent.js.map +1 -0
  105. package/dist/focus/stage-watermark-seeding.d.ts +39 -0
  106. package/dist/focus/stage-watermark-seeding.d.ts.map +1 -0
  107. package/dist/focus/stage-watermark-seeding.js +60 -0
  108. package/dist/focus/stage-watermark-seeding.js.map +1 -0
  109. package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts +19 -1
  110. package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts.map +1 -1
  111. package/dist/focus-stage-lifecycle/wedge-watchdog.js +19 -3
  112. package/dist/focus-stage-lifecycle/wedge-watchdog.js.map +1 -1
  113. package/dist/prompt/focus-prompt-builder.d.ts +2 -1
  114. package/dist/prompt/focus-prompt-builder.d.ts.map +1 -1
  115. package/dist/prompt/focus-prompt-builder.js +10 -1
  116. package/dist/prompt/focus-prompt-builder.js.map +1 -1
  117. package/dist/prompt/team-prompt-base.d.ts.map +1 -1
  118. package/dist/prompt/team-prompt-base.js +4 -2
  119. package/dist/prompt/team-prompt-base.js.map +1 -1
  120. package/dist/prompt-sections/execution-sections.d.ts +22 -1
  121. package/dist/prompt-sections/execution-sections.d.ts.map +1 -1
  122. package/dist/prompt-sections/execution-sections.js +23 -2
  123. package/dist/prompt-sections/execution-sections.js.map +1 -1
  124. package/dist/prompt-sections/shared.d.ts +9 -0
  125. package/dist/prompt-sections/shared.d.ts.map +1 -1
  126. package/dist/prompt-sections/shared.js +2 -1
  127. package/dist/prompt-sections/shared.js.map +1 -1
  128. package/dist/queries/arm-covered-targets.d.ts +84 -0
  129. package/dist/queries/arm-covered-targets.d.ts.map +1 -0
  130. package/dist/queries/arm-covered-targets.js +129 -0
  131. package/dist/queries/arm-covered-targets.js.map +1 -0
  132. package/dist/queries/deliveries.d.ts +3 -0
  133. package/dist/queries/deliveries.d.ts.map +1 -1
  134. package/dist/queries/deliveries.js +10 -3
  135. package/dist/queries/deliveries.js.map +1 -1
  136. package/dist/queries/delivery-gate-state.d.ts +10 -0
  137. package/dist/queries/delivery-gate-state.d.ts.map +1 -1
  138. package/dist/queries/delivery-gate-state.js +2 -2
  139. package/dist/queries/delivery-gate-state.js.map +1 -1
  140. package/dist/queries/delivery-write-discipline.d.ts.map +1 -1
  141. package/dist/queries/delivery-write-discipline.js +2 -1
  142. package/dist/queries/delivery-write-discipline.js.map +1 -1
  143. package/dist/queries/directive-undelivered.d.ts +104 -0
  144. package/dist/queries/directive-undelivered.d.ts.map +1 -0
  145. package/dist/queries/directive-undelivered.js +162 -0
  146. package/dist/queries/directive-undelivered.js.map +1 -0
  147. package/dist/queries/focus-discovery.d.ts +16 -0
  148. package/dist/queries/focus-discovery.d.ts.map +1 -1
  149. package/dist/queries/focus-discovery.js +3 -0
  150. package/dist/queries/focus-discovery.js.map +1 -1
  151. package/dist/queries/focuses.d.ts.map +1 -1
  152. package/dist/queries/focuses.js +3 -1
  153. package/dist/queries/focuses.js.map +1 -1
  154. package/dist/queries/issues.d.ts.map +1 -1
  155. package/dist/queries/issues.js +1 -0
  156. package/dist/queries/issues.js.map +1 -1
  157. package/dist/queries/recorded-targets-record.d.ts +46 -0
  158. package/dist/queries/recorded-targets-record.d.ts.map +1 -0
  159. package/dist/queries/recorded-targets-record.js +29 -0
  160. package/dist/queries/recorded-targets-record.js.map +1 -0
  161. package/dist/queries/schemas.d.ts +4 -0
  162. package/dist/queries/schemas.d.ts.map +1 -1
  163. package/dist/queries/schemas.js +14 -0
  164. package/dist/queries/schemas.js.map +1 -1
  165. package/dist/queries/shared.js +1 -1
  166. package/dist/queries/verification.js +1 -1
  167. package/dist/queries/workflows.d.ts.map +1 -1
  168. package/dist/queries/workflows.js +1 -0
  169. package/dist/queries/workflows.js.map +1 -1
  170. package/dist/resolvers/assembly-engine.d.ts +13 -0
  171. package/dist/resolvers/assembly-engine.d.ts.map +1 -1
  172. package/dist/resolvers/assembly-engine.js +1 -1
  173. package/dist/resolvers/assembly-engine.js.map +1 -1
  174. package/dist/resolvers/compose/loop-delivery-index-compose.d.ts +23 -3
  175. package/dist/resolvers/compose/loop-delivery-index-compose.d.ts.map +1 -1
  176. package/dist/resolvers/compose/loop-delivery-index-compose.js +90 -43
  177. package/dist/resolvers/compose/loop-delivery-index-compose.js.map +1 -1
  178. package/dist/resolvers/delivery-listing.d.ts +27 -0
  179. package/dist/resolvers/delivery-listing.d.ts.map +1 -1
  180. package/dist/resolvers/delivery-listing.js +52 -36
  181. package/dist/resolvers/delivery-listing.js.map +1 -1
  182. package/dist/resolvers/loop-delivery-index.d.ts +8 -0
  183. package/dist/resolvers/loop-delivery-index.d.ts.map +1 -1
  184. package/dist/resolvers/loop-delivery-index.js +68 -7
  185. package/dist/resolvers/loop-delivery-index.js.map +1 -1
  186. package/dist/resolvers/shared/loop.d.ts +7 -0
  187. package/dist/resolvers/shared/loop.d.ts.map +1 -1
  188. package/dist/resolvers/shared/loop.js.map +1 -1
  189. package/dist/resolvers/shared/review-window-commits.d.ts.map +1 -1
  190. package/dist/resolvers/shared/review-window-commits.js +2 -1
  191. package/dist/resolvers/shared/review-window-commits.js.map +1 -1
  192. package/dist/spawn/helpers.d.ts.map +1 -1
  193. package/dist/spawn/helpers.js +4 -2
  194. package/dist/spawn/helpers.js.map +1 -1
  195. package/dist/spawn/lead-continuation.d.ts.map +1 -1
  196. package/dist/spawn/lead-continuation.js +8 -2
  197. package/dist/spawn/lead-continuation.js.map +1 -1
  198. package/dist/spawn/lead-send.d.ts +97 -0
  199. package/dist/spawn/lead-send.d.ts.map +1 -0
  200. package/dist/spawn/lead-send.js +80 -0
  201. package/dist/spawn/lead-send.js.map +1 -0
  202. package/dist/spawn/process-group-kill.d.ts.map +1 -1
  203. package/dist/spawn/process-group-kill.js +12 -1
  204. package/dist/spawn/process-group-kill.js.map +1 -1
  205. package/dist/spawn/process-spawn.d.ts.map +1 -1
  206. package/dist/spawn/process-spawn.js +6 -0
  207. package/dist/spawn/process-spawn.js.map +1 -1
  208. package/dist/spawn/prompt-assembly.d.ts +8 -0
  209. package/dist/spawn/prompt-assembly.d.ts.map +1 -1
  210. package/dist/spawn/prompt-assembly.js +2 -1
  211. package/dist/spawn/prompt-assembly.js.map +1 -1
  212. package/dist/spawn/spawn-decision.d.ts +25 -1
  213. package/dist/spawn/spawn-decision.d.ts.map +1 -1
  214. package/dist/spawn/spawn-decision.js +19 -3
  215. package/dist/spawn/spawn-decision.js.map +1 -1
  216. package/dist/spawn/worktree-session.d.ts +3 -0
  217. package/dist/spawn/worktree-session.d.ts.map +1 -1
  218. package/dist/spawn/worktree-session.js +2 -1
  219. package/dist/spawn/worktree-session.js.map +1 -1
  220. package/dist/testing/fixtures/index.js +1 -1
  221. package/dist/types/focus.d.ts +19 -0
  222. package/dist/types/focus.d.ts.map +1 -1
  223. package/dist/types/index.js +1 -1
  224. package/dist/verify/commit-gate-configured.d.ts.map +1 -1
  225. package/dist/verify/commit-gate-configured.js +1 -1
  226. package/dist/verify/commit-gate-configured.js.map +1 -1
  227. package/dist/verify/commit-verdict-pull.d.ts +48 -0
  228. package/dist/verify/commit-verdict-pull.d.ts.map +1 -0
  229. package/dist/verify/commit-verdict-pull.js +148 -0
  230. package/dist/verify/commit-verdict-pull.js.map +1 -0
  231. package/dist/verify/commit-verdict-record.js +1 -1
  232. package/dist/verify/credit-rearm.js +1 -1
  233. package/dist/verify/credit-rearm.js.map +1 -1
  234. package/dist/verify/default-on-guards.d.ts +74 -0
  235. package/dist/verify/default-on-guards.d.ts.map +1 -0
  236. package/dist/verify/default-on-guards.js +305 -0
  237. package/dist/verify/default-on-guards.js.map +1 -0
  238. package/dist/verify/explicit-rearm.d.ts.map +1 -1
  239. package/dist/verify/explicit-rearm.js +1 -0
  240. package/dist/verify/explicit-rearm.js.map +1 -1
  241. package/dist/verify/gate-run-registry.d.ts.map +1 -1
  242. package/dist/verify/gate-run-registry.js +1 -0
  243. package/dist/verify/gate-run-registry.js.map +1 -1
  244. package/dist/verify/injection-stamp.d.ts +30 -0
  245. package/dist/verify/injection-stamp.d.ts.map +1 -1
  246. package/dist/verify/injection-stamp.js +37 -1
  247. package/dist/verify/injection-stamp.js.map +1 -1
  248. package/dist/verify/judged-ancestor.d.ts +41 -0
  249. package/dist/verify/judged-ancestor.d.ts.map +1 -0
  250. package/dist/verify/judged-ancestor.js +101 -0
  251. package/dist/verify/judged-ancestor.js.map +1 -0
  252. package/dist/verify/no-own-delta-verdict.d.ts +7 -2
  253. package/dist/verify/no-own-delta-verdict.d.ts.map +1 -1
  254. package/dist/verify/no-own-delta-verdict.js +14 -17
  255. package/dist/verify/no-own-delta-verdict.js.map +1 -1
  256. package/dist/verify/recorded-targets.d.ts +103 -0
  257. package/dist/verify/recorded-targets.d.ts.map +1 -0
  258. package/dist/verify/recorded-targets.js +159 -0
  259. package/dist/verify/recorded-targets.js.map +1 -0
  260. package/dist/verify/rework-attribution.d.ts +71 -0
  261. package/dist/verify/rework-attribution.d.ts.map +1 -0
  262. package/dist/verify/rework-attribution.js +263 -0
  263. package/dist/verify/rework-attribution.js.map +1 -0
  264. package/dist/verify/shortfall-rulings.d.ts.map +1 -1
  265. package/dist/verify/shortfall-rulings.js +3 -2
  266. package/dist/verify/shortfall-rulings.js.map +1 -1
  267. package/dist/verify/verification-boundary-env.d.ts +63 -15
  268. package/dist/verify/verification-boundary-env.d.ts.map +1 -1
  269. package/dist/verify/verification-boundary-env.js +81 -12
  270. package/dist/verify/verification-boundary-env.js.map +1 -1
  271. package/dist/verify/verification-commit-sharing.d.ts.map +1 -1
  272. package/dist/verify/verification-commit-sharing.js +2 -1
  273. package/dist/verify/verification-commit-sharing.js.map +1 -1
  274. package/dist/verify/verification-config.d.ts.map +1 -1
  275. package/dist/verify/verification-config.js +1 -0
  276. package/dist/verify/verification-config.js.map +1 -1
  277. package/dist/verify/verification-default-on.d.ts +0 -32
  278. package/dist/verify/verification-default-on.d.ts.map +1 -1
  279. package/dist/verify/verification-default-on.js +10 -234
  280. package/dist/verify/verification-default-on.js.map +1 -1
  281. package/dist/verify/verification-deps-default.d.ts.map +1 -1
  282. package/dist/verify/verification-deps-default.js +24 -2
  283. package/dist/verify/verification-deps-default.js.map +1 -1
  284. package/dist/verify/verification-deps.d.ts +17 -1
  285. package/dist/verify/verification-deps.d.ts.map +1 -1
  286. package/dist/verify/verification-engine.d.ts +2 -1
  287. package/dist/verify/verification-engine.d.ts.map +1 -1
  288. package/dist/verify/verification-engine.js +62 -50
  289. package/dist/verify/verification-engine.js.map +1 -1
  290. package/dist/verify/verification-feedback.d.ts +1 -1
  291. package/dist/verify/verification-feedback.d.ts.map +1 -1
  292. package/dist/verify/verification-feedback.js +5 -0
  293. package/dist/verify/verification-feedback.js.map +1 -1
  294. package/dist/verify/verification-rework-issue.d.ts +48 -7
  295. package/dist/verify/verification-rework-issue.d.ts.map +1 -1
  296. package/dist/verify/verification-rework-issue.js +111 -9
  297. package/dist/verify/verification-rework-issue.js.map +1 -1
  298. package/dist/verify/verify-restatement.d.ts +27 -33
  299. package/dist/verify/verify-restatement.d.ts.map +1 -1
  300. package/dist/verify/verify-restatement.js +74 -1
  301. package/dist/verify/verify-restatement.js.map +1 -1
  302. package/package.json +2 -2
@@ -29,6 +29,31 @@
29
29
  * verify_failed iteration cap stays the bound. A run that judged no known commit
30
30
  * dedupes on open work alone.
31
31
  *
32
+ * WHOSE failure: ONE branch-level red is ONE piece of open work. A focus's
33
+ * deliveries share one commit's verdict (verify/verification-commit-sharing.ts), so
34
+ * a filing that names no owner turns one red into a Bug on every delivery sitting in
35
+ * verify -- each naming a gate run that delivery never made, and each costing a
36
+ * review cycle out of the arm's budget. Every filing that knows the focus its commit
37
+ * belongs to asks verify/rework-attribution.ts who owns the failure first, and files
38
+ * only there. A delivery that shares the verdict still TAKES it -- it routes to
39
+ * verify_failed and carries the failure on its gate_state exactly as before; what it
40
+ * no longer carries is a work item describing someone else's run.
41
+ *
42
+ * HOW MANY, separately from WHO. The owner is chosen from LIVE state -- the focus's
43
+ * deliveries currently in verify -- and that set MOVES: the moment the chosen owner
44
+ * takes its Bug the open-work pass routes it to verify_failed, so a sibling retrying
45
+ * the same failed commit is offered a smaller set and names a different owner. A
46
+ * single-owner rule alone therefore cannot carry a per-COMMIT invariant across time.
47
+ * So the invariant is enforced where it is stated -- on the commit: the "already
48
+ * filed" question is asked of the whole FOCUS, not of one delivery, and no delivery
49
+ * files for a commit another already carries, whoever the selection names. Ownership
50
+ * decides who is told; this decides how many are. It needs no new record, because the
51
+ * record already exists: a rework Bug's own title carries its commit, so the first
52
+ * filing IS the durable statement that this commit's rework is owned -- one that
53
+ * survives a restart, a status change and a re-selection alike. A focus read that
54
+ * FAILS answers "unknown" and files nothing this poll (the owed filing is retried),
55
+ * because a guess here is the fan-out itself.
56
+ *
32
57
  * Best-effort, then retried: a read or create failure is logged and files nothing
33
58
  * -- it must never block the verify_failed route it rides with -- and leaves the
34
59
  * filing OWED. A delivery back in verify at that same failed commit (the HEAD
@@ -46,13 +71,14 @@ import { getFocusDeliveries } from '../queries/focuses.js';
46
71
  import { readCommitVerdict } from './commit-verdict-record.js';
47
72
  import { readVerificationHistory } from '../queries/delivery-gate-state.js';
48
73
  import { OPEN_ISSUE_STATUSES, CONTEXT_GROUP_TYPE } from '../shell/constants.js';
74
+ import { deliveryOwnsFailure, selectReworkOwner, unattributableOwner } from './rework-attribution.js';
49
75
  import { createLogger } from '../shell/log.js';
50
76
  const log = createLogger({ module: 'verification' });
51
77
  /** Title prefix of a rework Bug; the failed commit follows it. */
52
78
  export const REWORK_ISSUE_TITLE_PREFIX = 'Verify gate failed at';
53
79
  /** How many failing tests the Bug description lists before pointing at the log. */
54
80
  const MAX_LISTED_TESTS = 30;
55
- export const defaultReworkIssueDeps = () => ({ getDeliveryIssues, createIssue });
81
+ export const defaultReworkIssueDeps = () => ({ getDeliveryIssues, createIssue, getFocusDeliveries, deliveryOwnsFailure });
56
82
  /** The rework Bug's title for a failed commit. Pure. */
57
83
  export function reworkIssueTitle(failure) {
58
84
  const at = failure.sha ? failure.sha.slice(0, 12) : 'an unrecorded commit';
@@ -94,6 +120,13 @@ export function reworkIssueDescription(failure) {
94
120
  * work issue and none was filed for this commit (module header). Never throws.
95
121
  */
96
122
  export async function fileVerificationReworkIssue(deliveryId, failure, deps = defaultReworkIssueDeps()) {
123
+ // ONE branch-level red is ONE piece of open work: a delivery that merely shared the
124
+ // verdict carries no Bug of its own (verify/rework-attribution.ts).
125
+ const at = failure.at;
126
+ if (at?.productId && failure.sha && deps.deliveryOwnsFailure
127
+ && !(await deps.deliveryOwnsFailure(deliveryId, { productId: at.productId, focusId: at.focusId, sha: failure.sha }))) {
128
+ return { filed: false, reason: 'not_its_failure' };
129
+ }
97
130
  let issues;
98
131
  try {
99
132
  issues = await deps.getDeliveryIssues(deliveryId);
@@ -110,6 +143,17 @@ export async function fileVerificationReworkIssue(deliveryId, failure, deps = de
110
143
  filedAt.set(deliveryId, failure.sha);
111
144
  return { filed: false, reason: 'already_filed' };
112
145
  }
146
+ // One red is one Bug on the FOCUS, not one per delivery that is asked -- and who is
147
+ // asked moves as deliveries are routed (module header).
148
+ if (commitPrefix && at) {
149
+ const elsewhere = await reworkFiledElsewhereOnFocus(at.focusId, deliveryId, commitPrefix, deps);
150
+ if (elsewhere === 'filed') {
151
+ filedAt.set(deliveryId, failure.sha);
152
+ return { filed: false, reason: 'already_filed' };
153
+ }
154
+ if (elsewhere === 'unknown')
155
+ return { filed: false, reason: 'read_failed' };
156
+ }
113
157
  const title = reworkIssueTitle(failure);
114
158
  try {
115
159
  const issueId = await deps.createIssue(deliveryId, title, reworkIssueDescription(failure), 'Bug', 'P0');
@@ -123,6 +167,36 @@ export async function fileVerificationReworkIssue(deliveryId, failure, deps = de
123
167
  return { filed: false, reason: 'create_failed' };
124
168
  }
125
169
  }
170
+ /**
171
+ * Whether a rework Bug for this commit is already filed on ANOTHER delivery of the
172
+ * focus (module header): 'filed', 'none', or 'unknown' when the focus could not be
173
+ * read -- which files nothing this poll rather than guessing, because the guess that
174
+ * fails open is exactly the N-Bugs fan-out. A deps object with no focus read answers
175
+ * 'none', and the source pin in the test suite is what keeps production wired to one.
176
+ * Never throws.
177
+ */
178
+ async function reworkFiledElsewhereOnFocus(focusId, deliveryId, commitPrefix, deps) {
179
+ if (!deps.getFocusDeliveries)
180
+ return 'none';
181
+ try {
182
+ for (const sibling of await deps.getFocusDeliveries(focusId)) {
183
+ if (sibling.id === deliveryId)
184
+ continue;
185
+ const issues = await deps.getDeliveryIssues(sibling.id);
186
+ if (issues.some((i) => i.issueType !== CONTEXT_GROUP_TYPE && i.title.startsWith(commitPrefix))) {
187
+ log.info(`[verification] rework issue: delivery ${deliveryId} was named owner of the failure at `
188
+ + `"${commitPrefix}" but ${sibling.id} already carries it -- one red stays one work item`);
189
+ return 'filed';
190
+ }
191
+ }
192
+ return 'none';
193
+ }
194
+ catch (err) {
195
+ log.warn(`[verification] rework issue: focus ${focusId} could not be read to tell whether "${commitPrefix}" is already `
196
+ + `carried -- ${deliveryId} files nothing this poll (the owed filing is retried):`, err.message);
197
+ return 'unknown';
198
+ }
199
+ }
126
200
  /** deliveryId -> the failed commit whose rework Bug is known filed (nothing owed there). */
127
201
  const filedAt = new Map();
128
202
  /** `${deliveryId}@${sha}` -> when an owed filing was last attempted (ms). */
@@ -162,6 +236,7 @@ export async function retryOwedReworkIssue(delivery, at, deps = defaultReworkRet
162
236
  const recorded = verdict?.outcome === 'failed' ? verdict : null;
163
237
  return await fileVerificationReworkIssue(delivery.id, {
164
238
  sha,
239
+ at: { productId: at.productId, focusId: at.focusId },
165
240
  failingTests: recorded?.newFailures ?? [],
166
241
  parseFailure: recorded?.parseFailure,
167
242
  failedStage: recorded?.failedStage,
@@ -174,14 +249,18 @@ export async function retryOwedReworkIssue(delivery, at, deps = defaultReworkRet
174
249
  return null;
175
250
  }
176
251
  }
177
- export const defaultFailedVerdictReworkDeps = () => ({ ...defaultReworkIssueDeps(), getFocusDeliveries });
252
+ export const defaultFailedVerdictReworkDeps = () => ({
253
+ ...defaultReworkIssueDeps(), getFocusDeliveries, selectReworkOwner,
254
+ });
178
255
  /**
179
256
  * A FAILED gate verdict standing at a focus head that draws no further review (a
180
257
  * declined review of an unchanged range, a stranded re-fire at its bound): file the
181
- * rework Bug on every verify delivery of the focus, so the live open-work pass
182
- * routes each to verify_failed and a coding pass fixes the failure. Deduped per
183
- * commit and skipped beside open work exactly as the feedback filing is. Returns
184
- * how many Bugs were filed. Never throws.
258
+ * rework Bug on the verify delivery the failure is ATTRIBUTED to, so the live
259
+ * open-work pass routes it to verify_failed and a coding pass fixes the failure. The
260
+ * focus's other verify deliveries are offered the filing and decline it
261
+ * (verify/rework-attribution.ts) -- one red, one work item. Deduped per commit and
262
+ * skipped beside open work exactly as the feedback filing is. Returns how many Bugs
263
+ * were filed. Never throws.
185
264
  */
186
265
  export async function fileReworkForFailedVerdict(focusId, verdict, deps = defaultFailedVerdictReworkDeps()) {
187
266
  if (verdict.outcome !== 'failed')
@@ -194,16 +273,39 @@ export async function fileReworkForFailedVerdict(focusId, verdict, deps = defaul
194
273
  log.warn(`[verification] rework issue: deliveries unreadable for focus ${focusId} -- none filed this poll:`, err.message);
195
274
  return 0;
196
275
  }
276
+ const candidates = deliveries.filter((x) => x.executionStatus === DELIVERY_STATUS.VERIFY).map((x) => x.id);
277
+ // This pass knows its whole candidate set, so it picks the ONE owner here rather than
278
+ // offering the filing to each and letting the per-delivery predicate decline -- the
279
+ // choice can then land on a candidate it can actually tell. The rule is
280
+ // UNCONDITIONAL: a failure that cannot be attributed, or that arrives with no product
281
+ // context to attribute it by, still goes to exactly one delivery -- the candidate set's
282
+ // own unattributable owner, the same one the per-delivery path computes -- because
283
+ // fanning out "when we do not know" is the behaviour this module exists to remove.
284
+ // Null means there is no verify delivery to tell at all.
285
+ const owner = verdict.productId && verdict.sha && deps.selectReworkOwner
286
+ ? deps.selectReworkOwner(candidates, { productId: verdict.productId, focusId, sha: verdict.sha })
287
+ : unattributableOwner(candidates);
288
+ const targets = owner === null ? [] : [owner];
289
+ // The owner was chosen above over this pass's WHOLE candidate set, so the
290
+ // per-delivery predicate is not consulted again -- it answers over a set this pass
291
+ // may not share, and would veto a choice this pass can act on. The commit's focus
292
+ // still rides along: the per-commit dedupe is the focus's, not the delivery's.
293
+ const filing = {
294
+ getDeliveryIssues: deps.getDeliveryIssues,
295
+ createIssue: deps.createIssue,
296
+ getFocusDeliveries: deps.getFocusDeliveries,
297
+ };
197
298
  let filed = 0;
198
- for (const d of deliveries.filter((x) => x.executionStatus === DELIVERY_STATUS.VERIFY)) {
199
- const out = await fileVerificationReworkIssue(d.id, {
299
+ for (const deliveryId of targets) {
300
+ const out = await fileVerificationReworkIssue(deliveryId, {
200
301
  sha: verdict.sha,
302
+ at: { focusId },
201
303
  failingTests: verdict.newFailures ?? [],
202
304
  parseFailure: verdict.parseFailure,
203
305
  failedStage: verdict.failedStage,
204
306
  exitCode: verdict.exitCode,
205
307
  logPath: verdict.logPath ?? null,
206
- }, deps);
308
+ }, filing);
207
309
  if (out.filed)
208
310
  filed += 1;
209
311
  }
@@ -1 +1 @@
1
- {"version":3,"file":"verification-rework-issue.js","sourceRoot":"","sources":["../../src/verify/verification-rework-issue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verification-rework-issue.js","sourceRoot":"","sources":["../../src/verify/verification-rework-issue.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type DeliveryArmCoveredTargets } from '../queries/arm-covered-targets.js';
1
2
  import { type ReconcileInputs, type ReconcileJudgment, type ReconcileOptions, type VerifyEvidence } from './verify-reconciliation.js';
2
3
  export type { VerifyEvidence } from './verify-reconciliation.js';
3
4
  /**
@@ -72,44 +73,37 @@ export interface ReconcileTargetsResult {
72
73
  * in any active tree (then restatements/shortfalls are both empty too).
73
74
  */
74
75
  realityTreeId?: string;
76
+ /**
77
+ * Targets this reconciliation DID NOT judge, because the focus's arm did not
78
+ * cover them: nodes added to the in-flight injection after the human armed,
79
+ * serving no effect the arm covers (see
80
+ * `supabase/functions/_shared/arm-covered-effects.ts`). They produce no
81
+ * shortfall, no hold and no re-work issue -- they wait for the next arm.
82
+ *
83
+ * Carried back rather than silently dropped so the caller can put them ON THE
84
+ * RECORD. What was set aside has to be visible somewhere, or narrowing the
85
+ * judgement becomes indistinguishable from losing track of it.
86
+ *
87
+ * Empty whenever the arm could not be reasoned about, which is also when
88
+ * every target is judged -- the two always agree.
89
+ */
90
+ recordedTargetNodeIds?: string[];
75
91
  }
76
92
  export type ReconcileFn = (inputs: ReconcileInputs, opts?: ReconcileOptions) => Promise<ReconcileJudgment>;
77
93
  export interface AuthorTargetRestatementsDeps {
78
94
  callApi?: <T>(action: string, params?: Record<string, unknown>) => Promise<T>;
79
95
  /** Reconciles declared-vs-achieved and classifies. Defaults to the verify-reconciliation helper. */
80
96
  reconcile?: ReconcileFn;
97
+ /**
98
+ * Which of the delivery's injection targets the focus's CURRENT arm covers.
99
+ * Defaults to the product-api read (queries/arm-covered-targets.ts), which
100
+ * never throws and answers `null` when the arm cannot be reasoned about.
101
+ *
102
+ * `null` means JUDGE EVERYTHING -- the pre-change behaviour. This module
103
+ * never decides coverage itself: "covered" has one definition, edge-side,
104
+ * shared with the create path.
105
+ */
106
+ readArmCoveredTargets?: (deliveryId: string) => Promise<DeliveryArmCoveredTargets | null>;
81
107
  }
82
- /**
83
- * Reconcile the achieved outcome against the declared desired effect for each
84
- * UDE the injection targets.
85
- *
86
- * For each targeted UDE:
87
- * - The DECLARED desired effect is the UDE's preserved `frtStatement` (intent
88
- * of record). When absent, there is no declared intent to fall short of, so
89
- * the achieved DE authored from evidence is treated as a match.
90
- * - The ACHIEVED desired effect is authored from the supplied `evidence`
91
- * (diff/tests/inspection), NOT from the UDE problem text.
92
- * - The judgment classifies match / legitimate_divergence / shortfall.
93
- *
94
- * match / legitimate_divergence -> `restatements` (carried into verify).
95
- * shortfall -> `shortfalls` (caller holds gate + escalates).
96
- *
97
- * Best-effort per target: a reconciliation FAILURE (model error / parse error)
98
- * is treated as a SHORTFALL -- we cannot prove the achieved outcome realizes the
99
- * declared intent, so we do not flip it and we surface it to a human. (This is
100
- * the asymmetric-safe default: never flip what you could not reconcile.)
101
- *
102
- * SCOPE BOUNDARY (intentional): this reconciles ONLY the UDEs the injection
103
- * DIRECTLY targets (its `targets` edges). Downstream consequences that resolve
104
- * by causal PROPAGATION at verify are NOT reconciled here -- they have no
105
- * declared DE to measure against, and their forward prose is authored by the
106
- * injection-conditioned draft-assist loop (cascade-restatement.ts), not from raw
107
- * code evidence. Verify flips their node_type but leaves verify_classification
108
- * null; display falls back to the draft-assist frt_statement. See the matching
109
- * note in graph-verification.ts (verifyInjectionImpl, Step 6).
110
- *
111
- * Returns empty result when focusId is null or the injection is not in the
112
- * focus's active tree(s).
113
- */
114
- export declare function authorTargetRestatements(injectionNodeId: string, focusId: string | null, evidence: VerifyEvidence, deps?: AuthorTargetRestatementsDeps, evidenceIncomplete?: boolean): Promise<ReconcileTargetsResult>;
108
+ export declare function authorTargetRestatements(injectionNodeId: string, focusId: string | null, evidence: VerifyEvidence, deps?: AuthorTargetRestatementsDeps, evidenceIncomplete?: boolean, deliveryId?: string | null): Promise<ReconcileTargetsResult>;
115
109
  //# sourceMappingURL=verify-restatement.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verify-restatement.d.ts","sourceRoot":"","sources":["../../src/verify/verify-restatement.ts"],"names":[],"mappings":"AA8CA,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EAErB,KAAK,cAAc,EACpB,MAAM,4BAA4B,CAAC;AASpC,YAAY,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,OAAO,GAAG,uBAAuB,CAAC;IAClD,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;OAMG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,uFAAuF;AACvF,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,2DAA2D;IAC3D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;;;OAUG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB;IACrC,kEAAkE;IAClE,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,gEAAgE;IAChE,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B;;;;;;;;;;;;;;OAcG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,WAAW,GAAG,CACxB,MAAM,EAAE,eAAe,EACvB,IAAI,CAAC,EAAE,gBAAgB,KACpB,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEhC,MAAM,WAAW,4BAA4B;IAC3C,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9E,oGAAoG;IACpG,SAAS,CAAC,EAAE,WAAW,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAsB,wBAAwB,CAC5C,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,QAAQ,EAAE,cAAc,EACxB,IAAI,GAAE,4BAAiC,EACvC,kBAAkB,UAAQ,GACzB,OAAO,CAAC,sBAAsB,CAAC,CA6GjC"}
1
+ {"version":3,"file":"verify-restatement.d.ts","sourceRoot":"","sources":["../../src/verify/verify-restatement.ts"],"names":[],"mappings":"AAgDA,OAAO,EAGL,KAAK,yBAAyB,EAC/B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EAErB,KAAK,cAAc,EACpB,MAAM,4BAA4B,CAAC;AAYpC,YAAY,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,OAAO,GAAG,uBAAuB,CAAC;IAClD,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;OAMG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,uFAAuF;AACvF,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,2DAA2D;IAC3D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;;;OAUG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB;IACrC,kEAAkE;IAClE,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,gEAAgE;IAChE,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B;;;;;;;;;;;;;;OAcG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;;;;OAaG;IACH,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;CAClC;AAED,MAAM,MAAM,WAAW,GAAG,CACxB,MAAM,EAAE,eAAe,EACvB,IAAI,CAAC,EAAE,gBAAgB,KACpB,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEhC,MAAM,WAAW,4BAA4B;IAC3C,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9E,oGAAoG;IACpG,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB;;;;;;;;OAQG;IACH,qBAAqB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;CAC3F;AAyGD,wBAAsB,wBAAwB,CAC5C,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,QAAQ,EAAE,cAAc,EACxB,IAAI,GAAE,4BAAiC,EACvC,kBAAkB,UAAQ,EAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GACzB,OAAO,CAAC,sBAAsB,CAAC,CAoHjC"}
@@ -9,6 +9,8 @@
9
9
  // packages/daemon/src/verify/shortfall-park.test.ts, packages/daemon/src/verify/shortfall-repeat.test.ts,
10
10
  // packages/daemon/src/verify/shortfall-routing.test.ts,
11
11
  // packages/daemon/src/verify/shortfall-rulings.test.ts,
12
+ // packages/daemon/src/verify/stamp-withholds-recorded-targets.test.ts,
13
+ // packages/daemon/src/verify/verification-deps-default.test.ts,
12
14
  // packages/daemon/src/verify/verification-engine-rulings.test.ts,
13
15
  // packages/daemon/src/verify/verification-feedback.test.ts,
14
16
  // packages/daemon/src/verify/verify-restatement.test.ts
@@ -42,7 +44,10 @@
42
44
  * @module verify-restatement
43
45
  */
44
46
  import { callApi as defaultCallApi } from '../queries/shared.js';
47
+ import { readArmCoveredTargets as defaultReadArmCoveredTargets, heldTargetsOrAll, } from '../queries/arm-covered-targets.js';
45
48
  import { reconcileAchievedEffect as defaultReconcile, judgeEvidenceIsEmpty, } from './verify-reconciliation.js';
49
+ import { createLogger } from '../shell/log.js';
50
+ const log = createLogger({ module: 'verify-restatement' });
46
51
  /**
47
52
  * Reconcile the achieved outcome against the declared desired effect for each
48
53
  * UDE the injection targets.
@@ -74,13 +79,74 @@ import { reconcileAchievedEffect as defaultReconcile, judgeEvidenceIsEmpty, } fr
74
79
  *
75
80
  * Returns empty result when focusId is null or the injection is not in the
76
81
  * focus's active tree(s).
82
+ *
83
+ * `deliveryId` (6th argument): supplied => the reconciliation is narrowed to
84
+ * the targets the focus's ARM COVERED (see narrowToArmCoverage); omitted =>
85
+ * every target is judged, as before. Optional so a caller with no delivery in
86
+ * hand behaves exactly as it did.
87
+ */
88
+ /**
89
+ * Which targets the focus's arm covers, resolved ONCE per reconciliation.
90
+ *
91
+ * Hoisted out of `authorTargetRestatements` so that function stays within its
92
+ * recorded size floor, and because the answer is a property of the DELIVERY and
93
+ * its focus -- not of any one tree the reconciliation happens to walk.
94
+ *
95
+ * `null` means JUDGE EVERYTHING: no delivery id was supplied, the read failed,
96
+ * or the arm could not be reasoned about. The gate never narrows what it judges
97
+ * on a question it could not answer.
77
98
  */
78
- export async function authorTargetRestatements(injectionNodeId, focusId, evidence, deps = {}, evidenceIncomplete = false) {
99
+ async function resolveArmCoverageForDelivery(deliveryId, deps) {
100
+ if (!deliveryId)
101
+ return null;
102
+ const read = deps.readArmCoveredTargets ?? defaultReadArmCoveredTargets;
103
+ return await read(deliveryId);
104
+ }
105
+ /**
106
+ * Narrow an injection's targets to the ones the arm COVERED, recording the rest
107
+ * on `result`, and return the held set.
108
+ *
109
+ * A target added to an in-flight injection after the human armed -- serving no
110
+ * effect the arm covers -- is not owed work: it produces no shortfall, no hold
111
+ * and no re-work issue, and waits for the next arm. It is recorded rather than
112
+ * dropped, so what was set aside is visible on the delivery's record instead of
113
+ * merely absent from it.
114
+ *
115
+ * The caller applies this BEFORE the evidence-blindness check, deliberately: a
116
+ * set-aside target must not make the bundle look unjudgeable either. With every
117
+ * target recorded there is nothing left to judge, so the evidence question does
118
+ * not arise and the caller flips exactly as it would with no targets at all.
119
+ *
120
+ * Mutates `result` rather than returning a pair because the recorded set
121
+ * accumulates across trees, and threading an accumulator through the walk buys
122
+ * nothing over the one write.
123
+ */
124
+ function narrowToArmCoverage(injectionNodeId, edges, coverage, result) {
125
+ const targets = edges
126
+ .filter((e) => e.edgeType === 'targets' && e.fromNodeId === injectionNodeId)
127
+ .map((e) => e.toNodeId);
128
+ const { held, recorded, unclassified } = heldTargetsOrAll(targets, coverage);
129
+ if (recorded.length > 0) {
130
+ result.recordedTargetNodeIds = [...(result.recordedTargetNodeIds ?? []), ...recorded];
131
+ }
132
+ if (unclassified.length > 0) {
133
+ // The split was stale: the edge answered about a tree that did not yet
134
+ // carry these targets. They are judged (heldTargetsOrAll already put them
135
+ // in `held`); this line is so the race is visible rather than inferred
136
+ // from a target that is judged while the answer never mentioned it.
137
+ log.warn(`[verify] Arm coverage did not classify ${unclassified.length} target(s) the ` +
138
+ `reconciler resolved (${unclassified.join(', ')}) -- the split predates them. ` +
139
+ `Judging them, as a gate must when its own answer is stale.`);
140
+ }
141
+ return new Set(held);
142
+ }
143
+ export async function authorTargetRestatements(injectionNodeId, focusId, evidence, deps = {}, evidenceIncomplete = false, deliveryId) {
79
144
  const callApi = deps.callApi ?? defaultCallApi;
80
145
  const reconcile = deps.reconcile ?? defaultReconcile;
81
146
  const result = { restatements: [], shortfalls: [] };
82
147
  if (!focusId)
83
148
  return result;
149
+ const coverage = await resolveArmCoverageForDelivery(deliveryId, deps);
84
150
  const treesResp = await callApi('reality_tree_list', { focusId });
85
151
  const trees = (treesResp.items ?? []).filter((t) => t.status === 'active');
86
152
  for (const tree of trees) {
@@ -106,9 +172,14 @@ export async function authorTargetRestatements(injectionNodeId, focusId, evidenc
106
172
  // the instrument-fault signal instead of running the model (which, blind or
107
173
  // half-blind, would manufacture a shortfall). With no targets there is
108
174
  // nothing to judge -- fall through and let the caller flip as before.
175
+ // Narrow to what the arm covered BEFORE anything is judged; see
176
+ // splitTargetsByCoverage.
177
+ const heldTargets = narrowToArmCoverage(injectionNodeId, edges, coverage, result);
109
178
  const hasTarget = edges.some((e) => {
110
179
  if (e.edgeType !== 'targets' || e.fromNodeId !== injectionNodeId)
111
180
  return false;
181
+ if (!heldTargets.has(e.toNodeId))
182
+ return false;
112
183
  const t = nodeById.get(e.toNodeId);
113
184
  return !!t && t.nodeType === 'undesired_effect';
114
185
  });
@@ -119,6 +190,8 @@ export async function authorTargetRestatements(injectionNodeId, focusId, evidenc
119
190
  for (const e of edges) {
120
191
  if (e.edgeType !== 'targets' || e.fromNodeId !== injectionNodeId)
121
192
  continue;
193
+ if (!heldTargets.has(e.toNodeId))
194
+ continue; // recorded after the arm: not judged
122
195
  const target = nodeById.get(e.toNodeId);
123
196
  if (!target || target.nodeType !== 'undesired_effect')
124
197
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"verify-restatement.js","sourceRoot":"","sources":["../../src/verify/verify-restatement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify-restatement.js","sourceRoot":"","sources":["../../src/verify/verify-restatement.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telora/daemon",
3
- "version": "0.22.160",
3
+ "version": "0.22.181",
4
4
  "description": "Agent orchestration daemon for Telora - spawns and manages Claude Code instances",
5
5
  "type": "module",
6
6
  "bin": {
@@ -38,7 +38,7 @@
38
38
  "//testRunner": "Uses Node.js built-in test runner (node:test) via tsx for TypeScript support. The root package uses Vitest; this is a deliberate choice for the daemon package to avoid framework dependencies. Test files live beside the modules they exercise (owner-directory layout); the runner discovers them recursively.",
39
39
  "dependencies": {
40
40
  "@telora/daemon-core": "^0.2.99",
41
- "@telora/mcp-products": "^0.22.156",
41
+ "@telora/mcp-products": "^0.22.157",
42
42
  "commander": "^14.0.3",
43
43
  "yaml": "^2.4.0",
44
44
  "zod": "^4.3.6"