project-tiny-context-harness 0.8.16 → 0.11.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 (535) hide show
  1. package/README.md +119 -41
  2. package/assets/README.md +184 -55
  3. package/assets/README.zh-CN.md +114 -40
  4. package/assets/agents/AGENTS_CORE.md +2 -2
  5. package/assets/context_templates/context.toml +6 -1
  6. package/assets/context_templates/screen-contract.md +16 -0
  7. package/assets/runtime/windows-job-supervisor/formal_process_supervisor_native_helpers.cs +301 -0
  8. package/assets/runtime/windows-job-supervisor/formal_process_supervisor_native_run.cs +197 -0
  9. package/assets/runtime/windows-job-supervisor/formal_process_supervisor_native_types.cs +215 -0
  10. package/assets/runtime/windows-job-supervisor/windows_job_process_supervisor.ps1 +117 -0
  11. package/assets/skills/context_development_engineer/SKILL.md +16 -30
  12. package/assets/skills/context_development_engineer/references/engineering-design-reasoning.md +93 -0
  13. package/assets/skills/context_surface_contract/SKILL.md +13 -2
  14. package/assets/skills/context_uiux_design/SKILL.md +7 -3
  15. package/assets/skills/context_uiux_design/references/task-uiux-analysis.md +82 -0
  16. package/assets/skills/design-resource-authoring/SKILL.md +18 -9
  17. package/assets/skills/design-resource-authoring/references/authority-delta-assessment.md +52 -0
  18. package/assets/skills/design-resource-authoring/references/downstream-handoff.md +22 -6
  19. package/assets/skills/design-resource-authoring/references/formal-selected-web-app-handoff.md +26 -8
  20. package/assets/skills/design-resource-authoring/references/implementation-feasibility.md +111 -0
  21. package/assets/skills/design-resource-authoring/references/open-design-provider.md +45 -7
  22. package/assets/skills/design-resource-authoring/references/recovery-and-writeback.md +7 -1
  23. package/assets/skills/design-resource-authoring/references/resource-selection.md +115 -3
  24. package/assets/skills/design-system-authoring/SKILL.md +23 -17
  25. package/assets/skills/design-system-authoring/references/authority-adoption.md +19 -9
  26. package/assets/skills/design-system-authoring/references/open-design-design-system-provider.md +4 -0
  27. package/assets/skills/long-task-workflow/SKILL.md +6 -6
  28. package/assets/skills/long-task-workflow/references/authority-lifecycle.md +10 -4
  29. package/assets/skills/long-task-workflow/references/contract-authoring.md +5 -5
  30. package/assets/skills/long-task-workflow/references/evidence-design.md +14 -3
  31. package/assets/skills/long-task-workflow/references/source-authoring.md +11 -8
  32. package/assets/tools/context_rules.json +53 -0
  33. package/assets/tools/validate_context.py +302 -77
  34. package/dist/cli.js +2 -1
  35. package/dist/commands/context-create.d.ts +1 -0
  36. package/dist/commands/context-create.js +90 -0
  37. package/dist/commands/context-inspect.d.ts +1 -0
  38. package/dist/commands/context-inspect.js +98 -0
  39. package/dist/commands/context-move.d.ts +1 -0
  40. package/dist/commands/context-move.js +78 -0
  41. package/dist/commands/context-register.d.ts +1 -0
  42. package/dist/commands/context-register.js +110 -0
  43. package/dist/commands/context-transaction.d.ts +1 -0
  44. package/dist/commands/context-transaction.js +84 -0
  45. package/dist/commands/context.d.ts +1 -0
  46. package/dist/commands/context.js +36 -0
  47. package/dist/commands/design-authority-delta.d.ts +1 -0
  48. package/dist/commands/design-authority-delta.js +53 -0
  49. package/dist/commands/design-authority.d.ts +1 -0
  50. package/dist/commands/design-authority.js +104 -0
  51. package/dist/commands/design-resource.js +17 -3
  52. package/dist/commands/doctor.d.ts +1 -1
  53. package/dist/commands/doctor.js +61 -3
  54. package/dist/commands/index.js +19 -2
  55. package/dist/commands/long-task-authoring.js +20 -2
  56. package/dist/commands/long-task-workdir.d.ts +2 -0
  57. package/dist/commands/long-task-workdir.js +23 -0
  58. package/dist/commands/long-task.js +75 -6
  59. package/dist/commands/route.d.ts +15 -0
  60. package/dist/commands/route.js +142 -0
  61. package/dist/index.d.ts +3 -13
  62. package/dist/index.js +3 -12
  63. package/dist/lib/cli-exit.d.ts +14 -0
  64. package/dist/lib/cli-exit.js +19 -0
  65. package/dist/lib/context-catalog/catalog-default-footprint.d.ts +3 -0
  66. package/dist/lib/context-catalog/catalog-default-footprint.js +53 -0
  67. package/dist/lib/context-catalog/catalog-diagnostics.d.ts +9 -0
  68. package/dist/lib/context-catalog/catalog-diagnostics.js +34 -0
  69. package/dist/lib/context-catalog/catalog-discovery.d.ts +7 -0
  70. package/dist/lib/context-catalog/catalog-discovery.js +81 -0
  71. package/dist/lib/context-catalog/catalog-load.d.ts +8 -0
  72. package/dist/lib/context-catalog/catalog-load.js +187 -0
  73. package/dist/lib/context-catalog/catalog-path-validation.d.ts +7 -0
  74. package/dist/lib/context-catalog/catalog-path-validation.js +62 -0
  75. package/dist/lib/context-catalog/catalog-paths.d.ts +11 -0
  76. package/dist/lib/context-catalog/catalog-paths.js +41 -0
  77. package/dist/lib/context-catalog/catalog-portable-contract.d.ts +15 -0
  78. package/dist/lib/context-catalog/catalog-portable-contract.js +68 -0
  79. package/dist/lib/context-catalog/catalog-staged-path-safety.d.ts +1 -0
  80. package/dist/lib/context-catalog/catalog-staged-path-safety.js +36 -0
  81. package/dist/lib/context-catalog/catalog-types.d.ts +40 -0
  82. package/dist/lib/context-catalog/catalog-types.js +1 -0
  83. package/dist/lib/context-catalog/catalog-validation.d.ts +9 -0
  84. package/dist/lib/context-catalog/catalog-validation.js +148 -0
  85. package/dist/lib/context-create/context-create-path.d.ts +2 -0
  86. package/dist/lib/context-create/context-create-path.js +30 -0
  87. package/dist/lib/context-create/context-create-template.d.ts +2 -0
  88. package/dist/lib/context-create/context-create-template.js +95 -0
  89. package/dist/lib/context-create/context-create-types.d.ts +28 -0
  90. package/dist/lib/context-create/context-create-types.js +1 -0
  91. package/dist/lib/context-create/context-create-write.d.ts +1 -0
  92. package/dist/lib/context-create/context-create-write.js +85 -0
  93. package/dist/lib/context-create/context-create.d.ts +2 -0
  94. package/dist/lib/context-create/context-create.js +84 -0
  95. package/dist/lib/context-default-footprint.d.ts +2 -3
  96. package/dist/lib/context-default-footprint.js +49 -57
  97. package/dist/lib/context-doctor/context-doctor-types.d.ts +16 -0
  98. package/dist/lib/context-doctor/context-doctor-types.js +15 -0
  99. package/dist/lib/context-doctor/context-doctor.d.ts +2 -0
  100. package/dist/lib/context-doctor/context-doctor.js +130 -0
  101. package/dist/lib/context-graph-snapshot.d.ts +5 -0
  102. package/dist/lib/context-graph-snapshot.js +46 -25
  103. package/dist/lib/context-inspect/context-inspect-projection.d.ts +9 -0
  104. package/dist/lib/context-inspect/context-inspect-projection.js +49 -0
  105. package/dist/lib/context-inspect/context-inspect-render.d.ts +2 -0
  106. package/dist/lib/context-inspect/context-inspect-render.js +29 -0
  107. package/dist/lib/context-inspect/context-inspect-types.d.ts +43 -0
  108. package/dist/lib/context-inspect/context-inspect-types.js +1 -0
  109. package/dist/lib/context-inspect/context-inspect.d.ts +2 -0
  110. package/dist/lib/context-inspect/context-inspect.js +104 -0
  111. package/dist/lib/context-manifest-schema.d.ts +1 -1
  112. package/dist/lib/context-manifest-schema.js +4 -20
  113. package/dist/lib/context-markdown/context-markdown-analysis.d.ts +15 -0
  114. package/dist/lib/context-markdown/context-markdown-analysis.js +245 -0
  115. package/dist/lib/context-markdown/context-markdown-extract.d.ts +7 -0
  116. package/dist/lib/context-markdown/context-markdown-extract.js +114 -0
  117. package/dist/lib/context-markdown/context-markdown-types.d.ts +57 -0
  118. package/dist/lib/context-markdown/context-markdown-types.js +1 -0
  119. package/dist/lib/context-move/context-move-input.d.ts +8 -0
  120. package/dist/lib/context-move/context-move-input.js +17 -0
  121. package/dist/lib/context-move/context-move-literal-scan.d.ts +20 -0
  122. package/dist/lib/context-move/context-move-literal-scan.js +213 -0
  123. package/dist/lib/context-move/context-move-live-validation.d.ts +3 -0
  124. package/dist/lib/context-move/context-move-live-validation.js +56 -0
  125. package/dist/lib/context-move/context-move-markdown-plan.d.ts +22 -0
  126. package/dist/lib/context-move/context-move-markdown-plan.js +39 -0
  127. package/dist/lib/context-move/context-move-projection.d.ts +3 -0
  128. package/dist/lib/context-move/context-move-projection.js +11 -0
  129. package/dist/lib/context-move/context-move-reference-validation.d.ts +11 -0
  130. package/dist/lib/context-move/context-move-reference-validation.js +64 -0
  131. package/dist/lib/context-move/context-move-render.d.ts +2 -0
  132. package/dist/lib/context-move/context-move-render.js +24 -0
  133. package/dist/lib/context-move/context-move-support.d.ts +10 -0
  134. package/dist/lib/context-move/context-move-support.js +88 -0
  135. package/dist/lib/context-move/context-move-transaction-plan.d.ts +24 -0
  136. package/dist/lib/context-move/context-move-transaction-plan.js +108 -0
  137. package/dist/lib/context-move/context-move-types.d.ts +74 -0
  138. package/dist/lib/context-move/context-move-types.js +1 -0
  139. package/dist/lib/context-move/context-move.d.ts +8 -0
  140. package/dist/lib/context-move/context-move.js +180 -0
  141. package/dist/lib/context-mutation/manifest-lossless-patch.d.ts +28 -0
  142. package/dist/lib/context-mutation/manifest-lossless-patch.js +208 -0
  143. package/dist/lib/context-mutation/markdown-link-patch.d.ts +34 -0
  144. package/dist/lib/context-mutation/markdown-link-patch.js +143 -0
  145. package/dist/lib/context-mutation/markdown-link-spans.d.ts +10 -0
  146. package/dist/lib/context-mutation/markdown-link-spans.js +179 -0
  147. package/dist/lib/context-mutation/mutation-cas.d.ts +13 -0
  148. package/dist/lib/context-mutation/mutation-cas.js +365 -0
  149. package/dist/lib/context-mutation/mutation-command-support.d.ts +12 -0
  150. package/dist/lib/context-mutation/mutation-command-support.js +57 -0
  151. package/dist/lib/context-mutation/mutation-commit.d.ts +12 -0
  152. package/dist/lib/context-mutation/mutation-commit.js +89 -0
  153. package/dist/lib/context-mutation/mutation-directories.d.ts +5 -0
  154. package/dist/lib/context-mutation/mutation-directories.js +56 -0
  155. package/dist/lib/context-mutation/mutation-file-state.d.ts +14 -0
  156. package/dist/lib/context-mutation/mutation-file-state.js +137 -0
  157. package/dist/lib/context-mutation/mutation-journal-file-validation.d.ts +1 -0
  158. package/dist/lib/context-mutation/mutation-journal-file-validation.js +106 -0
  159. package/dist/lib/context-mutation/mutation-journal-io.d.ts +5 -0
  160. package/dist/lib/context-mutation/mutation-journal-io.js +55 -0
  161. package/dist/lib/context-mutation/mutation-journal-storage.d.ts +18 -0
  162. package/dist/lib/context-mutation/mutation-journal-storage.js +283 -0
  163. package/dist/lib/context-mutation/mutation-journal-validation-support.d.ts +16 -0
  164. package/dist/lib/context-mutation/mutation-journal-validation-support.js +140 -0
  165. package/dist/lib/context-mutation/mutation-journal-validation.d.ts +3 -0
  166. package/dist/lib/context-mutation/mutation-journal-validation.js +177 -0
  167. package/dist/lib/context-mutation/mutation-journal.d.ts +8 -0
  168. package/dist/lib/context-mutation/mutation-journal.js +111 -0
  169. package/dist/lib/context-mutation/mutation-live-validation.d.ts +3 -0
  170. package/dist/lib/context-mutation/mutation-live-validation.js +51 -0
  171. package/dist/lib/context-mutation/mutation-long-task-guard.d.ts +6 -0
  172. package/dist/lib/context-mutation/mutation-long-task-guard.js +57 -0
  173. package/dist/lib/context-mutation/mutation-recovery.d.ts +4 -0
  174. package/dist/lib/context-mutation/mutation-recovery.js +189 -0
  175. package/dist/lib/context-mutation/mutation-staged-fs.d.ts +5 -0
  176. package/dist/lib/context-mutation/mutation-staged-fs.js +56 -0
  177. package/dist/lib/context-mutation/mutation-types.d.ts +103 -0
  178. package/dist/lib/context-mutation/mutation-types.js +1 -0
  179. package/dist/lib/context-register/context-register-input.d.ts +11 -0
  180. package/dist/lib/context-register/context-register-input.js +43 -0
  181. package/dist/lib/context-register/context-register-render.d.ts +2 -0
  182. package/dist/lib/context-register/context-register-render.js +21 -0
  183. package/dist/lib/context-register/context-register-support.d.ts +6 -0
  184. package/dist/lib/context-register/context-register-support.js +46 -0
  185. package/dist/lib/context-register/context-register-types.d.ts +46 -0
  186. package/dist/lib/context-register/context-register-types.js +1 -0
  187. package/dist/lib/context-register/context-register.d.ts +8 -0
  188. package/dist/lib/context-register/context-register.js +155 -0
  189. package/dist/lib/context-router/context-route-budget.d.ts +15 -0
  190. package/dist/lib/context-router/context-route-budget.js +14 -0
  191. package/dist/lib/context-router/context-route-candidates.d.ts +15 -0
  192. package/dist/lib/context-router/context-route-candidates.js +112 -0
  193. package/dist/lib/context-router/context-route-order.d.ts +6 -0
  194. package/dist/lib/context-router/context-route-order.js +53 -0
  195. package/dist/lib/context-router/context-route-paths.d.ts +16 -0
  196. package/dist/lib/context-router/context-route-paths.js +109 -0
  197. package/dist/lib/context-router/context-route-render.d.ts +2 -0
  198. package/dist/lib/context-router/context-route-render.js +32 -0
  199. package/dist/lib/context-router/context-route-scan.d.ts +18 -0
  200. package/dist/lib/context-router/context-route-scan.js +156 -0
  201. package/dist/lib/context-router/context-route-selection.d.ts +16 -0
  202. package/dist/lib/context-router/context-route-selection.js +72 -0
  203. package/dist/lib/context-router/context-route-terms.d.ts +13 -0
  204. package/dist/lib/context-router/context-route-terms.js +202 -0
  205. package/dist/lib/context-router/context-route-types.d.ts +101 -0
  206. package/dist/lib/context-router/context-route-types.js +1 -0
  207. package/dist/lib/context-router/context-route.d.ts +2 -0
  208. package/dist/lib/context-router/context-route.js +127 -0
  209. package/dist/lib/context-units-migration.d.ts +13 -0
  210. package/dist/lib/context-units-migration.js +217 -0
  211. package/dist/lib/design-authority-binding.d.ts +7 -0
  212. package/dist/lib/design-authority-binding.js +96 -0
  213. package/dist/lib/design-authority-closure.d.ts +3 -0
  214. package/dist/lib/design-authority-closure.js +201 -0
  215. package/dist/lib/design-authority-delta-codec-primitives.d.ts +10 -0
  216. package/dist/lib/design-authority-delta-codec-primitives.js +58 -0
  217. package/dist/lib/design-authority-delta-codec.d.ts +2 -0
  218. package/dist/lib/design-authority-delta-codec.js +193 -0
  219. package/dist/lib/design-authority-delta-types.d.ts +65 -0
  220. package/dist/lib/design-authority-delta-types.js +6 -0
  221. package/dist/lib/design-authority-delta-validation.d.ts +2 -0
  222. package/dist/lib/design-authority-delta-validation.js +16 -0
  223. package/dist/lib/design-authority-digest.d.ts +8 -0
  224. package/dist/lib/design-authority-digest.js +36 -0
  225. package/dist/lib/design-authority-files.d.ts +9 -0
  226. package/dist/lib/design-authority-files.js +62 -0
  227. package/dist/lib/design-authority-format.d.ts +2 -0
  228. package/dist/lib/design-authority-format.js +93 -0
  229. package/dist/lib/design-authority-links.d.ts +10 -0
  230. package/dist/lib/design-authority-links.js +137 -0
  231. package/dist/lib/design-authority-manifest.d.ts +4 -0
  232. package/dist/lib/design-authority-manifest.js +144 -0
  233. package/dist/lib/design-authority-tokens.d.ts +9 -0
  234. package/dist/lib/design-authority-tokens.js +45 -0
  235. package/dist/lib/design-authority-types.d.ts +80 -0
  236. package/dist/lib/design-authority-types.js +23 -0
  237. package/dist/lib/design-md-tool-adapter.d.ts +9 -0
  238. package/dist/lib/design-md-tool-adapter.js +152 -0
  239. package/dist/lib/design-md-tool-normalization.d.ts +7 -0
  240. package/dist/lib/design-md-tool-normalization.js +78 -0
  241. package/dist/lib/design-md-tool-types.d.ts +99 -0
  242. package/dist/lib/design-md-tool-types.js +8 -0
  243. package/dist/lib/design-resource-handoff-bundle.js +5 -0
  244. package/dist/lib/design-resource-handoff-input-types.d.ts +1 -1
  245. package/dist/lib/design-resource-handoff-manifest-projection.js +4 -0
  246. package/dist/lib/design-resource-handoff-set-integrity.js +1 -0
  247. package/dist/lib/design-resource-handoff-shape.js +18 -2
  248. package/dist/lib/design-resource-handoff-types.d.ts +8 -0
  249. package/dist/lib/design-resource-handoff-validation.js +24 -0
  250. package/dist/lib/design-resource-implementation-feasibility-model.d.ts +35 -0
  251. package/dist/lib/design-resource-implementation-feasibility-model.js +62 -0
  252. package/dist/lib/design-resource-implementation-feasibility-shape-sections.d.ts +43 -0
  253. package/dist/lib/design-resource-implementation-feasibility-shape-sections.js +142 -0
  254. package/dist/lib/design-resource-implementation-feasibility-shape.d.ts +4 -0
  255. package/dist/lib/design-resource-implementation-feasibility-shape.js +154 -0
  256. package/dist/lib/design-resource-implementation-feasibility-source-decision-projection.d.ts +24 -0
  257. package/dist/lib/design-resource-implementation-feasibility-source-decision-projection.js +106 -0
  258. package/dist/lib/design-resource-implementation-feasibility-source-decision.d.ts +21 -0
  259. package/dist/lib/design-resource-implementation-feasibility-source-decision.js +75 -0
  260. package/dist/lib/design-resource-implementation-feasibility-types.d.ts +135 -0
  261. package/dist/lib/design-resource-implementation-feasibility-types.js +37 -0
  262. package/dist/lib/design-resource-implementation-feasibility-validation-cells.d.ts +5 -0
  263. package/dist/lib/design-resource-implementation-feasibility-validation-cells.js +125 -0
  264. package/dist/lib/design-resource-implementation-feasibility-validation-document.d.ts +4 -0
  265. package/dist/lib/design-resource-implementation-feasibility-validation-document.js +167 -0
  266. package/dist/lib/design-resource-implementation-feasibility-validation-facts.d.ts +3 -0
  267. package/dist/lib/design-resource-implementation-feasibility-validation-facts.js +76 -0
  268. package/dist/lib/design-resource-implementation-feasibility-validation-realizations.d.ts +8 -0
  269. package/dist/lib/design-resource-implementation-feasibility-validation-realizations.js +76 -0
  270. package/dist/lib/design-resource-implementation-feasibility-validation-support.d.ts +10 -0
  271. package/dist/lib/design-resource-implementation-feasibility-validation-support.js +75 -0
  272. package/dist/lib/design-resource-implementation-feasibility-validation.d.ts +3 -0
  273. package/dist/lib/design-resource-implementation-feasibility-validation.js +138 -0
  274. package/dist/lib/design-resource-recovery-current.js +22 -0
  275. package/dist/lib/design-resource-recovery-shape.js +64 -7
  276. package/dist/lib/design-resource-recovery-types.d.ts +4 -1
  277. package/dist/lib/design-resource-symbolic-fact-shape.js +9 -1
  278. package/dist/lib/design-resource-symbolic-fact-types.d.ts +8 -0
  279. package/dist/lib/design-resource-symbolic-fact-validation.js +25 -0
  280. package/dist/lib/doctor.d.ts +2 -1
  281. package/dist/lib/doctor.js +29 -1
  282. package/dist/lib/fs.js +1 -1
  283. package/dist/lib/long-task-acceptance-reachability-claims.d.ts +2 -0
  284. package/dist/lib/long-task-acceptance-reachability-claims.js +279 -0
  285. package/dist/lib/long-task-acceptance-reachability-design.d.ts +2 -0
  286. package/dist/lib/long-task-acceptance-reachability-design.js +96 -0
  287. package/dist/lib/long-task-acceptance-reachability-external.d.ts +9 -0
  288. package/dist/lib/long-task-acceptance-reachability-external.js +123 -0
  289. package/dist/lib/long-task-acceptance-reachability-helpers.d.ts +64 -0
  290. package/dist/lib/long-task-acceptance-reachability-helpers.js +473 -0
  291. package/dist/lib/long-task-acceptance-reachability-semantic.d.ts +2 -0
  292. package/dist/lib/long-task-acceptance-reachability-semantic.js +122 -0
  293. package/dist/lib/long-task-acceptance-reachability-types.d.ts +91 -0
  294. package/dist/lib/long-task-acceptance-reachability-types.js +1 -0
  295. package/dist/lib/long-task-acceptance-reachability.d.ts +4 -0
  296. package/dist/lib/long-task-acceptance-reachability.js +115 -0
  297. package/dist/lib/long-task-activation-validation.d.ts +6 -0
  298. package/dist/lib/long-task-activation-validation.js +96 -23
  299. package/dist/lib/long-task-active-authority-lock-context.d.ts +4 -0
  300. package/dist/lib/long-task-active-authority-lock-context.js +29 -0
  301. package/dist/lib/long-task-applicability-identity.d.ts +25 -0
  302. package/dist/lib/long-task-applicability-identity.js +60 -0
  303. package/dist/lib/long-task-authoring-preflight-diagnostics.js +8 -0
  304. package/dist/lib/long-task-authoring-preflight-types.d.ts +2 -0
  305. package/dist/lib/long-task-authoring-preflight-types.js +9 -0
  306. package/dist/lib/long-task-authoring-preflight.js +18 -2
  307. package/dist/lib/long-task-authority-material-diff.js +4 -0
  308. package/dist/lib/long-task-authority-materials.js +19 -0
  309. package/dist/lib/long-task-authority-policy.d.ts +3 -0
  310. package/dist/lib/long-task-authority-policy.js +3 -0
  311. package/dist/lib/long-task-authority-revision-details.js +2 -1
  312. package/dist/lib/long-task-authority-types.d.ts +2 -0
  313. package/dist/lib/long-task-authority.js +2 -0
  314. package/dist/lib/long-task-check-runner.js +3 -296
  315. package/dist/lib/long-task-check-shape.js +6 -1
  316. package/dist/lib/long-task-claim-definitions.js +1 -3
  317. package/dist/lib/long-task-claim-semantic-proof-floor.d.ts +3 -0
  318. package/dist/lib/long-task-claim-semantic-proof-floor.js +78 -0
  319. package/dist/lib/long-task-claims.d.ts +0 -18
  320. package/dist/lib/long-task-claims.js +15 -14
  321. package/dist/lib/long-task-command-process.d.ts +9 -0
  322. package/dist/lib/long-task-command-process.js +178 -0
  323. package/dist/lib/long-task-compact-authoring.js +3 -0
  324. package/dist/lib/long-task-compact-projections.js +10 -0
  325. package/dist/lib/long-task-complete-delivery-evidence-types.d.ts +38 -0
  326. package/dist/lib/long-task-complete-delivery-evidence-types.js +1 -0
  327. package/dist/lib/long-task-completion-types.d.ts +109 -0
  328. package/dist/lib/long-task-completion-types.js +1 -0
  329. package/dist/lib/long-task-conformance-policy.d.ts +2 -1
  330. package/dist/lib/long-task-conformance-policy.js +11 -4
  331. package/dist/lib/long-task-context-authority-topology.js +6 -4
  332. package/dist/lib/long-task-contract-types.d.ts +52 -1
  333. package/dist/lib/long-task-counterfactual-sandbox.d.ts +7 -1
  334. package/dist/lib/long-task-counterfactual-sandbox.js +86 -6
  335. package/dist/lib/long-task-delivery-compiler-preflight.d.ts +24 -0
  336. package/dist/lib/long-task-delivery-compiler-preflight.js +32 -0
  337. package/dist/lib/long-task-delivery-compiler.d.ts +1 -0
  338. package/dist/lib/long-task-delivery-compiler.js +59 -44
  339. package/dist/lib/long-task-delivery-parser.d.ts +3 -0
  340. package/dist/lib/long-task-delivery-parser.js +26 -8
  341. package/dist/lib/long-task-delivery-types.d.ts +2 -0
  342. package/dist/lib/long-task-delivery-types.js +2 -0
  343. package/dist/lib/long-task-delivery-validation.d.ts +11 -3
  344. package/dist/lib/long-task-delivery-validation.js +23 -8
  345. package/dist/lib/long-task-design-feasibility-binding-owners.d.ts +6 -0
  346. package/dist/lib/long-task-design-feasibility-binding-owners.js +52 -0
  347. package/dist/lib/long-task-design-feasibility-binding.d.ts +14 -0
  348. package/dist/lib/long-task-design-feasibility-binding.js +114 -0
  349. package/dist/lib/long-task-design-feasibility-source-closure.d.ts +11 -0
  350. package/dist/lib/long-task-design-feasibility-source-closure.js +87 -0
  351. package/dist/lib/long-task-design-obligation.d.ts +50 -0
  352. package/dist/lib/long-task-design-obligation.js +99 -0
  353. package/dist/lib/long-task-design-resource-handoff.d.ts +5 -3
  354. package/dist/lib/long-task-design-resource-handoff.js +64 -4
  355. package/dist/lib/long-task-design-resource-method-binding.js +20 -2
  356. package/dist/lib/long-task-effective-external-takeover.d.ts +15 -0
  357. package/dist/lib/long-task-effective-external-takeover.js +109 -0
  358. package/dist/lib/long-task-effective-external-ui-takeover.d.ts +5 -0
  359. package/dist/lib/long-task-effective-external-ui-takeover.js +117 -0
  360. package/dist/lib/long-task-evidence-capability-codec.js +91 -0
  361. package/dist/lib/long-task-evidence-capability-runtime.js +62 -14
  362. package/dist/lib/long-task-evidence-capability-types.d.ts +3 -2
  363. package/dist/lib/long-task-evidence-v2.d.ts +6 -1
  364. package/dist/lib/long-task-evidence-v2.js +253 -170
  365. package/dist/lib/long-task-execution-observation.d.ts +7 -0
  366. package/dist/lib/long-task-execution-observation.js +21 -4
  367. package/dist/lib/long-task-expected-authority.d.ts +4 -0
  368. package/dist/lib/long-task-expected-authority.js +126 -0
  369. package/dist/lib/long-task-external-confirmation-artifacts.d.ts +9 -0
  370. package/dist/lib/long-task-external-confirmation-artifacts.js +138 -0
  371. package/dist/lib/long-task-external-confirmation-attestation.d.ts +20 -0
  372. package/dist/lib/long-task-external-confirmation-attestation.js +115 -0
  373. package/dist/lib/long-task-external-confirmation-challenge.d.ts +23 -0
  374. package/dist/lib/long-task-external-confirmation-challenge.js +164 -0
  375. package/dist/lib/long-task-external-confirmation-context.d.ts +14 -0
  376. package/dist/lib/long-task-external-confirmation-context.js +53 -0
  377. package/dist/lib/long-task-external-confirmation-evaluation.d.ts +11 -0
  378. package/dist/lib/long-task-external-confirmation-evaluation.js +454 -0
  379. package/dist/lib/long-task-external-confirmation-expected.d.ts +8 -0
  380. package/dist/lib/long-task-external-confirmation-expected.js +200 -0
  381. package/dist/lib/long-task-external-confirmation-identity.d.ts +10 -0
  382. package/dist/lib/long-task-external-confirmation-identity.js +77 -0
  383. package/dist/lib/long-task-external-confirmation-plan.d.ts +25 -0
  384. package/dist/lib/long-task-external-confirmation-plan.js +148 -0
  385. package/dist/lib/long-task-external-confirmation-preparation.d.ts +4 -0
  386. package/dist/lib/long-task-external-confirmation-preparation.js +100 -0
  387. package/dist/lib/long-task-external-confirmation-shape.d.ts +8 -0
  388. package/dist/lib/long-task-external-confirmation-shape.js +387 -0
  389. package/dist/lib/long-task-external-confirmation-state.d.ts +10 -0
  390. package/dist/lib/long-task-external-confirmation-state.js +109 -0
  391. package/dist/lib/long-task-external-confirmation-types.d.ts +195 -0
  392. package/dist/lib/long-task-external-confirmation-types.js +1 -0
  393. package/dist/lib/long-task-final-integrity.d.ts +2 -0
  394. package/dist/lib/long-task-final-integrity.js +21 -10
  395. package/dist/lib/long-task-final-v2.d.ts +7 -2
  396. package/dist/lib/long-task-final-v2.js +179 -55
  397. package/dist/lib/long-task-finalization-identity.d.ts +27 -0
  398. package/dist/lib/long-task-finalization-identity.js +58 -0
  399. package/dist/lib/long-task-finding-context.d.ts +1 -1
  400. package/dist/lib/long-task-finding-context.js +139 -13
  401. package/dist/lib/long-task-freshness.d.ts +27 -0
  402. package/dist/lib/long-task-freshness.js +129 -6
  403. package/dist/lib/long-task-git.js +3 -3
  404. package/dist/lib/long-task-material-input-closure.d.ts +3 -0
  405. package/dist/lib/long-task-material-input-closure.js +92 -0
  406. package/dist/lib/long-task-obligation-authority-resolution.d.ts +12 -0
  407. package/dist/lib/long-task-obligation-authority-resolution.js +57 -0
  408. package/dist/lib/long-task-obligation-semantic-identity.d.ts +16 -0
  409. package/dist/lib/long-task-obligation-semantic-identity.js +116 -0
  410. package/dist/lib/long-task-observation-authority.d.ts +11 -0
  411. package/dist/lib/long-task-observation-authority.js +137 -6
  412. package/dist/lib/long-task-process-table.d.ts +9 -0
  413. package/dist/lib/long-task-process-table.js +87 -0
  414. package/dist/lib/long-task-process-tree.d.ts +8 -0
  415. package/dist/lib/long-task-process-tree.js +108 -0
  416. package/dist/lib/long-task-proof-adequacy.d.ts +12 -0
  417. package/dist/lib/long-task-proof-adequacy.js +57 -0
  418. package/dist/lib/long-task-proof-capability-floor.d.ts +6 -0
  419. package/dist/lib/long-task-proof-capability-floor.js +137 -0
  420. package/dist/lib/long-task-protected-files.d.ts +1 -1
  421. package/dist/lib/long-task-protected-files.js +1 -1
  422. package/dist/lib/long-task-repair-frontier-checks.d.ts +8 -0
  423. package/dist/lib/long-task-repair-frontier-checks.js +93 -0
  424. package/dist/lib/long-task-repair-frontier-groups.d.ts +2 -0
  425. package/dist/lib/long-task-repair-frontier-groups.js +64 -0
  426. package/dist/lib/long-task-repair-frontier-utils.d.ts +6 -0
  427. package/dist/lib/long-task-repair-frontier-utils.js +27 -0
  428. package/dist/lib/long-task-repair-frontier.d.ts +14 -0
  429. package/dist/lib/long-task-repair-frontier.js +132 -0
  430. package/dist/lib/long-task-risk.d.ts +3 -2
  431. package/dist/lib/long-task-risk.js +73 -24
  432. package/dist/lib/long-task-root-shape.js +148 -8
  433. package/dist/lib/long-task-runner-freeze.d.ts +2 -1
  434. package/dist/lib/long-task-runner-freeze.js +23 -8
  435. package/dist/lib/long-task-runtime-types.d.ts +34 -40
  436. package/dist/lib/long-task-semantic-assurance-policy.js +2 -11
  437. package/dist/lib/long-task-semantic-contract-types.d.ts +2 -1
  438. package/dist/lib/long-task-semantic-drift-migration.js +48 -2
  439. package/dist/lib/long-task-semantic-fact-binding-types.d.ts +20 -0
  440. package/dist/lib/long-task-semantic-fact-closure.d.ts +5 -1
  441. package/dist/lib/long-task-semantic-fact-closure.js +33 -5
  442. package/dist/lib/long-task-semantic-fact-contract-closure.js +176 -1
  443. package/dist/lib/long-task-semantic-fact-contract-proofs.js +18 -1
  444. package/dist/lib/long-task-semantic-fact-input-closure.d.ts +16 -2
  445. package/dist/lib/long-task-semantic-fact-input-closure.js +138 -15
  446. package/dist/lib/long-task-semantic-fact-provenance-closure.js +1 -1
  447. package/dist/lib/long-task-semantic-fact-shape.d.ts +2 -1
  448. package/dist/lib/long-task-semantic-fact-shape.js +35 -1
  449. package/dist/lib/long-task-semantic-proof-adequacy.d.ts +2 -0
  450. package/dist/lib/long-task-semantic-proof-adequacy.js +19 -0
  451. package/dist/lib/long-task-semantic-proof-profile.d.ts +5 -0
  452. package/dist/lib/long-task-semantic-proof-profile.js +187 -0
  453. package/dist/lib/long-task-shape-primitives.d.ts +1 -1
  454. package/dist/lib/long-task-shape-primitives.js +5 -0
  455. package/dist/lib/long-task-source-anchors.d.ts +10 -0
  456. package/dist/lib/long-task-source-anchors.js +102 -0
  457. package/dist/lib/long-task-source-authority-types.d.ts +46 -0
  458. package/dist/lib/long-task-source-claim-validation.js +36 -0
  459. package/dist/lib/long-task-source-conservation-facts.d.ts +8 -0
  460. package/dist/lib/long-task-source-conservation-facts.js +57 -0
  461. package/dist/lib/long-task-source-conservation-types.d.ts +34 -0
  462. package/dist/lib/long-task-source-conservation-types.js +1 -0
  463. package/dist/lib/long-task-source-conservation.d.ts +7 -0
  464. package/dist/lib/long-task-source-conservation.js +110 -0
  465. package/dist/lib/long-task-source-fragments.d.ts +6 -0
  466. package/dist/lib/long-task-source-fragments.js +219 -0
  467. package/dist/lib/long-task-source-projection-resolution.d.ts +5 -0
  468. package/dist/lib/long-task-source-projection-resolution.js +57 -0
  469. package/dist/lib/long-task-source-projection-validation.d.ts +17 -0
  470. package/dist/lib/long-task-source-projection-validation.js +154 -0
  471. package/dist/lib/long-task-source-shape.js +14 -6
  472. package/dist/lib/long-task-source-supersession.d.ts +5 -0
  473. package/dist/lib/long-task-source-supersession.js +138 -0
  474. package/dist/lib/long-task-stage-policy.d.ts +7 -2
  475. package/dist/lib/long-task-stage-policy.js +67 -23
  476. package/dist/lib/long-task-state.d.ts +18 -4
  477. package/dist/lib/long-task-state.js +319 -33
  478. package/dist/lib/long-task-static-observation-freeze.js +4 -3
  479. package/dist/lib/long-task-status-projection.d.ts +3 -1
  480. package/dist/lib/long-task-status-projection.js +44 -13
  481. package/dist/lib/long-task-status-v2.d.ts +10 -6
  482. package/dist/lib/long-task-status-v2.js +70 -58
  483. package/dist/lib/long-task-target-policy.d.ts +8 -3
  484. package/dist/lib/long-task-target-policy.js +40 -9
  485. package/dist/lib/long-task-terminal-finalization.d.ts +12 -0
  486. package/dist/lib/long-task-terminal-finalization.js +190 -0
  487. package/dist/lib/long-task-ui-design-policy.js +15 -4
  488. package/dist/lib/long-task-ui-surface-policy.d.ts +2 -1
  489. package/dist/lib/long-task-ui-surface-policy.js +7 -4
  490. package/dist/lib/long-task-ui-surface-validation.d.ts +3 -1
  491. package/dist/lib/long-task-ui-surface-validation.js +2 -2
  492. package/dist/lib/long-task-verifier-counterfactuals.d.ts +11 -0
  493. package/dist/lib/long-task-verifier-counterfactuals.js +96 -0
  494. package/dist/lib/long-task-verifier-execution.d.ts +9 -0
  495. package/dist/lib/long-task-verifier-execution.js +67 -0
  496. package/dist/lib/long-task-verifier-identity.js +16 -5
  497. package/dist/lib/long-task-verifier-v2.js +52 -65
  498. package/dist/lib/long-task-windows-job-supervisor-helper.d.ts +1 -0
  499. package/dist/lib/long-task-windows-job-supervisor-helper.js +104 -0
  500. package/dist/lib/long-task-windows-job-supervisor-protocol.d.ts +28 -0
  501. package/dist/lib/long-task-windows-job-supervisor-protocol.js +124 -0
  502. package/dist/lib/long-task-windows-job-supervisor-result.d.ts +11 -0
  503. package/dist/lib/long-task-windows-job-supervisor-result.js +152 -0
  504. package/dist/lib/long-task-windows-job-supervisor.d.ts +2 -0
  505. package/dist/lib/long-task-windows-job-supervisor.js +126 -0
  506. package/dist/lib/long-task-workspace-scope.d.ts +1 -0
  507. package/dist/lib/long-task-workspace-scope.js +4 -1
  508. package/dist/lib/long-task-workspace.d.ts +1 -0
  509. package/dist/lib/long-task-workspace.js +10 -0
  510. package/dist/lib/migrations.js +43 -2
  511. package/dist/lib/repository-path-safety.d.ts +3 -0
  512. package/dist/lib/repository-path-safety.js +39 -3
  513. package/dist/lib/semantic-fact-input-shape.d.ts +7 -2
  514. package/dist/lib/semantic-fact-input-shape.js +25 -1
  515. package/dist/lib/semantic-fact-inventory-types.d.ts +8 -2
  516. package/dist/lib/semantic-fact-policy-census.d.ts +1 -1
  517. package/dist/lib/semantic-fact-policy-census.js +5 -2
  518. package/dist/lib/semantic-fact-policy.d.ts +1 -1
  519. package/dist/lib/semantic-fact-policy.js +2 -2
  520. package/dist/lib/semantic-fact-proof-shape.d.ts +1 -1
  521. package/dist/lib/semantic-fact-property-shape.d.ts +1 -1
  522. package/dist/lib/validators.d.ts +3 -0
  523. package/dist/lib/validators.js +45 -157
  524. package/dist/public-api-core.d.ts +12 -0
  525. package/dist/public-api-core.js +12 -0
  526. package/dist/public-api-long-task.d.ts +10 -0
  527. package/dist/public-api-long-task.js +10 -0
  528. package/dist/public-types.d.ts +6 -1
  529. package/dist/schemas/design-authority-delta-assessment-v1.schema.json +191 -0
  530. package/dist/schemas/long-task-delivery-v2/long-task-delivery-v2.schema.json +166 -2
  531. package/dist/schemas/long-task-external-confirmation-record-v1.schema.json +155 -0
  532. package/dist/schemas/long-task-external-confirmation-record-v2.schema.json +209 -0
  533. package/migrations/README.md +99 -0
  534. package/package.json +7 -5
  535. package/source-mappings.yaml +18 -0
