project-tiny-context-harness 0.8.11 → 0.8.13

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 (395) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +514 -472
  3. package/assets/README.md +803 -749
  4. package/assets/README.zh-CN.md +468 -431
  5. package/assets/agents/.gitkeep +1 -1
  6. package/assets/agents/AGENTS_CORE.md +22 -24
  7. package/assets/agents/long-task-implementation.toml +15 -0
  8. package/assets/context_templates/architecture.md +18 -18
  9. package/assets/context_templates/area.md +30 -30
  10. package/assets/context_templates/context.toml +24 -24
  11. package/assets/context_templates/deployment.md +35 -35
  12. package/assets/context_templates/global.md +56 -56
  13. package/assets/context_templates/product-surface-contract.md +70 -70
  14. package/assets/context_templates/screen-contract.md +189 -189
  15. package/assets/context_templates/verification.md +25 -25
  16. package/assets/github/.gitkeep +1 -1
  17. package/assets/github/harness.yml +39 -39
  18. package/assets/make/.gitkeep +1 -1
  19. package/assets/make/ty-context.mk +48 -48
  20. package/assets/skills/context_development_engineer/SKILL.md +72 -185
  21. package/assets/skills/context_full_project_export/SKILL.md +28 -28
  22. package/assets/skills/context_harness_upgrade/SKILL.md +60 -60
  23. package/assets/skills/context_product_plan/SKILL.md +35 -101
  24. package/assets/skills/context_surface_contract/SKILL.md +194 -191
  25. package/assets/skills/context_uiux_design/SKILL.md +49 -172
  26. package/assets/skills/design-resource-authoring/SKILL.md +54 -88
  27. package/assets/skills/design-resource-authoring/references/downstream-handoff.md +51 -163
  28. package/assets/skills/design-resource-authoring/references/formal-selected-web-app-handoff.md +96 -0
  29. package/assets/skills/design-resource-authoring/references/open-design-provider.md +140 -120
  30. package/assets/skills/design-resource-authoring/references/recovery-and-writeback.md +199 -0
  31. package/assets/skills/design-resource-authoring/references/resource-selection.md +158 -181
  32. package/assets/skills/design-system-authoring/SKILL.md +57 -57
  33. package/assets/skills/design-system-authoring/agents/openai.yaml +6 -6
  34. package/assets/skills/design-system-authoring/references/authority-adoption.md +48 -48
  35. package/assets/skills/design-system-authoring/references/open-design-design-system-provider.md +110 -110
  36. package/assets/skills/long-task-workflow/SKILL.md +71 -106
  37. package/assets/skills/long-task-workflow/agents/openai.yaml +1 -1
  38. package/assets/skills/long-task-workflow/references/authority-lifecycle.md +71 -69
  39. package/assets/skills/long-task-workflow/references/contract-authoring.md +110 -101
  40. package/assets/skills/long-task-workflow/references/evidence-design.md +99 -78
  41. package/assets/skills/long-task-workflow/references/source-authoring.md +90 -90
  42. package/assets/tools/validate_context.py +442 -442
  43. package/dist/commands/design-resource-recovery.d.ts +1 -0
  44. package/dist/commands/design-resource-recovery.js +152 -0
  45. package/dist/commands/design-resource.js +29 -3
  46. package/dist/commands/enable.js +2 -0
  47. package/dist/commands/index.js +2 -2
  48. package/dist/commands/long-task-revision.js +8 -7
  49. package/dist/commands/sync.js +2 -0
  50. package/dist/index.d.ts +3 -3
  51. package/dist/index.js +2 -0
  52. package/dist/lib/compact-authoring-support.d.ts +22 -0
  53. package/dist/lib/compact-authoring-support.js +143 -0
  54. package/dist/lib/compact-shared-structure-authoring.d.ts +5 -0
  55. package/dist/lib/compact-shared-structure-authoring.js +9 -0
  56. package/dist/lib/compact-shared-structure-types.d.ts +61 -0
  57. package/dist/lib/compact-shared-structure-types.js +1 -0
  58. package/dist/lib/compact-shared-structure-validation.d.ts +2 -0
  59. package/dist/lib/compact-shared-structure-validation.js +159 -0
  60. package/dist/lib/compact-shared-structures.d.ts +3 -0
  61. package/dist/lib/compact-shared-structures.js +204 -0
  62. package/dist/lib/design-resource-fact-enums.d.ts +4 -0
  63. package/dist/lib/design-resource-fact-enums.js +12 -0
  64. package/dist/lib/design-resource-fact-manifest-shape-evidence.js +2 -2
  65. package/dist/lib/design-resource-fact-policy.d.ts +2 -2
  66. package/dist/lib/design-resource-fact-types.d.ts +2 -2
  67. package/dist/lib/design-resource-handoff-bundle-draft.js +4 -2
  68. package/dist/lib/design-resource-handoff-input-types.d.ts +3 -0
  69. package/dist/lib/design-resource-handoff-parser.d.ts +2 -2
  70. package/dist/lib/design-resource-handoff-parser.js +2 -2
  71. package/dist/lib/design-resource-handoff-shape.d.ts +2 -0
  72. package/dist/lib/design-resource-handoff-shape.js +10 -0
  73. package/dist/lib/design-resource-handoff-snapshot.js +4 -0
  74. package/dist/lib/design-resource-handoff-validation.d.ts +4 -1
  75. package/dist/lib/design-resource-handoff-validation.js +11 -0
  76. package/dist/lib/design-resource-handoff-web-dependency-validation.d.ts +4 -2
  77. package/dist/lib/design-resource-reconciliation-codec.d.ts +2 -0
  78. package/dist/lib/design-resource-reconciliation-codec.js +174 -0
  79. package/dist/lib/design-resource-reconciliation-types.d.ts +62 -0
  80. package/dist/lib/design-resource-reconciliation-types.js +1 -0
  81. package/dist/lib/design-resource-reconciliation.d.ts +3 -0
  82. package/dist/lib/design-resource-reconciliation.js +224 -0
  83. package/dist/lib/design-resource-recovery-authority-policy.d.ts +8 -0
  84. package/dist/lib/design-resource-recovery-authority-policy.js +123 -0
  85. package/dist/lib/design-resource-recovery-catalog-resources.d.ts +6 -0
  86. package/dist/lib/design-resource-recovery-catalog-resources.js +121 -0
  87. package/dist/lib/design-resource-recovery-catalog-shape.d.ts +3 -0
  88. package/dist/lib/design-resource-recovery-catalog-shape.js +104 -0
  89. package/dist/lib/design-resource-recovery-catalog.d.ts +9 -0
  90. package/dist/lib/design-resource-recovery-catalog.js +103 -0
  91. package/dist/lib/design-resource-recovery-cleanup.d.ts +2 -0
  92. package/dist/lib/design-resource-recovery-cleanup.js +11 -0
  93. package/dist/lib/design-resource-recovery-codec-primitives.d.ts +19 -0
  94. package/dist/lib/design-resource-recovery-codec-primitives.js +92 -0
  95. package/dist/lib/design-resource-recovery-codec.d.ts +4 -0
  96. package/dist/lib/design-resource-recovery-codec.js +93 -0
  97. package/dist/lib/design-resource-recovery-current.d.ts +9 -0
  98. package/dist/lib/design-resource-recovery-current.js +41 -0
  99. package/dist/lib/design-resource-recovery-delta-policy.d.ts +5 -0
  100. package/dist/lib/design-resource-recovery-delta-policy.js +108 -0
  101. package/dist/lib/design-resource-recovery-files.d.ts +37 -0
  102. package/dist/lib/design-resource-recovery-files.js +204 -0
  103. package/dist/lib/design-resource-recovery-final-disposition-shape.d.ts +2 -0
  104. package/dist/lib/design-resource-recovery-final-disposition-shape.js +47 -0
  105. package/dist/lib/design-resource-recovery-patch-types.d.ts +54 -0
  106. package/dist/lib/design-resource-recovery-patch-types.js +1 -0
  107. package/dist/lib/design-resource-recovery-replay.d.ts +7 -0
  108. package/dist/lib/design-resource-recovery-replay.js +112 -0
  109. package/dist/lib/design-resource-recovery-repository-bindings.d.ts +9 -0
  110. package/dist/lib/design-resource-recovery-repository-bindings.js +49 -0
  111. package/dist/lib/design-resource-recovery-schema.d.ts +5 -0
  112. package/dist/lib/design-resource-recovery-schema.js +5 -0
  113. package/dist/lib/design-resource-recovery-shape.d.ts +10 -0
  114. package/dist/lib/design-resource-recovery-shape.js +184 -0
  115. package/dist/lib/design-resource-recovery-source-authority.d.ts +5 -0
  116. package/dist/lib/design-resource-recovery-source-authority.js +219 -0
  117. package/dist/lib/design-resource-recovery-text.d.ts +17 -0
  118. package/dist/lib/design-resource-recovery-text.js +186 -0
  119. package/dist/lib/design-resource-recovery-types.d.ts +197 -0
  120. package/dist/lib/design-resource-recovery-types.js +1 -0
  121. package/dist/lib/design-resource-recovery-writeback-policy.d.ts +5 -0
  122. package/dist/lib/design-resource-recovery-writeback-policy.js +326 -0
  123. package/dist/lib/design-resource-recovery-writeback-shape.d.ts +6 -0
  124. package/dist/lib/design-resource-recovery-writeback-shape.js +155 -0
  125. package/dist/lib/design-resource-recovery.d.ts +44 -0
  126. package/dist/lib/design-resource-recovery.js +216 -0
  127. package/dist/lib/design-resource-symbolic-applicability-authority.d.ts +7 -0
  128. package/dist/lib/design-resource-symbolic-applicability-authority.js +19 -0
  129. package/dist/lib/design-resource-symbolic-applicability-policy.d.ts +12 -0
  130. package/dist/lib/design-resource-symbolic-applicability-policy.js +79 -0
  131. package/dist/lib/design-resource-symbolic-applicability-profiles.d.ts +8 -0
  132. package/dist/lib/design-resource-symbolic-applicability-profiles.js +55 -0
  133. package/dist/lib/design-resource-symbolic-applicability-shape.d.ts +2 -0
  134. package/dist/lib/design-resource-symbolic-applicability-shape.js +76 -0
  135. package/dist/lib/design-resource-symbolic-applicability-validation.d.ts +7 -0
  136. package/dist/lib/design-resource-symbolic-applicability-validation.js +128 -0
  137. package/dist/lib/design-resource-symbolic-compilation.d.ts +3 -0
  138. package/dist/lib/design-resource-symbolic-compilation.js +13 -0
  139. package/dist/lib/design-resource-symbolic-denotation.d.ts +3 -0
  140. package/dist/lib/design-resource-symbolic-denotation.js +167 -0
  141. package/dist/lib/design-resource-symbolic-disposition-validation.d.ts +4 -0
  142. package/dist/lib/design-resource-symbolic-disposition-validation.js +28 -0
  143. package/dist/lib/design-resource-symbolic-fact-policy.d.ts +12 -0
  144. package/dist/lib/design-resource-symbolic-fact-policy.js +12 -0
  145. package/dist/lib/design-resource-symbolic-fact-shape.d.ts +3 -0
  146. package/dist/lib/design-resource-symbolic-fact-shape.js +138 -0
  147. package/dist/lib/design-resource-symbolic-fact-types.d.ts +213 -0
  148. package/dist/lib/design-resource-symbolic-fact-types.js +1 -0
  149. package/dist/lib/design-resource-symbolic-fact-validation.d.ts +3 -0
  150. package/dist/lib/design-resource-symbolic-fact-validation.js +86 -0
  151. package/dist/lib/design-resource-symbolic-indexes.d.ts +23 -0
  152. package/dist/lib/design-resource-symbolic-indexes.js +54 -0
  153. package/dist/lib/design-resource-symbolic-manifest-shape.d.ts +3 -0
  154. package/dist/lib/design-resource-symbolic-manifest-shape.js +155 -0
  155. package/dist/lib/design-resource-symbolic-manifest-validation.d.ts +6 -0
  156. package/dist/lib/design-resource-symbolic-manifest-validation.js +132 -0
  157. package/dist/lib/design-resource-symbolic-noninterference-artifact.d.ts +33 -0
  158. package/dist/lib/design-resource-symbolic-noninterference-artifact.js +110 -0
  159. package/dist/lib/design-resource-symbolic-noninterference-equivalence.d.ts +3 -0
  160. package/dist/lib/design-resource-symbolic-noninterference-equivalence.js +77 -0
  161. package/dist/lib/design-resource-symbolic-noninterference-recompute.d.ts +4 -0
  162. package/dist/lib/design-resource-symbolic-noninterference-recompute.js +146 -0
  163. package/dist/lib/design-resource-symbolic-noninterference-scope.d.ts +7 -0
  164. package/dist/lib/design-resource-symbolic-noninterference-scope.js +49 -0
  165. package/dist/lib/design-resource-symbolic-noninterference-shape.d.ts +2 -0
  166. package/dist/lib/design-resource-symbolic-noninterference-shape.js +152 -0
  167. package/dist/lib/design-resource-symbolic-noninterference-types.d.ts +103 -0
  168. package/dist/lib/design-resource-symbolic-noninterference-types.js +1 -0
  169. package/dist/lib/design-resource-symbolic-noninterference-validation.d.ts +5 -0
  170. package/dist/lib/design-resource-symbolic-noninterference-validation.js +62 -0
  171. package/dist/lib/design-resource-symbolic-oracle-fingerprint.d.ts +1 -0
  172. package/dist/lib/design-resource-symbolic-oracle-fingerprint.js +47 -0
  173. package/dist/lib/design-resource-symbolic-predicate-shape.d.ts +6 -0
  174. package/dist/lib/design-resource-symbolic-predicate-shape.js +123 -0
  175. package/dist/lib/design-resource-symbolic-production-closure.d.ts +4 -0
  176. package/dist/lib/design-resource-symbolic-production-closure.js +144 -0
  177. package/dist/lib/design-resource-symbolic-proof-authority-validation.d.ts +10 -0
  178. package/dist/lib/design-resource-symbolic-proof-authority-validation.js +68 -0
  179. package/dist/lib/design-resource-symbolic-proof-validation.d.ts +10 -0
  180. package/dist/lib/design-resource-symbolic-proof-validation.js +89 -0
  181. package/dist/lib/design-resource-symbolic-region-validation.d.ts +19 -0
  182. package/dist/lib/design-resource-symbolic-region-validation.js +146 -0
  183. package/dist/lib/design-resource-symbolic-resource-validation.d.ts +5 -0
  184. package/dist/lib/design-resource-symbolic-resource-validation.js +90 -0
  185. package/dist/lib/design-resource-symbolic-rule-shape.d.ts +27 -0
  186. package/dist/lib/design-resource-symbolic-rule-shape.js +158 -0
  187. package/dist/lib/design-resource-symbolic-safety-validation.d.ts +6 -0
  188. package/dist/lib/design-resource-symbolic-safety-validation.js +29 -0
  189. package/dist/lib/design-resource-symbolic-source-ir-evaluation.d.ts +19 -0
  190. package/dist/lib/design-resource-symbolic-source-ir-evaluation.js +74 -0
  191. package/dist/lib/design-resource-symbolic-source-ir-evidence.d.ts +44 -0
  192. package/dist/lib/design-resource-symbolic-source-ir-evidence.js +88 -0
  193. package/dist/lib/design-resource-symbolic-source-ir-oracle.d.ts +13 -0
  194. package/dist/lib/design-resource-symbolic-source-ir-oracle.js +96 -0
  195. package/dist/lib/design-resource-symbolic-source-ir-proof.d.ts +14 -0
  196. package/dist/lib/design-resource-symbolic-source-ir-proof.js +98 -0
  197. package/dist/lib/design-resource-symbolic-source-ir-shape.d.ts +2 -0
  198. package/dist/lib/design-resource-symbolic-source-ir-shape.js +38 -0
  199. package/dist/lib/design-resource-symbolic-source-ir-types.d.ts +17 -0
  200. package/dist/lib/design-resource-symbolic-source-ir-types.js +2 -0
  201. package/dist/lib/design-resource-symbolic-static-dependency-validation.d.ts +2 -0
  202. package/dist/lib/design-resource-symbolic-static-dependency-validation.js +83 -0
  203. package/dist/lib/design-resource-symbolic-structural-closure-validation.d.ts +6 -0
  204. package/dist/lib/design-resource-symbolic-structural-closure-validation.js +79 -0
  205. package/dist/lib/design-resource-symbolic-validation-support.d.ts +29 -0
  206. package/dist/lib/design-resource-symbolic-validation-support.js +111 -0
  207. package/dist/lib/design-resource-v1-capacity-header.d.ts +8 -0
  208. package/dist/lib/design-resource-v1-capacity-header.js +231 -0
  209. package/dist/lib/design-resource-v1-capacity.d.ts +5 -0
  210. package/dist/lib/design-resource-v1-capacity.js +45 -0
  211. package/dist/lib/init.js +1 -0
  212. package/dist/lib/long-task-acceptance-shape.js +8 -2
  213. package/dist/lib/long-task-activation-validation.js +13 -3
  214. package/dist/lib/long-task-admitted-observation-records.d.ts +25 -0
  215. package/dist/lib/long-task-admitted-observation-records.js +40 -0
  216. package/dist/lib/long-task-admitted-observation.d.ts +93 -0
  217. package/dist/lib/long-task-admitted-observation.js +201 -0
  218. package/dist/lib/long-task-artifacts.d.ts +1 -0
  219. package/dist/lib/long-task-artifacts.js +1 -0
  220. package/dist/lib/long-task-authority-material-diff.js +1 -0
  221. package/dist/lib/long-task-authority-policy.d.ts +5 -0
  222. package/dist/lib/long-task-authority-policy.js +5 -0
  223. package/dist/lib/long-task-authority-revision-details.js +3 -1
  224. package/dist/lib/long-task-authority.js +2 -1
  225. package/dist/lib/long-task-check-execution-policy.js +5 -0
  226. package/dist/lib/long-task-check-runner.d.ts +2 -2
  227. package/dist/lib/long-task-check-runner.js +440 -23
  228. package/dist/lib/long-task-claims.d.ts +18 -0
  229. package/dist/lib/long-task-claims.js +35 -0
  230. package/dist/lib/long-task-codex-agent-profile.d.ts +42 -0
  231. package/dist/lib/long-task-codex-agent-profile.js +276 -0
  232. package/dist/lib/long-task-compact-authoring-projections.d.ts +12 -0
  233. package/dist/lib/long-task-compact-authoring-projections.js +67 -0
  234. package/dist/lib/long-task-compact-authoring.d.ts +3 -0
  235. package/dist/lib/long-task-compact-authoring.js +173 -0
  236. package/dist/lib/long-task-compact-carrier.d.ts +7 -0
  237. package/dist/lib/long-task-compact-carrier.js +132 -0
  238. package/dist/lib/long-task-compact-parser.d.ts +14 -0
  239. package/dist/lib/long-task-compact-parser.js +123 -0
  240. package/dist/lib/long-task-compact-primitives.d.ts +22 -0
  241. package/dist/lib/long-task-compact-primitives.js +132 -0
  242. package/dist/lib/long-task-compact-projections.d.ts +4 -0
  243. package/dist/lib/long-task-compact-projections.js +153 -0
  244. package/dist/lib/long-task-compact-structure-targets.d.ts +2 -0
  245. package/dist/lib/long-task-compact-structure-targets.js +91 -0
  246. package/dist/lib/long-task-conformance-policy.js +3 -1
  247. package/dist/lib/long-task-counterfactual-claim-policy.d.ts +3 -4
  248. package/dist/lib/long-task-counterfactual-claim-policy.js +11 -3
  249. package/dist/lib/long-task-counterfactual-sandbox.d.ts +1 -1
  250. package/dist/lib/long-task-counterfactual-sandbox.js +8 -5
  251. package/dist/lib/long-task-counterfactual-types.d.ts +2 -0
  252. package/dist/lib/long-task-delivery-compiler.js +2 -0
  253. package/dist/lib/long-task-delivery-parser.d.ts +1 -0
  254. package/dist/lib/long-task-delivery-parser.js +38 -6
  255. package/dist/lib/long-task-design-resource-handoff.d.ts +2 -1
  256. package/dist/lib/long-task-design-resource-handoff.js +71 -11
  257. package/dist/lib/long-task-design-resource-method-binding.d.ts +8 -1
  258. package/dist/lib/long-task-design-resource-method-binding.js +150 -0
  259. package/dist/lib/long-task-evidence-capability-codec.js +256 -34
  260. package/dist/lib/long-task-evidence-capability-policy.d.ts +3 -2
  261. package/dist/lib/long-task-evidence-capability-policy.js +142 -8
  262. package/dist/lib/long-task-evidence-capability-runtime.d.ts +5 -2
  263. package/dist/lib/long-task-evidence-capability-runtime.js +420 -68
  264. package/dist/lib/long-task-evidence-capability-types.d.ts +70 -2
  265. package/dist/lib/long-task-evidence-sensitivity-policy.d.ts +9 -0
  266. package/dist/lib/long-task-evidence-sensitivity-policy.js +31 -1
  267. package/dist/lib/long-task-evidence-v2.d.ts +4 -4
  268. package/dist/lib/long-task-evidence-v2.js +322 -44
  269. package/dist/lib/long-task-exact-comparison.d.ts +16 -0
  270. package/dist/lib/long-task-exact-comparison.js +28 -0
  271. package/dist/lib/long-task-execution-observation.d.ts +24 -0
  272. package/dist/lib/long-task-execution-observation.js +332 -0
  273. package/dist/lib/long-task-explain-acceptance-link.d.ts +4 -0
  274. package/dist/lib/long-task-explain-acceptance-link.js +4 -0
  275. package/dist/lib/long-task-explain-claim-links.d.ts +2 -0
  276. package/dist/lib/long-task-explain-claim-links.js +2 -0
  277. package/dist/lib/long-task-explain-source-links.d.ts +6 -0
  278. package/dist/lib/long-task-final-v2.js +7 -4
  279. package/dist/lib/long-task-hook-install.d.ts +19 -2
  280. package/dist/lib/long-task-hook-install.js +288 -91
  281. package/dist/lib/long-task-json-pointer-observation.d.ts +59 -0
  282. package/dist/lib/long-task-json-pointer-observation.js +184 -0
  283. package/dist/lib/long-task-observation-artifact.d.ts +8 -0
  284. package/dist/lib/long-task-observation-artifact.js +58 -0
  285. package/dist/lib/long-task-observation-authority.d.ts +17 -0
  286. package/dist/lib/long-task-observation-authority.js +348 -0
  287. package/dist/lib/long-task-paths.js +1 -1
  288. package/dist/lib/long-task-playwright-capability-records.d.ts +2 -0
  289. package/dist/lib/long-task-playwright-capability-records.js +74 -2
  290. package/dist/lib/long-task-process-observation.d.ts +6 -0
  291. package/dist/lib/long-task-process-observation.js +117 -0
  292. package/dist/lib/long-task-process-runtime-closure.d.ts +13 -0
  293. package/dist/lib/long-task-process-runtime-closure.js +175 -0
  294. package/dist/lib/long-task-progress.js +2 -0
  295. package/dist/lib/long-task-protected-files.d.ts +1 -1
  296. package/dist/lib/long-task-protected-files.js +1 -30
  297. package/dist/lib/long-task-risk.js +8 -3
  298. package/dist/lib/long-task-root-shape.js +10 -1
  299. package/dist/lib/long-task-runner-environment.d.ts +1 -1
  300. package/dist/lib/long-task-runner-environment.js +4 -4
  301. package/dist/lib/long-task-runner-freeze.d.ts +4 -2
  302. package/dist/lib/long-task-runner-freeze.js +130 -28
  303. package/dist/lib/long-task-runtime-types.d.ts +111 -0
  304. package/dist/lib/long-task-scoped-binding.d.ts +13 -0
  305. package/dist/lib/long-task-scoped-binding.js +11 -0
  306. package/dist/lib/long-task-semantic-contract-types.d.ts +2 -1
  307. package/dist/lib/long-task-semantic-fact-binding-types.d.ts +8 -0
  308. package/dist/lib/long-task-semantic-fact-closure.js +4 -1
  309. package/dist/lib/long-task-semantic-fact-contract-closure.d.ts +1 -1
  310. package/dist/lib/long-task-semantic-fact-contract-closure.js +18 -6
  311. package/dist/lib/long-task-semantic-fact-contract-facts.d.ts +1 -1
  312. package/dist/lib/long-task-semantic-fact-contract-facts.js +4 -1
  313. package/dist/lib/long-task-semantic-fact-contract-proofs.d.ts +1 -1
  314. package/dist/lib/long-task-semantic-fact-contract-proofs.js +12 -3
  315. package/dist/lib/long-task-semantic-fact-evidence.d.ts +8 -4
  316. package/dist/lib/long-task-semantic-fact-evidence.js +103 -43
  317. package/dist/lib/long-task-semantic-fact-shape.js +17 -6
  318. package/dist/lib/long-task-shape-primitives.d.ts +1 -1
  319. package/dist/lib/long-task-shape-primitives.js +1 -0
  320. package/dist/lib/long-task-source-claim-validation.js +4 -1
  321. package/dist/lib/long-task-source-item-parser.d.ts +2 -2
  322. package/dist/lib/long-task-source-item-parser.js +20 -11
  323. package/dist/lib/long-task-source-target-continuity.d.ts +2 -2
  324. package/dist/lib/long-task-source-target-continuity.js +35 -2
  325. package/dist/lib/long-task-source-target-index.d.ts +3 -0
  326. package/dist/lib/long-task-source-target-index.js +19 -0
  327. package/dist/lib/long-task-stage-policy.js +10 -4
  328. package/dist/lib/long-task-static-observation-freeze.d.ts +83 -0
  329. package/dist/lib/long-task-static-observation-freeze.js +428 -0
  330. package/dist/lib/long-task-status-projection.js +5 -1
  331. package/dist/lib/long-task-target-policy.d.ts +1 -1
  332. package/dist/lib/long-task-target-policy.js +3 -0
  333. package/dist/lib/long-task-ui-design-policy.js +64 -4
  334. package/dist/lib/long-task-ui-surface-shape.js +195 -0
  335. package/dist/lib/long-task-ui-surface-types.d.ts +53 -0
  336. package/dist/lib/long-task-verifier-dependency-closure.js +7 -3
  337. package/dist/lib/long-task-verifier-v2.js +70 -9
  338. package/dist/lib/long-task-worker-selection.d.ts +2 -0
  339. package/dist/lib/long-task-worker-selection.js +7 -0
  340. package/dist/lib/long-task-workspace-scope.js +3 -1
  341. package/dist/lib/long-task-workspace.d.ts +1 -1
  342. package/dist/lib/long-task-workspace.js +12 -13
  343. package/dist/lib/migrations.js +58 -0
  344. package/dist/lib/profiles.js +0 -1
  345. package/dist/lib/repository-path-safety.d.ts +14 -0
  346. package/dist/lib/repository-path-safety.js +126 -0
  347. package/dist/lib/semantic-fact-compact-authoring.d.ts +2 -0
  348. package/dist/lib/semantic-fact-compact-authoring.js +160 -0
  349. package/dist/lib/semantic-fact-compact-capacity.d.ts +9 -0
  350. package/dist/lib/semantic-fact-compact-capacity.js +40 -0
  351. package/dist/lib/semantic-fact-compact-carrier.d.ts +16 -0
  352. package/dist/lib/semantic-fact-compact-carrier.js +146 -0
  353. package/dist/lib/semantic-fact-compact-parser.d.ts +17 -0
  354. package/dist/lib/semantic-fact-compact-parser.js +168 -0
  355. package/dist/lib/semantic-fact-compact-revision.d.ts +11 -0
  356. package/dist/lib/semantic-fact-compact-revision.js +64 -0
  357. package/dist/lib/semantic-fact-compact-support.d.ts +23 -0
  358. package/dist/lib/semantic-fact-compact-support.js +159 -0
  359. package/dist/lib/semantic-fact-policy-census.d.ts +1 -0
  360. package/dist/lib/semantic-fact-policy-census.js +43 -0
  361. package/dist/lib/semantic-fact-proof-shape.d.ts +1 -1
  362. package/dist/lib/semantic-fact-property-shape.d.ts +1 -1
  363. package/dist/lib/semantic-fact-source-parser.d.ts +5 -0
  364. package/dist/lib/semantic-fact-source-parser.js +47 -6
  365. package/dist/lib/structural-closure-cost.d.ts +79 -0
  366. package/dist/lib/structural-closure-cost.js +91 -0
  367. package/dist/lib/symbolic-denotation-dag-builder.d.ts +25 -0
  368. package/dist/lib/symbolic-denotation-dag-builder.js +176 -0
  369. package/dist/lib/symbolic-denotation-domain-validation.d.ts +3 -0
  370. package/dist/lib/symbolic-denotation-domain-validation.js +56 -0
  371. package/dist/lib/symbolic-denotation-engine.d.ts +32 -0
  372. package/dist/lib/symbolic-denotation-engine.js +140 -0
  373. package/dist/lib/symbolic-denotation-public.d.ts +11 -0
  374. package/dist/lib/symbolic-denotation-public.js +12 -0
  375. package/dist/lib/symbolic-denotation-runtime.d.ts +20 -0
  376. package/dist/lib/symbolic-denotation-runtime.js +90 -0
  377. package/dist/lib/symbolic-denotation-support.d.ts +11 -0
  378. package/dist/lib/symbolic-denotation-support.js +49 -0
  379. package/dist/lib/symbolic-denotation-types.d.ts +133 -0
  380. package/dist/lib/symbolic-denotation-types.js +18 -0
  381. package/dist/lib/symbolic-denotation-validation.d.ts +6 -0
  382. package/dist/lib/symbolic-denotation-validation.js +126 -0
  383. package/dist/lib/sync-engine.d.ts +1 -0
  384. package/dist/lib/sync-engine.js +4 -1
  385. package/dist/lib/upgrade.js +1 -0
  386. package/dist/long-task-hook.js +40 -1
  387. package/dist/public-types.d.ts +8 -0
  388. package/dist/public-types.js +1 -0
  389. package/dist/schemas/design-resource-symbolic-noninterference-artifact-v2.schema.json +289 -0
  390. package/dist/schemas/design-resource-symbolic-source-ir-v1.schema.json +130 -0
  391. package/dist/schemas/long-task-delivery-v2/long-task-delivery-v2.schema.json +435 -5
  392. package/migrations/README.md +92 -15
  393. package/package.json +2 -2
  394. package/source-mappings.yaml +28 -25
  395. package/assets/skills/source-plan-authoring/SKILL.md +0 -14
