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
@@ -0,0 +1,91 @@
1
+ import type { CompiledClaimsV2 } from "./long-task-claims.js";
2
+ import type { CompiledCheckV2, DeliveryContractV2, EvidenceCapabilityV2, ProofSurface } from "./long-task-delivery-types.js";
3
+ import type { SemanticFactManifestV1 } from "./semantic-fact-types.js";
4
+ export type AcceptanceReachabilityStatusV1 = "machine_admitted" | "external_fulfillable" | "unreachable";
5
+ export interface AcceptanceObligationReachabilityV1 {
6
+ obligation_ref: string;
7
+ source_obligation_ref: string;
8
+ outcome_key: string | null;
9
+ claim_ref: string;
10
+ applicability_ref: string;
11
+ fact_ref: string | null;
12
+ proof_ref: string | null;
13
+ method: string;
14
+ proof_surface: ProofSurface;
15
+ required_evidence_capabilities: EvidenceCapabilityV2[];
16
+ authority: "machine" | "external_confirmation" | "none";
17
+ confirmation_ref: string | null;
18
+ status: AcceptanceReachabilityStatusV1;
19
+ reason: string | null;
20
+ session_group: string | null;
21
+ }
22
+ export interface AcceptanceReachabilityV1 {
23
+ completion_authority: DeliveryContractV2["task"]["target_profile"]["completion_authority"];
24
+ total: number;
25
+ machine_admitted: number;
26
+ external_fulfillable: number;
27
+ unreachable: number;
28
+ obligations: AcceptanceObligationReachabilityV1[];
29
+ effective_external_routes: EffectiveExternalObligationV1[];
30
+ }
31
+ export interface MachineAuthorityRouteV1 {
32
+ check_key: string;
33
+ assertion_key: string;
34
+ proof_surface: ProofSurface;
35
+ method?: string;
36
+ required_evidence_capabilities: EvidenceCapabilityV2[];
37
+ semantic_identity?: string | null;
38
+ }
39
+ export interface ExternalAuthorityRouteV1 {
40
+ confirmation_ref: string;
41
+ obligation_key?: string;
42
+ proof_surface: ProofSurface;
43
+ method?: string;
44
+ required_evidence_capabilities?: EvidenceCapabilityV2[];
45
+ advisory_to_machine?: boolean;
46
+ authority_ambiguous?: boolean;
47
+ authority_unresolved?: boolean;
48
+ expected_authority_ref?: string;
49
+ semantic_identity?: string | null;
50
+ }
51
+ export interface ObligationAuthorityCandidatesV1 {
52
+ source_obligation_ref: string;
53
+ proof_surface_selection?: "required" | "optional";
54
+ machine_candidates: MachineAuthorityRouteV1[];
55
+ external_candidates: ExternalAuthorityRouteV1[];
56
+ }
57
+ export interface ExpectedExternalObligation {
58
+ source_obligation_ref: string;
59
+ outcome_key: string | null;
60
+ claim_ref: string;
61
+ local_claim_ref: string;
62
+ applicability_ref: string;
63
+ fact_ref: string | null;
64
+ proof_ref: string | null;
65
+ method: string;
66
+ proof_surface: ProofSurface;
67
+ evidence_capabilities: EvidenceCapabilityV2[];
68
+ expected_authority_ref: string;
69
+ confirmation_ref: string;
70
+ required_polarity: "positive" | "negative";
71
+ completion_role: "blocking" | "advisory";
72
+ acceptance_effect: "required" | "none";
73
+ semantic_identity: string | null;
74
+ machine_obligation_ref: string | null;
75
+ }
76
+ export interface EffectiveExternalObligationV1 extends AcceptanceObligationReachabilityV1 {
77
+ local_claim_ref: string;
78
+ target_ref: string;
79
+ expected_authority_ref: string;
80
+ required_polarity: "positive" | "negative";
81
+ completion_role: "blocking" | "advisory";
82
+ acceptance_effect: "required" | "none";
83
+ semantic_identity: string;
84
+ machine_obligation_ref: string | null;
85
+ }
86
+ export interface AcceptanceReachabilityInputV1 {
87
+ contract: DeliveryContractV2;
88
+ claims: CompiledClaimsV2;
89
+ manifest: SemanticFactManifestV1;
90
+ compiled_checks: CompiledCheckV2[];
91
+ }
@@ -0,0 +1,4 @@
1
+ import type { AcceptanceReachabilityInputV1, AcceptanceReachabilityV1 } from "./long-task-acceptance-reachability-types.js";
2
+ export type { AcceptanceObligationReachabilityV1, AcceptanceReachabilityStatusV1, AcceptanceReachabilityV1, EffectiveExternalObligationV1, } from "./long-task-acceptance-reachability-types.js";
3
+ export declare function compileAcceptanceReachability(input: AcceptanceReachabilityInputV1): AcceptanceReachabilityV1;
4
+ export declare function assertAcceptanceReachable(reachability: AcceptanceReachabilityV1): void;
@@ -0,0 +1,115 @@
1
+ import { compileClaimReachability } from "./long-task-acceptance-reachability-claims.js";
2
+ import { compileDesignFactReachability } from "./long-task-acceptance-reachability-design.js";
3
+ import { addUnboundBlockingConfirmationRows, validateExternalDeclarations, } from "./long-task-acceptance-reachability-external.js";
4
+ import { compileSemanticFactReachability } from "./long-task-acceptance-reachability-semantic.js";
5
+ import { effectiveExternalRouteRef, pendingExternalRow, } from "./long-task-acceptance-reachability-helpers.js";
6
+ import { claimApplicabilityProfile } from "./long-task-applicability-identity.js";
7
+ import { effectiveExternalObligationSemanticIdentity } from "./long-task-obligation-semantic-identity.js";
8
+ export function compileAcceptanceReachability(input) {
9
+ const rows = [];
10
+ const expectedExternal = [];
11
+ compileClaimReachability(input, rows, expectedExternal);
12
+ compileSemanticFactReachability(input, rows, expectedExternal);
13
+ compileDesignFactReachability(input, rows, expectedExternal);
14
+ addUnboundBlockingConfirmationRows(input.contract, rows, expectedExternal);
15
+ const externalMatches = validateExternalDeclarations(input.contract, input.manifest, expectedExternal, input.compiled_checks);
16
+ const effectiveExternal = applyExternalReachability(input, rows, expectedExternal, externalMatches);
17
+ const sorted = rows.sort((left, right) => left.source_obligation_ref.localeCompare(right.source_obligation_ref));
18
+ return {
19
+ completion_authority: input.contract.task.target_profile.completion_authority,
20
+ total: sorted.length,
21
+ machine_admitted: sorted.filter((row) => row.status === "machine_admitted")
22
+ .length,
23
+ external_fulfillable: sorted.filter((row) => row.status === "external_fulfillable").length,
24
+ unreachable: sorted.filter((row) => row.status === "unreachable").length,
25
+ obligations: sorted,
26
+ effective_external_routes: effectiveExternal.sort((left, right) => effectiveExternalRouteRef(left.confirmation_ref, left.source_obligation_ref).localeCompare(effectiveExternalRouteRef(right.confirmation_ref, right.source_obligation_ref))),
27
+ };
28
+ }
29
+ export function assertAcceptanceReachable(reachability) {
30
+ const unreachable = reachability.obligations.filter((row) => row.status === "unreachable");
31
+ if (unreachable.length)
32
+ throw new Error(`acceptance_obligation_unreachable:${unreachable
33
+ .map((row) => `${row.source_obligation_ref}:${row.reason}`)
34
+ .join(",")}`);
35
+ }
36
+ function applyExternalReachability(input, rows, expectedExternal, matches) {
37
+ const effective = [];
38
+ for (const expected of expectedExternal) {
39
+ const row = rows.find((candidate) => candidate.source_obligation_ref === expected.source_obligation_ref &&
40
+ candidate.confirmation_ref === expected.confirmation_ref);
41
+ if (expected.completion_role === "blocking" &&
42
+ input.contract.task.target_profile.completion_authority === "machine_only") {
43
+ if (row) {
44
+ row.status = "unreachable";
45
+ row.reason = "completion_authority_machine_only";
46
+ }
47
+ continue;
48
+ }
49
+ const match = matches.get(effectiveExternalRouteRef(expected.confirmation_ref, expected.source_obligation_ref));
50
+ if (!match) {
51
+ if (row) {
52
+ row.status = "unreachable";
53
+ row.reason = "external_confirmation_decomposition_invalid";
54
+ }
55
+ else {
56
+ rows.push({
57
+ ...pendingExternalRow(expected.source_obligation_ref, expected.outcome_key, expected.claim_ref, expected.applicability_ref, expected.fact_ref, expected.proof_ref, expected.method, expected.proof_surface, expected.evidence_capabilities, expected.confirmation_ref),
58
+ authority: "none",
59
+ reason: "external_confirmation_decomposition_invalid",
60
+ });
61
+ }
62
+ continue;
63
+ }
64
+ const applicability = claimApplicabilityProfile(input.contract, expected.outcome_key, expected.applicability_ref);
65
+ if (!applicability) {
66
+ if (row) {
67
+ row.status = "unreachable";
68
+ row.reason = "external_confirmation_decomposition_invalid";
69
+ }
70
+ continue;
71
+ }
72
+ const semanticIdentity = effectiveExternalObligationSemanticIdentity(input, expected);
73
+ if (!semanticIdentity) {
74
+ if (row) {
75
+ row.status = "unreachable";
76
+ row.reason = "external_confirmation_decomposition_invalid";
77
+ }
78
+ continue;
79
+ }
80
+ if (row) {
81
+ row.obligation_ref = match.obligation_key;
82
+ row.status = "external_fulfillable";
83
+ row.reason = null;
84
+ row.session_group = match.session_group;
85
+ }
86
+ effective.push({
87
+ obligation_ref: match.obligation_key,
88
+ source_obligation_ref: expected.source_obligation_ref,
89
+ outcome_key: expected.outcome_key,
90
+ claim_ref: expected.claim_ref,
91
+ local_claim_ref: expected.local_claim_ref,
92
+ applicability_ref: expected.applicability_ref,
93
+ target_ref: applicability.target_ref,
94
+ fact_ref: expected.fact_ref,
95
+ proof_ref: expected.proof_ref,
96
+ method: expected.method,
97
+ proof_surface: expected.proof_surface,
98
+ required_evidence_capabilities: [
99
+ ...expected.evidence_capabilities,
100
+ ].sort(),
101
+ expected_authority_ref: expected.expected_authority_ref,
102
+ required_polarity: expected.required_polarity,
103
+ authority: "external_confirmation",
104
+ confirmation_ref: expected.confirmation_ref,
105
+ status: "external_fulfillable",
106
+ reason: null,
107
+ session_group: match.session_group,
108
+ completion_role: expected.completion_role,
109
+ acceptance_effect: expected.acceptance_effect,
110
+ semantic_identity: semanticIdentity,
111
+ machine_obligation_ref: expected.machine_obligation_ref,
112
+ });
113
+ }
114
+ return effective;
115
+ }
@@ -1,16 +1,22 @@
1
1
  import type { AuthoringPreflightDiagnosticV1 } from "./long-task-authoring-preflight-types.js";