@@ -2,8 +2,8 @@ import { copyFile, rm, stat } from "node:fs/promises";
2
2
  import { evaluatePopulation } from "./long-task-assertions-v2.js";
3
3
  import { collectCheckArtifacts, prepareAdmittedObservations, } from "./long-task-artifacts.js";
4
4
  import { executeCheckRunner } from "./long-task-check-runner.js";
5
- import { prepareExecutionObservationGroup } from "./long-task-execution-observation.js";
6
- import { createCounterfactualSandbox } from "./long-task-counterfactual-sandbox.js";
5
+ import { prepareCounterfactualExecutionObservationGroup } from "./long-task-execution-observation.js";
6
+ import { counterfactualSandboxProcessExecution, createCounterfactualSandbox, } from "./long-task-counterfactual-sandbox.js";
7
7
  import { assertionFinding, checkFinding, classifyCheckStatus, evaluateAssertionResults, } from "./long-task-evidence-findings.js";
8
8
  import { classifyPlaywrightCounterfactual } from "./long-task-playwright-counterfactual-policy.js";
9
9
  import { admittedObservationAuthorityKey, classifyMachineObservationCarrierRoleConflict, } from "./long-task-admitted-observation.js";
@@ -181,68 +181,88 @@ export async function evaluateGlobalCounterfactuals(compiled, snapshotRoot, sele
181
181
  }