@@ -1,41 +1,72 @@
1
1
  import { readFile, stat } from "node:fs/promises";
2
2
  import path from "node:path";
3
3
  import { computeRawExecutionIdentity } from "./long-task-check-execution-policy.js";
4
- import { assertRepositoryPattern, classifyRepositoryPatternOverlap, matchesRepoPattern, } from "./long-task-paths.js";
4
+ import { assertRepositoryPattern, classifyRepositoryPatternOverlap, matchesRepoPattern, normalizeRepositoryFile, proveRepositoryPatternSubset, } from "./long-task-paths.js";
5
5
  import { assertProtectedRepositoryFile } from "./long-task-protected-files.js";
6
6
  import { nearestRunnerFile, npmCliPath, npxCliPath, } from "./long-task-runner-files.js";
7
7
  import { canonicalValueJson, sha256Hex } from "./strict-codec.js";
8
8
  import { repoRelative, resolveInsideRepository, } from "./long-task-workspace.js";
9
9
  import { evidenceAdapterForRunner } from "./long-task-evidence-adapter-policy.js";
10
10
  import { freezeLocalVerifierDependencyClosure, packageScriptVerifierRoots, } from "./long-task-verifier-dependency-closure.js";
11
- export async function freezeDeliveryCheck(check, outcomeKey, repository, baseline, executionTarget, knownExecutionTargets, designConformanceTargets, semanticFactExpectations) {
11
+ import { compileObservationAuthorityPlan } from "./long-task-observation-authority.js";
12
+ import { compileProcessRuntimeClosure } from "./long-task-process-runtime-closure.js";
13
+ export async function freezeDeliveryCheck(check, outcomeKey, repository, baseline, executionTarget, knownExecutionTargets, designConformanceTargets, semanticFactExpectations, productionBindings, productionOwnerPaths, sourceBackedExecutionTarget, protectedAuthorityPaths = []) {
12
14
  const prefix = outcomeKey ? `CHECK.${outcomeKey}` : "CHECK.GLOBAL";
13
15
  const expectedOutputs = check.expected_output_paths.map((pattern, index) => assertRepositoryPattern(repository, pattern, `${check.key}.expected_output_paths[${index}]`));
16
+ const protectedAuthorityFiles = protectedAuthorityPaths.map((file, index) => normalizeRepositoryFile(file, `${check.key}.protected_authority_paths[${index}]`));
14
17
  for (const [index, pattern] of check.input_paths.entries()) {
15
18
  const normalized = assertRepositoryPattern(repository, pattern, `${check.key}.input_paths[${index}]`);
16
19
  if (!baseline.files.some((file) => matchesRepoPattern(file.path, normalized)) &&
20
+ !protectedAuthorityFiles.some((file) => matchesRepoPattern(file, normalized)) &&
17
21
  !expectedOutputs.some((output) => classifyRepositoryPatternOverlap(output, normalized).status ===
18
- "proven_overlap"))
22
+ "proven_overlap") &&
23
+ !plannedBindingMayProvideInput(productionBindings, normalized))
19
24
  throw new Error(`input_path_not_found:${check.key}:${pattern}`);
20
25
  }
