create-principles-disciple 1.93.0 → 1.95.0

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 (526) hide show
  1. package/console/dist/server/config/WorkspaceConfigStore.js +2 -1
  2. package/console/dist/server/config/pd-config-store.d.ts +40 -1
  3. package/console/dist/server/config/pd-config-store.js +170 -1
  4. package/console/dist/server/index.js +28 -10
  5. package/console/dist/server/models/ApprovalsConsoleModel.js +4 -12
  6. package/console/dist/server/models/EvidenceChainConsoleModel.d.ts +0 -2
  7. package/console/dist/server/models/EvidenceChainConsoleModel.js +36 -2
  8. package/console/dist/server/models/HealthCheckModel.js +5 -3
  9. package/console/dist/server/models/IntentDecisionModel.d.ts +66 -0
  10. package/console/dist/server/models/IntentDecisionModel.js +207 -0
  11. package/console/dist/server/models/IntentPageModel.d.ts +18 -0
  12. package/console/dist/server/models/IntentPageModel.js +90 -0
  13. package/console/dist/server/models/PrinciplesConsoleModel.d.ts +2 -0
  14. package/console/dist/server/models/PrinciplesConsoleModel.js +37 -1
  15. package/console/dist/server/models/WorkspaceService.d.ts +0 -28
  16. package/console/dist/server/models/WorkspaceService.js +0 -115
  17. package/console/dist/server/routes/config.js +55 -1
  18. package/console/dist/server/routes/feedback-reports.js +1 -1
  19. package/console/dist/server/routes/intent-decisions.d.ts +33 -0
  20. package/console/dist/server/routes/intent-decisions.js +499 -0
  21. package/console/dist/server/routes/intent.d.ts +3 -0
  22. package/console/dist/server/routes/intent.js +35 -0
  23. package/console/dist/server/routes/principles.js +67 -1
  24. package/console/dist/server/routes/update.d.ts +0 -1
  25. package/console/dist/server/routes/update.js +14 -11
  26. package/console/dist/ui/App.js +2 -7
  27. package/console/dist/ui/api.d.ts +44 -18
  28. package/console/dist/ui/api.js +44 -5
  29. package/console/dist/ui/components/layout/app-sidebar.js +2 -1
  30. package/console/dist/ui/components/ui/badge.d.ts +1 -1
  31. package/console/dist/ui/components/ui/button.d.ts +1 -1
  32. package/console/dist/ui/components/ui/shiny-text.d.ts +28 -0
  33. package/console/dist/ui/components/ui/shiny-text.js +46 -0
  34. package/console/dist/ui/i18n/en.json +167 -3
  35. package/console/dist/ui/i18n/zh-CN.json +167 -3
  36. package/console/dist/ui/pages/activation/ActivationPage.js +2 -1
  37. package/console/dist/ui/pages/control-center/ControlCenterPage.js +28 -2
  38. package/console/dist/ui/pages/control-center/EmpathyObserverCostHint.d.ts +28 -0
  39. package/console/dist/ui/pages/control-center/EmpathyObserverCostHint.js +38 -0
  40. package/console/dist/ui/pages/debt/DebtPage.js +219 -2
  41. package/console/dist/ui/pages/focus/FocusPage.js +2 -1
  42. package/console/dist/ui/pages/intent/IntentPage.d.ts +1 -0
  43. package/console/dist/ui/pages/intent/IntentPage.js +147 -0
  44. package/console/dist/ui/pages/pain/PainPage.js +234 -4
  45. package/console/dist/ui/pages/pain/pain-card-helpers.d.ts +75 -0
  46. package/console/dist/ui/pages/pain/pain-card-helpers.js +78 -0
  47. package/console/dist/ui/pages/principles/PrinciplesPage.js +2 -1
  48. package/console/dist/ui/utils/validators.d.ts +163 -0
  49. package/console/dist/ui/utils/validators.js +433 -0
  50. package/console/dist/web/assets/app.css +138 -0
  51. package/console/dist/web/assets/app.js +3124 -1288
  52. package/console/package.json +3 -0
  53. package/core/dist/index.d.ts +2 -2
  54. package/core/dist/index.d.ts.map +1 -1
  55. package/core/dist/index.js +1 -1
  56. package/core/dist/index.js.map +1 -1
  57. package/core/dist/principle-tree-ledger.d.ts +55 -4
  58. package/core/dist/principle-tree-ledger.d.ts.map +1 -1
  59. package/core/dist/principle-tree-ledger.js +472 -13
  60. package/core/dist/principle-tree-ledger.js.map +1 -1
  61. package/core/dist/prompt-builder/__tests__/model-config.test.d.ts +2 -0
  62. package/core/dist/prompt-builder/__tests__/model-config.test.d.ts.map +1 -0
  63. package/core/dist/prompt-builder/__tests__/model-config.test.js +158 -0
  64. package/core/dist/prompt-builder/__tests__/model-config.test.js.map +1 -0
  65. package/core/dist/prompt-builder/__tests__/prompt-builder-core.test.js +58 -0
  66. package/core/dist/prompt-builder/__tests__/prompt-builder-core.test.js.map +1 -1
  67. package/core/dist/prompt-builder/__tests__/xml-escape.test.d.ts +2 -0
  68. package/core/dist/prompt-builder/__tests__/xml-escape.test.d.ts.map +1 -0
  69. package/core/dist/prompt-builder/__tests__/xml-escape.test.js +42 -0
  70. package/core/dist/prompt-builder/__tests__/xml-escape.test.js.map +1 -0
  71. package/core/dist/prompt-builder/empathy-keyword-matching.d.ts.map +1 -1
  72. package/core/dist/prompt-builder/empathy-keyword-matching.js +9 -6
  73. package/core/dist/prompt-builder/empathy-keyword-matching.js.map +1 -1
  74. package/core/dist/prompt-builder/index.d.ts +3 -0
  75. package/core/dist/prompt-builder/index.d.ts.map +1 -1
  76. package/core/dist/prompt-builder/index.js +2 -0
  77. package/core/dist/prompt-builder/index.js.map +1 -1
  78. package/core/dist/prompt-builder/model-config.d.ts +42 -0
  79. package/core/dist/prompt-builder/model-config.d.ts.map +1 -0
  80. package/core/dist/prompt-builder/model-config.js +84 -0
  81. package/core/dist/prompt-builder/model-config.js.map +1 -0
  82. package/core/dist/prompt-builder/size-guard.d.ts +1 -0
  83. package/core/dist/prompt-builder/size-guard.d.ts.map +1 -1
  84. package/core/dist/prompt-builder/size-guard.js +21 -0
  85. package/core/dist/prompt-builder/size-guard.js.map +1 -1
  86. package/core/dist/prompt-builder/types.d.ts +2 -0
  87. package/core/dist/prompt-builder/types.d.ts.map +1 -1
  88. package/core/dist/prompt-builder/xml-escape.d.ts +12 -0
  89. package/core/dist/prompt-builder/xml-escape.d.ts.map +1 -0
  90. package/core/dist/prompt-builder/xml-escape.js +19 -0
  91. package/core/dist/prompt-builder/xml-escape.js.map +1 -0
  92. package/core/dist/runtime-v2/__tests__/architecture-regression.test.js +205 -48
  93. package/core/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
  94. package/core/dist/runtime-v2/__tests__/evidence-chain-intent-tension.test.d.ts +2 -0
  95. package/core/dist/runtime-v2/__tests__/evidence-chain-intent-tension.test.d.ts.map +1 -0
  96. package/core/dist/runtime-v2/__tests__/evidence-chain-intent-tension.test.js +284 -0
  97. package/core/dist/runtime-v2/__tests__/evidence-chain-intent-tension.test.js.map +1 -0
  98. package/core/dist/runtime-v2/__tests__/pain-signal-bridge-result-shaping.test.d.ts +2 -0
  99. package/core/dist/runtime-v2/__tests__/pain-signal-bridge-result-shaping.test.d.ts.map +1 -0
  100. package/core/dist/runtime-v2/__tests__/pain-signal-bridge-result-shaping.test.js +500 -0
  101. package/core/dist/runtime-v2/__tests__/pain-signal-bridge-result-shaping.test.js.map +1 -0
  102. package/core/dist/runtime-v2/__tests__/pain-signal-observability.test.js +7 -5
  103. package/core/dist/runtime-v2/__tests__/pain-signal-observability.test.js.map +1 -1
  104. package/core/dist/runtime-v2/__tests__/pi-artifact-store.test.js +11 -0
  105. package/core/dist/runtime-v2/__tests__/pi-artifact-store.test.js.map +1 -1
  106. package/core/dist/runtime-v2/__tests__/proven-channel-baseline.test.js +15 -2
  107. package/core/dist/runtime-v2/__tests__/proven-channel-baseline.test.js.map +1 -1
  108. package/core/dist/runtime-v2/__tests__/schema-float-precision.test.d.ts +2 -0
  109. package/core/dist/runtime-v2/__tests__/schema-float-precision.test.d.ts.map +1 -0
  110. package/core/dist/runtime-v2/__tests__/schema-float-precision.test.js +290 -0
  111. package/core/dist/runtime-v2/__tests__/schema-float-precision.test.js.map +1 -0
  112. package/core/dist/runtime-v2/__tests__/schema-orphan-detection.test.d.ts +2 -0
  113. package/core/dist/runtime-v2/__tests__/schema-orphan-detection.test.d.ts.map +1 -0
  114. package/core/dist/runtime-v2/__tests__/schema-orphan-detection.test.js +158 -0
  115. package/core/dist/runtime-v2/__tests__/schema-orphan-detection.test.js.map +1 -0
  116. package/core/dist/runtime-v2/activation/__tests__/approval-store-extended.test.js +15 -1
  117. package/core/dist/runtime-v2/activation/__tests__/approval-store-extended.test.js.map +1 -1
  118. package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store-fk.test.d.ts +2 -0
  119. package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store-fk.test.d.ts.map +1 -0
  120. package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store-fk.test.js +62 -0
  121. package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store-fk.test.js.map +1 -0
  122. package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store.test.js +12 -2
  123. package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store.test.js.map +1 -1
  124. package/core/dist/runtime-v2/activation/__tests__/sqlite-approval-store-fk.test.d.ts +2 -0
  125. package/core/dist/runtime-v2/activation/__tests__/sqlite-approval-store-fk.test.d.ts.map +1 -0
  126. package/core/dist/runtime-v2/activation/__tests__/sqlite-approval-store-fk.test.js +56 -0
  127. package/core/dist/runtime-v2/activation/__tests__/sqlite-approval-store-fk.test.js.map +1 -0
  128. package/core/dist/runtime-v2/activation/__tests__/sqlite-approval-store.test.js +8 -0
  129. package/core/dist/runtime-v2/activation/__tests__/sqlite-approval-store.test.js.map +1 -1
  130. package/core/dist/runtime-v2/activation/__tests__/story-a-acceptance.test.js +20 -0
  131. package/core/dist/runtime-v2/activation/__tests__/story-a-acceptance.test.js.map +1 -1
  132. package/core/dist/runtime-v2/activation/sqlite-activation-state-store.d.ts.map +1 -1
  133. package/core/dist/runtime-v2/activation/sqlite-activation-state-store.js +6 -0
  134. package/core/dist/runtime-v2/activation/sqlite-activation-state-store.js.map +1 -1
  135. package/core/dist/runtime-v2/activation/sqlite-approval-store.d.ts.map +1 -1
  136. package/core/dist/runtime-v2/activation/sqlite-approval-store.js +86 -32
  137. package/core/dist/runtime-v2/activation/sqlite-approval-store.js.map +1 -1
  138. package/core/dist/runtime-v2/activation/writers/__tests__/rule-host-writer.test.js +65 -1
  139. package/core/dist/runtime-v2/activation/writers/__tests__/rule-host-writer.test.js.map +1 -1
  140. package/core/dist/runtime-v2/activation/writers/rule-host-writer.d.ts.map +1 -1
  141. package/core/dist/runtime-v2/activation/writers/rule-host-writer.js +33 -11
  142. package/core/dist/runtime-v2/activation/writers/rule-host-writer.js.map +1 -1
  143. package/core/dist/runtime-v2/bridge-result-shaper.d.ts +53 -0
  144. package/core/dist/runtime-v2/bridge-result-shaper.d.ts.map +1 -0
  145. package/core/dist/runtime-v2/bridge-result-shaper.js +117 -0
  146. package/core/dist/runtime-v2/bridge-result-shaper.js.map +1 -0
  147. package/core/dist/runtime-v2/detection/__tests__/detection-funnel-policy.test.d.ts +13 -0
  148. package/core/dist/runtime-v2/detection/__tests__/detection-funnel-policy.test.d.ts.map +1 -0
  149. package/core/dist/runtime-v2/detection/__tests__/detection-funnel-policy.test.js +111 -0
  150. package/core/dist/runtime-v2/detection/__tests__/detection-funnel-policy.test.js.map +1 -0
  151. package/core/dist/runtime-v2/detection/detection-funnel-policy.d.ts +103 -0
  152. package/core/dist/runtime-v2/detection/detection-funnel-policy.d.ts.map +1 -0
  153. package/core/dist/runtime-v2/detection/detection-funnel-policy.js +135 -0
  154. package/core/dist/runtime-v2/detection/detection-funnel-policy.js.map +1 -0
  155. package/core/dist/runtime-v2/detection/index.d.ts +10 -0
  156. package/core/dist/runtime-v2/detection/index.d.ts.map +1 -0
  157. package/core/dist/runtime-v2/detection/index.js +9 -0
  158. package/core/dist/runtime-v2/detection/index.js.map +1 -0
  159. package/core/dist/runtime-v2/diagnostician/__tests__/diag-rootcause-output.test.js +134 -15
  160. package/core/dist/runtime-v2/diagnostician/__tests__/diag-rootcause-output.test.js.map +1 -1
  161. package/core/dist/runtime-v2/diagnostician/__tests__/intent-tension-schema.test.d.ts +18 -0
  162. package/core/dist/runtime-v2/diagnostician/__tests__/intent-tension-schema.test.d.ts.map +1 -0
  163. package/core/dist/runtime-v2/diagnostician/__tests__/intent-tension-schema.test.js +251 -0
  164. package/core/dist/runtime-v2/diagnostician/__tests__/intent-tension-schema.test.js.map +1 -0
  165. package/core/dist/runtime-v2/diagnostician/__tests__/rootcause-prompt-builder.test.js +73 -0
  166. package/core/dist/runtime-v2/diagnostician/__tests__/rootcause-prompt-builder.test.js.map +1 -1
  167. package/core/dist/runtime-v2/diagnostician/diag-rootcause-output.d.ts +98 -0
  168. package/core/dist/runtime-v2/diagnostician/diag-rootcause-output.d.ts.map +1 -1
  169. package/core/dist/runtime-v2/diagnostician/diag-rootcause-output.js +131 -0
  170. package/core/dist/runtime-v2/diagnostician/diag-rootcause-output.js.map +1 -1
  171. package/core/dist/runtime-v2/diagnostician/rootcause-prompt-builder.d.ts +8 -0
  172. package/core/dist/runtime-v2/diagnostician/rootcause-prompt-builder.d.ts.map +1 -1
  173. package/core/dist/runtime-v2/diagnostician/rootcause-prompt-builder.js +66 -3
  174. package/core/dist/runtime-v2/diagnostician/rootcause-prompt-builder.js.map +1 -1
  175. package/core/dist/runtime-v2/diagnostician-output.d.ts +23 -0
  176. package/core/dist/runtime-v2/diagnostician-output.d.ts.map +1 -1
  177. package/core/dist/runtime-v2/diagnostician-output.js +16 -0
  178. package/core/dist/runtime-v2/diagnostician-output.js.map +1 -1
  179. package/core/dist/runtime-v2/diagnostician-prompt-builder.d.ts +32 -0
  180. package/core/dist/runtime-v2/diagnostician-prompt-builder.d.ts.map +1 -1
  181. package/core/dist/runtime-v2/diagnostician-prompt-builder.js.map +1 -1
  182. package/core/dist/runtime-v2/evidence-triage/__tests__/observation-resolver.test.d.ts +12 -0
  183. package/core/dist/runtime-v2/evidence-triage/__tests__/observation-resolver.test.d.ts.map +1 -0
  184. package/core/dist/runtime-v2/evidence-triage/__tests__/observation-resolver.test.js +181 -0
  185. package/core/dist/runtime-v2/evidence-triage/__tests__/observation-resolver.test.js.map +1 -0
  186. package/core/dist/runtime-v2/evidence-triage/__tests__/triage-policy.test.js +104 -1
  187. package/core/dist/runtime-v2/evidence-triage/__tests__/triage-policy.test.js.map +1 -1
  188. package/core/dist/runtime-v2/evidence-triage/index.d.ts +3 -0
  189. package/core/dist/runtime-v2/evidence-triage/index.d.ts.map +1 -1
  190. package/core/dist/runtime-v2/evidence-triage/index.js +3 -0
  191. package/core/dist/runtime-v2/evidence-triage/index.js.map +1 -1
  192. package/core/dist/runtime-v2/evidence-triage/observation-resolver.d.ts +128 -0
  193. package/core/dist/runtime-v2/evidence-triage/observation-resolver.d.ts.map +1 -0
  194. package/core/dist/runtime-v2/evidence-triage/observation-resolver.js +203 -0
  195. package/core/dist/runtime-v2/evidence-triage/observation-resolver.js.map +1 -0
  196. package/core/dist/runtime-v2/evidence-triage/source-descriptors.d.ts +1 -1
  197. package/core/dist/runtime-v2/evidence-triage/source-descriptors.js +1 -1
  198. package/core/dist/runtime-v2/evidence-triage/triage-policy.d.ts +4 -0
  199. package/core/dist/runtime-v2/evidence-triage/triage-policy.d.ts.map +1 -1
  200. package/core/dist/runtime-v2/evidence-triage/triage-policy.js +66 -9
  201. package/core/dist/runtime-v2/evidence-triage/triage-policy.js.map +1 -1
  202. package/core/dist/runtime-v2/evidence-triage/types.d.ts +14 -0
  203. package/core/dist/runtime-v2/evidence-triage/types.d.ts.map +1 -1
  204. package/core/dist/runtime-v2/evidence-triage/types.js.map +1 -1
  205. package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js +56 -4
  206. package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js.map +1 -1
  207. package/core/dist/runtime-v2/feature-flags/__tests__/intent-engineering-flag.test.d.ts +2 -0
  208. package/core/dist/runtime-v2/feature-flags/__tests__/intent-engineering-flag.test.d.ts.map +1 -0
  209. package/core/dist/runtime-v2/feature-flags/__tests__/intent-engineering-flag.test.js +30 -0
  210. package/core/dist/runtime-v2/feature-flags/__tests__/intent-engineering-flag.test.js.map +1 -0
  211. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.d.ts.map +1 -1
  212. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js +11 -2
  213. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js.map +1 -1
  214. package/core/dist/runtime-v2/feature-flags/plugin-surface-registry.d.ts.map +1 -1
  215. package/core/dist/runtime-v2/feature-flags/plugin-surface-registry.js +0 -9
  216. package/core/dist/runtime-v2/feature-flags/plugin-surface-registry.js.map +1 -1
  217. package/core/dist/runtime-v2/feedback/__tests__/redact-sensitive.test.d.ts +15 -0
  218. package/core/dist/runtime-v2/feedback/__tests__/redact-sensitive.test.d.ts.map +1 -0
  219. package/core/dist/runtime-v2/feedback/__tests__/redact-sensitive.test.js +450 -0
  220. package/core/dist/runtime-v2/feedback/__tests__/redact-sensitive.test.js.map +1 -0
  221. package/core/dist/runtime-v2/feedback/__tests__/render-github-url.test.d.ts +13 -0
  222. package/core/dist/runtime-v2/feedback/__tests__/render-github-url.test.d.ts.map +1 -0
  223. package/core/dist/runtime-v2/feedback/__tests__/render-github-url.test.js +243 -0
  224. package/core/dist/runtime-v2/feedback/__tests__/render-github-url.test.js.map +1 -0
  225. package/core/dist/runtime-v2/feedback/__tests__/safe-stringify.test.d.ts +12 -0
  226. package/core/dist/runtime-v2/feedback/__tests__/safe-stringify.test.d.ts.map +1 -0
  227. package/core/dist/runtime-v2/feedback/__tests__/safe-stringify.test.js +172 -0
  228. package/core/dist/runtime-v2/feedback/__tests__/safe-stringify.test.js.map +1 -0
  229. package/core/dist/runtime-v2/index.d.ts +15 -6
  230. package/core/dist/runtime-v2/index.d.ts.map +1 -1
  231. package/core/dist/runtime-v2/index.js +15 -4
  232. package/core/dist/runtime-v2/index.js.map +1 -1
  233. package/core/dist/runtime-v2/intent/__tests__/intent-decision-record.test.d.ts +2 -0
  234. package/core/dist/runtime-v2/intent/__tests__/intent-decision-record.test.d.ts.map +1 -0
  235. package/core/dist/runtime-v2/intent/__tests__/intent-decision-record.test.js +185 -0
  236. package/core/dist/runtime-v2/intent/__tests__/intent-decision-record.test.js.map +1 -0
  237. package/core/dist/runtime-v2/intent/__tests__/intent-doc.test.d.ts +2 -0
  238. package/core/dist/runtime-v2/intent/__tests__/intent-doc.test.d.ts.map +1 -0
  239. package/core/dist/runtime-v2/intent/__tests__/intent-doc.test.js +91 -0
  240. package/core/dist/runtime-v2/intent/__tests__/intent-doc.test.js.map +1 -0
  241. package/core/dist/runtime-v2/intent/__tests__/intent-friction-block.test.d.ts +2 -0
  242. package/core/dist/runtime-v2/intent/__tests__/intent-friction-block.test.d.ts.map +1 -0
  243. package/core/dist/runtime-v2/intent/__tests__/intent-friction-block.test.js +168 -0
  244. package/core/dist/runtime-v2/intent/__tests__/intent-friction-block.test.js.map +1 -0
  245. package/core/dist/runtime-v2/intent/__tests__/intent-patch-proposal.test.d.ts +2 -0
  246. package/core/dist/runtime-v2/intent/__tests__/intent-patch-proposal.test.d.ts.map +1 -0
  247. package/core/dist/runtime-v2/intent/__tests__/intent-patch-proposal.test.js +121 -0
  248. package/core/dist/runtime-v2/intent/__tests__/intent-patch-proposal.test.js.map +1 -0
  249. package/core/dist/runtime-v2/intent/index.d.ts +6 -0
  250. package/core/dist/runtime-v2/intent/index.d.ts.map +1 -0
  251. package/core/dist/runtime-v2/intent/index.js +6 -0
  252. package/core/dist/runtime-v2/intent/index.js.map +1 -0
  253. package/core/dist/runtime-v2/intent/intent-decision-record.d.ts +125 -0
  254. package/core/dist/runtime-v2/intent/intent-decision-record.d.ts.map +1 -0
  255. package/core/dist/runtime-v2/intent/intent-decision-record.js +21 -0
  256. package/core/dist/runtime-v2/intent/intent-decision-record.js.map +1 -0
  257. package/core/dist/runtime-v2/intent/intent-doc-reader-port.d.ts +95 -0
  258. package/core/dist/runtime-v2/intent/intent-doc-reader-port.d.ts.map +1 -0
  259. package/core/dist/runtime-v2/intent/intent-doc-reader-port.js +43 -0
  260. package/core/dist/runtime-v2/intent/intent-doc-reader-port.js.map +1 -0
  261. package/core/dist/runtime-v2/intent/intent-doc.d.ts +19 -0
  262. package/core/dist/runtime-v2/intent/intent-doc.d.ts.map +1 -0
  263. package/core/dist/runtime-v2/intent/intent-doc.js +70 -0
  264. package/core/dist/runtime-v2/intent/intent-doc.js.map +1 -0
  265. package/core/dist/runtime-v2/intent/intent-friction-block.d.ts +63 -0
  266. package/core/dist/runtime-v2/intent/intent-friction-block.d.ts.map +1 -0
  267. package/core/dist/runtime-v2/intent/intent-friction-block.js +129 -0
  268. package/core/dist/runtime-v2/intent/intent-friction-block.js.map +1 -0
  269. package/core/dist/runtime-v2/intent/intent-patch-proposal.d.ts +42 -0
  270. package/core/dist/runtime-v2/intent/intent-patch-proposal.d.ts.map +1 -0
  271. package/core/dist/runtime-v2/intent/intent-patch-proposal.js +81 -0
  272. package/core/dist/runtime-v2/intent/intent-patch-proposal.js.map +1 -0
  273. package/core/dist/runtime-v2/internalization/__tests__/__fixtures__/intent-tension-cases.d.ts +54 -0
  274. package/core/dist/runtime-v2/internalization/__tests__/__fixtures__/intent-tension-cases.d.ts.map +1 -0
  275. package/core/dist/runtime-v2/internalization/__tests__/__fixtures__/intent-tension-cases.js +219 -0
  276. package/core/dist/runtime-v2/internalization/__tests__/__fixtures__/intent-tension-cases.js.map +1 -0
  277. package/core/dist/runtime-v2/internalization/__tests__/c2-live-runner-chain.test.d.ts +2 -0
  278. package/core/dist/runtime-v2/internalization/__tests__/c2-live-runner-chain.test.d.ts.map +1 -0
  279. package/core/dist/runtime-v2/internalization/__tests__/c2-live-runner-chain.test.js +306 -0
  280. package/core/dist/runtime-v2/internalization/__tests__/c2-live-runner-chain.test.js.map +1 -0
  281. package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-intent-tension.test.d.ts +2 -0
  282. package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-intent-tension.test.d.ts.map +1 -0
  283. package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-intent-tension.test.js +360 -0
  284. package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-intent-tension.test.js.map +1 -0
  285. package/core/dist/runtime-v2/internalization/__tests__/diag-router-intent-tension.test.d.ts +2 -0
  286. package/core/dist/runtime-v2/internalization/__tests__/diag-router-intent-tension.test.d.ts.map +1 -0
  287. package/core/dist/runtime-v2/internalization/__tests__/diag-router-intent-tension.test.js +333 -0
  288. package/core/dist/runtime-v2/internalization/__tests__/diag-router-intent-tension.test.js.map +1 -0
  289. package/core/dist/runtime-v2/internalization/__tests__/intent-tension-cases.test.d.ts +2 -0
  290. package/core/dist/runtime-v2/internalization/__tests__/intent-tension-cases.test.d.ts.map +1 -0
  291. package/core/dist/runtime-v2/internalization/__tests__/intent-tension-cases.test.js +113 -0
  292. package/core/dist/runtime-v2/internalization/__tests__/intent-tension-cases.test.js.map +1 -0
  293. package/core/dist/runtime-v2/internalization/diag-rootcause-runner.d.ts +13 -0
  294. package/core/dist/runtime-v2/internalization/diag-rootcause-runner.d.ts.map +1 -1
  295. package/core/dist/runtime-v2/internalization/diag-rootcause-runner.js +42 -0
  296. package/core/dist/runtime-v2/internalization/diag-rootcause-runner.js.map +1 -1
  297. package/core/dist/runtime-v2/internalization/diag-router-runner.d.ts.map +1 -1
  298. package/core/dist/runtime-v2/internalization/diag-router-runner.js +27 -0
  299. package/core/dist/runtime-v2/internalization/diag-router-runner.js.map +1 -1
  300. package/core/dist/runtime-v2/internalization/index.d.ts +0 -16
  301. package/core/dist/runtime-v2/internalization/index.d.ts.map +1 -1
  302. package/core/dist/runtime-v2/internalization/index.js +0 -8
  303. package/core/dist/runtime-v2/internalization/index.js.map +1 -1
  304. package/core/dist/runtime-v2/pain-gate/__tests__/pain-diagnostic-gate-policy.test.d.ts +15 -0
  305. package/core/dist/runtime-v2/pain-gate/__tests__/pain-diagnostic-gate-policy.test.d.ts.map +1 -0
  306. package/core/dist/runtime-v2/pain-gate/__tests__/pain-diagnostic-gate-policy.test.js +179 -0
  307. package/core/dist/runtime-v2/pain-gate/__tests__/pain-diagnostic-gate-policy.test.js.map +1 -0
  308. package/core/dist/runtime-v2/pain-gate/index.d.ts +10 -0
  309. package/core/dist/runtime-v2/pain-gate/index.d.ts.map +1 -0
  310. package/core/dist/runtime-v2/pain-gate/index.js +9 -0
  311. package/core/dist/runtime-v2/pain-gate/index.js.map +1 -0
  312. package/core/dist/runtime-v2/pain-gate/pain-diagnostic-gate-policy.d.ts +121 -0
  313. package/core/dist/runtime-v2/pain-gate/pain-diagnostic-gate-policy.d.ts.map +1 -0
  314. package/core/dist/runtime-v2/pain-gate/pain-diagnostic-gate-policy.js +157 -0
  315. package/core/dist/runtime-v2/pain-gate/pain-diagnostic-gate-policy.js.map +1 -0
  316. package/core/dist/runtime-v2/pain-signal-bridge.d.ts.map +1 -1
  317. package/core/dist/runtime-v2/pain-signal-bridge.js +14 -88
  318. package/core/dist/runtime-v2/pain-signal-bridge.js.map +1 -1
  319. package/core/dist/runtime-v2/pain-signal-observability.d.ts.map +1 -1
  320. package/core/dist/runtime-v2/pain-signal-observability.js +272 -61
  321. package/core/dist/runtime-v2/pain-signal-observability.js.map +1 -1
  322. package/core/dist/runtime-v2/pain-signal-runtime-factory.d.ts +12 -0
  323. package/core/dist/runtime-v2/pain-signal-runtime-factory.d.ts.map +1 -1
  324. package/core/dist/runtime-v2/pain-signal-runtime-factory.js +1 -1
  325. package/core/dist/runtime-v2/pain-signal-runtime-factory.js.map +1 -1
  326. package/core/dist/runtime-v2/pain-to-principle-service.d.ts +6 -0
  327. package/core/dist/runtime-v2/pain-to-principle-service.d.ts.map +1 -1
  328. package/core/dist/runtime-v2/pain-to-principle-service.js +2 -0
  329. package/core/dist/runtime-v2/pain-to-principle-service.js.map +1 -1
  330. package/core/dist/runtime-v2/principle-tree/ledger-codec.js.map +1 -1
  331. package/core/dist/runtime-v2/proven-channel-baseline.js +1 -1
  332. package/core/dist/runtime-v2/proven-channel-baseline.js.map +1 -1
  333. package/core/dist/runtime-v2/store/artifact/__tests__/sqlite-pi-artifact-store-fk.test.d.ts +2 -0
  334. package/core/dist/runtime-v2/store/artifact/__tests__/sqlite-pi-artifact-store-fk.test.d.ts.map +1 -0
  335. package/core/dist/runtime-v2/store/artifact/__tests__/sqlite-pi-artifact-store-fk.test.js +55 -0
  336. package/core/dist/runtime-v2/store/artifact/__tests__/sqlite-pi-artifact-store-fk.test.js.map +1 -0
  337. package/core/dist/runtime-v2/store/artifact/sqlite-pi-artifact-store.d.ts.map +1 -1
  338. package/core/dist/runtime-v2/store/artifact/sqlite-pi-artifact-store.js +6 -0
  339. package/core/dist/runtime-v2/store/artifact/sqlite-pi-artifact-store.js.map +1 -1
  340. package/core/dist/runtime-v2/store/intent/__tests__/sqlite-intent-decision-store.test.d.ts +2 -0
  341. package/core/dist/runtime-v2/store/intent/__tests__/sqlite-intent-decision-store.test.d.ts.map +1 -0
  342. package/core/dist/runtime-v2/store/intent/__tests__/sqlite-intent-decision-store.test.js +272 -0
  343. package/core/dist/runtime-v2/store/intent/__tests__/sqlite-intent-decision-store.test.js.map +1 -0
  344. package/core/dist/runtime-v2/store/intent/index.d.ts +6 -0
  345. package/core/dist/runtime-v2/store/intent/index.d.ts.map +1 -0
  346. package/core/dist/runtime-v2/store/intent/index.js +5 -0
  347. package/core/dist/runtime-v2/store/intent/index.js.map +1 -0
  348. package/core/dist/runtime-v2/store/intent/sqlite-intent-decision-store.d.ts +51 -0
  349. package/core/dist/runtime-v2/store/intent/sqlite-intent-decision-store.d.ts.map +1 -0
  350. package/core/dist/runtime-v2/store/intent/sqlite-intent-decision-store.js +306 -0
  351. package/core/dist/runtime-v2/store/intent/sqlite-intent-decision-store.js.map +1 -0
  352. package/core/dist/runtime-v2/store/sqlite-connection-pragma.test.js +14 -3
  353. package/core/dist/runtime-v2/store/sqlite-connection-pragma.test.js.map +1 -1
  354. package/core/dist/runtime-v2/store/sqlite-connection-schema-version.test.d.ts +2 -0
  355. package/core/dist/runtime-v2/store/sqlite-connection-schema-version.test.d.ts.map +1 -0
  356. package/core/dist/runtime-v2/store/sqlite-connection-schema-version.test.js +72 -0
  357. package/core/dist/runtime-v2/store/sqlite-connection-schema-version.test.js.map +1 -0
  358. package/core/dist/runtime-v2/store/sqlite-connection.d.ts +27 -0
  359. package/core/dist/runtime-v2/store/sqlite-connection.d.ts.map +1 -1
  360. package/core/dist/runtime-v2/store/sqlite-connection.js +124 -12
  361. package/core/dist/runtime-v2/store/sqlite-connection.js.map +1 -1
  362. package/core/dist/runtime-v2/types/event-payload.d.ts +1 -20
  363. package/core/dist/runtime-v2/types/event-payload.d.ts.map +1 -1
  364. package/core/dist/runtime-v2/types/event-payload.js +0 -12
  365. package/core/dist/runtime-v2/types/event-payload.js.map +1 -1
  366. package/core/dist/runtime-v2/types/event-types.d.ts +5 -61
  367. package/core/dist/runtime-v2/types/event-types.d.ts.map +1 -1
  368. package/core/dist/runtime-v2/types/event-types.js +2 -36
  369. package/core/dist/runtime-v2/types/event-types.js.map +1 -1
  370. package/core/dist/runtime-v2/types/evidence-chain-contract.d.ts +63 -0
  371. package/core/dist/runtime-v2/types/evidence-chain-contract.d.ts.map +1 -1
  372. package/core/dist/runtime-v2/types/evidence-chain-contract.js +234 -9
  373. package/core/dist/runtime-v2/types/evidence-chain-contract.js.map +1 -1
  374. package/core/dist/runtime-v2/types/index.d.ts +5 -5
  375. package/core/dist/runtime-v2/types/index.d.ts.map +1 -1
  376. package/core/dist/runtime-v2/types/index.js +7 -3
  377. package/core/dist/runtime-v2/types/index.js.map +1 -1
  378. package/core/dist/runtime-v2/types/ledger-store.d.ts +30 -30
  379. package/core/dist/runtime-v2/types/ledger-store.d.ts.map +1 -1
  380. package/core/dist/runtime-v2/types/ledger-store.js +10 -5
  381. package/core/dist/runtime-v2/types/ledger-store.js.map +1 -1
  382. package/core/dist/runtime-v2/types/pain-signal.d.ts +2 -2
  383. package/core/dist/runtime-v2/types/pain-signal.js +2 -2
  384. package/core/dist/workflow-funnel-loader.d.ts +2 -2
  385. package/core/dist/workflow-funnel-loader.d.ts.map +1 -1
  386. package/dist/installer.d.ts.map +1 -1
  387. package/dist/installer.js +16 -0
  388. package/dist/installer.js.map +1 -1
  389. package/dist/mvp-config.d.ts +0 -10
  390. package/dist/mvp-config.d.ts.map +1 -1
  391. package/dist/mvp-config.js +0 -65
  392. package/dist/mvp-config.js.map +1 -1
  393. package/package.json +1 -1
  394. package/pd-cli/dist/commands/__tests__/intent-flag-wiring.test.d.ts +9 -0
  395. package/pd-cli/dist/commands/__tests__/intent-flag-wiring.test.d.ts.map +1 -0
  396. package/pd-cli/dist/commands/__tests__/intent-flag-wiring.test.js +166 -0
  397. package/pd-cli/dist/commands/__tests__/intent-flag-wiring.test.js.map +1 -0
  398. package/pd-cli/dist/commands/intent.d.ts +59 -0
  399. package/pd-cli/dist/commands/intent.d.ts.map +1 -0
  400. package/pd-cli/dist/commands/intent.js +350 -0
  401. package/pd-cli/dist/commands/intent.js.map +1 -0
  402. package/pd-cli/dist/commands/mvp-smoke.js +1 -1
  403. package/pd-cli/dist/commands/mvp-smoke.js.map +1 -1
  404. package/pd-cli/dist/commands/rulecode.js +1 -1
  405. package/pd-cli/dist/commands/rulecode.js.map +1 -1
  406. package/pd-cli/dist/commands/runtime-canary.d.ts.map +1 -1
  407. package/pd-cli/dist/commands/runtime-canary.js +10 -11
  408. package/pd-cli/dist/commands/runtime-canary.js.map +1 -1
  409. package/pd-cli/dist/commands/runtime-init.d.ts +43 -0
  410. package/pd-cli/dist/commands/runtime-init.d.ts.map +1 -0
  411. package/pd-cli/dist/commands/runtime-init.js +264 -0
  412. package/pd-cli/dist/commands/runtime-init.js.map +1 -0
  413. package/pd-cli/dist/commands/runtime-internalization-queue.d.ts.map +1 -1
  414. package/pd-cli/dist/commands/runtime-internalization-queue.js +13 -16
  415. package/pd-cli/dist/commands/runtime-internalization-queue.js.map +1 -1
  416. package/pd-cli/dist/commands/runtime-internalization-run-once.d.ts.map +1 -1
  417. package/pd-cli/dist/commands/runtime-internalization-run-once.js +3 -0
  418. package/pd-cli/dist/commands/runtime-internalization-run-once.js.map +1 -1
  419. package/pd-cli/dist/commands/runtime-internalization-run-rulehost.d.ts.map +1 -1
  420. package/pd-cli/dist/commands/runtime-internalization-run-rulehost.js +61 -7
  421. package/pd-cli/dist/commands/runtime-internalization-run-rulehost.js.map +1 -1
  422. package/pd-cli/dist/commands/runtime.js +1 -1
  423. package/pd-cli/dist/commands/runtime.js.map +1 -1
  424. package/pd-cli/dist/index.js +92 -34
  425. package/pd-cli/dist/index.js.map +1 -1
  426. package/pd-cli/dist/services/__tests__/rulehost-readiness.test.d.ts +2 -0
  427. package/pd-cli/dist/services/__tests__/rulehost-readiness.test.d.ts.map +1 -0
  428. package/pd-cli/dist/services/__tests__/rulehost-readiness.test.js +314 -0
  429. package/pd-cli/dist/services/__tests__/rulehost-readiness.test.js.map +1 -0
  430. package/pd-cli/dist/services/__tests__/runtime-adapter-resolver.test.js +20 -12
  431. package/pd-cli/dist/services/__tests__/runtime-adapter-resolver.test.js.map +1 -1
  432. package/pd-cli/dist/services/demo-story-a-runner.d.ts.map +1 -1
  433. package/pd-cli/dist/services/demo-story-a-runner.js +6 -0
  434. package/pd-cli/dist/services/demo-story-a-runner.js.map +1 -1
  435. package/pd-cli/dist/services/rulehost-readiness.d.ts +62 -0
  436. package/pd-cli/dist/services/rulehost-readiness.d.ts.map +1 -0
  437. package/pd-cli/dist/services/rulehost-readiness.js +214 -0
  438. package/pd-cli/dist/services/rulehost-readiness.js.map +1 -0
  439. package/pd-cli/dist/services/runtime-adapter-resolver.d.ts +1 -1
  440. package/pd-cli/dist/services/runtime-adapter-resolver.js +3 -3
  441. package/pd-cli/dist/services/runtime-adapter-resolver.js.map +1 -1
  442. package/pd-cli/package.json +1 -0
  443. package/plugin/dist/commands/evolution-status.js +0 -2
  444. package/plugin/dist/commands/pain.js +2 -0
  445. package/plugin/dist/core/control-ui-db.d.ts +11 -0
  446. package/plugin/dist/core/control-ui-db.js +40 -16
  447. package/plugin/dist/core/detection-funnel.d.ts +25 -11
  448. package/plugin/dist/core/detection-funnel.js +32 -80
  449. package/plugin/dist/core/event-log.d.ts +1 -3
  450. package/plugin/dist/core/event-log.js +5 -21
  451. package/plugin/dist/core/evolution-reducer.d.ts +0 -8
  452. package/plugin/dist/core/evolution-reducer.js +9 -19
  453. package/plugin/dist/core/intent-doc-reader-adapter.d.ts +28 -0
  454. package/plugin/dist/core/intent-doc-reader-adapter.js +56 -0
  455. package/plugin/dist/core/intent-doc-reader.d.ts +80 -0
  456. package/plugin/dist/core/intent-doc-reader.js +189 -0
  457. package/plugin/dist/core/pain-diagnostic-gate.d.ts +37 -28
  458. package/plugin/dist/core/pain-diagnostic-gate.js +53 -89
  459. package/plugin/dist/core/pain.d.ts +0 -63
  460. package/plugin/dist/core/pain.js +0 -167
  461. package/plugin/dist/core/paths.d.ts +0 -1
  462. package/plugin/dist/core/paths.js +2 -1
  463. package/plugin/dist/core/principle-tree-ledger.d.ts +27 -79
  464. package/plugin/dist/core/principle-tree-ledger.js +39 -524
  465. package/plugin/dist/core/reflection/reflection-context.d.ts +2 -2
  466. package/plugin/dist/core/schema/migrations/001-init-trajectory.js +3 -6
  467. package/plugin/dist/core/schema/schema-definitions.js +4 -9
  468. package/plugin/dist/core/trajectory.d.ts +16 -16
  469. package/plugin/dist/core/trajectory.js +338 -311
  470. package/plugin/dist/core/workspace-context.d.ts +2 -3
  471. package/plugin/dist/hooks/after-tool-call-helpers.d.ts +4 -1
  472. package/plugin/dist/hooks/after-tool-call-helpers.js +13 -17
  473. package/plugin/dist/hooks/gate-block-helper.js +57 -17
  474. package/plugin/dist/hooks/lifecycle.js +3 -6
  475. package/plugin/dist/hooks/llm.js +66 -26
  476. package/plugin/dist/hooks/pain.d.ts +3 -1
  477. package/plugin/dist/hooks/pain.js +124 -49
  478. package/plugin/dist/hooks/prompt-helpers.d.ts +105 -0
  479. package/plugin/dist/hooks/prompt-helpers.js +288 -0
  480. package/plugin/dist/hooks/prompt-types.d.ts +74 -0
  481. package/plugin/dist/hooks/prompt-types.js +12 -0
  482. package/plugin/dist/hooks/prompt.d.ts +7 -38
  483. package/plugin/dist/hooks/prompt.js +433 -338
  484. package/plugin/dist/hooks/raw-observation-adapter.d.ts +9 -50
  485. package/plugin/dist/hooks/raw-observation-adapter.js +9 -164
  486. package/plugin/dist/hooks/raw-observation-types.d.ts +6 -57
  487. package/plugin/dist/hooks/raw-observation-types.js +5 -9
  488. package/plugin/dist/hooks/triage-adapter.js +6 -26
  489. package/plugin/dist/hooks/trigger-cooldown-tracker.d.ts +12 -0
  490. package/plugin/dist/hooks/trigger-cooldown-tracker.js +25 -0
  491. package/plugin/dist/index.d.ts +3 -1
  492. package/plugin/dist/index.js +9 -5
  493. package/plugin/dist/service/evolution-worker.js +6 -64
  494. package/plugin/dist/service/runtime-summary-service.d.ts +0 -2
  495. package/plugin/dist/service/runtime-summary-service.js +1 -5
  496. package/plugin/dist/service/subagent-workflow/workflow-store.d.ts +14 -0
  497. package/plugin/dist/service/subagent-workflow/workflow-store.js +91 -2
  498. package/plugin/dist/types/event-types.d.ts +1 -1
  499. package/plugin/package.json +6 -3
  500. package/plugin/scripts/acceptance-test.mjs +3 -3
  501. package/plugin/scripts/sync-plugin.mjs +33 -22
  502. package/plugin/templates/langs/en/skills/pd-cli-operator/SKILL.md +20 -11
  503. package/plugin/templates/langs/en/skills/pd-runtime-v2/SKILL.md +10 -0
  504. package/plugin/templates/langs/zh/skills/pd-cli-operator/SKILL.md +20 -11
  505. package/plugin/templates/langs/zh/skills/pd-runtime-v2/SKILL.md +10 -0
  506. package/console/dist/server/config/feature-flags.d.ts +0 -25
  507. package/console/dist/server/config/feature-flags.js +0 -101
  508. package/pd-cli/dist/commands/central-sync.d.ts +0 -10
  509. package/pd-cli/dist/commands/central-sync.d.ts.map +0 -1
  510. package/pd-cli/dist/commands/central-sync.js +0 -32
  511. package/pd-cli/dist/commands/central-sync.js.map +0 -1
  512. package/pd-cli/dist/services/feature-flag-loader.d.ts +0 -6
  513. package/pd-cli/dist/services/feature-flag-loader.d.ts.map +0 -1
  514. package/pd-cli/dist/services/feature-flag-loader.js +0 -53
  515. package/pd-cli/dist/services/feature-flag-loader.js.map +0 -1
  516. package/plugin/dist/core/observability.d.ts +0 -40
  517. package/plugin/dist/core/observability.js +0 -164
  518. package/plugin/dist/core/principle-tree-ledger-adapter.d.ts +0 -32
  519. package/plugin/dist/core/principle-tree-ledger-adapter.js +0 -125
  520. package/plugin/dist/hooks/subagent.d.ts +0 -9
  521. package/plugin/dist/hooks/subagent.js +0 -122
  522. package/plugin/dist/service/central-database.d.ts +0 -138
  523. package/plugin/dist/service/central-database.js +0 -731
  524. package/plugin/dist/service/central-sync-service.d.ts +0 -8
  525. package/plugin/dist/service/central-sync-service.js +0 -71
  526. package/plugin/scripts/validate-live-path.ts +0 -480
