project-tiny-context-harness 0.8.16 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (535) hide show
  1. package/README.md +119 -41
  2. package/assets/README.md +184 -55
  3. package/assets/README.zh-CN.md +114 -40
  4. package/assets/agents/AGENTS_CORE.md +2 -2
  5. package/assets/context_templates/context.toml +6 -1
  6. package/assets/context_templates/screen-contract.md +16 -0
  7. package/assets/runtime/windows-job-supervisor/formal_process_supervisor_native_helpers.cs +301 -0
  8. package/assets/runtime/windows-job-supervisor/formal_process_supervisor_native_run.cs +197 -0
  9. package/assets/runtime/windows-job-supervisor/formal_process_supervisor_native_types.cs +215 -0
  10. package/assets/runtime/windows-job-supervisor/windows_job_process_supervisor.ps1 +117 -0
  11. package/assets/skills/context_development_engineer/SKILL.md +16 -30
  12. package/assets/skills/context_development_engineer/references/engineering-design-reasoning.md +93 -0
  13. package/assets/skills/context_surface_contract/SKILL.md +13 -2
  14. package/assets/skills/context_uiux_design/SKILL.md +7 -3
  15. package/assets/skills/context_uiux_design/references/task-uiux-analysis.md +82 -0
  16. package/assets/skills/design-resource-authoring/SKILL.md +18 -9
  17. package/assets/skills/design-resource-authoring/references/authority-delta-assessment.md +52 -0
  18. package/assets/skills/design-resource-authoring/references/downstream-handoff.md +22 -6
  19. package/assets/skills/design-resource-authoring/references/formal-selected-web-app-handoff.md +26 -8
  20. package/assets/skills/design-resource-authoring/references/implementation-feasibility.md +111 -0
  21. package/assets/skills/design-resource-authoring/references/open-design-provider.md +45 -7
  22. package/assets/skills/design-resource-authoring/references/recovery-and-writeback.md +7 -1
  23. package/assets/skills/design-resource-authoring/references/resource-selection.md +115 -3
  24. package/assets/skills/design-system-authoring/SKILL.md +23 -17
  25. package/assets/skills/design-system-authoring/references/authority-adoption.md +19 -9
  26. package/assets/skills/design-system-authoring/references/open-design-design-system-provider.md +4 -0
  27. package/assets/skills/long-task-workflow/SKILL.md +6 -6
  28. package/assets/skills/long-task-workflow/references/authority-lifecycle.md +10 -4
  29. package/assets/skills/long-task-workflow/references/contract-authoring.md +5 -5
  30. package/assets/skills/long-task-workflow/references/evidence-design.md +14 -3
  31. package/assets/skills/long-task-workflow/references/source-authoring.md +11 -8
  32. package/assets/tools/context_rules.json +53 -0
  33. package/assets/tools/validate_context.py +302 -77
  34. package/dist/cli.js +2 -1
  35. package/dist/commands/context-create.d.ts +1 -0
  36. package/dist/commands/context-create.js +90 -0
  37. package/dist/commands/context-inspect.d.ts +1 -0
  38. package/dist/commands/context-inspect.js +98 -0
  39. package/dist/commands/context-move.d.ts +1 -0
  40. package/dist/commands/context-move.js +78 -0
  41. package/dist/commands/context-register.d.ts +1 -0
  42. package/dist/commands/context-register.js +110 -0
  43. package/dist/commands/context-transaction.d.ts +1 -0
  44. package/dist/commands/context-transaction.js +84 -0
  45. package/dist/commands/context.d.ts +1 -0
  46. package/dist/commands/context.js +36 -0
  47. package/dist/commands/design-authority-delta.d.ts +1 -0
  48. package/dist/commands/design-authority-delta.js +53 -0
  49. package/dist/commands/design-authority.d.ts +1 -0
  50. package/dist/commands/design-authority.js +104 -0
  51. package/dist/commands/design-resource.js +17 -3
  52. package/dist/commands/doctor.d.ts +1 -1
  53. package/dist/commands/doctor.js +61 -3
  54. package/dist/commands/index.js +19 -2
  55. package/dist/commands/long-task-authoring.js +20 -2
  56. package/dist/commands/long-task-workdir.d.ts +2 -0
  57. package/dist/commands/long-task-workdir.js +23 -0
  58. package/dist/commands/long-task.js +75 -6
  59. package/dist/commands/route.d.ts +15 -0
  60. package/dist/commands/route.js +142 -0
  61. package/dist/index.d.ts +3 -13
  62. package/dist/index.js +3 -12
  63. package/dist/lib/cli-exit.d.ts +14 -0
  64. package/dist/lib/cli-exit.js +19 -0
  65. package/dist/lib/context-catalog/catalog-default-footprint.d.ts +3 -0
  66. package/dist/lib/context-catalog/catalog-default-footprint.js +53 -0
  67. package/dist/lib/context-catalog/catalog-diagnostics.d.ts +9 -0
  68. package/dist/lib/context-catalog/catalog-diagnostics.js +34 -0
  69. package/dist/lib/context-catalog/catalog-discovery.d.ts +7 -0
  70. package/dist/lib/context-catalog/catalog-discovery.js +81 -0
  71. package/dist/lib/context-catalog/catalog-load.d.ts +8 -0
  72. package/dist/lib/context-catalog/catalog-load.js +187 -0
  73. package/dist/lib/context-catalog/catalog-path-validation.d.ts +7 -0
  74. package/dist/lib/context-catalog/catalog-path-validation.js +62 -0
  75. package/dist/lib/context-catalog/catalog-paths.d.ts +11 -0
  76. package/dist/lib/context-catalog/catalog-paths.js +41 -0
  77. package/dist/lib/context-catalog/catalog-portable-contract.d.ts +15 -0
  78. package/dist/lib/context-catalog/catalog-portable-contract.js +68 -0
  79. package/dist/lib/context-catalog/catalog-staged-path-safety.d.ts +1 -0
  80. package/dist/lib/context-catalog/catalog-staged-path-safety.js +36 -0
  81. package/dist/lib/context-catalog/catalog-types.d.ts +40 -0
  82. package/dist/lib/context-catalog/catalog-types.js +1 -0
  83. package/dist/lib/context-catalog/catalog-validation.d.ts +9 -0
  84. package/dist/lib/context-catalog/catalog-validation.js +148 -0
  85. package/dist/lib/context-create/context-create-path.d.ts +2 -0
  86. package/dist/lib/context-create/context-create-path.js +30 -0
  87. package/dist/lib/context-create/context-create-template.d.ts +2 -0
  88. package/dist/lib/context-create/context-create-template.js +95 -0
  89. package/dist/lib/context-create/context-create-types.d.ts +28 -0
  90. package/dist/lib/context-create/context-create-types.js +1 -0
  91. package/dist/lib/context-create/context-create-write.d.ts +1 -0
  92. package/dist/lib/context-create/context-create-write.js +85 -0
  93. package/dist/lib/context-create/context-create.d.ts +2 -0
  94. package/dist/lib/context-create/context-create.js +84 -0
  95. package/dist/lib/context-default-footprint.d.ts +2 -3
  96. package/dist/lib/context-default-footprint.js +49 -57
  97. package/dist/lib/context-doctor/context-doctor-types.d.ts +16 -0
  98. package/dist/lib/context-doctor/context-doctor-types.js +15 -0
  99. package/dist/lib/context-doctor/context-doctor.d.ts +2 -0
  100. package/dist/lib/context-doctor/context-doctor.js +130 -0
  101. package/dist/lib/context-graph-snapshot.d.ts +5 -0
  102. package/dist/lib/context-graph-snapshot.js +46 -25
  103. package/dist/lib/context-inspect/context-inspect-projection.d.ts +9 -0
  104. package/dist/lib/context-inspect/context-inspect-projection.js +49 -0
  105. package/dist/lib/context-inspect/context-inspect-render.d.ts +2 -0
  106. package/dist/lib/context-inspect/context-inspect-render.js +29 -0
  107. package/dist/lib/context-inspect/context-inspect-types.d.ts +43 -0
  108. package/dist/lib/context-inspect/context-inspect-types.js +1 -0
  109. package/dist/lib/context-inspect/context-inspect.d.ts +2 -0
  110. package/dist/lib/context-inspect/context-inspect.js +104 -0
  111. package/dist/lib/context-manifest-schema.d.ts +1 -1
  112. package/dist/lib/context-manifest-schema.js +4 -20
  113. package/dist/lib/context-markdown/context-markdown-analysis.d.ts +15 -0
  114. package/dist/lib/context-markdown/context-markdown-analysis.js +245 -0
  115. package/dist/lib/context-markdown/context-markdown-extract.d.ts +7 -0
  116. package/dist/lib/context-markdown/context-markdown-extract.js +114 -0
  117. package/dist/lib/context-markdown/context-markdown-types.d.ts +57 -0
  118. package/dist/lib/context-markdown/context-markdown-types.js +1 -0
  119. package/dist/lib/context-move/context-move-input.d.ts +8 -0
  120. package/dist/lib/context-move/context-move-input.js +17 -0
  121. package/dist/lib/context-move/context-move-literal-scan.d.ts +20 -0
  122. package/dist/lib/context-move/context-move-literal-scan.js +213 -0
  123. package/dist/lib/context-move/context-move-live-validation.d.ts +3 -0
  124. package/dist/lib/context-move/context-move-live-validation.js +56 -0
  125. package/dist/lib/context-move/context-move-markdown-plan.d.ts +22 -0
  126. package/dist/lib/context-move/context-move-markdown-plan.js +39 -0
  127. package/dist/lib/context-move/context-move-projection.d.ts +3 -0
  128. package/dist/lib/context-move/context-move-projection.js +11 -0
  129. package/dist/lib/context-move/context-move-reference-validation.d.ts +11 -0
  130. package/dist/lib/context-move/context-move-reference-validation.js +64 -0
  131. package/dist/lib/context-move/context-move-render.d.ts +2 -0
  132. package/dist/lib/context-move/context-move-render.js +24 -0
  133. package/dist/lib/context-move/context-move-support.d.ts +10 -0
  134. package/dist/lib/context-move/context-move-support.js +88 -0
  135. package/dist/lib/context-move/context-move-transaction-plan.d.ts +24 -0
  136. package/dist/lib/context-move/context-move-transaction-plan.js +108 -0
  137. package/dist/lib/context-move/context-move-types.d.ts +74 -0
  138. package/dist/lib/context-move/context-move-types.js +1 -0
  139. package/dist/lib/context-move/context-move.d.ts +8 -0
  140. package/dist/lib/context-move/context-move.js +180 -0
  141. package/dist/lib/context-mutation/manifest-lossless-patch.d.ts +28 -0
  142. package/dist/lib/context-mutation/manifest-lossless-patch.js +208 -0
  143. package/dist/lib/context-mutation/markdown-link-patch.d.ts +34 -0
  144. package/dist/lib/context-mutation/markdown-link-patch.js +143 -0
  145. package/dist/lib/context-mutation/markdown-link-spans.d.ts +10 -0
  146. package/dist/lib/context-mutation/markdown-link-spans.js +179 -0
  147. package/dist/lib/context-mutation/mutation-cas.d.ts +13 -0
  148. package/dist/lib/context-mutation/mutation-cas.js +365 -0
  149. package/dist/lib/context-mutation/mutation-command-support.d.ts +12 -0
  150. package/dist/lib/context-mutation/mutation-command-support.js +57 -0
  151. package/dist/lib/context-mutation/mutation-commit.d.ts +12 -0
  152. package/dist/lib/context-mutation/mutation-commit.js +89 -0
  153. package/dist/lib/context-mutation/mutation-directories.d.ts +5 -0
  154. package/dist/lib/context-mutation/mutation-directories.js +56 -0
  155. package/dist/lib/context-mutation/mutation-file-state.d.ts +14 -0
  156. package/dist/lib/context-mutation/mutation-file-state.js +137 -0
  157. package/dist/lib/context-mutation/mutation-journal-file-validation.d.ts +1 -0
  158. package/dist/lib/context-mutation/mutation-journal-file-validation.js +106 -0
  159. package/dist/lib/context-mutation/mutation-journal-io.d.ts +5 -0
  160. package/dist/lib/context-mutation/mutation-journal-io.js +55 -0
  161. package/dist/lib/context-mutation/mutation-journal-storage.d.ts +18 -0
  162. package/dist/lib/context-mutation/mutation-journal-storage.js +283 -0
  163. package/dist/lib/context-mutation/mutation-journal-validation-support.d.ts +16 -0
  164. package/dist/lib/context-mutation/mutation-journal-validation-support.js +140 -0
  165. package/dist/lib/context-mutation/mutation-journal-validation.d.ts +3 -0
  166. package/dist/lib/context-mutation/mutation-journal-validation.js +177 -0
  167. package/dist/lib/context-mutation/mutation-journal.d.ts +8 -0
  168. package/dist/lib/context-mutation/mutation-journal.js +111 -0
  169. package/dist/lib/context-mutation/mutation-live-validation.d.ts +3 -0
  170. package/dist/lib/context-mutation/mutation-live-validation.js +51 -0
  171. package/dist/lib/context-mutation/mutation-long-task-guard.d.ts +6 -0
  172. package/dist/lib/context-mutation/mutation-long-task-guard.js +57 -0
  173. package/dist/lib/context-mutation/mutation-recovery.d.ts +4 -0
  174. package/dist/lib/context-mutation/mutation-recovery.js +189 -0
  175. package/dist/lib/context-mutation/mutation-staged-fs.d.ts +5 -0
  176. package/dist/lib/context-mutation/mutation-staged-fs.js +56 -0
  177. package/dist/lib/context-mutation/mutation-types.d.ts +103 -0
  178. package/dist/lib/context-mutation/mutation-types.js +1 -0
  179. package/dist/lib/context-register/context-register-input.d.ts +11 -0
  180. package/dist/lib/context-register/context-register-input.js +43 -0
  181. package/dist/lib/context-register/context-register-render.d.ts +2 -0
  182. package/dist/lib/context-register/context-register-render.js +21 -0
  183. package/dist/lib/context-register/context-register-support.d.ts +6 -0
  184. package/dist/lib/context-register/context-register-support.js +46 -0
  185. package/dist/lib/context-register/context-register-types.d.ts +46 -0
  186. package/dist/lib/context-register/context-register-types.js +1 -0
  187. package/dist/lib/context-register/context-register.d.ts +8 -0
  188. package/dist/lib/context-register/context-register.js +155 -0
  189. package/dist/lib/context-router/context-route-budget.d.ts +15 -0
  190. package/dist/lib/context-router/context-route-budget.js +14 -0
  191. package/dist/lib/context-router/context-route-candidates.d.ts +15 -0
  192. package/dist/lib/context-router/context-route-candidates.js +112 -0
  193. package/dist/lib/context-router/context-route-order.d.ts +6 -0
  194. package/dist/lib/context-router/context-route-order.js +53 -0
  195. package/dist/lib/context-router/context-route-paths.d.ts +16 -0
  196. package/dist/lib/context-router/context-route-paths.js +109 -0
  197. package/dist/lib/context-router/context-route-render.d.ts +2 -0
  198. package/dist/lib/context-router/context-route-render.js +32 -0
  199. package/dist/lib/context-router/context-route-scan.d.ts +18 -0
  200. package/dist/lib/context-router/context-route-scan.js +156 -0
  201. package/dist/lib/context-router/context-route-selection.d.ts +16 -0
  202. package/dist/lib/context-router/context-route-selection.js +72 -0
  203. package/dist/lib/context-router/context-route-terms.d.ts +13 -0
  204. package/dist/lib/context-router/context-route-terms.js +202 -0
  205. package/dist/lib/context-router/context-route-types.d.ts +101 -0
  206. package/dist/lib/context-router/context-route-types.js +1 -0
  207. package/dist/lib/context-router/context-route.d.ts +2 -0
  208. package/dist/lib/context-router/context-route.js +127 -0
  209. package/dist/lib/context-units-migration.d.ts +13 -0
  210. package/dist/lib/context-units-migration.js +217 -0
  211. package/dist/lib/design-authority-binding.d.ts +7 -0
  212. package/dist/lib/design-authority-binding.js +96 -0
  213. package/dist/lib/design-authority-closure.d.ts +3 -0
  214. package/dist/lib/design-authority-closure.js +201 -0
  215. package/dist/lib/design-authority-delta-codec-primitives.d.ts +10 -0
  216. package/dist/lib/design-authority-delta-codec-primitives.js +58 -0
  217. package/dist/lib/design-authority-delta-codec.d.ts +2 -0
  218. package/dist/lib/design-authority-delta-codec.js +193 -0
  219. package/dist/lib/design-authority-delta-types.d.ts +65 -0
  220. package/dist/lib/design-authority-delta-types.js +6 -0
  221. package/dist/lib/design-authority-delta-validation.d.ts +2 -0
  222. package/dist/lib/design-authority-delta-validation.js +16 -0
  223. package/dist/lib/design-authority-digest.d.ts +8 -0
  224. package/dist/lib/design-authority-digest.js +36 -0
  225. package/dist/lib/design-authority-files.d.ts +9 -0
  226. package/dist/lib/design-authority-files.js +62 -0
  227. package/dist/lib/design-authority-format.d.ts +2 -0
  228. package/dist/lib/design-authority-format.js +93 -0
  229. package/dist/lib/design-authority-links.d.ts +10 -0
  230. package/dist/lib/design-authority-links.js +137 -0
  231. package/dist/lib/design-authority-manifest.d.ts +4 -0
  232. package/dist/lib/design-authority-manifest.js +144 -0
  233. package/dist/lib/design-authority-tokens.d.ts +9 -0
  234. package/dist/lib/design-authority-tokens.js +45 -0
  235. package/dist/lib/design-authority-types.d.ts +80 -0
  236. package/dist/lib/design-authority-types.js +23 -0
  237. package/dist/lib/design-md-tool-adapter.d.ts +9 -0
  238. package/dist/lib/design-md-tool-adapter.js +152 -0
  239. package/dist/lib/design-md-tool-normalization.d.ts +7 -0
  240. package/dist/lib/design-md-tool-normalization.js +78 -0
  241. package/dist/lib/design-md-tool-types.d.ts +99 -0
  242. package/dist/lib/design-md-tool-types.js +8 -0
  243. package/dist/lib/design-resource-handoff-bundle.js +5 -0
  244. package/dist/lib/design-resource-handoff-input-types.d.ts +1 -1
  245. package/dist/lib/design-resource-handoff-manifest-projection.js +4 -0
  246. package/dist/lib/design-resource-handoff-set-integrity.js +1 -0
  247. package/dist/lib/design-resource-handoff-shape.js +18 -2
  248. package/dist/lib/design-resource-handoff-types.d.ts +8 -0
  249. package/dist/lib/design-resource-handoff-validation.js +24 -0
  250. package/dist/lib/design-resource-implementation-feasibility-model.d.ts +35 -0
  251. package/dist/lib/design-resource-implementation-feasibility-model.js +62 -0
  252. package/dist/lib/design-resource-implementation-feasibility-shape-sections.d.ts +43 -0
  253. package/dist/lib/design-resource-implementation-feasibility-shape-sections.js +142 -0
  254. package/dist/lib/design-resource-implementation-feasibility-shape.d.ts +4 -0
  255. package/dist/lib/design-resource-implementation-feasibility-shape.js +154 -0
  256. package/dist/lib/design-resource-implementation-feasibility-source-decision-projection.d.ts +24 -0
  257. package/dist/lib/design-resource-implementation-feasibility-source-decision-projection.js +106 -0
  258. package/dist/lib/design-resource-implementation-feasibility-source-decision.d.ts +21 -0
  259. package/dist/lib/design-resource-implementation-feasibility-source-decision.js +75 -0
  260. package/dist/lib/design-resource-implementation-feasibility-types.d.ts +135 -0
  261. package/dist/lib/design-resource-implementation-feasibility-types.js +37 -0
  262. package/dist/lib/design-resource-implementation-feasibility-validation-cells.d.ts +5 -0
  263. package/dist/lib/design-resource-implementation-feasibility-validation-cells.js +125 -0
  264. package/dist/lib/design-resource-implementation-feasibility-validation-document.d.ts +4 -0
  265. package/dist/lib/design-resource-implementation-feasibility-validation-document.js +167 -0
  266. package/dist/lib/design-resource-implementation-feasibility-validation-facts.d.ts +3 -0
  267. package/dist/lib/design-resource-implementation-feasibility-validation-facts.js +76 -0
  268. package/dist/lib/design-resource-implementation-feasibility-validation-realizations.d.ts +8 -0
  269. package/dist/lib/design-resource-implementation-feasibility-validation-realizations.js +76 -0
  270. package/dist/lib/design-resource-implementation-feasibility-validation-support.d.ts +10 -0
  271. package/dist/lib/design-resource-implementation-feasibility-validation-support.js +75 -0
  272. package/dist/lib/design-resource-implementation-feasibility-validation.d.ts +3 -0
  273. package/dist/lib/design-resource-implementation-feasibility-validation.js +138 -0
  274. package/dist/lib/design-resource-recovery-current.js +22 -0
  275. package/dist/lib/design-resource-recovery-shape.js +64 -7
  276. package/dist/lib/design-resource-recovery-types.d.ts +4 -1
  277. package/dist/lib/design-resource-symbolic-fact-shape.js +9 -1
  278. package/dist/lib/design-resource-symbolic-fact-types.d.ts +8 -0
  279. package/dist/lib/design-resource-symbolic-fact-validation.js +25 -0
  280. package/dist/lib/doctor.d.ts +2 -1
  281. package/dist/lib/doctor.js +29 -1
  282. package/dist/lib/fs.js +1 -1
  283. package/dist/lib/long-task-acceptance-reachability-claims.d.ts +2 -0
  284. package/dist/lib/long-task-acceptance-reachability-claims.js +279 -0
  285. package/dist/lib/long-task-acceptance-reachability-design.d.ts +2 -0
  286. package/dist/lib/long-task-acceptance-reachability-design.js +96 -0
  287. package/dist/lib/long-task-acceptance-reachability-external.d.ts +9 -0
  288. package/dist/lib/long-task-acceptance-reachability-external.js +123 -0
  289. package/dist/lib/long-task-acceptance-reachability-helpers.d.ts +64 -0
  290. package/dist/lib/long-task-acceptance-reachability-helpers.js +473 -0
  291. package/dist/lib/long-task-acceptance-reachability-semantic.d.ts +2 -0
  292. package/dist/lib/long-task-acceptance-reachability-semantic.js +122 -0
  293. package/dist/lib/long-task-acceptance-reachability-types.d.ts +91 -0
  294. package/dist/lib/long-task-acceptance-reachability-types.js +1 -0
  295. package/dist/lib/long-task-acceptance-reachability.d.ts +4 -0
  296. package/dist/lib/long-task-acceptance-reachability.js +115 -0
  297. package/dist/lib/long-task-activation-validation.d.ts +6 -0
  298. package/dist/lib/long-task-activation-validation.js +96 -23
  299. package/dist/lib/long-task-active-authority-lock-context.d.ts +4 -0
  300. package/dist/lib/long-task-active-authority-lock-context.js +29 -0
  301. package/dist/lib/long-task-applicability-identity.d.ts +25 -0
  302. package/dist/lib/long-task-applicability-identity.js +60 -0
  303. package/dist/lib/long-task-authoring-preflight-diagnostics.js +8 -0
  304. package/dist/lib/long-task-authoring-preflight-types.d.ts +2 -0
  305. package/dist/lib/long-task-authoring-preflight-types.js +9 -0
  306. package/dist/lib/long-task-authoring-preflight.js +18 -2
  307. package/dist/lib/long-task-authority-material-diff.js +4 -0
  308. package/dist/lib/long-task-authority-materials.js +19 -0
  309. package/dist/lib/long-task-authority-policy.d.ts +3 -0
  310. package/dist/lib/long-task-authority-policy.js +3 -0
  311. package/dist/lib/long-task-authority-revision-details.js +2 -1
  312. package/dist/lib/long-task-authority-types.d.ts +2 -0
  313. package/dist/lib/long-task-authority.js +2 -0
  314. package/dist/lib/long-task-check-runner.js +3 -296
  315. package/dist/lib/long-task-check-shape.js +6 -1
  316. package/dist/lib/long-task-claim-definitions.js +1 -3
  317. package/dist/lib/long-task-claim-semantic-proof-floor.d.ts +3 -0
  318. package/dist/lib/long-task-claim-semantic-proof-floor.js +78 -0
  319. package/dist/lib/long-task-claims.d.ts +0 -18
  320. package/dist/lib/long-task-claims.js +15 -14
  321. package/dist/lib/long-task-command-process.d.ts +9 -0
  322. package/dist/lib/long-task-command-process.js +178 -0
  323. package/dist/lib/long-task-compact-authoring.js +3 -0
  324. package/dist/lib/long-task-compact-projections.js +10 -0
  325. package/dist/lib/long-task-complete-delivery-evidence-types.d.ts +38 -0
  326. package/dist/lib/long-task-complete-delivery-evidence-types.js +1 -0
  327. package/dist/lib/long-task-completion-types.d.ts +109 -0
  328. package/dist/lib/long-task-completion-types.js +1 -0
  329. package/dist/lib/long-task-conformance-policy.d.ts +2 -1
  330. package/dist/lib/long-task-conformance-policy.js +11 -4
  331. package/dist/lib/long-task-context-authority-topology.js +6 -4
  332. package/dist/lib/long-task-contract-types.d.ts +52 -1
  333. package/dist/lib/long-task-counterfactual-sandbox.d.ts +7 -1
  334. package/dist/lib/long-task-counterfactual-sandbox.js +86 -6
  335. package/dist/lib/long-task-delivery-compiler-preflight.d.ts +24 -0
  336. package/dist/lib/long-task-delivery-compiler-preflight.js +32 -0
  337. package/dist/lib/long-task-delivery-compiler.d.ts +1 -0
  338. package/dist/lib/long-task-delivery-compiler.js +59 -44
  339. package/dist/lib/long-task-delivery-parser.d.ts +3 -0
  340. package/dist/lib/long-task-delivery-parser.js +26 -8
  341. package/dist/lib/long-task-delivery-types.d.ts +2 -0
  342. package/dist/lib/long-task-delivery-types.js +2 -0
  343. package/dist/lib/long-task-delivery-validation.d.ts +11 -3
  344. package/dist/lib/long-task-delivery-validation.js +23 -8
  345. package/dist/lib/long-task-design-feasibility-binding-owners.d.ts +6 -0
  346. package/dist/lib/long-task-design-feasibility-binding-owners.js +52 -0
  347. package/dist/lib/long-task-design-feasibility-binding.d.ts +14 -0
  348. package/dist/lib/long-task-design-feasibility-binding.js +114 -0
  349. package/dist/lib/long-task-design-feasibility-source-closure.d.ts +11 -0
  350. package/dist/lib/long-task-design-feasibility-source-closure.js +87 -0
  351. package/dist/lib/long-task-design-obligation.d.ts +50 -0
  352. package/dist/lib/long-task-design-obligation.js +99 -0
  353. package/dist/lib/long-task-design-resource-handoff.d.ts +5 -3
  354. package/dist/lib/long-task-design-resource-handoff.js +64 -4
  355. package/dist/lib/long-task-design-resource-method-binding.js +20 -2
  356. package/dist/lib/long-task-effective-external-takeover.d.ts +15 -0
  357. package/dist/lib/long-task-effective-external-takeover.js +109 -0
  358. package/dist/lib/long-task-effective-external-ui-takeover.d.ts +5 -0
  359. package/dist/lib/long-task-effective-external-ui-takeover.js +117 -0
  360. package/dist/lib/long-task-evidence-capability-codec.js +91 -0
  361. package/dist/lib/long-task-evidence-capability-runtime.js +62 -14
  362. package/dist/lib/long-task-evidence-capability-types.d.ts +3 -2
  363. package/dist/lib/long-task-evidence-v2.d.ts +6 -1
  364. package/dist/lib/long-task-evidence-v2.js +253 -170
  365. package/dist/lib/long-task-execution-observation.d.ts +7 -0
  366. package/dist/lib/long-task-execution-observation.js +21 -4
  367. package/dist/lib/long-task-expected-authority.d.ts +4 -0
  368. package/dist/lib/long-task-expected-authority.js +126 -0
  369. package/dist/lib/long-task-external-confirmation-artifacts.d.ts +9 -0
  370. package/dist/lib/long-task-external-confirmation-artifacts.js +138 -0
  371. package/dist/lib/long-task-external-confirmation-attestation.d.ts +20 -0
  372. package/dist/lib/long-task-external-confirmation-attestation.js +115 -0
  373. package/dist/lib/long-task-external-confirmation-challenge.d.ts +23 -0
  374. package/dist/lib/long-task-external-confirmation-challenge.js +164 -0
  375. package/dist/lib/long-task-external-confirmation-context.d.ts +14 -0
  376. package/dist/lib/long-task-external-confirmation-context.js +53 -0
  377. package/dist/lib/long-task-external-confirmation-evaluation.d.ts +11 -0
  378. package/dist/lib/long-task-external-confirmation-evaluation.js +454 -0
  379. package/dist/lib/long-task-external-confirmation-expected.d.ts +8 -0
  380. package/dist/lib/long-task-external-confirmation-expected.js +200 -0
  381. package/dist/lib/long-task-external-confirmation-identity.d.ts +10 -0
  382. package/dist/lib/long-task-external-confirmation-identity.js +77 -0
  383. package/dist/lib/long-task-external-confirmation-plan.d.ts +25 -0
  384. package/dist/lib/long-task-external-confirmation-plan.js +148 -0
  385. package/dist/lib/long-task-external-confirmation-preparation.d.ts +4 -0
  386. package/dist/lib/long-task-external-confirmation-preparation.js +100 -0
  387. package/dist/lib/long-task-external-confirmation-shape.d.ts +8 -0
  388. package/dist/lib/long-task-external-confirmation-shape.js +387 -0
  389. package/dist/lib/long-task-external-confirmation-state.d.ts +10 -0
  390. package/dist/lib/long-task-external-confirmation-state.js +109 -0
  391. package/dist/lib/long-task-external-confirmation-types.d.ts +195 -0
  392. package/dist/lib/long-task-external-confirmation-types.js +1 -0
  393. package/dist/lib/long-task-final-integrity.d.ts +2 -0
  394. package/dist/lib/long-task-final-integrity.js +21 -10
  395. package/dist/lib/long-task-final-v2.d.ts +7 -2
  396. package/dist/lib/long-task-final-v2.js +179 -55
  397. package/dist/lib/long-task-finalization-identity.d.ts +27 -0
  398. package/dist/lib/long-task-finalization-identity.js +58 -0
  399. package/dist/lib/long-task-finding-context.d.ts +1 -1
  400. package/dist/lib/long-task-finding-context.js +139 -13
  401. package/dist/lib/long-task-freshness.d.ts +27 -0
  402. package/dist/lib/long-task-freshness.js +129 -6
  403. package/dist/lib/long-task-git.js +3 -3
  404. package/dist/lib/long-task-material-input-closure.d.ts +3 -0
  405. package/dist/lib/long-task-material-input-closure.js +92 -0
  406. package/dist/lib/long-task-obligation-authority-resolution.d.ts +12 -0
  407. package/dist/lib/long-task-obligation-authority-resolution.js +57 -0
  408. package/dist/lib/long-task-obligation-semantic-identity.d.ts +16 -0
  409. package/dist/lib/long-task-obligation-semantic-identity.js +116 -0
  410. package/dist/lib/long-task-observation-authority.d.ts +11 -0
  411. package/dist/lib/long-task-observation-authority.js +137 -6
  412. package/dist/lib/long-task-process-table.d.ts +9 -0
  413. package/dist/lib/long-task-process-table.js +87 -0
  414. package/dist/lib/long-task-process-tree.d.ts +8 -0
  415. package/dist/lib/long-task-process-tree.js +108 -0
  416. package/dist/lib/long-task-proof-adequacy.d.ts +12 -0
  417. package/dist/lib/long-task-proof-adequacy.js +57 -0
  418. package/dist/lib/long-task-proof-capability-floor.d.ts +6 -0
  419. package/dist/lib/long-task-proof-capability-floor.js +137 -0
  420. package/dist/lib/long-task-protected-files.d.ts +1 -1
  421. package/dist/lib/long-task-protected-files.js +1 -1
  422. package/dist/lib/long-task-repair-frontier-checks.d.ts +8 -0
  423. package/dist/lib/long-task-repair-frontier-checks.js +93 -0
  424. package/dist/lib/long-task-repair-frontier-groups.d.ts +2 -0
  425. package/dist/lib/long-task-repair-frontier-groups.js +64 -0
  426. package/dist/lib/long-task-repair-frontier-utils.d.ts +6 -0
  427. package/dist/lib/long-task-repair-frontier-utils.js +27 -0
  428. package/dist/lib/long-task-repair-frontier.d.ts +14 -0
  429. package/dist/lib/long-task-repair-frontier.js +132 -0
  430. package/dist/lib/long-task-risk.d.ts +3 -2
  431. package/dist/lib/long-task-risk.js +73 -24
  432. package/dist/lib/long-task-root-shape.js +148 -8
  433. package/dist/lib/long-task-runner-freeze.d.ts +2 -1
  434. package/dist/lib/long-task-runner-freeze.js +23 -8
  435. package/dist/lib/long-task-runtime-types.d.ts +34 -40
  436. package/dist/lib/long-task-semantic-assurance-policy.js +2 -11
  437. package/dist/lib/long-task-semantic-contract-types.d.ts +2 -1
  438. package/dist/lib/long-task-semantic-drift-migration.js +48 -2
  439. package/dist/lib/long-task-semantic-fact-binding-types.d.ts +20 -0
  440. package/dist/lib/long-task-semantic-fact-closure.d.ts +5 -1
  441. package/dist/lib/long-task-semantic-fact-closure.js +33 -5
  442. package/dist/lib/long-task-semantic-fact-contract-closure.js +176 -1
  443. package/dist/lib/long-task-semantic-fact-contract-proofs.js +18 -1
  444. package/dist/lib/long-task-semantic-fact-input-closure.d.ts +16 -2
  445. package/dist/lib/long-task-semantic-fact-input-closure.js +138 -15
  446. package/dist/lib/long-task-semantic-fact-provenance-closure.js +1 -1
  447. package/dist/lib/long-task-semantic-fact-shape.d.ts +2 -1
  448. package/dist/lib/long-task-semantic-fact-shape.js +35 -1
  449. package/dist/lib/long-task-semantic-proof-adequacy.d.ts +2 -0
  450. package/dist/lib/long-task-semantic-proof-adequacy.js +19 -0
  451. package/dist/lib/long-task-semantic-proof-profile.d.ts +5 -0
  452. package/dist/lib/long-task-semantic-proof-profile.js +187 -0
  453. package/dist/lib/long-task-shape-primitives.d.ts +1 -1
  454. package/dist/lib/long-task-shape-primitives.js +5 -0
  455. package/dist/lib/long-task-source-anchors.d.ts +10 -0
  456. package/dist/lib/long-task-source-anchors.js +102 -0
  457. package/dist/lib/long-task-source-authority-types.d.ts +46 -0
  458. package/dist/lib/long-task-source-claim-validation.js +36 -0
  459. package/dist/lib/long-task-source-conservation-facts.d.ts +8 -0
  460. package/dist/lib/long-task-source-conservation-facts.js +57 -0
  461. package/dist/lib/long-task-source-conservation-types.d.ts +34 -0
  462. package/dist/lib/long-task-source-conservation-types.js +1 -0
  463. package/dist/lib/long-task-source-conservation.d.ts +7 -0
  464. package/dist/lib/long-task-source-conservation.js +110 -0
  465. package/dist/lib/long-task-source-fragments.d.ts +6 -0
  466. package/dist/lib/long-task-source-fragments.js +219 -0
  467. package/dist/lib/long-task-source-projection-resolution.d.ts +5 -0
  468. package/dist/lib/long-task-source-projection-resolution.js +57 -0
  469. package/dist/lib/long-task-source-projection-validation.d.ts +17 -0
  470. package/dist/lib/long-task-source-projection-validation.js +154 -0
  471. package/dist/lib/long-task-source-shape.js +14 -6
  472. package/dist/lib/long-task-source-supersession.d.ts +5 -0
  473. package/dist/lib/long-task-source-supersession.js +138 -0
  474. package/dist/lib/long-task-stage-policy.d.ts +7 -2
  475. package/dist/lib/long-task-stage-policy.js +67 -23
  476. package/dist/lib/long-task-state.d.ts +18 -4
  477. package/dist/lib/long-task-state.js +319 -33
  478. package/dist/lib/long-task-static-observation-freeze.js +4 -3
  479. package/dist/lib/long-task-status-projection.d.ts +3 -1
  480. package/dist/lib/long-task-status-projection.js +44 -13
  481. package/dist/lib/long-task-status-v2.d.ts +10 -6
  482. package/dist/lib/long-task-status-v2.js +70 -58
  483. package/dist/lib/long-task-target-policy.d.ts +8 -3
  484. package/dist/lib/long-task-target-policy.js +40 -9
  485. package/dist/lib/long-task-terminal-finalization.d.ts +12 -0
  486. package/dist/lib/long-task-terminal-finalization.js +190 -0
  487. package/dist/lib/long-task-ui-design-policy.js +15 -4
  488. package/dist/lib/long-task-ui-surface-policy.d.ts +2 -1
  489. package/dist/lib/long-task-ui-surface-policy.js +7 -4
  490. package/dist/lib/long-task-ui-surface-validation.d.ts +3 -1
  491. package/dist/lib/long-task-ui-surface-validation.js +2 -2
  492. package/dist/lib/long-task-verifier-counterfactuals.d.ts +11 -0
  493. package/dist/lib/long-task-verifier-counterfactuals.js +96 -0
  494. package/dist/lib/long-task-verifier-execution.d.ts +9 -0
  495. package/dist/lib/long-task-verifier-execution.js +67 -0
  496. package/dist/lib/long-task-verifier-identity.js +16 -5
  497. package/dist/lib/long-task-verifier-v2.js +52 -65
  498. package/dist/lib/long-task-windows-job-supervisor-helper.d.ts +1 -0
  499. package/dist/lib/long-task-windows-job-supervisor-helper.js +104 -0
  500. package/dist/lib/long-task-windows-job-supervisor-protocol.d.ts +28 -0
  501. package/dist/lib/long-task-windows-job-supervisor-protocol.js +124 -0
  502. package/dist/lib/long-task-windows-job-supervisor-result.d.ts +11 -0
  503. package/dist/lib/long-task-windows-job-supervisor-result.js +152 -0
  504. package/dist/lib/long-task-windows-job-supervisor.d.ts +2 -0
  505. package/dist/lib/long-task-windows-job-supervisor.js +126 -0
  506. package/dist/lib/long-task-workspace-scope.d.ts +1 -0
  507. package/dist/lib/long-task-workspace-scope.js +4 -1
  508. package/dist/lib/long-task-workspace.d.ts +1 -0
  509. package/dist/lib/long-task-workspace.js +10 -0
  510. package/dist/lib/migrations.js +43 -2
  511. package/dist/lib/repository-path-safety.d.ts +3 -0
  512. package/dist/lib/repository-path-safety.js +39 -3
  513. package/dist/lib/semantic-fact-input-shape.d.ts +7 -2
  514. package/dist/lib/semantic-fact-input-shape.js +25 -1
  515. package/dist/lib/semantic-fact-inventory-types.d.ts +8 -2
  516. package/dist/lib/semantic-fact-policy-census.d.ts +1 -1
  517. package/dist/lib/semantic-fact-policy-census.js +5 -2
  518. package/dist/lib/semantic-fact-policy.d.ts +1 -1
  519. package/dist/lib/semantic-fact-policy.js +2 -2
  520. package/dist/lib/semantic-fact-proof-shape.d.ts +1 -1
  521. package/dist/lib/semantic-fact-property-shape.d.ts +1 -1
  522. package/dist/lib/validators.d.ts +3 -0
  523. package/dist/lib/validators.js +45 -157
  524. package/dist/public-api-core.d.ts +12 -0
  525. package/dist/public-api-core.js +12 -0
  526. package/dist/public-api-long-task.d.ts +10 -0
  527. package/dist/public-api-long-task.js +10 -0
  528. package/dist/public-types.d.ts +6 -1
  529. package/dist/schemas/design-authority-delta-assessment-v1.schema.json +191 -0
  530. package/dist/schemas/long-task-delivery-v2/long-task-delivery-v2.schema.json +166 -2
  531. package/dist/schemas/long-task-external-confirmation-record-v1.schema.json +155 -0
  532. package/dist/schemas/long-task-external-confirmation-record-v2.schema.json +209 -0
  533. package/migrations/README.md +99 -0
  534. package/package.json +7 -5
  535. package/source-mappings.yaml +18 -0
