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
@@ -0,0 +1,8 @@
1
+ import { type JsonPointerExactBudget, type JsonPointerExactLocator, type JsonPointerExactObservation } from "./long-task-json-pointer-observation.js";
2
+ export declare function extractJsonPointerExactObservation(input: {
3
+ root: string;
4
+ artifact_path: string;
5
+ locator: JsonPointerExactLocator;
6
+ sensitivity: string;
7
+ budget?: JsonPointerExactBudget;
8
+ }): Promise<JsonPointerExactObservation>;
@@ -0,0 +1,58 @@
1
+ import { lstat, open, realpath } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { JSON_POINTER_EXACT_LIMITS, extractJsonPointerExactObservationFromBytes, invalidObservation, normalizeObservationArtifactPath, } from "./long-task-json-pointer-observation.js";
4
+ export async function extractJsonPointerExactObservation(input) {
5
+ const artifactPath = normalizeObservationArtifactPath(input.artifact_path);
6
+ const root = path.resolve(input.root);
7
+ const resolved = path.resolve(root, ...artifactPath.split("/"));
8
+ assertContained(root, resolved);
9
+ await rejectSymbolicPath(root, artifactPath);
10
+ const [rootReal, fileReal] = await Promise.all([
11
+ realpath(root),
12
+ realpath(resolved),
13
+ ]);
14
+ assertContained(rootReal, fileReal);
15
+ const before = await lstat(resolved);
16
+ if (!before.isFile())
17
+ throw invalidObservation("observation_artifact_not_file");
18
+ if (before.size > JSON_POINTER_EXACT_LIMITS.max_file_bytes)
19
+ throw invalidObservation("observation_artifact_size_limit");
20
+ const handle = await open(resolved, "r");
21
+ try {
22
+ const opened = await handle.stat();
23
+ assertSameFile(before, opened);
24
+ const bytes = await handle.readFile();
25
+ const after = await handle.stat();
26
+ assertSameFile(opened, after);
27
+ return extractJsonPointerExactObservationFromBytes({
28
+ artifact_path: artifactPath,
29
+ bytes,
30
+ locator: input.locator,
31
+ sensitivity: input.sensitivity,
32
+ budget: input.budget,
33
+ });
34
+ }
35
+ finally {
36
+ await handle.close();
37
+ }
38
+ }
39
+ function assertContained(root, target) {
40
+ const relative = path.relative(root, target);
41
+ if (!relative || relative.startsWith("..") || path.isAbsolute(relative))
42
+ throw invalidObservation("observation_artifact_path_escape");
43
+ }
44
+ async function rejectSymbolicPath(root, relative) {
45
+ let current = root;
46
+ for (const segment of relative.split("/")) {
47
+ current = path.join(current, segment);
48
+ const entry = await lstat(current);
49
+ if (entry.isSymbolicLink())
50
+ throw invalidObservation("observation_artifact_symlink");
51
+ }
52
+ }
53
+ function assertSameFile(before, after) {
54
+ if (before.dev !== after.dev ||
55
+ before.ino !== after.ino ||
56
+ before.size !== after.size)
57
+ throw invalidObservation("observation_artifact_changed_during_read");
58
+ }
@@ -0,0 +1,17 @@
1
+ import type { CompiledDesignTargetV2, CompiledObservationAuthorityV2, DeliveryCheckV2, ExecutionTargetV2, FrozenRunnerV2, SemanticFactExpectationV2, SourceBackedExecutionTargetV2, WorkspaceManifestV2 } from "./long-task-delivery-types.js";
2
+ import type { ScopedDeliveryBindingV2 } from "./long-task-scoped-binding.js";
3
+ interface CompileObservationAuthorityPlanInput {
4
+ check: DeliveryCheckV2;
5
+ outcome_key: string | null;
6
+ runner: FrozenRunnerV2;
7
+ execution_target: ExecutionTargetV2;
8
+ design_targets: CompiledDesignTargetV2[];
9
+ semantic_fact_expectations: SemanticFactExpectationV2[];
10
+ production_bindings: ScopedDeliveryBindingV2[];
11
+ production_owner_paths: string[];
12
+ source_backed_execution_target: SourceBackedExecutionTargetV2 | null;
13
+ workspace_manifest: WorkspaceManifestV2;
14
+ protected_authority_paths?: readonly string[];
15
+ }
16
+ export declare function compileObservationAuthorityPlan(input: CompileObservationAuthorityPlanInput): CompiledObservationAuthorityV2[];
17
+ export {};
@@ -0,0 +1,348 @@
1
+ import { JSON_POINTER_EXACT_METHODS, isJsonPointerExactOracle, } from "./long-task-json-pointer-observation.js";
2
+ import { classifyMachineObservationCarrierRoleConflict } from "./long-task-admitted-observation.js";
3
+ import { canonicalValueJson, sha256Hex } from "./strict-codec.js";
4
+ import { classifyRepositoryPatternOverlap, normalizeRepositoryFile, } from "./long-task-paths.js";
5
+ const PROCESS_DERIVED_CAPABILITIES = new Set([
6
+ "presence",
7
+ "target_runtime",
8
+ ]);
9
+ const PROCESS_CAPABILITIES_REQUIRING_A_SEPARATE_PACKAGE_DERIVATION = new Set([
10
+ "interaction_trace",
11
+ "state_delta",
12
+ "design_conformance",
13
+ ]);
14
+ const STATIC_DERIVED_CAPABILITIES = new Set(["presence"]);
15
+ export function compileObservationAuthorityPlan(input) {
16
+ const assertions = new Map([
17
+ ...input.check.positive_assertions,
18
+ ...input.check.negative_assertions,
19
+ ].map((assertion) => [assertion.key, assertion]));
20
+ const candidates = [];
21
+ const factBoundAssertions = new Set();
22
+ for (const expectation of input.semantic_fact_expectations) {
23
+ if (expectation.observer_refs.length)
24
+ fail("semantic_fact_machine_observer_not_admitted", `${expectation.proof_ref}:observer_results_package_channel_unavailable:${expectation.observer_refs.join(",")}`);
25
+ const assertion = requiredAssertion(assertions, expectation.assertion_ref, `semantic_fact_machine_observer_not_admitted:${expectation.proof_ref}`);
26
+ factBoundAssertions.add(assertion.key);
27
+ candidates.push({
28
+ obligation_ref: expectation.proof_ref,
29
+ observation_identity: expectation.fact_ref,
30
+ fact_ref: expectation.fact_ref,
31
+ assertion,
32
+ target_ref: input.check.execution_target.target_ref,
33
+ method: expectation.method,
34
+ expected_value_sha256: expectation.expected.sha256,
35
+ actual_projection: "raw_exact",
36
+ comparison: {
37
+ comparator: expectation.comparison.comparator,
38
+ mode: expectation.comparison.mode,
39
+ parameters_sha256: expectation.comparison.parameters.sha256,
40
+ tolerance_sha256: expectation.comparison.tolerance?.sha256 ?? null,
41
+ mask_sha256: expectation.comparison.mask?.sha256 ?? null,
42
+ },
43
+ sensitivity: expectation.observation_sensitivity,
44
+ oracle: expectation.oracle,
45
+ diagnostic_scope: "semantic_fact",
46
+ });
47
+ }
48
+ for (const target of input.design_targets) {
49
+ if (target.target_ref !== input.check.execution_target.target_ref)
50
+ fail("machine_observer_not_admitted", `${target.key}:target_mismatch:${target.target_ref}:${input.check.execution_target.target_ref}`);
51
+ for (const binding of target.verification_method_bindings)
52
+ for (const artifact of binding.evidence_artifacts)
53
+ for (const expectation of artifact.fact_expectations) {
54
+ const assertion = requiredAssertion(assertions, binding.assertion_ref, `machine_observer_not_admitted:${target.key}:${binding.method}`);
55
+ factBoundAssertions.add(assertion.key);
56
+ candidates.push({
57
+ obligation_ref: designGroundObligationRef(target.key, binding.method, artifact.condition_key, expectation.fact_ref),
58
+ observation_identity: expectation.fact_ref,
59
+ fact_ref: expectation.fact_ref,
60
+ assertion,
61
+ target_ref: target.target_ref,
62
+ method: binding.method,
63
+ expected_value_sha256: expectation.expected.sha256,
64
+ actual_projection: "raw_exact",
65
+ comparison: {
66
+ comparator: expectation.comparison.comparator,
67
+ mode: expectation.comparison.mode,
68
+ parameters_sha256: expectation.comparison.parameters.sha256,
69
+ tolerance_sha256: expectation.comparison.tolerance?.sha256 ?? null,
70
+ mask_sha256: expectation.comparison.mask?.sha256 ?? null,
71
+ },
72
+ sensitivity: expectation.observation_sensitivity,
73
+ oracle: expectation.oracle,
74
+ diagnostic_scope: "design_fact",
75
+ });
76
+ }
77
+ for (const binding of target.symbolic_method_bindings ?? [])
78
+ for (const expectation of binding.rule_expectations) {
79
+ const assertion = requiredAssertion(assertions, binding.assertion_ref, `machine_observer_not_admitted:${target.key}:${binding.method}`);
80
+ factBoundAssertions.add(assertion.key);
81
+ if (expectation.proof_surface !== input.check.proof_surface)
82
+ fail("unsupported_observer_requires_external_confirmation", `${target.key}:${expectation.obligation_ref}:proof_surface_mismatch`);
83
+ candidates.push({
84
+ obligation_ref: expectation.obligation_ref,
85
+ observation_identity: expectation.obligation_ref,
86
+ fact_ref: expectation.fact_rule_ref,
87
+ assertion,
88
+ target_ref: target.target_ref,
89
+ method: binding.method,
90
+ expected_value_sha256: expectation.expected.sha256,
91
+ actual_projection: "raw_exact",
92
+ comparison: {
93
+ comparator: expectation.comparison.comparator,
94
+ mode: expectation.comparison.mode,
95
+ parameters_sha256: expectation.comparison.parameters.sha256,
96
+ tolerance_sha256: expectation.comparison.tolerance?.sha256 ?? null,
97
+ mask_sha256: expectation.comparison.mask?.sha256 ?? null,
98
+ },
99
+ sensitivity: expectation.observation_sensitivity,
100
+ oracle: expectation.oracle,
101
+ diagnostic_scope: "design_fact",
102
+ });
103
+ }
104
+ }
105
+ for (const assertion of assertions.values()) {
106
+ if (factBoundAssertions.has(assertion.key))
107
+ continue;
108
+ const expected = exactAssertionExpected(assertion);
109
+ const obligationRef = assertionObligationRef(input.outcome_key, input.check.key, assertion.key);
110
+ candidates.push({
111
+ obligation_ref: obligationRef,
112
+ observation_identity: obligationRef,
113
+ fact_ref: null,
114
+ assertion,
115
+ target_ref: input.check.execution_target.target_ref,
116
+ method: "exact_value",
117
+ expected_value_sha256: sha256Hex(canonicalValueJson(expected)),
118
+ actual_projection: assertionActualProjection(assertion),
119
+ comparison: {
120
+ comparator: "exact_value",
121
+ mode: "exact",
122
+ parameters_sha256: sha256Hex(canonicalValueJson({ comparator: "exact_value" })),
123
+ tolerance_sha256: null,
124
+ mask_sha256: null,
125
+ },
126
+ sensitivity: "plain",
127
+ diagnostic_scope: "assertion",
128
+ });
129
+ }
130
+ const rows = candidates.map((candidate) => compileCandidate(input, candidate));
131
+ assertUniqueRows(rows);
132
+ return rows.sort((left, right) => canonicalValueJson(left).localeCompare(canonicalValueJson(right)));
133
+ }
134
+ function compileCandidate(input, candidate) {
135
+ const unimplementedDerivedCapability = candidate.assertion.evidence_capabilities.find((capability) => PROCESS_CAPABILITIES_REQUIRING_A_SEPARATE_PACKAGE_DERIVATION.has(capability));
136
+ if (unimplementedDerivedCapability)
137
+ fail("unsupported_observer_requires_external_confirmation", `${candidate.obligation_ref}:${unimplementedDerivedCapability}:package_derivation_required`);
138
+ if (candidate.oracle && !isJsonPointerExactOracle(candidate.oracle))
139
+ fail("custom_oracle_machine_completion_forbidden", `${candidate.diagnostic_scope}:${candidate.obligation_ref}:${candidate.oracle.identity ?? "unknown"}`);
140
+ if (!JSON_POINTER_EXACT_METHODS.includes(candidate.method) ||
141
+ candidate.comparison.comparator !== "exact_value" ||
142
+ candidate.comparison.mode !== "exact" ||
143
+ candidate.comparison.tolerance_sha256 !== null ||
144
+ candidate.comparison.mask_sha256 !== null ||
145
+ candidate.sensitivity !== "plain")
146
+ fail(candidate.diagnostic_scope === "semantic_fact"
147
+ ? "semantic_fact_machine_observer_not_admitted"
148
+ : "unsupported_observer_requires_external_confirmation", `${candidate.diagnostic_scope}:${candidate.obligation_ref}:plain_exact_json_required`);
149
+ const authority = selectAuthority(input, candidate);
150
+ const carrierRefs = productionCarrierRefs(input);
151
+ if (authority === "package_static_json_exact") {
152
+ if (!carrierRefs.length)
153
+ fail("machine_observer_not_admitted", `${candidate.obligation_ref}:production_binding_carrier_required`);
154
+ if (carrierRefs.length !== 1)
155
+ fail("machine_observer_not_admitted", `${candidate.obligation_ref}:static_production_binding_ambiguous`);
156
+ const staticPaths = carrierRefs[0].carrier_paths;
157
+ if (staticPaths.length !== 1 || !isExactRepositoryFile(staticPaths[0]))
158
+ fail("machine_observer_not_admitted", `${candidate.obligation_ref}:static_production_carrier_exact_path_required`);
159
+ }
160
+ if (authority === "package_static_json_exact")
161
+ for (const carrierPath of carrierRefs.flatMap((carrier) => carrier.carrier_paths)) {
162
+ const carrierRoleIssue = staticObservationCarrierRoleConflict(input, carrierPath);
163
+ if (carrierRoleIssue)
164
+ fail("machine_observer_not_admitted", `${candidate.obligation_ref}:${carrierRoleIssue}`);
165
+ }
166
+ const comparison = candidate.comparison;
167
+ const expectedIdentity = sha256Hex(canonicalValueJson({
168
+ obligation_ref: candidate.obligation_ref,
169
+ fact_ref: candidate.fact_ref,
170
+ method: candidate.method,
171
+ expected_value_sha256: candidate.expected_value_sha256,
172
+ comparison,
173
+ actual_projection: candidate.actual_projection,
174
+ carrier_refs: carrierRefs,
175
+ }));
176
+ return {
177
+ obligation_ref: candidate.obligation_ref,
178
+ fact_ref: candidate.fact_ref,
179
+ assertion_ref: candidate.assertion.key,
180
+ claim_refs: [...candidate.assertion.claims].sort(),
181
+ target_ref: candidate.target_ref,
182
+ proof_surface: input.check.proof_surface,
183
+ method: candidate.method,
184
+ evidence_capabilities: [
185
+ ...candidate.assertion.evidence_capabilities,
186
+ ].sort(),
187
+ authority,
188
+ expected_identity: expectedIdentity,
189
+ expected_value_sha256: candidate.expected_value_sha256,
190
+ actual_projection: candidate.actual_projection,
191
+ observation_identity: candidate.observation_identity,
192
+ comparison,
193
+ locator_policy: {
194
+ kind: "fixed_json_pointer",
195
+ value: observationPointer(candidate.observation_identity),
196
+ },
197
+ carrier_refs: carrierRefs,
198
+ runtime_requirements: runtimeRequirements(input),
199
+ };
200
+ }
201
+ function selectAuthority(input, candidate) {
202
+ const target = input.execution_target;
203
+ if (target.role !== "product")
204
+ fail("unsupported_observer_requires_external_confirmation", `${candidate.obligation_ref}:product_target_required`);
205
+ if (input.check.proof_surface === "implementation_structure") {
206
+ if (!input.check.input_paths.length)
207
+ fail("machine_observer_not_admitted", `${candidate.obligation_ref}:static_carrier_required`);
208
+ if (!capabilitiesAdmitted(candidate.assertion.evidence_capabilities, admittedCapabilities(candidate, STATIC_DERIVED_CAPABILITIES)))
209
+ fail("unsupported_observer_requires_external_confirmation", `${candidate.obligation_ref}:static_capability_not_admitted`);
210
+ return "package_static_json_exact";
211
+ }
212
+ if (target.runtime_family !== "process" ||
213
+ input.check.proof_surface === "ui_browser" ||
214
+ input.check.proof_surface === "population_coverage")
215
+ fail("unsupported_observer_requires_external_confirmation", `${candidate.obligation_ref}:${target.runtime_family}:${input.check.proof_surface}`);
216
+ if (input.check.runner.type !== "project_binary" ||
217
+ input.check.execution_target.entrypoint !== "root" ||
218
+ input.runner.resolved_target !== target.root_entrypoint)
219
+ fail("process_observer_direct_root_required", `${candidate.obligation_ref}:${input.runner.resolved_target}:${target.root_entrypoint}`);
220
+ if (!target.root_argv)
221
+ fail("process_observer_root_invocation_required", candidate.obligation_ref);
222
+ if (!sameStringArray(input.check.runner.argv, target.root_argv))
223
+ fail("process_observer_root_argv_mismatch", `${candidate.obligation_ref}:${canonicalValueJson(input.check.runner.argv)}:${canonicalValueJson(target.root_argv)}`);
224
+ if (!capabilitiesAdmitted(candidate.assertion.evidence_capabilities, admittedCapabilities(candidate, PROCESS_DERIVED_CAPABILITIES)))
225
+ fail("unsupported_observer_requires_external_confirmation", `${candidate.obligation_ref}:process_capability_not_admitted`);
226
+ return "package_process_json_exact";
227
+ }
228
+ function runtimeRequirements(input) {
229
+ return {
230
+ runtime_family: input.execution_target.runtime_family,
231
+ target_role: input.execution_target.role,
232
+ entrypoint: input.check.execution_target.entrypoint,
233
+ runner_type: input.check.runner.type,
234
+ resolved_runner_target: input.runner.resolved_target,
235
+ declared_root_entrypoint: input.execution_target.root_entrypoint,
236
+ resolved_runner_argv: [...input.runner.argv],
237
+ declared_root_argv: input.execution_target.root_argv
238
+ ? [...input.execution_target.root_argv]
239
+ : null,
240
+ effect: input.check.runner.effect,
241
+ direct_root_match: input.check.runner.type === "project_binary" &&
242
+ input.check.execution_target.entrypoint === "root" &&
243
+ input.runner.resolved_target === input.execution_target.root_entrypoint &&
244
+ input.execution_target.root_argv !== undefined &&
245
+ sameStringArray(input.check.runner.argv, input.execution_target.root_argv),
246
+ };
247
+ }
248
+ function assertionActualProjection(assertion) {
249
+ if (assertion.operator === "equals")
250
+ return "raw_exact";
251
+ if (assertion.operator === "exists")
252
+ return "presence_boolean";
253
+ if (assertion.operator === "truthy")
254
+ return "truthy_boolean";
255
+ if (assertion.operator === "falsy")
256
+ return "falsy_boolean";
257
+ fail("machine_observer_not_admitted", `${assertion.key}:exact_equals_or_host_boolean_required`);
258
+ }
259
+ function staticObservationCarrierRoleConflict(input, carrierPath) {
260
+ const expectedAuthorityPatterns = [
261
+ ...Object.keys(input.runner.frozen_files),
262
+ ...(input.protected_authority_paths ?? []),
263
+ ];
264
+ const evidencePatterns = [
265
+ ...input.check.expected_output_paths,
266
+ ...input.check.artifact_globs,
267
+ ];
268
+ const conflict = classifyMachineObservationCarrierRoleConflict({
269
+ carrier_pattern: carrierPath,
270
+ expected_authority_patterns: expectedAuthorityPatterns,
271
+ evidence_role_patterns: evidencePatterns,
272
+ });
273
+ if (!conflict)
274
+ return null;
275
+ return `static_carrier_${conflict}_forbidden`;
276
+ }
277
+ function sameStringArray(left, right) {
278
+ return (left.length === right.length &&
279
+ left.every((value, index) => value === right[index]));
280
+ }
281
+ function capabilitiesAdmitted(capabilities, admitted) {
282
+ return capabilities.every((capability) => admitted.has(capability));
283
+ }
284
+ function admittedCapabilities(candidate, derived) {
285
+ const admitted = new Set(derived);
286
+ if (candidate.diagnostic_scope === "semantic_fact")
287
+ admitted.add("semantic_fact");
288
+ else if (candidate.diagnostic_scope === "design_fact")
289
+ admitted.add("design_method");
290
+ return admitted;
291
+ }
292
+ function productionCarrierRefs(input) {
293
+ return input.production_bindings
294
+ .map((scoped) => ({
295
+ binding_ref: scoped.binding_ref,
296
+ carrier_paths: scoped.binding.carrier_paths
297
+ .filter((carrier) => input.check.input_paths.some((inputPath) => classifyRepositoryPatternOverlap(carrier, inputPath).status ===
298
+ "proven_overlap"))
299
+ .sort(),
300
+ }))
301
+ .filter((binding) => binding.carrier_paths.length)
302
+ .sort((left, right) => left.binding_ref.localeCompare(right.binding_ref));
303
+ }
304
+ function isExactRepositoryFile(value) {
305
+ try {
306
+ normalizeRepositoryFile(value, "static_observation_carrier");
307
+ return true;
308
+ }
309
+ catch {
310
+ return false;
311
+ }
312
+ }
313
+ function exactAssertionExpected(assertion) {
314
+ if (assertion.operator === "equals")
315
+ return assertion.expected;
316
+ if (assertion.operator === "truthy" || assertion.operator === "exists")
317
+ return true;
318
+ if (assertion.operator === "falsy")
319
+ return false;
320
+ fail("machine_observer_not_admitted", `${assertion.key}:exact_equals_or_host_boolean_required`);
321
+ }
322
+ function requiredAssertion(assertions, assertionRef, diagnostic) {
323
+ const assertion = assertions.get(assertionRef);
324
+ if (!assertion)
325
+ throw new Error(diagnostic);
326
+ return assertion;
327
+ }
328
+ function assertionObligationRef(outcomeKey, checkKey, assertionKey) {
329
+ return `assertion.${outcomeKey ?? "GLOBAL"}.${checkKey}.${assertionKey}`;
330
+ }
331
+ function designGroundObligationRef(targetKey, method, conditionKey, factRef) {
332
+ return `design.${targetKey}.${method}.${conditionKey}.${factRef}`;
333
+ }
334
+ function observationPointer(identity) {
335
+ return `/observations/${identity.replace(/~/gu, "~0").replace(/\//gu, "~1")}`;
336
+ }
337
+ function assertUniqueRows(rows) {
338
+ const identities = new Set();
339
+ for (const row of rows) {
340
+ const identity = `${row.assertion_ref}\0${row.obligation_ref}\0${row.method}`;
341
+ if (identities.has(identity))
342
+ fail("machine_observer_not_admitted", `duplicate:${identity}`);
343
+ identities.add(identity);
344
+ }
345
+ }
346
+ function fail(code, detail) {
347
+ throw new Error(`${code}:${detail}`);
348
+ }
@@ -405,7 +405,7 @@ function canonicalRepositoryPath(value, label, kind) {
405
405
  throw new Error(`non_canonical_repository_path_dot_segment:${label}:${value}`);
406
406
  if (segments.includes(".."))
407
407
  throw new Error(`unsafe_path:${label}:${value}`);
408
- if (kind !== "pattern" && /[*?\[\]{}()]/u.test(normalized))
408
+ if (kind !== "pattern" && /[*?\[\]{}]/u.test(normalized))
409
409
  throw new Error(`unsupported_repository_path_syntax:${label}:${value}`);
410
410
  return normalized;
411
411
  }