21
26
  check.artifact_globs.forEach((pattern, index) => assertRepositoryPattern(repository, pattern, `${check.key}.artifact_globs[${index}]`));
22
27
  const cwd = resolveInsideRepository(repository, check.runner.cwd, `${check.key}.cwd`);
23
28
  if (!(await stat(cwd).catch(() => null))?.isDirectory())
24
29
  throw new Error(`runner_cwd_not_found:${check.key}:${check.runner.cwd}`);
25
- const target = await resolvedRunnerTarget(check, repository, cwd);
26
- const verificationInputHashes = await freezeVerificationInputs(check, repository, baseline, cwd, target);
30
+ const target = await resolvedRunnerTarget(check, repository, cwd, executionTarget, productionBindings, sourceBackedExecutionTarget);
31
+ const verificationInputHashes = await freezeVerificationInputs(check, repository, baseline, cwd, target, executionTarget);
27
32
  validateSemanticFactOracleInputs(check.key, semanticFactExpectations, verificationInputHashes);
33
+ const runner = await freezeRunner(check, repository, cwd, target, verificationInputHashes);
34
+ const observationAuthorities = compileObservationAuthorityPlan({
35
+ check,
36
+ outcome_key: outcomeKey,
37
+ runner,
38
+ execution_target: executionTarget,
39
+ design_targets: designConformanceTargets,
40
+ semantic_fact_expectations: semanticFactExpectations,
41
+ production_bindings: productionBindings,
42
+ production_owner_paths: productionOwnerPaths,
43
+ source_backed_execution_target: sourceBackedExecutionTarget,
44
+ workspace_manifest: baseline,
45
+ protected_authority_paths: protectedAuthorityPaths,
46
+ });
47
+ const processRuntimeClosure = compileProcessRuntimeClosure({
48
+ check,
49
+ runner,
50
+ execution_target: executionTarget,
51
+ observation_authorities: observationAuthorities,
52
+ production_bindings: productionBindings,
53
+ production_owner_paths: productionOwnerPaths,
54
+ source_backed_execution_target: sourceBackedExecutionTarget,
55
+ protected_authority_paths: protectedAuthorityPaths,
56
+ });
28
57
  const compiled = {
29
58
  ...check,
30
59
  internal_id: `${prefix}.${check.key}`,
31
60
  outcome_key: outcomeKey,
32
61
  evidence_adapter: evidenceAdapterForRunner(check.runner.type),
33
- runner: await freezeRunner(check, repository, cwd, target, verificationInputHashes),
62
+ runner,
34
63
  verification_input_hashes: verificationInputHashes,
35
64
  execution_target_definition: executionTarget,
36
65
  known_execution_targets: knownExecutionTargets,
37
66
  design_conformance_targets: designConformanceTargets,
38
67
  semantic_fact_expectations: semanticFactExpectations,
68
+ observation_authorities: observationAuthorities,
69
+ process_runtime_closure: processRuntimeClosure,
39
70
  };