@@ -0,0 +1,500 @@
1
+ /**
2
+ * PRI-456: Characterization test for PainSignalBridge result-shaping.
3
+ *
4
+ * Pins the full PainSignalBridgeResult status matrix for both:
5
+ * - onDiagnosisComplete() (fresh diagnosis path)
6
+ * - buildExistingResult() (idempotent existing-task path)
7
+ *
8
+ * This test MUST remain green before and after the refactor that extracts
9
+ * a pure shapeBridgeResult() function. If any assertion changes, it is a
10
+ * behavior change — STOP.
11
+ *
12
+ * ERR gate:
13
+ * - ERR-007 / EP-02: single source for status decision (test proves both paths)
14
+ * - ERR-002 / EP-03: every degraded/failed branch keeps its structured message
15
+ * - ERR-004 / ERR-008 / EP-07: lineage fields come from the same source rows
16
+ */
17
+ import { describe, it, expect } from 'vitest';
18
+ import { PainSignalBridge } from '../pain-signal-bridge.js';
19
+ const PAIN_ID = 'pain-char-001';
20
+ const TASK_ID = 'diagnosis_pain-char-001';
21
+ const RUN_ID = 'run-char-1';
22
+ // ── Factory helpers ──────────────────────────────────────────────────────────
23
+ function makeCandidate(id, kind, overrides = {}) {
24
+ return {
25
+ candidateId: id,
26
+ taskId: TASK_ID,
27
+ artifactId: `artifact-${id}`,
28
+ sourceRunId: `run-${id}`,
29
+ title: `Candidate ${id}`,
30
+ description: `Description for ${id}`,
31
+ confidence: 0.85,
32
+ sourceRecommendationJson: '{}',
33
+ recommendationKind: kind,
34
+ status: 'pending',
35
+ createdAt: '2026-06-24T00:00:00.000Z',
36
+ ...overrides,
37
+ };
38
+ }
39
+ function makeLedgerEntry(candidateId) {
40
+ return {
41
+ id: `ledger-${candidateId}`,
42
+ status: 'probation',
43
+ createdAt: '2026-06-24T00:00:00.000Z',
44
+ text: `Principle text for ${candidateId}`,
45
+ sourceRef: `candidate://${candidateId}`,
46
+ title: `Principle ${candidateId}`,
47
+ evaluability: 'weak_heuristic',
48
+ };
49
+ }
50
+ function makeHighConfidenceOutput() {
51
+ return {
52
+ valid: true,
53
+ diagnosisId: 'diag-high',
54
+ summary: 'Valid diagnosis with sufficient evidence',
55
+ rootCause: 'Identified root cause from session trace',
56
+ violatedPrinciples: [],
57
+ evidence: [{ sourceRef: 'session-trace-1', note: 'Owner confirmed behavior' }],
58
+ recommendations: [{ kind: 'principle', description: 'Valid principle from evidence' }],
59
+ confidence: 0.85,
60
+ };
61
+ }
62
+ function makeLowConfidenceOutput() {
63
+ return {
64
+ valid: true,
65
+ diagnosisId: 'diag-low',
66
+ summary: 'Low confidence diagnosis',
67
+ rootCause: 'Insufficient evidence',
68
+ violatedPrinciples: [],
69
+ evidence: [],
70
+ recommendations: [{ kind: 'principle', description: 'Low confidence principle' }],
71
+ confidence: 0.3,
72
+ };
73
+ }
74
+ function makeMockDeps(overrides) {
75
+ const telemetryEvents = [];
76
+ const createTaskCalls = [];
77
+ const updateCandidateStatusCalls = [];
78
+ const createTaskMock = async (input) => {
79
+ createTaskCalls.push(input);
80
+ if (overrides.createTaskFn)
81
+ return overrides.createTaskFn(input);
82
+ return { taskId: 'mock-task' };
83
+ };
84
+ const getTaskMock = overrides.getTaskFn ?? (async () => null);
85
+ const updateCandidateStatusMock = async (candidateId, patch) => {
86
+ updateCandidateStatusCalls.push({ candidateId, patch });
87
+ };
88
+ const stateManager = {
89
+ getTask: getTaskMock,
90
+ createTask: createTaskMock,
91
+ updateTask: async () => undefined,
92
+ getCandidatesByTaskId: async () => overrides.candidates ?? [],
93
+ getRunsByTask: async () => [{ runId: RUN_ID, taskId: TASK_ID, status: 'succeeded' }],
94
+ updateCandidateStatus: updateCandidateStatusMock,
95
+ };
96
+ const intakeService = {
97
+ intake: async (candidateId) => ({ id: `ledger-${candidateId}` }),
98
+ };
99
+ const ledgerEntries = overrides.ledgerEntries ?? new Map();
100
+ const ledgerAdapter = {
101
+ existsForCandidate: (candidateId) => ledgerEntries.get(candidateId) ?? null,
102
+ };
103
+ const runner = {
104
+ run: async () => ({
105
+ status: 'succeeded',
106
+ taskId: TASK_ID,
107
+ attemptCount: 1,
108
+ output: overrides.output ?? makeHighConfidenceOutput(),
109
+ }),
110
+ };
111
+ return {
112
+ stateManager,
113
+ intakeService,
114
+ ledgerAdapter,
115
+ runner,
116
+ telemetryEvents,
117
+ createTaskCalls,
118
+ updateCandidateStatusCalls,
119
+ };
120
+ }
121
+ function createBridge(deps, autoIntakeEnabled = true) {
122
+ return new PainSignalBridge({
123
+ stateManager: deps.stateManager,
124
+ runner: deps.runner,
125
+ intakeService: deps.intakeService,
126
+ ledgerAdapter: deps.ledgerAdapter,
127
+ autoIntakeEnabled,
128
+ eventEmitter: {
129
+ emitTelemetry: (event) => {
130
+ deps.telemetryEvents.push(event);
131
+ },
132
+ },
133
+ });
134
+ }
135
+ const PROVENANCE = 'openclaw_context_bound';
136
+ // ── onDiagnosisComplete() characterization ───────────────────────────────────
137
+ describe('PRI-456: onDiagnosisComplete result-shaping characterization', () => {
138
+ it('succeeded: 1 admitted candidate with ledger entry and successful dreamer seed', async () => {
139
+ const candidates = [makeCandidate('c1', 'principle')];
140
+ const deps = makeMockDeps({ candidates, output: makeHighConfidenceOutput() });
141
+ const bridge = createBridge(deps);
142
+ const result = await bridge.onDiagnosisComplete({
143
+ taskId: TASK_ID,
144
+ diagnosticianOutput: makeHighConfidenceOutput(),
145
+ painId: PAIN_ID,
146
+ provenance: PROVENANCE,
147
+ inputEvidenceCount: 1,
148
+ });
149
+ expect(result.status).toBe('succeeded');
150
+ expect(result.painId).toBe(PAIN_ID);
151
+ expect(result.taskId).toBe(TASK_ID);
152
+ expect(result.runId).toBe(RUN_ID);
153
+ expect(result.artifactId).toBe('artifact-c1');
154
+ expect(result.candidateIds).toEqual(['c1']);
155
+ expect(result.ledgerEntryIds).toEqual(['ledger-c1']);
156
+ expect(result.admissionResults).toBeDefined();
157
+ expect(result.admissionResults).toHaveLength(1);
158
+ expect(result.admissionResults?.[0]?.admission.decision).toBe('admitted');
159
+ expect(result.message).toBeUndefined();
160
+ });
161
+ it('succeeded: autoIntakeEnabled=false — no ledger entries needed', async () => {
162
+ const candidates = [makeCandidate('c1', 'principle')];
163
+ const deps = makeMockDeps({ candidates, output: makeHighConfidenceOutput() });
164
+ const bridge = createBridge(deps, false);
165
+ const result = await bridge.onDiagnosisComplete({
166
+ taskId: TASK_ID,
167
+ diagnosticianOutput: makeHighConfidenceOutput(),
168
+ painId: PAIN_ID,
169
+ provenance: PROVENANCE,
170
+ inputEvidenceCount: 1,
171
+ });
172
+ expect(result.status).toBe('succeeded');
173
+ expect(result.candidateIds).toEqual(['c1']);
174
+ expect(result.ledgerEntryIds).toEqual([]);
175
+ expect(result.admissionResults).toBeDefined();
176
+ expect(result.admissionResults?.[0]?.admission.decision).toBe('admitted');
177
+ expect(result.message).toBeUndefined();
178
+ });
179
+ it('failed: no candidates — "Diagnostician succeeded but produced no principle candidates"', async () => {
180
+ const deps = makeMockDeps({ candidates: [], output: makeHighConfidenceOutput() });
181
+ const bridge = createBridge(deps);
182
+ const result = await bridge.onDiagnosisComplete({
183
+ taskId: TASK_ID,
184
+ diagnosticianOutput: makeHighConfidenceOutput(),
185
+ painId: PAIN_ID,
186
+ provenance: PROVENANCE,
187
+ inputEvidenceCount: 1,
188
+ });
189
+ expect(result.status).toBe('failed');
190
+ expect(result.painId).toBe(PAIN_ID);
191
+ expect(result.taskId).toBe(TASK_ID);
192
+ expect(result.runId).toBe(RUN_ID);
193
+ expect(result.artifactId).toBeUndefined();
194
+ expect(result.candidateIds).toEqual([]);
195
+ expect(result.ledgerEntryIds).toEqual([]);
196
+ expect(result.admissionResults).toEqual([]);
197
+ expect(result.message).toBe('Diagnostician succeeded but produced no principle candidates');
198
+ });
199
+ it('degraded: all_candidates_gated — 1 candidate, low confidence, not admitted', async () => {
200
+ const candidates = [makeCandidate('c-gated', 'principle')];
201
+ const deps = makeMockDeps({ candidates, output: makeLowConfidenceOutput() });
202
+ const bridge = createBridge(deps);
203
+ const result = await bridge.onDiagnosisComplete({
204
+ taskId: TASK_ID,
205
+ diagnosticianOutput: makeLowConfidenceOutput(),
206
+ painId: PAIN_ID,
207
+ provenance: PROVENANCE,
208
+ inputEvidenceCount: 1,
209
+ });
210
+ expect(result.status).toBe('degraded');
211
+ expect(result.candidateIds).toEqual(['c-gated']);
212
+ expect(result.ledgerEntryIds).toEqual([]);
213
+ expect(result.admissionResults).toBeDefined();
214
+ expect(result.admissionResults?.[0]?.admission.decision).toBe('needs_evidence');
215
+ expect(result.message).toContain('all_candidates_gated');
216
+ expect(result.message).toContain('c-gated=needs_evidence');
217
+ });
218
+ it('degraded: partial_admission — 2 candidates, 1 admitted, 1 deferred', async () => {
219
+ // To get partial admission, one candidate must be admitted (principle, high confidence)
220
+ // and one must be non-admitted (defer kind → always deferred regardless of confidence).
221
+ const candidatesPartial = [
222
+ makeCandidate('c-ok', 'principle'),
223
+ makeCandidate('c-defer', 'defer'),
224
+ ];
225
+ const deps = makeMockDeps({ candidates: candidatesPartial, output: makeHighConfidenceOutput() });
226
+ const bridge = createBridge(deps);
227
+ const result = await bridge.onDiagnosisComplete({
228
+ taskId: TASK_ID,
229
+ diagnosticianOutput: makeHighConfidenceOutput(),
230
+ painId: PAIN_ID,
231
+ provenance: PROVENANCE,
232
+ inputEvidenceCount: 1,
233
+ });
234
+ expect(result.status).toBe('degraded');
235
+ expect(result.candidateIds).toEqual(['c-ok', 'c-defer']);
236
+ expect(result.ledgerEntryIds).toEqual(['ledger-c-ok']);
237
+ expect(result.admissionResults).toBeDefined();
238
+ expect(result.admissionResults).toHaveLength(2);
239
+ const admitted = result.admissionResults?.find((a) => a.candidateId === 'c-ok');
240
+ expect(admitted?.admission.decision).toBe('admitted');
241
+ const deferred = result.admissionResults?.find((a) => a.candidateId === 'c-defer');
242
+ expect(deferred?.admission.decision).toBe('deferred');
243
+ expect(result.message).toContain('partial_admission');
244
+ expect(result.message).toContain('1_admitted_1_gated');
245
+ });
246
+ it('degraded: dreamer_seed_failed — admitted candidate, ledger created, dreamer seed throws', async () => {
247
+ const candidates = [makeCandidate('c-fail', 'principle')];
248
+ const deps = makeMockDeps({
249
+ candidates,
250
+ output: makeHighConfidenceOutput(),
251
+ createTaskFn: async (input) => {
252
+ if (input.taskKind === 'dreamer')
253
+ throw new Error('DB write failed');
254
+ return { taskId: input.taskId ?? 'mock-task' };
255
+ },
256
+ });
257
+ const bridge = createBridge(deps);
258
+ const result = await bridge.onDiagnosisComplete({
259
+ taskId: TASK_ID,
260
+ diagnosticianOutput: makeHighConfidenceOutput(),
261
+ painId: PAIN_ID,
262
+ provenance: PROVENANCE,
263
+ inputEvidenceCount: 1,
264
+ });
265
+ expect(result.status).toBe('degraded');
266
+ expect(result.candidateIds).toEqual(['c-fail']);
267
+ expect(result.ledgerEntryIds).toEqual(['ledger-c-fail']);
268
+ expect(result.message).toContain('dreamer_seed_failed:c-fail');
269
+ // The candidate should still be consumed despite seed failure
270
+ const consumedCall = deps.updateCandidateStatusCalls.find((c) => c.candidateId === 'c-fail');
271
+ expect(consumedCall).toBeDefined();
272
+ expect(consumedCall?.patch).toEqual({ status: 'consumed' });
273
+ });
274
+ it('degraded: all_candidates_gated with seed failure note appended', async () => {
275
+ // When all candidates are gated AND a seed failure occurs (shouldn't normally happen
276
+ // since seed only runs for admitted candidates, but test the message format)
277
+ const candidates = [makeCandidate('c-gated', 'principle')];
278
+ const deps = makeMockDeps({
279
+ candidates,
280
+ output: makeLowConfidenceOutput(),
281
+ });
282
+ const bridge = createBridge(deps);
283
+ const result = await bridge.onDiagnosisComplete({
284
+ taskId: TASK_ID,
285
+ diagnosticianOutput: makeLowConfidenceOutput(),
286
+ painId: PAIN_ID,
287
+ provenance: PROVENANCE,
288
+ inputEvidenceCount: 1,
289
+ });
290
+ // All gated → degraded, no seed failure (no admitted candidates to seed)
291
+ expect(result.status).toBe('degraded');
292
+ expect(result.message).toContain('all_candidates_gated');
293
+ expect(result.message).not.toContain('dreamer_seed_failed');
294
+ });
295
+ it('diagnosticianOutput=undefined: all candidates get needs_evidence → all_candidates_gated', async () => {
296
+ const candidates = [makeCandidate('c-undef', 'principle')];
297
+ const deps = makeMockDeps({ candidates });
298
+ const bridge = createBridge(deps);
299
+ const result = await bridge.onDiagnosisComplete({
300
+ taskId: TASK_ID,
301
+ diagnosticianOutput: undefined,
302
+ painId: PAIN_ID,
303
+ provenance: PROVENANCE,
304
+ inputEvidenceCount: 1,
305
+ });
306
+ expect(result.status).toBe('degraded');
307
+ expect(result.admissionResults).toBeDefined();
308
+ expect(result.admissionResults?.[0]?.admission.decision).toBe('needs_evidence');
309
+ expect(result.admissionResults?.[0]?.admission.reason).toBe('diagnostician_output_unavailable');
310
+ expect(result.message).toContain('all_candidates_gated');
311
+ });
312
+ });
313
+ // ── buildExistingResult() characterization ───────────────────────────────────
314
+ describe('PRI-456: buildExistingResult result-shaping characterization', () => {
315
+ it('succeeded: existing task with candidates and ledger entries', async () => {
316
+ const candidates = [makeCandidate('c1', 'principle')];
317
+ const ledgerEntries = new Map([['c1', makeLedgerEntry('c1')]]);
318
+ const deps = makeMockDeps({ candidates, ledgerEntries });
319
+ const bridge = createBridge(deps);
320
+ const result = await bridge.buildExistingResult({
321
+ painId: PAIN_ID,
322
+ taskId: TASK_ID,
323
+ });
324
+ expect(result.status).toBe('succeeded');
325
+ expect(result.painId).toBe(PAIN_ID);
326
+ expect(result.taskId).toBe(TASK_ID);
327
+ expect(result.runId).toBe(RUN_ID);
328
+ expect(result.artifactId).toBe('artifact-c1');
329
+ expect(result.candidateIds).toEqual(['c1']);
330
+ expect(result.ledgerEntryIds).toEqual(['ledger-c1']);
331
+ expect(result.message).toBe('Task already succeeded');
332
+ });
333
+ it('succeeded: autoIntakeEnabled=false — no ledger entries needed', async () => {
334
+ const candidates = [makeCandidate('c1', 'principle')];
335
+ const deps = makeMockDeps({ candidates, ledgerEntries: new Map() });
336
+ const bridge = createBridge(deps, false);
337
+ const result = await bridge.buildExistingResult({
338
+ painId: PAIN_ID,
339
+ taskId: TASK_ID,
340
+ });
341
+ expect(result.status).toBe('succeeded');
342
+ expect(result.candidateIds).toEqual(['c1']);
343
+ expect(result.ledgerEntryIds).toEqual([]);
344
+ expect(result.message).toBe('Task already succeeded');
345
+ });
346
+ it('failed: no candidates — "Task has no principle candidates — treating as failed"', async () => {
347
+ const deps = makeMockDeps({ candidates: [], ledgerEntries: new Map() });
348
+ const bridge = createBridge(deps);
349
+ const result = await bridge.buildExistingResult({
350
+ painId: PAIN_ID,
351
+ taskId: TASK_ID,
352
+ });
353
+ expect(result.status).toBe('failed');
354
+ expect(result.painId).toBe(PAIN_ID);
355
+ expect(result.taskId).toBe(TASK_ID);
356
+ expect(result.runId).toBe(RUN_ID);
357
+ expect(result.artifactId).toBeUndefined();
358
+ expect(result.candidateIds).toEqual([]);
359
+ expect(result.ledgerEntryIds).toEqual([]);
360
+ expect(result.message).toBe('Task has no principle candidates — treating as failed');
361
+ });
362
+ it('failed: no ledger entries with autoIntakeEnabled=true', async () => {
363
+ const candidates = [makeCandidate('c1', 'principle')];
364
+ const deps = makeMockDeps({ candidates, ledgerEntries: new Map() });
365
+ const bridge = createBridge(deps);
366
+ const result = await bridge.buildExistingResult({
367
+ painId: PAIN_ID,
368
+ taskId: TASK_ID,
369
+ });
370
+ expect(result.status).toBe('failed');
371
+ expect(result.runId).toBe(RUN_ID);
372
+ expect(result.artifactId).toBe('artifact-c1');
373
+ expect(result.candidateIds).toEqual(['c1']);
374
+ expect(result.ledgerEntryIds).toEqual([]);
375
+ expect(result.message).toBe('Candidate intake did not produce a ledger entry — treating as failed');
376
+ });
377
+ it('multiple candidates with mixed ledger existence — only existing ledgers counted', async () => {
378
+ const candidates = [
379
+ makeCandidate('c1', 'principle'),
380
+ makeCandidate('c2', 'principle'),
381
+ ];
382
+ const ledgerEntries = new Map([['c1', makeLedgerEntry('c1')]]);
383
+ const deps = makeMockDeps({ candidates, ledgerEntries });
384
+ const bridge = createBridge(deps);
385
+ const result = await bridge.buildExistingResult({
386
+ painId: PAIN_ID,
387
+ taskId: TASK_ID,
388
+ });
389
+ expect(result.status).toBe('succeeded');
390
+ expect(result.candidateIds).toEqual(['c1', 'c2']);
391
+ expect(result.ledgerEntryIds).toEqual(['ledger-c1']);
392
+ expect(result.message).toBe('Task already succeeded');
393
+ });
394
+ });
395
+ // ── Edge cases and boundary conditions ───────────────────────────────────────
396
+ describe('PRI-456: shapeBridgeResult edge cases', () => {
397
+ it('fresh path: runId and artifactId undefined when no candidates', async () => {
398
+ const deps = makeMockDeps({ candidates: [], output: makeHighConfidenceOutput() });
399
+ const bridge = createBridge(deps);
400
+ const result = await bridge.onDiagnosisComplete({
401
+ taskId: TASK_ID,
402
+ diagnosticianOutput: makeHighConfidenceOutput(),
403
+ painId: PAIN_ID,
404
+ provenance: PROVENANCE,
405
+ inputEvidenceCount: 1,
406
+ });
407
+ expect(result.status).toBe('failed');
408
+ expect(result.runId).toBe(RUN_ID); // runId comes from getRunsByTask mock
409
+ expect(result.artifactId).toBeUndefined(); // no candidates → no artifactId
410
+ });
411
+ it('fresh path: artifactId comes from first candidate', async () => {
412
+ const candidates = [
413
+ makeCandidate('c-first', 'principle'),
414
+ makeCandidate('c-second', 'principle'),
415
+ ];
416
+ const deps = makeMockDeps({ candidates, output: makeHighConfidenceOutput() });
417
+ const bridge = createBridge(deps);
418
+ const result = await bridge.onDiagnosisComplete({
419
+ taskId: TASK_ID,
420
+ diagnosticianOutput: makeHighConfidenceOutput(),
421
+ painId: PAIN_ID,
422
+ provenance: PROVENANCE,
423
+ inputEvidenceCount: 1,
424
+ });
425
+ expect(result.status).toBe('succeeded');
426
+ expect(result.artifactId).toBe('artifact-c-first'); // first candidate's artifactId
427
+ });
428
+ it('fresh path: admissionResults includes needs_evidence decision', async () => {
429
+ const candidates = [makeCandidate('c-needs-evidence', 'principle')];
430
+ const deps = makeMockDeps({ candidates, output: makeLowConfidenceOutput() });
431
+ const bridge = createBridge(deps);
432
+ const result = await bridge.onDiagnosisComplete({
433
+ taskId: TASK_ID,
434
+ diagnosticianOutput: makeLowConfidenceOutput(),
435
+ painId: PAIN_ID,
436
+ provenance: PROVENANCE,
437
+ inputEvidenceCount: 0, // low evidence count
438
+ });
439
+ expect(result.status).toBe('degraded');
440
+ expect(result.admissionResults).toBeDefined();
441
+ expect(result.admissionResults?.[0]?.admission.decision).toBe('needs_evidence');
442
+ expect(result.message).toContain('all_candidates_gated');
443
+ });
444
+ it('existing path: runId undefined when no runs', async () => {
445
+ const candidates = [makeCandidate('c1', 'principle')];
446
+ const ledgerEntries = new Map([['c1', makeLedgerEntry('c1')]]);
447
+ const deps = makeMockDeps({
448
+ candidates,
449
+ ledgerEntries,
450
+ getTaskFn: async () => ({ taskId: TASK_ID, status: 'succeeded' }),
451
+ });
452
+ // Override getRunsByTask to return empty array
453
+ deps.stateManager = {
454
+ ...deps.stateManager,
455
+ getRunsByTask: async () => [],
456
+ };
457
+ const bridge = createBridge(deps);
458
+ const result = await bridge.buildExistingResult({
459
+ painId: PAIN_ID,
460
+ taskId: TASK_ID,
461
+ });
462
+ expect(result.status).toBe('succeeded');
463
+ expect(result.runId).toBeUndefined();
464
+ });
465
+ it('fresh path: multiple admission decisions in message', async () => {
466
+ // Mix of admitted and deferred candidates
467
+ const candidates = [
468
+ makeCandidate('c-admit', 'principle'),
469
+ makeCandidate('c-defer', 'defer'),
470
+ makeCandidate('c-gated', 'principle'),
471
+ ];
472
+ // High confidence for principle, defer always deferred, low confidence for gated
473
+ const output = {
474
+ valid: true,
475
+ diagnosisId: 'diag-mix',
476
+ summary: 'Mixed admission',
477
+ rootCause: 'Test',
478
+ violatedPrinciples: [],
479
+ evidence: [{ sourceRef: 'test', note: 'Evidence' }],
480
+ recommendations: [
481
+ { kind: 'principle', description: 'Principle 1' },
482
+ { kind: 'defer', description: 'Defer 1' },
483
+ { kind: 'principle', description: 'Principle 2' },
484
+ ],
485
+ confidence: 0.85,
486
+ };
487
+ const deps = makeMockDeps({ candidates, output });
488
+ const bridge = createBridge(deps);
489
+ const result = await bridge.onDiagnosisComplete({
490
+ taskId: TASK_ID,
491
+ diagnosticianOutput: output,
492
+ painId: PAIN_ID,
493
+ provenance: PROVENANCE,
494
+ inputEvidenceCount: 1,
495
+ });
496
+ expect(result.status).toBe('degraded');
497
+ expect(result.message).toContain('partial_admission');
498
+ });
499
+ });
500
+ //# sourceMappingURL=pain-signal-bridge-result-shaping.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pain-signal-bridge-result-shaping.test.js","sourceRoot":"","sources":["../../../src/runtime-v2/__tests__/pain-signal-bridge-result-shaping.test.ts"],"names":[],"mappings":"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"}
@@ -71,10 +71,12 @@ describe('recordPainSignalObservability', () => {
71
71
  score: 95,
72
72
  reason: 'manual pain diagnosis',
73
73
  });