2
2
  import { type CompiledClaimsV2 } from "./long-task-claims.js";
3
3
  import type { CompiledCheckV2, CompiledOutcomeV2, CompiledSourceItemV2, ContextAuthoritySnapshotV2, DeliveryContractV2, WorkspaceManifestV2 } from "./long-task-delivery-types.js";
4
+ import { type ProofAdequacyByCheckV2 } from "./long-task-proof-adequacy.js";
4
5
  import { type RiskDecisionV2 } from "./long-task-risk.js";
6
+ import { type AcceptanceReachabilityV1 } from "./long-task-acceptance-reachability.js";
7
+ import type { DesignAuthorityIdentityV1 } from "./design-authority-types.js";
5
8
  export interface ActivationValidationResult {
6
9
  claims: CompiledClaimsV2 | null;
7
10
  risk: RiskDecisionV2 | null;
8
11
  source_hashes: Record<string, string> | null;
9
12
  source_items: CompiledSourceItemV2[] | null;
10
13
  context_snapshot: ContextAuthoritySnapshotV2 | null;
14
+ project_design_authority: DesignAuthorityIdentityV1 | null;
11
15
  workspace: WorkspaceManifestV2 | null;
12
16
  global_checks: CompiledCheckV2[];
13
17
  outcomes: CompiledOutcomeV2[];
18
+ proof_adequacy: ProofAdequacyByCheckV2 | null;
19
+ acceptance_reachability: AcceptanceReachabilityV1 | null;
14
20
  }
