project-tiny-context-harness 0.8.17 → 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 (488) hide show
  1. package/README.md +93 -30
  2. package/assets/README.md +158 -44
  3. package/assets/README.zh-CN.md +88 -29
  4. package/assets/agents/AGENTS_CORE.md +2 -2
  5. package/assets/context_templates/context.toml +6 -1
  6. package/assets/runtime/windows-job-supervisor/formal_process_supervisor_native_helpers.cs +301 -0
  7. package/assets/runtime/windows-job-supervisor/formal_process_supervisor_native_run.cs +197 -0
  8. package/assets/runtime/windows-job-supervisor/formal_process_supervisor_native_types.cs +215 -0
  9. package/assets/runtime/windows-job-supervisor/windows_job_process_supervisor.ps1 +117 -0
  10. package/assets/skills/design-resource-authoring/SKILL.md +6 -3
  11. package/assets/skills/design-resource-authoring/references/authority-delta-assessment.md +52 -0
  12. package/assets/skills/design-resource-authoring/references/downstream-handoff.md +5 -1
  13. package/assets/skills/design-system-authoring/SKILL.md +23 -17
  14. package/assets/skills/design-system-authoring/references/authority-adoption.md +19 -9
  15. package/assets/skills/design-system-authoring/references/open-design-design-system-provider.md +4 -0
  16. package/assets/skills/long-task-workflow/SKILL.md +6 -6
  17. package/assets/skills/long-task-workflow/references/authority-lifecycle.md +10 -4
  18. package/assets/skills/long-task-workflow/references/contract-authoring.md +5 -5
  19. package/assets/skills/long-task-workflow/references/evidence-design.md +14 -3
  20. package/assets/skills/long-task-workflow/references/source-authoring.md +11 -8
  21. package/assets/tools/context_rules.json +53 -0
  22. package/assets/tools/validate_context.py +302 -77
  23. package/dist/cli.js +2 -1
  24. package/dist/commands/context-create.d.ts +1 -0
  25. package/dist/commands/context-create.js +90 -0
  26. package/dist/commands/context-inspect.d.ts +1 -0
  27. package/dist/commands/context-inspect.js +98 -0
  28. package/dist/commands/context-move.d.ts +1 -0
  29. package/dist/commands/context-move.js +78 -0
  30. package/dist/commands/context-register.d.ts +1 -0
  31. package/dist/commands/context-register.js +110 -0
  32. package/dist/commands/context-transaction.d.ts +1 -0
  33. package/dist/commands/context-transaction.js +84 -0
  34. package/dist/commands/context.d.ts +1 -0
  35. package/dist/commands/context.js +36 -0
  36. package/dist/commands/design-authority-delta.d.ts +1 -0
  37. package/dist/commands/design-authority-delta.js +53 -0
  38. package/dist/commands/design-authority.d.ts +1 -0
  39. package/dist/commands/design-authority.js +104 -0
  40. package/dist/commands/design-resource.js +8 -1
  41. package/dist/commands/doctor.d.ts +1 -1
  42. package/dist/commands/doctor.js +61 -3
  43. package/dist/commands/index.js +19 -2
  44. package/dist/commands/long-task-authoring.js +20 -2
  45. package/dist/commands/long-task-workdir.d.ts +2 -0
  46. package/dist/commands/long-task-workdir.js +23 -0
  47. package/dist/commands/long-task.js +75 -6
  48. package/dist/commands/route.d.ts +15 -0
  49. package/dist/commands/route.js +142 -0
  50. package/dist/index.d.ts +3 -13
  51. package/dist/index.js +3 -12
  52. package/dist/lib/cli-exit.d.ts +14 -0
  53. package/dist/lib/cli-exit.js +19 -0
  54. package/dist/lib/context-catalog/catalog-default-footprint.d.ts +3 -0
  55. package/dist/lib/context-catalog/catalog-default-footprint.js +53 -0
  56. package/dist/lib/context-catalog/catalog-diagnostics.d.ts +9 -0
  57. package/dist/lib/context-catalog/catalog-diagnostics.js +34 -0
  58. package/dist/lib/context-catalog/catalog-discovery.d.ts +7 -0
  59. package/dist/lib/context-catalog/catalog-discovery.js +81 -0
  60. package/dist/lib/context-catalog/catalog-load.d.ts +8 -0
  61. package/dist/lib/context-catalog/catalog-load.js +187 -0
  62. package/dist/lib/context-catalog/catalog-path-validation.d.ts +7 -0
  63. package/dist/lib/context-catalog/catalog-path-validation.js +62 -0
  64. package/dist/lib/context-catalog/catalog-paths.d.ts +11 -0
  65. package/dist/lib/context-catalog/catalog-paths.js +41 -0
  66. package/dist/lib/context-catalog/catalog-portable-contract.d.ts +15 -0
  67. package/dist/lib/context-catalog/catalog-portable-contract.js +68 -0
  68. package/dist/lib/context-catalog/catalog-staged-path-safety.d.ts +1 -0
  69. package/dist/lib/context-catalog/catalog-staged-path-safety.js +36 -0
  70. package/dist/lib/context-catalog/catalog-types.d.ts +40 -0
  71. package/dist/lib/context-catalog/catalog-types.js +1 -0
  72. package/dist/lib/context-catalog/catalog-validation.d.ts +9 -0
  73. package/dist/lib/context-catalog/catalog-validation.js +148 -0
  74. package/dist/lib/context-create/context-create-path.d.ts +2 -0
  75. package/dist/lib/context-create/context-create-path.js +30 -0
  76. package/dist/lib/context-create/context-create-template.d.ts +2 -0
  77. package/dist/lib/context-create/context-create-template.js +95 -0
  78. package/dist/lib/context-create/context-create-types.d.ts +28 -0
  79. package/dist/lib/context-create/context-create-types.js +1 -0
  80. package/dist/lib/context-create/context-create-write.d.ts +1 -0
  81. package/dist/lib/context-create/context-create-write.js +85 -0
  82. package/dist/lib/context-create/context-create.d.ts +2 -0
  83. package/dist/lib/context-create/context-create.js +84 -0
  84. package/dist/lib/context-default-footprint.d.ts +2 -3
  85. package/dist/lib/context-default-footprint.js +49 -57
  86. package/dist/lib/context-doctor/context-doctor-types.d.ts +16 -0
  87. package/dist/lib/context-doctor/context-doctor-types.js +15 -0
  88. package/dist/lib/context-doctor/context-doctor.d.ts +2 -0
  89. package/dist/lib/context-doctor/context-doctor.js +130 -0
  90. package/dist/lib/context-graph-snapshot.d.ts +5 -0
  91. package/dist/lib/context-graph-snapshot.js +46 -25
  92. package/dist/lib/context-inspect/context-inspect-projection.d.ts +9 -0
  93. package/dist/lib/context-inspect/context-inspect-projection.js +49 -0
  94. package/dist/lib/context-inspect/context-inspect-render.d.ts +2 -0
  95. package/dist/lib/context-inspect/context-inspect-render.js +29 -0
  96. package/dist/lib/context-inspect/context-inspect-types.d.ts +43 -0
  97. package/dist/lib/context-inspect/context-inspect-types.js +1 -0
  98. package/dist/lib/context-inspect/context-inspect.d.ts +2 -0
  99. package/dist/lib/context-inspect/context-inspect.js +104 -0
  100. package/dist/lib/context-manifest-schema.d.ts +1 -1
  101. package/dist/lib/context-manifest-schema.js +4 -20
  102. package/dist/lib/context-markdown/context-markdown-analysis.d.ts +15 -0
  103. package/dist/lib/context-markdown/context-markdown-analysis.js +245 -0
  104. package/dist/lib/context-markdown/context-markdown-extract.d.ts +7 -0
  105. package/dist/lib/context-markdown/context-markdown-extract.js +114 -0
  106. package/dist/lib/context-markdown/context-markdown-types.d.ts +57 -0
  107. package/dist/lib/context-markdown/context-markdown-types.js +1 -0
  108. package/dist/lib/context-move/context-move-input.d.ts +8 -0
  109. package/dist/lib/context-move/context-move-input.js +17 -0
  110. package/dist/lib/context-move/context-move-literal-scan.d.ts +20 -0
  111. package/dist/lib/context-move/context-move-literal-scan.js +213 -0
  112. package/dist/lib/context-move/context-move-live-validation.d.ts +3 -0
  113. package/dist/lib/context-move/context-move-live-validation.js +56 -0
  114. package/dist/lib/context-move/context-move-markdown-plan.d.ts +22 -0
  115. package/dist/lib/context-move/context-move-markdown-plan.js +39 -0
  116. package/dist/lib/context-move/context-move-projection.d.ts +3 -0
  117. package/dist/lib/context-move/context-move-projection.js +11 -0
  118. package/dist/lib/context-move/context-move-reference-validation.d.ts +11 -0
  119. package/dist/lib/context-move/context-move-reference-validation.js +64 -0
  120. package/dist/lib/context-move/context-move-render.d.ts +2 -0
  121. package/dist/lib/context-move/context-move-render.js +24 -0
  122. package/dist/lib/context-move/context-move-support.d.ts +10 -0
  123. package/dist/lib/context-move/context-move-support.js +88 -0
  124. package/dist/lib/context-move/context-move-transaction-plan.d.ts +24 -0
  125. package/dist/lib/context-move/context-move-transaction-plan.js +108 -0
  126. package/dist/lib/context-move/context-move-types.d.ts +74 -0
  127. package/dist/lib/context-move/context-move-types.js +1 -0
  128. package/dist/lib/context-move/context-move.d.ts +8 -0
  129. package/dist/lib/context-move/context-move.js +180 -0
  130. package/dist/lib/context-mutation/manifest-lossless-patch.d.ts +28 -0
  131. package/dist/lib/context-mutation/manifest-lossless-patch.js +208 -0
  132. package/dist/lib/context-mutation/markdown-link-patch.d.ts +34 -0
  133. package/dist/lib/context-mutation/markdown-link-patch.js +143 -0
  134. package/dist/lib/context-mutation/markdown-link-spans.d.ts +10 -0
  135. package/dist/lib/context-mutation/markdown-link-spans.js +179 -0
  136. package/dist/lib/context-mutation/mutation-cas.d.ts +13 -0
  137. package/dist/lib/context-mutation/mutation-cas.js +365 -0
  138. package/dist/lib/context-mutation/mutation-command-support.d.ts +12 -0
  139. package/dist/lib/context-mutation/mutation-command-support.js +57 -0
  140. package/dist/lib/context-mutation/mutation-commit.d.ts +12 -0
  141. package/dist/lib/context-mutation/mutation-commit.js +89 -0
  142. package/dist/lib/context-mutation/mutation-directories.d.ts +5 -0
  143. package/dist/lib/context-mutation/mutation-directories.js +56 -0
  144. package/dist/lib/context-mutation/mutation-file-state.d.ts +14 -0
  145. package/dist/lib/context-mutation/mutation-file-state.js +137 -0
  146. package/dist/lib/context-mutation/mutation-journal-file-validation.d.ts +1 -0
  147. package/dist/lib/context-mutation/mutation-journal-file-validation.js +106 -0
  148. package/dist/lib/context-mutation/mutation-journal-io.d.ts +5 -0
  149. package/dist/lib/context-mutation/mutation-journal-io.js +55 -0
  150. package/dist/lib/context-mutation/mutation-journal-storage.d.ts +18 -0
  151. package/dist/lib/context-mutation/mutation-journal-storage.js +283 -0
  152. package/dist/lib/context-mutation/mutation-journal-validation-support.d.ts +16 -0
  153. package/dist/lib/context-mutation/mutation-journal-validation-support.js +140 -0
  154. package/dist/lib/context-mutation/mutation-journal-validation.d.ts +3 -0
  155. package/dist/lib/context-mutation/mutation-journal-validation.js +177 -0
  156. package/dist/lib/context-mutation/mutation-journal.d.ts +8 -0
  157. package/dist/lib/context-mutation/mutation-journal.js +111 -0
  158. package/dist/lib/context-mutation/mutation-live-validation.d.ts +3 -0
  159. package/dist/lib/context-mutation/mutation-live-validation.js +51 -0
  160. package/dist/lib/context-mutation/mutation-long-task-guard.d.ts +6 -0
  161. package/dist/lib/context-mutation/mutation-long-task-guard.js +57 -0
  162. package/dist/lib/context-mutation/mutation-recovery.d.ts +4 -0
  163. package/dist/lib/context-mutation/mutation-recovery.js +189 -0
  164. package/dist/lib/context-mutation/mutation-staged-fs.d.ts +5 -0
  165. package/dist/lib/context-mutation/mutation-staged-fs.js +56 -0
  166. package/dist/lib/context-mutation/mutation-types.d.ts +103 -0
  167. package/dist/lib/context-mutation/mutation-types.js +1 -0
  168. package/dist/lib/context-register/context-register-input.d.ts +11 -0
  169. package/dist/lib/context-register/context-register-input.js +43 -0
  170. package/dist/lib/context-register/context-register-render.d.ts +2 -0
  171. package/dist/lib/context-register/context-register-render.js +21 -0
  172. package/dist/lib/context-register/context-register-support.d.ts +6 -0
  173. package/dist/lib/context-register/context-register-support.js +46 -0
  174. package/dist/lib/context-register/context-register-types.d.ts +46 -0
  175. package/dist/lib/context-register/context-register-types.js +1 -0
  176. package/dist/lib/context-register/context-register.d.ts +8 -0
  177. package/dist/lib/context-register/context-register.js +155 -0
  178. package/dist/lib/context-router/context-route-budget.d.ts +15 -0
  179. package/dist/lib/context-router/context-route-budget.js +14 -0
  180. package/dist/lib/context-router/context-route-candidates.d.ts +15 -0
  181. package/dist/lib/context-router/context-route-candidates.js +112 -0
  182. package/dist/lib/context-router/context-route-order.d.ts +6 -0
  183. package/dist/lib/context-router/context-route-order.js +53 -0
  184. package/dist/lib/context-router/context-route-paths.d.ts +16 -0
  185. package/dist/lib/context-router/context-route-paths.js +109 -0
  186. package/dist/lib/context-router/context-route-render.d.ts +2 -0
  187. package/dist/lib/context-router/context-route-render.js +32 -0
  188. package/dist/lib/context-router/context-route-scan.d.ts +18 -0
  189. package/dist/lib/context-router/context-route-scan.js +156 -0
  190. package/dist/lib/context-router/context-route-selection.d.ts +16 -0
  191. package/dist/lib/context-router/context-route-selection.js +72 -0
  192. package/dist/lib/context-router/context-route-terms.d.ts +13 -0
  193. package/dist/lib/context-router/context-route-terms.js +202 -0
  194. package/dist/lib/context-router/context-route-types.d.ts +101 -0
  195. package/dist/lib/context-router/context-route-types.js +1 -0
  196. package/dist/lib/context-router/context-route.d.ts +2 -0
  197. package/dist/lib/context-router/context-route.js +127 -0
  198. package/dist/lib/context-units-migration.d.ts +13 -0
  199. package/dist/lib/context-units-migration.js +217 -0
  200. package/dist/lib/design-authority-binding.d.ts +7 -0
  201. package/dist/lib/design-authority-binding.js +96 -0
  202. package/dist/lib/design-authority-closure.d.ts +3 -0
  203. package/dist/lib/design-authority-closure.js +201 -0
  204. package/dist/lib/design-authority-delta-codec-primitives.d.ts +10 -0
  205. package/dist/lib/design-authority-delta-codec-primitives.js +58 -0
  206. package/dist/lib/design-authority-delta-codec.d.ts +2 -0
  207. package/dist/lib/design-authority-delta-codec.js +193 -0
  208. package/dist/lib/design-authority-delta-types.d.ts +65 -0
  209. package/dist/lib/design-authority-delta-types.js +6 -0
  210. package/dist/lib/design-authority-delta-validation.d.ts +2 -0
  211. package/dist/lib/design-authority-delta-validation.js +16 -0
  212. package/dist/lib/design-authority-digest.d.ts +8 -0
  213. package/dist/lib/design-authority-digest.js +36 -0
  214. package/dist/lib/design-authority-files.d.ts +9 -0
  215. package/dist/lib/design-authority-files.js +62 -0
  216. package/dist/lib/design-authority-format.d.ts +2 -0
  217. package/dist/lib/design-authority-format.js +93 -0
  218. package/dist/lib/design-authority-links.d.ts +10 -0
  219. package/dist/lib/design-authority-links.js +137 -0
  220. package/dist/lib/design-authority-manifest.d.ts +4 -0
  221. package/dist/lib/design-authority-manifest.js +144 -0
  222. package/dist/lib/design-authority-tokens.d.ts +9 -0
  223. package/dist/lib/design-authority-tokens.js +45 -0
  224. package/dist/lib/design-authority-types.d.ts +80 -0
  225. package/dist/lib/design-authority-types.js +23 -0
  226. package/dist/lib/design-md-tool-adapter.d.ts +9 -0
  227. package/dist/lib/design-md-tool-adapter.js +152 -0
  228. package/dist/lib/design-md-tool-normalization.d.ts +7 -0
  229. package/dist/lib/design-md-tool-normalization.js +78 -0
  230. package/dist/lib/design-md-tool-types.d.ts +99 -0
  231. package/dist/lib/design-md-tool-types.js +8 -0
  232. package/dist/lib/design-resource-handoff-input-types.d.ts +1 -1
  233. package/dist/lib/design-resource-handoff-manifest-projection.js +3 -0
  234. package/dist/lib/design-resource-handoff-shape.js +14 -2
  235. package/dist/lib/design-resource-handoff-types.d.ts +3 -0
  236. package/dist/lib/design-resource-handoff-validation.js +16 -4
  237. package/dist/lib/design-resource-implementation-feasibility-validation-support.js +1 -1
  238. package/dist/lib/design-resource-recovery-current.js +22 -0
  239. package/dist/lib/design-resource-recovery-shape.js +64 -7
  240. package/dist/lib/design-resource-recovery-types.d.ts +4 -1
  241. package/dist/lib/design-resource-symbolic-fact-shape.js +7 -1
  242. package/dist/lib/design-resource-symbolic-fact-types.d.ts +3 -0
  243. package/dist/lib/design-resource-symbolic-fact-validation.js +15 -3
  244. package/dist/lib/doctor.d.ts +2 -1
  245. package/dist/lib/doctor.js +29 -1
  246. package/dist/lib/fs.js +1 -1
  247. package/dist/lib/long-task-acceptance-reachability-claims.d.ts +2 -0
  248. package/dist/lib/long-task-acceptance-reachability-claims.js +279 -0
  249. package/dist/lib/long-task-acceptance-reachability-design.d.ts +2 -0
  250. package/dist/lib/long-task-acceptance-reachability-design.js +96 -0
  251. package/dist/lib/long-task-acceptance-reachability-external.d.ts +9 -0
  252. package/dist/lib/long-task-acceptance-reachability-external.js +123 -0
  253. package/dist/lib/long-task-acceptance-reachability-helpers.d.ts +64 -0
  254. package/dist/lib/long-task-acceptance-reachability-helpers.js +473 -0
  255. package/dist/lib/long-task-acceptance-reachability-semantic.d.ts +2 -0
  256. package/dist/lib/long-task-acceptance-reachability-semantic.js +122 -0
  257. package/dist/lib/long-task-acceptance-reachability-types.d.ts +91 -0
  258. package/dist/lib/long-task-acceptance-reachability-types.js +1 -0
  259. package/dist/lib/long-task-acceptance-reachability.d.ts +4 -0
  260. package/dist/lib/long-task-acceptance-reachability.js +115 -0
  261. package/dist/lib/long-task-activation-validation.d.ts +6 -0
  262. package/dist/lib/long-task-activation-validation.js +72 -69
  263. package/dist/lib/long-task-active-authority-lock-context.d.ts +4 -0
  264. package/dist/lib/long-task-active-authority-lock-context.js +29 -0
  265. package/dist/lib/long-task-applicability-identity.d.ts +25 -0
  266. package/dist/lib/long-task-applicability-identity.js +60 -0
  267. package/dist/lib/long-task-authoring-preflight-diagnostics.js +8 -0
  268. package/dist/lib/long-task-authoring-preflight-types.d.ts +2 -0
  269. package/dist/lib/long-task-authoring-preflight-types.js +9 -0
  270. package/dist/lib/long-task-authoring-preflight.js +18 -2
  271. package/dist/lib/long-task-authority-material-diff.js +4 -0
  272. package/dist/lib/long-task-authority-materials.js +19 -0
  273. package/dist/lib/long-task-authority-policy.d.ts +3 -0
  274. package/dist/lib/long-task-authority-policy.js +3 -0
  275. package/dist/lib/long-task-authority-revision-details.js +2 -1
  276. package/dist/lib/long-task-authority-types.d.ts +2 -0
  277. package/dist/lib/long-task-authority.js +2 -0
  278. package/dist/lib/long-task-check-shape.js +6 -1
  279. package/dist/lib/long-task-claim-definitions.js +1 -3
  280. package/dist/lib/long-task-claim-semantic-proof-floor.d.ts +3 -0
  281. package/dist/lib/long-task-claim-semantic-proof-floor.js +78 -0
  282. package/dist/lib/long-task-claims.d.ts +0 -18
  283. package/dist/lib/long-task-claims.js +15 -14
  284. package/dist/lib/long-task-command-process.js +3 -0
  285. package/dist/lib/long-task-compact-authoring.js +3 -0
  286. package/dist/lib/long-task-compact-projections.js +10 -0
  287. package/dist/lib/long-task-complete-delivery-evidence-types.d.ts +38 -0
  288. package/dist/lib/long-task-complete-delivery-evidence-types.js +1 -0
  289. package/dist/lib/long-task-completion-types.d.ts +109 -0
  290. package/dist/lib/long-task-completion-types.js +1 -0
  291. package/dist/lib/long-task-conformance-policy.d.ts +2 -1
  292. package/dist/lib/long-task-conformance-policy.js +11 -4
  293. package/dist/lib/long-task-context-authority-topology.js +6 -4
  294. package/dist/lib/long-task-contract-types.d.ts +52 -1
  295. package/dist/lib/long-task-counterfactual-sandbox.d.ts +7 -1
  296. package/dist/lib/long-task-counterfactual-sandbox.js +86 -6
  297. package/dist/lib/long-task-delivery-compiler-preflight.d.ts +24 -0
  298. package/dist/lib/long-task-delivery-compiler-preflight.js +32 -0
  299. package/dist/lib/long-task-delivery-compiler.d.ts +1 -0
  300. package/dist/lib/long-task-delivery-compiler.js +59 -44
  301. package/dist/lib/long-task-delivery-parser.d.ts +3 -0
  302. package/dist/lib/long-task-delivery-parser.js +26 -8
  303. package/dist/lib/long-task-delivery-types.d.ts +2 -0
  304. package/dist/lib/long-task-delivery-types.js +2 -0
  305. package/dist/lib/long-task-delivery-validation.d.ts +6 -1
  306. package/dist/lib/long-task-delivery-validation.js +19 -4
  307. package/dist/lib/long-task-design-feasibility-binding.d.ts +1 -0
  308. package/dist/lib/long-task-design-feasibility-binding.js +3 -3
  309. package/dist/lib/long-task-design-feasibility-source-closure.js +11 -2
  310. package/dist/lib/long-task-design-obligation.d.ts +50 -0
  311. package/dist/lib/long-task-design-obligation.js +99 -0
  312. package/dist/lib/long-task-design-resource-handoff.d.ts +3 -1
  313. package/dist/lib/long-task-design-resource-handoff.js +36 -12
  314. package/dist/lib/long-task-design-resource-method-binding.js +12 -0
  315. package/dist/lib/long-task-effective-external-takeover.d.ts +15 -0
  316. package/dist/lib/long-task-effective-external-takeover.js +109 -0
  317. package/dist/lib/long-task-effective-external-ui-takeover.d.ts +5 -0
  318. package/dist/lib/long-task-effective-external-ui-takeover.js +117 -0
  319. package/dist/lib/long-task-evidence-capability-codec.js +91 -0
  320. package/dist/lib/long-task-evidence-capability-runtime.js +62 -14
  321. package/dist/lib/long-task-evidence-capability-types.d.ts +3 -2
  322. package/dist/lib/long-task-evidence-v2.d.ts +6 -1
  323. package/dist/lib/long-task-evidence-v2.js +253 -170
  324. package/dist/lib/long-task-execution-observation.d.ts +7 -0
  325. package/dist/lib/long-task-execution-observation.js +21 -4
  326. package/dist/lib/long-task-expected-authority.d.ts +4 -0
  327. package/dist/lib/long-task-expected-authority.js +126 -0
  328. package/dist/lib/long-task-external-confirmation-artifacts.d.ts +9 -0
  329. package/dist/lib/long-task-external-confirmation-artifacts.js +138 -0
  330. package/dist/lib/long-task-external-confirmation-attestation.d.ts +20 -0
  331. package/dist/lib/long-task-external-confirmation-attestation.js +115 -0
  332. package/dist/lib/long-task-external-confirmation-challenge.d.ts +23 -0
  333. package/dist/lib/long-task-external-confirmation-challenge.js +164 -0
  334. package/dist/lib/long-task-external-confirmation-context.d.ts +14 -0
  335. package/dist/lib/long-task-external-confirmation-context.js +53 -0
  336. package/dist/lib/long-task-external-confirmation-evaluation.d.ts +11 -0
  337. package/dist/lib/long-task-external-confirmation-evaluation.js +454 -0
  338. package/dist/lib/long-task-external-confirmation-expected.d.ts +8 -0
  339. package/dist/lib/long-task-external-confirmation-expected.js +200 -0
  340. package/dist/lib/long-task-external-confirmation-identity.d.ts +10 -0
  341. package/dist/lib/long-task-external-confirmation-identity.js +77 -0
  342. package/dist/lib/long-task-external-confirmation-plan.d.ts +25 -0
  343. package/dist/lib/long-task-external-confirmation-plan.js +148 -0
  344. package/dist/lib/long-task-external-confirmation-preparation.d.ts +4 -0
  345. package/dist/lib/long-task-external-confirmation-preparation.js +100 -0
  346. package/dist/lib/long-task-external-confirmation-shape.d.ts +8 -0
  347. package/dist/lib/long-task-external-confirmation-shape.js +387 -0
  348. package/dist/lib/long-task-external-confirmation-state.d.ts +10 -0
  349. package/dist/lib/long-task-external-confirmation-state.js +109 -0
  350. package/dist/lib/long-task-external-confirmation-types.d.ts +195 -0
  351. package/dist/lib/long-task-external-confirmation-types.js +1 -0
  352. package/dist/lib/long-task-final-integrity.d.ts +2 -0
  353. package/dist/lib/long-task-final-integrity.js +21 -10
  354. package/dist/lib/long-task-final-v2.d.ts +7 -2
  355. package/dist/lib/long-task-final-v2.js +179 -55
  356. package/dist/lib/long-task-finalization-identity.d.ts +27 -0
  357. package/dist/lib/long-task-finalization-identity.js +58 -0
  358. package/dist/lib/long-task-finding-context.d.ts +1 -1
  359. package/dist/lib/long-task-finding-context.js +139 -13
  360. package/dist/lib/long-task-freshness.d.ts +27 -0
  361. package/dist/lib/long-task-freshness.js +128 -5
  362. package/dist/lib/long-task-git.js +3 -3
  363. package/dist/lib/long-task-material-input-closure.d.ts +3 -0
  364. package/dist/lib/long-task-material-input-closure.js +92 -0
  365. package/dist/lib/long-task-obligation-authority-resolution.d.ts +12 -0
  366. package/dist/lib/long-task-obligation-authority-resolution.js +57 -0
  367. package/dist/lib/long-task-obligation-semantic-identity.d.ts +16 -0
  368. package/dist/lib/long-task-obligation-semantic-identity.js +116 -0
  369. package/dist/lib/long-task-observation-authority.d.ts +11 -0
  370. package/dist/lib/long-task-observation-authority.js +137 -6
  371. package/dist/lib/long-task-process-table.d.ts +2 -5
  372. package/dist/lib/long-task-process-table.js +21 -53
  373. package/dist/lib/long-task-process-tree.d.ts +0 -1
  374. package/dist/lib/long-task-process-tree.js +24 -54
  375. package/dist/lib/long-task-proof-adequacy.d.ts +12 -0
  376. package/dist/lib/long-task-proof-adequacy.js +57 -0
  377. package/dist/lib/long-task-proof-capability-floor.d.ts +6 -0
  378. package/dist/lib/long-task-proof-capability-floor.js +137 -0
  379. package/dist/lib/long-task-repair-frontier-checks.d.ts +8 -0
  380. package/dist/lib/long-task-repair-frontier-checks.js +93 -0
  381. package/dist/lib/long-task-repair-frontier-groups.d.ts +2 -0
  382. package/dist/lib/long-task-repair-frontier-groups.js +64 -0
  383. package/dist/lib/long-task-repair-frontier-utils.d.ts +6 -0
  384. package/dist/lib/long-task-repair-frontier-utils.js +27 -0
  385. package/dist/lib/long-task-repair-frontier.d.ts +14 -0
  386. package/dist/lib/long-task-repair-frontier.js +132 -0
  387. package/dist/lib/long-task-risk.d.ts +3 -2
  388. package/dist/lib/long-task-risk.js +73 -24
  389. package/dist/lib/long-task-root-shape.js +148 -8
  390. package/dist/lib/long-task-runner-freeze.d.ts +2 -1
  391. package/dist/lib/long-task-runner-freeze.js +23 -8
  392. package/dist/lib/long-task-runtime-types.d.ts +34 -40
  393. package/dist/lib/long-task-semantic-assurance-policy.js +2 -11
  394. package/dist/lib/long-task-semantic-contract-types.d.ts +2 -1
  395. package/dist/lib/long-task-semantic-drift-migration.js +48 -2
  396. package/dist/lib/long-task-semantic-fact-binding-types.d.ts +20 -0
  397. package/dist/lib/long-task-semantic-fact-closure.d.ts +5 -1
  398. package/dist/lib/long-task-semantic-fact-closure.js +33 -5
  399. package/dist/lib/long-task-semantic-fact-contract-closure.js +176 -1
  400. package/dist/lib/long-task-semantic-fact-contract-proofs.js +18 -1
  401. package/dist/lib/long-task-semantic-fact-input-closure.d.ts +16 -2
  402. package/dist/lib/long-task-semantic-fact-input-closure.js +138 -15
  403. package/dist/lib/long-task-semantic-fact-provenance-closure.js +1 -1
  404. package/dist/lib/long-task-semantic-fact-shape.d.ts +2 -1
  405. package/dist/lib/long-task-semantic-fact-shape.js +35 -1
  406. package/dist/lib/long-task-semantic-proof-adequacy.d.ts +2 -0
  407. package/dist/lib/long-task-semantic-proof-adequacy.js +19 -0
  408. package/dist/lib/long-task-semantic-proof-profile.d.ts +5 -0
  409. package/dist/lib/long-task-semantic-proof-profile.js +187 -0
  410. package/dist/lib/long-task-shape-primitives.d.ts +1 -1
  411. package/dist/lib/long-task-shape-primitives.js +5 -0
  412. package/dist/lib/long-task-source-anchors.d.ts +10 -0
  413. package/dist/lib/long-task-source-anchors.js +102 -0
  414. package/dist/lib/long-task-source-authority-types.d.ts +46 -0
  415. package/dist/lib/long-task-source-claim-validation.js +36 -0
  416. package/dist/lib/long-task-source-conservation-facts.d.ts +8 -0
  417. package/dist/lib/long-task-source-conservation-facts.js +57 -0
  418. package/dist/lib/long-task-source-conservation-types.d.ts +34 -0
  419. package/dist/lib/long-task-source-conservation-types.js +1 -0
  420. package/dist/lib/long-task-source-conservation.d.ts +7 -0
  421. package/dist/lib/long-task-source-conservation.js +110 -0
  422. package/dist/lib/long-task-source-fragments.d.ts +6 -0
  423. package/dist/lib/long-task-source-fragments.js +219 -0
  424. package/dist/lib/long-task-source-projection-resolution.d.ts +5 -0
  425. package/dist/lib/long-task-source-projection-resolution.js +57 -0
  426. package/dist/lib/long-task-source-projection-validation.d.ts +17 -0
  427. package/dist/lib/long-task-source-projection-validation.js +154 -0
  428. package/dist/lib/long-task-source-shape.js +14 -6
  429. package/dist/lib/long-task-source-supersession.d.ts +5 -0
  430. package/dist/lib/long-task-source-supersession.js +138 -0
  431. package/dist/lib/long-task-stage-policy.d.ts +7 -2
  432. package/dist/lib/long-task-stage-policy.js +67 -23
  433. package/dist/lib/long-task-state.d.ts +18 -4
  434. package/dist/lib/long-task-state.js +319 -33
  435. package/dist/lib/long-task-static-observation-freeze.js +4 -3
  436. package/dist/lib/long-task-status-projection.d.ts +3 -1
  437. package/dist/lib/long-task-status-projection.js +44 -13
  438. package/dist/lib/long-task-status-v2.d.ts +10 -6
  439. package/dist/lib/long-task-status-v2.js +70 -58
  440. package/dist/lib/long-task-target-policy.d.ts +8 -3
  441. package/dist/lib/long-task-target-policy.js +40 -9
  442. package/dist/lib/long-task-terminal-finalization.d.ts +12 -0
  443. package/dist/lib/long-task-terminal-finalization.js +190 -0
  444. package/dist/lib/long-task-ui-design-policy.js +15 -4
  445. package/dist/lib/long-task-verifier-counterfactuals.d.ts +11 -0
  446. package/dist/lib/long-task-verifier-counterfactuals.js +96 -0
  447. package/dist/lib/long-task-verifier-execution.d.ts +9 -0
  448. package/dist/lib/long-task-verifier-execution.js +67 -0
  449. package/dist/lib/long-task-verifier-identity.js +16 -5
  450. package/dist/lib/long-task-verifier-v2.js +52 -65
  451. package/dist/lib/long-task-windows-job-supervisor-helper.d.ts +1 -0
  452. package/dist/lib/long-task-windows-job-supervisor-helper.js +104 -0
  453. package/dist/lib/long-task-windows-job-supervisor-protocol.d.ts +28 -0
  454. package/dist/lib/long-task-windows-job-supervisor-protocol.js +124 -0
  455. package/dist/lib/long-task-windows-job-supervisor-result.d.ts +11 -0
  456. package/dist/lib/long-task-windows-job-supervisor-result.js +152 -0
  457. package/dist/lib/long-task-windows-job-supervisor.d.ts +2 -0
  458. package/dist/lib/long-task-windows-job-supervisor.js +126 -0
  459. package/dist/lib/long-task-workspace-scope.d.ts +1 -0
  460. package/dist/lib/long-task-workspace-scope.js +4 -1
  461. package/dist/lib/long-task-workspace.d.ts +1 -0
  462. package/dist/lib/long-task-workspace.js +10 -0
  463. package/dist/lib/migrations.js +43 -2
  464. package/dist/lib/repository-path-safety.d.ts +1 -0
  465. package/dist/lib/repository-path-safety.js +3 -3
  466. package/dist/lib/semantic-fact-input-shape.d.ts +7 -2
  467. package/dist/lib/semantic-fact-input-shape.js +25 -1
  468. package/dist/lib/semantic-fact-inventory-types.d.ts +8 -2
  469. package/dist/lib/semantic-fact-policy-census.d.ts +1 -1
  470. package/dist/lib/semantic-fact-policy-census.js +5 -2
  471. package/dist/lib/semantic-fact-policy.d.ts +1 -1
  472. package/dist/lib/semantic-fact-policy.js +2 -2
  473. package/dist/lib/semantic-fact-proof-shape.d.ts +1 -1
  474. package/dist/lib/semantic-fact-property-shape.d.ts +1 -1
  475. package/dist/lib/validators.d.ts +3 -0
  476. package/dist/lib/validators.js +45 -157
  477. package/dist/public-api-core.d.ts +12 -0
  478. package/dist/public-api-core.js +12 -0
  479. package/dist/public-api-long-task.d.ts +10 -0
  480. package/dist/public-api-long-task.js +10 -0
  481. package/dist/public-types.d.ts +5 -1
  482. package/dist/schemas/design-authority-delta-assessment-v1.schema.json +191 -0
  483. package/dist/schemas/long-task-delivery-v2/long-task-delivery-v2.schema.json +166 -2
  484. package/dist/schemas/long-task-external-confirmation-record-v1.schema.json +155 -0
  485. package/dist/schemas/long-task-external-confirmation-record-v2.schema.json +209 -0
  486. package/migrations/README.md +99 -0
  487. package/package.json +7 -5
  488. package/source-mappings.yaml +18 -0
