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,8 +1,14 @@
1
+ import { evaluateExactDigestComparison, exactComparisonResultIdentity, } from "./long-task-exact-comparison.js";
2
+ import { admittedObservationAuthorityKey, isJsonPointerExactOracle, resolveObservationAuthority, } from "./long-task-admitted-observation.js";
1
3
  import { validateSemanticFactEvidence } from "./long-task-semantic-fact-evidence.js";
2
- export function validateRuntimeEvidenceRecord(check, record, artifactHashes) {
4
+ export { evaluateExactDigestComparison, exactComparisonResultIdentity };
5
+ export function validateRuntimeEvidenceRecord(check, record, artifactHashes, admittedObservations, hostAttestation = null) {
6
+ const admittedObservationIssue = validateAdmittedObservationRecord(check, record, admittedObservations);
7
+ if (admittedObservationIssue)
8
+ return admittedObservationIssue;
3
9
  switch (record.capability) {
4
10
  case "interaction_trace":
5
- return validateInteractionTrace(check, record);
11
+ return validateInteractionTrace(check, record, hostAttestation);
6
12
  case "state_delta":
7
13
  if (record.before_sha256 === record.after_sha256)
8
14
  return "state_unchanged";
@@ -30,15 +36,92 @@ export function validateRuntimeEvidenceRecord(check, record, artifactHashes) {
30
36
  return validateDesignConformance(check, record, artifactHashes);
31
37
  case "design_method":
32
38
  return validateDesignMethod(check, record, artifactHashes);
39
+ case "design_symbolic_certificate":
40
+ return validateDesignSymbolicCertificate(check, record, artifactHashes);
33
41
  case "semantic_fact":
34
42
  return validateSemanticFactEvidence(check, record, artifactHashes);
35
43
  case "target_runtime":
36
- return validateTargetRuntime(check, record);
44
+ return validateTargetRuntime(check, record, hostAttestation);
37
45
  case "input_variation":
38
46
  return validateInputVariation(record);
39
47
  }
40
48
  }
49
+ function validateAdmittedObservationRecord(check, record, admitted) {
50
+ if (record.capability === "semantic_fact" &&
51
+ record.observer_results.length > 0)
52
+ return "semantic_fact_machine_observer_not_admitted";
53
+ const candidates = runtimeAdmittedObservationCandidates(record);
54
+ for (const candidate of candidates) {
55
+ if (!isJsonPointerExactOracle(candidate.oracle))
56
+ return "custom_oracle_machine_completion_forbidden";
57
+ const authorityResolution = resolveObservationAuthority(check, {
58
+ assertion_key: record.assertion_key,
59
+ identity_ref: candidate.identity_ref,
60
+ method: record.capability === "semantic_fact" ||
61
+ record.capability === "design_method"
62
+ ? record.method
63
+ : "exact_value",
64
+ });
65
+ if (!authorityResolution.authority)
66
+ return authorityResolution.reason;
67
+ if (authorityResolution.authority.authority === "external_confirmation")
68
+ return "unsupported_observer_requires_external_confirmation";
69
+ if (!admitted)
70
+ return "admitted_observation_runtime_required";
71
+ const key = admittedObservationAuthorityKey(authorityResolution.authority);
72
+ const prepared = admitted.by_authority_key.get(key);
73
+ if (!prepared ||
74
+ prepared.obligation_ref !== authorityResolution.authority.obligation_ref)
75
+ return "admitted_observation_missing";
76
+ if (prepared.reason)
77
+ return prepared.reason;
78
+ if (!prepared.observation)
79
+ return "admitted_observation_missing";
80
+ if (authorityResolution.authority.authority === "package_static_json_exact" &&
81
+ (prepared.observation.artifact_path !==
82
+ candidate.actual_observation.artifact_path ||
83
+ prepared.observation.artifact_sha256 !==
84
+ candidate.actual_observation.artifact_sha256))
85
+ return "admitted_observation_artifact_mismatch";
86
+ if (candidate.actual_observation.locator.kind !== "json_pointer" ||
87
+ candidate.actual_observation.locator.value !==
88
+ authorityResolution.authority.locator_policy.value)
89
+ return "observation_locator_identity_mismatch";
90
+ if (prepared.observation.value_sha256 !==
91
+ candidate.actual_observation.value_sha256)
92
+ return "admitted_observation_value_mismatch";
93
+ }
94
+ return null;
95
+ }
96
+ function runtimeAdmittedObservationCandidates(record) {
97
+ if (record.capability === "semantic_fact")
98
+ return [
99
+ {
100
+ identity_ref: record.fact_ref,
101
+ actual_observation: record.actual_observation,
102
+ oracle: record.oracle,
103
+ },
104
+ ];
105
+ if (record.capability !== "design_method")
106
+ return [];
107
+ return "fact_model" in record
108
+ ? record.rule_results.map((result) => ({
109
+ identity_ref: result.obligation_ref,
110
+ actual_observation: result.actual_observation,
111
+ oracle: result.oracle,
112
+ }))
113
+ : record.cells.flatMap((cell) => cell.fact_results.map((result) => ({
114
+ identity_ref: result.fact_ref,
115
+ actual_observation: result.actual_observation,
116
+ oracle: result.oracle,
117
+ })));
118
+ }
41
119
  function validateDesignMethod(check, record, artifactHashes) {
120
+ return "fact_model" in record
121
+ ? validateSymbolicDesignMethod(check, record, artifactHashes)
122
+ : validateGroundDesignMethod(check, record, artifactHashes);
123
+ }
124
+ function validateGroundDesignMethod(check, record, artifactHashes) {
42
125
  const target = (check.design_conformance_targets ?? []).find((item) => item.key === record.design_target_ref &&
43
126
  item.verification_method_bindings.some((binding) => binding.assertion_ref === record.assertion_key &&
44
127
  binding.method === record.method));
@@ -49,6 +132,9 @@ function validateDesignMethod(check, record, artifactHashes) {
49
132
  return "target_mismatch";
50
133
  const binding = target.verification_method_bindings.find((item) => item.assertion_ref === record.assertion_key &&
51
134
  item.method === record.method);
135
+ return validateGroundDesignCells(target, binding, record, artifactHashes);
136
+ }
137
+ function validateGroundDesignCells(target, binding, record, artifactHashes) {
52
138
  if (!same([...record.cells.map((item) => item.condition_key)].sort(), [...target.condition_keys].sort()))
53
139
  return "design_method_conditions_mismatch";
54
140
  const expected = new Map(binding.evidence_artifacts.map((item) => [
@@ -62,6 +148,9 @@ function validateDesignMethod(check, record, artifactHashes) {
62
148
  ]));
63
149
  if (record.cells.length !== expected.size)
64
150
  return "design_method_cell_count_mismatch";
151
+ return validateGroundCellSet(record, expected, artifactHashes);
152
+ }
153
+ function validateGroundCellSet(record, expected, artifactHashes) {
65
154
  for (const cell of record.cells) {
66
155
  const expectedCell = expected.get(cell.condition_key);
67
156
  if (expectedCell?.artifact_path !== cell.artifact_path ||
@@ -75,68 +164,326 @@ function validateDesignMethod(check, record, artifactHashes) {
75
164
  return "design_method_artifact_missing";
76
165
  if (!artifactHashes[cell.observation_artifact_path])
77
166
  return "design_method_observation_artifact_missing";
78
- const expectations = new Map((expectedCell?.fact_expectations ?? []).map((item) => [
79
- item.fact_ref,
80
- item,
81
- ]));
82
- const actualIdentities = new Set();
83
- const comparisonIdentities = new Set();
84
- for (const result of cell.fact_results) {
85
- const expectation = expectations.get(result.fact_ref);
86
- if (!expectation)
87
- return "design_method_fact_expectation_missing";
88
- if (result.subject_ref !== expectation.subject_ref ||
89
- result.variation_ref !== expectation.variation_ref ||
90
- result.property_ref !== expectation.property_ref ||
91
- result.actual_observation.sensitivity !==
92
- expectation.observation_sensitivity)
93
- return "design_method_fact_identity_mismatch";
94
- if ((result.actual_observation.sensitivity === "plain" &&
95
- result.actual_observation.redaction !== null) ||
96
- (result.actual_observation.sensitivity === "protected" &&
97
- result.actual_observation.redaction === null))
98
- return "design_method_observation_protection_mismatch";
99
- if (canonicalJson(result.expected) !== canonicalJson(expectation.expected))
100
- return "design_method_expected_value_mismatch";
101
- if (result.comparison.comparator !== expectation.comparison.comparator ||
102
- result.comparison.mode !== expectation.comparison.mode ||
103
- canonicalJson(result.comparison.parameters) !==
104
- canonicalJson(expectation.comparison.parameters) ||
105
- canonicalJson(result.comparison.tolerance) !==
106
- canonicalJson(expectation.comparison.tolerance) ||
107
- canonicalJson(result.comparison.mask) !==
108
- canonicalJson(expectation.comparison.mask))
109
- return "design_method_comparison_authority_mismatch";
110
- if (canonicalJson(result.oracle) !== canonicalJson(expectation.oracle) ||
111
- canonicalJson(result.environment) !==
112
- canonicalJson(expectation.environment))
113
- return "design_method_oracle_environment_mismatch";
114
- if (result.actual_observation.artifact_path !==
115
- cell.observation_artifact_path ||
116
- result.actual_observation.artifact_sha256 !==
117
- artifactHashes[cell.observation_artifact_path])
118
- return "design_method_actual_observation_mismatch";
119
- if (result.actual_environment.artifact_path !==
120
- cell.observation_artifact_path ||
121
- result.actual_environment.artifact_sha256 !==
122
- artifactHashes[cell.observation_artifact_path] ||
123
- result.actual_environment.value_sha256 !==
124
- expectation.environment.definition.sha256)
125
- return "design_method_actual_environment_mismatch";
126
- if (result.comparison.artifact_path !== cell.artifact_path ||
127
- result.comparison.artifact_sha256 !== artifactHashes[cell.artifact_path])
128
- return "design_method_comparison_artifact_mismatch";
129
- const actualIdentity = `${result.actual_observation.artifact_path}\0${canonicalJson(result.actual_observation.locator)}`;
130
- if (actualIdentities.has(actualIdentity))
131
- return "design_method_actual_observation_reused";
132
- actualIdentities.add(actualIdentity);
133
- const comparisonIdentity = `${result.comparison.artifact_path}\0${canonicalJson(result.comparison.locator)}`;
134
- if (comparisonIdentities.has(comparisonIdentity))
135
- return "design_method_comparison_result_reused";
136
- comparisonIdentities.add(comparisonIdentity);
137
- if (result.verdict !== "passed" || result.comparison.passed !== true)
138
- return "design_method_fact_failed";
139
- }
167
+ const resultIssue = validateGroundCellResults(cell, expectedCell, artifactHashes);
168
+ if (resultIssue)
169
+ return resultIssue;
170
+ }
171
+ return null;
172
+ }
173
+ function validateGroundCellResults(cell, expectedCell, artifactHashes) {
174
+ const expectations = new Map(expectedCell.fact_expectations.map((item) => [item.fact_ref, item]));
175
+ const actualIdentities = new Set();
176
+ const comparisonIdentities = new Set();
177
+ for (const result of cell.fact_results) {
178
+ const expectation = expectations.get(result.fact_ref);
179
+ if (!expectation)
180
+ return "design_method_fact_expectation_missing";
181
+ const identityIssue = validateGroundFactIdentity(result, expectation);
182
+ if (identityIssue)
183
+ return identityIssue;
184
+ const authorityIssue = validateGroundFactAuthority(result, expectation);
185
+ if (authorityIssue)
186
+ return authorityIssue;
187
+ const artifactIssue = validateGroundFactArtifacts(result, expectation, cell, artifactHashes);
188
+ if (artifactIssue)
189
+ return artifactIssue;
190
+ const exactIssue = validateGroundExactComparison(result);
191
+ if (exactIssue)
192
+ return exactIssue;
193
+ const actualIdentity = `${result.actual_observation.artifact_path}\0${canonicalJson(result.actual_observation.locator)}`;
194
+ if (actualIdentities.has(actualIdentity))
195
+ return "design_method_actual_observation_reused";
196
+ actualIdentities.add(actualIdentity);
197
+ const comparisonIdentity = `${result.comparison.artifact_path}\0${canonicalJson(result.comparison.locator)}`;
198
+ if (comparisonIdentities.has(comparisonIdentity))
199
+ return "design_method_comparison_result_reused";
200
+ comparisonIdentities.add(comparisonIdentity);
201
+ if (result.verdict !== "passed" || result.comparison.passed !== true)
202
+ return "design_method_fact_failed";
203
+ }
204
+ return null;
205
+ }
206
+ function validateGroundExactComparison(result) {
207
+ if (result.comparison.comparator !== "exact_value" ||
208
+ result.comparison.mode !== "exact")
209
+ return null;
210
+ if (result.comparison.tolerance !== null || result.comparison.mask !== null)
211
+ return "design_method_comparison_authority_mismatch";
212
+ const recomputed = evaluateExactDigestComparison({
213
+ identity: {
214
+ kind: "selected_design_ground_v1",
215
+ fact_ref: result.fact_ref,
216
+ subject_ref: result.subject_ref,
217
+ variation_ref: result.variation_ref,
218
+ property_ref: result.property_ref,
219
+ },
220
+ ...exactComparisonMaterial(result),
221
+ });
222
+ if (!recomputed.passed)
223
+ return "design_method_exact_value_mismatch";
224
+ return result.comparison.result_sha256 === recomputed.result_sha256
225
+ ? null
226
+ : "design_method_comparison_result_identity_mismatch";
227
+ }
228
+ function validateGroundFactIdentity(result, expectation) {
229
+ if (result.subject_ref !== expectation.subject_ref ||
230
+ result.variation_ref !== expectation.variation_ref ||
231
+ result.property_ref !== expectation.property_ref ||
232
+ result.actual_observation.sensitivity !==
233
+ expectation.observation_sensitivity)
234
+ return "design_method_fact_identity_mismatch";
235
+ if ((result.actual_observation.sensitivity === "plain" &&
236
+ result.actual_observation.redaction !== null) ||
237
+ (result.actual_observation.sensitivity === "protected" &&
238
+ result.actual_observation.redaction === null))
239
+ return "design_method_observation_protection_mismatch";
240
+ return canonicalJson(result.expected) === canonicalJson(expectation.expected)
241
+ ? null
242
+ : "design_method_expected_value_mismatch";
243
+ }
244
+ function validateGroundFactAuthority(result, expectation) {
245
+ if (result.comparison.comparator !== expectation.comparison.comparator ||
246
+ result.comparison.mode !== expectation.comparison.mode ||
247
+ canonicalJson(result.comparison.parameters) !==
248
+ canonicalJson(expectation.comparison.parameters) ||
249
+ canonicalJson(result.comparison.tolerance) !==
250
+ canonicalJson(expectation.comparison.tolerance) ||
251
+ canonicalJson(result.comparison.mask) !==
252
+ canonicalJson(expectation.comparison.mask))
253
+ return "design_method_comparison_authority_mismatch";
254
+ return canonicalJson(result.oracle) === canonicalJson(expectation.oracle) &&
255
+ canonicalJson(result.environment) === canonicalJson(expectation.environment)
256
+ ? null
257
+ : "design_method_oracle_environment_mismatch";
258
+ }
259
+ function validateGroundFactArtifacts(result, expectation, cell, artifactHashes) {
260
+ if (result.actual_observation.artifact_path !==
261
+ cell.observation_artifact_path ||
262
+ result.actual_observation.artifact_sha256 !==
263
+ artifactHashes[cell.observation_artifact_path])
264
+ return "design_method_actual_observation_mismatch";
265
+ if (result.actual_environment.artifact_path !==
266
+ cell.observation_artifact_path ||
267
+ result.actual_environment.artifact_sha256 !==
268
+ artifactHashes[cell.observation_artifact_path] ||
269
+ result.actual_environment.value_sha256 !==
270
+ expectation.environment.definition.sha256)
271
+ return "design_method_actual_environment_mismatch";
272
+ return result.comparison.artifact_path === cell.artifact_path &&
273
+ result.comparison.artifact_sha256 === artifactHashes[cell.artifact_path]
274
+ ? null
275
+ : "design_method_comparison_artifact_mismatch";
276
+ }
277
+ function validateSymbolicDesignMethod(check, record, artifactHashes) {
278
+ const target = (check.design_conformance_targets ?? []).find((item) => item.key === record.design_target_ref &&
279
+ item.fact_model === "symbolic_rules_v2" &&
280
+ (item.symbolic_method_bindings ?? []).some((binding) => binding.assertion_ref === record.assertion_key &&
281
+ binding.method === record.method));
282
+ if (!target)
283
+ return "design_symbolic_method_binding_unknown";
284
+ if (target.target_ref !== record.target_ref ||
285
+ target.target_ref !== check.execution_target.target_ref)
286
+ return "target_mismatch";
287
+ const binding = target.symbolic_method_bindings.find((item) => item.assertion_ref === record.assertion_key &&
288
+ item.method === record.method);
289
+ if (binding.artifact_path !== record.artifact_path ||
290
+ binding.observation_path !== record.observation_artifact_path)
291
+ return "design_symbolic_method_artifact_path_mismatch";
292
+ if (!artifactHashes[record.artifact_path])
293
+ return "design_symbolic_method_artifact_missing";
294
+ if (!artifactHashes[record.observation_artifact_path])
295
+ return "design_symbolic_method_observation_artifact_missing";
296
+ const expectedRefs = binding.rule_expectations
297
+ .map((item) => item.obligation_ref)
298
+ .sort();
299
+ const actualRefs = record.rule_results
300
+ .map((item) => item.obligation_ref)
301
+ .sort();
302
+ if (new Set(actualRefs).size !== actualRefs.length ||
303
+ !same(actualRefs, expectedRefs))
304
+ return "design_symbolic_method_obligations_mismatch";
305
+ return validateSymbolicRuleResults(binding, record, artifactHashes);
306
+ }
307
+ function validateSymbolicRuleResults(binding, record, artifactHashes) {
308
+ const expectations = new Map(binding.rule_expectations.map((item) => [item.obligation_ref, item]));
309
+ const actualIdentities = new Set();
310
+ const comparisonIdentities = new Set();
311
+ for (const result of record.rule_results) {
312
+ const expectation = expectations.get(result.obligation_ref);
313
+ if (!expectation)
314
+ return "design_symbolic_method_expectation_missing";
315
+ const identityIssue = validateSymbolicResultIdentity(result, expectation);
316
+ if (identityIssue)
317
+ return identityIssue;
318
+ const authorityIssue = validateSymbolicResultAuthority(result, expectation);
319
+ if (authorityIssue)
320
+ return authorityIssue;
321
+ const artifactIssue = validateSymbolicResultArtifacts(result, expectation, record, artifactHashes);
322
+ if (artifactIssue)
323
+ return artifactIssue;
324
+ const exactIssue = validateSymbolicExactComparison(result);
325
+ if (exactIssue)
326
+ return exactIssue;
327
+ const actualIdentity = `${result.actual_observation.artifact_path}\0${canonicalJson(result.actual_observation.locator)}`;
328
+ if (actualIdentities.has(actualIdentity))
329
+ return "design_symbolic_method_actual_observation_reused";
330
+ actualIdentities.add(actualIdentity);
331
+ const comparisonIdentity = `${result.comparison.artifact_path}\0${canonicalJson(result.comparison.locator)}`;
332
+ if (comparisonIdentities.has(comparisonIdentity))
333
+ return "design_symbolic_method_comparison_result_reused";
334
+ comparisonIdentities.add(comparisonIdentity);
335
+ if (result.verdict !== "passed" || result.comparison.passed !== true)
336
+ return "design_symbolic_method_obligation_failed";
337
+ }
338
+ return null;
339
+ }
340
+ function validateSymbolicExactComparison(result) {
341
+ if (result.comparison.comparator !== "exact_value" ||
342
+ result.comparison.mode !== "exact")
343
+ return null;
344
+ if (result.comparison.tolerance !== null || result.comparison.mask !== null)
345
+ return "design_symbolic_method_comparison_authority_mismatch";
346
+ const recomputed = evaluateExactDigestComparison({
347
+ identity: {
348
+ kind: "selected_design_symbolic_v2",
349
+ obligation_ref: result.obligation_ref,
350
+ fact_rule_ref: result.fact_rule_ref,
351
+ region_sha256: result.region_sha256,
352
+ subject_or_relation_ref: result.subject_or_relation_ref,
353
+ property_ref: result.property_ref,
354
+ population_ref: result.population_ref,
355
+ quantifier: result.quantifier,
356
+ },
357
+ ...exactComparisonMaterial(result),
358
+ });
359
+ if (!recomputed.passed)
360
+ return "design_symbolic_method_exact_value_mismatch";
361
+ return result.comparison.result_sha256 === recomputed.result_sha256
362
+ ? null
363
+ : "design_symbolic_method_comparison_result_identity_mismatch";
364
+ }
365
+ function exactComparisonMaterial(result) {
366
+ return {
367
+ actual_value_sha256: result.actual_observation.value_sha256,
368
+ expected_value_sha256: result.expected.sha256,
369
+ comparator: result.comparison.comparator,
370
+ mode: result.comparison.mode,
371
+ parameters_sha256: result.comparison.parameters.sha256,
372
+ tolerance_sha256: result.comparison.tolerance?.sha256 ?? null,
373
+ mask_sha256: result.comparison.mask?.sha256 ?? null,
374
+ };
375
+ }
376
+ function validateSymbolicResultIdentity(result, expectation) {
377
+ if (result.fact_rule_ref !== expectation.fact_rule_ref ||
378
+ result.region_sha256 !== expectation.region_sha256 ||
379
+ result.subject_or_relation_ref !== expectation.subject_or_relation_ref ||
380
+ result.property_ref !== expectation.property_ref ||
381
+ result.population_ref !== expectation.population_ref ||
382
+ canonicalJson(result.quantifier) !==
383
+ canonicalJson(expectation.quantifier) ||
384
+ result.observation_sensitivity !== expectation.observation_sensitivity)
385
+ return "design_symbolic_method_identity_mismatch";
386
+ if (result.actual_observation.sensitivity !==
387
+ expectation.observation_sensitivity ||
388
+ (result.actual_observation.sensitivity === "plain" &&
389
+ result.actual_observation.redaction !== null) ||
390
+ (result.actual_observation.sensitivity === "protected" &&
391
+ result.actual_observation.redaction === null))
392
+ return "design_symbolic_method_observation_protection_mismatch";
393
+ return canonicalJson(result.expected) === canonicalJson(expectation.expected)
394
+ ? null
395
+ : "design_symbolic_method_expected_value_mismatch";
396
+ }
397
+ function validateSymbolicResultAuthority(result, expectation) {
398
+ if (result.proof_surface !== expectation.proof_surface ||
399
+ result.observation_boundary !== expectation.observation_boundary ||
400
+ result.protected_value_policy !== expectation.protected_value_policy ||
401
+ result.completion_effect !== expectation.completion_effect)
402
+ return "design_symbolic_method_proof_denotation_mismatch";
403
+ if (result.comparison.comparator !== expectation.comparison.comparator ||
404
+ result.comparison.mode !== expectation.comparison.mode ||
405
+ canonicalJson(result.comparison.parameters) !==
406
+ canonicalJson(expectation.comparison.parameters) ||
407
+ canonicalJson(result.comparison.tolerance) !==
408
+ canonicalJson(expectation.comparison.tolerance) ||
409
+ canonicalJson(result.comparison.mask) !==
410
+ canonicalJson(expectation.comparison.mask))
411
+ return "design_symbolic_method_comparison_authority_mismatch";
412
+ return canonicalJson(result.oracle) === canonicalJson(expectation.oracle) &&
413
+ canonicalJson(result.environment) === canonicalJson(expectation.environment)
414
+ ? null
415
+ : "design_symbolic_method_oracle_environment_mismatch";
416
+ }
417
+ function validateSymbolicResultArtifacts(result, expectation, record, artifactHashes) {
418
+ if (result.actual_observation.artifact_path !==
419
+ record.observation_artifact_path ||
420
+ result.actual_observation.artifact_sha256 !==
421
+ artifactHashes[record.observation_artifact_path])
422
+ return "design_symbolic_method_actual_observation_mismatch";
423
+ if (result.actual_environment.artifact_path !==
424
+ record.observation_artifact_path ||
425
+ result.actual_environment.artifact_sha256 !==
426
+ artifactHashes[record.observation_artifact_path] ||
427
+ result.actual_environment.value_sha256 !==
428
+ expectation.environment.definition.sha256)
429
+ return "design_symbolic_method_actual_environment_mismatch";
430
+ return result.comparison.artifact_path === record.artifact_path &&
431
+ result.comparison.artifact_sha256 === artifactHashes[record.artifact_path]
432
+ ? null
433
+ : "design_symbolic_method_comparison_artifact_mismatch";
434
+ }
435
+ function validateDesignSymbolicCertificate(check, record, artifactHashes) {
436
+ const target = (check.design_conformance_targets ?? []).find((item) => item.key === record.design_target_ref &&
437
+ item.fact_model === "symbolic_rules_v2" &&
438
+ item.symbolic_certificate_binding?.assertion_ref === record.assertion_key);
439
+ if (!target)
440
+ return "design_symbolic_certificate_binding_unknown";
441
+ if (target.target_ref !== record.target_ref ||
442
+ target.target_ref !== check.execution_target.target_ref)
443
+ return "target_mismatch";
444
+ const binding = target.symbolic_certificate_binding;
445
+ if (record.artifact_path !== binding.artifact_path)
446
+ return "design_symbolic_certificate_artifact_path_mismatch";
447
+ if (artifactHashes[record.artifact_path] !== record.artifact_sha256)
448
+ return "design_symbolic_certificate_artifact_hash_mismatch";
449
+ if (canonicalJson(record.metrics) !== canonicalJson(binding.metrics))
450
+ return "design_symbolic_certificate_metrics_mismatch";
451
+ const expectedRefs = binding.expectations
452
+ .map((item) => item.certificate_ref)
453
+ .sort();
454
+ const actualRefs = record.certificate_results
455
+ .map((item) => item.certificate_ref)
456
+ .sort();
457
+ if (new Set(actualRefs).size !== actualRefs.length ||
458
+ !same(actualRefs, expectedRefs))
459
+ return "design_symbolic_certificate_results_mismatch";
460
+ const expectations = new Map(binding.expectations.map((item) => [item.certificate_ref, item]));
461
+ for (const result of record.certificate_results) {
462
+ const expectation = expectations.get(result.certificate_ref);
463
+ if (!expectation)
464
+ return "design_symbolic_certificate_expectation_missing";
465
+ if (canonicalJson({
466
+ certificate_ref: result.certificate_ref,
467
+ fact_rule_refs: result.fact_rule_refs,
468
+ omitted_axis_refs: result.omitted_axis_refs,
469
+ dependency_edge_refs: result.dependency_edge_refs,
470
+ canonical_rule_dag_sha256: result.canonical_rule_dag_sha256,
471
+ ...(result.source_noninterference_proof_sha256 === undefined
472
+ ? {}
473
+ : {
474
+ source_noninterference_proof_sha256: result.source_noninterference_proof_sha256,
475
+ }),
476
+ ...(result.production_noninterference_proof_sha256 === undefined
477
+ ? {}
478
+ : {
479
+ production_noninterference_proof_sha256: result.production_noninterference_proof_sha256,
480
+ }),
481
+ }) !== canonicalJson(expectation))
482
+ return "design_symbolic_certificate_denotation_mismatch";
483
+ if (result.recomputed !== true)
484
+ return "design_symbolic_certificate_not_recomputed";
485
+ if (result.verdict !== "passed")
486
+ return "design_symbolic_certificate_failed";
140
487
  }
141
488
  return null;
142
489
  }
@@ -171,9 +518,12 @@ function validateDesignConformance(check, record, artifactHashes) {
171
518
  }
172
519
  function designTargetUsesAssertion(target, assertionKey) {
173
520
  return (target.conformance_assertion_ref === assertionKey ||
174
- target.verification_method_bindings.some((item) => item.assertion_ref === assertionKey));
521
+ target.verification_method_bindings.some((item) => item.assertion_ref === assertionKey) ||
522
+ (target.symbolic_method_bindings ?? []).some((item) => item.assertion_ref === assertionKey));
175
523
  }
176
- function validateInteractionTrace(check, record) {
524
+ function validateInteractionTrace(check, record, hostAttestation) {
525
+ if (!hostAttestation?.direct_root_match)
526
+ return "legacy_interaction_trace_non_authoritative";
177
527
  if (record.target_ref !== check.execution_target.target_ref)
178
528
  return "target_mismatch";
179
529
  if (!same(record.given_keys, check.scenario.given.map((step) => step.key)))
@@ -202,7 +552,9 @@ function validateObserverEvidence(check, observerTargetRef) {
202
552
  return "check_must_execute_on_observer";
203
553
  return null;
204
554
  }
205
- function validateTargetRuntime(check, record) {
555
+ function validateTargetRuntime(check, record, hostAttestation) {
556
+ if (!hostAttestation?.direct_root_match)
557
+ return "legacy_target_runtime_non_authoritative";
206
558
  if (record.target_ref !== check.execution_target.target_ref)
207
559
  return "target_mismatch";
208
560
  if (record.root_entrypoint !== check.execution_target_definition.root_entrypoint)
@@ -77,7 +77,7 @@ export interface TargetRuntimeEvidenceV2 extends EvidenceRecordBaseV2 {
77
77
  session_id: string;
78
78
  cold_start: boolean;
79
79
  }
80
- export interface DesignMethodEvidenceV2 extends EvidenceRecordBaseV2 {
80
+ export interface DesignGroundMethodEvidenceV2 extends EvidenceRecordBaseV2 {
81
81
  capability: "design_method";
82
82
  design_target_ref: string;
83
83
  target_ref: string;
@@ -140,12 +140,80 @@ export interface DesignFactResultV2 {
140
140
  definition: DesignResourceLocatedDigestV1;
141
141
  };
142
142
  }
143
+ export interface DesignSymbolicMethodEvidenceV2 extends EvidenceRecordBaseV2 {
144
+ capability: "design_method";
145
+ fact_model: "symbolic_rules_v2";
146
+ design_target_ref: string;
147
+ target_ref: string;
148
+ method: DesignResourceVerificationMethod;
149
+ artifact_path: string;
150
+ observation_artifact_path: string;
151
+ rule_results: DesignSymbolicRuleResultV2[];
152
+ }
153
+ export interface DesignSymbolicRuleResultV2 {
154
+ obligation_ref: string;
155
+ fact_rule_ref: string;
156
+ region_sha256: string;
157
+ subject_or_relation_ref: string;
158
+ property_ref: string;
159
+ population_ref: string | null;
160
+ quantifier: {
161
+ kind: "one" | "all" | "any" | "none" | "exactly" | "at_least" | "at_most" | "range";
162
+ minimum: number | null;
163
+ maximum: number | null;
164
+ };
165
+ actual_observation: DesignFactResultV2["actual_observation"];
166
+ actual_environment: DesignFactResultV2["actual_environment"];
167
+ observation_sensitivity: "plain" | "protected";
168
+ expected: DesignResourceLocatedDigestV1;
169
+ proof_surface: string;
170
+ observation_boundary: string;
171
+ comparison: DesignFactResultV2["comparison"];
172
+ verdict: "passed" | "failed";
173
+ oracle: DesignFactResultV2["oracle"];
174
+ environment: DesignFactResultV2["environment"];
175
+ protected_value_policy: string;
176
+ completion_effect: string;
177
+ }
178
+ export type DesignMethodEvidenceV2 = DesignGroundMethodEvidenceV2 | DesignSymbolicMethodEvidenceV2;
179
+ export interface DesignSymbolicCertificateEvidenceV2 extends EvidenceRecordBaseV2 {
180
+ capability: "design_symbolic_certificate";
181
+ design_target_ref: string;
182
+ target_ref: string;
183
+ artifact_path: string;
184
+ artifact_sha256: string;
185
+ metrics: {
186
+ semantic_obligations: number;
187
+ certificate_obligations: number;
188
+ certificate_covered_omitted_axes: number;
189
+ certificate_covered_dependency_edges: number;
190
+ canonical_dag_nodes: number;
191
+ canonical_partition_edges: number;
192
+ canonical_bytes: number;
193
+ theoretical_ground_cardinality: string;
194
+ };
195
+ certificate_results: Array<{
196
+ certificate_ref: string;
197
+ fact_rule_refs: string[];
198
+ omitted_axis_refs: string[];
199
+ dependency_edge_refs: string[];
200
+ canonical_rule_dag_sha256: string;
201
+ source_noninterference_proof_sha256?: string;
202
+ production_noninterference_proof_sha256?: string;
203
+ recomputed: true;
204
+ verdict: "passed" | "failed";
205
+ }>;
206
+ }
143
207
  export interface SemanticFactEvidenceV2 extends EvidenceRecordBaseV2 {
144
208
  capability: "semantic_fact";
145
209
  manifest_ref: string;
146
210
  manifest_sha256: string;
147
211
  outcome_ref: string;
148
212
  target_ref: string;
213
+ fact_key?: string;
214
+ fact_revision_digest?: string;
215
+ obligation_key?: string;
216
+ obligation_revision_digest?: string;
149
217
  fact_ref: string;
150
218
  proof_ref: string;
151
219
  method: string;
@@ -204,5 +272,5 @@ export interface InputVariationEvidenceV2 extends EvidenceRecordBaseV2 {
204
272
  }>;
205
273
  failure_case_observed: boolean;
206
274
  }
207
- export type EvidenceCapabilityRecordV2 = InteractionTraceEvidenceV2 | StateDeltaEvidenceV2 | CrossSurfaceConsistencyEvidenceV2 | DurableReadbackEvidenceV2 | BoundaryInvocationEvidenceV2 | ExternalSideEffectEvidenceV2 | FailureInjectionEvidenceV2 | VisualRenderEvidenceV2 | DesignConformanceEvidenceV2 | DesignMethodEvidenceV2 | SemanticFactEvidenceV2 | TargetRuntimeEvidenceV2 | InputVariationEvidenceV2;
275
+ export type EvidenceCapabilityRecordV2 = InteractionTraceEvidenceV2 | StateDeltaEvidenceV2 | CrossSurfaceConsistencyEvidenceV2 | DurableReadbackEvidenceV2 | BoundaryInvocationEvidenceV2 | ExternalSideEffectEvidenceV2 | FailureInjectionEvidenceV2 | VisualRenderEvidenceV2 | DesignConformanceEvidenceV2 | DesignMethodEvidenceV2 | DesignSymbolicCertificateEvidenceV2 | SemanticFactEvidenceV2 | TargetRuntimeEvidenceV2 | InputVariationEvidenceV2;
208
276
  export {};
@@ -1,4 +1,13 @@
1
1
  import type { CompiledCheckV2, CompiledOutcomeV2, DeliveryContractV2 } from "./long-task-delivery-types.js";
2
+ export declare function validateCounterfactualObservationImpact(input: {
3
+ baseline_by_fact: Record<string, string>;
4
+ mutated_by_fact: Record<string, string>;
5
+ expected_affected_fact_refs: string[];
6
+ preserved_fact_refs: string[];
7
+ allowed_fanout_fact_refs?: string[];
8
+ target_live: boolean;
9
+ carrier_role: "product" | "evidence";
10
+ }): string | null;
2
11
  export declare function validateClaimEvidenceSensitivity(contract: DeliveryContractV2, globalChecks: CompiledCheckV2[], outcomes: CompiledOutcomeV2[], report?: ValidationReporter): void;
3
12
  type ValidationReporter = (message: string) => void;
4
13
  export {};