@telora/daemon 0.22.169 → 0.22.187

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 (254) hide show
  1. package/build-info.json +9 -3
  2. package/dist/audit/audit-floor-policy.d.ts +188 -0
  3. package/dist/audit/audit-floor-policy.d.ts.map +1 -0
  4. package/dist/audit/audit-floor-policy.js +353 -0
  5. package/dist/audit/audit-floor-policy.js.map +1 -0
  6. package/dist/audit/audit-prompt.d.ts +4 -177
  7. package/dist/audit/audit-prompt.d.ts.map +1 -1
  8. package/dist/audit/audit-prompt.js +6 -329
  9. package/dist/audit/audit-prompt.js.map +1 -1
  10. package/dist/completion/commit-verdict-release.d.ts +37 -1
  11. package/dist/completion/commit-verdict-release.d.ts.map +1 -1
  12. package/dist/completion/commit-verdict-release.js +90 -15
  13. package/dist/completion/commit-verdict-release.js.map +1 -1
  14. package/dist/completion/escalations.d.ts.map +1 -1
  15. package/dist/completion/escalations.js +3 -1
  16. package/dist/completion/escalations.js.map +1 -1
  17. package/dist/completion/review-exit-verdict-gate.d.ts +11 -5
  18. package/dist/completion/review-exit-verdict-gate.d.ts.map +1 -1
  19. package/dist/completion/review-exit-verdict-gate.js +6 -3
  20. package/dist/completion/review-exit-verdict-gate.js.map +1 -1
  21. package/dist/delivery/commit-verdict-hold.d.ts.map +1 -1
  22. package/dist/delivery/commit-verdict-hold.js +2 -1
  23. package/dist/delivery/commit-verdict-hold.js.map +1 -1
  24. package/dist/directive/stranded-review-reroute.js +1 -1
  25. package/dist/directive/stranded-review-reroute.js.map +1 -1
  26. package/dist/focus/focus-executor.d.ts.map +1 -1
  27. package/dist/focus/focus-executor.js +2 -0
  28. package/dist/focus/focus-executor.js.map +1 -1
  29. package/dist/focus/pending-review-approved-head.d.ts +1 -1
  30. package/dist/focus/pending-review-approved-head.d.ts.map +1 -1
  31. package/dist/focus/pending-review-approved-head.js +4 -3
  32. package/dist/focus/pending-review-approved-head.js.map +1 -1
  33. package/dist/focus/session-health.d.ts.map +1 -1
  34. package/dist/focus/session-health.js +2 -1
  35. package/dist/focus/session-health.js.map +1 -1
  36. package/dist/focus-stage-lifecycle/planning-release.d.ts +52 -17
  37. package/dist/focus-stage-lifecycle/planning-release.d.ts.map +1 -1
  38. package/dist/focus-stage-lifecycle/planning-release.js +58 -70
  39. package/dist/focus-stage-lifecycle/planning-release.js.map +1 -1
  40. package/dist/focus-stage-lifecycle/ratify-bar-gate.d.ts +108 -0
  41. package/dist/focus-stage-lifecycle/ratify-bar-gate.d.ts.map +1 -0
  42. package/dist/focus-stage-lifecycle/ratify-bar-gate.js +174 -0
  43. package/dist/focus-stage-lifecycle/ratify-bar-gate.js.map +1 -0
  44. package/dist/git/merge-to-main.d.ts.map +1 -1
  45. package/dist/git/merge-to-main.js.map +1 -1
  46. package/dist/nexus/index.d.ts.map +1 -1
  47. package/dist/nexus/index.js +2 -1
  48. package/dist/nexus/index.js.map +1 -1
  49. package/dist/nexus/intake-prompt-sections.d.ts +70 -0
  50. package/dist/nexus/intake-prompt-sections.d.ts.map +1 -0
  51. package/dist/nexus/intake-prompt-sections.js +145 -0
  52. package/dist/nexus/intake-prompt-sections.js.map +1 -0
  53. package/dist/nexus/intake-spawn.d.ts +49 -13
  54. package/dist/nexus/intake-spawn.d.ts.map +1 -1
  55. package/dist/nexus/intake-spawn.js +45 -122
  56. package/dist/nexus/intake-spawn.js.map +1 -1
  57. package/dist/nexus/intake.d.ts +55 -0
  58. package/dist/nexus/intake.d.ts.map +1 -1
  59. package/dist/nexus/intake.js +62 -1
  60. package/dist/nexus/intake.js.map +1 -1
  61. package/dist/prd/arm-readiness.d.ts +93 -0
  62. package/dist/prd/arm-readiness.d.ts.map +1 -0
  63. package/dist/prd/arm-readiness.js +254 -0
  64. package/dist/prd/arm-readiness.js.map +1 -0
  65. package/dist/prd/arm-refusal.d.ts +149 -0
  66. package/dist/prd/arm-refusal.d.ts.map +1 -0
  67. package/dist/prd/arm-refusal.js +219 -0
  68. package/dist/prd/arm-refusal.js.map +1 -0
  69. package/dist/prd/controller-shared.d.ts +111 -0
  70. package/dist/prd/controller-shared.d.ts.map +1 -1
  71. package/dist/prd/controller-shared.js +3 -1
  72. package/dist/prd/controller-shared.js.map +1 -1
  73. package/dist/prd/controller.d.ts +16 -10
  74. package/dist/prd/controller.d.ts.map +1 -1
  75. package/dist/prd/controller.js +28 -35
  76. package/dist/prd/controller.js.map +1 -1
  77. package/dist/prd/frontier-arming.d.ts +151 -0
  78. package/dist/prd/frontier-arming.d.ts.map +1 -0
  79. package/dist/prd/frontier-arming.js +315 -0
  80. package/dist/prd/frontier-arming.js.map +1 -0
  81. package/dist/prd/index.d.ts +10 -1
  82. package/dist/prd/index.d.ts.map +1 -1
  83. package/dist/prd/index.js +9 -1
  84. package/dist/prd/index.js.map +1 -1
  85. package/dist/prd/scoping-prompt.d.ts +68 -0
  86. package/dist/prd/scoping-prompt.d.ts.map +1 -0
  87. package/dist/prd/scoping-prompt.js +86 -0
  88. package/dist/prd/scoping-prompt.js.map +1 -0
  89. package/dist/prompt/prompt-contradictions.d.ts +20 -1
  90. package/dist/prompt/prompt-contradictions.d.ts.map +1 -1
  91. package/dist/prompt/prompt-contradictions.js +35 -0
  92. package/dist/prompt/prompt-contradictions.js.map +1 -1
  93. package/dist/prompt/team-prompt-base.d.ts +18 -0
  94. package/dist/prompt/team-prompt-base.d.ts.map +1 -1
  95. package/dist/prompt/team-prompt-base.js +56 -11
  96. package/dist/prompt/team-prompt-base.js.map +1 -1
  97. package/dist/prompt-sections/persona-sections.d.ts +36 -13
  98. package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
  99. package/dist/prompt-sections/persona-sections.js +93 -16
  100. package/dist/prompt-sections/persona-sections.js.map +1 -1
  101. package/dist/prompt-sections/scoping-sections.d.ts +19 -5
  102. package/dist/prompt-sections/scoping-sections.d.ts.map +1 -1
  103. package/dist/prompt-sections/scoping-sections.js +45 -38
  104. package/dist/prompt-sections/scoping-sections.js.map +1 -1
  105. package/dist/prompt-sections/shared.d.ts +8 -0
  106. package/dist/prompt-sections/shared.d.ts.map +1 -1
  107. package/dist/prompt-sections/shared.js.map +1 -1
  108. package/dist/queries/delivery-gate-state.js +1 -1
  109. package/dist/queries/focus-criteria-standing.d.ts +170 -7
  110. package/dist/queries/focus-criteria-standing.d.ts.map +1 -1
  111. package/dist/queries/focus-criteria-standing.js +143 -8
  112. package/dist/queries/focus-criteria-standing.js.map +1 -1
  113. package/dist/queries/focus-ratify-release.d.ts +43 -0
  114. package/dist/queries/focus-ratify-release.d.ts.map +1 -0
  115. package/dist/queries/focus-ratify-release.js +45 -0
  116. package/dist/queries/focus-ratify-release.js.map +1 -0
  117. package/dist/queries/focuses.d.ts +0 -10
  118. package/dist/queries/focuses.d.ts.map +1 -1
  119. package/dist/queries/focuses.js +2 -15
  120. package/dist/queries/focuses.js.map +1 -1
  121. package/dist/queries/prd.d.ts +31 -0
  122. package/dist/queries/prd.d.ts.map +1 -1
  123. package/dist/queries/prd.js +26 -1
  124. package/dist/queries/prd.js.map +1 -1
  125. package/dist/queries/shared.js +1 -1
  126. package/dist/resolvers/focus-criteria-standing.d.ts.map +1 -1
  127. package/dist/resolvers/focus-criteria-standing.js +324 -25
  128. package/dist/resolvers/focus-criteria-standing.js.map +1 -1
  129. package/dist/resolvers/shared/review-window-commits.d.ts.map +1 -1
  130. package/dist/resolvers/shared/review-window-commits.js +2 -1
  131. package/dist/resolvers/shared/review-window-commits.js.map +1 -1
  132. package/dist/security/security-auto-inject.d.ts +51 -0
  133. package/dist/security/security-auto-inject.d.ts.map +1 -1
  134. package/dist/security/security-auto-inject.js +101 -11
  135. package/dist/security/security-auto-inject.js.map +1 -1
  136. package/dist/security/security-scan-engine.d.ts +4 -4
  137. package/dist/security/security-scan-engine.d.ts.map +1 -1
  138. package/dist/security/security-scan-engine.js +6 -0
  139. package/dist/security/security-scan-engine.js.map +1 -1
  140. package/dist/session/session-lineage.d.ts.map +1 -1
  141. package/dist/session/session-lineage.js +2 -0
  142. package/dist/session/session-lineage.js.map +1 -1
  143. package/dist/shell/constants.d.ts +5 -0
  144. package/dist/shell/constants.d.ts.map +1 -1
  145. package/dist/shell/constants.js +5 -0
  146. package/dist/shell/constants.js.map +1 -1
  147. package/dist/shell/daemon-instance.d.ts +74 -64
  148. package/dist/shell/daemon-instance.d.ts.map +1 -1
  149. package/dist/shell/daemon-instance.js +16 -121
  150. package/dist/shell/daemon-instance.js.map +1 -1
  151. package/dist/shell/health-events.js +1 -1
  152. package/dist/shell/health-events.js.map +1 -1
  153. package/dist/shell/instance-liveness.d.ts +112 -0
  154. package/dist/shell/instance-liveness.d.ts.map +1 -0
  155. package/dist/shell/instance-liveness.js +205 -0
  156. package/dist/shell/instance-liveness.js.map +1 -0
  157. package/dist/shell/schema-version-gate.d.ts +22 -0
  158. package/dist/shell/schema-version-gate.d.ts.map +1 -1
  159. package/dist/shell/schema-version-gate.js +116 -6
  160. package/dist/shell/schema-version-gate.js.map +1 -1
  161. package/dist/shell/worker-pidfile.d.ts +21 -8
  162. package/dist/shell/worker-pidfile.d.ts.map +1 -1
  163. package/dist/shell/worker-pidfile.js +38 -9
  164. package/dist/shell/worker-pidfile.js.map +1 -1
  165. package/dist/spawn/lead-launch.d.ts.map +1 -1
  166. package/dist/spawn/lead-launch.js +2 -1
  167. package/dist/spawn/lead-launch.js.map +1 -1
  168. package/dist/spawn/one-shot-scoping-spawn.d.ts +51 -0
  169. package/dist/spawn/one-shot-scoping-spawn.d.ts.map +1 -0
  170. package/dist/spawn/one-shot-scoping-spawn.js +156 -0
  171. package/dist/spawn/one-shot-scoping-spawn.js.map +1 -0
  172. package/dist/spawn/process-spawn.d.ts +12 -0
  173. package/dist/spawn/process-spawn.d.ts.map +1 -1
  174. package/dist/spawn/process-spawn.js +1 -1
  175. package/dist/spawn/process-spawn.js.map +1 -1
  176. package/dist/spawn/prompt-assembly.d.ts +8 -0
  177. package/dist/spawn/prompt-assembly.d.ts.map +1 -1
  178. package/dist/spawn/prompt-assembly.js +15 -3
  179. package/dist/spawn/prompt-assembly.js.map +1 -1
  180. package/dist/spawn/worktree-session.d.ts +24 -6
  181. package/dist/spawn/worktree-session.d.ts.map +1 -1
  182. package/dist/spawn/worktree-session.js +37 -14
  183. package/dist/spawn/worktree-session.js.map +1 -1
  184. package/dist/testing/arm-coverage-model.d.ts +75 -0
  185. package/dist/testing/arm-coverage-model.d.ts.map +1 -0
  186. package/dist/testing/arm-coverage-model.js +114 -0
  187. package/dist/testing/arm-coverage-model.js.map +1 -0
  188. package/dist/testing/fixtures/index.js +1 -1
  189. package/dist/types/index.js +1 -1
  190. package/dist/verify/commit-gate-configured.d.ts.map +1 -1
  191. package/dist/verify/commit-gate-configured.js +1 -1
  192. package/dist/verify/commit-gate-configured.js.map +1 -1
  193. package/dist/verify/commit-verdict-pull.d.ts +48 -0
  194. package/dist/verify/commit-verdict-pull.d.ts.map +1 -0
  195. package/dist/verify/commit-verdict-pull.js +148 -0
  196. package/dist/verify/commit-verdict-pull.js.map +1 -0
  197. package/dist/verify/commit-verdict-record.js +1 -1
  198. package/dist/verify/credit-rearm.js +1 -1
  199. package/dist/verify/credit-rearm.js.map +1 -1
  200. package/dist/verify/default-on-guards.d.ts +74 -0
  201. package/dist/verify/default-on-guards.d.ts.map +1 -0
  202. package/dist/verify/default-on-guards.js +305 -0
  203. package/dist/verify/default-on-guards.js.map +1 -0
  204. package/dist/verify/explicit-rearm.d.ts.map +1 -1
  205. package/dist/verify/explicit-rearm.js +1 -0
  206. package/dist/verify/explicit-rearm.js.map +1 -1
  207. package/dist/verify/gate-run-registry.d.ts.map +1 -1
  208. package/dist/verify/gate-run-registry.js +1 -0
  209. package/dist/verify/gate-run-registry.js.map +1 -1
  210. package/dist/verify/judged-ancestor.d.ts +41 -0
  211. package/dist/verify/judged-ancestor.d.ts.map +1 -0
  212. package/dist/verify/judged-ancestor.js +101 -0
  213. package/dist/verify/judged-ancestor.js.map +1 -0
  214. package/dist/verify/no-own-delta-verdict.d.ts +7 -2
  215. package/dist/verify/no-own-delta-verdict.d.ts.map +1 -1
  216. package/dist/verify/no-own-delta-verdict.js +14 -17
  217. package/dist/verify/no-own-delta-verdict.js.map +1 -1
  218. package/dist/verify/rework-attribution.d.ts +71 -0
  219. package/dist/verify/rework-attribution.d.ts.map +1 -0
  220. package/dist/verify/rework-attribution.js +263 -0
  221. package/dist/verify/rework-attribution.js.map +1 -0
  222. package/dist/verify/shortfall-rulings.d.ts.map +1 -1
  223. package/dist/verify/shortfall-rulings.js +3 -2
  224. package/dist/verify/shortfall-rulings.js.map +1 -1
  225. package/dist/verify/verification-boundary-env.d.ts +70 -17
  226. package/dist/verify/verification-boundary-env.d.ts.map +1 -1
  227. package/dist/verify/verification-boundary-env.js +88 -14
  228. package/dist/verify/verification-boundary-env.js.map +1 -1
  229. package/dist/verify/verification-commit-sharing.d.ts.map +1 -1
  230. package/dist/verify/verification-commit-sharing.js +2 -1
  231. package/dist/verify/verification-commit-sharing.js.map +1 -1
  232. package/dist/verify/verification-config.d.ts.map +1 -1
  233. package/dist/verify/verification-config.js +1 -0
  234. package/dist/verify/verification-config.js.map +1 -1
  235. package/dist/verify/verification-default-on.d.ts +0 -32
  236. package/dist/verify/verification-default-on.d.ts.map +1 -1
  237. package/dist/verify/verification-default-on.js +10 -234
  238. package/dist/verify/verification-default-on.js.map +1 -1
  239. package/dist/verify/verification-deps-default.d.ts.map +1 -1
  240. package/dist/verify/verification-deps-default.js +9 -0
  241. package/dist/verify/verification-deps-default.js.map +1 -1
  242. package/dist/verify/verification-engine.d.ts +2 -1
  243. package/dist/verify/verification-engine.d.ts.map +1 -1
  244. package/dist/verify/verification-engine.js +12 -4
  245. package/dist/verify/verification-engine.js.map +1 -1
  246. package/dist/verify/verification-feedback.d.ts +1 -1
  247. package/dist/verify/verification-feedback.d.ts.map +1 -1
  248. package/dist/verify/verification-feedback.js +5 -0
  249. package/dist/verify/verification-feedback.js.map +1 -1
  250. package/dist/verify/verification-rework-issue.d.ts +48 -7
  251. package/dist/verify/verification-rework-issue.d.ts.map +1 -1
  252. package/dist/verify/verification-rework-issue.js +111 -9
  253. package/dist/verify/verification-rework-issue.js.map +1 -1
  254. 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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telora/daemon",
3
- "version": "0.22.169",
3
+ "version": "0.22.187",
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.157",
41
+ "@telora/mcp-products": "^0.22.159",
42
42
  "commander": "^14.0.3",
43
43
  "yaml": "^2.4.0",
44
44
  "zod": "^4.3.6"