@@ -3,3 +3,5 @@ import type { PlaywrightCase } from "./long-task-playwright-case-evidence.js";
3
3
  export declare function evidenceRecordsForPlaywrightCases(check: CompiledCheckV2, cases: PlaywrightCase[]): EvidenceCapabilityRecordV2[];
4
4
  export declare function semanticFactAttachmentName(proofRef: string): string;
5
5
  export declare function designMethodAttachmentName(target: string, method: string, condition: string, kind: "record" | "observation"): string;
6
+ export declare function symbolicDesignMethodAttachmentName(target: string, method: string): string;
7
+ export declare function symbolicDesignCertificateAttachmentName(target: string): string;
@@ -8,7 +8,7 @@ export function evidenceRecordsForPlaywrightCases(check, cases) {
8
8
  ].find((candidate) => candidate.key === item.id);
9
9
  if (!assertion)
10
10
  continue;
11
- records.push(...baseEvidenceRecords(check, item, assertion), ...designConformanceRecords(check, item, assertion), ...designMethodRecords(check, item, assertion), ...semanticFactRecords(check, item, assertion));
11
+ records.push(...baseEvidenceRecords(check, item, assertion), ...designConformanceRecords(check, item, assertion), ...designMethodRecords(check, item, assertion), ...symbolicDesignEvidenceRecords(check, item, assertion), ...semanticFactRecords(check, item, assertion));
12
12
  }
