@principles/core 1.284.17 → 1.284.19

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 (291) hide show
  1. package/dist/runtime-v2/__tests__/artificer-runner-vslice.test.js +101 -14
  2. package/dist/runtime-v2/__tests__/artificer-runner-vslice.test.js.map +1 -1
  3. package/dist/runtime-v2/__tests__/evidence-sanitizer.test.js +113 -1
  4. package/dist/runtime-v2/__tests__/evidence-sanitizer.test.js.map +1 -1
  5. package/dist/runtime-v2/__tests__/pain-to-principle-service.test.js +0 -1
  6. package/dist/runtime-v2/__tests__/pain-to-principle-service.test.js.map +1 -1
  7. package/dist/runtime-v2/__tests__/scribe-runner-vslice.test.js +211 -0
  8. package/dist/runtime-v2/__tests__/scribe-runner-vslice.test.js.map +1 -1
  9. package/dist/runtime-v2/adapter/__tests__/openclaw-cli-runtime-adapter-message-file.test.js +23 -1
  10. package/dist/runtime-v2/adapter/__tests__/openclaw-cli-runtime-adapter-message-file.test.js.map +1 -1
  11. package/dist/runtime-v2/adapter/__tests__/principle-tree-ledger-adapter.test.js +25 -0
  12. package/dist/runtime-v2/adapter/__tests__/principle-tree-ledger-adapter.test.js.map +1 -1
  13. package/dist/runtime-v2/adapter/openclaw-cli-runtime-adapter.d.ts.map +1 -1
  14. package/dist/runtime-v2/adapter/openclaw-cli-runtime-adapter.js +38 -7
  15. package/dist/runtime-v2/adapter/openclaw-cli-runtime-adapter.js.map +1 -1
  16. package/dist/runtime-v2/adapter/output-schema-registry.d.ts.map +1 -1
  17. package/dist/runtime-v2/adapter/output-schema-registry.js +0 -2
  18. package/dist/runtime-v2/adapter/output-schema-registry.js.map +1 -1
  19. package/dist/runtime-v2/adapter/principle-tree-ledger-adapter.d.ts +16 -0
  20. package/dist/runtime-v2/adapter/principle-tree-ledger-adapter.d.ts.map +1 -1
  21. package/dist/runtime-v2/adapter/principle-tree-ledger-adapter.js +22 -0
  22. package/dist/runtime-v2/adapter/principle-tree-ledger-adapter.js.map +1 -1
  23. package/dist/runtime-v2/agent-spec.d.ts +0 -1
  24. package/dist/runtime-v2/agent-spec.d.ts.map +1 -1
  25. package/dist/runtime-v2/agent-spec.js +3 -1
  26. package/dist/runtime-v2/agent-spec.js.map +1 -1
  27. package/dist/runtime-v2/config/__tests__/internal-agent-names.test.js +3 -1
  28. package/dist/runtime-v2/config/__tests__/internal-agent-names.test.js.map +1 -1
  29. package/dist/runtime-v2/config/__tests__/pd-config-agent-binding.test.js +0 -7
  30. package/dist/runtime-v2/config/__tests__/pd-config-agent-binding.test.js.map +1 -1
  31. package/dist/runtime-v2/config/__tests__/pd-config-context-injection.test.js +0 -1
  32. package/dist/runtime-v2/config/__tests__/pd-config-context-injection.test.js.map +1 -1
  33. package/dist/runtime-v2/config/__tests__/pd-config-contract.test.js +0 -1
  34. package/dist/runtime-v2/config/__tests__/pd-config-contract.test.js.map +1 -1
  35. package/dist/runtime-v2/config/__tests__/pd-config-principles.test.js +0 -1
  36. package/dist/runtime-v2/config/__tests__/pd-config-principles.test.js.map +1 -1
  37. package/dist/runtime-v2/config/__tests__/pd-config-reasoning.test.js +0 -1
  38. package/dist/runtime-v2/config/__tests__/pd-config-reasoning.test.js.map +1 -1
  39. package/dist/runtime-v2/config/__tests__/pd-config-redaction-deep.test.js +0 -1
  40. package/dist/runtime-v2/config/__tests__/pd-config-redaction-deep.test.js.map +1 -1
  41. package/dist/runtime-v2/config/__tests__/pd-config-validation-edge-cases.test.js +61 -1
  42. package/dist/runtime-v2/config/__tests__/pd-config-validation-edge-cases.test.js.map +1 -1
  43. package/dist/runtime-v2/config/pd-config-defaults.d.ts.map +1 -1
  44. package/dist/runtime-v2/config/pd-config-defaults.js +0 -1
  45. package/dist/runtime-v2/config/pd-config-defaults.js.map +1 -1
  46. package/dist/runtime-v2/config/pd-config-types.d.ts +1 -1
  47. package/dist/runtime-v2/config/pd-config-types.d.ts.map +1 -1
  48. package/dist/runtime-v2/config/pd-config-types.js +0 -1
  49. package/dist/runtime-v2/config/pd-config-types.js.map +1 -1
  50. package/dist/runtime-v2/config/pd-config-validate.d.ts.map +1 -1
  51. package/dist/runtime-v2/config/pd-config-validate.js +20 -1
  52. package/dist/runtime-v2/config/pd-config-validate.js.map +1 -1
  53. package/dist/runtime-v2/evidence-sanitizer.d.ts +17 -2
  54. package/dist/runtime-v2/evidence-sanitizer.d.ts.map +1 -1
  55. package/dist/runtime-v2/evidence-sanitizer.js +80 -11
  56. package/dist/runtime-v2/evidence-sanitizer.js.map +1 -1
  57. package/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js +3 -3
  58. package/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js.map +1 -1
  59. package/dist/runtime-v2/feature-flags/feature-flag-contract.d.ts.map +1 -1
  60. package/dist/runtime-v2/feature-flags/feature-flag-contract.js +11 -40
  61. package/dist/runtime-v2/feature-flags/feature-flag-contract.js.map +1 -1
  62. package/dist/runtime-v2/feature-flags/feature-flag-lifecycle.d.ts.map +1 -1
  63. package/dist/runtime-v2/feature-flags/feature-flag-lifecycle.js +6 -40
  64. package/dist/runtime-v2/feature-flags/feature-flag-lifecycle.js.map +1 -1
  65. package/dist/runtime-v2/index.d.ts +9 -6
  66. package/dist/runtime-v2/index.d.ts.map +1 -1
  67. package/dist/runtime-v2/index.js +12 -5
  68. package/dist/runtime-v2/index.js.map +1 -1
  69. package/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder.test.js +61 -29
  70. package/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder.test.js.map +1 -1
  71. package/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js +0 -1
  72. package/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js.map +1 -1
  73. package/dist/runtime-v2/internalization/__tests__/diag-router-runner.test.js +2 -2
  74. package/dist/runtime-v2/internalization/__tests__/diag-router-runner.test.js.map +1 -1
  75. package/dist/runtime-v2/internalization/__tests__/evaluator-artificer-repair-replay.test.js +2 -13
  76. package/dist/runtime-v2/internalization/__tests__/evaluator-artificer-repair-replay.test.js.map +1 -1
  77. package/dist/runtime-v2/internalization/__tests__/evaluator-chinese-feedback-contract.test.js +1 -5
  78. package/dist/runtime-v2/internalization/__tests__/evaluator-chinese-feedback-contract.test.js.map +1 -1
  79. package/dist/runtime-v2/internalization/__tests__/evaluator-out-of-scope-governance.test.js +1 -5
  80. package/dist/runtime-v2/internalization/__tests__/evaluator-out-of-scope-governance.test.js.map +1 -1
  81. package/dist/runtime-v2/internalization/__tests__/external-review-p0-regressions.test.js +1 -1
  82. package/dist/runtime-v2/internalization/__tests__/external-review-p0-regressions.test.js.map +1 -1
  83. package/dist/runtime-v2/internalization/__tests__/formation-context.test.d.ts +2 -0
  84. package/dist/runtime-v2/internalization/__tests__/formation-context.test.d.ts.map +1 -0
  85. package/dist/runtime-v2/internalization/__tests__/formation-context.test.js +428 -0
  86. package/dist/runtime-v2/internalization/__tests__/formation-context.test.js.map +1 -0
  87. package/dist/runtime-v2/internalization/__tests__/scribe-prompt-builder.test.js +97 -0
  88. package/dist/runtime-v2/internalization/__tests__/scribe-prompt-builder.test.js.map +1 -1
  89. package/dist/runtime-v2/internalization/__tests__/split-diagnostician-runner-retry.test.js +61 -0
  90. package/dist/runtime-v2/internalization/__tests__/split-diagnostician-runner-retry.test.js.map +1 -1
  91. package/dist/runtime-v2/internalization/artifact-summary.d.ts +11 -0
  92. package/dist/runtime-v2/internalization/artifact-summary.d.ts.map +1 -1
  93. package/dist/runtime-v2/internalization/artifact-summary.js.map +1 -1
  94. package/dist/runtime-v2/internalization/artificer-prompt-builder.d.ts +48 -14
  95. package/dist/runtime-v2/internalization/artificer-prompt-builder.d.ts.map +1 -1
  96. package/dist/runtime-v2/internalization/artificer-prompt-builder.js +32 -1
  97. package/dist/runtime-v2/internalization/artificer-prompt-builder.js.map +1 -1
  98. package/dist/runtime-v2/internalization/artificer-runner.d.ts.map +1 -1
  99. package/dist/runtime-v2/internalization/artificer-runner.js +60 -156
  100. package/dist/runtime-v2/internalization/artificer-runner.js.map +1 -1
  101. package/dist/runtime-v2/internalization/diag-distiller-runner.d.ts +1 -1
  102. package/dist/runtime-v2/internalization/diag-distiller-runner.d.ts.map +1 -1
  103. package/dist/runtime-v2/internalization/diag-distiller-runner.js +2 -19
  104. package/dist/runtime-v2/internalization/diag-distiller-runner.js.map +1 -1
  105. package/dist/runtime-v2/internalization/diag-rootcause-runner.d.ts.map +1 -1
  106. package/dist/runtime-v2/internalization/diag-rootcause-runner.js +1 -5
  107. package/dist/runtime-v2/internalization/diag-rootcause-runner.js.map +1 -1
  108. package/dist/runtime-v2/internalization/diag-router-runner.d.ts +1 -1
  109. package/dist/runtime-v2/internalization/diag-router-runner.d.ts.map +1 -1
  110. package/dist/runtime-v2/internalization/diag-router-runner.js +9 -32
  111. package/dist/runtime-v2/internalization/diag-router-runner.js.map +1 -1
  112. package/dist/runtime-v2/internalization/dreamer-runner.d.ts +1 -9
  113. package/dist/runtime-v2/internalization/dreamer-runner.d.ts.map +1 -1
  114. package/dist/runtime-v2/internalization/dreamer-runner.js +4 -35
  115. package/dist/runtime-v2/internalization/dreamer-runner.js.map +1 -1
  116. package/dist/runtime-v2/internalization/evaluator-runner.d.ts +3 -54
  117. package/dist/runtime-v2/internalization/evaluator-runner.d.ts.map +1 -1
  118. package/dist/runtime-v2/internalization/evaluator-runner.js +18 -230
  119. package/dist/runtime-v2/internalization/evaluator-runner.js.map +1 -1
  120. package/dist/runtime-v2/internalization/formation-context.d.ts +208 -0
  121. package/dist/runtime-v2/internalization/formation-context.d.ts.map +1 -0
  122. package/dist/runtime-v2/internalization/formation-context.js +621 -0
  123. package/dist/runtime-v2/internalization/formation-context.js.map +1 -0
  124. package/dist/runtime-v2/internalization/index.d.ts +0 -2
  125. package/dist/runtime-v2/internalization/index.d.ts.map +1 -1
  126. package/dist/runtime-v2/internalization/index.js +0 -2
  127. package/dist/runtime-v2/internalization/index.js.map +1 -1
  128. package/dist/runtime-v2/internalization/philosopher-runner.d.ts.map +1 -1
  129. package/dist/runtime-v2/internalization/philosopher-runner.js +1 -25
  130. package/dist/runtime-v2/internalization/philosopher-runner.js.map +1 -1
  131. package/dist/runtime-v2/internalization/scribe-prompt-builder.d.ts +53 -1
  132. package/dist/runtime-v2/internalization/scribe-prompt-builder.d.ts.map +1 -1
  133. package/dist/runtime-v2/internalization/scribe-prompt-builder.js +65 -3
  134. package/dist/runtime-v2/internalization/scribe-prompt-builder.js.map +1 -1
  135. package/dist/runtime-v2/internalization/scribe-runner.d.ts +17 -0
  136. package/dist/runtime-v2/internalization/scribe-runner.d.ts.map +1 -1
  137. package/dist/runtime-v2/internalization/scribe-runner.js +58 -40
  138. package/dist/runtime-v2/internalization/scribe-runner.js.map +1 -1
  139. package/dist/runtime-v2/internalization/split-diagnostician-runner.d.ts.map +1 -1
  140. package/dist/runtime-v2/internalization/split-diagnostician-runner.js +13 -2
  141. package/dist/runtime-v2/internalization/split-diagnostician-runner.js.map +1 -1
  142. package/dist/runtime-v2/observer/__tests__/agent-scheduler.test.js +31 -21
  143. package/dist/runtime-v2/observer/__tests__/agent-scheduler.test.js.map +1 -1
  144. package/dist/runtime-v2/observer/agent-scheduler.d.ts +0 -5
  145. package/dist/runtime-v2/observer/agent-scheduler.d.ts.map +1 -1
  146. package/dist/runtime-v2/owner-decision/__tests__/owner-decision-view.test.d.ts +2 -0
  147. package/dist/runtime-v2/owner-decision/__tests__/owner-decision-view.test.d.ts.map +1 -0
  148. package/dist/runtime-v2/owner-decision/__tests__/owner-decision-view.test.js +559 -0
  149. package/dist/runtime-v2/owner-decision/__tests__/owner-decision-view.test.js.map +1 -0
  150. package/dist/runtime-v2/owner-decision/owner-decision-view-contract.d.ts +7868 -0
  151. package/dist/runtime-v2/owner-decision/owner-decision-view-contract.d.ts.map +1 -0
  152. package/dist/runtime-v2/owner-decision/owner-decision-view-contract.js +367 -0
  153. package/dist/runtime-v2/owner-decision/owner-decision-view-contract.js.map +1 -0
  154. package/dist/runtime-v2/owner-decision/owner-decision-view.d.ts +415 -0
  155. package/dist/runtime-v2/owner-decision/owner-decision-view.d.ts.map +1 -0
  156. package/dist/runtime-v2/owner-decision/owner-decision-view.js +856 -0
  157. package/dist/runtime-v2/owner-decision/owner-decision-view.js.map +1 -0
  158. package/dist/runtime-v2/owner-decision/semantic-selector.d.ts +72 -0
  159. package/dist/runtime-v2/owner-decision/semantic-selector.d.ts.map +1 -0
  160. package/dist/runtime-v2/owner-decision/semantic-selector.js +176 -0
  161. package/dist/runtime-v2/owner-decision/semantic-selector.js.map +1 -0
  162. package/dist/runtime-v2/runner/base-peer-runner.d.ts +0 -125
  163. package/dist/runtime-v2/runner/base-peer-runner.d.ts.map +1 -1
  164. package/dist/runtime-v2/runner/base-peer-runner.js +0 -323
  165. package/dist/runtime-v2/runner/base-peer-runner.js.map +1 -1
  166. package/dist/runtime-v2/runner/peer-runner-types.d.ts +0 -12
  167. package/dist/runtime-v2/runner/peer-runner-types.d.ts.map +1 -1
  168. package/dist/runtime-v2/signal-collector/types.d.ts +0 -12
  169. package/dist/runtime-v2/signal-collector/types.d.ts.map +1 -1
  170. package/dist/runtime-v2/signal-collector/types.js.map +1 -1
  171. package/dist/runtime-v2/types/event-types.d.ts +9 -0
  172. package/dist/runtime-v2/types/event-types.d.ts.map +1 -1
  173. package/dist/runtime-v2/types/event-types.js +12 -0
  174. package/dist/runtime-v2/types/event-types.js.map +1 -1
  175. package/dist/telemetry-event.d.ts +2 -2
  176. package/dist/telemetry-event.d.ts.map +1 -1
  177. package/dist/telemetry-event.js +7 -84
  178. package/dist/telemetry-event.js.map +1 -1
  179. package/package.json +1 -1
  180. package/dist/runtime-v2/feature-flags/__tests__/artifact-summary-redundancy-flag.test.d.ts +0 -15
  181. package/dist/runtime-v2/feature-flags/__tests__/artifact-summary-redundancy-flag.test.d.ts.map +0 -1
  182. package/dist/runtime-v2/feature-flags/__tests__/artifact-summary-redundancy-flag.test.js +0 -90
  183. package/dist/runtime-v2/feature-flags/__tests__/artifact-summary-redundancy-flag.test.js.map +0 -1
  184. package/dist/runtime-v2/feature-flags/__tests__/context-manifest-budget-flag.test.d.ts +0 -12
  185. package/dist/runtime-v2/feature-flags/__tests__/context-manifest-budget-flag.test.d.ts.map +0 -1
  186. package/dist/runtime-v2/feature-flags/__tests__/context-manifest-budget-flag.test.js +0 -117
  187. package/dist/runtime-v2/feature-flags/__tests__/context-manifest-budget-flag.test.js.map +0 -1
  188. package/dist/runtime-v2/feature-flags/__tests__/progressive-evaluator-flag.test.d.ts +0 -8
  189. package/dist/runtime-v2/feature-flags/__tests__/progressive-evaluator-flag.test.d.ts.map +0 -1
  190. package/dist/runtime-v2/feature-flags/__tests__/progressive-evaluator-flag.test.js +0 -56
  191. package/dist/runtime-v2/feature-flags/__tests__/progressive-evaluator-flag.test.js.map +0 -1
  192. package/dist/runtime-v2/internalization/__tests__/candidate-lineage.pri717.test.d.ts +0 -26
  193. package/dist/runtime-v2/internalization/__tests__/candidate-lineage.pri717.test.d.ts.map +0 -1
  194. package/dist/runtime-v2/internalization/__tests__/candidate-lineage.pri717.test.js +0 -420
  195. package/dist/runtime-v2/internalization/__tests__/candidate-lineage.pri717.test.js.map +0 -1
  196. package/dist/runtime-v2/internalization/__tests__/candidate-lineage.property.test.d.ts +0 -15
  197. package/dist/runtime-v2/internalization/__tests__/candidate-lineage.property.test.d.ts.map +0 -1
  198. package/dist/runtime-v2/internalization/__tests__/candidate-lineage.property.test.js +0 -306
  199. package/dist/runtime-v2/internalization/__tests__/candidate-lineage.property.test.js.map +0 -1
  200. package/dist/runtime-v2/internalization/__tests__/context-manifest.property.test.d.ts +0 -12
  201. package/dist/runtime-v2/internalization/__tests__/context-manifest.property.test.d.ts.map +0 -1
  202. package/dist/runtime-v2/internalization/__tests__/context-manifest.property.test.js +0 -176
  203. package/dist/runtime-v2/internalization/__tests__/context-manifest.property.test.js.map +0 -1
  204. package/dist/runtime-v2/internalization/__tests__/context-resolution.test.d.ts +0 -2
  205. package/dist/runtime-v2/internalization/__tests__/context-resolution.test.d.ts.map +0 -1
  206. package/dist/runtime-v2/internalization/__tests__/context-resolution.test.js +0 -377
  207. package/dist/runtime-v2/internalization/__tests__/context-resolution.test.js.map +0 -1
  208. package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-scope-regression.test.d.ts +0 -22
  209. package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-scope-regression.test.d.ts.map +0 -1
  210. package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-scope-regression.test.js +0 -92
  211. package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-scope-regression.test.js.map +0 -1
  212. package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-spike.test.d.ts +0 -2
  213. package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-spike.test.d.ts.map +0 -1
  214. package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-spike.test.js +0 -1039
  215. package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-spike.test.js.map +0 -1
  216. package/dist/runtime-v2/internalization/__tests__/progressive-evaluator-stage-isolation.property.test.d.ts +0 -13
  217. package/dist/runtime-v2/internalization/__tests__/progressive-evaluator-stage-isolation.property.test.d.ts.map +0 -1
  218. package/dist/runtime-v2/internalization/__tests__/progressive-evaluator-stage-isolation.property.test.js +0 -257
  219. package/dist/runtime-v2/internalization/__tests__/progressive-evaluator-stage-isolation.property.test.js.map +0 -1
  220. package/dist/runtime-v2/internalization/__tests__/progressive-evaluator.property.test.d.ts +0 -11
  221. package/dist/runtime-v2/internalization/__tests__/progressive-evaluator.property.test.d.ts.map +0 -1
  222. package/dist/runtime-v2/internalization/__tests__/progressive-evaluator.property.test.js +0 -154
  223. package/dist/runtime-v2/internalization/__tests__/progressive-evaluator.property.test.js.map +0 -1
  224. package/dist/runtime-v2/internalization/__tests__/prompt-budget-manager.property.test.d.ts +0 -12
  225. package/dist/runtime-v2/internalization/__tests__/prompt-budget-manager.property.test.d.ts.map +0 -1
  226. package/dist/runtime-v2/internalization/__tests__/prompt-budget-manager.property.test.js +0 -254
  227. package/dist/runtime-v2/internalization/__tests__/prompt-budget-manager.property.test.js.map +0 -1
  228. package/dist/runtime-v2/internalization/__tests__/resolve-injection.property.test.d.ts +0 -15
  229. package/dist/runtime-v2/internalization/__tests__/resolve-injection.property.test.d.ts.map +0 -1
  230. package/dist/runtime-v2/internalization/__tests__/resolve-injection.property.test.js +0 -150
  231. package/dist/runtime-v2/internalization/__tests__/resolve-injection.property.test.js.map +0 -1
  232. package/dist/runtime-v2/internalization/__tests__/shared-information-plane-runner.test.d.ts +0 -2
  233. package/dist/runtime-v2/internalization/__tests__/shared-information-plane-runner.test.d.ts.map +0 -1
  234. package/dist/runtime-v2/internalization/__tests__/shared-information-plane-runner.test.js +0 -773
  235. package/dist/runtime-v2/internalization/__tests__/shared-information-plane-runner.test.js.map +0 -1
  236. package/dist/runtime-v2/internalization/__tests__/summary-chain-flow.property.test.d.ts +0 -22
  237. package/dist/runtime-v2/internalization/__tests__/summary-chain-flow.property.test.d.ts.map +0 -1
  238. package/dist/runtime-v2/internalization/__tests__/summary-chain-flow.property.test.js +0 -280
  239. package/dist/runtime-v2/internalization/__tests__/summary-chain-flow.property.test.js.map +0 -1
  240. package/dist/runtime-v2/internalization/__tests__/summary-envelope-writer.property.test.d.ts +0 -25
  241. package/dist/runtime-v2/internalization/__tests__/summary-envelope-writer.property.test.d.ts.map +0 -1
  242. package/dist/runtime-v2/internalization/__tests__/summary-envelope-writer.property.test.js +0 -413
  243. package/dist/runtime-v2/internalization/__tests__/summary-envelope-writer.property.test.js.map +0 -1
  244. package/dist/runtime-v2/internalization/attach-summary-envelope.d.ts +0 -60
  245. package/dist/runtime-v2/internalization/attach-summary-envelope.d.ts.map +0 -1
  246. package/dist/runtime-v2/internalization/attach-summary-envelope.js +0 -126
  247. package/dist/runtime-v2/internalization/attach-summary-envelope.js.map +0 -1
  248. package/dist/runtime-v2/internalization/candidate-lineage.d.ts +0 -185
  249. package/dist/runtime-v2/internalization/candidate-lineage.d.ts.map +0 -1
  250. package/dist/runtime-v2/internalization/candidate-lineage.js +0 -357
  251. package/dist/runtime-v2/internalization/candidate-lineage.js.map +0 -1
  252. package/dist/runtime-v2/internalization/context-manifest.d.ts +0 -117
  253. package/dist/runtime-v2/internalization/context-manifest.d.ts.map +0 -1
  254. package/dist/runtime-v2/internalization/context-manifest.js +0 -156
  255. package/dist/runtime-v2/internalization/context-manifest.js.map +0 -1
  256. package/dist/runtime-v2/internalization/context-manifests.d.ts +0 -148
  257. package/dist/runtime-v2/internalization/context-manifests.d.ts.map +0 -1
  258. package/dist/runtime-v2/internalization/context-manifests.js +0 -323
  259. package/dist/runtime-v2/internalization/context-manifests.js.map +0 -1
  260. package/dist/runtime-v2/internalization/context-resolution.d.ts +0 -189
  261. package/dist/runtime-v2/internalization/context-resolution.d.ts.map +0 -1
  262. package/dist/runtime-v2/internalization/context-resolution.js +0 -317
  263. package/dist/runtime-v2/internalization/context-resolution.js.map +0 -1
  264. package/dist/runtime-v2/internalization/progressive-evaluator.d.ts +0 -115
  265. package/dist/runtime-v2/internalization/progressive-evaluator.d.ts.map +0 -1
  266. package/dist/runtime-v2/internalization/progressive-evaluator.js +0 -248
  267. package/dist/runtime-v2/internalization/progressive-evaluator.js.map +0 -1
  268. package/dist/runtime-v2/internalization/prompt-budget-manager.d.ts +0 -90
  269. package/dist/runtime-v2/internalization/prompt-budget-manager.d.ts.map +0 -1
  270. package/dist/runtime-v2/internalization/prompt-budget-manager.js +0 -149
  271. package/dist/runtime-v2/internalization/prompt-budget-manager.js.map +0 -1
  272. package/dist/runtime-v2/internalization/resolve-injection.d.ts +0 -62
  273. package/dist/runtime-v2/internalization/resolve-injection.d.ts.map +0 -1
  274. package/dist/runtime-v2/internalization/resolve-injection.js +0 -78
  275. package/dist/runtime-v2/internalization/resolve-injection.js.map +0 -1
  276. package/dist/runtime-v2/internalization/summary-field-reader.d.ts +0 -38
  277. package/dist/runtime-v2/internalization/summary-field-reader.d.ts.map +0 -1
  278. package/dist/runtime-v2/internalization/summary-field-reader.js +0 -108
  279. package/dist/runtime-v2/internalization/summary-field-reader.js.map +0 -1
  280. package/dist/runtime-v2/observer/__tests__/empathy-observer.real-e2e.test.d.ts +0 -2
  281. package/dist/runtime-v2/observer/__tests__/empathy-observer.real-e2e.test.d.ts.map +0 -1
  282. package/dist/runtime-v2/observer/__tests__/empathy-observer.real-e2e.test.js +0 -74
  283. package/dist/runtime-v2/observer/__tests__/empathy-observer.real-e2e.test.js.map +0 -1
  284. package/dist/runtime-v2/observer/__tests__/empathy-observer.test.d.ts +0 -2
  285. package/dist/runtime-v2/observer/__tests__/empathy-observer.test.d.ts.map +0 -1
  286. package/dist/runtime-v2/observer/__tests__/empathy-observer.test.js +0 -85
  287. package/dist/runtime-v2/observer/__tests__/empathy-observer.test.js.map +0 -1
  288. package/dist/runtime-v2/observer/empathy-observer.d.ts +0 -41
  289. package/dist/runtime-v2/observer/empathy-observer.d.ts.map +0 -1
  290. package/dist/runtime-v2/observer/empathy-observer.js +0 -104
  291. package/dist/runtime-v2/observer/empathy-observer.js.map +0 -1