15
21
  export declare function validateContractForActivation(options: {
16
22
  contract: DeliveryContractV2;
@@ -1,13 +1,15 @@
1
- import { captureContextGraphSnapshot } from "./context-graph-snapshot.js";
1
+ import { captureContextGraphSnapshotWithPhysicalFiles } from "./context-graph-snapshot.js";
2
2
  import { addDiagnosticError } from "./long-task-authoring-preflight-diagnostics.js";
3
3
  import { compileProductClaimCoverage, } from "./long-task-claims.js";
4
4
  import { hashDeclaredFiles, validateCounterfactualPaths, validateTechnicalPaths, validateVerificationInputSeparation, } from "./long-task-delivery-preflight.js";
5
5
  import { validateClaimEvidenceSensitivity } from "./long-task-evidence-sensitivity-policy.js";
6
6
  import { validateSemanticConformance } from "./long-task-conformance-policy.js";
7
- import { deliveryContractStructureDiagnostics, validateDeliveryContractStructure, } from "./long-task-delivery-validation.js";
7
+ import { deliveryContractStructureDiagnostics, validateResolvedCompletionAuthorityClosure, validateDeliveryContractStructure, } from "./long-task-delivery-validation.js";
8
8
  import { validateRawExecutionObservationOwnership } from "./long-task-observation-ownership.js";
9
9
  import { validateLongTaskDesignResourceHandoffs } from "./long-task-design-resource-handoff.js";
10
+ import { exactExternalDesignObligationRefs } from "./long-task-design-obligation.js";
10
11
  import { validateLongTaskSemanticFactClosure } from "./long-task-semantic-fact-closure.js";
12
+ import { proofAdequacyCheckKey, validateLongTaskProofAdequacy, } from "./long-task-proof-adequacy.js";
11
13
  import { freezeDeliveryCheck } from "./long-task-runner-freeze.js";
12
14
  import { scopeDeliveryBindings } from "./long-task-scoped-binding.js";
13
15
  import { classifyLongTaskRisk, validateRiskProof, } from "./long-task-risk.js";
@@ -15,15 +17,21 @@ import { validateSourceContinuity } from "./long-task-source-continuity.js";
15
17
  import { compileSourceInventory } from "./long-task-source-inventory.js";
16
18
  import { validateSourceTargetContinuity } from "./long-task-source-target-continuity.js";
17
19
  import { validateSourceAnchors } from "./long-task-source-validation.js";
20
+ import { assertAcceptanceReachable, compileAcceptanceReachability, } from "./long-task-acceptance-reachability.js";
21
+ import { exactExternalClaimActualObligationRefsByAssertion } from "./long-task-acceptance-reachability-helpers.js";
18
22
  import { captureWorkspaceManifest, repoRelative, } from "./long-task-workspace.js";
19
23
  export async function validateContractForActivation(options) {
20
24
  const { contract, repository, workdir, mode } = options;
21
25
  const diagnostics = options.diagnostics ?? [];
26
+ const structureOptions = {
27
+ allowDeferredDesignComponentBindingClosure: true,
28
+ deferCompletionAuthorityClosure: true,
29
+ };
22
30
  if (mode === "collect")
23
- for (const error of deliveryContractStructureDiagnostics(contract))
31
+ for (const error of deliveryContractStructureDiagnostics(contract, structureOptions))
24
32
  addDiagnosticError(diagnostics, error);
25
33
  else
26
- validateDeliveryContractStructure(contract);
34
+ validateDeliveryContractStructure(contract, structureOptions);
27
35
  const claims = await attempt(mode, diagnostics, () => compileProductClaimCoverage(contract));
28
36
  if (mode === "fail_fast") {
29
37
  const decisions = contract.source_claims
@@ -45,15 +53,18 @@ export async function validateContractForActivation(options) {
45
53
  : undefined);
46
54
  return items;
47
55
  });
48
- await attempt(mode, diagnostics, () => validateLongTaskDesignResourceHandoffs(contract, repository));
56
+ const designHandoffs = await attempt(mode, diagnostics, () => validateLongTaskDesignResourceHandoffs(contract, repository, sourceItems ?? []));
57
+ const projectDesignAuthority = designHandoffs?.find((handoff) => handoff.project_design_authority_resolution.identity !== null)?.project_design_authority_resolution.identity ?? null;
49
58
  const risk = await attempt(mode, diagnostics, () => {
50
- const decision = classifyLongTaskRisk(contract);
51
- validateRiskProof(contract, decision);
52
- return decision;
59
+ return classifyLongTaskRisk(contract);
53
60
  });
54
- const context = await attempt(mode, diagnostics, () => captureContextGraphSnapshot(repository, contract.task.context_refs, contract.task.context_snapshot_mode));
55
- const semanticFactClosure = sourceItems && context
56
- ? await attempt(mode, diagnostics, () => validateLongTaskSemanticFactClosure(contract, repository, sourceItems, context.files))
61
+ const contextCapture = await attempt(mode, diagnostics, () => captureContextGraphSnapshotWithPhysicalFiles(repository, contract.task.context_refs, contract.task.context_snapshot_mode));
62
+ const context = contextCapture?.snapshot ?? null;
63
+ const semanticFactClosure = sourceItems && contextCapture
64
+ ? await attempt(mode, diagnostics, () => validateLongTaskSemanticFactClosure(contract, repository, sourceItems, contextCapture, designHandoffs ?? undefined))
65
+ : null;
66
+ const proofAdequacy = semanticFactClosure
67
+ ? await attempt(mode, diagnostics, () => validateLongTaskProofAdequacy(contract, semanticFactClosure.manifest, semanticFactClosure.expectations_by_check))
57
68
  : null;
58
69
  const workdirRelative = repoRelative(repository, workdir);
59
70
  const workspace = await attempt(mode, diagnostics, async () => {
@@ -64,45 +75,82 @@ export async function validateContractForActivation(options) {
64
75
  if (!workspace)
65
76
  return emptyCompiledResult(claims, risk, sourceHashes, sourceItems, context);
66
77
  const observationAuthorityPaths = [
67
- ...workspace.files
68
- .map((file) => file.path)
69
- .filter((file) => file === workdirRelative || file.startsWith(`${workdirRelative}/`)),
70
- `${workdirRelative}/delivery-contract.yaml`,
71
- ...Object.keys(sourceHashes ?? {}),
72
- ...(context?.files ?? []),
73
- ];
78
+ ...new Set([
79
+ ...workspace.files
80
+ .map((file) => file.path)
81
+ .filter((file) => file === workdirRelative || file.startsWith(`${workdirRelative}/`)),
82
+ `${workdirRelative}/delivery-contract.yaml`,
83
+ ...Object.keys(sourceHashes ?? {}),
84
+ ...(context?.files ?? []),
85
+ ...(designHandoffs ?? []).flatMap((handoff) => handoff.project_design_authority_resolution.member_paths),
86
+ ]),
87
+ ].sort((left, right) => Buffer.from(left).compare(Buffer.from(right)));
74
88
  const globalChecks = [];
75
89
  for (const check of contract.global.acceptance.checks) {
76
90
  const executionTarget = contract.task.execution_targets.find((target) => target.key === check.execution_target.target_ref);
77
91
  if (!executionTarget)
78
92
  continue;
79
- const frozen = await attempt(mode, diagnostics, () => freezeDeliveryCheck(check, null, repository, workspace, executionTarget, contract.task.execution_targets, [], [], contract.outcomes.flatMap((outcome) => scopeDeliveryBindings(outcome.key, outcome.technical.bindings)), contract.outcomes.flatMap((outcome) => outcome.product.owner.path_globs), sourceBackedExecutionTargets.get(executionTarget.key) ?? null, observationAuthorityPaths), null, check.key);
93
+ const frozen = await attempt(mode, diagnostics, () => freezeDeliveryCheck(check, null, repository, workspace, executionTarget, contract.task.execution_targets, [], [], contract.outcomes.flatMap((outcome) => scopeDeliveryBindings(outcome.key, outcome.technical.bindings)), contract.outcomes.flatMap((outcome) => outcome.product.owner.path_globs), sourceBackedExecutionTargets.get(executionTarget.key) ?? null, observationAuthorityPaths, proofAdequacy?.[proofAdequacyCheckKey(null, check.key)], new Set(), exactExternalClaimActualObligationRefsByAssertion(contract, null, check, proofAdequacy?.[proofAdequacyCheckKey(null, check.key)]
94
+ ?.expected_authority_refs ?? {})), null, check.key);
80
95
  if (frozen)
81
96
  globalChecks.push(frozen);
82
97
  }
83
98
  const outcomes = [];
84
99
  for (const outcome of contract.outcomes) {
85
100
  const checks = [];
101
+ const blockedDesignAssertionRefsByCheck = new Map();
86
102
  for (const check of outcome.acceptance.checks) {
87
103
  const executionTarget = contract.task.execution_targets.find((target) => target.key === check.execution_target.target_ref);
88
104
  if (!executionTarget)
89
105
  continue;
90
- const frozen = await attempt(mode, diagnostics, () => freezeDeliveryCheck(check, outcome.key, repository, workspace, executionTarget, contract.task.execution_targets, designTargetsForCheck(outcome, check.key), semanticFactClosure?.expectations_by_check.get(check.key) ?? [], scopeDeliveryBindings(outcome.key, outcome.technical.bindings), outcome.product.owner.path_globs, sourceBackedExecutionTargets.get(executionTarget.key) ?? null, observationAuthorityPaths), outcome.key, check.key);
91
- if (frozen)
106
+ const designTargets = designTargetsForCheck(outcome, check.key);
107
+ const externalDesignObligationRefs = exactExternalDesignObligationRefs(contract, outcome.key, check.key);
108
+ const externalClaimObligationRefsByAssertion = exactExternalClaimActualObligationRefsByAssertion(contract, outcome.key, check, proofAdequacy?.[proofAdequacyCheckKey(outcome.key, check.key)]
109
+ ?.expected_authority_refs ?? {});
110
+ const frozen = await attempt(mode, diagnostics, () => freezeDeliveryCheck(check, outcome.key, repository, workspace, executionTarget, contract.task.execution_targets, designTargets, semanticFactClosure?.expectations_by_check.get(check.key) ?? [], scopeDeliveryBindings(outcome.key, outcome.technical.bindings), outcome.product.owner.path_globs, sourceBackedExecutionTargets.get(executionTarget.key) ?? null, observationAuthorityPaths, proofAdequacy?.[proofAdequacyCheckKey(outcome.key, check.key)], externalDesignObligationRefs, externalClaimObligationRefsByAssertion), outcome.key, check.key);
111
+ if (frozen) {
112
+ blockedDesignAssertionRefsByCheck.set(check.key, removedAssertionRefs(check, frozen));
92
113
  checks.push(frozen);
114
+ }
93
115
  }
94
116
  outcomes.push({
95
117
  ...outcome,
96
118
  internal_id: `OUT.${outcome.key}`,
97
119
  generated_claims: claims?.by_outcome[outcome.key] ?? [],
98
120
  risk_reasons: risk?.reasons_by_outcome[outcome.key] ?? [],
99
- acceptance: { ...outcome.acceptance, checks },
121
+ acceptance: {
122
+ ...outcome.acceptance,
123
+ checks,
124
+ counterfactual_controls: outcome.acceptance.counterfactual_controls.map((control) => projectCounterfactualControl(control, outcome.acceptance.checks.find((check) => check.key === control.check_key), blockedDesignAssertionRefsByCheck.get(control.check_key) ??
125
+ new Set())),
126
+ },
100
127
  });
101
128
  }
102
129
  const allChecks = [
103
130
  ...globalChecks,
104
131
  ...outcomes.flatMap((outcome) => outcome.acceptance.checks),
105
132
  ];
133
+ const acceptanceReachability = claims && semanticFactClosure
134
+ ? compileAcceptanceReachability({
135
+ contract,
136
+ claims,
137
+ manifest: semanticFactClosure.manifest,
138
+ compiled_checks: allChecks,
139
+ })
140
+ : null;
141
+ await attempt(mode, diagnostics, () => validateResolvedCompletionAuthorityClosure(contract, globalChecks, outcomes, acceptanceReachability, mode === "collect"
142
+ ? (error) => addDiagnosticError(diagnostics, new Error(error))
143
+ : undefined));
144
+ if (risk)
145
+ await attempt(mode, diagnostics, () => validateRiskProof(contract, risk, acceptanceReachability, outcomes));
146
+ if (acceptanceReachability) {
147
+ if (mode === "fail_fast")
148
+ assertAcceptanceReachable(acceptanceReachability);
149
+ else
150
+ for (const obligation of acceptanceReachability.obligations)
151
+ if (obligation.status === "unreachable")
152
+ addDiagnosticError(diagnostics, new Error(`acceptance_obligation_unreachable:${obligation.source_obligation_ref}:${obligation.reason}`), obligation.outcome_key);
153
+ }
106
154
  await attempt(mode, diagnostics, () => validateVerificationInputSeparation(contract, allChecks, workdirRelative));
107
155
  await attempt(mode, diagnostics, () => validateRawExecutionObservationOwnership(allChecks));
108
156
  if (allGlobalChecksFrozen(contract, globalChecks) &&
@@ -117,7 +165,7 @@ export async function validateContractForActivation(options) {
117
165
  if (risk)
118
166
  await attempt(mode, diagnostics, () => validateSemanticConformance(contract, risk.effective_level, allChecks, mode === "collect"
119
167
  ? (error) => addDiagnosticError(diagnostics, new Error(error))
120
- : undefined));
168
+ : undefined, acceptanceReachability));
121
169
  }
122
170
  return {
123
171
  claims,
@@ -125,9 +173,12 @@ export async function validateContractForActivation(options) {
125
173
  source_hashes: sourceHashes,
126
174
  source_items: sourceItems,
127
175
  context_snapshot: context,
176
+ project_design_authority: projectDesignAuthority,
128
177
  workspace,
129
178
  global_checks: globalChecks,
130
179
  outcomes,
180
+ proof_adequacy: proofAdequacy,
181
+ acceptance_reachability: acceptanceReachability,
131
182
  };
132
183
  }
133
184
  function designTargetsForCheck(outcome, checkKey) {
@@ -140,6 +191,25 @@ function designTargetsForCheck(outcome, checkKey) {
140
191
  target_ref: binding.target_ref,
141
192
  })));
142
193
  }