13
13
  return records;
14
14
  }
@@ -41,7 +41,8 @@ function designConformanceRecords(check, item, assertion) {
41
41
  return [];
42
42
  return (check.design_conformance_targets ?? [])
43
43
  .filter((candidate) => candidate.conformance_assertion_ref === assertion.key ||
44
- candidate.verification_method_bindings.some((binding) => binding.assertion_ref === assertion.key))
44
+ candidate.verification_method_bindings.some((binding) => binding.assertion_ref === assertion.key) ||
45
+ (candidate.symbolic_method_bindings ?? []).some((binding) => binding.assertion_ref === assertion.key))
45
46
  .map((target) => ({
46
47
  assertion_key: assertion.key,
47
48
  capability: "design_conformance",
@@ -58,6 +59,8 @@ function designMethodRecords(check, item, assertion) {
58
59
  return [];
59
60
  const records = [];
60
61
  for (const target of check.design_conformance_targets ?? []) {
62
+ if (target.fact_model === "symbolic_rules_v2")
63
+ continue;
61
64
  const binding = target.verification_method_bindings.find((candidate) => candidate.assertion_ref === assertion.key);
62
65
  if (!binding)
63
66
  continue;
@@ -93,6 +96,69 @@ function designMethodRecords(check, item, assertion) {
93
96
  }
94
97
  return records;
95
98
  }
99
+ function symbolicDesignEvidenceRecords(check, item, assertion) {
100
+ if (!item.executed)
101
+ return [];
102
+ const records = [];
103
+ for (const target of check.design_conformance_targets ?? []) {
104
+ if (target.fact_model !== "symbolic_rules_v2")
105
+ continue;
106
+ records.push(...symbolicMethodEvidenceRecords(target, item, assertion));
107
+ const certificate = symbolicCertificateEvidenceRecord(target, item, assertion);
108
+ if (certificate)
109
+ records.push(certificate);
110
+ }
111
+ return records;
112
+ }
113
+ function symbolicMethodEvidenceRecords(target, item, assertion) {
114
+ if (!assertion.evidence_capabilities.includes("design_method"))
115
+ return [];
116
+ const records = [];
117
+ for (const binding of target.symbolic_method_bindings ?? []) {
118
+ if (binding.assertion_ref !== assertion.key)
119
+ continue;
120
+ const attachmentName = symbolicDesignMethodAttachmentName(target.key, binding.method);
121
+ if (!item.attachment_names.includes(attachmentName))
122
+ continue;
123
+ const record = typedEvidenceAttachment(item.attachment_payloads[attachmentName], "design_method");
124
+ if (record?.capability === "design_method" &&
125
+ "fact_model" in record &&
126
+ record.assertion_key === assertion.key &&
127
+ record.design_target_ref === target.key &&
128
+ record.method === binding.method)
129
+ records.push(record);
130
+ }
131
+ return records;
132
+ }
133
+ function symbolicCertificateEvidenceRecord(target, item, assertion) {
134
+ const binding = target.symbolic_certificate_binding;
135
+ if (binding?.assertion_ref !== assertion.key ||
136
+ !assertion.evidence_capabilities.includes("design_symbolic_certificate"))
137
+ return null;
138
+ const attachmentName = symbolicDesignCertificateAttachmentName(target.key);
139
+ if (!item.attachment_names.includes(attachmentName))
140
+ return null;
141
+ const record = typedEvidenceAttachment(item.attachment_payloads[attachmentName], "design_symbolic_certificate");
142
+ return record?.capability === "design_symbolic_certificate" &&
143
+ record.assertion_key === assertion.key &&
144
+ record.design_target_ref === target.key
145
+ ? record
146
+ : null;
147
+ }
148
+ function typedEvidenceAttachment(payload, capability) {
149
+ if (!payload)
150
+ return null;
151
+ try {
152
+ const records = decodeEvidenceCapabilityRecords([JSON.parse(payload)]);
153
+ const record = records[0];
154
+ return records.length === 1 && record.capability === capability
155
+ ? record
156
+ : null;
157
+ }
158
+ catch {
159
+ return null;
160
+ }
161
+ }
96
162
  function semanticFactRecords(check, item, assertion) {
97
163
  if (!item.executed ||
98
164
  !assertion.evidence_capabilities.includes("semantic_fact"))
@@ -144,3 +210,9 @@ function designFactResultAttachment(content, label) {
144
210
  export function designMethodAttachmentName(target, method, condition, kind) {
145
211
  return `ty-context-design-method:${target}:${method}:${condition}:${kind}`;
146
212
  }
213
+ export function symbolicDesignMethodAttachmentName(target, method) {
214
+ return `ty-context-design-symbolic-method:${target}:${method}:record`;
215
+ }
216
+ export function symbolicDesignCertificateAttachmentName(target) {
217
+ return `ty-context-design-symbolic-certificate:${target}:record`;
218
+ }
@@ -0,0 +1,6 @@
1
+ import type { CompiledObservationAuthorityV2, PackageProcessObservationV1 } from "./long-task-runtime-types.js";
2
+ export declare const PRODUCT_OBSERVATION_SCHEMA_VERSION: "ty-context-product-observation-v1";
3
+ export declare function decodeProductObservationEnvelope(input: {
4
+ bytes: Uint8Array;
5
+ authorities: readonly CompiledObservationAuthorityV2[];
6
+ }): PackageProcessObservationV1;