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,168 @@
1
+ import { semanticArray, semanticFail, semanticInteger, semanticLiteral, semanticObject, semanticSha256, semanticStableRef, semanticStableRefs, semanticString, } from "./semantic-fact-shape-primitives.js";
2
+ import { SEMANTIC_COMPACT_CAPACITY_FIELDS, SEMANTIC_COMPACT_CATALOG_COLLECTIONS, plainSemanticCompactObject, resolveSemanticCompactSelectors, } from "./semantic-fact-compact-support.js";
3
+ export function parseSemanticCompactCapacity(value, label) {
4
+ const row = semanticObject(value, label, [
5
+ "theoretical_ground_universe",
6
+ "measured",
7
+ "maximum",
8
+ ]);
9
+ semanticLiteral(row.theoretical_ground_universe, ["not_materialized"], `${label}.theoretical_ground_universe`);
10
+ return {
11
+ measured: parseCapacityCounts(row.measured, `${label}.measured`),
12
+ maximum: parseCapacityCounts(row.maximum, `${label}.maximum`),
13
+ };
14
+ }
15
+ function parseCapacityCounts(value, label) {
16
+ const row = semanticObject(value, label, [
17
+ ...SEMANTIC_COMPACT_CAPACITY_FIELDS,
18
+ ]);
19
+ return Object.fromEntries(SEMANTIC_COMPACT_CAPACITY_FIELDS.map((field) => [
20
+ field,
21
+ semanticInteger(row[field], `${label}.${field}`),
22
+ ]));
23
+ }
24
+ export function parseSemanticCompactSelectors(value, label) {
25
+ const result = new Map();
26
+ for (const [index, item] of semanticArray(value, label).entries()) {
27
+ const itemLabel = `${label}[${index}]`;
28
+ const row = semanticObject(item, itemLabel, ["key", "members"]);
29
+ const key = semanticStableRef(row.key, `${itemLabel}.key`);
30
+ const members = semanticStableRefs(row.members, `${itemLabel}.members`);
31
+ if (result.has(key))
32
+ semanticFail(itemLabel, `duplicate key: ${key}`);
33
+ if (new Set(members).size !== members.length)
34
+ semanticFail(itemLabel, "members must be unique");
35
+ result.set(key, members);
36
+ }
37
+ return result;
38
+ }
39
+ export function parseSemanticCompactCatalogs(value, selectors, label) {
40
+ const row = semanticObject(value, label, [
41
+ ...SEMANTIC_COMPACT_CATALOG_COLLECTIONS,
42
+ ]);
43
+ return Object.fromEntries(SEMANTIC_COMPACT_CATALOG_COLLECTIONS.map((name) => [
44
+ name,
45
+ parseCompactTable(row[name], selectors, `${label}.${name}`),
46
+ ]));
47
+ }
48
+ export function parseSemanticCompactFactSets(value, selectors, label) {
49
+ const result = [];
50
+ const setKeys = new Set();
51
+ for (const [setIndex, item] of semanticArray(value, label).entries()) {
52
+ const setLabel = `${label}[${setIndex}]`;
53
+ const row = semanticObject(item, setLabel, [
54
+ "key",
55
+ "defaults",
56
+ "columns",
57
+ "rows",
58
+ ]);
59
+ const setKey = semanticStableRef(row.key, `${setLabel}.key`);
60
+ if (setKeys.has(setKey))
61
+ semanticFail(setLabel, `duplicate key: ${setKey}`);
62
+ setKeys.add(setKey);
63
+ const defaults = plainSemanticCompactObject(row.defaults, `${setLabel}.defaults`);
64
+ if (Object.hasOwn(defaults, "key"))
65
+ semanticFail(`${setLabel}.defaults`, "key cannot be defaulted");
66
+ const rows = parseCompactTable({ defaults, columns: row.columns, rows: row.rows }, selectors, setLabel);
67
+ for (const [rowIndex, factItem] of rows.entries()) {
68
+ const rowLabel = `${setLabel}.rows[${rowIndex}]`;
69
+ const factRow = plainSemanticCompactObject(factItem, rowLabel);
70
+ if (!Object.hasOwn(factRow, "fact_revision_digest"))
71
+ semanticFail(rowLabel, "missing fact_revision_digest");
72
+ const { fact_revision_digest: digestValue, ...fact } = factRow;
73
+ const revisionDigest = semanticSha256(digestValue, `${rowLabel}.fact_revision_digest`);
74
+ result.push({ fact, revision_digest: revisionDigest });
75
+ }
76
+ }
77
+ return result;
78
+ }
79
+ export function parseSemanticCompactProofTemplates(value, selectors, label) {
80
+ const result = new Map();
81
+ for (const [index, item] of semanticArray(value, label).entries()) {
82
+ const itemLabel = `${label}[${index}]`;
83
+ const row = semanticObject(item, itemLabel, ["key", "proof"]);
84
+ const key = semanticStableRef(row.key, `${itemLabel}.key`);
85
+ const proof = plainSemanticCompactObject(resolveSemanticCompactSelectors(row.proof, selectors, `${itemLabel}.proof`), `${itemLabel}.proof`);
86
+ if (Object.hasOwn(proof, "key") || Object.hasOwn(proof, "fact_ref"))
87
+ semanticFail(`${itemLabel}.proof`, "key and fact_ref belong to obligation rows");
88
+ if (result.has(key))
89
+ semanticFail(itemLabel, `duplicate key: ${key}`);
90
+ result.set(key, proof);
91
+ }
92
+ return result;
93
+ }
94
+ export function parseSemanticCompactObligations(value, templates, selectors, label) {
95
+ return parseCompactTable(value, selectors, label).map((item, index) => {
96
+ const itemLabel = `${label}[${index}]`;
97
+ const row = semanticObject(item, itemLabel, [
98
+ "obligation_key",
99
+ "obligation_revision_digest",
100
+ "fact_key",
101
+ "template_ref",
102
+ "overrides",
103
+ ]);
104
+ const obligationKey = semanticStableRef(row.obligation_key, `${itemLabel}.obligation_key`);
105
+ const factKey = semanticStableRef(row.fact_key, `${itemLabel}.fact_key`);
106
+ const templateRef = semanticStableRef(row.template_ref, `${itemLabel}.template_ref`);
107
+ const template = templates.get(templateRef);
108
+ if (!template)
109
+ semanticFail(`${itemLabel}.template_ref`, `unknown template: ${templateRef}`);
110
+ const overrides = plainSemanticCompactObject(resolveSemanticCompactSelectors(row.overrides, selectors, `${itemLabel}.overrides`), `${itemLabel}.overrides`);
111
+ if (Object.hasOwn(overrides, "key") || Object.hasOwn(overrides, "fact_ref"))
112
+ semanticFail(`${itemLabel}.overrides`, "key and fact_ref cannot be overridden");
113
+ const proof = {
114
+ ...template,
115
+ ...overrides,
116
+ key: obligationKey,
117
+ fact_ref: factKey,
118
+ };
119
+ const revisionDigest = semanticSha256(row.obligation_revision_digest, `${itemLabel}.obligation_revision_digest`);
120
+ return { proof, revision_digest: revisionDigest };
121
+ });
122
+ }
123
+ function parseCompactTable(value, selectors, label) {
124
+ const table = semanticObject(value, label, ["defaults", "columns", "rows"]);
125
+ const defaults = plainSemanticCompactObject(resolveSemanticCompactSelectors(table.defaults, selectors, `${label}.defaults`), `${label}.defaults`);
126
+ const columns = semanticArray(table.columns, `${label}.columns`).map((item, index) => {
127
+ const column = semanticString(item, `${label}.columns[${index}]`);
128
+ if (!/^[a-z][a-z0-9_]*$/u.test(column))
129
+ semanticFail(`${label}.columns[${index}]`, "invalid column name");
130
+ return column;
131
+ });
132
+ if (new Set(columns).size !== columns.length)
133
+ semanticFail(`${label}.columns`, "columns must be unique");
134
+ for (const column of columns)
135
+ if (Object.hasOwn(defaults, column))
136
+ semanticFail(`${label}.columns`, `column duplicates default field: ${column}`);
137
+ return semanticArray(table.rows, `${label}.rows`).map((item, index) => {
138
+ const rowLabel = `${label}.rows[${index}]`;
139
+ const values = semanticArray(item, rowLabel);
140
+ if (values.length !== columns.length)
141
+ semanticFail(rowLabel, `column count mismatch: ${values.length}:${columns.length}`);
142
+ return {
143
+ ...defaults,
144
+ ...Object.fromEntries(columns.map((column, columnIndex) => [
145
+ column,
146
+ resolveSemanticCompactSelectors(values[columnIndex], selectors, `${rowLabel}[${columnIndex}]`),
147
+ ])),
148
+ };
149
+ });
150
+ }
151
+ export function parseSemanticCompactExceptions(value, label) {
152
+ const seen = new Set();
153
+ for (const [index, item] of semanticArray(value, label).entries()) {
154
+ const itemLabel = `${label}[${index}]`;
155
+ const row = semanticObject(item, itemLabel, [
156
+ "key",
157
+ "target_ref",
158
+ "rationale",
159
+ ]);
160
+ const key = semanticStableRef(row.key, `${itemLabel}.key`);
161
+ semanticStableRef(row.target_ref, `${itemLabel}.target_ref`);
162
+ if (typeof row.rationale !== "string" || !row.rationale.trim())
163
+ semanticFail(`${itemLabel}.rationale`, "must be a non-empty string");
164
+ if (seen.has(key))
165
+ semanticFail(itemLabel, `duplicate key: ${key}`);
166
+ seen.add(key);
167
+ }
168
+ }
@@ -0,0 +1,11 @@
1
+ export interface SemanticFactRevisionInput {
2
+ key: string;
3
+ kind: string;
4
+ source_ref: string;
5
+ sha256: string;
6
+ }
7
+ export declare function indexSemanticFactRevisionInputs(inputs: readonly Record<string, unknown>[]): Map<string, SemanticFactRevisionInput[]>;
8
+ export declare function semanticFactRevisionDigest(fact: Record<string, unknown>, inputRevisionsByFact: ReadonlyMap<string, readonly SemanticFactRevisionInput[]>): string;
9
+ export declare function semanticObligationRevisionDigest(obligation: Record<string, unknown>, factRevisionDigest: string): string;
10
+ export declare function legacySemanticFactRevisionDigest(fact: Record<string, unknown>): string;
11
+ export declare function legacySemanticObligationRevisionDigest(obligation: Record<string, unknown>): string;
@@ -0,0 +1,64 @@
1
+ import { canonicalValueJson, sha256Hex } from "./strict-codec.js";
2
+ function normalizeLocatedValues(value) {
3
+ if (Array.isArray(value))
4
+ return value.map(normalizeLocatedValues);
5
+ if (!value || typeof value !== "object")
6
+ return value;
7
+ const row = value;
8
+ if (Object.hasOwn(row, "representation") &&
9
+ Object.hasOwn(row, "locator") &&
10
+ Object.hasOwn(row, "sha256")) {
11
+ const { locator: _locator, ...rest } = row;
12
+ return Object.fromEntries(Object.entries(rest).map(([key, item]) => [
13
+ key,
14
+ normalizeLocatedValues(item),
15
+ ]));
16
+ }
17
+ return Object.fromEntries(Object.entries(row).map(([key, item]) => [
18
+ key,
19
+ normalizeLocatedValues(item),
20
+ ]));
21
+ }
22
+ export function indexSemanticFactRevisionInputs(inputs) {
23
+ const result = new Map();
24
+ for (const input of inputs) {
25
+ const revision = {
26
+ key: String(input.key),
27
+ kind: String(input.kind),
28
+ source_ref: String(input.source_ref),
29
+ sha256: String(input.sha256),
30
+ };
31
+ const factRefs = Array.isArray(input.fact_refs) ? input.fact_refs : [];
32
+ for (const factRef of factRefs) {
33
+ const key = String(factRef);
34
+ const rows = result.get(key) ?? [];
35
+ rows.push(revision);
36
+ result.set(key, rows);
37
+ }
38
+ }
39
+ for (const rows of result.values())
40
+ rows.sort((left, right) => left.key.localeCompare(right.key));
41
+ return result;
42
+ }
43
+ export function semanticFactRevisionDigest(fact, inputRevisionsByFact) {
44
+ const { key: _key, ...meaning } = fact;
45
+ return sha256Hex(canonicalValueJson({
46
+ meaning: normalizeLocatedValues(meaning),
47
+ input_revisions: inputRevisionsByFact.get(String(fact.key)) ?? [],
48
+ }));
49
+ }
50
+ export function semanticObligationRevisionDigest(obligation, factRevisionDigest) {
51
+ const { key: _key, ...meaning } = obligation;
52
+ return sha256Hex(canonicalValueJson({
53
+ meaning: normalizeLocatedValues(meaning),
54
+ fact_revision_digest: factRevisionDigest,
55
+ }));
56
+ }
57
+ export function legacySemanticFactRevisionDigest(fact) {
58
+ const { key: _key, ...meaning } = fact;
59
+ return sha256Hex(canonicalValueJson(normalizeLocatedValues(meaning)));
60
+ }
61
+ export function legacySemanticObligationRevisionDigest(obligation) {
62
+ const { key: _key, ...meaning } = obligation;
63
+ return sha256Hex(canonicalValueJson(normalizeLocatedValues(meaning)));
64
+ }
@@ -0,0 +1,23 @@
1
+ import { type SemanticFactManifestCollectionName, type SemanticFactManifestV1 } from "./semantic-fact-types.js";
2
+ import type { CompactSharedStructureTarget } from "./compact-shared-structures.js";
3
+ export { SEMANTIC_COMPACT_CAPACITY_FIELDS, validateSemanticCompactCapacity, validateSemanticCompactDeclaredMaximum, type SemanticCompactCapacityCounts, } from "./semantic-fact-compact-capacity.js";
4
+ export { indexSemanticFactRevisionInputs, legacySemanticFactRevisionDigest, legacySemanticObligationRevisionDigest, semanticFactRevisionDigest, semanticObligationRevisionDigest, type SemanticFactRevisionInput, } from "./semantic-fact-compact-revision.js";
5
+ export declare const SEMANTIC_COMPACT_CATALOG_COLLECTIONS: readonly ["inputs", "family_dispositions", "subjects", "relations", "populations", "axis_dispositions", "condition_rules", "conditions", "condition_exclusions", "property_dispositions", "fact_cells", "oracles", "environments", "blockers"];
6
+ export type SemanticCompactCatalogs = Record<(typeof SEMANTIC_COMPACT_CATALOG_COLLECTIONS)[number], unknown[]>;
7
+ export declare function resolveSemanticCompactSelectors(value: unknown, selectors: Map<string, string[]>, label: string): unknown;
8
+ export declare function plainSemanticCompactObject(value: unknown, label: string): Record<string, unknown>;
9
+ export declare function assertUniqueSemanticCompactKeys(rows: unknown[], label: string): void;
10
+ export declare function emptySemanticCompactCollectionRows(catalogs: Record<(typeof SEMANTIC_COMPACT_CATALOG_COLLECTIONS)[number], unknown[]>, facts: Array<{
11
+ fact: Record<string, unknown>;
12
+ }>, obligations: Array<{
13
+ proof: Record<string, unknown>;
14
+ }>): Record<SemanticFactManifestCollectionName, Array<{
15
+ key: string;
16
+ }>>;
17
+ export declare function semanticCompactCollectionRows(manifest: SemanticFactManifestV1): Record<SemanticFactManifestCollectionName, Array<{
18
+ key: string;
19
+ }>>;
20
+ export declare function semanticCompactGeneration(rows: Record<SemanticFactManifestCollectionName, Array<{
21
+ key: string;
22
+ }>>): SemanticFactManifestV1["generation"];
23
+ export declare function semanticCompactSharedStructureTargets(root: Record<string, unknown>): CompactSharedStructureTarget[];
@@ -0,0 +1,159 @@
1
+ import { SEMANTIC_FACT_MANIFEST_COLLECTIONS, } from "./semantic-fact-types.js";
2
+ import { semanticFactCollectionIdentity } from "./semantic-fact-policy.js";
3
+ import { semanticFail, semanticStableRef, } from "./semantic-fact-shape-primitives.js";
4
+ export { SEMANTIC_COMPACT_CAPACITY_FIELDS, validateSemanticCompactCapacity, validateSemanticCompactDeclaredMaximum, } from "./semantic-fact-compact-capacity.js";
5
+ export { indexSemanticFactRevisionInputs, legacySemanticFactRevisionDigest, legacySemanticObligationRevisionDigest, semanticFactRevisionDigest, semanticObligationRevisionDigest, } from "./semantic-fact-compact-revision.js";
6
+ export const SEMANTIC_COMPACT_CATALOG_COLLECTIONS = [
7
+ "inputs",
8
+ "family_dispositions",
9
+ "subjects",
10
+ "relations",
11
+ "populations",
12
+ "axis_dispositions",
13
+ "condition_rules",
14
+ "conditions",
15
+ "condition_exclusions",
16
+ "property_dispositions",
17
+ "fact_cells",
18
+ "oracles",
19
+ "environments",
20
+ "blockers",
21
+ ];
22
+ export function resolveSemanticCompactSelectors(value, selectors, label) {
23
+ if (Array.isArray(value))
24
+ return value.map((item, index) => resolveSemanticCompactSelectors(item, selectors, `${label}[${index}]`));
25
+ if (!value || typeof value !== "object")
26
+ return value;
27
+ const row = value;
28
+ if (Object.keys(row).length === 1 && Object.hasOwn(row, "selector_ref")) {
29
+ const selectorRef = semanticStableRef(row.selector_ref, `${label}.selector_ref`);
30
+ const members = selectors.get(selectorRef);
31
+ if (!members)
32
+ semanticFail(`${label}.selector_ref`, `unknown selector: ${selectorRef}`);
33
+ return [...members];
34
+ }
35
+ if (Object.hasOwn(row, "selector_ref"))
36
+ semanticFail(label, "selector_ref must be the only key in its object");
37
+ return Object.fromEntries(Object.entries(row).map(([key, item]) => [
38
+ key,
39
+ resolveSemanticCompactSelectors(item, selectors, `${label}.${key}`),
40
+ ]));
41
+ }
42
+ export function plainSemanticCompactObject(value, label) {
43
+ if (!value || typeof value !== "object" || Array.isArray(value))
44
+ semanticFail(label, "must be an object");
45
+ return value;
46
+ }
47
+ export function assertUniqueSemanticCompactKeys(rows, label) {
48
+ const seen = new Set();
49
+ for (const [index, keyValue] of rows.entries()) {
50
+ const key = semanticStableRef(keyValue, `${label}[${index}].key`);
51
+ if (seen.has(key))
52
+ semanticFail(label, `duplicate key: ${key}`);
53
+ seen.add(key);
54
+ }
55
+ }
56
+ export function emptySemanticCompactCollectionRows(catalogs, facts, obligations) {
57
+ return {
58
+ ...Object.fromEntries(SEMANTIC_COMPACT_CATALOG_COLLECTIONS.map((name) => [
59
+ name,
60
+ catalogs[name],
61
+ ])),
62
+ inspector_census: [],
63
+ facts: facts.map((item) => item.fact),
64
+ proof_obligations: obligations.map((item) => item.proof),
65
+ };
66
+ }
67
+ export function semanticCompactCollectionRows(manifest) {
68
+ return {
69
+ inputs: manifest.inputs,
70
+ inspector_census: manifest.inspector.census,
71
+ family_dispositions: manifest.family_dispositions,
72
+ subjects: manifest.subjects,
73
+ relations: manifest.relations,
74
+ populations: manifest.populations,
75
+ axis_dispositions: manifest.axis_dispositions,
76
+ condition_rules: manifest.condition_rules,
77
+ conditions: manifest.conditions,
78
+ condition_exclusions: manifest.condition_exclusions,
79
+ property_dispositions: manifest.property_dispositions,
80
+ fact_cells: manifest.fact_cells,
81
+ facts: manifest.facts,
82
+ proof_obligations: manifest.proof_obligations,
83
+ oracles: manifest.oracles,
84
+ environments: manifest.environments,
85
+ blockers: manifest.blockers,
86
+ };
87
+ }
88
+ export function semanticCompactGeneration(rows) {
89
+ return {
90
+ strategy: "complete_explicit",
91
+ sampling: "forbidden",
92
+ truncation: "forbidden",
93
+ chunk_count: 1,
94
+ chunk_indexes: [0],
95
+ collections: SEMANTIC_FACT_MANIFEST_COLLECTIONS.map((name) => ({
96
+ name,
97
+ expected_count: rows[name].length,
98
+ identity_sha256: semanticFactCollectionIdentity(rows[name]),
99
+ })),
100
+ };
101
+ }
102
+ export function semanticCompactSharedStructureTargets(root) {
103
+ const targets = [];
104
+ addObjectFieldTargets(targets, root.scope, "source.scope");
105
+ addObjectFieldTargets(targets, root.inspector, "source.inspector");
106
+ const catalogs = plainRecord(root.catalogs);
107
+ for (const name of SEMANTIC_COMPACT_CATALOG_COLLECTIONS)
108
+ addCompactTableTargets(targets, catalogs?.[name], `source.catalog.${name}`);
109
+ if (Array.isArray(root.fact_sets))
110
+ for (const factSet of root.fact_sets)
111
+ addCompactTableTargets(targets, factSet, "source.fact");
112
+ if (Array.isArray(root.proof_templates))
113
+ for (const template of root.proof_templates) {
114
+ const row = plainRecord(template);
115
+ if (row && Object.hasOwn(row, "proof"))
116
+ addTarget(targets, row, "proof", "source.proof.policy");
117
+ }
118
+ addCompactTableTargets(targets, root.obligations, "source.obligation");
119
+ return targets;
120
+ }
121
+ function addCompactTableTargets(targets, value, boundary) {
122
+ const table = plainRecord(value);
123
+ if (!table || !Array.isArray(table.columns) || !Array.isArray(table.rows))
124
+ return;
125
+ const columns = table.columns.map(String);
126
+ addObjectFieldTargets(targets, table.defaults, `${boundary}.default`);
127
+ for (const rowValue of table.rows) {
128
+ if (!Array.isArray(rowValue) || rowValue.length !== columns.length)
129
+ continue;
130
+ for (const [index, column] of columns.entries())
131
+ if (isComposite(rowValue[index]))
132
+ addTarget(targets, rowValue, index, `${boundary}.${column}`);
133
+ }
134
+ }
135
+ function addObjectFieldTargets(targets, value, boundary) {
136
+ const row = plainRecord(value);
137
+ if (!row)
138
+ return;
139
+ for (const key of Object.keys(row))
140
+ if (isComposite(row[key]))
141
+ addTarget(targets, row, key, `${boundary}.${key}`);
142
+ }
143
+ function addTarget(targets, parent, key, boundary) {
144
+ targets.push({
145
+ boundary,
146
+ read: () => parent[key],
147
+ write: (value) => {
148
+ parent[key] = value;
149
+ },
150
+ });
151
+ }
152
+ function plainRecord(value) {
153
+ return value && typeof value === "object" && !Array.isArray(value)
154
+ ? value
155
+ : null;
156
+ }
157
+ function isComposite(value) {
158
+ return Boolean(value && typeof value === "object");
159
+ }
@@ -1,2 +1,3 @@
1
1
  import type { SemanticFactManifestV1 } from "./semantic-fact-types.js";