@@ -2,9 +2,13 @@ import path from "node:path";
2
2
  import { compileDeliveryContract } from "./long-task-delivery-compiler.js";
3
3
  import { authorityRevisionDecisionNextAction } from "./long-task-authority-revision-brief.js";
4
4
  import { projectAuthorityRevisionDecision } from "./long-task-authority-revision-summary.js";
5
- import { runDeliveryFinalGate } from "./long-task-final-v2.js";
5
+ import { externalConfirmationFindings, runDeliveryFinalGate, } from "./long-task-final-v2.js";
6
+ import { evaluateExternalConfirmations } from "./long-task-external-confirmation-plan.js";
7
+ import { captureFinalizationIdentity, finalizationIdentityDigest, } from "./long-task-finalization-identity.js";
8
+ import { enrichFinding } from "./long-task-finding-context.js";
9
+ import { deriveRepairFrontier } from "./long-task-repair-frontier.js";
6
10
  import { deliveryCompileFreshness } from "./long-task-freshness.js";
7
- import { activeAuthorityLockExists, clearActiveBindingCas, inspectCompiledCache, loadActiveLongTaskAuthority, readActiveLongTaskBinding, readFinalReceipt, readPendingAuthorityRevision, readProgressRecords, } from "./long-task-state.js";
11
+ import { activeAuthorityLockExists, inspectCompiledCache, loadActiveLongTaskAuthority, readActiveLongTaskBinding, readFinalReceipt, readPendingAuthorityRevision, readProgressRecords, } from "./long-task-state.js";
8
12
  import { projectDeliveryStatus, } from "./long-task-status-projection.js";
