@telora/daemon 0.22.84 → 0.22.87

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 (264) hide show
  1. package/build-info.json +4 -3
  2. package/dist/ci/ci-escalation.d.ts +17 -1
  3. package/dist/ci/ci-escalation.d.ts.map +1 -1
  4. package/dist/ci/ci-escalation.js +51 -3
  5. package/dist/ci/ci-escalation.js.map +1 -1
  6. package/dist/ci/ci-red-attribution.d.ts +85 -0
  7. package/dist/ci/ci-red-attribution.d.ts.map +1 -0
  8. package/dist/ci/ci-red-attribution.js +108 -0
  9. package/dist/ci/ci-red-attribution.js.map +1 -0
  10. package/dist/ci/ci-sensor-loop.d.ts +84 -80
  11. package/dist/ci/ci-sensor-loop.d.ts.map +1 -1
  12. package/dist/ci/ci-sensor-loop.js +132 -129
  13. package/dist/ci/ci-sensor-loop.js.map +1 -1
  14. package/dist/completion/coverage-stabilized.d.ts.map +1 -1
  15. package/dist/completion/coverage-stabilized.js +1 -1
  16. package/dist/completion/coverage-stabilized.js.map +1 -1
  17. package/dist/completion/escalations.d.ts +40 -5
  18. package/dist/completion/escalations.d.ts.map +1 -1
  19. package/dist/completion/escalations.js +19 -11
  20. package/dist/completion/escalations.js.map +1 -1
  21. package/dist/completion/event-escalations.d.ts +12 -1
  22. package/dist/completion/event-escalations.d.ts.map +1 -1
  23. package/dist/completion/event-escalations.js +73 -37
  24. package/dist/completion/event-escalations.js.map +1 -1
  25. package/dist/completion/event.d.ts +4 -1
  26. package/dist/completion/event.d.ts.map +1 -1
  27. package/dist/completion/event.js +1 -1
  28. package/dist/completion/event.js.map +1 -1
  29. package/dist/completion/human-only-act.d.ts +1 -1
  30. package/dist/completion/human-only-act.js +1 -1
  31. package/dist/completion/machine-remediable-demotion.d.ts +28 -1
  32. package/dist/completion/machine-remediable-demotion.d.ts.map +1 -1
  33. package/dist/completion/machine-remediable-demotion.js +9 -6
  34. package/dist/completion/machine-remediable-demotion.js.map +1 -1
  35. package/dist/completion/read-only-pristine.d.ts.map +1 -1
  36. package/dist/completion/read-only-pristine.js +4 -0
  37. package/dist/completion/read-only-pristine.js.map +1 -1
  38. package/dist/completion/review-exit-deps.js +1 -1
  39. package/dist/completion/review-exit-deps.js.map +1 -1
  40. package/dist/completion/review-exit-escalations.d.ts +10 -0
  41. package/dist/completion/review-exit-escalations.d.ts.map +1 -1
  42. package/dist/completion/review-exit-escalations.js +38 -3
  43. package/dist/completion/review-exit-escalations.js.map +1 -1
  44. package/dist/completion/review-exit-phase.d.ts.map +1 -1
  45. package/dist/completion/review-exit-phase.js +8 -7
  46. package/dist/completion/review-exit-phase.js.map +1 -1
  47. package/dist/completion/review-exit-shortfall.d.ts +5 -1
  48. package/dist/completion/review-exit-shortfall.d.ts.map +1 -1
  49. package/dist/completion/review-exit-shortfall.js +8 -3
  50. package/dist/completion/review-exit-shortfall.js.map +1 -1
  51. package/dist/completion/status-advance-phase.d.ts +2 -0
  52. package/dist/completion/status-advance-phase.d.ts.map +1 -1
  53. package/dist/completion/status-advance-phase.js +2 -1
  54. package/dist/completion/status-advance-phase.js.map +1 -1
  55. package/dist/completion/terminated-work-reconcile.js +2 -2
  56. package/dist/completion/terminated-work-reconcile.js.map +1 -1
  57. package/dist/delivery/delivery-advance-block.d.ts +3 -3
  58. package/dist/delivery/delivery-advance-block.d.ts.map +1 -1
  59. package/dist/delivery/delivery-advance-block.js +13 -8
  60. package/dist/delivery/delivery-advance-block.js.map +1 -1
  61. package/dist/delivery/delivery-lifecycle.d.ts +10 -0
  62. package/dist/delivery/delivery-lifecycle.d.ts.map +1 -1
  63. package/dist/delivery/delivery-lifecycle.js +12 -6
  64. package/dist/delivery/delivery-lifecycle.js.map +1 -1
  65. package/dist/delivery/delivery-merge-ops.d.ts.map +1 -1
  66. package/dist/delivery/delivery-merge-ops.js +39 -21
  67. package/dist/delivery/delivery-merge-ops.js.map +1 -1
  68. package/dist/delivery/external-hold.d.ts +8 -2
  69. package/dist/delivery/external-hold.d.ts.map +1 -1
  70. package/dist/delivery/external-hold.js +12 -5
  71. package/dist/delivery/external-hold.js.map +1 -1
  72. package/dist/delivery/operator-hold.d.ts +6 -1
  73. package/dist/delivery/operator-hold.d.ts.map +1 -1
  74. package/dist/delivery/operator-hold.js +31 -10
  75. package/dist/delivery/operator-hold.js.map +1 -1
  76. package/dist/delivery/paused-revival.d.ts +6 -0
  77. package/dist/delivery/paused-revival.d.ts.map +1 -1
  78. package/dist/delivery/paused-revival.js +3 -1
  79. package/dist/delivery/paused-revival.js.map +1 -1
  80. package/dist/directive/directive-dispatch.d.ts.map +1 -1
  81. package/dist/directive/directive-dispatch.js +6 -3
  82. package/dist/directive/directive-dispatch.js.map +1 -1
  83. package/dist/directive/directive-queue.d.ts.map +1 -1
  84. package/dist/directive/directive-queue.js +4 -1
  85. package/dist/directive/directive-queue.js.map +1 -1
  86. package/dist/drift/staleness-sensor.d.ts +14 -0
  87. package/dist/drift/staleness-sensor.d.ts.map +1 -1
  88. package/dist/drift/staleness-sensor.js +30 -1
  89. package/dist/drift/staleness-sensor.js.map +1 -1
  90. package/dist/focus/focus-executor.d.ts.map +1 -1
  91. package/dist/focus/focus-executor.js +6 -8
  92. package/dist/focus/focus-executor.js.map +1 -1
  93. package/dist/focus/focus-loop-registry.d.ts.map +1 -1
  94. package/dist/focus/focus-loop-registry.js +23 -13
  95. package/dist/focus/focus-loop-registry.js.map +1 -1
  96. package/dist/focus/focus-respawn-guard.d.ts.map +1 -1
  97. package/dist/focus/focus-respawn-guard.js +21 -4
  98. package/dist/focus/focus-respawn-guard.js.map +1 -1
  99. package/dist/focus/listener-auto-advance.d.ts.map +1 -1
  100. package/dist/focus/listener-auto-advance.js +10 -6
  101. package/dist/focus/listener-auto-advance.js.map +1 -1
  102. package/dist/focus/verify-open-issues.d.ts.map +1 -1
  103. package/dist/focus/verify-open-issues.js +21 -1
  104. package/dist/focus/verify-open-issues.js.map +1 -1
  105. package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts.map +1 -1
  106. package/dist/focus-stage-lifecycle/wedge-watchdog.js +35 -14
  107. package/dist/focus-stage-lifecycle/wedge-watchdog.js.map +1 -1
  108. package/dist/loops/index.d.ts.map +1 -1
  109. package/dist/loops/index.js +2 -1
  110. package/dist/loops/index.js.map +1 -1
  111. package/dist/merge/focus-merge.d.ts +1 -1
  112. package/dist/merge/focus-merge.d.ts.map +1 -1
  113. package/dist/merge/focus-merge.js +5 -1
  114. package/dist/merge/focus-merge.js.map +1 -1
  115. package/dist/merge/merge-back-loop.d.ts +2 -1
  116. package/dist/merge/merge-back-loop.d.ts.map +1 -1
  117. package/dist/merge/merge-back-loop.js +15 -12
  118. package/dist/merge/merge-back-loop.js.map +1 -1
  119. package/dist/merge/merge-conflict-escalation.d.ts.map +1 -1
  120. package/dist/merge/merge-conflict-escalation.js +4 -0
  121. package/dist/merge/merge-conflict-escalation.js.map +1 -1
  122. package/dist/nexus/return.d.ts +14 -15
  123. package/dist/nexus/return.d.ts.map +1 -1
  124. package/dist/nexus/return.js +41 -31
  125. package/dist/nexus/return.js.map +1 -1
  126. package/dist/prompt-sections/execution-sections.d.ts +13 -5
  127. package/dist/prompt-sections/execution-sections.d.ts.map +1 -1
  128. package/dist/prompt-sections/execution-sections.js +78 -18
  129. package/dist/prompt-sections/execution-sections.js.map +1 -1
  130. package/dist/prompt-sections/routing-decider-sections.d.ts +60 -0
  131. package/dist/prompt-sections/routing-decider-sections.d.ts.map +1 -0
  132. package/dist/prompt-sections/routing-decider-sections.js +197 -0
  133. package/dist/prompt-sections/routing-decider-sections.js.map +1 -0
  134. package/dist/queries/agent-resolvable-aging.d.ts +4 -3
  135. package/dist/queries/agent-resolvable-aging.d.ts.map +1 -1
  136. package/dist/queries/agent-resolvable-aging.js +5 -4
  137. package/dist/queries/agent-resolvable-aging.js.map +1 -1
  138. package/dist/queries/agent-resolvable-promotion.d.ts +172 -124
  139. package/dist/queries/agent-resolvable-promotion.d.ts.map +1 -1
  140. package/dist/queries/agent-resolvable-promotion.js +332 -307
  141. package/dist/queries/agent-resolvable-promotion.js.map +1 -1
  142. package/dist/queries/agent-resolvable-retirement.d.ts +105 -0
  143. package/dist/queries/agent-resolvable-retirement.d.ts.map +1 -0
  144. package/dist/queries/agent-resolvable-retirement.js +227 -0
  145. package/dist/queries/agent-resolvable-retirement.js.map +1 -0
  146. package/dist/queries/cause-key.d.ts +109 -0
  147. package/dist/queries/cause-key.d.ts.map +1 -1
  148. package/dist/queries/cause-key.js +93 -1
  149. package/dist/queries/cause-key.js.map +1 -1
  150. package/dist/queries/deliveries.d.ts +14 -0
  151. package/dist/queries/deliveries.d.ts.map +1 -1
  152. package/dist/queries/deliveries.js +20 -2
  153. package/dist/queries/deliveries.js.map +1 -1
  154. package/dist/queries/delivery-gate-state.d.ts +130 -5
  155. package/dist/queries/delivery-gate-state.d.ts.map +1 -1
  156. package/dist/queries/delivery-gate-state.js +111 -2
  157. package/dist/queries/delivery-gate-state.js.map +1 -1
  158. package/dist/queries/escalation-consumption.d.ts +95 -15
  159. package/dist/queries/escalation-consumption.d.ts.map +1 -1
  160. package/dist/queries/escalation-consumption.js +162 -24
  161. package/dist/queries/escalation-consumption.js.map +1 -1
  162. package/dist/queries/escalation-dispositions.d.ts +19 -7
  163. package/dist/queries/escalation-dispositions.d.ts.map +1 -1
  164. package/dist/queries/escalation-dispositions.js +7 -0
  165. package/dist/queries/escalation-dispositions.js.map +1 -1
  166. package/dist/queries/escalation-suppression.d.ts +63 -19
  167. package/dist/queries/escalation-suppression.d.ts.map +1 -1
  168. package/dist/queries/escalation-suppression.js +64 -35
  169. package/dist/queries/escalation-suppression.js.map +1 -1
  170. package/dist/queries/escalations.d.ts +127 -70
  171. package/dist/queries/escalations.d.ts.map +1 -1
  172. package/dist/queries/escalations.js +170 -188
  173. package/dist/queries/escalations.js.map +1 -1
  174. package/dist/queries/filing-observation.d.ts +82 -0
  175. package/dist/queries/filing-observation.d.ts.map +1 -0
  176. package/dist/queries/filing-observation.js +157 -0
  177. package/dist/queries/filing-observation.js.map +1 -0
  178. package/dist/queries/holds.d.ts +69 -2
  179. package/dist/queries/holds.d.ts.map +1 -1
  180. package/dist/queries/holds.js +106 -11
  181. package/dist/queries/holds.js.map +1 -1
  182. package/dist/queries/incident-correlation.d.ts +291 -0
  183. package/dist/queries/incident-correlation.d.ts.map +1 -0
  184. package/dist/queries/incident-correlation.js +408 -0
  185. package/dist/queries/incident-correlation.js.map +1 -0
  186. package/dist/queries/routing-measurement.d.ts +48 -1
  187. package/dist/queries/routing-measurement.d.ts.map +1 -1
  188. package/dist/queries/routing-measurement.js +64 -2
  189. package/dist/queries/routing-measurement.js.map +1 -1
  190. package/dist/queries/routing-quality.d.ts +8 -0
  191. package/dist/queries/routing-quality.d.ts.map +1 -1
  192. package/dist/queries/routing-quality.js +12 -3
  193. package/dist/queries/routing-quality.js.map +1 -1
  194. package/dist/queries/shared.js +1 -1
  195. package/dist/shell/crash-recovery.d.ts.map +1 -1
  196. package/dist/shell/crash-recovery.js +6 -6
  197. package/dist/shell/crash-recovery.js.map +1 -1
  198. package/dist/shell/install-probe-tick.d.ts.map +1 -1
  199. package/dist/shell/install-probe-tick.js +3 -1
  200. package/dist/shell/install-probe-tick.js.map +1 -1
  201. package/dist/spawn/model-routing.d.ts +3 -2
  202. package/dist/spawn/model-routing.d.ts.map +1 -1
  203. package/dist/spawn/model-routing.js +4 -2
  204. package/dist/spawn/model-routing.js.map +1 -1
  205. package/dist/spawn/respawn-cycle-escalation.d.ts +10 -2
  206. package/dist/spawn/respawn-cycle-escalation.d.ts.map +1 -1
  207. package/dist/spawn/respawn-cycle-escalation.js +16 -2
  208. package/dist/spawn/respawn-cycle-escalation.js.map +1 -1
  209. package/dist/spawn/routing-decider-spawn.d.ts +93 -0
  210. package/dist/spawn/routing-decider-spawn.d.ts.map +1 -0
  211. package/dist/spawn/routing-decider-spawn.js +185 -0
  212. package/dist/spawn/routing-decider-spawn.js.map +1 -0
  213. package/dist/spawn/routing-decider.d.ts +42 -0
  214. package/dist/spawn/routing-decider.d.ts.map +1 -0
  215. package/dist/spawn/routing-decider.js +95 -0
  216. package/dist/spawn/routing-decider.js.map +1 -0
  217. package/dist/spawn/shared.d.ts +8 -0
  218. package/dist/spawn/shared.d.ts.map +1 -1
  219. package/dist/spawn/shared.js +1 -1
  220. package/dist/spawn/shared.js.map +1 -1
  221. package/dist/spawn/spawn-decision.d.ts +23 -16
  222. package/dist/spawn/spawn-decision.d.ts.map +1 -1
  223. package/dist/spawn/spawn-decision.js +27 -11
  224. package/dist/spawn/spawn-decision.js.map +1 -1
  225. package/dist/spawn/worktree-session.d.ts +19 -7
  226. package/dist/spawn/worktree-session.d.ts.map +1 -1
  227. package/dist/spawn/worktree-session.js +36 -8
  228. package/dist/spawn/worktree-session.js.map +1 -1
  229. package/dist/testing/fixtures/index.js +1 -1
  230. package/dist/types/index.js +1 -1
  231. package/dist/verify/failure-signature.d.ts +91 -0
  232. package/dist/verify/failure-signature.d.ts.map +1 -0
  233. package/dist/verify/failure-signature.js +233 -0
  234. package/dist/verify/failure-signature.js.map +1 -0
  235. package/dist/verify/shortfall-repeat.d.ts +12 -9
  236. package/dist/verify/shortfall-repeat.d.ts.map +1 -1
  237. package/dist/verify/shortfall-repeat.js +38 -14
  238. package/dist/verify/shortfall-repeat.js.map +1 -1
  239. package/dist/verify/stall-detectors.d.ts +19 -43
  240. package/dist/verify/stall-detectors.d.ts.map +1 -1
  241. package/dist/verify/stall-detectors.js +26 -101
  242. package/dist/verify/stall-detectors.js.map +1 -1
  243. package/dist/verify/unreviewed-settle-detector.d.ts +8 -0
  244. package/dist/verify/unreviewed-settle-detector.d.ts.map +1 -1
  245. package/dist/verify/unreviewed-settle-detector.js +15 -1
  246. package/dist/verify/unreviewed-settle-detector.js.map +1 -1
  247. package/dist/verify/verification-deps-default.d.ts.map +1 -1
  248. package/dist/verify/verification-deps-default.js +14 -2
  249. package/dist/verify/verification-deps-default.js.map +1 -1
  250. package/dist/verify/verification-evidence-unavailable-feedback.d.ts.map +1 -1
  251. package/dist/verify/verification-evidence-unavailable-feedback.js +8 -2
  252. package/dist/verify/verification-evidence-unavailable-feedback.js.map +1 -1
  253. package/dist/verify/verification-feedback.d.ts +62 -14
  254. package/dist/verify/verification-feedback.d.ts.map +1 -1
  255. package/dist/verify/verification-feedback.js +101 -28
  256. package/dist/verify/verification-feedback.js.map +1 -1
  257. package/dist/verify/verify-gate-stall.d.ts +116 -0
  258. package/dist/verify/verify-gate-stall.d.ts.map +1 -0
  259. package/dist/verify/verify-gate-stall.js +169 -0
  260. package/dist/verify/verify-gate-stall.js.map +1 -0
  261. package/dist/verify/verify-restatement.d.ts.map +1 -1
  262. package/dist/verify/verify-restatement.js +2 -1
  263. package/dist/verify/verify-restatement.js.map +1 -1
  264. package/package.json +2 -2