@@ -0,0 +1,428 @@
1
+ /**
2
+ * PRI-838 / PRI-839 — formation context resolver unit tests.
3
+ *
4
+ * Covers the three cases the ticket names explicitly:
5
+ * Case 1 dreamer + diagnosis both present → full context
6
+ * Case 2 dreamer present, evidence missing → DEGRADE, never fail
7
+ * Case 3 legacy artifact → compatible
8
+ * plus the bound contract (Phase 2) and the never-throws guarantee.
9
+ */
10
+ import { describe, expect, it, vi } from 'vitest';
11
+ import { MemoryPIArtifactStore } from '../pi-artifact-store.js';
12
+ import { FORMATION_CANDIDATE_LIMIT, FORMATION_CONTEXT_VERSION, FORMATION_DIAGNOSIS_EVIDENCE_LIMIT, FORMATION_FIELD_MAX_CHARS, FORMATION_TOTAL_MAX_CHARS, projectDreamerProposals, resolveFormationContext, summarizeCandidateDifferences, } from '../formation-context.js';
13
+ // ── Fixtures ────────────────────────────────────────────────────────────────
14
+ const DREAMER_ART_ID = 'pi-art-dreamer-1';
15
+ const DIAG_ART_ID = 'pi-art-diag-router-1';
16
+ const DREAMER_TASK_ID = 'dreamer-task-1';
17
+ const DIAG_TASK_ID = 'diag-router-task-1';
18
+ function makeArtifact(params) {
19
+ return {
20
+ artifactId: params.artifactId,
21
+ artifactKind: 'principle',
22
+ sourceTaskId: params.sourceTaskId,
23
+ lineageArtifactIds: [...(params.lineageArtifactIds ?? [])],
24
+ validationStatus: 'pending',
25
+ contentJson: typeof params.content === 'string' ? params.content : JSON.stringify(params.content),
26
+ createdAt: '2026-09-18T00:00:00.000Z',
27
+ updatedAt: '2026-09-18T00:00:00.000Z',
28
+ };
29
+ }
30
+ function dreamerContent(overrides = {}) {
31
+ return {
32
+ valid: true,
33
+ taskId: DREAMER_TASK_ID,
34
+ candidates: [
35
+ {
36
+ candidateIndex: 0,
37
+ badDecision: 'agent wrote without validating the parent path',
38
+ betterDecision: 'resolve and validate the parent path before writing',
39
+ rationale: 'unvalidated parents allow traversal',
40
+ confidence: 0.4,
41
+ riskLevel: 'high',
42
+ strategicPerspective: 'defensive',
43
+ },
44
+ {
45
+ candidateIndex: 1,
46
+ badDecision: 'agent ignored the contract file',
47
+ betterDecision: 'read the contract before acting',
48
+ rationale: 'guessing contracts produces silent drift',
49
+ confidence: 0.9,
50
+ riskLevel: 'low',
51
+ strategicPerspective: 'evidence-first',
52
+ },
53
+ ],
54
+ sourcePainId: 'pain-1',
55
+ contextRefs: ['pi-art-pain-1'],
56
+ generatedAt: '2026-09-18T00:00:00.000Z',
57
+ ...overrides,
58
+ };
59
+ }
60
+ function routerDiagnosisContent() {
61
+ return {
62
+ valid: true,
63
+ diagnosisId: 'diag-1',
64
+ summary: 'contract guessed from examples',
65
+ rootCause: 'Assumption: the agent inferred a configuration contract from example files',
66
+ violatedPrinciples: [
67
+ { principleId: 'T-03', title: 'Evidence first', rationale: 'contracts must be read, not guessed' },
68
+ ],
69
+ evidence: [
70
+ { sourceRef: 'trajectory://session-1/turn-4', note: 'agent wrote a config without reading the contract' },
71
+ ],
72
+ recommendations: [
73
+ { kind: 'principle', description: 'read the authoritative contract before mutating config' },
74
+ ],
75
+ confidence: 0.8,
76
+ };
77
+ }
78
+ async function makeHarness(params) {
79
+ const store = new MemoryPIArtifactStore();
80
+ for (const artifact of params.artifacts) {
81
+ await store.upsertArtifact(artifact);
82
+ }
83
+ const events = [];
84
+ const tasks = new Map(Object.entries(params.tasks ?? {}));
85
+ if (params.storeThrows) {
86
+ vi.spyOn(store, 'getArtifactById').mockRejectedValue(new Error('storage_unavailable'));
87
+ }
88
+ return {
89
+ store,
90
+ events,
91
+ tasks,
92
+ resolve: (dreamerArtifactId) => resolveFormationContext({
93
+ sourceDreamerArtifactId: dreamerArtifactId,
94
+ artifactStore: store,
95
+ lookupTask: async (id) => tasks.get(id) ?? null,
96
+ emitEvent: (eventName, taskId, payload) => events.push({ eventName, taskId, payload }),
97
+ taskId: 'scribe-task-1',
98
+ }),
99
+ };
100
+ }
101
+ /** Dreamer task whose direct predecessor is the diag_router stage. */
102
+ const DREAMER_TASK_WITH_ROUTER = {
103
+ taskKind: 'dreamer',
104
+ status: 'succeeded',
105
+ dependencyTaskIds: [DIAG_TASK_ID],
106
+ };
107
+ // ── Case 1: normal ──────────────────────────────────────────────────────────
108
+ describe('PRI-838 Case 1 — dreamer + diagnosis both resolvable', () => {
109
+ it('resolves the full bounded formation context', async () => {
110
+ const harness = await makeHarness({
111
+ artifacts: [
112
+ makeArtifact({ artifactId: DREAMER_ART_ID, sourceTaskId: DREAMER_TASK_ID, content: dreamerContent(), lineageArtifactIds: [DIAG_ART_ID] }),
113
+ makeArtifact({ artifactId: DIAG_ART_ID, sourceTaskId: DIAG_TASK_ID, content: routerDiagnosisContent() }),
114
+ ],
115
+ tasks: { [DREAMER_TASK_ID]: DREAMER_TASK_WITH_ROUTER, [DIAG_TASK_ID]: { taskKind: 'diag_router', status: 'succeeded', dependencyTaskIds: [] } },
116
+ });
117
+ const context = await harness.resolve(DREAMER_ART_ID);
118
+ expect(context).toBeDefined();
119
+ expect(context?.version).toBe(FORMATION_CONTEXT_VERSION);
120
+ // Dreamer: ALL candidates survive — this is the DC-1/DC-3 fix.
121
+ expect(context?.dreamerProposals).toHaveLength(2);
122
+ expect(context?.dreamerProposals.map((c) => c.candidateIndex)).toEqual([1, 0]); // confidence DESC
123
+ expect(context?.dreamerProposals.map((c) => c.priorityRank)).toEqual([1, 2]);
124
+ expect(context?.dreamerContextRefs).toEqual(['pi-art-pain-1']);
125
+ // Diagnosis: root cause + evidence + violated principles.
126
+ expect(context?.sourceDiagnosis?.stage).toBe('diag_router');
127
+ expect(context?.sourceDiagnosis?.rootCause).toContain('Assumption:');
128
+ expect(context?.sourceDiagnosis?.evidence).toHaveLength(1);
129
+ expect(context?.sourceDiagnosis?.violatedPrinciples[0]?.principleId).toBe('T-03');
130
+ expect(context?.sourceDiagnosis?.recommendations[0]).toContain('[principle]');
131
+ // Provenance: ids + lineage preserved.
132
+ expect(context?.provenance.sourceDreamerArtifactId).toBe(DREAMER_ART_ID);
133
+ expect(context?.provenance.sourceDiagnosisArtifactId).toBe(DIAG_ART_ID);
134
+ expect(context?.provenance.sourcePainId).toBe('pain-1');
135
+ expect(context?.provenance.lineageArtifactIds).toEqual([DIAG_ART_ID]);
136
+ expect(context?.truncationNotes).toEqual([]);
137
+ expect(harness.events.at(-1)?.eventName).toBe('formation_context_resolved');
138
+ });
139
+ it('prefers diag_router over the earlier diagnostic stages', async () => {
140
+ const distillerArtId = 'pi-art-diag-distiller-1';
141
+ const harness = await makeHarness({
142
+ artifacts: [
143
+ makeArtifact({ artifactId: DREAMER_ART_ID, sourceTaskId: DREAMER_TASK_ID, content: dreamerContent() }),
144
+ makeArtifact({ artifactId: 'pi-art-diag-distiller-1', sourceTaskId: 'diag-distiller-task-1', content: routerDiagnosisContent() }),
145
+ makeArtifact({ artifactId: DIAG_ART_ID, sourceTaskId: DIAG_TASK_ID, content: routerDiagnosisContent() }),
146
+ ],
147
+ tasks: {
148
+ [DREAMER_TASK_ID]: { taskKind: 'dreamer', status: 'succeeded', dependencyTaskIds: ['diag-distiller-task-1', DIAG_TASK_ID] },
149
+ 'diag-distiller-task-1': { taskKind: 'diag_distiller', status: 'succeeded', dependencyTaskIds: [] },
150
+ [DIAG_TASK_ID]: { taskKind: 'diag_router', status: 'succeeded', dependencyTaskIds: [] },
151
+ },
152
+ });
153
+ const context = await harness.resolve(DREAMER_ART_ID);
154
+ expect(context?.sourceDiagnosis?.stage).toBe('diag_router');
155
+ expect(context?.sourceDiagnosis?.artifactId).toBe(DIAG_ART_ID);
156
+ void distillerArtId;
157
+ });
158
+ it('is deterministic — identical input yields identical output', async () => {
159
+ const build = async () => makeHarness({
160
+ artifacts: [
161
+ makeArtifact({ artifactId: DREAMER_ART_ID, sourceTaskId: DREAMER_TASK_ID, content: dreamerContent() }),
162
+ makeArtifact({ artifactId: DIAG_ART_ID, sourceTaskId: DIAG_TASK_ID, content: routerDiagnosisContent() }),
163
+ ],
164
+ tasks: { [DREAMER_TASK_ID]: DREAMER_TASK_WITH_ROUTER, [DIAG_TASK_ID]: { taskKind: 'diag_router', status: 'succeeded', dependencyTaskIds: [] } },
165
+ });
166
+ const first = await (await build()).resolve(DREAMER_ART_ID);
167
+ const second = await (await build()).resolve(DREAMER_ART_ID);
168
+ expect(JSON.stringify(first)).toBe(JSON.stringify(second));
169
+ });
170
+ });
171
+ // ── Case 2: degrade, never fail ─────────────────────────────────────────────
172
+ describe('PRI-838 Case 2 — evidence missing degrades without failing', () => {
173
+ it('dreamer resolvable but no diagnostic predecessor → context without diagnosis', async () => {
174
+ const harness = await makeHarness({
175
+ artifacts: [makeArtifact({ artifactId: DREAMER_ART_ID, sourceTaskId: DREAMER_TASK_ID, content: dreamerContent() })],
176
+ tasks: { [DREAMER_TASK_ID]: { taskKind: 'dreamer', status: 'succeeded', dependencyTaskIds: [] } },
177
+ });
178
+ const context = await harness.resolve(DREAMER_ART_ID);
179
+ // Degraded, NOT undefined: the proposals are still worth carrying.
180
+ expect(context).toBeDefined();
181
+ expect(context?.sourceDiagnosis).toBeUndefined();
182
+ expect(context?.dreamerProposals).toHaveLength(2);
183
+ expect(context?.truncationNotes.some((note) => note.includes('diagnosis omitted'))).toBe(true);
184
+ });
185
+ it('diagnostic predecessor exists but is not succeeded → diagnosis omitted, no throw', async () => {
186
+ const harness = await makeHarness({
187
+ artifacts: [makeArtifact({ artifactId: DREAMER_ART_ID, sourceTaskId: DREAMER_TASK_ID, content: dreamerContent() })],
188
+ tasks: {
189
+ [DREAMER_TASK_ID]: DREAMER_TASK_WITH_ROUTER,
190
+ [DIAG_TASK_ID]: { taskKind: 'diag_router', status: 'running', dependencyTaskIds: [] },
191
+ },
192
+ });
193
+ const context = await harness.resolve(DREAMER_ART_ID);
194
+ expect(context).toBeDefined();
195
+ expect(context?.sourceDiagnosis).toBeUndefined();
196
+ });
197
+ it('dreamer artifact missing → undefined plus an observable event (never throws)', async () => {
198
+ const harness = await makeHarness({ artifacts: [] });
199
+ const context = await harness.resolve('pi-art-does-not-exist');
200
+ expect(context).toBeUndefined();
201
+ expect(harness.events.some((event) => event.eventName === 'formation_dreamer_artifact_missing')).toBe(true);
202
+ });
203
+ it('no dreamer id at all → undefined plus an observable event', async () => {
204
+ const harness = await makeHarness({ artifacts: [] });
205
+ const context = await harness.resolve(undefined);
206
+ expect(context).toBeUndefined();
207
+ expect(harness.events[0]?.eventName).toBe('formation_context_skipped');
208
+ expect(harness.events[0]?.payload.reason).toBe('dreamer_artifact_id_missing');
209
+ });
210
+ it('artifact store failure is contained — undefined + event, never a throw', async () => {
211
+ const harness = await makeHarness({
212
+ artifacts: [makeArtifact({ artifactId: DREAMER_ART_ID, sourceTaskId: DREAMER_TASK_ID, content: dreamerContent() })],
213
+ storeThrows: true,
214
+ });
215
+ const context = await harness.resolve(DREAMER_ART_ID);
216
+ expect(context).toBeUndefined();
217
+ expect(harness.events.at(-1)?.eventName).toBe('formation_context_failed');
218
+ });
219
+ it('dreamer contentJson is not JSON → undefined plus an observable event', async () => {
220
+ const harness = await makeHarness({
221
+ artifacts: [makeArtifact({ artifactId: DREAMER_ART_ID, sourceTaskId: DREAMER_TASK_ID, content: '{not json' })],
222
+ });
223
+ const context = await harness.resolve(DREAMER_ART_ID);
224
+ expect(context).toBeUndefined();
225
+ expect(harness.events.at(-1)?.eventName).toBe('formation_context_invalid');
226
+ });
227
+ });
228
+ // ── Case 3: legacy compatibility ────────────────────────────────────────────
229
+ describe('PRI-838 Case 3 — legacy artifacts stay compatible', () => {
230
+ it('legacy dreamer artifact without optional signals resolves with explicit nulls', async () => {
231
+ const harness = await makeHarness({
232
+ artifacts: [
233
+ makeArtifact({
234
+ artifactId: DREAMER_ART_ID,
235
+ sourceTaskId: DREAMER_TASK_ID,
236
+ content: {
237
+ // pre-PRI-508 shape: only the three required fields, no contextRefs,
238
+ // no sourcePainId, no confidence/riskLevel/strategicPerspective.
239
+ candidates: [{ badDecision: 'bad', betterDecision: 'better', rationale: 'why' }],
240
+ },
241
+ }),
242
+ ],
243
+ tasks: { [DREAMER_TASK_ID]: { taskKind: 'dreamer', status: 'succeeded', dependencyTaskIds: [] } },
244
+ });
245
+ const context = await harness.resolve(DREAMER_ART_ID);
246
+ expect(context?.dreamerProposals).toHaveLength(1);
247
+ const [candidate] = context?.dreamerProposals ?? [];
248
+ expect(candidate?.badDecision).toBe('bad');
249
+ expect(candidate?.confidence).toBeNull();
250
+ expect(candidate?.riskLevel).toBeNull();
251
+ expect(candidate?.strategicPerspective).toBeNull();
252
+ expect(context?.dreamerContextRefs).toEqual([]);
253
+ expect(context?.provenance.sourcePainId).toBeNull();
254
+ });
255
+ it('legacy dreamer task with no enqueued dependencies → still resolves the proposals', async () => {
256
+ const harness = await makeHarness({
257
+ artifacts: [makeArtifact({ artifactId: DREAMER_ART_ID, sourceTaskId: DREAMER_TASK_ID, content: dreamerContent() })],
258
+ // task row absent entirely (pre-PRI-508 chains)
259
+ });
260
+ const context = await harness.resolve(DREAMER_ART_ID);
261
+ expect(context?.dreamerProposals).toHaveLength(2);
262
+ expect(context?.truncationNotes.some((note) => note.includes('not resolvable'))).toBe(true);
263
+ });
264
+ });
265
+ // ── Phase 2: the bound contract ─────────────────────────────────────────────
266
+ describe('PRI-838 Phase 2 — bounded projection', () => {
267
+ it('candidates beyond FORMATION_CANDIDATE_LIMIT are dropped and counted', () => {
268
+ const candidates = Array.from({ length: FORMATION_CANDIDATE_LIMIT + 3 }, (_, index) => ({
269
+ candidateIndex: index,
270
+ badDecision: `bad-${index}`,
271
+ betterDecision: `better-${index}`,
272
+ rationale: `why-${index}`,
273
+ confidence: 0.5,
274
+ riskLevel: 'low',
275
+ strategicPerspective: `lens-${index}`,
276
+ }));
277
+ const projection = projectDreamerProposals({ candidates });
278
+ expect(projection.candidates).toHaveLength(FORMATION_CANDIDATE_LIMIT);
279
+ expect(projection.omittedCandidateCount).toBe(3);
280
+ expect(projection.truncationNotes.some((note) => note.includes('truncated'))).toBe(true);
281
+ });
282
+ it('per-field values are clamped, so one huge field cannot blow the budget', () => {
283
+ const projection = projectDreamerProposals({
284
+ candidates: [{
285
+ badDecision: 'x'.repeat(FORMATION_FIELD_MAX_CHARS * 5),
286
+ betterDecision: 'b',
287
+ rationale: 'r',
288
+ }],
289
+ });
290
+ const [candidate] = projection.candidates;
291
+ expect(candidate?.badDecision.length).toBe(FORMATION_FIELD_MAX_CHARS);
292
+ expect(candidate?.badDecision.endsWith('…')).toBe(true);
293
+ });
294
+ it('a malformed candidate is skipped without discarding the valid ones', () => {
295
+ const projection = projectDreamerProposals({
296
+ candidates: [
297
+ { badDecision: 'bad-0', betterDecision: 'better-0', rationale: 'why-0' },
298
+ { betterDecision: 'b', rationale: 'r' }, // missing badDecision
299
+ 'not-a-record',
300
+ { badDecision: 'bad-3', betterDecision: 'better-3', rationale: 'why-3' },
301
+ ],
302
+ });
303
+ expect(projection.candidates.map((candidate) => candidate.candidateIndex)).toEqual([0, 3]);
304
+ expect(projection.truncationNotes.some((note) => note.includes('malformed'))).toBe(true);
305
+ });
306
+ it('bounds the diagnosis evidence array', () => {
307
+ const evidence = Array.from({ length: FORMATION_DIAGNOSIS_EVIDENCE_LIMIT + 4 }, (_, index) => ({
308
+ sourceRef: `ref-${index}`,
309
+ note: `note-${index}`,
310
+ }));
311
+ const harness = makeHarness({
312
+ artifacts: [
313
+ makeArtifact({ artifactId: DREAMER_ART_ID, sourceTaskId: DREAMER_TASK_ID, content: dreamerContent() }),
314
+ makeArtifact({ artifactId: DIAG_ART_ID, sourceTaskId: DIAG_TASK_ID, content: { ...routerDiagnosisContent(), evidence } }),
315
+ ],
316
+ tasks: { [DREAMER_TASK_ID]: DREAMER_TASK_WITH_ROUTER, [DIAG_TASK_ID]: { taskKind: 'diag_router', status: 'succeeded', dependencyTaskIds: [] } },
317
+ });
318
+ return harness.then(async (h) => {
319
+ const context = await h.resolve(DREAMER_ART_ID);
320
+ expect(context?.sourceDiagnosis?.evidence).toHaveLength(FORMATION_DIAGNOSIS_EVIDENCE_LIMIT);
321
+ expect(context?.sourceDiagnosis?.omittedFields.some((field) => field.startsWith('evidence['))).toBe(true);
322
+ });
323
+ });
324
+ it('the serialized block never exceeds the documented cap and says what it lost', async () => {
325
+ // A diagnosis whose bulk cannot fit alongside a full proposal set.
326
+ const evidence = Array.from({ length: FORMATION_DIAGNOSIS_EVIDENCE_LIMIT }, (_, index) => ({
327
+ sourceRef: `ref-${index}`.padEnd(FORMATION_FIELD_MAX_CHARS, 'r'),
328
+ note: `note-${index}`.padEnd(FORMATION_FIELD_MAX_CHARS, 'n'),
329
+ }));
330
+ const harness = await makeHarness({
331
+ artifacts: [
332
+ makeArtifact({ artifactId: DREAMER_ART_ID, sourceTaskId: DREAMER_TASK_ID, content: dreamerContent() }),
333
+ makeArtifact({
334
+ artifactId: DIAG_ART_ID,
335
+ sourceTaskId: DIAG_TASK_ID,
336
+ content: { ...routerDiagnosisContent(), summary: 's'.padEnd(FORMATION_FIELD_MAX_CHARS, 's'), evidence },
337
+ }),
338
+ ],
339
+ tasks: { [DREAMER_TASK_ID]: DREAMER_TASK_WITH_ROUTER, [DIAG_TASK_ID]: { taskKind: 'diag_router', status: 'succeeded', dependencyTaskIds: [] } },
340
+ });
341
+ const context = await harness.resolve(DREAMER_ART_ID);
342
+ expect(context).toBeDefined();
343
+ expect(JSON.stringify(context).length).toBeLessThanOrEqual(FORMATION_TOTAL_MAX_CHARS);
344
+ expect(context?.truncationNotes.length).toBeGreaterThan(0);
345
+ });
346
+ it('holds the cap even when every field is maximal and the drops themselves add notes', async () => {
347
+ // Regression for review finding PRI-1756-P2: `trimSection` records one note
348
+ // per dropped item, and those notes are part of the serialized object. A
349
+ // single lineage truncation therefore could not bring the block back under
350
+ // the cap — five maximal candidates plus a maximal diagnosis produced 8550
351
+ // chars against an 8000 budget, leaving the prompt boundary unbounded.
352
+ const max = FORMATION_FIELD_MAX_CHARS;
353
+ const maximalCandidates = Array.from({ length: FORMATION_CANDIDATE_LIMIT }, (_, index) => ({
354
+ candidateIndex: index,
355
+ badDecision: 'B'.padEnd(max, 'b'),
356
+ betterDecision: 'D'.padEnd(max, 'd'),
357
+ rationale: 'R'.padEnd(max, 'r'),
358
+ confidence: 0.9,
359
+ riskLevel: 'medium',
360
+ strategicPerspective: 'S'.padEnd(max, 's'),
361
+ }));
362
+ const harness = await makeHarness({
363
+ artifacts: [
364
+ makeArtifact({
365
+ artifactId: DREAMER_ART_ID,
366
+ sourceTaskId: DREAMER_TASK_ID,
367
+ content: { ...dreamerContent(), candidates: maximalCandidates },
368
+ // Far more lineage ids than the last-resort limit.
369
+ lineageArtifactIds: Array.from({ length: 64 }, (_, i) => `lineage-artifact-id-${String(i).padStart(3, '0')}`),
370
+ }),
371
+ makeArtifact({
372
+ artifactId: DIAG_ART_ID,
373
+ sourceTaskId: DIAG_TASK_ID,
374
+ content: {
375
+ ...routerDiagnosisContent(),
376
+ summary: 'M'.padEnd(max, 'm'),
377
+ rootCause: 'C'.padEnd(max, 'c'),
378
+ violatedPrinciples: Array.from({ length: 8 }, (_, i) => ({
379
+ principleId: `P-${i}`,
380
+ title: 'T'.padEnd(max, 't'),
381
+ rationale: 'V'.padEnd(max, 'v'),
382
+ })),
383
+ evidence: Array.from({ length: 8 }, (_, i) => ({
384
+ sourceRef: `ref-${i}`.padEnd(max, 'e'),
385
+ note: 'N'.padEnd(max, 'n'),
386
+ })),
387
+ recommendations: Array.from({ length: 5 }, (_, i) => ({
388
+ kind: 'principle',
389
+ description: `R${i}`.padEnd(max - 8, 'x'),
390
+ })),
391
+ },
392
+ }),
393
+ ],
394
+ tasks: {
395
+ [DREAMER_TASK_ID]: DREAMER_TASK_WITH_ROUTER,
396
+ [DIAG_TASK_ID]: { taskKind: 'diag_router', status: 'succeeded', dependencyTaskIds: [] },
397
+ },
398
+ });
399
+ const context = await harness.resolve(DREAMER_ART_ID);
400
+ expect(context).toBeDefined();
401
+ // The cap is a hard prompt-boundary contract, not a best-effort target.
402
+ const serialized = JSON.stringify(context);
403
+ expect(serialized.length).toBeLessThanOrEqual(FORMATION_TOTAL_MAX_CHARS);
404
+ // Degradation must stay observable (rc-9) — never silent.
405
+ expect(context?.truncationNotes.length).toBeGreaterThan(0);
406
+ // And it must be VALID JSON, never a mid-value slice.
407
+ expect(() => JSON.parse(serialized)).not.toThrow();
408
+ });
409
+ });
410
+ // ── Difference summary (PRI-839) ────────────────────────────────────────────
411
+ describe('PRI-839 summarizeCandidateDifferences', () => {
412
+ it('states the count, risk spread and distinct better-decisions', () => {
413
+ const { candidates } = projectDreamerProposals(dreamerContent());
414
+ const summary = summarizeCandidateDifferences(candidates);
415
+ expect(summary).toContain('2 mutually distinct proposals');
416
+ expect(summary).toContain('risk spread');
417
+ expect(summary).toContain('distinct better-decisions: 2');
418
+ expect(summary).toContain('dreamer confidence range: 0.4..0.9');
419
+ });
420
+ it('says so explicitly when there was only one proposal', () => {
421
+ expect(summarizeCandidateDifferences([])).toContain('No dreamer proposals');
422
+ const { candidates } = projectDreamerProposals({
423
+ candidates: [{ badDecision: 'b', betterDecision: 'bb', rationale: 'r' }],
424
+ });
425
+ expect(summarizeCandidateDifferences(candidates)).toContain('no alternatives were proposed');
426
+ });
427
+ });
428
+ //# sourceMappingURL=formation-context.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formation-context.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/internalization/__tests__/formation-context.test.ts"],"names":[],"mappings":"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"}
@@ -80,4 +80,101 @@ describe('ScribePromptBuilder (PRI-109)', () => {
80
80
  expect(instruction).not.toContain('from philosopher artifact if available');
81
81
  });