9
13
  import { captureWorkspaceManifest, currentGitState, repositoryRoot, } from "./long-task-workspace.js";
10
14
  export async function readDeliveryStatus(workdir) {
@@ -34,6 +38,28 @@ async function readDeliveryStatusForAuthority(active) {
34
38
  catch (error) {
35
39
  receiptError = message(error);
36
40
  }
41
+ const externalConfirmationResults = await evaluateExternalConfirmations(compiled, compiled.repository_root, compiled.workdir, current, {
42
+ git_head: current.git_head,
43
+ git_tree: current.fingerprint.head_tree,
44
+ snapshot_sha256: current.snapshot_sha256,
45
+ });
46
+ let finalizationIdentitySha256 = null;
47
+ try {
48
+ finalizationIdentitySha256 = finalizationIdentityDigest(await captureFinalizationIdentity({
49
+ repository: compiled.repository_root,
50
+ active,
51
+ compiled,
52
+ candidate: {
53
+ git_head: current.git_head,
54
+ git_tree: current.fingerprint.head_tree,
55
+ snapshot_sha256: current.snapshot_sha256,
56
+ },
57
+ workspace_fingerprint: current.fingerprint,
58
+ }));
59
+ }
60
+ catch (error) {
61
+ receiptError ??= `finalization_identity_invalid:${message(error)}`;
62
+ }
37
63
  const projection = projectDeliveryStatus({
38
64
  compiled,
39
65
  manifest: current,
@@ -41,6 +67,21 @@ async function readDeliveryStatusForAuthority(active) {
41
67
  progress,
42
68
  receipt,
43
69
  receiptError,
70
+ finalizationIdentitySha256,
71
+ externalConfirmations: externalConfirmationResults,
72
+ });
73
+ const findings = [
74
+ ...projection.findings,
75
+ ...externalConfirmationFindings(compiled, externalConfirmationResults),
76
+ ...(cacheStatus === "compiled_cache_matching"
77
+ ? []
78
+ : [cacheDiagnostic(cacheStatus)]),
79
+ ].map((finding) => enrichFinding(compiled, finding));
80
+ const repairFrontier = deriveRepairFrontier({
81
+ compiled,
82
+ manifest: current,
83
+ progress,
84
+ findings,
44
85
  });
45
86
  return {
46
87
  schema_version: "long-task-status-v2",
@@ -49,11 +90,12 @@ async function readDeliveryStatusForAuthority(active) {
49
90
  effective_risk: compiled.effective_risk,
50
91
  workspace_snapshot_sha256: current.snapshot_sha256,
51
92
  acceptance_authority: "live_final_gate_required",
52
- acceptance_scope: "declared_machine_authority",
93
+ acceptance_scope: "declared_delivery_authority",
53
94
  native_goal_effect: "none",
54
95
  final_result: projection.finalResult,
55
96
  final_workflow_status: projection.finalWorkflowStatus,
56
97
  external_confirmations: compiled.global.acceptance.external_confirmations,
98
+ external_confirmation_results: externalConfirmationResults,
57
99
  target_profile: compiled.task.target_profile,
58
100
  target_state: projection.targetState,
59
101
  outcomes: projection.outcomes,
@@ -67,12 +109,8 @@ async function readDeliveryStatusForAuthority(active) {
67
109
  pending_authority_revision: pending
68
110
  ? projectAuthorityRevisionDecision(pending)
69
111
  : null,
70
- findings: [
71
- ...projection.findings,
72
- ...(cacheStatus === "compiled_cache_matching"
73
- ? []
74
- : [cacheDiagnostic(cacheStatus)]),
75
- ],
112
+ findings,
113
+ repair_frontier: repairFrontier,
76
114
  };
77
115
  }
78
116
  export async function resumeDeliveryTask(workdir) {
@@ -103,11 +141,12 @@ export async function resumeDeliveryTask(workdir) {
103
141
  context_refs: compiled.task.context_refs,
104
142
  git,
105
143
  acceptance_authority: "live_final_gate_required",
106
- acceptance_scope: "declared_machine_authority",
144
+ acceptance_scope: "declared_delivery_authority",
107
145
  native_goal_effect: "none",
108
146
  last_gate: status.final_result,
109
147
  final_workflow_status: status.final_workflow_status,
110
148
  external_confirmations: status.external_confirmations,
149
+ external_confirmation_results: status.external_confirmation_results,
111
150
  target_profile: status.target_profile,
112
151
  target_state: status.target_state,
113
152
  outcomes: status.outcomes,
@@ -120,6 +159,7 @@ export async function resumeDeliveryTask(workdir) {
120
159
  progress_failing: status.progress_failing,
121
160
  pending_authority_revision: status.pending_authority_revision,
122
161
  recent_findings: status.findings,
162
+ repair_frontier: status.repair_frontier,
123
163
  next_safe_action: nextAction(status),
124
164
  };
125
165
  }
@@ -207,44 +247,23 @@ export async function stopCheckDeliveryTask(workdirInput, messageText = "") {
207
247
  if (active.workdir !== path.resolve(workdirInput))
208
248
  return { continue: false, reason: "active_task_workdir_mismatch" };
209
249
  try {
210
- const result = await runDeliveryFinalGate(active.workdir);
250
+ const result = await runDeliveryFinalGate(active.workdir, {
251
+ close_on_accept: true,
252
+ });
211
253
  if (result.workflow_status === "machine_accepted" ||
212
- result.workflow_status === "machine_accepted_external_pending") {
213
- try {
214
- await clearActiveBindingCas({
215
- repository_root: root,
216
- workdir: active.workdir,
217
- task_id: active.task_id,
218
- authority_revision: active.authority_revision,
219
- compiled_identity: active.active_authority_identity,
220
- worktree_identity: active.worktree_identity,
221
- });
222
- }
223
- catch (error) {
224
- if (message(error).includes("active_authority_clear_compare_and_swap_failed"))
225
- return {
226
- continue: false,
227
- reason: "active_authority_changed_after_final_gate",
228
- workflow_status: result.workflow_status,
229
- external_confirmations: result.external_confirmations,
230
- target_profile: result.target_profile,
231
- target_state: result.target_state,
232
- stage_results: result.stage_results,
233
- message: "Active Authority changed after the Live Final Gate; the accepted identity was not cleared.",
234
- };
235
- throw error;
236
- }
254
+ result.workflow_status === "delivery_accepted") {
237
255
  return {
238
256
  continue: true,
239
257
  reason: result.workflow_status,
240
258
  workflow_status: result.workflow_status,
241
259
  external_confirmations: result.external_confirmations,
260
+ external_confirmation_results: result.external_confirmation_results,
242
261
  target_profile: result.target_profile,
243
262
  target_state: result.target_state,
244
263
  stage_results: result.stage_results,
245
- acceptance_scope: "declared_machine_authority",
264
+ acceptance_scope: "declared_delivery_authority",
246
265
  native_goal_effect: "none",
247
- message: acceptedScopeMessage(result.workflow_status, result.external_confirmations, result.target_profile),
266
+ message: acceptedScopeMessage(result.workflow_status, result.target_profile),
248
267
  };
249
268
  }
250
269
  return {
@@ -252,6 +271,7 @@ export async function stopCheckDeliveryTask(workdirInput, messageText = "") {
252
271
  reason: `live_final_gate_${result.workflow_status}`,
253
272
  workflow_status: result.workflow_status,
254
273
  external_confirmations: result.external_confirmations,
274
+ external_confirmation_results: result.external_confirmation_results,
255
275
  target_profile: result.target_profile,
256
276
  target_state: result.target_state,
257
277
  stage_results: result.stage_results,
@@ -278,38 +298,30 @@ export async function closeDeliveryTask(workdir) {
278
298
  const active = await readActiveLongTaskBinding(root);
279
299
  if (!active || active.workdir !== path.resolve(workdir))
280
300
  throw new Error("active_task_missing_or_mismatched");
281
- const result = await runDeliveryFinalGate(active.workdir);
301
+ const result = await runDeliveryFinalGate(active.workdir, {
302
+ close_on_accept: true,
303
+ });
282
304
  if (result.workflow_status !== "machine_accepted" &&
283
- result.workflow_status !== "machine_accepted_external_pending")
305
+ result.workflow_status !== "delivery_accepted")
284
306
  throw new Error(`close_live_final_gate_failed:${result.workflow_status}`);
285
- await clearActiveBindingCas({
286
- repository_root: root,
287
- workdir: active.workdir,
288
- task_id: active.task_id,
289
- authority_revision: active.authority_revision,
290
- compiled_identity: active.active_authority_identity,
291
- worktree_identity: active.worktree_identity,
292
- });
293
307
  return {
294
308
  status: "closed",
295
309
  workflow_status: result.workflow_status,
296
310
  external_confirmations: result.external_confirmations,
311
+ external_confirmation_results: result.external_confirmation_results,
297
312
  target_profile: result.target_profile,
298
313
  target_state: result.target_state,
299
314
  stage_results: result.stage_results,
300
- acceptance_scope: "declared_machine_authority",
301
- closed_scope: "machine_authority",
315
+ acceptance_scope: "declared_delivery_authority",
316
+ closed_scope: "complete_long_task_authority",
302
317
  native_goal_effect: "none",
303
318
  };
304
319
  }
305
- function acceptedScopeMessage(workflowStatus, confirmations, targetProfile) {
306
- const scope = `Declared machine Authority accepted for target ${targetProfile.key}:${targetProfile.required_state} and cleared. This result has no direct effect on the platform-native Goal; before completing it, confirm current Goal/user meaning is fully represented by accepted Source and no revision, blocker, or omitted requirement remains.`;
307
- if (workflowStatus === "machine_accepted")
308
- return scope;
309
- const pending = confirmations
310
- .map((confirmation) => `${confirmation.key} (${confirmation.owner})`)
311
- .join(", ");
312
- return `${scope} Complete external delivery remains pending: ${pending}. Do not report complete external delivery.`;
320
+ function acceptedScopeMessage(workflowStatus, targetProfile) {
321
+ const route = workflowStatus === "machine_accepted"
322
+ ? "package-admitted machine evidence"
323
+ : "package-admitted machine evidence plus fresh exact external fulfillment records";
324
+ return `Declared complete-delivery Authority accepted for target ${targetProfile.key}:${targetProfile.required_state} through ${route} and cleared. This result has no direct effect on the platform-native Goal; before completing it, confirm current Goal/user meaning is fully represented by accepted Source and no revision, blocker, or omitted requirement remains.`;
313
325
  }
314
326
  function nextAction(status) {
315
327
  if (status.pending_authority_revision)
@@ -1,6 +1,11 @@
1
- import { type CompiledClaimsV2 } from "./long-task-claims.js";
2
- import type { DeliveryContractV2 } from "./long-task-delivery-types.js";
1
+ import type { CompiledClaimsV2 } from "./long-task-claims.js";
2
+ import type { AcceptanceReachabilityV1 } from "./long-task-acceptance-reachability-types.js";
3
+ import type { CompiledOutcomeV2, DeliveryContractV2 } from "./long-task-delivery-types.js";
3
4
  type Reporter = (message: string) => void;
4
- export declare function validateExecutionTargets(contract: DeliveryContractV2, report?: Reporter): void;
5
+ export declare function validateExecutionTargets(contract: DeliveryContractV2, report?: Reporter, options?: {
6
+ defer_completion_authority_closure?: boolean;
7
+ acceptance_reachability?: AcceptanceReachabilityV1 | null;
8
+ compiled_outcomes?: readonly CompiledOutcomeV2[];
9
+ }): void;
5
10
  export declare function validateExternalConfirmationImpacts(contract: DeliveryContractV2, claims: CompiledClaimsV2, report?: Reporter): void;
6
11
  export {};
@@ -1,4 +1,5 @@
1
- import { outcomeResultExternallyBlocked, } from "./long-task-claims.js";
1
+ import { machineAuthorizedAssertions } from "./long-task-acceptance-reachability-helpers.js";
2
+ import { resultApplicabilityEffectivelyExternallyBlocked, resultApplicabilityProfiles, } from "./long-task-effective-external-takeover.js";
2
3
  const FAMILY_CAPABILITY = {
3
4
  browser: "browser-runtime",
4
5
  native: "native-runtime",
@@ -7,13 +8,14 @@ const FAMILY_CAPABILITY = {
7
8
  process: "process-runtime",
8
9
  external: "external-runtime",
9
10
  };
10
- export function validateExecutionTargets(contract, report) {
11
+ export function validateExecutionTargets(contract, report, options = {}) {
11
12
  const targets = indexExecutionTargets(contract, report);
12
13
  const requiredTargetRefs = contract.task.target_profile.required_target_refs;
13
14
  validateRequiredTargetRefs(contract, targets, report);
14
15
  for (const [outcomeKey, check] of allChecks(contract))
15
16
  validateCheckTarget(outcomeKey, check, targets, report);
16
- validateCriticalPathTargets(contract, requiredTargetRefs, report);
17
+ if (!options.defer_completion_authority_closure)
18
+ validateCriticalPathTargets(contract, requiredTargetRefs, report, options.acceptance_reachability, options.compiled_outcomes);
17
19
  }
18
20
  function indexExecutionTargets(contract, report) {
19
21
  const targets = new Map();
@@ -90,23 +92,52 @@ function validateConformanceTarget(outcomeKey, check, target, report) {
90
92
  if (target.role !== "product" || check.execution_target.entrypoint !== "root")
91
93
  issue(report, "conformance_root_product_target_required", check.key);
92
94
  }
93
- function validateCriticalPathTargets(contract, requiredTargetRefs, report) {
95
+ function validateCriticalPathTargets(contract, requiredTargetRefs, report, reachability, compiledOutcomes) {
94
96
  for (const outcomeKey of contract.risk.facts.critical_user_path) {
95
97
  const outcome = contract.outcomes.find((candidate) => candidate.key === outcomeKey);
96
98
  if (!outcome)
97
99
  continue;
98
- if (outcomeResultExternallyBlocked(contract, outcome.key))
99
- continue;
100
+ const compiledOutcome = compiledOutcomes?.find((candidate) => candidate.key === outcome.key);
100
101
  for (const targetRef of requiredTargetRefs)
101
- if (!outcome.acceptance.checks.some((check) => provesSuccess(check, targetRef)))
102
+ if (!provesEverySuccessApplicability({
103
+ outcome,
104
+ compiledOutcome,
105
+ targetRef,
106
+ reachability,
107
+ useCompiledAuthority: compiledOutcomes !== undefined,
108
+ }))
102
109
  issue(report, "critical_path_required_target_proof_missing", `${outcome.key}:${targetRef}`);
103
110
  }
104
111
  }
105
- function provesSuccess(check, targetRef) {
112
+ function provesEverySuccessApplicability(options) {
113
+ const profiles = resultApplicabilityProfiles(options.outcome, {
114
+ target_ref: options.targetRef,
115
+ journey_role: "success",
116
+ });
117
+ if (!profiles.length)
118
+ return false;
119
+ return profiles.every((profile) => resultApplicabilityEffectivelyExternallyBlocked(options.reachability, options.outcome.key, profile.key, profile.target_ref) ||
120
+ (options.useCompiledAuthority
121
+ ? provesCompiledSuccess(options.compiledOutcome?.acceptance.checks ?? [], options.targetRef, profile.key)
122
+ : options.outcome.acceptance.checks.some((check) => provesDeclaredSuccess(check, options.targetRef, profile.key))));
123
+ }
124
+ function provesCompiledSuccess(checks, targetRef, applicabilityRef) {
125
+ return machineAuthorizedAssertions(checks, {
126
+ authority_scope: "ordinary_claim",
127
+ local_claim_ref: "result",
128
+ applicability_ref: applicabilityRef,
129
+ target_ref: targetRef,
130
+ check_journey_role: "success",
131
+ required_evidence_capability: "target_runtime",
132
+ }).some((match) => match.check.execution_target.entrypoint === "root");
133
+ }
134
+ function provesDeclaredSuccess(check, targetRef, applicabilityRef) {
106
135
  return (check.execution_target.target_ref === targetRef &&
107
136
  check.journey_roles.includes("success") &&
108
137
  check.execution_target.entrypoint === "root" &&
109
- provesTargetRuntime(check));
138
+ [...check.positive_assertions, ...check.negative_assertions].some((assertion) => assertion.claims.includes("result") &&
139
+ assertion.applicability_ref === applicabilityRef &&
140
+ assertion.evidence_capabilities.includes("target_runtime")));
110
141
  }
111
142
  function provesTargetRuntime(check) {
112
143
  return [...check.positive_assertions, ...check.negative_assertions].some((assertion) => assertion.evidence_capabilities.includes("target_runtime"));
@@ -0,0 +1,12 @@
1
+ import type { FinalReceiptV3, WorkspaceManifestV2 } from "./long-task-delivery-types.js";
2
+ import { type FinalizationIdentityV1 } from "./long-task-finalization-identity.js";
3
+ import { type ActiveAuthorityIdentityExpectation } from "./long-task-state.js";
4
+ export declare function finalizeDeliveryGateCas(input: {
5
+ provisional_result: Omit<FinalReceiptV3, "receipt_sha256" | "finalization_identity_sha256">;
6
+ expected_authority: ActiveAuthorityIdentityExpectation;
7
+ expected_finalization_identity: FinalizationIdentityV1;
8
+ repository: string;
9
+ workdir: string;
10
+ provisional_manifest: WorkspaceManifestV2;
11
+ close_on_accept: boolean;
12
+ }): Promise<FinalReceiptV3>;
@@ -0,0 +1,190 @@
1
+ import { access, mkdir, writeFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { compileDeliveryContract } from "./long-task-delivery-compiler.js";
4
+ import { evaluateExternalConfirmations } from "./long-task-external-confirmation-plan.js";
5
+ import { captureFinalizationIdentity, finalizationIdentityDigest, } from "./long-task-finalization-identity.js";
6
+ import { assertVerifierAuthorityCurrent, deliveryCompileFreshness, } from "./long-task-freshness.js";
7
+ import { activeAuthorityIdentityMatches, assertMatchingActiveBinding, commitFinalReceiptTransaction, loadActiveLongTaskAuthority, sealFinalReceipt, withActiveAuthorityLock, } from "./long-task-state.js";
8
+ import { canonicalValueJson } from "./strict-codec.js";
9
+ import { captureWorkspaceFingerprint, currentGitState, } from "./long-task-workspace.js";
10
+ import { workspaceFingerprintExcludedPrefixes } from "./long-task-workspace-manifest.js";
11
+ export async function finalizeDeliveryGateCas(input) {
12
+ const expectedDigest = finalizationIdentityDigest(input.expected_finalization_identity);
13
+ return withActiveAuthorityLock(input.repository, "finalize", async (lockToken) => {
14
+ let currentActive = null;
15
+ let currentIdentity = null;
16
+ let currentExternal = null;
17
+ try {
18
+ currentActive = (await loadActiveLongTaskAuthority(input.repository, {
19
+ migrate_legacy: false,
20
+ })).authority;
21
+ if (!currentActive ||
22
+ currentActive.workdir !== input.workdir ||
23
+ !activeAuthorityIdentityMatches(currentActive, input.expected_authority))
24
+ throw new FinalizationCasError("finalization_authority_compare_and_swap_failed");
25
+ await assertVerifierAuthorityCurrent(input.repository, currentActive.verifier_identity);
26
+ const stale = await deliveryCompileFreshness(currentActive.authority_snapshot);
27
+ if (stale.length)
28
+ throw new FinalizationCasError(`finalization_compiled_inputs_stale:${stale.join(",")}`);
29
+ const compiled = await compileDeliveryContract(input.workdir, input.repository, {
30
+ live_gate: true,
31
+ initial_task_base: currentActive.initial_task_base,
32
+ authority_revision: currentActive.authority_revision,
33
+ require_completion_gate: true,
34
+ });
35
+ await assertMatchingActiveBinding(compiled);
36
+ const current = await captureCurrentFinalizationState(input.repository, input.workdir, currentActive, compiled, input.provisional_manifest);
37
+ currentIdentity = current.identity;
38
+ assertExpectedFinalizationIdentity(currentIdentity, input.expected_finalization_identity);
39
+ currentExternal = await evaluateExternalConfirmations(compiled, input.repository, input.workdir, input.provisional_manifest, current.candidate);
40
+ if (canonicalValueJson(currentExternal) !==
41
+ canonicalValueJson(input.provisional_result.external_confirmation_results))
42
+ throw new FinalizationCasError("finalization_external_evaluation_changed");
43
+ await finalizationPhaseSignal("after_finalization_evaluation");
44
+ const unsigned = {
45
+ ...input.provisional_result,
46
+ external_confirmation_results: currentExternal,
47
+ finalization_identity_sha256: expectedDigest,
48
+ completed_at: new Date().toISOString(),
49
+ };
50
+ const accepted = acceptedWorkflowStatus(unsigned.workflow_status);
51
+ return await commitFinalReceiptTransaction({
52
+ lock_token: lockToken,
53
+ repository_root: input.repository,
54
+ workdir: input.workdir,
55
+ unsigned,
56
+ expected_authority: input.expected_authority,
57
+ close_on_accept: input.close_on_accept && accepted,
58
+ validate_current: async (phase) => {
59
+ await finalizationPhaseSignal(phase);
60
+ const refreshed = await captureCurrentFinalizationState(input.repository, input.workdir, currentActive, compiled, input.provisional_manifest);
61
+ assertExpectedFinalizationIdentity(refreshed.identity, input.expected_finalization_identity);
62
+ },
63
+ });
64
+ }
65
+ catch (error) {
66
+ const currentDigest = currentIdentity
67
+ ? finalizationIdentityDigest(currentIdentity)
68
+ : expectedDigest;
69
+ const failure = rejectedReceipt(input.provisional_result, currentExternal, currentDigest, error);
70
+ const activeNow = (await loadActiveLongTaskAuthority(input.repository, {
71
+ migrate_legacy: false,
72
+ }).catch(() => ({ authority: null }))).authority;
73
+ if (activeNow && activeNow.workdir === input.workdir) {
74
+ const currentExpectation = authorityExpectation(activeNow);
75
+ try {
76
+ return await commitFinalReceiptTransaction({
77
+ lock_token: lockToken,
78
+ repository_root: input.repository,
79
+ workdir: input.workdir,
80
+ unsigned: failure,
81
+ expected_authority: currentExpectation,
82
+ close_on_accept: false,
83
+ validate_current: async () => undefined,
84
+ });
85
+ }
86
+ catch {
87
+ // A failure Receipt is audit-only. If even its persistence CAS races,
88
+ // return a sealed non-accepted result without overwriting newer state.
89
+ }
90
+ }
91
+ return sealFinalReceipt(failure);
92
+ }
93
+ });
94
+ }
95
+ async function captureCurrentFinalizationState(repository, workdir, active, compiled, provisionalManifest) {
96
+ // Fingerprint capture runs git write-tree. The finalization lock excludes
97
+ // Harness mutations, while this ordering also prevents a same-process
98
+ // currentGitState status refresh from competing for the repository index.
99
+ const fingerprint = await captureWorkspaceFingerprint(repository, workspaceFingerprintExcludedPrefixes(repository, [workdir]));
100
+ const git = await currentGitState(repository);
101
+ if (git.dirty.length ||
102
+ fingerprint.head !== git.head ||
103
+ fingerprint.head_tree !== git.tree ||
104
+ provisionalManifest.git_head !== git.head ||
105
+ provisionalManifest.fingerprint.head_tree !== git.tree ||
106
+ provisionalManifest.fingerprint.identity !== fingerprint.identity ||
107
+ provisionalManifest.snapshot_sha256 !== fingerprint.identity)
108
+ throw new FinalizationCasError(`finalization_candidate_not_clean_or_stable:${git.dirty.join(",")}`);
109
+ const candidate = {
110
+ git_head: git.head,
111
+ git_tree: git.tree,
112
+ snapshot_sha256: fingerprint.identity,
113
+ };
114
+ return {
115
+ candidate,
116
+ identity: await captureFinalizationIdentity({
117
+ repository,
118
+ active,
119
+ compiled,
120
+ candidate,
121
+ workspace_fingerprint: fingerprint,
122
+ }),
123
+ };
124
+ }
125
+ function assertExpectedFinalizationIdentity(current, expected) {
126
+ if (finalizationIdentityDigest(current) !== finalizationIdentityDigest(expected))
127
+ throw new FinalizationCasError("finalization_identity_compare_and_swap_failed");
128
+ }
129
+ function rejectedReceipt(provisional, currentExternal, finalizationIdentitySha256, error) {
130
+ const reason = message(error);
131
+ const finding = {
132
+ code: reason.split(":", 1)[0] || "finalization_compare_and_swap_failed",
133
+ outcome_key: null,
134
+ check_key: null,
135
+ message: "Finalization identity or persistence changed during the Live Final Gate; no accepted terminal was published and Active Authority was not cleared.",
136
+ actual: { reason },
137
+ invalidation_reasons: [reason],
138
+ next_action: "Stop concurrent mutation, inspect the current Authority/candidate/external state, and rerun the complete Live Final Gate.",
139
+ };
140
+ return {
141
+ ...provisional,
142
+ workflow_status: "needs_work",
143
+ target_state: "not_accepted",
144
+ stage_results: Object.fromEntries(Object.keys(provisional.stage_results).map((key) => [key, "failed"])),
145
+ outcome_results: Object.fromEntries(Object.keys(provisional.outcome_results).map((key) => [key, "failed"])),
146
+ external_confirmation_results: currentExternal ?? provisional.external_confirmation_results,
147
+ findings: [...provisional.findings, finding],
148
+ finalization_identity_sha256: finalizationIdentitySha256,
149
+ completed_at: new Date().toISOString(),
150
+ };
151
+ }
152
+ function authorityExpectation(active) {
153
+ return {
154
+ task_id: active.task_id,
155
+ authority_revision: active.authority_revision,
156
+ compiled_identity: active.active_authority_identity,
157
+ worktree_identity: active.worktree_identity,
158
+ };
159
+ }
160
+ function acceptedWorkflowStatus(status) {
161
+ return status === "machine_accepted" || status === "delivery_accepted";
162
+ }
163
+ class FinalizationCasError extends Error {
164
+ }
165
+ async function finalizationPhaseSignal(phase) {
166
+ if (process.env.NODE_ENV !== "test")
167
+ return false;
168
+ const configured = process.env.TY_CONTEXT_TEST_FINALIZATION_SIGNAL_DIR;
169
+ if (!configured)
170
+ return false;
171
+ if (!path.isAbsolute(configured))
172
+ throw new FinalizationCasError("finalization_test_signal_directory_must_be_absolute");
173
+ const folder = path.resolve(configured);
174
+ await mkdir(folder, { recursive: true });
175
+ const started = path.join(folder, `${phase}.started`);
176
+ const release = path.join(folder, `${phase}.release`);
177
+ await writeFile(started, `${phase}\n`, { flag: "a" });
178
+ const deadline = Date.now() + 45_000;
179
+ while (Date.now() < deadline) {
180
+ if (await access(release)
181
+ .then(() => true)
182
+ .catch(() => false))
183
+ return true;
184
+ await new Promise((resolve) => setTimeout(resolve, 10));
185
+ }
186
+ throw new FinalizationCasError(`finalization_test_signal_timeout:${phase}`);
187
+ }
188
+ function message(error) {
189
+ return error instanceof Error ? error.message : String(error);
190
+ }
@@ -70,8 +70,11 @@ function validateDesignTargets({ outcome, binding, outcomeClaims, checks, carrie
70
70
  const methodAssertion = check.positive_assertions.find((item) => item.key === methodBinding.assertion_ref);
71
71
  if (!methodAssertion)
72
72
  issue(report, "ui_design_target_verification_assertion_unknown", `${label}:${methodBinding.method}:${methodBinding.assertion_ref}`);
73
- else if (!methodAssertion.evidence_capabilities.includes("design_method"))
74
- issue(report, "ui_design_target_verification_capability_required", `${label}:${methodBinding.method}:design_method`);
73
+ else {
74
+ validateDesignMethodAssertionClaims(target, methodAssertion, label, methodBinding.method, report);
75
+ if (!methodAssertion.evidence_capabilities.includes("design_method"))
76
+ issue(report, "ui_design_target_verification_capability_required", `${label}:${methodBinding.method}:design_method`);
77
+ }
75
78
  const conditionKeys = methodBinding.evidence_artifacts.map((item) => item.condition_key);
76
79
  unique(conditionKeys, "ui_design_method_evidence_condition_duplicate", `${label}:${methodBinding.method}`, report);
77
80
  if (!sameSet(conditionKeys, target.condition_keys))
@@ -108,8 +111,11 @@ function validateSymbolicDesignBindings(target, check, label, artifactPaths, rep
108
111
  const assertion = check.positive_assertions.find((item) => item.key === binding.assertion_ref);
109
112
  if (!assertion)
110
113
  issue(report, "ui_design_symbolic_method_assertion_unknown", `${label}:${binding.method}:${binding.assertion_ref}`);
111
- else if (!assertion.evidence_capabilities.includes("design_method"))
112
- issue(report, "ui_design_symbolic_method_capability_required", `${label}:${binding.method}`);
114
+ else {
115
+ validateDesignMethodAssertionClaims(target, assertion, label, binding.method, report);
116
+ if (!assertion.evidence_capabilities.includes("design_method"))
117
+ issue(report, "ui_design_symbolic_method_capability_required", `${label}:${binding.method}`);
118
+ }
113
119
  if (!binding.rule_expectations.length)
114
120
  issue(report, "ui_design_symbolic_rule_expectations_required", `${label}:${binding.method}`);
115
121
  unique(binding.rule_expectations.map((item) => item.obligation_ref), "ui_design_symbolic_obligation_duplicate", `${label}:${binding.method}`, report);
@@ -139,6 +145,11 @@ function validateSymbolicDesignBindings(target, check, label, artifactPaths, rep
139
145
  unique(certificate.expectations.map((item) => item.certificate_ref), "ui_design_symbolic_certificate_duplicate", label, report);
140
146
  validateSymbolicArtifactPath(certificate.artifact_path, target, check, label, artifactPaths, report);
141
147
  }
148
+ function validateDesignMethodAssertionClaims(target, assertion, label, method, report) {
149
+ for (const claimRef of assertion.claims)
150
+ if (claimRef === "result")
151
+ issue(report, "ui_design_target_verification_claim_not_owned", `${label}:${method}:${target.conformance_check_ref}:${assertion.key}:${claimRef}`);
152
+ }
142
153
  function validateSymbolicArtifactPath(artifactPath, _target, check, label, artifactPaths, report) {
143
154
  if (artifactPaths.has(artifactPath))
144
155
  issue(report, "ui_design_symbolic_evidence_artifact_reused", `${label}:${artifactPath}`);
@@ -0,0 +1,11 @@
1
+ import type { CheckExecutionResultV2, CompiledCheckV2, CompiledDeliveryContractV2, LongTaskFindingV2, RawCommandExecutionV2, WorkspaceManifestV2 } from "./long-task-delivery-types.js";
2
+ export declare function evaluateSelectedCounterfactuals(input: {
3
+ compiled: CompiledDeliveryContractV2;
4
+ selected_checks: readonly CompiledCheckV2[];
5
+ complete_checks: readonly CompiledCheckV2[];
6
+ snapshot_root: string;
7
+ snapshot_manifest: WorkspaceManifestV2;
8
+ observation_authority_paths: readonly string[];
9
+ baseline_results: readonly CheckExecutionResultV2[];
10
+ baseline_executions: ReadonlyMap<string, RawCommandExecutionV2>;
11
+ }): Promise<LongTaskFindingV2[]>;