@@ -16,7 +16,7 @@ import { getFocusIssues } from '../queries/focuses.js';
16
16
  import { type AgentResolvableItem } from '../queries/escalation-consumption.js';
17
17
  import { resolveLineageSpec } from '../session/session-lineage.js';
18
18
  import { resolveBackend, type AgentBackend, type EngineOverride, type EnginePass } from '../backends/index.js';
19
- import type { DirectiveResolution } from './shared.js';
19
+ import type { DirectiveResolution, EngineIdSelector, EngineSelectionMetadata } from './shared.js';
20
20
  /**
21
21
  * Build the initial FocusTeamState for a spawn. Pure factory -- no side effects;
22
22
  * the caller inserts it into the activeTeams map.
@@ -137,12 +137,8 @@ export declare function resolveReviewContext(args: {
137
137
  focusDescription: string | null;
138
138
  agentResolvableItems: AgentResolvableItem[];
139
139
  }>;
140
- /**
141
- * Phase B: resolve the session lineage (pass) and the engine backend for it,
142
- * stamping lineage + sessionType onto the team state. Returns the lineage spec,
143
- * the derived engine pass, the resolved engine, and the backend object.
144
- */
145
- export declare function resolveEngineForPass(args: {
140
+ /** Phase B inputs that select the engine; resolveEngineForPass adds the team-state sink. */
141
+ interface EngineSelectionArgs {
146
142
  spawnDirectiveDeclared: DirectiveResolution['spawnDirectiveDeclared'];
147
143
  spawnStageName: string | null;
148
144
  engineOverride: EngineOverride | null | undefined;
@@ -161,6 +157,21 @@ export declare function resolveEngineForPass(args: {
161
157
  /** Org per-pass default models, for engine-from-model derivation + precedence. */
162
158
  orgDefaultCodingModel?: string | null;
163
159
  orgDefaultReviewModel?: string | null;
160
+ }
161
+ /** The spawn-fixed engine inputs: everything Phase B reads that is not directive metadata. */
162
+ export type EngineSelectionInputs = Omit<EngineSelectionArgs, keyof EngineSelectionMetadata | 'stageDirectiveEngine'>;
163
+ /**
164
+ * Phase A engine selector: binds the spawn-fixed inputs so
165
+ * resolveDirectiveOrFallback can resolve, from directive metadata alone, the
166
+ * engine Phase B will select -- and so read the resume slot of THAT engine.
167
+ */
168
+ export declare function engineIdSelector(inputs: EngineSelectionInputs): EngineIdSelector;
169
+ /**
170
+ * Phase B: resolve the session lineage (pass) and the engine backend for it,
171
+ * stamping lineage + sessionType onto the team state. Returns the lineage spec,
172
+ * the derived engine pass, the resolved engine, and the backend object.
173
+ */
174
+ export declare function resolveEngineForPass(args: EngineSelectionArgs & {
164
175
  focusName: string;
165
176
  teamState: FocusTeamState;
166
177
  }): {
@@ -169,4 +180,5 @@ export declare function resolveEngineForPass(args: {
169
180
  resolvedEngine: ReturnType<typeof resolveBackend>;
170
181
  backend: AgentBackend;
171
182
  };
183
+ export {};
172
184
  //# sourceMappingURL=worktree-session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"worktree-session.d.ts","sourceRoot":"","sources":["../../src/spawn/worktree-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worktree-session.d.ts","sourceRoot":"","sources":["../../src/spawn/worktree-session.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
- // Pinned by: packages/daemon/src/spawn/review-worktree-no-verify-defer.test.ts,
2
+ // Pinned by: packages/daemon/src/spawn/directive-body-skip.test.ts,
3
+ // packages/daemon/src/spawn/review-worktree-no-verify-defer.test.ts,
3
4
  // packages/daemon/src/spawn/worktree-session.test.ts
4
5
  // PINNED-BY-END
5
6
  import { createSession } from '../queries/sessions.js';
@@ -258,15 +259,14 @@ export async function resolveReviewContext(args) {
258
259
  return { reviewFiledOpenCount, priorFindings, focusDescription, agentResolvableItems };
259
260
  }
260
261
  /**
261
- * Phase B: resolve the session lineage (pass) and the engine backend for it,
262
- * stamping lineage + sessionType onto the team state. Returns the lineage spec,
263
- * the derived engine pass, the resolved engine, and the backend object.
262
+ * Pure engine selection for a pass: lineage spec, engine pass, and resolved
263
+ * engine. The ONE implementation behind both Phase B (resolveEngineForPass) and
264
+ * the Phase A selector (engineIdSelector), so the engine Phase A uses to decide
265
+ * the directive-body skip is the engine Phase B spawns.
264
266
  */
265
- export function resolveEngineForPass(args) {
266
- const { spawnDirectiveDeclared, spawnStageName, engineOverride, stageDirectiveEngine, config, orgDefaultEngine, pipelineConfig, directiveModel, pendingFocusOverrideModel, workflowIsBuiltin = true, orgDefaultCodingModel, orgDefaultReviewModel, focusName, teamState, } = args;
267
+ function selectEngineForPass(args) {
268
+ const { spawnDirectiveDeclared, spawnStageName, engineOverride, stageDirectiveEngine, config, orgDefaultEngine, pipelineConfig, directiveModel, pendingFocusOverrideModel, workflowIsBuiltin = true, orgDefaultCodingModel, orgDefaultReviewModel, } = args;
267
269
  const spawnSpec = resolveLineageSpec({ declared: spawnDirectiveDeclared, stageName: spawnStageName });
268
- teamState.lineage = spawnSpec.lineage;
269
- teamState.sessionType = spawnSpec.lineage === 'review' ? 'review' : 'coding';
270
270
  const enginePass = spawnSpec.lineage === 'review' ? 'review' : 'coding';
271
271
  // The effective per-pass MODEL under the five-layer precedence, computed so the
272
272
  // engine can be DERIVED from it when no layer pins an engine (an MCP-set
@@ -291,6 +291,34 @@ export function resolveEngineForPass(args) {
291
291
  orgDefault: orgDefaultEngine,
292
292
  resolvedModel: precedenceModel,
293
293
  });
294
+ return { spawnSpec, enginePass, resolvedEngine };
295
+ }
296
+ /**
297
+ * Phase A engine selector: binds the spawn-fixed inputs so
298
+ * resolveDirectiveOrFallback can resolve, from directive metadata alone, the
299
+ * engine Phase B will select -- and so read the resume slot of THAT engine.
300
+ */
301
+ export function engineIdSelector(inputs) {
302
+ return (metadata) => selectEngineForPass({
303
+ ...inputs,
304
+ spawnDirectiveDeclared: metadata.spawnDirectiveDeclared,
305
+ spawnStageName: metadata.spawnStageName,
306
+ stageDirectiveEngine: metadata.directiveEngine,
307
+ directiveModel: metadata.directiveModel,
308
+ pendingFocusOverrideModel: metadata.pendingFocusOverrideModel,
309
+ workflowIsBuiltin: metadata.workflowIsBuiltin,
310
+ }).resolvedEngine.engineId;
311
+ }
312
+ /**
313
+ * Phase B: resolve the session lineage (pass) and the engine backend for it,
314
+ * stamping lineage + sessionType onto the team state. Returns the lineage spec,
315
+ * the derived engine pass, the resolved engine, and the backend object.
316
+ */
317
+ export function resolveEngineForPass(args) {
318
+ const { focusName, teamState } = args;
319
+ const { spawnSpec, enginePass, resolvedEngine } = selectEngineForPass(args);
320
+ teamState.lineage = spawnSpec.lineage;
321
+ teamState.sessionType = spawnSpec.lineage === 'review' ? 'review' : 'coding';
294
322
  const backend = getBackend(resolvedEngine.engineId);
295
323
  log.info(`[focus-executor] Engine for "${focusName}" pass=${enginePass}: ` +
296
324
  `${resolvedEngine.engineId} (source: ${resolvedEngine.source})`);
@@ -1 +1 @@
1
- {"version":3,"file":"worktree-session.js","sourceRoot":"","sources":["../../src/spawn/worktree-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worktree-session.js","sourceRoot":"","sources":["../../src/spawn/worktree-session.ts"],"names":[],"mappings":"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"}
@@ -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: 121 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/testing/fixtures/index.ts
2
+ // Pinned by: 123 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/testing/fixtures/index.ts
3
3
  // PINNED-BY-END
4
4
  /**
5
5
  * Build a FocusDeliveryInfo. Default executionStatus is 'queued' (the majority
@@ -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: 162 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/types/index.ts
2
+ // Pinned by: 163 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/types/index.ts
3
3
  // PINNED-BY-END
4
4
  /**
5
5
  * Domain-specific type re-exports.
@@ -0,0 +1,91 @@
1
+ import { type VerificationSignatureRun } from '../queries/delivery-gate-state.js';
2
+ /** Stage label when failing tests were parsed but no npm script header names a stage. */
3
+ export declare const UNNAMED_STAGE_LABEL = "failing-tests";
4
+ /**
5
+ * Normalize ONE output line so two runs of the same failure compare equal:
6
+ * strips ANSI, replaces the run's cwd, uuids, ISO timestamps, clock times, tmp
7
+ * paths, hex shas and durations with placeholders, then every remaining digit run
8
+ * with '#' (line counts, over-by deltas, pids, versions), collapsing whitespace.
9
+ * Pure -- exported for direct testing.
10
+ */
11
+ export declare function normalizeVolatileDetail(line: string, cwd?: string | null): string;
12
+ /** Where the failing stage's own output begins, and the stage's label. */
13
+ export interface FailingStage {
14
+ /** "<package> <script>" with the version stripped (volatile across deliveries). */
15
+ label: string;
16
+ /** Index of the first line after the failing stage's header. */
17
+ detailStart: number;
18
+ }
19
+ /**
20
+ * Locate the failing npm script in a gate log (see the module doc for why the
21
+ * LAST header names it). Null when the log carries no npm script header at all.
22
+ * Pure -- exported for direct testing.
23
+ */
24
+ export declare function locateFailingStage(lines: readonly string[]): FailingStage | null;
25
+ export interface FailureSignatureInput {
26
+ /** The run's output: the full verification log when available, else the captured tails. */
27
+ logText: string;
28
+ /** Failing-test ids that GATE the rejection (baseline-attributed new failures, or all parsed). */
29
+ failingTests?: readonly string[];
30
+ }
31
+ /**
32
+ * Derive the failure signature "<stage>#<hash>" of a rejected verify run.
33
+ *
34
+ * The hash covers the failing stage's normalized detail: the gating failing-test
35
+ * ids when there are any (so a test stage is keyed on WHICH tests fail, not on
36
+ * the ok-lines of whatever tests the targeted selector picked), otherwise the
37
+ * stage's own output lines. Detail lines are normalized (normalizeVolatileDetail),
38
+ * de-duplicated and sorted, so volatile values and interleaving order never make
39
+ * one failure look like two. A different stage -- or the same stage failing on a
40
+ * different file, function, claim or test -- yields a different signature.
41
+ *
42
+ * Null when underivable: an empty log, or one with neither an npm script header
43
+ * nor a parseable failing test. Pure -- no I/O.
44
+ */
45
+ export declare function deriveFailureSignature(input: FailureSignatureInput): string | null;
46
+ /**
47
+ * Advance the run-length record by one rejection. A signature equal to the prior
48
+ * run's increments `consecutive`; a different one resets it to 1; a null
49
+ * (underivable) signature records 0 -- an unknown failure never counts as a
50
+ * repeat, and the next known signature starts a fresh run. Bounded by
51
+ * construction: one current + one previous signature, never a history. Pure.
52
+ */
53
+ export declare function advanceSignatureRun(prior: VerificationSignatureRun | null, signature: string | null): VerificationSignatureRun;
54
+ /**
55
+ * The signature run recorded on a delivery's LATEST deterministic rejection
56
+ * (gate_state.verification), or null when none is usable: no verification
57
+ * detail (a guard-only, shortfall or evidence-unavailable gate_state), a legacy
58
+ * row written before signatures existed, or an underivable (null) signature.
59
+ * The stall detector falls back to the iteration cap on null. Pure.
60
+ */
61
+ export declare function readRecordedSignatureRun(gateState: unknown): {
62
+ signature: string;
63
+ consecutive: number;
64
+ } | null;
65
+ /** The slice of a verify StrategyResult the signature reads its text from. */
66
+ export interface VerificationLogSource {
67
+ logPath?: string;
68
+ stdoutTail?: string;
69
+ stderrTail?: string;
70
+ }
71
+ /** The full verification log when it exists on disk, else the captured tails. */
72
+ export declare function readVerificationLogText(source: VerificationLogSource): string;
73
+ /** Injected I/O for stamping a signature onto a rejection; the default reads the real log. */
74
+ export interface FailureSignatureDeps {
75
+ readLogText: (source: VerificationLogSource) => string;
76
+ }
77
+ export declare const defaultFailureSignatureDeps: () => FailureSignatureDeps;
78
+ /**
79
+ * Compute the signature fields a rejection's gate_state.verification carries.
80
+ * The run extends the one recorded on the delivery's PRIOR gate_state, whether
81
+ * live or carried forward across the coding -> verify advance
82
+ * (readVerificationHistory). Best-effort: an unreadable log yields a null
83
+ * signature, so consecutive is 0 and the detector falls back to the iteration
84
+ * cap. A prior gate_state with no usable run counts as none. A signature fault
85
+ * must never block the rejection write.
86
+ */
87
+ export declare function computeFailureSignatureRecord(deliveryId: string, source: VerificationLogSource, failingTests: readonly string[], priorGateState: unknown, deps: FailureSignatureDeps): {
88
+ failureSignature: string | null;
89
+ signatureRun: VerificationSignatureRun;
90
+ };
91
+ //# sourceMappingURL=failure-signature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"failure-signature.d.ts","sourceRoot":"","sources":["../../src/verify/failure-signature.ts"],"names":[],"mappings":"AAoDA,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,mCAAmC,CAAC;AAK3C,yFAAyF;AACzF,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AAyBnD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,GAAG,IAAW,GAAG,MAAM,CAavF;AAED,0EAA0E;AAC1E,MAAM,WAAW,YAAY;IAC3B,mFAAmF;IACnF,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,YAAY,GAAG,IAAI,CAoBhF;AAED,MAAM,WAAW,qBAAqB;IACpC,2FAA2F;IAC3F,OAAO,EAAE,MAAM,CAAC;IAChB,kGAAkG;IAClG,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI,CAkBlF;AAMD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAAG,IAAI,EACtC,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB,wBAAwB,CAO1B;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,OAAO,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAS9G;AAMD,8EAA8E;AAC9E,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,iFAAiF;AACjF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAS7E;AAED,8FAA8F;AAC9F,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK,MAAM,CAAC;CACxD;AAED,eAAO,MAAM,2BAA2B,QAAO,oBAE7C,CAAC;AAEH;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,qBAAqB,EAC7B,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,cAAc,EAAE,OAAO,EACvB,IAAI,EAAE,oBAAoB,GACzB;IAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,YAAY,EAAE,wBAAwB,CAAA;CAAE,CAS7E"}
@@ -0,0 +1,233 @@
1
+ // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
+ // Pinned by: packages/daemon/src/integration/verification-history-round-trip.test.ts,
3
+ // packages/daemon/src/verify/failure-signature.test.ts, packages/daemon/src/verify/stall-detectors.test.ts,
4
+ // packages/daemon/src/verify/verification-feedback.test.ts
5
+ // PINNED-BY-END
6
+ /**
7
+ * Failure SIGNATURE of a rejected deterministic verify run, and the run-length
8
+ * record that tells a delivery failing IDENTICALLY from one CONVERGING.
9
+ *
10
+ * iteration_count counts rejections; it cannot say whether they were the SAME
11
+ * rejection. Delivery e8e8fa15 (2026-09-11) ran 16 cycles through verify:gate and
12
+ * failed a DIFFERENT stage each time -- types drift, then daemon-file-size, then
13
+ * daemon-function-size, then lint:counted-claims -- every fix correct, each one
14
+ * uncovering the next gate. A count-keyed stall detector read that as "will not
15
+ * converge". A signature is the discriminator: which stage failed and what it
16
+ * said, with the detail that varies between two runs of the SAME failure
17
+ * (timestamps, durations, line and over-by counts, tmp paths, pids, shas, the
18
+ * package version in npm's script header) normalized away.
19
+ *
20
+ * Three parts:
21
+ * 1. deriveFailureSignature -- PURE: log text (+ the gating failing-test ids)
22
+ * -> "<stage>#<detail-hash>", or null when underivable.
23
+ * 2. advanceSignatureRun -- PURE: prior run + this signature -> the bounded
24
+ * run-length record (reset on change, +1 on repeat; a null signature never
25
+ * counts as a repeat).
26
+ * 3. The PRIOR run's home: gate_state, and nothing else. The rejection stamps
27
+ * the run on gate_state.verification. The stall detector reads it there,
28
+ * from the delivery row it already has. Between two rejections the delivery
29
+ * walks verify_failed -> queued -> coding -> verify, and every writer that
30
+ * clears or replaces the gate on the way (above all the guard-pass coding ->
31
+ * verify advance) carries the run forward under
32
+ * gate_state.verificationHistory (queries/delivery-gate-state.ts
33
+ * carryVerificationHistory). The next rejection reads it back off its prior
34
+ * gate_state (computeFailureSignatureRecord). A verify pass resets it
35
+ * (clearVerificationHistory).
36
+ *
37
+ * Stage location: npm 10 prints NO "Lifecycle script failed" line for a nested
38
+ * npm-run failure, only the "> <pkg>@<version> <script>" header of every script
39
+ * it starts. verify:gate chains its stages with &&, so nothing starts after the
40
+ * failing script and the LAST header in the log names it. When an older npm's
41
+ * "Lifecycle script ... failed" line is present, its first (innermost) occurrence
42
+ * wins. Known imprecision: a stage that itself spawns an npm script
43
+ * (check:types-drift -> gen:types:ephemeral) is labelled by the nested script --
44
+ * stable across repeats, so the discriminator still holds.
45
+ *
46
+ * @module verify/failure-signature
47
+ */
48
+ import { createHash } from 'node:crypto';
49
+ import { existsSync, readFileSync } from 'node:fs';
50
+ import { createLogger } from '../shell/log.js';
51
+ import { parseSignatureRun, readVerificationHistory, } from '../queries/delivery-gate-state.js';
52
+ import { parseFailingTests } from './verification-failure-parser.js';
53
+ const log = createLogger({ module: 'verification' });
54
+ /** Stage label when failing tests were parsed but no npm script header names a stage. */
55
+ export const UNNAMED_STAGE_LABEL = 'failing-tests';
56
+ const STAGE_LABEL_MAX_CHARS = 120;
57
+ const DETAIL_HASH_CHARS = 12;
58
+ /** ANSI CSI/SGR sequences, built from a char code so no control char sits in a regex literal. */
59
+ const ANSI_RE = new RegExp(`${String.fromCharCode(27)}\\[[0-9;?]*[A-Za-z]`, 'g');
60
+ const UUID_RE = /\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/gi;
61
+ const ISO_TS_RE = /\b\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}(?::\d{2}(?:[.,]\d+)?)?(?:Z|[+-]\d{2}:?\d{2})?/g;
62
+ const CLOCK_RE = /\b\d{1,2}:\d{2}:\d{2}(?:\.\d+)?\b/g;
63
+ const TMP_PATH_RE = /(?:\/private)?\/(?:tmp|var\/tmp|var\/folders)\/[^\s'"`),;]+/g;
64
+ /** Lowercase hex runs holding at least one letter AND one digit (git shas, hex ids). */
65
+ const HEX_SHA_RE = /\b(?=[0-9a-f]*[a-f])(?=[0-9a-f]*\d)[0-9a-f]{7,64}\b/g;
66
+ const DURATION_RE = /\b\d+(?:\.\d+)?\s?(?:ms|ns|s|secs?|seconds?|m|mins?|minutes?|h|hrs?|hours?)\b/g;
67
+ const DIGITS_RE = /\d+/g;
68
+ /** npm's per-script header: "> <name>@<version> <script>" (name may be scoped). */
69
+ const NPM_HEADER_RE = /^> ((?:@[^\s@/]+\/)?[^\s@]+)@\S+ (\S+)\s*$/;
70
+ /** npm 7-9 innermost-failure line (npm 10 omits it for nested runs). */
71
+ const NPM_LIFECYCLE_FAILED_RE = /^npm (?:error|ERR!) Lifecycle script `([^`]+)` failed/;
72
+ /** npm / gate chrome lines -- never failure detail. */
73
+ const CHROME_RE = /^(?:npm (?:error|ERR!|warn|WARN|notice)\b|> |TELORA_GATE_COMPLETE:)/;
74
+ /** The "(cwd: <path>)" line runDeterministicStrategy writes at the top of every log. */
75
+ const CWD_HEADER_RE = /^\(cwd: (.+)\)$/m;
76
+ /**
77
+ * Normalize ONE output line so two runs of the same failure compare equal:
78
+ * strips ANSI, replaces the run's cwd, uuids, ISO timestamps, clock times, tmp
79
+ * paths, hex shas and durations with placeholders, then every remaining digit run
80
+ * with '#' (line counts, over-by deltas, pids, versions), collapsing whitespace.
81
+ * Pure -- exported for direct testing.
82
+ */
83
+ export function normalizeVolatileDetail(line, cwd = null) {
84
+ let s = line.replace(ANSI_RE, '');
85
+ if (cwd)
86
+ s = s.split(cwd).join('<cwd>');
87
+ return s
88
+ .replace(UUID_RE, '<uuid>')
89
+ .replace(ISO_TS_RE, '<ts>')
90
+ .replace(CLOCK_RE, '<time>')
91
+ .replace(TMP_PATH_RE, '<tmp>')
92
+ .replace(HEX_SHA_RE, '<sha>')
93
+ .replace(DURATION_RE, '<dur>')
94
+ .replace(DIGITS_RE, '#')
95
+ .replace(/\s+/g, ' ')
96
+ .trim();
97
+ }
98
+ /**
99
+ * Locate the failing npm script in a gate log (see the module doc for why the
100
+ * LAST header names it). Null when the log carries no npm script header at all.
101
+ * Pure -- exported for direct testing.
102
+ */
103
+ export function locateFailingStage(lines) {
104
+ const headers = [];
105
+ let lifecycle = null;
106
+ for (let index = 0; index < lines.length; index++) {
107
+ const line = lines[index];
108
+ const header = NPM_HEADER_RE.exec(line);
109
+ if (header)
110
+ headers.push({ index, name: header[1], script: header[2] });
111
+ const failed = lifecycle === null ? NPM_LIFECYCLE_FAILED_RE.exec(line) : null;
112
+ if (failed)
113
+ lifecycle = { script: failed[1], index };
114
+ }
115
+ const label = (name, script) => `${name} ${script}`.slice(0, STAGE_LABEL_MAX_CHARS);
116
+ if (lifecycle !== null) {
117
+ const failedAt = lifecycle;
118
+ const owner = headers.filter((h) => h.index < failedAt.index && h.script === failedAt.script).pop();
119
+ return owner
120
+ ? { label: label(owner.name, owner.script), detailStart: owner.index + 1 }
121
+ : { label: failedAt.script.slice(0, STAGE_LABEL_MAX_CHARS), detailStart: 0 };
122
+ }
123
+ const last = headers[headers.length - 1];
124
+ return last ? { label: label(last.name, last.script), detailStart: last.index + 1 } : null;
125
+ }
126
+ /**
127
+ * Derive the failure signature "<stage>#<hash>" of a rejected verify run.
128
+ *
129
+ * The hash covers the failing stage's normalized detail: the gating failing-test
130
+ * ids when there are any (so a test stage is keyed on WHICH tests fail, not on
131
+ * the ok-lines of whatever tests the targeted selector picked), otherwise the
132
+ * stage's own output lines. Detail lines are normalized (normalizeVolatileDetail),
133
+ * de-duplicated and sorted, so volatile values and interleaving order never make
134
+ * one failure look like two. A different stage -- or the same stage failing on a
135
+ * different file, function, claim or test -- yields a different signature.
136
+ *
137
+ * Null when underivable: an empty log, or one with neither an npm script header
138
+ * nor a parseable failing test. Pure -- no I/O.
139
+ */
140
+ export function deriveFailureSignature(input) {
141
+ const text = typeof input.logText === 'string' ? input.logText.replace(ANSI_RE, '') : '';
142
+ if (text.trim().length === 0)
143
+ return null;
144
+ const cwd = CWD_HEADER_RE.exec(text)?.[1] ?? null;
145
+ const lines = text.split(/\r?\n/);
146
+ const stage = locateFailingStage(lines);
147
+ const segment = lines.slice(stage?.detailStart ?? 0);
148
+ const tests = input.failingTests && input.failingTests.length > 0
149
+ ? [...input.failingTests]
150
+ : [...parseFailingTests(segment.join('\n'))];
151
+ if (stage === null && tests.length === 0)
152
+ return null;
153
+ const rawDetail = tests.length > 0 ? tests : segment.filter((line) => !CHROME_RE.test(line));
154
+ const detail = [...new Set(rawDetail.map((line) => normalizeVolatileDetail(line, cwd)).filter((line) => line.length > 0))].sort();
155
+ const hash = createHash('sha256').update(detail.join('\n')).digest('hex').slice(0, DETAIL_HASH_CHARS);
156
+ return `${stage?.label ?? UNNAMED_STAGE_LABEL}#${hash}`;
157
+ }
158
+ // ---------------------------------------------------------------------------
159
+ // Run-length record
160
+ // ---------------------------------------------------------------------------
161
+ /**
162
+ * Advance the run-length record by one rejection. A signature equal to the prior
163
+ * run's increments `consecutive`; a different one resets it to 1; a null
164
+ * (underivable) signature records 0 -- an unknown failure never counts as a
165
+ * repeat, and the next known signature starts a fresh run. Bounded by
166
+ * construction: one current + one previous signature, never a history. Pure.
167
+ */
168
+ export function advanceSignatureRun(prior, signature) {
169
+ const previousSignature = prior?.signature ?? null;
170
+ if (signature === null)
171
+ return { signature: null, previousSignature, consecutive: 0 };
172
+ const consecutive = prior && prior.signature === signature && prior.consecutive >= 1
173
+ ? prior.consecutive + 1
174
+ : 1;
175
+ return { signature, previousSignature, consecutive };
176
+ }
177
+ /**
178
+ * The signature run recorded on a delivery's LATEST deterministic rejection
179
+ * (gate_state.verification), or null when none is usable: no verification
180
+ * detail (a guard-only, shortfall or evidence-unavailable gate_state), a legacy
181
+ * row written before signatures existed, or an underivable (null) signature.
182
+ * The stall detector falls back to the iteration cap on null. Pure.
183
+ */
184
+ export function readRecordedSignatureRun(gateState) {
185
+ if (gateState == null || typeof gateState !== 'object')
186
+ return null;
187
+ const verification = gateState.verification;
188
+ if (verification == null || typeof verification !== 'object')
189
+ return null;
190
+ const v = verification;
191
+ if (typeof v.failureSignature !== 'string' || v.failureSignature.length === 0)
192
+ return null;
193
+ const run = parseSignatureRun(v.signatureRun);
194
+ if (!run || run.signature !== v.failureSignature || run.consecutive < 1)
195
+ return null;
196
+ return { signature: run.signature, consecutive: run.consecutive };
197
+ }
198
+ /** The full verification log when it exists on disk, else the captured tails. */
199
+ export function readVerificationLogText(source) {
200
+ if (source.logPath && existsSync(source.logPath)) {
201
+ try {
202
+ return readFileSync(source.logPath, 'utf8');
203
+ }
204
+ catch (err) {
205
+ log.debug('verification log unreadable; using tails', { error: String(err?.message ?? err) });
206
+ }
207
+ }
208
+ return `${source.stdoutTail ?? ''}\n${source.stderrTail ?? ''}`;
209
+ }
210
+ export const defaultFailureSignatureDeps = () => ({
211
+ readLogText: readVerificationLogText,
212
+ });
213
+ /**
214
+ * Compute the signature fields a rejection's gate_state.verification carries.
215
+ * The run extends the one recorded on the delivery's PRIOR gate_state, whether
216
+ * live or carried forward across the coding -> verify advance
217
+ * (readVerificationHistory). Best-effort: an unreadable log yields a null
218
+ * signature, so consecutive is 0 and the detector falls back to the iteration
219
+ * cap. A prior gate_state with no usable run counts as none. A signature fault
220
+ * must never block the rejection write.
221
+ */
222
+ export function computeFailureSignatureRecord(deliveryId, source, failingTests, priorGateState, deps) {
223
+ let failureSignature = null;
224
+ try {
225
+ failureSignature = deriveFailureSignature({ logText: deps.readLogText(source), failingTests });
226
+ }
227
+ catch (err) {
228
+ log.warn(`failure signature derivation failed for delivery ${deliveryId}:`, err.message);
229
+ }
230
+ const prior = readVerificationHistory(priorGateState).signatureRun ?? null;
231
+ return { failureSignature, signatureRun: advanceSignatureRun(prior, failureSignature) };
232
+ }
233
+ //# sourceMappingURL=failure-signature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"failure-signature.js","sourceRoot":"","sources":["../../src/verify/failure-signature.ts"],"names":[],"mappings":"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"}
@@ -18,14 +18,14 @@
18
18
  * that count reaches the threshold, the caller diagnoses a DEFECT IN THE CLAIM
19
19
  * (a modelling act for a human) instead of charging the team another re-work.
20
20
  *
21
- * SELF-CONTAINED / mock-safe: this module imports only a TYPE from the gate-state
22
- * vocabulary (erased at build) and NO daemon-core VALUE, so it never drags the
23
- * daemon-core mock-loader chain into a test. It is pure and deterministic --
24
- * tested directly, no DB.
21
+ * SELF-CONTAINED and mock-safe: this module imports only the gate-state vocabulary,
22
+ * which itself imports nothing, and NO daemon-core VALUE. It never drags the
23
+ * daemon-core mock-loader chain into a test. It is pure and deterministic, tested
24
+ * directly with no DB.
25
25
  *
26
26
  * @module verify/shortfall-repeat
27
27
  */
28
- import type { DeliveryGateState } from '../queries/delivery-gate-state.js';
28
+ import { type DeliveryGateState } from '../queries/delivery-gate-state.js';
29
29
  import type { TargetShortfall } from './verify-restatement.js';
30
30
  /** The persisted repeat state carried in gate_state (shortfallReconciliation.repeat). */
31
31
  export interface ShortfallRepeat {
@@ -67,10 +67,13 @@ export declare const UNCLEARABLE_SHORTFALL_REPEAT_THRESHOLD = 3;
67
67
  */
68
68
  export declare function shortfallSignature(shortfalls: readonly TargetShortfall[]): string;
69
69
  /**
70
- * Read the repeat state persisted on a delivery's gate_state by the previous
71
- * shortfall iteration. Defensive over the loosely-typed `repeat` slot: returns
72
- * null when the field is absent or malformed (a first shortfall, or a legacy row
73
- * written before this field existed).
70
+ * Read the repeat state the previous shortfall iteration left on a delivery's
71
+ * gate_state. It is either LIVE (`shortfallReconciliation.repeat`, the gate is
72
+ * still that shortfall) or CARRIED forward under `verificationHistory` after the
73
+ * guard-pass coding -> verify advance cleared the gate. Before the carry
74
+ * existed, that clear wiped the record and every count restarted at 1.
75
+ * Defensive over the loosely typed slot: returns null when the record is absent
76
+ * or malformed (a first shortfall, a verify pass reset it, or a legacy row).
74
77
  */
75
78
  export declare function readPriorRepeat(priorGateState: DeliveryGateState | null | undefined): ShortfallRepeat | null;
76
79
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"shortfall-repeat.d.ts","sourceRoot":"","sources":["../../src/verify/shortfall-repeat.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,yFAAyF;AACzF,MAAM,WAAW,eAAe;IAC9B,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,sCAAsC,IAAI,CAAC;AAMxD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,SAAS,eAAe,EAAE,GAAG,MAAM,CAKjF;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,cAAc,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,GAAG,eAAe,GAAG,IAAI,CAW5G;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EACpD,UAAU,EAAE,SAAS,eAAe,EAAE,EACtC,SAAS,GAAE,MAA+C,GACzD;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAKnD"}
1
+ {"version":3,"file":"shortfall-repeat.d.ts","sourceRoot":"","sources":["../../src/verify/shortfall-repeat.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACpG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,yFAAyF;AACzF,MAAM,WAAW,eAAe;IAC9B,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,sCAAsC,IAAI,CAAC;AAMxD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,SAAS,eAAe,EAAE,GAAG,MAAM,CAKjF;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,cAAc,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,GAAG,eAAe,GAAG,IAAI,CAE5G;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EACpD,UAAU,EAAE,SAAS,eAAe,EAAE,EACtC,SAAS,GAAE,MAA+C,GACzD;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAKnD"}