194
+ function removedAssertionRefs(source, compiled) {
195
+ const retained = new Set([...compiled.positive_assertions, ...compiled.negative_assertions].map((assertion) => assertion.key));
196
+ return new Set([...source.positive_assertions, ...source.negative_assertions]
197
+ .map((assertion) => assertion.key)
198
+ .filter((assertionRef) => !retained.has(assertionRef)));
199
+ }
200
+ function projectCounterfactualControl(control, check, externallyBlockedAssertionRefs) {
201
+ if (!check || !externallyBlockedAssertionRefs.size)
202
+ return control;
203
+ const externallyBlockedClaims = new Set([...check.positive_assertions, ...check.negative_assertions]
204
+ .filter((assertion) => externallyBlockedAssertionRefs.has(assertion.key))
205
+ .flatMap((assertion) => assertion.claims));
206
+ return {
207
+ ...control,
208
+ claims: control.claims.filter((claimRef) => !externallyBlockedClaims.has(claimRef)),
209
+ expected_assertion_failures: control.expected_assertion_failures.filter((assertionRef) => !externallyBlockedAssertionRefs.has(assertionRef)),
210
+ preserved_assertions: control.preserved_assertions.filter((assertionRef) => !externallyBlockedAssertionRefs.has(assertionRef)),
211
+ };
212
+ }
143
213
  async function attempt(mode, diagnostics, action, outcomeKey, checkKey) {
144
214
  try {
145
215
  return await action();
@@ -158,9 +228,12 @@ function emptyCompiledResult(claims, risk, sourceHashes, sourceItems, context) {
158
228
  source_hashes: sourceHashes,
159
229
  source_items: sourceItems,
160
230
  context_snapshot: context,
231
+ project_design_authority: null,
161
232
  workspace: null,
162
233
  global_checks: [],
163
234
  outcomes: [],
235
+ proof_adequacy: null,
236
+ acceptance_reachability: null,
164
237
  };
165
238
  }
166
239
  function allGlobalChecksFrozen(contract, checks) {
@@ -0,0 +1,4 @@
1
+ import type { ActiveAuthorityLockToken } from "./long-task-state.js";
2
+ export declare function runWithActiveAuthorityLockToken<T>(token: ActiveAuthorityLockToken, action: () => Promise<T>): Promise<T>;
3
+ export declare function assertActiveAuthorityLockToken(token: ActiveAuthorityLockToken, repositoryRoot: string): void;
4
+ export declare function currentActiveAuthorityLockToken(repositoryRoot: string): ActiveAuthorityLockToken | null;
@@ -0,0 +1,29 @@
1
+ import { AsyncLocalStorage } from "node:async_hooks";
2
+ import path from "node:path";
3
+ const activeAuthorityLockTokens = new WeakSet();
4
+ const activeAuthorityLockContext = new AsyncLocalStorage();
5
+ export async function runWithActiveAuthorityLockToken(token, action) {
6
+ activeAuthorityLockTokens.add(token);
7
+ try {
8
+ return await activeAuthorityLockContext.run(token, action);
9
+ }
10
+ finally {
11
+ activeAuthorityLockTokens.delete(token);
12
+ }
13
+ }
14
+ export function assertActiveAuthorityLockToken(token, repositoryRoot) {
15
+ if (!activeAuthorityLockTokens.has(token) ||
16
+ normalizePath(token.repository_root) !== normalizePath(repositoryRoot))
17
+ throw new Error("active_authority_lock_token_invalid");
18
+ }
19
+ export function currentActiveAuthorityLockToken(repositoryRoot) {
20
+ const token = activeAuthorityLockContext.getStore();
21
+ if (!token)
22
+ return null;
23
+ assertActiveAuthorityLockToken(token, repositoryRoot);
24
+ return token;
25
+ }
26
+ function normalizePath(value) {
27
+ const normalized = path.resolve(value).replace(/\\/gu, "/");
28
+ return process.platform === "win32" ? normalized.toLowerCase() : normalized;
29
+ }
@@ -0,0 +1,25 @@
1
+ import type { ClaimApplicabilityV2, DeliveryContractV2 } from "./long-task-delivery-types.js";
2
+ export declare function claimApplicabilityProfile(contract: Pick<DeliveryContractV2, "global" | "outcomes">, outcomeKey: string | null, applicabilityRef: string): ClaimApplicabilityV2 | null;
3
+ export declare function canonicalApplicabilityProfile(profile: ClaimApplicabilityV2): {
4
+ target_ref: string;
5
+ journey_role: ClaimApplicabilityV2["journey_role"];
6
+ dimensions: Array<{
7
+ key: string;
8
+ value: string;
9
+ }>;
10
+ given_refs: string[];
11
+ when_refs: string[];
12
+ };
13
+ export declare function canonicalApplicabilityIdentity(profile: ClaimApplicabilityV2): string;
14
+ export declare function sameApplicabilityProfile(left: ClaimApplicabilityV2, right: ClaimApplicabilityV2): boolean;
15
+ export interface OutcomeApplicabilityPairV1 {
16
+ outcome_ref: string;
17
+ applicability_ref: string;
18
+ }
19
+ export declare function globalCompatibleOutcomeApplicabilityCoverage(contract: Pick<DeliveryContractV2, "outcomes">, globalProfile: ClaimApplicabilityV2): {
20
+ target_outcome_refs: string[];
21
+ required_pairs: OutcomeApplicabilityPairV1[];
22
+ missing_outcome_refs: string[];
23
+ };
24
+ export declare function sameOutcomeApplicabilityCoverage(required: readonly OutcomeApplicabilityPairV1[], actual: readonly OutcomeApplicabilityPairV1[]): boolean;
25
+ export declare function outcomeApplicabilityPairIdentity(pair: OutcomeApplicabilityPairV1): string;
@@ -0,0 +1,60 @@
1
+ import { canonicalValueJson, sha256Hex } from "./strict-codec.js";
2
+ export function claimApplicabilityProfile(contract, outcomeKey, applicabilityRef) {
3
+ const profiles = outcomeKey
4
+ ? contract.outcomes.find((outcome) => outcome.key === outcomeKey)
5
+ ?.applicability
6
+ : contract.global.applicability;
7
+ return profiles?.find((profile) => profile.key === applicabilityRef) ?? null;
8
+ }
9
+ export function canonicalApplicabilityProfile(profile) {
10
+ return {
11
+ target_ref: profile.target_ref,
12
+ journey_role: profile.journey_role,
13
+ dimensions: [...profile.dimensions]
14
+ .sort((left, right) => left.key.localeCompare(right.key) ||
15
+ left.value.localeCompare(right.value))
16
+ .map((dimension) => ({
17
+ key: dimension.key,
18
+ value: dimension.value,
19
+ })),
20
+ given_refs: [...profile.given_refs].sort(),
21
+ when_refs: [...profile.when_refs],
22
+ };
23
+ }
24
+ export function canonicalApplicabilityIdentity(profile) {
25
+ return sha256Hex(canonicalValueJson(canonicalApplicabilityProfile(profile)));
26
+ }
27
+ export function sameApplicabilityProfile(left, right) {
28
+ return (canonicalApplicabilityIdentity(left) ===
29
+ canonicalApplicabilityIdentity(right));
30
+ }
31
+ export function globalCompatibleOutcomeApplicabilityCoverage(contract, globalProfile) {
32
+ const targetOutcomes = contract.outcomes.filter((outcome) => outcome.applicability.some((profile) => profile.target_ref === globalProfile.target_ref));
33
+ const missing = [];
34
+ const required = targetOutcomes.flatMap((outcome) => {
35
+ const compatible = outcome.applicability.filter((profile) => sameApplicabilityProfile(globalProfile, profile));
36
+ if (!compatible.length)
37
+ missing.push(outcome.key);
38
+ return compatible.map((profile) => ({
39
+ outcome_ref: outcome.key,
40
+ applicability_ref: profile.key,
41
+ }));
42
+ });
43
+ return {
44
+ target_outcome_refs: targetOutcomes.map((outcome) => outcome.key).sort(),
45
+ required_pairs: sortOutcomeApplicabilityPairs(required),
46
+ missing_outcome_refs: missing.sort(),
47
+ };
48
+ }
49
+ export function sameOutcomeApplicabilityCoverage(required, actual) {
50
+ const left = sortOutcomeApplicabilityPairs(required).map(outcomeApplicabilityPairIdentity);
51
+ const right = sortOutcomeApplicabilityPairs(actual).map(outcomeApplicabilityPairIdentity);
52
+ return (left.length === right.length &&
53
+ left.every((identity, index) => identity === right[index]));
54
+ }
55
+ export function outcomeApplicabilityPairIdentity(pair) {
56
+ return `${pair.outcome_ref}\0${pair.applicability_ref}`;
57
+ }
58
+ function sortOutcomeApplicabilityPairs(pairs) {
59
+ return [...pairs].sort((left, right) => outcomeApplicabilityPairIdentity(left).localeCompare(outcomeApplicabilityPairIdentity(right)));
60
+ }
@@ -1,5 +1,13 @@
1
1
  import { applyDiagnosticRepairOrder } from "./long-task-authoring-preflight-repair-order.js";
2
2
  export function addAuthoringDiagnostics(contract, parsed, diagnostics) {
3
+ if (parsed.compatibility.completion_authority_defaulted_to_machine_only)
4
+ diagnostics.push({
5
+ level: "warning",
6
+ code: "completion_authority_legacy_default_machine_only",
7
+ message: "target_profile.completion_authority is absent and was deterministically defaulted to machine_only; blocking External Confirmation routes remain unreachable.",
8
+ refs: ["task.target_profile.completion_authority"],
9
+ repair_hint: "Keep machine_only explicitly, or make an Authority decision to declare declared_authorities and fully decompose every blocking external obligation before Compile.",
10
+ });
3
11
  if (parsed.outcome_files.length)
4
12
  diagnostics.push({
5
13
  level: "warning",
@@ -1,4 +1,5 @@
1
1
  import type { ClaimCoverageSummaryV2 } from "./long-task-delivery-types.js";
2
+ import type { AcceptanceReachabilityV1 } from "./long-task-acceptance-reachability.js";
2
3
  export interface AuthoringPreflightDiagnosticV1 {
3
4
  level: "error" | "decision_required" | "warning" | "info";
4
5
  code: string;
@@ -39,6 +40,7 @@ export interface AuthoringPreflightResultV1 {
39
40
  outcomes: string[];
40
41
  source_coverage: SourceCoverageV1;
41
42
  claim_coverage: ClaimCoverageSummaryV2;
43
+ acceptance_reachability: AcceptanceReachabilityV1;
42
44
  revision_preview: AuthoringRevisionPreviewV1;
43
45
  diagnostics: AuthoringPreflightDiagnosticV1[];
44
46
  }
@@ -26,6 +26,15 @@ export function emptyPreflightResult(diagnostics) {
26
26
  unresolved: [],
27
27
  },
28
28
  claim_coverage: emptyClaimCoverage(),
29
+ acceptance_reachability: {
30
+ completion_authority: "machine_only",
31
+ total: 0,
32
+ machine_admitted: 0,
33
+ external_fulfillable: 0,
34
+ unreachable: 0,
35
+ obligations: [],
36
+ effective_external_routes: [],
37
+ },
29
38
  revision_preview: {
30
39
  active: false,
31
40
  authority_revision: null,