40
71
  return {
41
72
  ...compiled,
@@ -54,7 +85,7 @@ function validateSemanticFactOracleInputs(checkKey, expectations, verificationIn
54
85
  throw new Error(`semantic_fact_oracle_verification_input_mismatch:${checkKey}:${oracle.key}:${oracle.identity}`);
55
86
  }
56
87
  }
57
- async function resolvedRunnerTarget(check, repository, cwd) {
88
+ async function resolvedRunnerTarget(check, repository, cwd, executionTarget, productionBindings, sourceBackedExecutionTarget) {
58
89
  if (check.runner.type === "package_script") {
59
90
  const packageFile = await nearestRunnerFile(cwd, repository, "package.json");
60
91
  if (!packageFile)
@@ -62,12 +93,50 @@ async function resolvedRunnerTarget(check, repository, cwd) {
62
93
  return assertProtectedRepositoryFile(repository, packageFile, `${check.key}.package_json`);
63
94
  }
64
95
  const target = resolveInsideRepository(cwd, check.runner.target, `${check.key}.target`);
65
- if (!(await stat(target).catch(() => null))?.isFile())
96
+ const targetInfo = await stat(target).catch(() => null);
97
+ if (!targetInfo?.isFile()) {
98
+ const relativeTarget = repoRelative(repository, target);
99
+ if (!targetInfo &&
100
+ plannedDirectProductRoot({
101
+ check,
102
+ executionTarget,
103
+ productionBindings,
104
+ sourceBackedExecutionTarget,
105
+ relativeTarget,
106
+ }))
107
+ return target;
66
108
  throw new Error(`${check.runner.type}_path_not_found:${check.key}:${check.runner.target}`);
109
+ }
67
110
  const protectedTarget = await assertProtectedRepositoryFile(repository, target, `${check.key}.runner_target`);
68
111
  repoRelative(repository, protectedTarget);
69
112
  return protectedTarget;
70
113
  }
114
+ function plannedBindingMayProvideInput(bindings, inputPattern) {
115
+ return bindings.some((scoped) => scoped.binding.existence === "planned" &&
116
+ scoped.binding.carrier_paths.some((carrier) => isExactRepositoryFile(carrier, `${scoped.binding_ref}.carrier`) &&
117
+ proveRepositoryPatternSubset(carrier, inputPattern).status ===
118
+ "proven_subset"));
119
+ }
120
+ function plannedDirectProductRoot(input) {
121
+ return (input.check.runner.type === "project_binary" &&
122
+ input.check.execution_target.entrypoint === "root" &&
123
+ input.executionTarget.role === "product" &&
124
+ input.executionTarget.runtime_family === "process" &&
125
+ input.sourceBackedExecutionTarget?.target_ref ===
126
+ input.executionTarget.key &&
127
+ input.relativeTarget === input.executionTarget.root_entrypoint &&
128
+ input.productionBindings.some((scoped) => scoped.binding.existence === "planned" &&
129
+ scoped.binding.carrier_paths.some((carrier) => isExactRepositoryFile(carrier, `${scoped.binding_ref}.carrier`) &&
130
+ carrier === input.relativeTarget)));
131
+ }
132
+ function isExactRepositoryFile(value, label) {
133
+ try {
134
+ return normalizeRepositoryFile(value, label) === value;
135
+ }
136
+ catch {
137
+ return false;
138
+ }
139
+ }
71
140
  async function freezeRunner(check, repository, cwd, target, verificationInputHashes) {
72
141
  const runner = check.runner;
73
142
  if (runner.argv.some((value) => value.includes("\0")))
@@ -135,7 +204,7 @@ async function freezeRunner(check, repository, cwd, target, verificationInputHas
135
204
  })),
136
205
  };