82
82
  });
83
+ // ── PRI-838: formation evidence in the scribe prompt contract ───────────────
84
+ describe('ScribePromptBuilder — PRI-838 formation evidence', () => {
85
+ const builder = new ScribePromptBuilder();
86
+ const baseInput = {
87
+ taskId: 'scribe-838',
88
+ contextHash: 'ctx-838',
89
+ sourcePhilosopherArtifactId: 'pi-art-phil-838',
90
+ sourceDreamerArtifactId: 'pi-art-dreamer-838',
91
+ philosopherArtifact: { taskId: 'phil-838', thesis: 'T', sourceDreamerArtifactId: 'pi-art-dreamer-838' },
92
+ };
93
+ const formationContext = {
94
+ version: 'formation-context.v1',
95
+ dreamerProposals: [
96
+ {
97
+ candidateIndex: 1,
98
+ priorityRank: 1,
99
+ badDecision: 'agent guessed the contract from examples',
100
+ betterDecision: 'read the authoritative contract first',
101
+ rationale: 'guessing drifts silently',
102
+ confidence: 0.9,
103
+ riskLevel: 'low',
104
+ strategicPerspective: 'evidence-first',
105
+ },
106
+ ],
107
+ dreamerContextRefs: ['pi-art-pain-838'],
108
+ sourceDiagnosis: {
109
+ artifactId: 'pi-art-diag-838',
110
+ taskId: 'diag-router-838',
111
+ stage: 'diag_router',
112
+ rootCause: 'Assumption: contract inferred from examples',
113
+ summary: 'contract guessed',
114
+ violatedPrinciples: [{ principleId: 'T-03', title: 'Evidence first', rationale: 'read, do not guess' }],
115
+ evidence: [{ sourceRef: 'trajectory://s-1/t-4', note: 'wrote config without reading contract' }],
116
+ recommendations: ['[principle] read the authoritative contract'],
117
+ confidence: 0.8,
118
+ omittedFields: [],
119
+ },
120
+ provenance: {
121
+ sourceDreamerArtifactId: 'pi-art-dreamer-838',
122
+ sourceDreamerTaskId: 'dreamer-838',
123
+ sourceDiagnosisArtifactId: 'pi-art-diag-838',
124
+ sourceDiagnosisTaskId: 'diag-router-838',
125
+ sourcePainId: 'pain-838',
126
+ lineageArtifactIds: ['pi-art-diag-838'],
127
+ },
128
+ truncationNotes: [],
129
+ };
130
+ it('promptContractVersion was bumped to v4', () => {
131
+ expect(SCRIBE_PROMPT_CONTRACT_VERSION).toBe('scribe-output-v1.prompt.v4');
132
+ });
133
+ it('carries formationContext in the payload when provided', () => {
134
+ const { promptInput, message } = builder.buildPrompt({ ...baseInput, formationContext });
135
+ expect(promptInput.formationContext).toBeDefined();
136
+ const parsed = JSON.parse(message);
137
+ expect(parsed.formationContext?.dreamerProposals).toHaveLength(1);
138
+ expect(parsed.formationContext?.sourceDiagnosis?.rootCause).toContain('Assumption:');
139
+ expect(parsed.formationContext?.provenance.sourcePainId).toBe('pain-838');
140
+ });
141
+ it('appends the formation-evidence addendum to the system prompt when provided', () => {
142
+ const { systemPrompt } = builder.buildPrompt({ ...baseInput, formationContext });
143
+ expect(systemPrompt).toContain('ADDITIONAL CONTEXT (formation evidence recovery)');
144
+ expect(systemPrompt).toContain('formationContext.sourceDiagnosis');
145
+ expect(systemPrompt).toContain('formationContext.dreamerProposals');
146
+ expect(systemPrompt).toContain('formationContext.provenance');
147
+ });
148
+ it('reuses the frozen PRI-815 candidate-priority contract verbatim', () => {
149
+ const { systemPrompt } = builder.buildPrompt({ ...baseInput, formationContext });
150
+ expect(systemPrompt).toContain('CANDIDATE PRIORITY (must obey):');
151
+ expect(systemPrompt).toContain('source intent (sourceDiagnosis) > critique conclusions (philosopherArtifact) > proposals as candidate evidence (dreamerProposals).');
152
+ expect(systemPrompt).toContain('do NOT revive a proposal the critique explicitly rejected');
153
+ expect(systemPrompt).toContain('Do NOT merge mutually exclusive proposals into one principle.');
154
+ expect(systemPrompt).toContain('Longer output is not better');
155
+ });
156
+ it('omits formationContext entirely when absent (pre-PRI-838 compat)', () => {
157
+ const { promptInput, message, systemPrompt } = builder.buildPrompt(baseInput);
158
+ expect(Object.hasOwn(promptInput, 'formationContext')).toBe(false);
159
+ const parsed = JSON.parse(message);
160
+ expect(Object.hasOwn(parsed, 'formationContext')).toBe(false);
161
+ expect(systemPrompt).not.toContain('formation evidence recovery');
162
+ });
163
+ it('degradation instruction is present for the absent-diagnosis case', () => {
164
+ // Case 2/3: the model must be told to degrade rather than invent the intent.
165
+ const { systemPrompt } = builder.buildPrompt({ ...baseInput, formationContext });
166
+ expect(systemPrompt).toContain('the source intent is UNAVAILABLE');
167
+ });
168
+ it('buildScribeProtocolInstruction gates the addendum on formationEvidence', () => {
169
+ expect(buildScribeProtocolInstruction({ formationEvidence: true })).toContain('CANDIDATE PRIORITY');
170
+ expect(buildScribeProtocolInstruction({ formationEvidence: false })).not.toContain('CANDIDATE PRIORITY');
171
+ expect(buildScribeProtocolInstruction()).not.toContain('CANDIDATE PRIORITY');
172
+ });
173
+ it('does not leak formationEvidence into the core axiom options', () => {
174
+ // Regression guard: the option must be destructured out, not forwarded.
175
+ const withFlag = buildScribeProtocolInstruction({ formationEvidence: true, coreGrounding: true });
176
+ const withoutFlag = buildScribeProtocolInstruction({ coreGrounding: true });
177
+ expect(withFlag.startsWith(withoutFlag)).toBe(true);
178
+ });
179
+ });
83
180
  //# sourceMappingURL=scribe-prompt-builder.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scribe-prompt-builder.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/internalization/__tests__/scribe-prompt-builder.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,8BAA8B,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAC;AAElI,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,MAAM,OAAO,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAE1C,MAAM,YAAY,GAAG;QACnB,MAAM,EAAE,YAAY;QACpB,WAAW,EAAE,SAAS;QACtB,2BAA2B,EAAE,iBAAiB;QAC9C,mBAAmB,EAAE;YACnB,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,aAAa;YACrB,kBAAkB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE;SAChF;KACF,CAAC;IAEF,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,WAAW,GAAG,8BAA8B,EAAE,CAAC;QACrD,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,2FAA2F,CAAC,CAAC;IAC7H,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,WAAW,GAAG,8BAA8B,EAAE,CAAC;QACrD,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,WAAW,GAAG,8BAA8B,EAAE,CAAC;QACrD,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,WAAW,GAAG,8BAA8B,EAAE,CAAC;QACrD,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,iDAAiD,CAAC,CAAC;QACjF,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAC3D,MAAM,mBAAmB,GAAG,8BAA8B,EAAE,CAAC;QAC7D,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAC1D,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAC1D,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9C,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAC1D,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACtD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,8EAA8E;IAE9E,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;YACnD,GAAG,YAAY;YACf,uBAAuB,EAAE,oBAAoB;SAC9C,CAAC,CAAC;QACH,MAAM,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACvE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAyC,CAAC;QAC3E,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kFAAkF,EAAE,GAAG,EAAE;QAC1F,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACnE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAyC,CAAC;QAC3E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qFAAqF,EAAE,GAAG,EAAE;QAC7F,MAAM,WAAW,GAAG,8BAA8B,EAAE,CAAC;QACrD,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,2DAA2D,CAAC,CAAC;QAC3F,uEAAuE;QACvE,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,wCAAwC,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"scribe-prompt-builder.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/internalization/__tests__/scribe-prompt-builder.test.ts"],"names":[],"mappings":"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"}