74
- const hasEvolutionTasks = db.prepare(`
75
- SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'evolution_tasks'
76
- `).get();
77
- expect(hasEvolutionTasks).toBeUndefined();
74
+ // ensureTrajectorySchema now creates ALL trajectory tables (including
75
+ // evolution_tasks) for schema consistency. The legacy evolution_tasks queue
76
+ // is "disabled" in the sense that no rows are written to it — not that the
77
+ // table doesn't exist.
78
+ const evolutionTaskRows = db.prepare('SELECT COUNT(*) as count FROM evolution_tasks').get();
79
+ expect(evolutionTaskRows.count).toBe(0);
78
80
  }
79
81
  finally {
80
82
  db.close();
@@ -98,7 +100,7 @@ describe('recordPainSignalObservability', () => {
98
100
  id INTEGER PRIMARY KEY AUTOINCREMENT,
99
101
  session_id TEXT NOT NULL,
100
102
  source TEXT NOT NULL,
101
- score INTEGER NOT NULL,
103
+ score REAL NOT NULL,
102
104
  reason TEXT,
103
105
  severity TEXT,
104
106
  origin TEXT,
@@ -1 +1 @@
1
- {"version":3,"file":"pain-signal-observability.test.js","sourceRoot":"","sources":["../../../src/runtime-v2/__tests__/pain-signal-observability.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pain-signal-observability.test.js","sourceRoot":"","sources":["../../../src/runtime-v2/__tests__/pain-signal-observability.test.ts"],"names":[],"mappings":"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"}
@@ -161,6 +161,17 @@ describe('SqlitePIArtifactStore contract (PRI-84)', () => {
161
161
  tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'pd-pi-art-sqlite-'));
162
162
  connection = new SqliteConnection(tmpDir);
163
163
  store = new SqlitePIArtifactStore(connection);
164
+ // P1-3: Seed parent task records for FK validation.
165
+ // Each test's sourceTaskId must exist in tasks table before createArtifact.
166
+ const db = connection.getDb();
167
+ const taskIds = [
168
+ 'task-001', 'task-upsert', 'task-s', 'task-other',
169
+ 'task-p', 'task-c', 'task-dup', 'task-persist',
170
+ ];
171
+ const insertTask = db.prepare("INSERT INTO tasks (task_id, task_kind, status, created_at, updated_at) VALUES (?, 'diagnosis', 'pending', '2026-01-01T00:00:00Z', '2026-01-01T00:00:00Z')");
172
+ for (const taskId of taskIds) {
173
+ insertTask.run(taskId);
174
+ }
164
175
  });
165
176
  afterEach(() => {
166
177
  connection.close();