137
206
  }
138
- async function freezeVerificationInputs(check, repository, manifest, cwd, target) {
207
+ async function freezeVerificationInputs(check, repository, manifest, cwd, target, executionTarget) {
139
208
  const result = {};
140
209
  for (const [index, source] of check.verification_inputs.entries()) {
141
210
  const pattern = assertRepositoryPattern(repository, source, `${check.key}.verification_inputs[${index}]`);
@@ -147,31 +216,42 @@ async function freezeVerificationInputs(check, repository, manifest, cwd, target
147
216
  result[file.path] = sha256Hex(await readFile(protectedFile));
148
217
  }
149
218
  }
150
- const automatic = new Set([repoRelative(repository, target)]);
151
- const packageFile = await nearestRunnerFile(cwd, repository, "package.json");
152
- if (packageFile)
153
- automatic.add(repoRelative(repository, packageFile));
154
- for (const name of [
155
- "package-lock.json",
156
- "npm-shrinkwrap.json",
157
- "pnpm-lock.yaml",
158
- "yarn.lock",
159
- ]) {
160
- const file = await nearestRunnerFile(cwd, repository, name);
161
- if (file)
162
- automatic.add(repoRelative(repository, file));
163
- }
164
- if (check.runner.type === "playwright_test")
219
+ const directProductRoot = check.runner.type === "project_binary" &&
220
+ executionTarget.role === "product" &&
221
+ executionTarget.runtime_family === "process" &&
222
+ check.execution_target.entrypoint === "root";
223
+ const automatic = new Set(directProductRoot ? [] : [repoRelative(repository, target)]);
224
+ if (!directProductRoot) {
225
+ const packageFile = await nearestRunnerFile(cwd, repository, "package.json");
226
+ if (packageFile)
227
+ automatic.add(repoRelative(repository, packageFile));
165
228
  for (const name of [
166
- "playwright.config.ts",
167
- "playwright.config.js",
168
- "playwright.config.mjs",
169
- "playwright.config.cjs",
229
+ "package-lock.json",
230
+ "npm-shrinkwrap.json",
231
+ "pnpm-lock.yaml",
232
+ "yarn.lock",
170
233
  ]) {
171
234
  const file = await nearestRunnerFile(cwd, repository, name);
172
235
  if (file)
173
236
  automatic.add(repoRelative(repository, file));
174
237
  }
238
+ }
239
+ if (check.runner.type === "playwright_test")
240
+ if (playwrightConfigArgument(check.runner.argv)) {
241
+ const file = resolveInsideRepository(cwd, playwrightConfigArgument(check.runner.argv), `${check.key}.playwright_config`);
242
+ automatic.add(repoRelative(repository, file));
243
+ }
244
+ else
245
+ for (const name of [
246
+ "playwright.config.ts",
247
+ "playwright.config.js",
248
+ "playwright.config.mjs",
249
+ "playwright.config.cjs",
250
+ ]) {
251
+ const file = await nearestRunnerFile(cwd, repository, name);
252
+ if (file)
253
+ automatic.add(repoRelative(repository, file));
254
+ }
175
255
  for (const relative of automatic) {
176
256
  const file = manifest.files.find((candidate) => candidate.path === relative);
177
257
  if (!file)
@@ -196,6 +276,28 @@ async function freezeVerificationInputs(check, repository, manifest, cwd, target
196
276
  ]));
197
277
  return sortRecord(result);
198
278
  }