182
182
  async function evaluateCounterfactualSet(entries, snapshotRoot, manifest, protectedAuthorityPaths = [], baselineResults = [], baselineExecutions = new Map(), executionUniverse = []) {
183
183
  const findings = [];
184
- for (const entry of entries) {
185
- const { control, check } = entry;
186
- const owningBinding = entry.owningOutcome.technical.bindings.find((binding) => `${entry.owningOutcome.key}.${binding.key}` === entry.bindingRef);
187
- const sandbox = await createCounterfactualSandbox(snapshotRoot, check, control, owningBinding?.carrier_paths ?? [], manifest, protectedAuthorityPaths);
188
- const root = sandbox.root;
189
- try {
190
- const mutationTargets = counterfactualMutationTargets(control);
191
- const missingTargets = await missingCounterfactualMutationTargets(root, mutationTargets);
192
- if (missingTargets.length) {
193
- findings.push(counterfactualIntegrityFinding(entry, {
194
- execution_status: "not_run",
195
- finding_codes: ["counterfactual_mutation_target_missing"],
196
- missing_targets: missingTargets,
197
- }));
198
- continue;
199
- }
200
- await applyCounterfactualMutation(root, control);
201
- const raw = await executeCounterfactualCheck(check, root, manifest, protectedAuthorityPaths, executionUniverse);
202
- const result = await evaluateCheckEvidence(check, raw, root, entry.evidenceOutcome, protectedAuthorityPaths);
203
- const observationImpactIssue = await counterfactualObservationImpactIssue(entry, baselineResults, baselineExecutions.get(check.raw_execution_identity), result, raw, snapshotRoot, root, mutationTargets, owningBinding?.carrier_paths ?? [], protectedAuthorityPaths, executionUniverse);
204
- const playwrightClassification = result.evidence_adapter === "playwright_json_v1"
205
- ? classifyPlaywrightCounterfactual(raw, result, control)
206
- : null;
207
- const sensitivityResult = playwrightClassification?.normalized_result ?? result;
208
- const failedAssertions = result.assertion_results
209
- .filter((assertion) => !assertion.passed)
210
- .map((assertion) => assertion.key)
211
- .sort();
212
- const expected = [...control.expected_assertion_failures].sort();
213
- const allowedFanout = [
214
- ...(control.allowed_fanout_assertions ?? []),
215
- ].sort();
216
- const acceptedExit = playwrightClassification
217
- ? playwrightClassification.accepted_test_failure_exit
218
- : raw.exit_code === 0;
219
- const valid = raw.execution_status === "completed" &&
220
- acceptedExit &&
221
- observationImpactIssue === null &&
222
- isValidCounterfactualCheckResult(sensitivityResult, expected, allowedFanout);
223
- if (!valid)
224
- findings.push(counterfactualIntegrityFinding(entry, playwrightClassification
225
- ? playwrightCounterfactualDiagnostic(raw, result, expected, playwrightClassification.rejection_reasons)
226
- : {
227
- execution_status: raw.execution_status,
228
- exit_code: raw.exit_code,
229
- execution_error: raw.error,
230
- result_status: result.status,
231
- failed_assertions: failedAssertions,
232
- finding_codes: result.findings.map((finding) => finding.code),
233
- observation_impact_issue: observationImpactIssue,
234
- }));
235
- }
236
- finally {
237
- await sandbox.dispose();
184
+ for (const entry of entries)
185
+ findings.push(...(await evaluateCounterfactualEntry(entry, snapshotRoot, manifest, protectedAuthorityPaths, baselineResults, baselineExecutions, executionUniverse)));
186
+ return findings;
187
+ }
188
+ async function evaluateCounterfactualEntry(entry, snapshotRoot, manifest, protectedAuthorityPaths, baselineResults, baselineExecutions, executionUniverse) {
189
+ const findings = [];
190
+ const { control, check } = entry;
191
+ const owningBinding = entry.owningOutcome.technical.bindings.find((binding) => `${entry.owningOutcome.key}.${binding.key}` === entry.bindingRef);
192
+ const sandbox = await createCounterfactualSandbox(snapshotRoot, check, control, owningBinding?.carrier_paths ?? [], manifest, protectedAuthorityPaths, executionUniverse);
193
+ const root = sandbox.root;
194
+ try {
195
+ const mutationTargets = counterfactualMutationTargets(control);
196
+ const missingTargets = await missingCounterfactualMutationTargets(root, mutationTargets);
197
+ if (missingTargets.length) {
198
+ findings.push(counterfactualIntegrityFinding(entry, {
199
+ execution_status: "not_run",
200
+ finding_codes: ["counterfactual_mutation_target_missing"],
201
+ missing_targets: missingTargets,
202
+ }));
203
+ return findings;
238
204
  }
205
+ await applyCounterfactualMutation(root, control, sandbox.mutation_source_root);
206
+ const processExecution = counterfactualSandboxProcessExecution(sandbox);
207
+ if (processExecution)
208
+ await applyCounterfactualMutation(processExecution.root, control, processExecution.mutation_source_root);
209
+ const raw = await executeCounterfactualCheck(check, sandbox, manifest, protectedAuthorityPaths, executionUniverse);
210
+ const result = await evaluateCheckEvidence(check, raw, root, entry.evidenceOutcome, protectedAuthorityPaths);
211
+ const observationImpactIssue = await counterfactualObservationImpactIssue(entry, baselineResults, baselineExecutions.get(check.raw_execution_identity), result, raw, snapshotRoot, root, mutationTargets, owningBinding?.carrier_paths ?? [], protectedAuthorityPaths, executionUniverse);
212
+ const playwrightClassification = result.evidence_adapter === "playwright_json_v1"
213
+ ? classifyPlaywrightCounterfactual(raw, result, control)
214
+ : null;
215
+ const sensitivityResult = playwrightClassification?.normalized_result ?? result;
216
+ const failedAssertions = result.assertion_results
217
+ .filter((assertion) => !assertion.passed)
218
+ .map((assertion) => assertion.key)
219
+ .sort();
220
+ const expected = [...control.expected_assertion_failures].sort();
221
+ const allowedFanout = [...(control.allowed_fanout_assertions ?? [])].sort();
222
+ const acceptedExit = playwrightClassification
223
+ ? playwrightClassification.accepted_test_failure_exit
224
+ : raw.exit_code === 0;
225
+ const valid = raw.execution_status === "completed" &&
226
+ acceptedExit &&
227
+ observationImpactIssue === null &&
228
+ isValidCounterfactualCheckResult(sensitivityResult, expected, allowedFanout);
229
+ if (!valid)
230
+ findings.push(counterfactualIntegrityFinding(entry, playwrightClassification
231
+ ? playwrightCounterfactualDiagnostic(raw, result, expected, playwrightClassification.rejection_reasons)
232
+ : {
233
+ execution_status: raw.execution_status,
234
+ exit_code: raw.exit_code,
235
+ execution_error: raw.error,
236
+ result_status: result.status,
237
+ failed_assertions: failedAssertions,
238
+ finding_codes: result.findings.map((finding) => finding.code),
239
+ observation_impact_issue: observationImpactIssue,
240
+ }));
241
+ return findings;
239
242
  }
240
- return findings;
243
+ finally {
244
+ await sandbox.dispose();
245
+ }
246
+ }
247
+ export function counterfactualExecutionMayOverlap(input) {
248
+ const check = input.check;
249
+ const closure = check.process_runtime_closure;
250
+ const protectedPaths = input.protected_authority_paths ?? [];
251
+ if (check.runner.effect !== "read_only" ||
252
+ !check.runner.idempotent ||
253
+ check.runner.retry_policy !== "none" ||
254
+ check.environment_requirements.some((requirement) => requirement.kind === "loopback_tcp") ||
255
+ input.control.mutation.type === "replace_file" ||
256
+ !closure ||
257
+ !(check.observation_authorities ?? []).some((authority) => authority.authority === "package_process_json_exact"))
258
+ return false;
259
+ return counterfactualMutationTargets(input.control).every((target) => closure.production_carrier_files.includes(target) &&
260
+ !protectedPaths.some((pattern) => matchesRepoPattern(target, pattern)));
241
261
  }
242
- async function executeCounterfactualCheck(check, root, manifest, protectedAuthorityPaths, executionUniverse) {
262
+ async function executeCounterfactualCheck(check, sandbox, manifest, protectedAuthorityPaths, executionUniverse) {
243
263
  const packageAuthorities = (check.observation_authorities ?? []).filter((authority) => authority.authority !== "external_confirmation");
244
264
  if (!packageAuthorities.length)
245
- return executeCheckRunner(check, root);
265
+ return executeCheckRunner(check, sandbox.root);
246
266
  if (!manifest)
247
267
  return {
248
268
  raw_execution_identity: check.raw_execution_identity,
@@ -260,9 +280,9 @@ async function executeCounterfactualCheck(check, root, manifest, protectedAuthor
260
280
  host_execution_attestation: null,
261
281
  };
262
282
  const group = executionUniverse.filter((candidate) => candidate.raw_execution_identity === check.raw_execution_identity);
263
- const prepared = await prepareExecutionObservationGroup({
283
+ const prepared = await prepareCounterfactualExecutionObservationGroup({
264
284
  checks: group.length ? group : [check],
265
- snapshot_root: root,
285
+ sandbox,
266
286
  workspace_manifest: manifest,
267
287
  protected_authority_paths: protectedAuthorityPaths,
268
288
  });
@@ -285,153 +305,216 @@ async function missingCounterfactualMutationTargets(root, targets) {
285
305
  missing.push(target);
286
306
  return missing;
287
307
  }
288
- async function applyCounterfactualMutation(root, control) {
308
+ async function applyCounterfactualMutation(root, control, mutationSourceRoot) {
289
309
  if (control.mutation.type === "remove_paths") {
290
310
  for (const target of control.mutation.paths)
291
311
  await rm(resolveInsideRepository(root, target, "counterfactual.remove_paths"), { recursive: true, force: true });
292
312
  return;
293
313
  }
294
314
  if (control.mutation.type === "replace_file") {
295
- await copyFile(resolveInsideRepository(root, control.mutation.fixture_path, "counterfactual.fixture"), resolveInsideRepository(root, control.mutation.path, "counterfactual.path"));
315
+ await copyFile(resolveInsideRepository(mutationSourceRoot, control.mutation.fixture_path, "counterfactual.fixture"), resolveInsideRepository(root, control.mutation.path, "counterfactual.path"));
296
316
  return;
297
317
  }
298
318
  await applyNarrowSemanticMutation(root, control.mutation);
299
319
  }
300
320
  async function counterfactualObservationImpactIssue(entry, baselineResults, baselineRaw, mutatedResult, mutatedRaw, baselineRoot, mutatedRoot, mutationTargets, bindingCarrierPaths, protectedAuthorityPaths, executionUniverse) {
301
321
  const baselineResult = baselineResults.find((candidate) => candidate.internal_id === entry.check.internal_id);
302
- const machineClosing = [
303
- ...entry.check.positive_assertions,
304
- ...entry.check.negative_assertions,
305
- ].some((assertion) => assertion.claims.length > 0);
322
+ const machineClosing = counterfactualMachineClosing(entry);
306
323
  if (!baselineResult || !baselineRaw)
307
324
  return machineClosing
308
325
  ? "counterfactual_admitted_observation_required"
309
326
  : null;
327
+ const process = counterfactualProcessContext(entry, baselineRaw, mutatedRaw, mutationTargets);
328
+ if (process.issue)
329
+ return process.issue;
330
+ const observationChecks = counterfactualObservationChecks(entry.check, executionUniverse, process.processObserved);
331
+ const { baselineEntries, mutatedEntries } = await prepareCounterfactualObservationEntries({
332
+ entry,
333
+ observationChecks,
334
+ baselineResults,
335
+ baselineRaw,
336
+ mutatedResult,
337
+ mutatedRaw,
338
+ baselineRoot,
339
+ mutatedRoot,
340
+ protectedAuthorityPaths,
341
+ });
342
+ const observationIssue = counterfactualObservationEntryIssue(baselineEntries, mutatedEntries, machineClosing);
343
+ if (observationIssue)
344
+ return observationIssue;
345
+ const closureIssue = counterfactualProcessClosureIdentityIssue(process);
346
+ if (closureIssue)
347
+ return closureIssue;
348
+ const baselineKeys = baselineEntries.map(({ identity }) => identity).sort();
349
+ const mutatedKeys = mutatedEntries.map(({ identity }) => identity).sort();
350
+ if (canonicalValueJson(baselineKeys) !== canonicalValueJson(mutatedKeys))
351
+ return "counterfactual_obligation_universe_changed";
352
+ const baselineByFact = Object.fromEntries(baselineEntries.map(({ candidate, identity }) => [
353
+ identity,
354
+ candidate.observation.value_sha256,
355
+ ]));
356
+ const mutatedByFact = Object.fromEntries(mutatedEntries.map(({ candidate, identity }) => [
357
+ identity,
358
+ candidate.observation.value_sha256,
359
+ ]));
360
+ const factRefs = counterfactualFactRefs(entry, baselineEntries);
361
+ const expectedFactRefs = factRefs.expected;
362
+ if (!expectedFactRefs.length)
363
+ return "counterfactual_expected_fact_observation_missing";
364
+ const targetLive = entry.control.preserved_assertions.every((key) => mutatedResult.assertion_results.some((assertion) => assertion.key === key && assertion.passed));
365
+ const carrier = counterfactualCarrierRole(entry, mutationTargets, bindingCarrierPaths, protectedAuthorityPaths, process.processObserved);
366
+ if (carrier.issue)
367
+ return carrier.issue;
368
+ return validateCounterfactualObservationImpact({
369
+ baseline_by_fact: baselineByFact,
370
+ mutated_by_fact: mutatedByFact,
371
+ expected_affected_fact_refs: expectedFactRefs,
372
+ preserved_fact_refs: factRefs.preserved,
373
+ allowed_fanout_fact_refs: factRefs.allowedFanout,
374
+ target_live: targetLive,
375
+ carrier_role: carrier.role,
376
+ });
377
+ }
378
+ function counterfactualMachineClosing(entry) {
379
+ return [
380
+ ...entry.check.positive_assertions,
381
+ ...entry.check.negative_assertions,
382
+ ].some((assertion) => assertion.claims.length > 0);
383
+ }
384
+ function counterfactualProcessContext(entry, baselineRaw, mutatedRaw, mutationTargets) {
310
385
  const processObserved = (entry.check.observation_authorities ?? []).some((authority) => authority.authority === "package_process_json_exact");
311
386
  const processClosure = processObserved
312
387
  ? entry.check.process_runtime_closure
313
388
  : null;
314
- if (processObserved) {
315
- if (!processClosure)
316
- return "process_runtime_closure_identity_mismatch";
317
- const normalizedMutationTargets = mutationTargets.map((target, index) => normalizeRepositoryFile(target, `counterfactual.mutation_targets[${index}]`));
318
- if (normalizedMutationTargets.some((target) => !processClosure.production_carrier_files.includes(target)))
319
- return "counterfactual_runtime_reachability_unproven";
389
+ const baselineClosureIdentity = processObserved
390
+ ? (baselineRaw.host_execution_attestation
391
+ ?.process_runtime_closure_identity ?? null)
392
+ : null;
393
+ const mutatedClosureIdentity = processObserved
394
+ ? (mutatedRaw.host_execution_attestation
395
+ ?.process_runtime_closure_identity ?? null)
396
+ : null;
397
+ let issue = null;
398
+ if (processObserved && !processClosure)
399
+ issue = "process_runtime_closure_identity_mismatch";
400
+ if (processClosure) {
401
+ const normalizedTargets = mutationTargets.map((target, index) => normalizeRepositoryFile(target, `counterfactual.mutation_targets[${index}]`));
402
+ if (normalizedTargets.some((target) => !processClosure.production_carrier_files.includes(target)))
403
+ issue = "counterfactual_runtime_reachability_unproven";
404
+ if (baselineClosureIdentity !== null &&
405
+ mutatedClosureIdentity !== null &&
406
+ (baselineClosureIdentity !== processClosure.closure_identity ||
407
+ mutatedClosureIdentity !== processClosure.closure_identity ||
408
+ baselineClosureIdentity !== mutatedClosureIdentity))
409
+ issue = "process_runtime_closure_identity_mismatch";
320
410
  }
321
- const observationChecks = counterfactualObservationChecks(entry.check, executionUniverse, processObserved);
322
- const observationSets = await Promise.all(observationChecks.map(async (check) => {
323
- const baselineCheckResult = baselineResults.find((candidate) => candidate.internal_id === check.internal_id);
411
+ return {
412
+ processObserved,
413
+ processClosure,
414
+ baselineClosureIdentity,
415
+ mutatedClosureIdentity,
416
+ issue,
417
+ };
418
+ }
419
+ async function prepareCounterfactualObservationEntries(input) {
420
+ const observationSets = await Promise.all(input.observationChecks.map(async (check) => {
421
+ const machineObservationCheck = {
422
+ ...check,
423
+ observation_authorities: (check.observation_authorities ?? []).filter((authority) => authority.authority !== "external_confirmation"),
424
+ };
425
+ const baselineCheckResult = input.baselineResults.find((candidate) => candidate.internal_id === check.internal_id);
324
426
  const [baseline, mutated] = await Promise.all([
325
427
  prepareAdmittedObservations({
326
- check,
428
+ check: machineObservationCheck,
327
429
  records: baselineCheckResult?.evidence_records ?? [],
328
- snapshot_root: baselineRoot,
329
- authority_paths: protectedAuthorityPaths,
330
- package_observations: packageObservationsForCheck(check, baselineRaw.package_observations ?? []),
430
+ snapshot_root: input.baselineRoot,
431
+ authority_paths: input.protectedAuthorityPaths,
432
+ package_observations: packageObservationsForCheck(machineObservationCheck, input.baselineRaw.package_observations ?? []),
331
433
  }),
332
434
  prepareAdmittedObservations({
333
- check,
334
- records: check.internal_id === entry.check.internal_id
335
- ? mutatedResult.evidence_records
435
+ check: machineObservationCheck,
436
+ records: check.internal_id === input.entry.check.internal_id
437
+ ? input.mutatedResult.evidence_records
336
438
  : [],
337
- snapshot_root: mutatedRoot,
338
- authority_paths: protectedAuthorityPaths,
339
- package_observations: packageObservationsForCheck(check, mutatedRaw.package_observations ?? []),
439
+ snapshot_root: input.mutatedRoot,
440
+ authority_paths: input.protectedAuthorityPaths,
441
+ package_observations: packageObservationsForCheck(machineObservationCheck, input.mutatedRaw.package_observations ?? []),
340
442
  }),
341
443
  ]);
342
444
  return { check, baseline, mutated };
343
445
  }));
344
- const baselineEntries = observationSets.flatMap(({ check, baseline }) => baseline.entries.map((candidate) => ({
345
- candidate,
346
- check,
347
- identity: scopedObservationImpactIdentity(check, candidate),
348
- })));
349
- const mutatedEntries = observationSets.flatMap(({ check, mutated }) => mutated.entries.map((candidate) => ({
350
- candidate,
351
- check,
352
- identity: scopedObservationImpactIdentity(check, candidate),
353
- })));
354
- if (!baselineEntries.length || !mutatedEntries.length)
446
+ return {
447
+ baselineEntries: observationSets.flatMap(({ check, baseline }) => baseline.entries.map((candidate) => ({
448
+ candidate,
449
+ check,
450
+ identity: scopedObservationImpactIdentity(check, candidate),
451
+ }))),
452
+ mutatedEntries: observationSets.flatMap(({ check, mutated }) => mutated.entries.map((candidate) => ({
453
+ candidate,
454
+ check,
455
+ identity: scopedObservationImpactIdentity(check, candidate),
456
+ }))),
457
+ };
458
+ }
459
+ function counterfactualObservationEntryIssue(baseline, mutated, machineClosing) {
460
+ if (!baseline.length || !mutated.length)
355
461
  return machineClosing
356
462
  ? "counterfactual_admitted_observation_required"
357
463
  : null;
358
- const baselineIssue = baselineEntries.find(({ candidate }) => candidate.reason || !candidate.observation);
464
+ const baselineIssue = baseline.find(({ candidate }) => candidate.reason || !candidate.observation);
359
465
  if (baselineIssue)
360
466
  return `counterfactual_baseline_observation_invalid:${baselineIssue.candidate.reason ?? "missing"}`;
361
- const mutatedIssue = mutatedEntries.find(({ candidate }) => candidate.reason || !candidate.observation);
362
- if (mutatedIssue)
363
- return `counterfactual_mutated_observation_invalid:${mutatedIssue.candidate.reason ?? "missing"}`;
364
- if (processClosure) {
365
- const baselineClosureIdentity = baselineRaw.host_execution_attestation
366
- ?.process_runtime_closure_identity ?? null;
367
- const mutatedClosureIdentity = mutatedRaw.host_execution_attestation?.process_runtime_closure_identity ??
368
- null;
369
- if (baselineClosureIdentity !== processClosure.closure_identity ||
370
- mutatedClosureIdentity !== processClosure.closure_identity ||
371
- baselineClosureIdentity !== mutatedClosureIdentity)
372
- return "process_runtime_closure_identity_mismatch";
373
- }
374
- const baselineKeys = baselineEntries.map(({ identity }) => identity).sort();
375
- const mutatedKeys = mutatedEntries.map(({ identity }) => identity).sort();
376
- if (canonicalValueJson(baselineKeys) !== canonicalValueJson(mutatedKeys))
377
- return "counterfactual_obligation_universe_changed";
378
- const baselineByFact = Object.fromEntries(baselineEntries.map(({ candidate, identity }) => [
379
- identity,
380
- candidate.observation.value_sha256,
381
- ]));
382
- const mutatedByFact = Object.fromEntries(mutatedEntries.map(({ candidate, identity }) => [
383
- identity,
384
- candidate.observation.value_sha256,
385
- ]));
386
- const expectedAssertions = new Set(entry.control.expected_assertion_failures);
387
- const preservedAssertions = new Set(entry.control.preserved_assertions);
388
- const allowedFanoutAssertions = new Set(entry.control.allowed_fanout_assertions ?? []);
389
- const expectedFactRefs = baselineEntries
390
- .filter(({ candidate, check }) => check.internal_id === entry.check.internal_id &&
391
- expectedAssertions.has(candidate.assertion_key))
392
- .map(({ identity }) => identity);
393
- if (!expectedFactRefs.length)
394
- return "counterfactual_expected_fact_observation_missing";
395
- const preservedFactRefs = baselineEntries
396
- .filter(({ candidate, check }) => check.internal_id === entry.check.internal_id &&
397
- preservedAssertions.has(candidate.assertion_key))
398
- .map(({ identity }) => identity);
399
- const allowedFanoutFactRefs = baselineEntries
467
+ const mutatedIssue = mutated.find(({ candidate }) => candidate.reason || !candidate.observation);
468
+ return mutatedIssue
469
+ ? `counterfactual_mutated_observation_invalid:${mutatedIssue.candidate.reason ?? "missing"}`
470
+ : null;
471
+ }
472
+ function counterfactualProcessClosureIdentityIssue(process) {
473
+ if (!process.processClosure)
474
+ return null;
475
+ return process.baselineClosureIdentity !==
476
+ process.processClosure.closure_identity ||
477
+ process.mutatedClosureIdentity !==
478
+ process.processClosure.closure_identity ||
479
+ process.baselineClosureIdentity !== process.mutatedClosureIdentity
480
+ ? "process_runtime_closure_identity_mismatch"
481
+ : null;
482
+ }
483
+ function counterfactualFactRefs(entry, baseline) {
484
+ const refsFor = (assertions) => baseline
400
485
  .filter(({ candidate, check }) => check.internal_id === entry.check.internal_id &&
401
- allowedFanoutAssertions.has(candidate.assertion_key))
486
+ assertions.has(candidate.assertion_key))
402
487
  .map(({ identity }) => identity);
403
- const targetLive = entry.control.preserved_assertions.every((key) => mutatedResult.assertion_results.some((assertion) => assertion.key === key && assertion.passed));
404
- let carrierRole = "product";
405
- if (!processObserved) {
406
- const carrierRoleConflict = mutationTargets
407
- .map((target) => classifyMachineObservationCarrierRoleConflict({
408
- carrier_pattern: target,
409
- expected_authority_patterns: [
410
- ...entry.check.verification_inputs,
411
- ...protectedAuthorityPaths,
412
- ],
413
- evidence_role_patterns: [
414
- ...entry.check.expected_output_paths,
415
- ...entry.check.artifact_globs,
416
- ],
417
- }))
418
- .find((candidate) => candidate !== null);
419
- if (carrierRoleConflict)
420
- return `counterfactual_static_carrier_${carrierRoleConflict}_forbidden`;
421
- carrierRole = mutationTargets.every((target) => bindingCarrierPaths.some((pattern) => matchesRepoPattern(target, pattern)) &&
422
- entry.check.input_paths.some((pattern) => matchesRepoPattern(target, pattern)))
423
- ? "product"
424
- : "evidence";
425
- }
426
- return validateCounterfactualObservationImpact({
427
- baseline_by_fact: baselineByFact,
428
- mutated_by_fact: mutatedByFact,
429
- expected_affected_fact_refs: expectedFactRefs,
430
- preserved_fact_refs: preservedFactRefs,
431
- allowed_fanout_fact_refs: allowedFanoutFactRefs,
432
- target_live: targetLive,
433
- carrier_role: carrierRole,
434
- });
488
+ return {
489
+ expected: refsFor(new Set(entry.control.expected_assertion_failures)),
490
+ preserved: refsFor(new Set(entry.control.preserved_assertions)),
491
+ allowedFanout: refsFor(new Set(entry.control.allowed_fanout_assertions ?? [])),
492
+ };
493
+ }
494
+ function counterfactualCarrierRole(entry, mutationTargets, bindingCarrierPaths, protectedAuthorityPaths, processObserved) {
495
+ if (processObserved)
496
+ return { role: "product", issue: null };
497
+ const conflict = mutationTargets
498
+ .map((target) => classifyMachineObservationCarrierRoleConflict({
499
+ carrier_pattern: target,
500
+ expected_authority_patterns: [
501
+ ...entry.check.verification_inputs,
502
+ ...protectedAuthorityPaths,
503
+ ],
504
+ evidence_role_patterns: [
505
+ ...entry.check.expected_output_paths,
506
+ ...entry.check.artifact_globs,
507
+ ],
508
+ }))
509
+ .find((candidate) => candidate !== null);
510
+ if (conflict)
511
+ return {
512
+ role: "evidence",
513
+ issue: `counterfactual_static_carrier_${conflict}_forbidden`,
514
+ };
515
+ const product = mutationTargets.every((target) => bindingCarrierPaths.some((pattern) => matchesRepoPattern(target, pattern)) &&
516
+ entry.check.input_paths.some((pattern) => matchesRepoPattern(target, pattern)));
517
+ return { role: product ? "product" : "evidence", issue: null };
435
518
  }
436
519
  function counterfactualObservationChecks(check, executionUniverse, processObserved) {
437
520
  if (!processObserved)
@@ -1,4 +1,5 @@
1
1
  import type { CheckRunnerExecutionContextV2, CompiledCheckV2, RawCommandExecutionV2, WorkspaceManifestV2 } from "./long-task-delivery-types.js";
2
+ import { type CounterfactualSandboxV2 } from "./long-task-counterfactual-sandbox.js";
2
3
  export interface PreparedExecutionObservationGroupV2 {
3
4
  readonly execution_root: string;
4
5
  readonly runner_context: CheckRunnerExecutionContextV2;
@@ -22,3 +23,9 @@ export declare function prepareExecutionObservationGroup(input: {
22
23
  workspace_manifest: WorkspaceManifestV2;
23
24
  protected_authority_paths?: readonly string[];
24
25
  }): Promise<PreparedExecutionObservationGroupV2>;
26
+ export declare function prepareCounterfactualExecutionObservationGroup(input: {
27
+ checks: readonly CompiledCheckV2[];
28
+ sandbox: CounterfactualSandboxV2;
29
+ workspace_manifest: WorkspaceManifestV2;
30
+ protected_authority_paths?: readonly string[];
31
+ }): Promise<PreparedExecutionObservationGroupV2>;
@@ -2,6 +2,7 @@ import { chmod, copyFile, mkdir, mkdtemp, rm } from "node:fs/promises";
2
2
  import os from "node:os";
3
3
  import path from "node:path";
4
4
  import { createJsonPointerExactBudget } from "./long-task-json-pointer-observation.js";
5
+ import { counterfactualSandboxProcessExecution, } from "./long-task-counterfactual-sandbox.js";
5
6
  import { matchesRepoPattern } from "./long-task-paths.js";
6
7
  import { StaticObservationFreezeError, createObservationInputFreezeBudget, freezeObservationInputFile, freezeStaticObservationCarrier, } from "./long-task-static-observation-freeze.js";
7
8
  const PROCESS_INPUT_FREEZE_LIMITS = Object.freeze({
@@ -39,6 +40,17 @@ export async function prepareExecutionObservationGroup(input) {
39
40
  process_input_budget: createProcessInputFreezeBudget(),
40
41
  });
41
42
  }
43
+ export async function prepareCounterfactualExecutionObservationGroup(input) {
44
+ const processExecution = counterfactualSandboxProcessExecution(input.sandbox);
45
+ return prepareExecutionObservationGroupWithBudget({
46
+ checks: input.checks,
47
+ snapshot_root: processExecution?.root ?? input.sandbox.root,
48
+ workspace_manifest: input.workspace_manifest,
49
+ protected_authority_paths: input.protected_authority_paths,
50
+ process_input_budget: createProcessInputFreezeBudget(),
51
+ direct_process_execution_root: processExecution !== null,
52
+ });
53
+ }
42
54
  async function prepareExecutionObservationGroupWithBudget(input) {
43
55
  if (!input.checks.length)
44
56
  throw new Error("execution_observation_check_group_required");
@@ -50,13 +62,16 @@ async function prepareExecutionObservationGroupWithBudget(input) {
50
62
  const exactBudget = createJsonPointerExactBudget();
51
63
  const processInputBudget = input.process_input_budget;
52
64
  const processExecution = states.some((state) => state.authority.authority === "package_process_json_exact");
53
- const executionRoot = processExecution
65
+ const directProcessExecution = processExecution && input.direct_process_execution_root === true;
66
+ const executionRoot = processExecution && !directProcessExecution
54
67
  ? await mkdtemp(path.join(os.tmpdir(), "ty-context-process-snapshot-"))
55
68
  : input.snapshot_root;
56
- if (processExecution)
69
+ if (processExecution && !directProcessExecution)
57
70
  await mkdir(path.resolve(executionRoot, input.checks[0].runner.resolved_cwd), { recursive: true });
58
71
  for (const group of groups) {
59
72
  if ((input.protected_authority_paths ?? []).some((pattern) => matchesRepoPattern(group.artifact_path, pattern))) {
73
+ if (directProcessExecution)
74
+ await rm(path.resolve(executionRoot, ...group.artifact_path.split("/")), { recursive: true, force: true });
60
75
  for (const state of group.authority_states)
61
76
  recordAuthorityFailure(state, "observation_expected_authority_forbidden");
62
77
  continue;
@@ -65,7 +80,7 @@ async function prepareExecutionObservationGroupWithBudget(input) {
65
80
  const includesStaticAuthority = group.authority_states.some((state) => state.authority.authority === "package_static_json_exact");
66
81
  const includesProcessAuthority = group.authority_states.some((state) => state.authority.authority === "package_process_json_exact");
67
82
  let sourceIdentity = null;
68
- if (processExecution) {
83
+ if (processExecution && !directProcessExecution) {
69
84
  const sourceFrozen = await freezeObservationInputFile({
70
85
  snapshot_root: input.snapshot_root,
71
86
  workspace_manifest: input.workspace_manifest,
@@ -109,6 +124,8 @@ async function prepareExecutionObservationGroupWithBudget(input) {
109
124
  throw new Error("process_observation_input_snapshot_copy_mismatch");
110
125
  }
111
126
  catch (error) {
127
+ if (directProcessExecution)
128
+ await rm(path.resolve(executionRoot, ...group.artifact_path.split("/")), { recursive: true, force: true });
112
129
  const reason = observationFailureReason(error);
113
130
  for (const state of group.authority_states)
114
131
  recordAuthorityFailure(state, reason);
@@ -133,7 +150,7 @@ async function prepareExecutionObservationGroupWithBudget(input) {
133
150
  disposed = true;
134
151
  for (const group of groups)
135
152
  group.frozen?.dispose();
136
- if (processExecution)
153
+ if (processExecution && !directProcessExecution)
137
154
  await rm(executionRoot, { recursive: true, force: true });
138
155
  };
139
156
  return {
@@ -0,0 +1,4 @@
1
+ import type { DeliveryAssertionV2, DeliveryContractV2, SemanticFactExpectationV2 } from "./long-task-delivery-types.js";
2
+ import type { SemanticFactManifestV1 } from "./semantic-fact-types.js";
3
+ export declare function resolveExpectedAuthority(contract: DeliveryContractV2, outcomeKey: string | null, assertion: DeliveryAssertionV2, manifest: SemanticFactManifestV1, expectations: SemanticFactExpectationV2[]): string;
4
+ export declare function claimAuthorityStatement(contract: DeliveryContractV2, outcomeKey: string | null, localClaim: string): string;