@@ -2,6 +2,7 @@ import { copyFile, cp, lstat, mkdir, mkdtemp, readlink, realpath, rm, symlink, }
2
2
  import os from "node:os";
3
3
  import path from "node:path";
4
4
  import { matchesRepoPattern, normalizeRepositoryFile, } from "./long-task-paths.js";
5
+ const directProcessExecutionSandboxes = new WeakMap();
5
6
  const TRANSIENT_REMOVE_CODES = new Set([
6
7
  "EBUSY",
7
8
  "EMFILE",
@@ -11,7 +12,7 @@ const TRANSIENT_REMOVE_CODES = new Set([
11
12
  ]);
12
13
  const REMOVE_RETRY_LIMIT = process.platform === "win32" ? 6 : 2;
13
14
  const REMOVE_RETRY_DELAY_MS = 100;
14
- export async function createCounterfactualSandbox(snapshotRoot, check, control, bindingCarrierPaths, manifest, protectedAuthorityPaths = []) {
15
+ export async function createCounterfactualSandbox(snapshotRoot, check, control, bindingCarrierPaths, manifest, protectedAuthorityPaths = [], executionUniverse = [check]) {
15
16
  const root = await mkdtemp(path.join(os.tmpdir(), "ty-context-counterfactual-"));
16
17
  if (!manifest) {
17
18
  await cp(snapshotRoot, root, {
@@ -19,7 +20,26 @@ export async function createCounterfactualSandbox(snapshotRoot, check, control,
19
20
  force: true,
20
21
  dereference: false,
21
22
  });
22
- return disposable(root);
23
+ return disposable(root, root, null);
24
+ }
25
+ const directProcessPaths = directProcessExecutionPaths({
26
+ check,
27
+ control,
28
+ manifest,
29
+ protected_authority_paths: protectedAuthorityPaths,
30
+ execution_universe: executionUniverse,
31
+ });
32
+ let processExecution = null;
33
+ if (directProcessPaths) {
34
+ const processRoot = await mkdtemp(path.join(os.tmpdir(), "ty-context-counterfactual-process-"));
35
+ await copyInBatches(snapshotRoot, processRoot, directProcessPaths);
36
+ await mkdir(path.join(processRoot, check.runner.resolved_cwd), {
37
+ recursive: true,
38
+ });
39
+ processExecution = {
40
+ root: processRoot,
41
+ mutation_source_root: snapshotRoot,
42
+ };
23
43
  }
24
44
  const exactPaths = new Set([
25
45
  ...Object.keys(check.runner.frozen_files),
@@ -54,7 +74,60 @@ export async function createCounterfactualSandbox(snapshotRoot, check, control,
54
74
  await copyInBatches(snapshotRoot, root, selected);
55
75
  await mkdir(path.join(root, check.runner.resolved_cwd), { recursive: true });
56
76
  await linkDependencyRoots(snapshotRoot, root, check.runner.resolved_cwd);
57
- return disposable(root);
77
+ return disposable(root, root, processExecution);
78
+ }
79
+ export function counterfactualSandboxProcessExecution(sandbox) {
80
+ return directProcessExecutionSandboxes.get(sandbox) ?? null;
81
+ }
82
+ function directProcessExecutionPaths(input) {
83
+ const checks = [
84
+ ...new Map([
85
+ input.check,
86
+ ...input.execution_universe.filter((candidate) => candidate.raw_execution_identity ===
87
+ input.check.raw_execution_identity),
88
+ ].map((candidate) => [candidate.internal_id, candidate])).values(),
89
+ ];
90
+ const processChecks = checks.filter((candidate) => (candidate.observation_authorities ?? []).some((authority) => authority.authority === "package_process_json_exact"));
91
+ if (!processChecks.some((candidate) => candidate === input.check))
92
+ return null;
93
+ const closures = processChecks.map((candidate) => candidate.process_runtime_closure ?? null);
94
+ if (closures.some((closure) => closure === null))
95
+ return null;
96
+ const closureIdentities = new Set(closures.map((closure) => closure.closure_identity));
97
+ if (closureIdentities.size !== 1)
98
+ return null;
99
+ const primaryClosure = input.check.process_runtime_closure;
100
+ const mutationTargets = input.control.mutation.type === "remove_paths"
101
+ ? input.control.mutation.paths
102
+ : [input.control.mutation.path];
103
+ if (mutationTargets.some((target) => !primaryClosure.production_carrier_files.includes(target) ||
104
+ input.protected_authority_paths.some((pattern) => matchesRepoPattern(target, pattern))))
105
+ return null;
106
+ const replacementFixture = input.control.mutation.type === "replace_file"
107
+ ? input.control.mutation.fixture_path
108
+ : null;
109
+ if (replacementFixture !== null &&
110
+ !input.manifest.files.some((file) => file.path === replacementFixture))
111
+ return null;
112
+ const selected = new Set();
113
+ for (const candidate of checks)
114
+ for (const authority of candidate.observation_authorities ?? []) {
115
+ if (authority.authority !== "package_static_json_exact" &&
116
+ authority.authority !== "package_process_json_exact")
117
+ continue;
118
+ for (const pattern of authority.carrier_refs.flatMap((carrier) => carrier.carrier_paths))
119
+ for (const file of input.manifest.files)
120
+ if (matchesRepoPattern(file.path, pattern))
121
+ selected.add(file.path);
122
+ if (authority.authority === "package_process_json_exact")
123
+ for (const file of candidate.process_runtime_closure
124
+ .allowed_runtime_files)
125
+ if (input.manifest.files.some((entry) => entry.path === file))
126
+ selected.add(file);
127
+ }
128
+ return [...selected]
129
+ .filter((file) => !input.protected_authority_paths.some((pattern) => matchesRepoPattern(file, pattern)))
130
+ .sort();
58
131
  }
59
132
  async function copyInBatches(sourceRoot, targetRoot, paths) {
60
133
  const concurrency = 32;
@@ -89,13 +162,20 @@ async function linkDependencyRoots(sourceRoot, targetRoot, resolvedCwd) {
89
162
  await symlink(await realpath(source), target, process.platform === "win32" ? "junction" : "dir");
90
163
  }
91
164
  }
92
- function disposable(root) {
93
- return {
165
+ function disposable(root, mutationSourceRoot, processExecution) {
166
+ const sandbox = {
94
167
  root,
168
+ mutation_source_root: mutationSourceRoot,
95
169
  async dispose() {
96
- await removeCounterfactualSandboxRoot(root);
170
+ directProcessExecutionSandboxes.delete(sandbox);
171
+ await Promise.all([processExecution?.root, root]
172
+ .filter((candidate) => Boolean(candidate))
173
+ .map((candidate) => removeCounterfactualSandboxRoot(candidate)));
97
174
  },
98
175
  };
176
+ if (processExecution)
177
+ directProcessExecutionSandboxes.set(sandbox, processExecution);
178
+ return sandbox;
99
179
  }
100
180
  export async function removeCounterfactualSandboxRoot(root, removeTree = rm, wait = (milliseconds) => new Promise((resolve) => setTimeout(resolve, milliseconds))) {
101
181
  for (let attempt = 0;; attempt += 1) {
@@ -0,0 +1,24 @@
1
+ import type { CompiledCheckV2, CompiledDeliveryContractV2, CompiledOutcomeV2, ContextAuthoritySnapshotV2, DeliveryContractV2, InitialTaskBaseV2, WorkspaceManifestV2 } from "./long-task-delivery-types.js";
2
+ interface CompileWorkspaceGuardOptions {
3
+ live_gate?: boolean;
4
+ initial_task_base?: InitialTaskBaseV2;
5
+ previous_authority?: CompiledDeliveryContractV2 | null;
6
+ }
7
+ interface CompileWorkspaceGuardInput {
8
+ repository: string;
9
+ workdir: string;
10
+ options: CompileWorkspaceGuardOptions;
11
+ contract: DeliveryContractV2;
12
+ contract_files: Record<string, string>;
13
+ source_hashes: Record<string, string>;
14
+ context_snapshot: ContextAuthoritySnapshotV2;
15
+ workspace: WorkspaceManifestV2;
16
+ global_checks: CompiledCheckV2[];
17
+ outcomes: CompiledOutcomeV2[];
18
+ }
19
+ interface CompileWorkspaceGuardResult {
20
+ previous: CompiledDeliveryContractV2 | null;
21
+ initial_task_base: InitialTaskBaseV2;
22
+ }
23
+ export declare function prepareCompileWorkspaceGuard(input: CompileWorkspaceGuardInput): Promise<CompileWorkspaceGuardResult>;
24
+ export {};
@@ -0,0 +1,32 @@
1
+ import { validateActualRiskSurfaces } from "./long-task-risk-surfaces.js";
2
+ import { changedWorkspacePaths, changedWorkspacePathsFromHead, currentGitTree, } from "./long-task-workspace.js";
3
+ import { assertWorkspaceScope, classifyWorkspaceScope, firstLockManagedWorkspacePaths, protectedWorkspacePaths, } from "./long-task-workspace-scope.js";
4
+ export async function prepareCompileWorkspaceGuard(input) {
5
+ const previous = input.options.live_gate
6
+ ? null
7
+ : (input.options.previous_authority ?? null);
8
+ const existingInitialTaskBase = input.options.initial_task_base ?? previous?.initial_task_base ?? null;
9
+ const changedPaths = existingInitialTaskBase
10
+ ? changedWorkspacePaths(existingInitialTaskBase.workspace_manifest, input.workspace)
11
+ : await changedWorkspacePathsFromHead(input.repository, input.workdir);
12
+ const firstLockManagedPaths = existingInitialTaskBase
13
+ ? []
14
+ : await firstLockManagedWorkspacePaths(input.repository, changedPaths);
15
+ assertWorkspaceScope(classifyWorkspaceScope(input.contract, changedPaths, protectedWorkspacePaths({
16
+ contract_files: input.contract_files,
17
+ source_hashes: input.source_hashes,
18
+ context_hashes: input.context_snapshot.sha256,
19
+ checks: [
20
+ ...input.global_checks,
21
+ ...input.outcomes.flatMap((outcome) => outcome.acceptance.checks),
22
+ ],
23
+ additional_files: firstLockManagedPaths,
24
+ })));
25
+ const initialTaskBase = existingInitialTaskBase ?? {
26
+ git_commit: input.workspace.git_head,
27
+ git_tree: await currentGitTree(input.repository),
28
+ workspace_manifest: input.workspace,
29
+ };
30
+ await validateActualRiskSurfaces(input.repository, changedPaths, input.contract);
31
+ return { previous, initial_task_base: initialTaskBase };
32
+ }
@@ -11,3 +11,4 @@ export interface CompileDeliveryOptionsV2 {
11
11
  on_authority_revision?: (proposal: AuthorityRevisionProposalV2) => void;
12
12
  }
13
13
  export declare function compileDeliveryContract(workdirInput: string, projectRootInput?: string, options?: CompileDeliveryOptionsV2): Promise<CompiledDeliveryContractV2>;
14
+ export declare function compiledAcceptanceAuthorityHash(declaredHash: string, claimCoverage: unknown, acceptanceReachability: unknown, frozenChecks: unknown): string;
@@ -6,14 +6,27 @@ import { changedAuthoritySections, computeAuthorityHashes, } from "./long-task-a
6
6
  import { authorityMaterialsChanged, compiledAuthorityMaterials, computeAuthorityMaterials, } from "./long-task-authority-materials.js";
7
7
  import { normalizeContextAuthoritySnapshot } from "./long-task-context-authority.js";
8
8
  import { assertRiskNotDowngraded, buildAuthorityRevisionProposal, enforceAuthorityRevision, } from "./long-task-authority-revision-enforcement.js";
9
- import { validateActualRiskSurfaces } from "./long-task-risk-surfaces.js";
10
9
  import { captureVerifierIdentity } from "./long-task-verifier-identity.js";
11
10
  import { verifierAuthorityDiff } from "./long-task-verifier-authority.js";
12
- import { changedWorkspacePaths, changedWorkspacePathsFromHead, currentGitTree, repoRelative, repositoryRoot, } from "./long-task-workspace.js";
13
- import { assertWorkspaceScope, classifyWorkspaceScope, firstLockManagedWorkspacePaths, protectedWorkspacePaths, } from "./long-task-workspace-scope.js";
11
+ import { canonicalExistingLongTaskWorkdir, repoRelative, repositoryRoot, } from "./long-task-workspace.js";
12
+ import { compileExternalConfirmationIdentityAssurances } from "./long-task-external-confirmation-attestation.js";
13
+ import { assertNoUnfinishedContextMutationForAuthority } from "./context-mutation/mutation-journal.js";
14
+ import { currentActiveAuthorityLockToken } from "./long-task-active-authority-lock-context.js";
15
+ import { withActiveAuthorityLock } from "./long-task-state.js";
16
+ import { prepareCompileWorkspaceGuard } from "./long-task-delivery-compiler-preflight.js";
14
17
  export async function compileDeliveryContract(workdirInput, projectRootInput = process.cwd(), options = {}) {
15
18
  const repository = await repositoryRoot(projectRootInput);
16
- const workdir = path.resolve(workdirInput);
19
+ const compile = () => compileDeliveryContractLocked(workdirInput, repository, options);
20
+ if (currentActiveAuthorityLockToken(repository))
21
+ return compile();
22
+ return withActiveAuthorityLock(repository, "compile", compile);
23
+ }
24
+ async function compileDeliveryContractLocked(workdirInput, repository, options) {
25
+ // The shared lock stays held while every Context, Source and Design input is
26
+ // captured. commitActiveAuthority repeats freshness under a later lock when
27
+ // compilation and binding are separate calls.
28
+ await assertNoUnfinishedContextMutationForAuthority(repository);
29
+ const workdir = await canonicalExistingLongTaskWorkdir(repository, workdirInput);
17
30
  const workdirRelative = repoRelative(repository, workdir);
18
31
  if (!workdirRelative)
19
32
  throw new Error("long_task_workdir_must_not_be_repository_root");
@@ -42,54 +55,45 @@ export async function compileDeliveryContract(workdirInput, projectRootInput = p
42
55
  ]));
43
56
  const contractHash = sha256Hex(canonicalValueJson(contract));
44
57
  const authorityMaterials = computeAuthorityMaterials(contract, sourceHashes, sourceItems, context);
45
- const previous = options.live_gate
46
- ? null
47
- : (options.previous_authority ?? null);
48
- const existingInitialTaskBase = options.initial_task_base ?? previous?.initial_task_base ?? null;
49
- const changedPaths = existingInitialTaskBase
50
- ? changedWorkspacePaths(existingInitialTaskBase.workspace_manifest, current)
51
- : await changedWorkspacePathsFromHead(repository, workdir);
52
- const firstLockManagedPaths = existingInitialTaskBase
53
- ? []
54
- : await firstLockManagedWorkspacePaths(repository, changedPaths);
55
- assertWorkspaceScope(classifyWorkspaceScope(contract, changedPaths, protectedWorkspacePaths({
58
+ const { previous, initial_task_base: initialTaskBase } = await prepareCompileWorkspaceGuard({
59
+ repository,
60
+ workdir,
61
+ options,
62
+ contract,
56
63
  contract_files: contractFiles,
57
64
  source_hashes: sourceHashes,
58
- context_hashes: context.sha256,
59
- checks: [
60
- ...globalChecks,
61
- ...outcomes.flatMap((outcome) => outcome.acceptance.checks),
62
- ],
63
- additional_files: firstLockManagedPaths,
64
- })));
65
- const initialTaskBase = existingInitialTaskBase ?? {
66
- git_commit: current.git_head,
67
- git_tree: await currentGitTree(repository),
68
- workspace_manifest: current,
69
- };
70
- await validateActualRiskSurfaces(repository, changedPaths, contract);
65
+ context_snapshot: context,
66
+ workspace: current,
67
+ global_checks: globalChecks,
68
+ outcomes,
69
+ });
71
70
  const verifier = await captureVerifierIdentity(repository, options.require_completion_gate !== false);
72
71
  const allChecks = [
73
72
  ...globalChecks,
74
73
  ...outcomes.flatMap((outcome) => outcome.acceptance.checks),
75
74
  ];
76
75
  const authorityHashes = computeAuthorityHashes(contract);
77
- authorityHashes.acceptance_authority_hash = sha256Hex(canonicalValueJson({
78
- declared: authorityHashes.acceptance_authority_hash,
79
- claim_coverage: claims.summary,
80
- frozen_checks: allChecks.map((check) => ({
81
- internal_id: check.internal_id,
82
- runner_definition: check.runner.definition_sha256,
83
- resolved_cwd: check.runner.resolved_cwd,
84
- resolved_target: check.runner.resolved_target,
85
- package_script: check.runner.package_script,
86
- verification_inputs: check.verification_input_hashes,
87
- raw_execution_identity: check.raw_execution_identity,
88
- evidence_adapter: check.evidence_adapter,
89
- observation_authorities: check.observation_authorities,
90
- process_runtime_closure: check.process_runtime_closure,
91
- })),
92
- }));
76
+ const externalConfirmationIdentityAssurances = await compileExternalConfirmationIdentityAssurances({
77
+ contract,
78
+ repository,
79
+ source_hashes: sourceHashes,
80
+ context_snapshot: context,
81
+ });
82
+ authorityHashes.acceptance_authority_hash = compiledAcceptanceAuthorityHash(authorityHashes.acceptance_authority_hash, claims.summary, validation.acceptance_reachability, allChecks.map((check) => ({
83
+ internal_id: check.internal_id,
84
+ runner_definition: check.runner.definition_sha256,
85
+ resolved_cwd: check.runner.resolved_cwd,
86
+ resolved_target: check.runner.resolved_target,
87
+ package_script: check.runner.package_script,
88
+ verification_inputs: check.verification_input_hashes,
89
+ raw_execution_identity: check.raw_execution_identity,
90
+ evidence_adapter: check.evidence_adapter,
91
+ observation_authorities: check.observation_authorities,
92
+ process_runtime_closure: check.process_runtime_closure,
93
+ completion_role: check.completion_role,
94
+ expected_authority_refs: check.expected_authority_refs,
95
+ required_evidence_capabilities: check.required_evidence_capabilities,
96
+ })));
93
97
  let authorityRevision = options.authority_revision ?? previous?.authority_revision ?? 1;
94
98
  if (previous) {
95
99
  const changes = changedAuthoritySections(previous.authority_hashes, authorityHashes);
@@ -122,6 +126,7 @@ export async function compileDeliveryContract(workdirInput, projectRootInput = p
122
126
  source_hashes: sourceHashes,
123
127
  source_items: sourceItems,
124
128
  context_snapshot: normalizeContextAuthoritySnapshot(context),
129
+ project_design_authority: validation.project_design_authority,
125
130
  verifier_identity: verifier,
126
131
  effective_risk: risk.effective_level,
127
132
  risk_reasons: risk.reasons,
@@ -131,6 +136,8 @@ export async function compileDeliveryContract(workdirInput, projectRootInput = p
131
136
  authority_materials: authorityMaterials,
132
137
  authority_revision: authorityRevision,
133
138
  claim_coverage: claims.summary,
139
+ acceptance_reachability: validation.acceptance_reachability,
140
+ external_confirmation_identity_assurances: externalConfirmationIdentityAssurances,
134
141
  semantic_fact_manifest: contract.semantic_fact_manifest,
135
142
  task: contract.task,
136
143
  risk: contract.risk,
@@ -153,3 +160,11 @@ export async function compileDeliveryContract(workdirInput, projectRootInput = p
153
160
  compiled_identity: sha256Hex(canonicalValueJson(unsigned)),
154
161
  };
155
162
  }
163
+ export function compiledAcceptanceAuthorityHash(declaredHash, claimCoverage, acceptanceReachability, frozenChecks) {
164
+ return sha256Hex(canonicalValueJson({
165
+ declared: declaredHash,
166
+ claim_coverage: claimCoverage,
167
+ acceptance_reachability: acceptanceReachability,
168
+ frozen_checks: frozenChecks,
169
+ }));
170
+ }
@@ -4,6 +4,9 @@ export interface ParsedDeliveryContractV2 {
4
4
  contract: DeliveryContractV2;
5
5
  contract_files: Record<string, string>;
6
6
  outcome_files: string[];
7
+ compatibility: {
8
+ completion_authority_defaulted_to_machine_only: boolean;
9
+ };
7
10
  }
8
11
  export interface ParseDeliveryContractOptions {
9
12
  validate_structure?: boolean;
@@ -1,4 +1,4 @@
1
- import { readFile } from "node:fs/promises";
1
+ import { readFile, realpath } from "node:fs/promises";
2
2
  import path from "node:path";
3
3
  import { materializeLongTaskCompactCarrier, materializeLongTaskCompactCarrierForMigration, } from "./long-task-compact-carrier.js";
4
4
  import { parseStrictYaml, sha256Hex } from "./strict-codec.js";
@@ -8,18 +8,18 @@ import { assertProtectedRepositoryFile } from "./long-task-protected-files.js";
8
8
  import { array, literal, object, parseSourceClaims, strings, } from "./long-task-delivery-shape.js";
9
9
  import { parseGlobal, parseRisk, parseStages, parseTask, } from "./long-task-root-shape.js";
10
10
  import { parseSemanticFactManifestRef } from "./long-task-semantic-fact-shape.js";
11
- import { repositoryRoot } from "./long-task-workspace.js";
11
+ import { canonicalExistingLongTaskWorkdir, repositoryRoot, } from "./long-task-workspace.js";
12
12
  import { assertNoSemanticDriftMigration, semanticDriftMigrationFields, } from "./long-task-semantic-drift-migration.js";
13
13
  export const DELIVERY_CONTRACT_FILE = "delivery-contract.yaml";
14
14
  export async function parseDeliveryContract(workdir) {
15
15
  return (await parseDeliveryContractBundle(workdir)).contract;
16
16
  }
17
17
  export async function parseDeliveryContractBundle(workdirInput, repositoryInput, options = {}) {
18
- const workdir = path.resolve(workdirInput);
19
- const file = path.join(workdir, DELIVERY_CONTRACT_FILE);
20
18
  const repository = repositoryInput
21
- ? path.resolve(repositoryInput)
22
- : await repositoryRoot(workdir);
19
+ ? await realpath(path.resolve(repositoryInput))
20
+ : await repositoryRoot(workdirInput);
21
+ const workdir = await canonicalExistingLongTaskWorkdir(repository, workdirInput);
22
+ const file = path.join(workdir, DELIVERY_CONTRACT_FILE);
23
23
  const raw = await readFile(await assertProtectedRepositoryFile(repository, file, "delivery_contract"), "utf8");
24
24
  let root = parseRoot(raw, true);
25
25
  if (Object.hasOwn(root, "compact_semantic_carrier")) {
@@ -60,14 +60,30 @@ export async function parseDeliveryContractBundle(workdirInput, repositoryInput,
60
60
  outcomes.sort((left, right) => left.key.localeCompare(right.key));
61
61
  }
62
62
  const contract = parseContractRoot(root, outcomes);
63
+ const completionAuthorityDefaulted = targetProfileCompletionAuthorityMissing(root);
63
64
  if (options.validate_structure !== false)
64
- validateDeliveryContractStructure(contract);
65
+ validateDeliveryContractStructure(contract, {
66
+ deferCompletionAuthorityClosure: true,
67
+ });
65
68
  return {
66
69
  contract,
67
70
  contract_files: Object.fromEntries(Object.entries(files).sort(([a], [b]) => a.localeCompare(b))),
68
71
  outcome_files: outcomeFiles,
72
+ compatibility: {
73
+ completion_authority_defaulted_to_machine_only: completionAuthorityDefaulted,
74
+ },
69
75
  };
70
76
  }
77
+ function targetProfileCompletionAuthorityMissing(root) {
78
+ const task = root.task;
79
+ if (!task || typeof task !== "object" || Array.isArray(task))
80
+ return false;
81
+ const targetProfile = task.target_profile;
82
+ return Boolean(targetProfile &&
83
+ typeof targetProfile === "object" &&
84
+ !Array.isArray(targetProfile) &&
85
+ !Object.hasOwn(targetProfile, "completion_authority"));
86
+ }
71
87
  export function parseDeliveryContractText(raw) {
72
88
  return parseDeliveryContractTextInternal(raw, false);
73
89
  }
@@ -83,7 +99,9 @@ function parseDeliveryContractTextInternal(raw, allowLegacyCarrier) {
83
99
  assertNoSemanticDriftMigration(semanticDriftMigrationFields(root));
84
100
  }
85
101
  const contract = parseContractRoot(root, array(root.outcomes, "outcomes").map((item, index) => parseOutcome(item, `outcomes[${index}]`)));
86
- validateDeliveryContractStructure(contract);
102
+ validateDeliveryContractStructure(contract, {
103
+ deferCompletionAuthorityClosure: true,
104
+ });
87
105
  return contract;
88
106
  }
89
107
  function parseRoot(raw, bundle) {
@@ -10,4 +10,6 @@ export * from "./long-task-semantic-contract-types.js";
10
10
  export * from "./long-task-ui-surface-types.js";
11
11
  export * from "./long-task-source-authority-types.js";
12
12
  export * from "./long-task-workspace-runtime-types.js";
13
+ export * from "./long-task-external-confirmation-types.js";
14
+ export * from "./long-task-completion-types.js";
13
15
  export * from "./semantic-fact-types.js";
@@ -10,4 +10,6 @@ export * from "./long-task-semantic-contract-types.js";
10
10
  export * from "./long-task-ui-surface-types.js";
11
11
  export * from "./long-task-source-authority-types.js";
12
12
  export * from "./long-task-workspace-runtime-types.js";
13
+ export * from "./long-task-external-confirmation-types.js";
14
+ export * from "./long-task-completion-types.js";
13
15
  export * from "./semantic-fact-types.js";
@@ -1,3 +1,11 @@
1
- import type { DeliveryContractV2 } from "./long-task-delivery-types.js";
2
- export declare function validateDeliveryContractStructure(contract: DeliveryContractV2): void;
3
- export declare function deliveryContractStructureDiagnostics(contract: DeliveryContractV2): string[];
1
+ import type { CompiledCheckV2, CompiledOutcomeV2, DeliveryContractV2 } from "./long-task-delivery-types.js";
2
+ import type { AcceptanceReachabilityV1 } from "./long-task-acceptance-reachability-types.js";
3
+ export interface DeliveryContractStructureValidationOptions {
4
+ allowDeferredDesignComponentBindingClosure?: boolean;
5
+ deferCompletionAuthorityClosure?: boolean;
6
+ }
7
+ export declare function validateDeliveryContractStructure(contract: DeliveryContractV2, options?: DeliveryContractStructureValidationOptions): void;
8
+ export declare function deliveryContractStructureDiagnostics(contract: DeliveryContractV2, options?: DeliveryContractStructureValidationOptions): string[];
9
+ export declare function validateResolvedCompletionAuthorityClosure(contract: DeliveryContractV2, compiledGlobalChecks: readonly CompiledCheckV2[], compiledOutcomes: readonly CompiledOutcomeV2[], reachability: AcceptanceReachabilityV1 | null, report?: ValidationReporter): void;
10
+ type ValidationReporter = (message: string) => void;
11
+ export {};
@@ -10,7 +10,7 @@ import { validateExecutionTargets, validateExternalConfirmationImpacts, } from "
10
10
  import { validateUiSurfaceBindings } from "./long-task-ui-surface-policy.js";
11
11
  import { controlFieldFacts } from "./long-task-control-fields.js";
12
12
  import { validateSemanticAssuranceShape } from "./long-task-semantic-assurance-policy.js";
13
- export function validateDeliveryContractStructure(contract) {
13
+ export function validateDeliveryContractStructure(contract, options = {}) {
14
14
  validateUniqueKeys(contract);
15
15
  validateDependencies(contract);
16
16
  validateControlClosure(contract);
@@ -21,22 +21,28 @@ export function validateDeliveryContractStructure(contract) {
21
21
  allow_uncovered: true,
22
22
  });
23
23
  validateSourceClaimMappings(contract, claims);
24
- validateUiSurfaceBindings(contract, claims);
24
+ validateUiSurfaceBindings(contract, claims, undefined, options);
25
25
  assertCompiledClaimsCovered(claims);
26
- validateDeliveryStages(contract);
27
- validateExecutionTargets(contract);
26
+ const completionOptions = {
27
+ defer_completion_authority_closure: options.deferCompletionAuthorityClosure,
28
+ };
29
+ validateDeliveryStages(contract, undefined, completionOptions);
30
+ validateExecutionTargets(contract, undefined, completionOptions);
28
31
  validateSemanticAssuranceShape(contract);
29
32
  validateEvidenceCapabilityDeclarations(contract);
30
33
  validateExternalConfirmationImpacts(contract, claims);
31
34
  }
32
- export function deliveryContractStructureDiagnostics(contract) {
35
+ export function deliveryContractStructureDiagnostics(contract, options = {}) {
33
36
  const diagnostics = [];
34
37
  const report = (message) => diagnostics.push(message);
35
38
  validateUniqueKeys(contract, report);
36
39
  validateDependencies(contract, report);
37
40
  validateControlClosure(contract, report);
38
- validateDeliveryStages(contract, report);
39
- validateExecutionTargets(contract, report);
41
+ const completionOptions = {
42
+ defer_completion_authority_closure: options.deferCompletionAuthorityClosure,
43
+ };
44
+ validateDeliveryStages(contract, report, completionOptions);
45
+ validateExecutionTargets(contract, report, completionOptions);
40
46
  validateSemanticAssuranceShape(contract, report);
41
47
  validateEvidenceCapabilityDeclarations(contract, report);
42
48
  validateOwnerAndBindings(contract, report);
@@ -48,12 +54,21 @@ export function deliveryContractStructureDiagnostics(contract) {
48
54
  });
49
55
  if (claims) {
50
56
  validateSourceClaimMappings(contract, claims, report);
51
- validateUiSurfaceBindings(contract, claims, report);
57
+ validateUiSurfaceBindings(contract, claims, report, options);
52
58
  validateExternalConfirmationImpacts(contract, claims, report);
53
59
  capture(diagnostics, () => assertCompiledClaimsCovered(claims));
54
60
  }
55
61
  return [...new Set(diagnostics)];
56
62
  }
63
+ export function validateResolvedCompletionAuthorityClosure(contract, compiledGlobalChecks, compiledOutcomes, reachability, report) {
64
+ const options = {
65
+ acceptance_reachability: reachability,
66
+ compiled_global_checks: compiledGlobalChecks,
67
+ compiled_outcomes: compiledOutcomes,
68
+ };
69
+ validateDeliveryStages(contract, report, options);
70
+ validateExecutionTargets(contract, report, options);
71
+ }
57
72
  function validateEvidenceAdapters(contract, report) {
58
73
  for (const check of contract.global.acceptance.checks)
59
74
  captureOrReport(report, () => validateEvidenceAdapterCompatibility(check, null));
@@ -0,0 +1,6 @@
1
+ import type { DesignResourceImplementationFeasibilityV1 } from "./design-resource-implementation-feasibility-types.js";
2
+ import type { DeliveryBindingV2 } from "./long-task-delivery-types.js";
3
+ type FeasibleRealization = DesignResourceImplementationFeasibilityV1["component_family_cells"][number]["feasible_realizations"][number];
4
+ export declare function matchingFeasibilityBindingKeys(realization: FeasibleRealization, bindings: DeliveryBindingV2[]): Set<string>;
5
+ export declare function validateFeasibilityBindingOwnerRoots(document: DesignResourceImplementationFeasibilityV1, componentBindings: DeliveryBindingV2[], routeBinding: DeliveryBindingV2): void;
6
+ export {};
@@ -0,0 +1,52 @@
1
+ import { invalid } from "./long-task-design-resource-method-binding.js";
2
+ import { matchesRepoPattern, proveRepositoryPatternSubset, } from "./long-task-paths.js";
3
+ export function matchingFeasibilityBindingKeys(realization, bindings) {
4
+ const result = new Set();
5
+ for (const owner of realization.owner_candidates)
6
+ for (const binding of bindings) {
7
+ if (binding.existence !== owner.existence)
8
+ continue;
9
+ const matches = owner.kind === "planned_logical_owner"
10
+ ? binding.key === owner.locator || binding.target === owner.locator
11
+ : (binding.kind === "file" && binding.target === owner.locator) ||
12
+ binding.carrier_paths.some((pattern) => matchesRepoPattern(owner.locator, pattern));
13
+ if (matches)
14
+ result.add(binding.key);
15
+ }
16
+ return result;
17
+ }
18
+ export function validateFeasibilityBindingOwnerRoots(document, componentBindings, routeBinding) {
19
+ const componentRoots = observedOwnerRoots(document, "component_owner_roots");
20
+ const routeRoots = observedOwnerRoots(document, "route_owner_roots");
21
+ if (componentBindings.length && componentRoots.length === 0)
22
+ invalid("feasibility_component_owner_roots_required", document.target_ref);
23
+ for (const binding of componentBindings) {
24
+ if (binding.existence === "planned" && binding.carrier_paths.length === 0)
25
+ invalid("feasibility_planned_binding_carrier_required", binding.key);
26
+ proveBindingPathUniverseWithinObservedRoots(binding, componentRoots, "feasibility_component_binding_outside_owner_roots");
27
+ }
28
+ if (routeRoots.length === 0)
29
+ invalid("feasibility_route_owner_roots_required", document.target_ref);
30
+ proveBindingPathUniverseWithinObservedRoots(routeBinding, routeRoots, "feasibility_route_binding_outside_owner_roots");
31
+ }
32
+ function proveBindingPathUniverseWithinObservedRoots(binding, roots, errorCode) {
33
+ for (const candidate of bindingPathUniverse(binding)) {
34
+ const proofs = roots.map((root) => proveRepositoryPatternSubset(candidate, `${root.replace(/\/+$/u, "")}/**`));
35
+ if (proofs.some((proof) => proof.status === "proven_subset"))
36
+ continue;
37
+ const proof = proofs[0];
38
+ invalid(errorCode, `${binding.key}:${candidate}:${proof?.status ?? "unknown"}:${proof?.reason ?? "owner_roots_empty"}:${roots.join(",")}`);
39
+ }
40
+ }
41
+ function observedOwnerRoots(document, kind) {
42
+ const observation = document.substrate_observations.find((candidate) => candidate.kind === kind);
43
+ return observation?.disposition === "observed" &&
44
+ observation.value?.kind === "repository_paths"
45
+ ? observation.value.paths
46
+ : [];
47
+ }
48
+ function bindingPathUniverse(binding) {
49
+ return binding.kind === "verified"
50
+ ? [...binding.carrier_paths]
51
+ : [binding.target, ...binding.carrier_paths];
52
+ }
@@ -0,0 +1,14 @@
1
+ import type { DesignResourceHandoffPreflightV1 } from "./design-resource-handoff-types.js";
2
+ import type { DesignResourceHandoffPreflightV2 } from "./design-resource-symbolic-fact-types.js";
3
+ import type { CompiledSourceItemV2, DeliveryContractV2 } from "./long-task-delivery-types.js";
4
+ import type { ContractDesignTarget } from "./long-task-design-resource-handoff.js";
5
+ type DesignResourcePreflight = DesignResourceHandoffPreflightV1 | DesignResourceHandoffPreflightV2;
6
+ export interface LongTaskDesignFeasibilityBindingValidationResult {
7
+ attribution_mode: "feasibility" | "legacy";
8
+ consumed_component_binding_refs: string[];
9
+ }
10
+ export interface LongTaskDesignFeasibilityBindingValidationOptions {
11
+ deferComponentBindingAttribution?: boolean;
12
+ }
13
+ export declare function validateLongTaskDesignFeasibilityBindings(contract: DeliveryContractV2, contractTarget: ContractDesignTarget, preflight: DesignResourcePreflight, sourceItems: CompiledSourceItemV2[], options?: LongTaskDesignFeasibilityBindingValidationOptions): LongTaskDesignFeasibilityBindingValidationResult;
14
+ export {};