279
+ export function playwrightConfigArgument(argv) {
280
+ const values = [];
281
+ for (let index = 0; index < argv.length; index += 1) {
282
+ const value = argv[index];
283
+ if (value === "--config") {
284
+ const next = argv[index + 1];
285
+ if (!next || next.startsWith("-"))
286
+ throw new Error("playwright_config_argument_missing");
287
+ values.push(next);
288
+ index += 1;
289
+ }
290
+ else if (value.startsWith("--config=")) {
291
+ const config = value.slice("--config=".length);
292
+ if (!config)
293
+ throw new Error("playwright_config_argument_missing");
294
+ values.push(config);
295
+ }
296
+ }
297
+ if (values.length > 1)
298
+ throw new Error("playwright_config_argument_ambiguous");
299
+ return values[0] ?? null;
300
+ }
199
301
  function sortRecord(value) {
200
302
  return Object.fromEntries(Object.entries(value).sort(([a], [b]) => a.localeCompare(b)));
201
303
  }
@@ -8,6 +8,7 @@ import type { EffectiveRiskLevel, RiskFactName } from "./long-task-risk-types.js
8
8
  import type { SemanticFactExpectationV2 } from "./semantic-fact-types.js";
9
9
  import type { CompiledSourceItemV2 } from "./long-task-source-authority-types.js";
10
10
  import type { WorkspaceManifestV2 } from "./long-task-workspace-runtime-types.js";
