@telora/daemon 0.22.181 → 0.22.189

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 (263) 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/escalations.d.ts.map +1 -1
  11. package/dist/completion/escalations.js +4 -1
  12. package/dist/completion/escalations.js.map +1 -1
  13. package/dist/completion/review-exit-phase.d.ts.map +1 -1
  14. package/dist/completion/review-exit-phase.js +11 -4
  15. package/dist/completion/review-exit-phase.js.map +1 -1
  16. package/dist/completion/standing-approval-convergence.d.ts.map +1 -1
  17. package/dist/completion/standing-approval-convergence.js +2 -1
  18. package/dist/completion/standing-approval-convergence.js.map +1 -1
  19. package/dist/focus/focus-executor.d.ts.map +1 -1
  20. package/dist/focus/focus-executor.js +2 -0
  21. package/dist/focus/focus-executor.js.map +1 -1
  22. package/dist/focus/focus-loop-registry.js +2 -2
  23. package/dist/focus/focus-loop-registry.js.map +1 -1
  24. package/dist/focus/session-health.d.ts.map +1 -1
  25. package/dist/focus/session-health.js +2 -1
  26. package/dist/focus/session-health.js.map +1 -1
  27. package/dist/focus-stage-lifecycle/planning-release.d.ts +52 -17
  28. package/dist/focus-stage-lifecycle/planning-release.d.ts.map +1 -1
  29. package/dist/focus-stage-lifecycle/planning-release.js +58 -70
  30. package/dist/focus-stage-lifecycle/planning-release.js.map +1 -1
  31. package/dist/focus-stage-lifecycle/ratify-bar-gate.d.ts +108 -0
  32. package/dist/focus-stage-lifecycle/ratify-bar-gate.d.ts.map +1 -0
  33. package/dist/focus-stage-lifecycle/ratify-bar-gate.js +174 -0
  34. package/dist/focus-stage-lifecycle/ratify-bar-gate.js.map +1 -0
  35. package/dist/git/merge-to-main.d.ts.map +1 -1
  36. package/dist/git/merge-to-main.js.map +1 -1
  37. package/dist/loops/llm-client.d.ts +1 -1
  38. package/dist/loops/llm-client.d.ts.map +1 -1
  39. package/dist/loops/llm-client.js +18 -105
  40. package/dist/loops/llm-client.js.map +1 -1
  41. package/dist/nexus/index.d.ts.map +1 -1
  42. package/dist/nexus/index.js +2 -1
  43. package/dist/nexus/index.js.map +1 -1
  44. package/dist/nexus/intake-prompt-sections.d.ts +70 -0
  45. package/dist/nexus/intake-prompt-sections.d.ts.map +1 -0
  46. package/dist/nexus/intake-prompt-sections.js +145 -0
  47. package/dist/nexus/intake-prompt-sections.js.map +1 -0
  48. package/dist/nexus/intake-spawn.d.ts +49 -13
  49. package/dist/nexus/intake-spawn.d.ts.map +1 -1
  50. package/dist/nexus/intake-spawn.js +45 -122
  51. package/dist/nexus/intake-spawn.js.map +1 -1
  52. package/dist/nexus/intake.d.ts +55 -0
  53. package/dist/nexus/intake.d.ts.map +1 -1
  54. package/dist/nexus/intake.js +62 -1
  55. package/dist/nexus/intake.js.map +1 -1
  56. package/dist/prd/arm-readiness.d.ts +93 -0
  57. package/dist/prd/arm-readiness.d.ts.map +1 -0
  58. package/dist/prd/arm-readiness.js +254 -0
  59. package/dist/prd/arm-readiness.js.map +1 -0
  60. package/dist/prd/arm-refusal.d.ts +149 -0
  61. package/dist/prd/arm-refusal.d.ts.map +1 -0
  62. package/dist/prd/arm-refusal.js +219 -0
  63. package/dist/prd/arm-refusal.js.map +1 -0
  64. package/dist/prd/controller-shared.d.ts +111 -0
  65. package/dist/prd/controller-shared.d.ts.map +1 -1
  66. package/dist/prd/controller-shared.js +3 -1
  67. package/dist/prd/controller-shared.js.map +1 -1
  68. package/dist/prd/controller.d.ts +16 -10
  69. package/dist/prd/controller.d.ts.map +1 -1
  70. package/dist/prd/controller.js +28 -35
  71. package/dist/prd/controller.js.map +1 -1
  72. package/dist/prd/frontier-arming.d.ts +151 -0
  73. package/dist/prd/frontier-arming.d.ts.map +1 -0
  74. package/dist/prd/frontier-arming.js +315 -0
  75. package/dist/prd/frontier-arming.js.map +1 -0
  76. package/dist/prd/index.d.ts +10 -1
  77. package/dist/prd/index.d.ts.map +1 -1
  78. package/dist/prd/index.js +9 -1
  79. package/dist/prd/index.js.map +1 -1
  80. package/dist/prd/scoping-prompt.d.ts +68 -0
  81. package/dist/prd/scoping-prompt.d.ts.map +1 -0
  82. package/dist/prd/scoping-prompt.js +86 -0
  83. package/dist/prd/scoping-prompt.js.map +1 -0
  84. package/dist/prompt/prompt-contradictions.d.ts +20 -1
  85. package/dist/prompt/prompt-contradictions.d.ts.map +1 -1
  86. package/dist/prompt/prompt-contradictions.js +35 -0
  87. package/dist/prompt/prompt-contradictions.js.map +1 -1
  88. package/dist/prompt/team-prompt-base.d.ts +18 -0
  89. package/dist/prompt/team-prompt-base.d.ts.map +1 -1
  90. package/dist/prompt/team-prompt-base.js +56 -11
  91. package/dist/prompt/team-prompt-base.js.map +1 -1
  92. package/dist/prompt-sections/persona-sections.d.ts +36 -13
  93. package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
  94. package/dist/prompt-sections/persona-sections.js +93 -16
  95. package/dist/prompt-sections/persona-sections.js.map +1 -1
  96. package/dist/prompt-sections/scoping-sections.d.ts +19 -5
  97. package/dist/prompt-sections/scoping-sections.d.ts.map +1 -1
  98. package/dist/prompt-sections/scoping-sections.js +45 -38
  99. package/dist/prompt-sections/scoping-sections.js.map +1 -1
  100. package/dist/prompt-sections/shared.d.ts +8 -0
  101. package/dist/prompt-sections/shared.d.ts.map +1 -1
  102. package/dist/prompt-sections/shared.js.map +1 -1
  103. package/dist/queries/agent-resolvable-promotion.d.ts +12 -0
  104. package/dist/queries/agent-resolvable-promotion.d.ts.map +1 -1
  105. package/dist/queries/agent-resolvable-promotion.js +17 -6
  106. package/dist/queries/agent-resolvable-promotion.js.map +1 -1
  107. package/dist/queries/delivery-gate-state.d.ts +3 -0
  108. package/dist/queries/delivery-gate-state.d.ts.map +1 -1
  109. package/dist/queries/delivery-gate-state.js +1 -1
  110. package/dist/queries/delivery-gate-state.js.map +1 -1
  111. package/dist/queries/focus-criteria-standing.d.ts +170 -7
  112. package/dist/queries/focus-criteria-standing.d.ts.map +1 -1
  113. package/dist/queries/focus-criteria-standing.js +143 -8
  114. package/dist/queries/focus-criteria-standing.js.map +1 -1
  115. package/dist/queries/focus-ratify-release.d.ts +43 -0
  116. package/dist/queries/focus-ratify-release.d.ts.map +1 -0
  117. package/dist/queries/focus-ratify-release.js +45 -0
  118. package/dist/queries/focus-ratify-release.js.map +1 -0
  119. package/dist/queries/focuses.d.ts +0 -10
  120. package/dist/queries/focuses.d.ts.map +1 -1
  121. package/dist/queries/focuses.js +0 -14
  122. package/dist/queries/focuses.js.map +1 -1
  123. package/dist/queries/prd.d.ts +31 -0
  124. package/dist/queries/prd.d.ts.map +1 -1
  125. package/dist/queries/prd.js +26 -1
  126. package/dist/queries/prd.js.map +1 -1
  127. package/dist/queries/shared.js +1 -1
  128. package/dist/queries/verify-own-holds.d.ts +89 -0
  129. package/dist/queries/verify-own-holds.d.ts.map +1 -0
  130. package/dist/queries/verify-own-holds.js +93 -0
  131. package/dist/queries/verify-own-holds.js.map +1 -0
  132. package/dist/resolvers/focus-criteria-standing.d.ts.map +1 -1
  133. package/dist/resolvers/focus-criteria-standing.js +324 -25
  134. package/dist/resolvers/focus-criteria-standing.js.map +1 -1
  135. package/dist/security/security-auto-inject.d.ts +51 -0
  136. package/dist/security/security-auto-inject.d.ts.map +1 -1
  137. package/dist/security/security-auto-inject.js +101 -11
  138. package/dist/security/security-auto-inject.js.map +1 -1
  139. package/dist/security/security-scan-engine.d.ts +4 -4
  140. package/dist/security/security-scan-engine.d.ts.map +1 -1
  141. package/dist/security/security-scan-engine.js +6 -0
  142. package/dist/security/security-scan-engine.js.map +1 -1
  143. package/dist/session/session-lineage.d.ts.map +1 -1
  144. package/dist/session/session-lineage.js +2 -0
  145. package/dist/session/session-lineage.js.map +1 -1
  146. package/dist/shell/constants.d.ts +5 -0
  147. package/dist/shell/constants.d.ts.map +1 -1
  148. package/dist/shell/constants.js +5 -0
  149. package/dist/shell/constants.js.map +1 -1
  150. package/dist/shell/daemon-instance.d.ts +74 -64
  151. package/dist/shell/daemon-instance.d.ts.map +1 -1
  152. package/dist/shell/daemon-instance.js +16 -121
  153. package/dist/shell/daemon-instance.js.map +1 -1
  154. package/dist/shell/health-events.js +1 -1
  155. package/dist/shell/health-events.js.map +1 -1
  156. package/dist/shell/instance-liveness.d.ts +112 -0
  157. package/dist/shell/instance-liveness.d.ts.map +1 -0
  158. package/dist/shell/instance-liveness.js +205 -0
  159. package/dist/shell/instance-liveness.js.map +1 -0
  160. package/dist/shell/schema-version-gate.d.ts +22 -0
  161. package/dist/shell/schema-version-gate.d.ts.map +1 -1
  162. package/dist/shell/schema-version-gate.js +116 -6
  163. package/dist/shell/schema-version-gate.js.map +1 -1
  164. package/dist/shell/worker-pidfile.d.ts +21 -8
  165. package/dist/shell/worker-pidfile.d.ts.map +1 -1
  166. package/dist/shell/worker-pidfile.js +38 -9
  167. package/dist/shell/worker-pidfile.js.map +1 -1
  168. package/dist/spawn/lead-launch.d.ts.map +1 -1
  169. package/dist/spawn/lead-launch.js +2 -1
  170. package/dist/spawn/lead-launch.js.map +1 -1
  171. package/dist/spawn/one-shot-model.d.ts +145 -0
  172. package/dist/spawn/one-shot-model.d.ts.map +1 -0
  173. package/dist/spawn/one-shot-model.js +329 -0
  174. package/dist/spawn/one-shot-model.js.map +1 -0
  175. package/dist/spawn/one-shot-scoping-spawn.d.ts +51 -0
  176. package/dist/spawn/one-shot-scoping-spawn.d.ts.map +1 -0
  177. package/dist/spawn/one-shot-scoping-spawn.js +156 -0
  178. package/dist/spawn/one-shot-scoping-spawn.js.map +1 -0
  179. package/dist/spawn/process-spawn.d.ts +12 -0
  180. package/dist/spawn/process-spawn.d.ts.map +1 -1
  181. package/dist/spawn/process-spawn.js +1 -1
  182. package/dist/spawn/process-spawn.js.map +1 -1
  183. package/dist/spawn/prompt-assembly.d.ts +8 -0
  184. package/dist/spawn/prompt-assembly.d.ts.map +1 -1
  185. package/dist/spawn/prompt-assembly.js +15 -3
  186. package/dist/spawn/prompt-assembly.js.map +1 -1
  187. package/dist/spawn/review-hold-park.d.ts.map +1 -1
  188. package/dist/spawn/review-hold-park.js +7 -3
  189. package/dist/spawn/review-hold-park.js.map +1 -1
  190. package/dist/spawn/routing-decider-spawn.d.ts +30 -0
  191. package/dist/spawn/routing-decider-spawn.d.ts.map +1 -1
  192. package/dist/spawn/routing-decider-spawn.js +84 -2
  193. package/dist/spawn/routing-decider-spawn.js.map +1 -1
  194. package/dist/spawn/routing-decider.d.ts.map +1 -1
  195. package/dist/spawn/routing-decider.js +22 -0
  196. package/dist/spawn/routing-decider.js.map +1 -1
  197. package/dist/spawn/spawn-cooldown.d.ts +15 -1
  198. package/dist/spawn/spawn-cooldown.d.ts.map +1 -1
  199. package/dist/spawn/spawn-cooldown.js +67 -19
  200. package/dist/spawn/spawn-cooldown.js.map +1 -1
  201. package/dist/spawn/worktree-session.d.ts +24 -6
  202. package/dist/spawn/worktree-session.d.ts.map +1 -1
  203. package/dist/spawn/worktree-session.js +37 -14
  204. package/dist/spawn/worktree-session.js.map +1 -1
  205. package/dist/testing/arm-coverage-model.d.ts +75 -0
  206. package/dist/testing/arm-coverage-model.d.ts.map +1 -0
  207. package/dist/testing/arm-coverage-model.js +114 -0
  208. package/dist/testing/arm-coverage-model.js.map +1 -0
  209. package/dist/testing/fixtures/index.js +1 -1
  210. package/dist/types/index.js +1 -1
  211. package/dist/verify/ai-inspection-runner.d.ts.map +1 -1
  212. package/dist/verify/ai-inspection-runner.js +26 -7
  213. package/dist/verify/ai-inspection-runner.js.map +1 -1
  214. package/dist/verify/de-restatement.d.ts +9 -2
  215. package/dist/verify/de-restatement.d.ts.map +1 -1
  216. package/dist/verify/de-restatement.js +14 -76
  217. package/dist/verify/de-restatement.js.map +1 -1
  218. package/dist/verify/default-on-guards.d.ts +5 -2
  219. package/dist/verify/default-on-guards.d.ts.map +1 -1
  220. package/dist/verify/default-on-guards.js +5 -3
  221. package/dist/verify/default-on-guards.js.map +1 -1
  222. package/dist/verify/verification-boundary-env.d.ts +7 -2
  223. package/dist/verify/verification-boundary-env.d.ts.map +1 -1
  224. package/dist/verify/verification-boundary-env.js +9 -4
  225. package/dist/verify/verification-boundary-env.js.map +1 -1
  226. package/dist/verify/verification-deps-default.d.ts.map +1 -1
  227. package/dist/verify/verification-deps-default.js +6 -0
  228. package/dist/verify/verification-deps-default.js.map +1 -1
  229. package/dist/verify/verification-deps.d.ts +10 -0
  230. package/dist/verify/verification-deps.d.ts.map +1 -1
  231. package/dist/verify/verification-deterministic.d.ts +7 -0
  232. package/dist/verify/verification-deterministic.d.ts.map +1 -1
  233. package/dist/verify/verification-deterministic.js.map +1 -1
  234. package/dist/verify/verification-engine.d.ts +1 -20
  235. package/dist/verify/verification-engine.d.ts.map +1 -1
  236. package/dist/verify/verification-engine.js +24 -55
  237. package/dist/verify/verification-engine.js.map +1 -1
  238. package/dist/verify/verification-evidence-unavailable-feedback.d.ts +3 -1
  239. package/dist/verify/verification-evidence-unavailable-feedback.d.ts.map +1 -1
  240. package/dist/verify/verification-evidence-unavailable-feedback.js +3 -1
  241. package/dist/verify/verification-evidence-unavailable-feedback.js.map +1 -1
  242. package/dist/verify/verification-feedback.d.ts +4 -12
  243. package/dist/verify/verification-feedback.d.ts.map +1 -1
  244. package/dist/verify/verification-feedback.js +7 -12
  245. package/dist/verify/verification-feedback.js.map +1 -1
  246. package/dist/verify/verification-history-reset.d.ts.map +1 -1
  247. package/dist/verify/verification-history-reset.js +11 -3
  248. package/dist/verify/verification-history-reset.js.map +1 -1
  249. package/dist/verify/verification-model-unavailable-hold.d.ts +92 -0
  250. package/dist/verify/verification-model-unavailable-hold.d.ts.map +1 -0
  251. package/dist/verify/verification-model-unavailable-hold.js +207 -0
  252. package/dist/verify/verification-model-unavailable-hold.js.map +1 -0
  253. package/dist/verify/verification-strategies.d.ts +32 -0
  254. package/dist/verify/verification-strategies.d.ts.map +1 -0
  255. package/dist/verify/verification-strategies.js +47 -0
  256. package/dist/verify/verification-strategies.js.map +1 -0
  257. package/dist/verify/verify-reconciliation.d.ts.map +1 -1
  258. package/dist/verify/verify-reconciliation.js +2 -1
  259. package/dist/verify/verify-reconciliation.js.map +1 -1
  260. package/dist/verify/verify-restatement.d.ts.map +1 -1
  261. package/dist/verify/verify-restatement.js +21 -8
  262. package/dist/verify/verify-restatement.js.map +1 -1
  263. package/package.json +2 -2
