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,53 @@
1
+ import { lstat, readFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { parseExternalConfirmationRecord } from "./long-task-external-confirmation-shape.js";
4
+ import { assertVerifierAuthorityCurrent, deliveryCompileFreshness, } from "./long-task-freshness.js";
5
+ import { loadSemanticFactManifest } from "./semantic-fact-source-parser.js";
6
+ import { assertMatchingActiveBinding, loadActiveLongTaskAuthority, } from "./long-task-state.js";
7
+ import { captureWorkspaceManifest, currentGitState, repositoryRoot, } from "./long-task-workspace.js";
8
+ const MAX_SUBMITTED_RECORD_BYTES = 16 * 1024 * 1024;
9
+ export async function loadExternalAuthorityContext(workdirInput, requireCleanCandidate) {
10
+ const repository = await repositoryRoot(process.cwd());
11
+ const workdir = path.resolve(workdirInput);
12
+ const active = (await loadActiveLongTaskAuthority(repository, { migrate_legacy: true })).authority;
13
+ if (!active)
14
+ throw new Error("active_task_missing");
15
+ if (active.workdir !== workdir)
16
+ throw new Error("active_task_workdir_mismatch");
17
+ const compiled = active.authority_snapshot;
18
+ await assertMatchingActiveBinding(compiled);
19
+ await assertVerifierAuthorityCurrent(repository, active.verifier_identity);
20
+ const stale = await deliveryCompileFreshness(compiled);
21
+ if (stale.length)
22
+ throw new Error(`external_confirmation_authority_stale:${stale.join(",")}`);
23
+ const git = await currentGitState(repository);
24
+ if (requireCleanCandidate && git.dirty.length)
25
+ throw new Error(`external_confirmation_requires_clean_candidate_commit:${git.dirty.join(",")}`);
26
+ const manifest = await captureWorkspaceManifest(repository, workdir);
27
+ return {
28
+ repository,
29
+ workdir,
30
+ compiled,
31
+ manifest,
32
+ candidate: {
33
+ git_head: git.head,
34
+ git_tree: git.tree,
35
+ snapshot_sha256: manifest.snapshot_sha256,
36
+ },
37
+ candidate_dirty: git.dirty,
38
+ semantic_manifest: (await loadSemanticFactManifest(repository, compiled.task.source_paths)).manifest,
39
+ };
40
+ }
41
+ export async function readSubmittedExternalConfirmationRecord(recordPathInput) {
42
+ const file = path.resolve(recordPathInput);
43
+ const status = await lstat(file);
44
+ if (status.isSymbolicLink())
45
+ throw new Error(`external_confirmation_record_symlink_not_allowed:${file}`);
46
+ if (!status.isFile())
47
+ throw new Error(`external_confirmation_record_not_regular_file:${file}`);
48
+ if (typeof status.nlink === "number" && status.nlink > 1)
49
+ throw new Error(`external_confirmation_record_hardlink_not_allowed:${file}`);
50
+ if (status.size > MAX_SUBMITTED_RECORD_BYTES)
51
+ throw new Error(`external_confirmation_record_too_large:${status.size}`);
52
+ return parseExternalConfirmationRecord(JSON.parse(await readFile(file, "utf8")));
53
+ }
@@ -0,0 +1,11 @@
1
+ import type { EffectiveExternalObligationV1 } from "./long-task-acceptance-reachability-types.js";
2
+ import type { ExternalConfirmationV2 } from "./long-task-delivery-types.js";
3
+ import type { ExternalAuthorityContextV1 } from "./long-task-external-confirmation-context.js";
4
+ import type { ExternalConfirmationEvaluationV1, ExternalConfirmationRecord, ExternalConfirmationRecordV2 } from "./long-task-external-confirmation-types.js";
5
+ export declare function evaluateExternalConfirmationRecord(context: ExternalAuthorityContextV1, confirmation: ExternalConfirmationV2, record: ExternalConfirmationRecord): Promise<ExternalConfirmationEvaluationV1>;
6
+ export declare function externalConfirmationSubmissionEnvelopeIssues(context: ExternalAuthorityContextV1, confirmation: ExternalConfirmationV2, record: ExternalConfirmationRecordV2): Promise<string[]>;
7
+ export declare function emptyExternalConfirmationEvaluation(context: ExternalAuthorityContextV1, confirmation: ExternalConfirmationV2, state: ExternalConfirmationEvaluationV1["state"], issues: string[]): Promise<ExternalConfirmationEvaluationV1>;
8
+ export declare function partitionExternalConfirmationArtifactSnapshots(rows: EffectiveExternalObligationV1[], record: ExternalConfirmationRecordV2): {
9
+ blocking_or_shared: ExternalConfirmationRecordV2["artifact_snapshots"];
10
+ advisory_only: ExternalConfirmationRecordV2["artifact_snapshots"];
11
+ };
@@ -0,0 +1,454 @@
1
+ import { sourceBackedExternalJudgmentAdmitted } from "./long-task-acceptance-reachability-helpers.js";
2
+ import { compiledExternalConfirmationIdentityAssurance, externalConfirmationActor, verifyExternalConfirmationAttestation, } from "./long-task-external-confirmation-attestation.js";
3
+ import { externalArtifactSnapshotIntegrityIssues } from "./long-task-external-confirmation-artifacts.js";
4
+ import { readExternalConfirmationChallenge } from "./long-task-external-confirmation-challenge.js";
5
+ import { objectiveExternalComparison } from "./long-task-external-confirmation-expected.js";
6
+ import { allEffectiveExternalRows, blockingExternalRows, deriveRelevantExternalInputIdentity, sameValue, } from "./long-task-external-confirmation-identity.js";
7
+ export async function evaluateExternalConfirmationRecord(context, confirmation, record) {
8
+ if (record.schema_version === "long-task-external-confirmation-record-v1")
9
+ return legacyExternalConfirmationEvaluation(context, confirmation, record);
10
+ const relevant = deriveRelevantExternalInputIdentity(context.compiled, confirmation.key, context.manifest);
11
+ const identity = await recordIdentityIssues(context, confirmation, record, relevant);
12
+ const envelopeIssues = [...identity.issues];
13
+ const candidateMatches = sameValue(record.candidate, context.candidate);
14
+ const carriedForward = !candidateMatches &&
15
+ relevant.mode === "bounded_paths" &&
16
+ record.relevant_input_identity === relevant.identity;
17
+ if (!candidateMatches && !carriedForward)
18
+ envelopeIssues.push("candidate_identity_stale");
19
+ const rows = allEffectiveExternalRows(context.compiled, confirmation.key);
20
+ const blockingRows = blockingExternalRows(context.compiled, confirmation.key);
21
+ const unboundBlocking = !rows.length && confirmation.blocks_target;
22
+ const unboundBlockingIssues = unboundBlocking
23
+ ? ["blocking_confirmation_has_no_exact_obligations"]
24
+ : [];
25
+ const recordIssues = await recordSetAndArtifactIssues(context, record, rows);
26
+ const obligationEvaluation = evaluateObligationResults(context, confirmation, record, rows);
27
+ const blockingIssues = uniqueIssues([
28
+ ...envelopeIssues,
29
+ ...unboundBlockingIssues,
30
+ ...recordIssues.blocking_issues,
31
+ ...obligationEvaluation.blocking_issues,
32
+ ]);
33
+ const advisoryIssues = uniqueIssues([
34
+ ...envelopeIssues,
35
+ ...recordIssues.advisory_issues,
36
+ ...obligationEvaluation.advisory_issues,
37
+ ]);
38
+ const issues = uniqueIssues([
39
+ ...envelopeIssues,
40
+ ...unboundBlockingIssues,
41
+ ...recordIssues.envelope_issues,
42
+ ...recordIssues.blocking_issues,
43
+ ...recordIssues.advisory_issues,
44
+ ...obligationEvaluation.blocking_issues,
45
+ ...obligationEvaluation.advisory_issues,
46
+ ]);
47
+ const obligationResults = obligationEvaluation.results;
48
+ const advisoryRows = rows.filter((row) => row.completion_role === "advisory");
49
+ const blockingState = blockingRows.length
50
+ ? evaluationState(blockingIssues, blockingRows, obligationResults.filter((result) => result.completion_role === "blocking"))
51
+ : null;
52
+ const advisoryState = advisoryRows.length
53
+ ? evaluationState(advisoryIssues, advisoryRows, obligationResults.filter((result) => result.completion_role === "advisory"), blockingRows.length ? "pending" : "invalid")
54
+ : null;
55
+ return {
56
+ confirmation_ref: confirmation.key,
57
+ owner: confirmation.owner,
58
+ blocks_target: blockingRows.length > 0 || unboundBlocking,
59
+ state: blockingState ??
60
+ advisoryState ??
61
+ evaluationState(issues, rows, obligationResults),
62
+ record_sha256: record.record_sha256,
63
+ session_id: record.session.id,
64
+ relevant_input_identity: relevant.identity,
65
+ carried_forward_from_candidate: carriedForward,
66
+ actor_identity_assurance: identity.signature_verified
67
+ ? "ed25519_verified"
68
+ : identity.assurance?.scheme === "declared_only"
69
+ ? "declared_only"
70
+ : "invalid",
71
+ identity_assurance: identity.assurance,
72
+ signature_verified: identity.signature_verified,
73
+ challenge_current: identity.challenge_current,
74
+ artifact_snapshot_integrity: recordIssues.artifact_snapshot_integrity,
75
+ record_schema_version: record.schema_version,
76
+ obligation_results: obligationResults.sort((left, right) => left.obligation_ref.localeCompare(right.obligation_ref)),
77
+ effective_blocking_obligation_refs: blockingRows
78
+ .map((row) => row.obligation_ref)
79
+ .sort(),
80
+ effective_advisory_obligation_refs: rows
81
+ .filter((row) => row.completion_role === "advisory")
82
+ .map((row) => row.obligation_ref)
83
+ .sort(),
84
+ blocking_issues: blockingIssues,
85
+ advisory_state: advisoryState,
86
+ advisory_issues: advisoryIssues,
87
+ issues,
88
+ };
89
+ }
90
+ export async function externalConfirmationSubmissionEnvelopeIssues(context, confirmation, record) {
91
+ const relevant = deriveRelevantExternalInputIdentity(context.compiled, confirmation.key, context.manifest);
92
+ const identity = await recordIdentityIssues(context, confirmation, record, relevant);
93
+ const issues = [...identity.issues];
94
+ if (!sameValue(record.candidate, context.candidate))
95
+ issues.push("candidate_identity_stale");
96
+ const rows = allEffectiveExternalRows(context.compiled, confirmation.key);
97
+ if (!rows.length && confirmation.blocks_target)
98
+ issues.push("blocking_confirmation_has_no_exact_obligations");
99
+ const resultSetIssues = externalResultSetIssueGroups(rows, record.results);
100
+ issues.push(...resultSetIssues.envelope_issues, ...resultSetIssues.blocking_issues);
101
+ const declarations = new Map((confirmation.obligations ?? []).map((row) => [row.key, row]));
102
+ for (const row of rows) {
103
+ const result = record.results.find((candidate) => candidate.obligation_ref === row.obligation_ref);
104
+ const declaration = declarations.get(row.obligation_ref);
105
+ if (!result || !declaration)
106
+ continue;
107
+ if (row.completion_role !== "blocking")
108
+ continue;
109
+ if (result.fact_ref !== row.fact_ref ||
110
+ result.claim_ref !== row.claim_ref ||
111
+ result.applicability_ref !== row.applicability_ref)
112
+ issues.push(`obligation_identity_mismatch:${row.obligation_ref}`);
113
+ if (result.result_kind !== declaration.result_kind)
114
+ issues.push(`result_kind_mismatch:${row.obligation_ref}`);
115
+ if (declaration.result_kind === "judgment" &&
116
+ (!sourceBackedExternalJudgmentAdmitted(context.compiled, context.semantic_manifest, row, declaration.judgment_basis, record.actor.authority_kind) ||
117
+ !result.rationale?.trim()))
118
+ issues.push(`judgment_not_admitted:${row.obligation_ref}`);
119
+ }
120
+ return [...new Set(issues)].sort();
121
+ }
122
+ export async function emptyExternalConfirmationEvaluation(context, confirmation, state, issues) {
123
+ const relevant = deriveRelevantExternalInputIdentity(context.compiled, confirmation.key, context.manifest);
124
+ const assurance = compiledExternalConfirmationIdentityAssurance(context.compiled, confirmation.key);
125
+ const challenge = await readExternalConfirmationChallenge(context.repository, context.workdir, confirmation.key);
126
+ const challengeCurrent = Boolean(challenge.challenge &&
127
+ challenge.challenge.compiled_identity ===
128
+ context.compiled.compiled_identity &&
129
+ challenge.challenge.authority_revision ===
130
+ context.compiled.authority_revision);
131
+ const rows = allEffectiveExternalRows(context.compiled, confirmation.key);
132
+ const blockingRows = rows.filter((row) => row.completion_role === "blocking");
133
+ const unboundBlocking = !rows.length && confirmation.blocks_target;
134
+ const evaluationIssues = uniqueIssues([
135
+ ...issues,
136
+ ...(challenge.error ? [`challenge_invalid:${challenge.error}`] : []),
137
+ ]);
138
+ return {
139
+ confirmation_ref: confirmation.key,
140
+ owner: confirmation.owner,
141
+ blocks_target: blockingRows.length > 0 || unboundBlocking,
142
+ state,
143
+ record_sha256: null,
144
+ session_id: null,
145
+ relevant_input_identity: relevant.identity,
146
+ carried_forward_from_candidate: false,
147
+ actor_identity_assurance: assurance?.scheme === "declared_only" ? "declared_only" : "invalid",
148
+ identity_assurance: assurance,
149
+ signature_verified: false,
150
+ challenge_current: challengeCurrent,
151
+ artifact_snapshot_integrity: false,
152
+ record_schema_version: null,
153
+ obligation_results: [],
154
+ effective_blocking_obligation_refs: blockingRows
155
+ .map((row) => row.obligation_ref)
156
+ .sort(),
157
+ effective_advisory_obligation_refs: rows
158
+ .filter((row) => row.completion_role === "advisory")
159
+ .map((row) => row.obligation_ref)
160
+ .sort(),
161
+ blocking_issues: blockingRows.length || unboundBlocking ? evaluationIssues : [],
162
+ advisory_state: rows.some((row) => row.completion_role === "advisory")
163
+ ? state
164
+ : null,
165
+ advisory_issues: rows.some((row) => row.completion_role === "advisory")
166
+ ? evaluationIssues
167
+ : [],
168
+ issues: evaluationIssues,
169
+ };
170
+ }
171
+ async function recordIdentityIssues(context, confirmation, record, relevant) {
172
+ const issues = [];
173
+ if (record.confirmation_ref !== confirmation.key)
174
+ issues.push("confirmation_ref_mismatch");
175
+ if (record.compiled_identity !== context.compiled.compiled_identity)
176
+ issues.push("compiled_identity_stale");
177
+ if (record.authority_revision !== context.compiled.authority_revision)
178
+ issues.push("authority_revision_stale");
179
+ const actor = externalConfirmationActor(confirmation);
180
+ if (!actor || !sameValue(record.actor, actor))
181
+ issues.push("declared_actor_identity_mismatch");
182
+ if (record.session.target_ref !== confirmation.target_ref)
183
+ issues.push("target_ref_mismatch");
184
+ if (record.session.environment_identity !== confirmation.environment_identity)
185
+ issues.push("environment_identity_mismatch");
186
+ if (Date.parse(record.session.completed_at) > Date.now() + 5 * 60_000)
187
+ issues.push("session_completed_at_in_future");
188
+ if (record.relevant_input_identity !== relevant.identity)
189
+ issues.push("relevant_input_identity_stale");
190
+ const challenge = await readExternalConfirmationChallenge(context.repository, context.workdir, confirmation.key);
191
+ if (challenge.error)
192
+ issues.push(`challenge_invalid:${challenge.error}`);
193
+ const challengeCurrent = Boolean(challenge.challenge &&
194
+ challenge.challenge.compiled_identity ===
195
+ context.compiled.compiled_identity &&
196
+ challenge.challenge.authority_revision ===
197
+ context.compiled.authority_revision &&
198
+ challenge.challenge.challenge === record.challenge);
199
+ if (!challengeCurrent)
200
+ issues.push("challenge_not_current");
201
+ const assurance = compiledExternalConfirmationIdentityAssurance(context.compiled, confirmation.key);
202
+ const attestation = await verifyExternalConfirmationAttestation({
203
+ repository: context.repository,
204
+ confirmation_ref: confirmation.key,
205
+ assurance,
206
+ record,
207
+ });
208
+ issues.push(...attestation.issues);
209
+ return {
210
+ issues,
211
+ assurance,
212
+ signature_verified: attestation.verified,
213
+ challenge_current: challengeCurrent,
214
+ };
215
+ }
216
+ async function recordSetAndArtifactIssues(context, record, rows) {
217
+ const resultSet = externalResultSetIssueGroups(rows, record.results);
218
+ const result = {
219
+ envelope_issues: [...resultSet.envelope_issues],
220
+ blocking_issues: [...resultSet.blocking_issues],
221
+ advisory_issues: [...resultSet.advisory_issues],
222
+ artifact_snapshot_integrity: true,
223
+ };
224
+ const rolesByEvidenceRef = externalArtifactEvidenceRoles(rows, record);
225
+ for (const [evidenceRef, roles] of rolesByEvidenceRef) {
226
+ const snapshot = record.artifact_snapshots[evidenceRef];
227
+ if (!snapshot) {
228
+ result.artifact_snapshot_integrity = false;
229
+ addRoleIssues(result, roles, [
230
+ `artifact_snapshot_set_mismatch:${evidenceRef}`,
231
+ ]);
232
+ continue;
233
+ }
234
+ const issues = await externalArtifactSnapshotIntegrityIssues(context.repository, context.workdir, { [evidenceRef]: snapshot });
235
+ if (issues.length) {
236
+ result.artifact_snapshot_integrity = false;
237
+ addRoleIssues(result, roles, issues);
238
+ }
239
+ }
240
+ for (const evidenceRef of Object.keys(record.artifact_snapshots))
241
+ if (!rolesByEvidenceRef.has(evidenceRef)) {
242
+ result.artifact_snapshot_integrity = false;
243
+ result.envelope_issues.push(`artifact_snapshot_set_mismatch:${evidenceRef}`);
244
+ }
245
+ result.envelope_issues = uniqueIssues(result.envelope_issues);
246
+ result.blocking_issues = uniqueIssues([
247
+ ...result.envelope_issues,
248
+ ...result.blocking_issues,
249
+ ]);
250
+ result.advisory_issues = uniqueIssues([
251
+ ...result.envelope_issues,
252
+ ...result.advisory_issues,
253
+ ]);
254
+ return result;
255
+ }
256
+ function externalArtifactEvidenceRoles(rows, record) {
257
+ const roleByObligation = new Map(rows.map((row) => [row.obligation_ref, row.completion_role]));
258
+ const result = new Map();
259
+ for (const obligationResult of record.results) {
260
+ const role = roleByObligation.get(obligationResult.obligation_ref);
261
+ if (!role)
262
+ continue;
263
+ for (const evidenceRef of obligationResult.evidence_refs) {
264
+ const roles = result.get(evidenceRef) ?? new Set();
265
+ roles.add(role);
266
+ result.set(evidenceRef, roles);
267
+ }
268
+ }
269
+ return result;
270
+ }
271
+ export function partitionExternalConfirmationArtifactSnapshots(rows, record) {
272
+ const rolesByEvidenceRef = externalArtifactEvidenceRoles(rows, record);
273
+ const blockingOrShared = {};
274
+ const advisoryOnly = {};
275
+ for (const [evidenceRef, snapshot] of Object.entries(record.artifact_snapshots)) {
276
+ const roles = rolesByEvidenceRef.get(evidenceRef);
277
+ if (roles?.has("blocking"))
278
+ blockingOrShared[evidenceRef] = snapshot;
279
+ else if (roles?.has("advisory"))
280
+ advisoryOnly[evidenceRef] = snapshot;
281
+ }
282
+ return {
283
+ blocking_or_shared: blockingOrShared,
284
+ advisory_only: advisoryOnly,
285
+ };
286
+ }
287
+ function addRoleIssues(result, roles, issues) {
288
+ if (roles.has("blocking"))
289
+ result.blocking_issues.push(...issues);
290
+ if (roles.has("advisory"))
291
+ result.advisory_issues.push(...issues);
292
+ }
293
+ function evaluateObligationResults(context, confirmation, record, rows) {
294
+ const declarationByKey = new Map((confirmation.obligations ?? []).map((row) => [row.key, row]));
295
+ const results = [];
296
+ const blockingIssues = [];
297
+ const advisoryIssues = [];
298
+ for (const row of rows) {
299
+ const result = record.results.find((candidate) => candidate.obligation_ref === row.obligation_ref);
300
+ const declaration = declarationByKey.get(row.obligation_ref);
301
+ if (!result)
302
+ continue;
303
+ if (!declaration) {
304
+ const target = row.completion_role === "blocking" ? blockingIssues : advisoryIssues;
305
+ target.push(`external_confirmation_obligation_declaration_missing:${row.obligation_ref}`);
306
+ continue;
307
+ }
308
+ const evaluated = evaluateObligationResult(context, confirmation, record, row, declaration, result);
309
+ const target = row.completion_role === "blocking" ? blockingIssues : advisoryIssues;
310
+ target.push(...evaluated.issues);
311
+ if (evaluated.result)
312
+ results.push(evaluated.result);
313
+ }
314
+ return {
315
+ results,
316
+ blocking_issues: blockingIssues,
317
+ advisory_issues: advisoryIssues,
318
+ };
319
+ }
320
+ function evaluateObligationResult(context, confirmation, record, row, declaration, result) {
321
+ const issues = [];
322
+ if (result.fact_ref !== row.fact_ref ||
323
+ result.claim_ref !== row.claim_ref ||
324
+ result.applicability_ref !== row.applicability_ref)
325
+ return {
326
+ result: null,
327
+ issues: [`obligation_identity_mismatch:${row.obligation_ref}`],
328
+ };
329
+ if (result.result_kind !== declaration.result_kind)
330
+ issues.push(`result_kind_mismatch:${row.obligation_ref}`);
331
+ let verdict = result.verdict;
332
+ let comparatorRecomputed = false;
333
+ if (declaration.result_kind === "judgment") {
334
+ if (!result.rationale?.trim())
335
+ issues.push(`judgment_rationale_missing:${row.obligation_ref}`);
336
+ if (!sourceBackedExternalJudgmentAdmitted(context.compiled, context.semantic_manifest, row, declaration.judgment_basis, record.actor.authority_kind))
337
+ issues.push(`judgment_objective_obligation_not_allowed:${row.obligation_ref}`);
338
+ }
339
+ else if (result.verdict === "unable") {
340
+ if (!result.rationale?.trim())
341
+ issues.push(`unable_rationale_missing:${row.obligation_ref}`);
342
+ }
343
+ else if (!Object.hasOwn(result, "actual")) {
344
+ issues.push(`objective_actual_missing:${row.obligation_ref}`);
345
+ }
346
+ else {
347
+ const comparison = objectiveExternalComparison(context.compiled, context.semantic_manifest, row, result.actual);
348
+ if (!comparison)
349
+ issues.push(`objective_comparator_not_admitted:${row.obligation_ref}`);
350
+ else {
351
+ comparatorRecomputed = true;
352
+ const computedVerdict = comparison.passed ? "passed" : "failed";
353
+ if (result.verdict !== computedVerdict)
354
+ issues.push(`objective_verdict_mismatch:${row.obligation_ref}`);
355
+ verdict = computedVerdict;
356
+ }
357
+ }
358
+ return {
359
+ result: {
360
+ obligation_ref: row.obligation_ref,
361
+ fact_ref: row.fact_ref,
362
+ claim_ref: row.claim_ref,
363
+ applicability_ref: row.applicability_ref,
364
+ outcome_key: row.outcome_key,
365
+ verdict,
366
+ result_kind: declaration.result_kind,
367
+ completion_role: row.completion_role,
368
+ acceptance_effect: row.acceptance_effect,
369
+ comparator_recomputed: comparatorRecomputed,
370
+ evidence_refs: [...result.evidence_refs].sort(),
371
+ },
372
+ issues,
373
+ };
374
+ }
375
+ function evaluationState(issues, rows, results, incompleteState = "invalid") {
376
+ const stalePattern = /(?:_stale|candidate_identity_stale|challenge_not_current|artifact_snapshot_(?:content|size)_changed)/u;
377
+ if (issues.some((issue) => stalePattern.test(issue)))
378
+ return "stale";
379
+ if (issues.some((issue) => !stalePattern.test(issue)))
380
+ return "invalid";
381
+ if (results.some((row) => row.verdict === "unable"))
382
+ return "unable";
383
+ if (results.some((row) => row.verdict === "failed"))
384
+ return "failed";
385
+ return rows.length && results.length === rows.length
386
+ ? "fulfilled"
387
+ : incompleteState;
388
+ }
389
+ async function legacyExternalConfirmationEvaluation(context, confirmation, record) {
390
+ const relevant = deriveRelevantExternalInputIdentity(context.compiled, confirmation.key, context.manifest);
391
+ const rows = allEffectiveExternalRows(context.compiled, confirmation.key);
392
+ const blockingRows = rows.filter((row) => row.completion_role === "blocking");
393
+ const unboundBlocking = !rows.length && confirmation.blocks_target;
394
+ return {
395
+ confirmation_ref: confirmation.key,
396
+ owner: confirmation.owner,
397
+ blocks_target: blockingRows.length > 0 || unboundBlocking,
398
+ state: "legacy_unattested",
399
+ record_sha256: record.record_sha256,
400
+ session_id: record.session.id,
401
+ relevant_input_identity: relevant.identity,
402
+ carried_forward_from_candidate: false,
403
+ actor_identity_assurance: "legacy_unattested",
404
+ identity_assurance: compiledExternalConfirmationIdentityAssurance(context.compiled, confirmation.key),
405
+ signature_verified: false,
406
+ challenge_current: false,
407
+ artifact_snapshot_integrity: false,
408
+ record_schema_version: record.schema_version,
409
+ obligation_results: [],
410
+ effective_blocking_obligation_refs: blockingRows
411
+ .map((row) => row.obligation_ref)
412
+ .sort(),
413
+ effective_advisory_obligation_refs: rows
414
+ .filter((row) => row.completion_role === "advisory")
415
+ .map((row) => row.obligation_ref)
416
+ .sort(),
417
+ blocking_issues: blockingRows.length || unboundBlocking
418
+ ? [
419
+ "record_v1_legacy_unattested",
420
+ ...(unboundBlocking
421
+ ? ["blocking_confirmation_has_no_exact_obligations"]
422
+ : []),
423
+ ]
424
+ : [],
425
+ advisory_state: rows.some((row) => row.completion_role === "advisory")
426
+ ? "legacy_unattested"
427
+ : null,
428
+ advisory_issues: rows.some((row) => row.completion_role === "advisory")
429
+ ? ["record_v1_legacy_unattested"]
430
+ : [],
431
+ issues: ["record_v1_legacy_unattested"],
432
+ };
433
+ }
434
+ function externalResultSetIssueGroups(rows, results) {
435
+ const rowByKey = new Map(rows.map((row) => [row.obligation_ref, row]));
436
+ const actualKeys = results.map((row) => row.obligation_ref);
437
+ const envelopeIssues = [];
438
+ const blockingIssues = [];
439
+ if (new Set(actualKeys).size !== actualKeys.length ||
440
+ actualKeys.some((key) => !rowByKey.has(key)))
441
+ envelopeIssues.push("obligation_result_set_mismatch");
442
+ for (const row of rows)
443
+ if (row.completion_role === "blocking" &&
444
+ !actualKeys.includes(row.obligation_ref))
445
+ blockingIssues.push(`obligation_result_set_mismatch:${row.obligation_ref}`);
446
+ return {
447
+ envelope_issues: envelopeIssues,
448
+ blocking_issues: blockingIssues,
449
+ advisory_issues: [],
450
+ };
451
+ }
452
+ function uniqueIssues(issues) {
453
+ return [...new Set(issues)].sort();
454
+ }
@@ -0,0 +1,8 @@
1
+ import type { AcceptanceObligationReachabilityV1 } from "./long-task-acceptance-reachability.js";
2
+ import type { CompiledDeliveryContractV2 } from "./long-task-delivery-types.js";
3
+ import type { ExternalConfirmationExpectedV1 } from "./long-task-external-confirmation-types.js";
4
+ import type { SemanticFactManifestV1 } from "./semantic-fact-types.js";
5
+ export declare function expectedForExternalObligation(compiled: CompiledDeliveryContractV2, manifest: SemanticFactManifestV1, row: AcceptanceObligationReachabilityV1, authorityRef: string): ExternalConfirmationExpectedV1;
6
+ export declare function objectiveExternalComparison(compiled: CompiledDeliveryContractV2, manifest: SemanticFactManifestV1, row: AcceptanceObligationReachabilityV1, actual: unknown): {
7
+ passed: boolean;
8
+ } | null;