11
+ import type { JsonPointerExactObservation } from "./long-task-json-pointer-observation.js";
11
12
  export interface FrozenRunnerV2 extends DeliveryRunnerV2 {
12
13
  executable: string;
13
14
  executable_argv_prefix: string[];
@@ -18,6 +19,74 @@ export interface FrozenRunnerV2 extends DeliveryRunnerV2 {
18
19
  package_script: string | null;
19
20
  execution_identity: string;
20
21
  }
22
+ export type CompiledObservationAuthorityKindV2 = "package_static_json_exact" | "package_process_json_exact" | "external_confirmation";
23
+ export type CompiledObservationActualProjectionV2 = "raw_exact" | "presence_boolean" | "truthy_boolean" | "falsy_boolean";
24
+ export interface CompiledObservationAuthorityV2 {
25
+ obligation_ref: string;
26
+ fact_ref: string | null;
27
+ assertion_ref: string;
28
+ claim_refs: string[];
29
+ target_ref: string;
30
+ proof_surface: ProofSurface;
31
+ method: string;
32
+ evidence_capabilities: EvidenceCapabilityV2[];
33
+ authority: CompiledObservationAuthorityKindV2;
34
+ expected_identity: string;
35
+ expected_value_sha256: string;
36
+ actual_projection: CompiledObservationActualProjectionV2;
37
+ observation_identity: string;
38
+ comparison: {
39
+ comparator: string;
40
+ mode: string;
41
+ parameters_sha256: string | null;
42
+ tolerance_sha256: string | null;
43
+ mask_sha256: string | null;
44
+ };
45
+ locator_policy: {
46
+ kind: "fixed_json_pointer";
47
+ value: string;
48
+ };
49
+ carrier_refs: Array<{
50
+ binding_ref: string;
51
+ carrier_paths: string[];
52
+ }>;
53
+ runtime_requirements: {
54
+ runtime_family: ExecutionTargetV2["runtime_family"];
55
+ target_role: ExecutionTargetV2["role"];
56
+ entrypoint: DeliveryCheckV2["execution_target"]["entrypoint"];
57
+ runner_type: DeliveryRunnerV2["type"];
58
+ resolved_runner_target: string;
59
+ declared_root_entrypoint: string;
60
+ resolved_runner_argv: string[];
61
+ declared_root_argv: string[] | null;
62
+ effect: DeliveryRunnerV2["effect"];
63
+ direct_root_match: boolean;
64
+ };
65
+ }
66
+ export interface SourceBackedExecutionTargetV2 {
67
+ target_ref: string;
68
+ canonical_target_ref: string;
69
+ source_claim_key: string;
70
+ source_item_key: string;
71
+ source_path: string;
72
+ source_text_sha256: string;
73
+ target_identity: string;
74
+ }
75
+ export interface CompiledProcessRuntimeClosureV2 {
76
+ target_ref: string;
77
+ source_target: SourceBackedExecutionTargetV2;
78
+ root_target: string;
79
+ root_argv_files: string[];
80
+ production_carrier_files: string[];
81
+ allowed_runtime_files: string[];
82
+ production_binding_refs: string[];
83
+ forbidden_role_matches: Array<{
84
+ path: string;
85
+ role: "expected_authority" | "verification" | "evidence";
86
+ pattern: string;
87
+ }>;
88
+ closure_identity: string;
89
+ }
21
90
  export interface CompiledCheckV2 extends Omit<DeliveryCheckV2, "runner"> {
22
91
  internal_id: string;
23
92
  outcome_key: string | null;
@@ -29,6 +98,8 @@ export interface CompiledCheckV2 extends Omit<DeliveryCheckV2, "runner"> {
29
98
  known_execution_targets: ExecutionTargetV2[];
30
99
  design_conformance_targets: CompiledDesignTargetV2[];
31
100
  semantic_fact_expectations: SemanticFactExpectationV2[];
101
+ observation_authorities: CompiledObservationAuthorityV2[];
102
+ process_runtime_closure: CompiledProcessRuntimeClosureV2 | null;
32
103
  }
33
104
  export interface ProductClaimV2 {
34
105
  id: string;
@@ -160,6 +231,46 @@ export interface RawCommandExecutionV2 {
160
231
  attempts: number;
161
232
  duration_ms: number;
162
233
  error: string | null;
234
+ package_observations?: PackageObservationValueV2[];
235
+ host_execution_attestation?: HostExecutionAttestationV2 | null;
236
+ }
237
+ export interface PackageObservationValueV2 {
238
+ authority: Exclude<CompiledObservationAuthorityKindV2, "external_confirmation">;
239
+ observation_identity: string;
240
+ assertion_ref: string;
241
+ obligation_ref: string;
242
+ method: string;
243
+ raw_value: unknown;
244
+ observation: JsonPointerExactObservation | null;
245
+ reason: string | null;
246
+ }
247
+ export interface PackageProcessObservationV1 {
248
+ schema_version: "ty-context-product-observation-v1";
249
+ artifact_sha256: string;
250
+ observations: Record<string, unknown>;
251
+ value_sha256_by_identity: Record<string, string>;
252
+ package_observations: PackageObservationValueV2[];
253
+ }
254
+ export interface HostExecutionAttestationV2 {
255
+ raw_execution_identity: string;
256
+ executable_path: string;
257
+ declared_root_entrypoint: string;
258
+ actual_argv: string[];
259
+ declared_root_argv: string[];
260
+ direct_root_match: boolean;
261
+ pid: number;
262
+ started_at: string;
263
+ completed_at: string;
264
+ exit_code: number;
265
+ snapshot_sha256: string;
266
+ observation_execution_nonce: string;
267
+ observation_artifact_sha256: string;
268
+ process_runtime_closure_identity: string;
269
+ }
270
+ export interface CheckRunnerExecutionContextV2 {
271
+ snapshot_sha256?: string;
272
+ observation_authorities?: readonly CompiledObservationAuthorityV2[];
273
+ process_runtime_closure_identity?: string;
163
274
  }
164
275
  export interface CheckExecutionResultV2 {
165
276
  internal_id: string;
@@ -0,0 +1,13 @@
1
+ import type { DeliveryBindingV2 } from "./long-task-delivery-types.js";
2
+ /**
3
+ * Ephemeral compiler identity for one authored Outcome-local Binding.
4
+ * Authored Contracts keep their existing local Binding keys.
5
+ */
6
+ export interface ScopedDeliveryBindingV2 {
7
+ outcome_key: string;
8
+ local_key: string;
9
+ binding_ref: string;
10
+ binding: DeliveryBindingV2;
11
+ }
12
+ export declare function scopeDeliveryBinding(outcomeKey: string, binding: DeliveryBindingV2): ScopedDeliveryBindingV2;
13
+ export declare function scopeDeliveryBindings(outcomeKey: string, bindings: readonly DeliveryBindingV2[]): ScopedDeliveryBindingV2[];
@@ -0,0 +1,11 @@
1
+ export function scopeDeliveryBinding(outcomeKey, binding) {
2
+ return {
3
+ outcome_key: outcomeKey,
4
+ local_key: binding.key,
5
+ binding_ref: `${outcomeKey}.${binding.key}`,
6
+ binding,
7
+ };
8
+ }
9
+ export function scopeDeliveryBindings(outcomeKey, bindings) {
10
+ return bindings.map((binding) => scopeDeliveryBinding(outcomeKey, binding));
11
+ }
@@ -22,6 +22,7 @@ export interface ExecutionTargetV2 {
22
22
  role: "product" | "support" | "observer";
23
23
  runtime_family: ExecutionTargetRuntimeFamilyV2;
24
24
  root_entrypoint: string;
25
+ root_argv?: string[];
25
26
  capabilities: ExecutionTargetCapabilityV2[];
26
27
  }
27
28
  export interface DeliveryStageV2 {
@@ -42,7 +43,7 @@ export interface ClaimApplicabilityV2 {
42
43
  given_refs: string[];
43
44
  when_refs: string[];
44
45
  }
45
- export type EvidenceCapabilityV2 = "presence" | "interaction_trace" | "state_delta" | "cross_surface_consistency" | "durable_readback" | "boundary_invocation" | "external_side_effect" | "failure_injection" | "visual_render" | "design_conformance" | "design_method" | "semantic_fact" | "target_runtime" | "input_variation";
46
+ export type EvidenceCapabilityV2 = "presence" | "interaction_trace" | "state_delta" | "cross_surface_consistency" | "durable_readback" | "boundary_invocation" | "external_side_effect" | "failure_injection" | "visual_render" | "design_conformance" | "design_method" | "design_symbolic_certificate" | "semantic_fact" | "target_runtime" | "input_variation";
46
47
  export interface CheckExecutionTargetV2 {
47
48
  target_ref: string;
48
49
  entrypoint: "root" | "internal";
@@ -8,11 +8,13 @@ export interface SemanticFactManifestRefV2 {
8
8
  }
9
9
  export interface SemanticFactBindingV2 {
10
10
  fact_ref: string;
11
+ fact_revision_digest?: string;
11
12
  claim_ref: string;
12
13
  applicability_ref: string;
13
14
  }
14
15
  export type SemanticFactProofBindingV2 = {
15
16
  proof_ref: string;
17
+ obligation_revision_digest?: string;
16
18
  fact_ref: string;
17
19
  method: string;
18
20
  proof_surface: ProofSurface;
@@ -22,6 +24,7 @@ export type SemanticFactProofBindingV2 = {
22
24
  assertion_ref: string;
23
25
  } | {
24
26
  proof_ref: string;
27
+ obligation_revision_digest?: string;
25
28
  fact_ref: string;
26
29
  method: string;
27
30
  proof_surface: ProofSurface;
@@ -37,6 +40,11 @@ export interface SemanticFactOutcomeBindingsV2 {
37
40
  export interface SemanticFactExpectationV2 {
38
41
  manifest_ref: string;
39
42
  manifest_sha256: string;
43
+ fact_key: string;
44
+ fact_revision_digest: string;
45
+ obligation_key: string;
46
+ obligation_revision_digest: string;
47
+ revision_identity_required: boolean;
40
48
  fact_ref: string;
41
49
  proof_ref: string;
42
50
  method: string;
@@ -14,7 +14,10 @@ export async function validateLongTaskSemanticFactClosure(contract, repository,
14
14
  await validateSemanticFactInputInventory(repository, sourceItems, contextFiles, manifest, designOwnedSourceItems);
15
15
  validateSemanticFactBasisClosure(manifest, sourceItems);
16
16
  await validateSemanticFactLocatedValues(repository, manifest, sourceItems);
17
- const expectations = validateSemanticFactContractProjection(contract, manifest, index);
17
+ const expectations = validateSemanticFactContractProjection(contract, manifest, index, new Map(parsed.fact_revisions.map((item) => [item.key, item.revision_digest])), new Map(parsed.obligation_revisions.map((item) => [
18
+ item.key,
19
+ item.revision_digest,
20
+ ])), parsed.carrier === "compact_v1");
18
21
  return {
19
22
  manifest,
20
23
  manifest_sha256: parsed.sha256,
@@ -1,4 +1,4 @@
1
1
  import type { DeliveryContractV2 } from "./long-task-delivery-types.js";
2
2
  import type { SemanticFactManifestIndexV1 } from "./semantic-fact-policy.js";
3
3
  import type { SemanticFactExpectationV2, SemanticFactManifestV1 } from "./semantic-fact-types.js";
4
- export declare function validateSemanticFactContractProjection(contract: DeliveryContractV2, manifest: SemanticFactManifestV1, index: SemanticFactManifestIndexV1): Map<string, SemanticFactExpectationV2[]>;
4
+ export declare function validateSemanticFactContractProjection(contract: DeliveryContractV2, manifest: SemanticFactManifestV1, index: SemanticFactManifestIndexV1, factRevisions: Map<string, string>, obligationRevisions: Map<string, string>, sourceRequiresRevisions: boolean): Map<string, SemanticFactExpectationV2[]>;
@@ -1,7 +1,7 @@
1
1
  import { validateSemanticFactOutcomeBindings } from "./long-task-semantic-fact-contract-facts.js";
2
2
  import { validateSemanticFactProofBindings } from "./long-task-semantic-fact-contract-proofs.js";
3
3
  import { assertSameSemanticFactClosureSet, uniqueSemanticFactClosureValues, } from "./long-task-semantic-fact-closure-primitives.js";
4
- export function validateSemanticFactContractProjection(contract, manifest, index) {
4
+ export function validateSemanticFactContractProjection(contract, manifest, index, factRevisions, obligationRevisions, sourceRequiresRevisions) {
5
5
  const expectations = new Map();
6
6
  const allFactBindings = [];
7
7
  const allProofBindings = [];
@@ -10,15 +10,27 @@ export function validateSemanticFactContractProjection(contract, manifest, index
10
10
  const facts = manifest.facts.filter((item) => item.outcome_ref === outcome.key);
11
11
  const proofs = manifest.proof_obligations.filter((proof) => facts.some((fact) => fact.key === proof.fact_ref));
12
12
  const bindings = outcome.semantic_fact_bindings;
13
+ const revisionsRequired = sourceRequiresRevisions ||
14
+ bindings.facts.some((item) => item.fact_revision_digest !== undefined) ||
15
+ bindings.proofs.some((item) => item.obligation_revision_digest !== undefined);
13
16
  assertSameSemanticFactClosureSet(bindings.facts.map((item) => item.fact_ref), facts.map((item) => item.key), `contract_fact_set:${outcome.key}`);
17
+ if (revisionsRequired) {
18
+ assertSameSemanticFactClosureSet(bindings.facts.map((item) => revisionPair(item.fact_ref, item.fact_revision_digest, `contract_fact_revision:${outcome.key}`)), facts.map((item) => revisionPair(item.key, factRevisions.get(item.key), `source_fact_revision:${outcome.key}`)), `contract_fact_revision_set:${outcome.key}`);
19
+ assertSameSemanticFactClosureSet(bindings.proofs.map((item) => revisionPair(item.proof_ref, item.obligation_revision_digest, `contract_obligation_revision:${outcome.key}`)), proofs.map((item) => revisionPair(item.key, obligationRevisions.get(item.key), `source_obligation_revision:${outcome.key}`)), `contract_obligation_revision_set:${outcome.key}`);
20
+ }
14
21
  assertSameSemanticFactClosureSet(bindings.proofs.map((item) => item.proof_ref), proofs.map((item) => item.key), `contract_proof_set:${outcome.key}`);
15
- uniqueSemanticFactClosureValues(bindings.proofs.map((item) => item.authority === "machine"
16
- ? `${item.check_ref}\0${item.assertion_ref}`
17
- : `external\0${item.confirmation_ref}`), `contract_proof_target:${outcome.key}`);
18
- validateSemanticFactOutcomeBindings(outcome, manifest, index, allFactBindings);
19
- validateSemanticFactProofBindings(contract, outcome, manifest, index, targetByRef, expectations, allProofBindings);
22
+ uniqueSemanticFactClosureValues(bindings.proofs
23
+ .filter((item) => item.authority === "machine")
24
+ .map((item) => `${item.check_ref}\0${item.assertion_ref}`), `contract_proof_target:${outcome.key}`);
25
+ validateSemanticFactOutcomeBindings(outcome, manifest, index, allFactBindings, factRevisions, revisionsRequired);
26
+ validateSemanticFactProofBindings(contract, outcome, manifest, index, targetByRef, expectations, allProofBindings, factRevisions, obligationRevisions, revisionsRequired);
20
27
  }
21
28
  assertSameSemanticFactClosureSet(allFactBindings, manifest.facts.map((item) => item.key), "contract_all_fact_set");
22
29
  assertSameSemanticFactClosureSet(allProofBindings, manifest.proof_obligations.map((item) => item.key), "contract_all_proof_set");
23
30
  return expectations;
24
31
  }
32
+ function revisionPair(key, digest, label) {
33
+ if (!digest)
34
+ throw new Error(`semantic_fact_closure_invalid:${label}:${key}:missing`);
35
+ return `${key}\0${digest}`;
36
+ }
@@ -1,4 +1,4 @@
1
1
  import type { DeliveryContractV2 } from "./long-task-delivery-types.js";
2
2
  import type { SemanticFactManifestIndexV1 } from "./semantic-fact-policy.js";
3
3
  import type { SemanticFactManifestV1 } from "./semantic-fact-types.js";
4
- export declare function validateSemanticFactOutcomeBindings(outcome: DeliveryContractV2["outcomes"][number], manifest: SemanticFactManifestV1, index: SemanticFactManifestIndexV1, allFactBindings: string[]): void;
4
+ export declare function validateSemanticFactOutcomeBindings(outcome: DeliveryContractV2["outcomes"][number], manifest: SemanticFactManifestV1, index: SemanticFactManifestIndexV1, allFactBindings: string[], factRevisions: Map<string, string>, revisionsRequired: boolean): void;
@@ -1,10 +1,13 @@
1
1
  import { semanticFactClosureInvalid, uniqueSemanticFactClosureValues, } from "./long-task-semantic-fact-closure-primitives.js";
2
- export function validateSemanticFactOutcomeBindings(outcome, manifest, index, allFactBindings) {
2
+ export function validateSemanticFactOutcomeBindings(outcome, manifest, index, allFactBindings, factRevisions, revisionsRequired) {
3
3
  uniqueSemanticFactClosureValues(outcome.semantic_fact_bindings.facts.map((item) => item.claim_ref), `contract_fact_claim:${outcome.key}`);
4
4
  const applicabilityRefs = new Set(outcome.applicability.map((item) => item.key));
5
5
  for (const binding of outcome.semantic_fact_bindings.facts) {
6
6
  const fact = index.fact_by_ref.get(binding.fact_ref);
7
7
  const expectedClaim = `semantic_fact.${binding.fact_ref}`;
8
+ if (revisionsRequired &&
9
+ binding.fact_revision_digest !== factRevisions.get(binding.fact_ref))
10
+ semanticFactClosureInvalid("contract_fact_revision_mismatch", `${outcome.key}:${binding.fact_ref}:${binding.fact_revision_digest ?? "missing"}:${factRevisions.get(binding.fact_ref) ?? "missing"}`);
8
11
  if (binding.claim_ref !== expectedClaim)
9
12
  semanticFactClosureInvalid("contract_fact_claim_identity_mismatch", `${outcome.key}:${binding.fact_ref}:${binding.claim_ref}:${expectedClaim}`);
10
13
  if (!applicabilityRefs.has(binding.applicability_ref))
@@ -1,4 +1,4 @@
1
1
  import type { DeliveryContractV2, ExecutionTargetV2 } from "./long-task-delivery-types.js";
2
2
  import type { SemanticFactManifestIndexV1 } from "./semantic-fact-policy.js";
3
3
  import type { SemanticFactExpectationV2, SemanticFactManifestV1 } from "./semantic-fact-types.js";
4
- export declare function validateSemanticFactProofBindings(contract: DeliveryContractV2, outcome: DeliveryContractV2["outcomes"][number], manifest: SemanticFactManifestV1, index: SemanticFactManifestIndexV1, targetByRef: Map<string, ExecutionTargetV2>, expectations: Map<string, SemanticFactExpectationV2[]>, allProofBindings: string[]): void;
4
+ export declare function validateSemanticFactProofBindings(contract: DeliveryContractV2, outcome: DeliveryContractV2["outcomes"][number], manifest: SemanticFactManifestV1, index: SemanticFactManifestIndexV1, targetByRef: Map<string, ExecutionTargetV2>, expectations: Map<string, SemanticFactExpectationV2[]>, allProofBindings: string[], factRevisions: Map<string, string>, obligationRevisions: Map<string, string>, revisionsRequired: boolean): void;
@@ -1,16 +1,20 @@
1
1
  import { sameSemanticFactClosureSet, semanticFactClosureInvalid, } from "./long-task-semantic-fact-closure-primitives.js";
2
- export function validateSemanticFactProofBindings(contract, outcome, manifest, index, targetByRef, expectations, allProofBindings) {
2
+ export function validateSemanticFactProofBindings(contract, outcome, manifest, index, targetByRef, expectations, allProofBindings, factRevisions, obligationRevisions, revisionsRequired) {
3
3
  for (const binding of outcome.semantic_fact_bindings.proofs) {
4
4
  const proof = index.proof_by_ref.get(binding.proof_ref);
5
5
  const factBinding = outcome.semantic_fact_bindings.facts.find((item) => item.fact_ref === binding.fact_ref);
6
6
  if (!factBinding)
7
7
  semanticFactClosureInvalid("contract_proof_fact_binding_missing", `${outcome.key}:${binding.proof_ref}:${binding.fact_ref}`);
8
+ if (revisionsRequired &&
9
+ binding.obligation_revision_digest !==
10
+ obligationRevisions.get(binding.proof_ref))
11
+ semanticFactClosureInvalid("contract_obligation_revision_mismatch", `${outcome.key}:${binding.proof_ref}:${binding.obligation_revision_digest ?? "missing"}:${obligationRevisions.get(binding.proof_ref) ?? "missing"}`);
8
12
  validateProofIdentity(outcome, proof, binding);
9
13
  validateObserverTargets(proof, binding, targetByRef);
10
14
  if (binding.authority === "external_confirmation")
11
15
  validateExternalProofProjection(contract, outcome, binding, factBinding.claim_ref);
12
16
  else
13
- validateMachineProofProjection(contract, outcome, manifest, index, binding, proof, factBinding, expectations);
17
+ validateMachineProofProjection(contract, outcome, manifest, index, binding, proof, factBinding, expectations, factRevisions, obligationRevisions, revisionsRequired);
14
18
  allProofBindings.push(binding.proof_ref);
15
19
  }
16
20
  }
@@ -37,7 +41,7 @@ function validateExternalProofProjection(contract, outcome, binding, claimRef) {
37
41
  if (!confirmation.impact_claims.includes(fullClaim))
38
42
  semanticFactClosureInvalid("semantic_fact_confirmation_lineage_missing", `${binding.confirmation_ref}:${fullClaim}`);
39
43
  }
40
- function validateMachineProofProjection(contract, outcome, manifest, index, binding, proof, factBinding, expectations) {
44
+ function validateMachineProofProjection(contract, outcome, manifest, index, binding, proof, factBinding, expectations, factRevisions, obligationRevisions, revisionsRequired) {
41
45
  const check = outcome.acceptance.checks.find((item) => item.key === binding.check_ref);
42
46
  if (!check)
43
47
  semanticFactClosureInvalid("semantic_fact_check_unknown", `${outcome.key}:${binding.check_ref}`);
@@ -62,6 +66,11 @@ function validateMachineProofProjection(contract, outcome, manifest, index, bind
62
66
  rows.push({
63
67
  manifest_ref: manifest.key,
64
68
  manifest_sha256: contract.semantic_fact_manifest.sha256,
69
+ fact_key: fact.key,
70
+ fact_revision_digest: factRevisions.get(fact.key),
71
+ obligation_key: proof.key,
72
+ obligation_revision_digest: obligationRevisions.get(proof.key),
73
+ revision_identity_required: revisionsRequired,
65
74
  fact_ref: fact.key,
66
75
  proof_ref: proof.key,
67
76
  method: proof.method,
@@ -3,9 +3,13 @@ type SemanticRecord = Extract<EvidenceCapabilityRecordV2, {
3
3
  capability: "semantic_fact";
4
4
  }>;
5
5
  export declare function validateSemanticFactEvidence(check: CompiledCheckV2, record: SemanticRecord, artifactHashes: Record<string, string>): string | null;
6
- export declare function semanticFactComparisonResultIdentity(value: {
6
+ type SemanticFactExactComparisonMaterial = {
7
7
  fact_ref: string;
8
8
  proof_ref: string;
9
+ fact_key?: string;
10
+ fact_revision_digest?: string;
11
+ obligation_key?: string;
12
+ obligation_revision_digest?: string;
9
13
  target_ref: string;
10
14
  actual_value_sha256: string;
11
15
  expected_value_sha256: string;
@@ -14,8 +18,8 @@ export declare function semanticFactComparisonResultIdentity(value: {
14
18
  parameters_sha256: string;
15
19
  tolerance_sha256: string | null;
16
20
  mask_sha256: string | null;
17
- passed: boolean;
18
- }): string;
21
+ };
22
+ export declare function semanticFactComparisonResultIdentity(value: SemanticFactExactComparisonMaterial): string;
19
23
  export declare function validateDistinctSemanticFactEvidence(records: EvidenceCapabilityRecordV2[]): string | null;
20
- export declare const typed_semantic_fact_runtime_evidence = "fact_ref+actual+comparison+verdict+oracle+environment";
24
+ export declare const typed_semantic_fact_runtime_evidence = "obligation_key+obligation_revision_digest->fact_key+fact_revision_digest+actual+comparison+verdict+oracle+environment";
21
25
  export {};