@@ -14,17 +14,36 @@
14
14
  * Per-batch (memoized across all findings in a scan run by
15
15
  * wrapAutoInjectForScanRun):
16
16
  * 1. Security remediation focus + tree.
17
- * 2. Batch entity node representing the codebase's security surface.
18
- * 3. Batch injection node ("Remediate security findings ...") targeting
19
- * the entity node via a reality_tree_edge of kind 'targets'.
20
- * 4. Batch delivery on the focus, linked to the injection via the
17
+ * 2. Batch entity node representing the codebase's security surface --
18
+ * the CAUSE, a neutral fact about what exists.
19
+ * 3. Batch undesired-effect node: the security PROBLEM the remediation
20
+ * removes, authored from the finding that opened the batch, carrying a
21
+ * non-blank frt_statement that states what its absence looks like. A
22
+ * `sufficient` edge runs entity -> effect (cause -> effect).
23
+ * 4. Batch injection node ("Remediate security findings ...") targeting
24
+ * the UNDESIRED EFFECT via a reality_tree_edge of kind 'targets'.
25
+ * 5. Batch delivery on the focus, linked to the injection via the
21
26
  * delivery's injection_id column.
22
27
  *
23
28
  * Per finding:
24
- * 5. Issue under the batch delivery (title = "Remediate <ioc>:<id>",
29
+ * 6. Issue under the batch delivery (title = "Remediate <ioc>:<id>",
25
30
  * description = advisory summary).
26
- * 6. Sets finding.linked_injection_id to the batch injection.
27
- * 7. Writes a security_finding_audit row with action='auto_injected'.
31
+ * 7. Sets finding.linked_injection_id to the batch injection.
32
+ * 8. Writes a security_finding_audit row with action='auto_injected'.
33
+ *
34
+ * WHY THE INJECTION TARGETS THE EFFECT AND NOT THE ENTITY. The arm of the
35
+ * remediation focus is applied last, by the batch-delivery door, and only when
36
+ * every node the injection targets STATES the future it covers
37
+ * (reality_tree_nodes.frt_statement). An entity node states no future -- it is
38
+ * a fact, not an effect -- so an injection that targets only the entity can
39
+ * never satisfy that bar, whatever prose is written on it: the arm would be
40
+ * withheld on every scan batch, forever. The entity REMAINS, as the cause; what
41
+ * the tree was missing is the effect and its stated future.
42
+ *
43
+ * The future statement here is MACHINE-DRAFTED from the finding, so it is
44
+ * written with frt_statement_drafted = true. A draft is accepted and carried
45
+ * with its flag, never passed off as authored -- the criteria stamp renders
46
+ * the flag downstream.
28
47
  *
29
48
  * No severity gate -- AI attempts every finding. The only short-circuit
30
49
  * is `skipped_already_linked` when the finding already carries a
@@ -53,6 +72,40 @@ function buildFindingLabel(finding) {
53
72
  * upsert dedupes on (treeId, statement, type='entity'), so every finding
54
73
  * in the run reuses the same node. */
55
74
  const BATCH_ENTITY_LABEL = 'Codebase security surface';
75
+ /**
76
+ * The batch UNDESIRED EFFECT -- what is wrong, in evidence terms.
77
+ *
78
+ * Grounded in the finding that opened the batch (its ioc class, identifier and
79
+ * severity are the only facts available when the memoized per-batch nodes are
80
+ * created), and worded so it stays true of the batch as a whole: the finding is
81
+ * named as the one that opened it, not as the only one in it.
82
+ */
83
+ export function buildBatchEffectStatement(finding) {
84
+ return ('Unremediated security findings are open against this codebase ' +
85
+ `(batch opened by ${finding.iocClass} finding ${finding.identifier}, severity ${finding.severity})`);
86
+ }
87
+ /**
88
+ * The stated future for that effect -- what its ABSENCE looks like, in terms
89
+ * the scanner itself re-measures. The re-scan resolution pass flips a finding
90
+ * to 'resolved' precisely when a later scan of the same ioc class no longer
91
+ * observes its identifier, so this statement is checkable by the machine that
92
+ * wrote it rather than being a wish.
93
+ *
94
+ * MACHINE-DRAFTED. Written with frt_statement_drafted = true; see
95
+ * BATCH_EFFECT_FUTURE_IS_DRAFTED.
96
+ */
97
+ export function buildBatchEffectFutureStatement(finding) {
98
+ return ('A re-scan of this codebase observes no open security findings from this batch: ' +
99
+ `${finding.iocClass} finding ${finding.identifier} (severity ${finding.severity}), and every ` +
100
+ 'other finding tracked under this delivery, is remediated and no longer reported by the scanner.');
101
+ }
102
+ /**
103
+ * The batch future statement is composed by this module from scan data -- no
104
+ * human wrote it -- so it is recorded as a DRAFT. Downstream (the criteria
105
+ * stamp) renders the flag, which is what keeps a drafted future from reading as
106
+ * declared intent.
107
+ */
108
+ export const BATCH_EFFECT_FUTURE_IS_DRAFTED = true;
56
109
  /** Generic batch injection statement. The scan-run timestamp + finding
57
110
  * count are not appended here -- focus name finalization carries that
58
111
  * metadata for the dashboard. */
@@ -65,22 +118,42 @@ const BATCH_DELIVERY_DESCRIPTION = 'Auto-created to hold remediation work for th
65
118
  export async function processNewFinding(finding, _options, deps) {
66
119
  if (finding.linkedInjectionId)
67
120
  return { status: 'skipped_already_linked' };
68
- // Steps 1-4 are per-batch: focus, entity, injection, delivery. Each is
69
- // memoized by wrapAutoInjectForScanRun so every finding in the scan run
121
+ // Steps 1-5 are per-batch: focus, entity, effect, injection, delivery. Each
122
+ // is memoized by wrapAutoInjectForScanRun so every finding in the scan run
70
123
  // resolves the same set of identifiers without re-calling the server.
71
124
  const focus = await deps.createSecurityRemediationFocus(finding.productId, finding.organizationId);
125
+ // The CAUSE: a neutral fact about what exists. Stays in the tree.
72
126
  const entity = await deps.upsertEntityNode({
73
127
  treeId: focus.treeId,
74
128
  organizationId: finding.organizationId,
75
129
  label: BATCH_ENTITY_LABEL,
76
130
  payload: { batch: true },
77
131
  });
132
+ // The EFFECT the remediation removes, and the future its absence describes.
133
+ // This -- not the entity -- is what the injection targets, because an arm can
134
+ // only cover an effect that states a future.
135
+ const effect = await deps.upsertEffectNode({
136
+ treeId: focus.treeId,
137
+ organizationId: finding.organizationId,
138
+ label: buildBatchEffectStatement(finding),
139
+ frtStatement: buildBatchEffectFutureStatement(finding),
140
+ frtStatementDrafted: BATCH_EFFECT_FUTURE_IS_DRAFTED,
141
+ causeNodeId: entity.nodeId,
142
+ payload: {
143
+ batch: true,
144
+ ioc_class: finding.iocClass,
145
+ severity: finding.severity,
146
+ identifier: finding.identifier,
147
+ opened_by_finding_id: finding.id,
148
+ advisory: buildAdvisorySummary(finding),
149
+ },
150
+ });
78
151
  const injection = await deps.createInjection({
79
152
  treeId: focus.treeId,
80
153
  organizationId: finding.organizationId,
81
154
  statement: BATCH_INJECTION_STATEMENT,
82
- targetNodeId: entity.nodeId,
83
- sourcePayload: { batch: true },
155
+ targetNodeId: effect.nodeId,
156
+ sourcePayload: { batch: true, target_kind: 'undesired_effect' },
84
157
  });
85
158
  const delivery = await deps.createDelivery({
86
159
  focusId: focus.focusId,
@@ -137,6 +210,23 @@ export function buildDefaultAutoInjectDeps() {
137
210
  upsertEntityNode: async (input) => {
138
211
  return callApi('daemon_upsert_security_entity_node', input);
139
212
  },
213
+ upsertEffectNode: async (input) => {
214
+ // Same action as the entity upsert, on purpose: ONE server-side door
215
+ // owns node de-duplication for the batch tree, and an older deployed
216
+ // edge function that does not yet read the extra fields degrades to
217
+ // creating a plain entity -- which the arm door then declines to arm
218
+ // with `unstated_effect`, exactly today's behaviour and no worse.
219
+ return callApi('daemon_upsert_security_entity_node', {
220
+ treeId: input.treeId,
221
+ organizationId: input.organizationId,
222
+ label: input.label,
223
+ payload: input.payload,
224
+ nodeType: 'undesired_effect',
225
+ frtStatement: input.frtStatement,
226
+ frtStatementDrafted: input.frtStatementDrafted,
227
+ causeNodeId: input.causeNodeId,
228
+ });
229
+ },
140
230
  createInjection: async (input) => {
141
231
  return callApi('daemon_create_security_injection', input);
142
232
  },
@@ -1 +1 @@
1
- {"version":3,"file":"security-auto-inject.js","sourceRoot":"","sources":["../../src/security/security-auto-inject.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"security-auto-inject.js","sourceRoot":"","sources":["../../src/security/security-auto-inject.ts"],"names":[],"mappings":"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"}
@@ -99,10 +99,10 @@ export interface SecurityScanDeps {
99
99
  }
100
100
  /**
101
101
  * Memoize the per-batch identifiers within one scan-run: focus (+ tree),
102
- * entity node, injection node, and delivery. The server handlers always
103
- * create new rows; without this wrapper, every finding in the scan would
104
- * land in its own focus + delivery, producing N noisy copies of what is
105
- * conceptually one remediation batch. Returns undefined when no
102
+ * entity node, undesired-effect node, injection node, and delivery. The
103
+ * server handlers always create new rows; without this wrapper, every finding
104
+ * in the scan would land in its own focus + delivery, producing N noisy copies
105
+ * of what is conceptually one remediation batch. Returns undefined when no
106
106
  * auto-inject is configured.
107
107
  *
108
108
  * Failure semantics: if a memoized call throws, that slot's cached promise
@@ -1 +1 @@
1
- {"version":3,"file":"security-scan-engine.d.ts","sourceRoot":"","sources":["../../src/security/security-scan-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"security-scan-engine.d.ts","sourceRoot":"","sources":["../../src/security/security-scan-engine.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAGL,KAAK,cAAc,EAEpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAGL,KAAK,cAAc,EAEpB,MAAM,iCAAiC,CAAC;AAYzC,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAC9D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,aAAa,GAAG,UAAU,GAAG,WAAW,CAAC;AAE9E,sEAAsE;AACtE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,+CAA+C;AAC/C,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,8EAA8E;AAC9E,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,gDAAgD;AAChD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,iFAAiF;IACjF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,uDAAuD;AACvD,MAAM,WAAW,OAAO;IACtB,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAC7C;AAQD,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEtD;AAED,wBAAgB,qBAAqB,IAAI,OAAO,EAAE,CAEjD;AAMD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,6EAA6E;AAC7E,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE,qBAAqB,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3E;;;;OAIG;IACH,aAAa,EAAE,CACb,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,YAAY,KAClB,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAClC,8DAA8D;IAC9D,mBAAmB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,qBAAqB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D;;;;;;;OAOG;IACH,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACjD;;;;OAIG;IACH,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;;;OAIG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,cAAc,CAAC;IACrB,sEAAsE;IACtE,WAAW,IAAI,MAAM,GAAG,IAAI,CAAC;CAC9B;AAwBD,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,cAAc,GAAG,SAAS,GAChC,iBAAiB,GAAG,SAAS,CA+B/B;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,UAAU,GAAG,QAAQ,EAC9B,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,IAAI,CAAC,CAwIf;AAaD,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,gBAAgB,EACtB,IAAI,GAAE,qBAA0B,GAC/B,OAAO,CAAC,IAAI,CAAC,CAiBf;AAMD,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CAiDnF"}
@@ -63,12 +63,18 @@ export function wrapAutoInjectForScanRun(inner) {
63
63
  resolvedFocusId = result.focusId;
64
64
  });
65
65
  const entityFn = makeMemoSlot(inner.upsertEntityNode);
66
+ // The effect node needs its OWN slot. It is a second node upsert in the same
67
+ // batch, so sharing the entity slot would hand the caller back the entity id
68
+ // and the injection would target the entity again -- the exact defect the
69
+ // effect node exists to remove.
70
+ const effectFn = makeMemoSlot(inner.upsertEffectNode);
66
71
  const injectionFn = makeMemoSlot(inner.createInjection);
67
72
  const deliveryFn = makeMemoSlot(inner.createDelivery);
68
73
  const wrapped = {
69
74
  ...inner,
70
75
  createSecurityRemediationFocus: (productId, organizationId) => focusFn({ productId, organizationId }),
71
76
  upsertEntityNode: entityFn,
77
+ upsertEffectNode: effectFn,
72
78
  createInjection: injectionFn,
73
79
  createDelivery: deliveryFn,
74
80
  };
@@ -1 +1 @@
1
- {"version":3,"file":"security-scan-engine.js","sourceRoot":"","sources":["../../src/security/security-scan-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"security-scan-engine.js","sourceRoot":"","sources":["../../src/security/security-scan-engine.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"session-lineage.d.ts","sourceRoot":"","sources":["../../src/session/session-lineage.ts"],"names":[],"mappings":"AAaA;;;;;;;;;;;;;;GAcG;AAEH,oDAAoD;AACpD,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEnD,8DAA8D;AAC9D,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,iBAAiB,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,QAAQ,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,GAAG,SAAS,CAAC;IAChG,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACtC,GAAG,WAAW,CAKd;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,iBAAiB,CAAC;CAC/B,GAAG,MAAM,GAAG,IAAI,CAGhB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,EAC9C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAExB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,+EAA+E;IAC/E,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,8DAA8D;IAC9D,cAAc,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,aAAa,EAAE,OAAO,CAAC;CACxB,GAAG,OAAO,CAKV"}
1
+ {"version":3,"file":"session-lineage.d.ts","sourceRoot":"","sources":["../../src/session/session-lineage.ts"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;;GAcG;AAEH,oDAAoD;AACpD,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEnD,8DAA8D;AAC9D,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,iBAAiB,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,QAAQ,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,GAAG,SAAS,CAAC;IAChG,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACtC,GAAG,WAAW,CAKd;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,iBAAiB,CAAC;CAC/B,GAAG,MAAM,GAAG,IAAI,CAGhB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,EAC9C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAExB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,+EAA+E;IAC/E,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,8DAA8D;IAC9D,cAAc,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,aAAa,EAAE,OAAO,CAAC;CACxB,GAAG,OAAO,CAKV"}
@@ -4,6 +4,8 @@
4
4
  // packages/daemon/src/integration/approved-head-gate-failure-respawn-regression.test.ts,
5
5
  // packages/daemon/src/integration/review-rework-resume-verdict.test.ts,
6
6
  // packages/daemon/src/integration/verification-rework-resume-verdict.test.ts,
7
+ // packages/daemon/src/prompt/prompt-contradictions.test.ts,
8
+ // packages/daemon/src/prompt/remediation-framing-per-pass.test.ts,
7
9
  // packages/daemon/src/session/session-lineage.test.ts,
8
10
  // packages/daemon/src/session/session-pass-close.test.ts,
9
11
  // packages/daemon/src/session/session-pass-write-path.test.ts,
@@ -1 +1 @@
1
- {"version":3,"file":"session-lineage.js","sourceRoot":"","sources":["../../src/session/session-lineage.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,wFAAwF;AACxF,uEAAuE;AACvE,2FAA2F;AAC3F,0EAA0E;AAC1E,gFAAgF;AAChF,yDAAyD;AACzD,4DAA4D;AAC5D,iEAAiE;AACjE,mEAAmE;AACnE,qEAAqE;AACrE,gBAAgB;AA2BhB;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,OAAe;IAC7D,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,OAAO,EAAE,CAAC;AACpE,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAGlC;IACC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO;WACjC,CAAC,IAAI,CAAC,SAAS,KAAK,WAAW,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC3F,MAAM,UAAU,GAAsB,IAAI,CAAC,QAAQ,EAAE,UAAU,IAAI,QAAQ,CAAC;IAC5E,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AACjC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAAC,IAK/B;IACC,IAAI,IAAI,CAAC,UAAU,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IAC7C,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC;AAC/E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,GAA8C,EAC9C,QAAgB,EAChB,OAAe,EACf,SAAiB;IAEjB,OAAO,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;AAC3E,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,eAAe,CAAC,IAO/B;IACC,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,cAAc,CAAC;IACzD,CAAC;IACD,OAAO,IAAI,CAAC,aAAa,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"session-lineage.js","sourceRoot":"","sources":["../../src/session/session-lineage.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,wFAAwF;AACxF,uEAAuE;AACvE,2FAA2F;AAC3F,0EAA0E;AAC1E,gFAAgF;AAChF,8DAA8D;AAC9D,qEAAqE;AACrE,yDAAyD;AACzD,4DAA4D;AAC5D,iEAAiE;AACjE,mEAAmE;AACnE,qEAAqE;AACrE,gBAAgB;AA2BhB;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,OAAe;IAC7D,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,OAAO,EAAE,CAAC;AACpE,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAGlC;IACC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO;WACjC,CAAC,IAAI,CAAC,SAAS,KAAK,WAAW,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC3F,MAAM,UAAU,GAAsB,IAAI,CAAC,QAAQ,EAAE,UAAU,IAAI,QAAQ,CAAC;IAC5E,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AACjC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAAC,IAK/B;IACC,IAAI,IAAI,CAAC,UAAU,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IAC7C,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC;AAC/E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,GAA8C,EAC9C,QAAgB,EAChB,OAAe,EACf,SAAiB;IAEjB,OAAO,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;AAC3E,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,eAAe,CAAC,IAO/B;IACC,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,cAAc,CAAC;IACzD,CAAC;IACD,OAAO,IAAI,CAAC,aAAa,CAAC;AAC5B,CAAC"}
@@ -6,6 +6,11 @@
6
6
  * Used to determine whether a delivery still has outstanding work.
7
7
  * 'In Review' is intentionally excluded: it signals dev-complete and
8
8
  * waiting for review-agent confirmation, not unresolved work.
9
+ *
10
+ * TWIN: supabase/functions/product-api/handlers/delivery-review-finding-gate.ts
11
+ * OPEN_FINDING_STATUSES is the edge-runtime copy of this set (the refusal of a
12
+ * delivery create while review-filed findings are open) and MUST agree with
13
+ * it; Deno cannot import this package. Change both or neither.
9
14
  */
10
15
  export declare const OPEN_ISSUE_STATUSES: Set<string>;
11
16
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/shell/constants.ts"],"names":[],"mappings":"AAOA;;GAEG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,aAA+C,CAAC;AAEhF;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,aAA6C,CAAC;AAElF,0FAA0F;AAC1F,eAAO,MAAM,kBAAkB,EAAG,eAAwB,CAAC;AAE3D,kFAAkF;AAClF,wBAAgB,gBAAgB,CAAC,CAAC,SAAS;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAElF;AAED,4CAA4C;AAC5C,wBAAgB,mBAAmB,CAAC,CAAC,SAAS;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAErF;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAChG,MAAM,EAAE,CAAC,EAAE,GACV,MAAM,EAAE,CAIV"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/shell/constants.ts"],"names":[],"mappings":"AAOA;;GAEG;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,aAA+C,CAAC;AAEhF;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,aAA6C,CAAC;AAElF,0FAA0F;AAC1F,eAAO,MAAM,kBAAkB,EAAG,eAAwB,CAAC;AAE3D,kFAAkF;AAClF,wBAAgB,gBAAgB,CAAC,CAAC,SAAS;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAElF;AAED,4CAA4C;AAC5C,wBAAgB,mBAAmB,CAAC,CAAC,SAAS;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAErF;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAChG,MAAM,EAAE,CAAC,EAAE,GACV,MAAM,EAAE,CAIV"}
@@ -12,6 +12,11 @@
12
12
  * Used to determine whether a delivery still has outstanding work.
13
13
  * 'In Review' is intentionally excluded: it signals dev-complete and
14
14
  * waiting for review-agent confirmation, not unresolved work.
15
+ *
16
+ * TWIN: supabase/functions/product-api/handlers/delivery-review-finding-gate.ts
17
+ * OPEN_FINDING_STATUSES is the edge-runtime copy of this set (the refusal of a
18
+ * delivery create while review-filed findings are open) and MUST agree with
19
+ * it; Deno cannot import this package. Change both or neither.
15
20
  */
16
21
  export const OPEN_ISSUE_STATUSES = new Set(['To Do', 'In Progress', 'Blocked']);
17
22
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/shell/constants.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,iFAAiF;AACjF,uDAAuD;AACvD,0EAA0E;AAC1E,2DAA2D;AAC3D,gBAAgB;AAEhB;;GAEG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;AAEhF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;AAElF,0FAA0F;AAC1F,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D,kFAAkF;AAClF,MAAM,UAAU,gBAAgB,CAAkC,MAAW;IAC3E,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,kBAAkB,CAAC,CAAC;AAChE,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,mBAAmB,CAAkC,MAAW;IAC9E,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,kBAAkB,CAAC,CAAC;AAChE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAAW;IAEX,OAAO,gBAAgB,CAAC,MAAM,CAAC;SAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC;SAChE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/shell/constants.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,iFAAiF;AACjF,uDAAuD;AACvD,0EAA0E;AAC1E,2DAA2D;AAC3D,gBAAgB;AAEhB;;GAEG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;AAEhF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;AAElF,0FAA0F;AAC1F,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D,kFAAkF;AAClF,MAAM,UAAU,gBAAgB,CAAkC,MAAW;IAC3E,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,kBAAkB,CAAC,CAAC;AAChE,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,mBAAmB,CAAkC,MAAW;IAC9E,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,kBAAkB,CAAC,CAAC;AAChE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAAW;IAEX,OAAO,gBAAgB,CAAC,MAAM,CAAC;SAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC;SAChE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACpB,CAAC"}
@@ -1,56 +1,32 @@
1
- import type { AgentSession } from '../types/index.js';
2
- /** The parts of a parsed instance id. */
3
- export interface DaemonInstance {
4
- hostname: string;
5
- pid: number;
6
- /** Kernel start time of the daemon pid; null when the platform cannot supply one. */
7
- startIdentity: string | null;
8
- }
9
- /**
10
- * This daemon instance's id. Stamped onto every session it creates, and the
11
- * identity its own crash recovery compares against.
12
- */
13
- export declare function daemonInstanceId(): string;
14
- /** Reset the memo. Test seam only -- a daemon's identity never changes in life. */
15
- export declare function resetDaemonInstanceIdCache(): void;
16
- /**
17
- * Parse an instance id, or null when it is absent or malformed. A row written
18
- * by a daemon predating this column parses to null and is treated as
19
- * unattributable -- never as "gone".
20
- */
21
- export declare function parseDaemonInstanceId(id: string | null | undefined): DaemonInstance | null;
22
1
  /**
23
- * What a session row's owning instance is doing now.
24
- *
25
- * - `self` -- this daemon owns it. Never reap: the team is ours and live.
26
- * - `peer_alive` -- another daemon instance on this host is still running. Its
27
- * sessions are its business; reaping them is the defect.
28
- * - `gone` -- the owning instance is not running. Its teams stopped with
29
- * it, so its rows are safe to close.
30
- * - `unknown` -- no id, a malformed id, or an id from another host whose pid
31
- * we cannot probe. FAILS SAFE: not reaped.
32
- */
33
- export type InstanceLiveness = 'self' | 'peer_alive' | 'gone' | 'unknown';
34
- /** Probes `classifyOwningInstance` reaches, injectable for tests. */
35
- export interface InstanceProbeDeps {
36
- selfId: string;
37
- selfHostname: string;
38
- isProcessAlive: (pid: number) => boolean;
39
- readStartIdentity: (pid: number) => string | null;
40
- }
41
- /** Real probes against this host. */
42
- export declare function defaultInstanceProbes(): InstanceProbeDeps;
43
- /**
44
- * Classify the instance that owns a session row.
45
- *
46
- * Every branch that is not `gone` leaves the row alone, because only `gone` is
47
- * positive evidence that the team the row represents has stopped. Recovery
48
- * would rather leave a stale row than falsify a live one: a stale `running` row
49
- * is visible and self-correcting on the next sweep, whereas a live session
50
- * marked `failed` silently tells every reader -- including "is this worktree
51
- * being written?" -- that a running team is not there.
2
+ * Daemon INSTANCE ownership of a session row -- the SESSION half.
3
+ *
4
+ * The instance-IDENTITY half (`daemonInstanceId`, `parseDaemonInstanceId`,
5
+ * `classifyOwningInstance` and friends) lives in shell/instance-liveness.ts and
6
+ * is re-exported here unchanged, so every existing importer of this module is
7
+ * unaffected. The split exists because THIS module imports
8
+ * shell/worker-pidfile.ts, so the pidfile could not ask the identity question
9
+ * back; see that module's header for the whole reason.
10
+ *
11
+ * What is left here is the question recovery actually has to answer before it
12
+ * writes `failed`: has the team this row represents actually stopped? An
13
+ * instance id answers "is the daemon that wrote this row still running?", and a
14
+ * row whose owner is alive, or whose owner cannot be determined, is left alone.
15
+ *
16
+ * A dead owner is NOT on its own proof that the row's team stopped. Team leads
17
+ * are spawned DETACHED, so they survive a hard-killed daemon; the boot reap
18
+ * that ends them (`reapAndClearWorkerPidfile`, unified-shell) is explicitly
19
+ * best-effort -- a missing or malformed pidfile yields no entries and a failed
20
+ * kill is swallowed. So the destructive pass needs a SECOND proof, about the
21
+ * session's own process: `classifySessionProcess`. Both must agree before a row
22
+ * is closed.
23
+ *
24
+ * @module shell/daemon-instance
52
25
  */
53
- export declare function classifyOwningInstance(instanceId: string | null | undefined, deps: InstanceProbeDeps): InstanceLiveness;
26
+ import type { AgentSession } from '../types/index.js';
27
+ import { type InstanceProbeDeps } from './instance-liveness.js';
28
+ export { daemonInstanceId, resetDaemonInstanceIdCache, parseDaemonInstanceId, defaultInstanceProbes, classifyOwningInstance, isReservationInFlight, } from './instance-liveness.js';
29
+ export type { DaemonInstance, InstanceLiveness, InstanceProbeDeps, } from './instance-liveness.js';
54
30
  /**
55
31
  * What the SESSION's own process is doing -- the second proof, about the team
56
32
  * rather than the daemon that spawned it.
@@ -62,9 +38,13 @@ export declare function classifyOwningInstance(instanceId: string | null | undef
62
38
  * lead for this session, so none was ever spawned.
63
39
  * - `unprovable` -- nothing can be shown: the record could not be read,
64
40
  * or it names a process whose identity cannot be
65
- * verified (a reservation, a pid with no recorded or
66
- * no readable start identity). An anonymous live pid
67
- * is NOT an alive team.
41
+ * verified (a reservation still in flight, a pid with
42
+ * no recorded or no readable start identity). An
43
+ * anonymous live pid is NOT an alive team.
44
+ *
45
+ * A RESERVATION used to land in `unprovable` unconditionally, and permanently:
46
+ * see `classifyRecordedProcess` for why one whose reserving instance is provably
47
+ * gone now answers `stopped` instead.
68
48
  */
69
49
  export type SessionProcessLiveness = 'alive' | 'stopped' | 'no_process_recorded' | 'unprovable';
70
50
  /** Process probes for the session-liveness check, injectable for tests. */
@@ -76,11 +56,28 @@ export interface SessionProcessProbes {
76
56
  * The host's durable lead records by session id, or null when they cannot be
77
57
  * read. Null is UNKNOWN, never "nothing is running".
78
58
  */
79
- leadRecordsBySession: () => Map<string, {
80
- pid: number;
81
- startIdentity?: string;
82
- pending?: true;
83
- }> | null;
59
+ leadRecordsBySession: () => Map<string, RecordedProcess> | null;
60
+ /**
61
+ * Is a reservation's reserving daemon instance still running? The ONE
62
+ * definition lives in shell/instance-liveness.ts
63
+ * (`isReservationInFlight`); this is the seam a test injects, and the
64
+ * default binds to it. Absent/empty `reservedBy` is in flight -- see there
65
+ * for the direction-of-failure argument.
66
+ */
67
+ reservationInFlight: (reservedBy: string | undefined) => boolean;
68
+ }
69
+ /**
70
+ * The shape `classifyRecordedProcess` reads out of the lead record: a
71
+ * `WorkerPidEntry`, narrowed to the fields the verdict depends on.
72
+ * `readLeadRecordsBySession` already hands back whole entries, so `reservedBy`
73
+ * arrives with no read change -- it simply had no reader.
74
+ */
75
+ export interface RecordedProcess {
76
+ pid: number;
77
+ startIdentity?: string;
78
+ pending?: true;
79
+ /** The daemon instance that made a reservation. Only meaningful with `pending`. */
80
+ reservedBy?: string;
84
81
  }
85
82
  /**
86
83
  * Real probes against this host. The lead-record read is memoized PER PROBE
@@ -102,13 +99,26 @@ export declare function defaultSessionProcessProbes(): SessionProcessProbes;
102
99
  * in between -- no recorded identity, an unreadable live identity, a pid we
103
100
  * cannot probe -- is `indeterminate`, and each caller applies its OWN safe
104
101
  * direction to it rather than inheriting one that only suits recovery.
102
+ *
103
+ * A RESERVATION is the fourth case, and it is a JUDGEMENT rather than a shrug.
104
+ * The retention passes (`reapAndClearWorkerPidfile`,
105
+ * `clearWorkerPidfileIfAllGone`) run only at boot, hard stop and shutdown; in
106
+ * between, a LIVE daemon's sweeps read the record through here. While this
107
+ * branch answered `indeterminate` unconditionally, a reservation stranded by a
108
+ * hard kill between `reserveLeadRecord` and the pid write made its session
109
+ * undecidable FOREVER: session-health skipped the row `unprovable_process`,
110
+ * abandoned-merge recovery refused to restore its worktree, and the worktree
111
+ * write signal answered `provable: false`. Nothing could ever improve that read,
112
+ * because the instance that would have resolved the reservation no longer
113
+ * exists. So the reservation is judged by its `reservedBy`: in flight ->
114
+ * `indeterminate` exactly as before; provably gone -> `gone`. The full argument
115
+ * for why `gone` is sound HERE while this module refuses that inference
116
+ * everywhere else -- in short, a pid-0 row is already unnameable by every kill
117
+ * path, so retiring it forfeits no capability -- is at
118
+ * `isReservationInFlight` (shell/instance-liveness.ts).
105
119
  */
106
120
  export type RecordedProcessState = 'alive' | 'gone' | 'indeterminate';
107
- export declare function classifyRecordedProcess(record: {
108
- pid: number;
109
- startIdentity?: string;
110
- pending?: true;
111
- }, probes: SessionProcessProbes): RecordedProcessState;
121
+ export declare function classifyRecordedProcess(record: RecordedProcess, probes: SessionProcessProbes): RecordedProcessState;
112
122
  /**
113
123
  * Classify the session's own process, from the host's DURABLE LEAD RECORD rather
114
124
  * than from the session row's pid.
@@ -1 +1 @@
1
- {"version":3,"file":"daemon-instance.d.ts","sourceRoot":"","sources":["../../src/shell/daemon-instance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon-instance.d.ts","sourceRoot":"","sources":["../../src/shell/daemon-instance.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKtD,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EACL,gBAAgB,EAChB,0BAA0B,EAC1B,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAIhC;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,SAAS,GAAG,qBAAqB,GAAG,YAAY,CAAC;AAEhG,2EAA2E;AAC3E,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAC/C,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAClD;;;OAGG;IACH,oBAAoB,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,IAAI,CAAC;IAChE;;;;;;OAMG;IACH,mBAAmB,EAAE,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC;CAClE;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,IAAI,oBAAoB,CAclE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,MAAM,GAAG,eAAe,CAAC;AAEtE,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,oBAAoB,GAC3B,oBAAoB,CAuBtB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,oBAAoB,GAC3B,sBAAsB,CAUxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,SAAS,YAAY,EAAE,EACjC,MAAM,EAAE,iBAAiB,EACzB,aAAa,GAAE,oBAAoD,GAClE;IAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;CAAE,CAqC7D;AAED,gFAAgF;AAChF,MAAM,WAAW,mBAAmB;IAClC,cAAc,CAAC,EAAE,MAAM,iBAAiB,CAAC;IACzC,oBAAoB,CAAC,EAAE,MAAM,oBAAoB,CAAC;CACnD;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,SAAS,YAAY,EAAE,EACjC,WAAW,GAAE,mBAAwB,GACpC,YAAY,EAAE,CAUhB"}