2
2
  export declare function validateSemanticFactInspectorCensus(manifest: SemanticFactManifestV1): void;
3
+ export declare function buildSemanticFactInspectorCensus(manifest: SemanticFactManifestV1): SemanticFactManifestV1["inspector"]["census"];
@@ -32,6 +32,49 @@ export function validateSemanticFactInspectorCensus(manifest) {
32
32
  }
33
33
  assertSameSemanticFactSet([...actual], [...expected.keys()], "inspector_census_universe");
34
34
  }
35
+ export function buildSemanticFactInspectorCensus(manifest) {
36
+ const factsFor = (predicate) => manifest.facts.filter(predicate).map((item) => item.key);
37
+ return [...expectedCensusRows(manifest, factsFor).entries()].map(([identity, expectation]) => {
38
+ const separator = identity.indexOf(":");
39
+ const kind = identity.slice(0, separator);
40
+ const key = identity.slice(separator + 1);
41
+ const basisRefs = censusBasisRefs(kind, expectation.row, expectation.fact_refs, manifest);
42
+ return {
43
+ key,
44
+ kind,
45
+ locator: {
46
+ material_ref: manifest.key,
47
+ kind: "manifest_pointer",
48
+ value: expectation.pointer,
49
+ },
50
+ identity_sha256: sha256Hex(canonicalValueJson(expectation.row)),
51
+ disposition: expectation.fact_refs.length
52
+ ? "material_with_facts"
53
+ : "supporting_only",
54
+ fact_refs: expectation.fact_refs,
55
+ basis_refs: basisRefs,
56
+ rationale: expectation.fact_refs.length
57
+ ? "This census identity contributes to an exact semantic Fact."
58
+ : "This identity is explicitly inventoried as supporting or inapplicable.",
59
+ };
60
+ });
61
+ }
62
+ function censusBasisRefs(kind, row, factRefs, manifest) {
63
+ if (row && typeof row === "object" && !Array.isArray(row)) {
64
+ const record = row;
65
+ for (const field of ["basis_refs", "source_item_refs"])
66
+ if (Array.isArray(record[field]) &&
67
+ record[field].every((item) => typeof item === "string") &&
68
+ record[field].length)
69
+ return [...record[field]];
70
+ }
71
+ if (kind === "proof_obligation" && factRefs.length) {
72
+ const fact = manifest.facts.find((item) => item.key === factRefs[0]);
73
+ if (fact?.source_item_refs.length)
74
+ return [...fact.source_item_refs];
75
+ }
76
+ return [manifest.scope.source_item_refs[0]];
77
+ }
35
78
  function expectedCensusRows(manifest, factsFor) {
36
79
  const result = new Map();
37
80
  const add = (kind, key, pointer, row, factRefs) => result.set(`${kind}:${key}`, {
@@ -31,7 +31,7 @@ export declare function parseSemanticFactProofObligations(value: unknown, label:
31
31
  method: string;
32
32
  authority: "external_confirmation" | "machine";
33
33
  proof_surface: "api_contract" | "data_state" | "implementation_structure" | "population_coverage" | "runtime_behavior" | "security_boundary" | "ui_browser";
34
- evidence_capabilities: ("boundary_invocation" | "cross_surface_consistency" | "design_conformance" | "design_method" | "durable_readback" | "external_side_effect" | "failure_injection" | "input_variation" | "interaction_trace" | "presence" | "semantic_fact" | "state_delta" | "target_runtime" | "visual_render")[];
34
+ evidence_capabilities: ("boundary_invocation" | "cross_surface_consistency" | "design_conformance" | "design_method" | "design_symbolic_certificate" | "durable_readback" | "external_side_effect" | "failure_injection" | "input_variation" | "interaction_trace" | "presence" | "semantic_fact" | "state_delta" | "target_runtime" | "visual_render")[];
35
35
  comparison: {
36
36
  comparator: string;
37
37
  mode: "exact" | "tolerance";
@@ -5,7 +5,7 @@ export declare function parseSemanticFactPropertyDispositions(value: unknown, la
5
5
  standard: boolean;
6
6
  value_kind: "boolean" | "custom" | "decision_table" | "digest" | "duration" | "enum" | "formula" | "number" | "object" | "ordered_list" | "range" | "rate" | "ratio" | "relation" | "schema" | "set" | "string" | "timestamp" | "trace";
7
7
  required_methods: string[];
8
- required_evidence_capabilities: ("boundary_invocation" | "cross_surface_consistency" | "design_conformance" | "design_method" | "durable_readback" | "external_side_effect" | "failure_injection" | "input_variation" | "interaction_trace" | "presence" | "semantic_fact" | "state_delta" | "target_runtime" | "visual_render")[];
8
+ required_evidence_capabilities: ("boundary_invocation" | "cross_surface_consistency" | "design_conformance" | "design_method" | "design_symbolic_certificate" | "durable_readback" | "external_side_effect" | "failure_injection" | "input_variation" | "interaction_trace" | "presence" | "semantic_fact" | "state_delta" | "target_runtime" | "visual_render")[];
9
9
  applicable_unit_refs: string[];
10
10
  not_applicable_unit_refs: string[];
11
11
  decision_required_unit_refs: string[];
@@ -1,9 +1,14 @@
1
+ import { type SemanticFactRevisionIdentityV1 } from "./semantic-fact-compact-carrier.js";
1
2
  import type { SemanticFactManifestV1 } from "./semantic-fact-types.js";
2
3
  export interface ParsedSemanticFactManifestV1 {
3
4
  source_path: string;
4
5
  line: number;
5
6
  manifest: SemanticFactManifestV1;
6
7
  sha256: string;
8
+ carrier: "expanded_v1" | "compact_v1";
9
+ fact_revisions: SemanticFactRevisionIdentityV1[];
10
+ obligation_revisions: SemanticFactRevisionIdentityV1[];
7
11
  }
8
12
  export declare function parseSemanticFactManifestBlocks(sourcePath: string, content: string): ParsedSemanticFactManifestV1[];
13
+ export declare function parseSemanticFactManifestBlocksForMigration(sourcePath: string, content: string): ParsedSemanticFactManifestV1[];
9
14
  export declare function loadSemanticFactManifest(repository: string, sourcePaths: string[]): Promise<ParsedSemanticFactManifestV1>;
@@ -1,37 +1,78 @@
1
1
  import { readFile } from "node:fs/promises";
2
2
  import path from "node:path";
3
3
  import { assertProtectedRepositoryFile } from "./long-task-protected-files.js";
4
+ import { indexSemanticFactRevisionInputs, parseSemanticFactCompactCarrierForMigration, parseSemanticFactCompactCarrierShape, semanticFactRevisionDigest, semanticObligationRevisionDigest, } from "./semantic-fact-compact-carrier.js";
4
5
  import { parseSemanticFactManifestShape } from "./semantic-fact-manifest-shape.js";
5
6
  import { canonicalValueJson, parseStrictYaml, sha256Hex, } from "./strict-codec.js";
6
- const START = /^\s*```yaml[ \t]+semantic-fact-manifest-v1[ \t]*$/u;
7
+ const START = /^\s*```yaml[ \t]+(semantic-fact-manifest-v1|semantic-fact-compact-carrier-v1)[ \t]*$/u;
7
8
  const END = /^\s*```[ \t]*$/u;
8
9
  export function parseSemanticFactManifestBlocks(sourcePath, content) {
10
+ return parseSemanticFactManifestBlocksWithMode(sourcePath, content, false);
11
+ }
12
+ export function parseSemanticFactManifestBlocksForMigration(sourcePath, content) {
13
+ return parseSemanticFactManifestBlocksWithMode(sourcePath, content, true);
14
+ }
15
+ function parseSemanticFactManifestBlocksWithMode(sourcePath, content, allowLegacyRevisionIdentity) {
9
16
  const rows = [];
10
17
  const lines = content.replace(/\r\n?/gu, "\n").split("\n");
11
18
  let open = null;
12
19
  for (const [index, line] of lines.entries()) {
13
20
  if (!open) {
14
- if (START.test(line))
15
- open = { line: index + 1, lines: [] };
21
+ const match = START.exec(line);
22
+ if (match)
23
+ open = { line: index + 1, lines: [], kind: match[1] };
16
24
  continue;
17
25
  }
18
26
  if (!END.test(line)) {
19
27
  open.lines.push(line);
20
28
  continue;
21
29
  }
22
- const manifest = parseSemanticFactManifestShape(parseStrictYaml(open.lines.join("\n")));
30
+ const decoded = parseStrictYaml(open.lines.join("\n"));
31
+ const compact = open.kind === "semantic-fact-compact-carrier-v1";
32
+ const materialized = compact
33
+ ? allowLegacyRevisionIdentity
34
+ ? parseSemanticFactCompactCarrierForMigration(decoded)
35
+ : parseSemanticFactCompactCarrierShape(decoded)
36
+ : null;
37
+ const manifest = materialized
38
+ ? materialized.manifest
39
+ : parseSemanticFactManifestShape(decoded);
40
+ const expandedRevisions = materialized
41
+ ? null
42
+ : semanticFactRevisionIdentities(manifest);
23
43
  rows.push({
24
44
  source_path: sourcePath,
25
45
  line: open.line,
26
46
  manifest,
27
- sha256: sha256Hex(canonicalValueJson(manifest)),
47
+ sha256: sha256Hex(canonicalValueJson(compact ? decoded : manifest)),
48
+ carrier: compact ? "compact_v1" : "expanded_v1",
49
+ fact_revisions: materialized?.fact_revisions ?? expandedRevisions.facts,
50
+ obligation_revisions: materialized?.obligation_revisions ?? expandedRevisions.obligations,
28
51
  });
29
52
  open = null;
30
53
  }
31
54
  if (open)
32
- throw new Error(`source_formal_block_unclosed:${sourcePath}:semantic-fact-manifest-v1:${open.line}`);
55
+ throw new Error(`source_formal_block_unclosed:${sourcePath}:${open.kind}:${open.line}`);
33
56
  return rows;
34
57
  }
58
+ function semanticFactRevisionIdentities(manifest) {
59
+ const inputRevisionsByFact = indexSemanticFactRevisionInputs(manifest.inputs);
60
+ const facts = manifest.facts.map((fact) => ({
61
+ key: fact.key,
62
+ revision_digest: semanticFactRevisionDigest(fact, inputRevisionsByFact),
63
+ }));
64
+ const factRevisionByKey = new Map(facts.map((item) => [item.key, item.revision_digest]));
65
+ const obligations = manifest.proof_obligations.map((proof) => {
66
+ const factRevision = factRevisionByKey.get(proof.fact_ref);
67
+ if (!factRevision)
68
+ throw new Error(`semantic_fact_revision_unknown_fact:${proof.key}:${proof.fact_ref}`);
69
+ return {
70
+ key: proof.key,
71
+ revision_digest: semanticObligationRevisionDigest(proof, factRevision),
72
+ };
73
+ });
74
+ return { facts, obligations };
75
+ }
35
76
  export async function loadSemanticFactManifest(repository, sourcePaths) {
36
77
  const rows = [];
37
78
  for (const [index, sourcePath] of sourcePaths.entries()) {