project-tiny-context-harness 0.8.10 → 0.8.12

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 (279) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +490 -472
  3. package/assets/README.md +762 -749
  4. package/assets/README.zh-CN.md +446 -431
  5. package/assets/agents/.gitkeep +1 -1
  6. package/assets/agents/AGENTS_CORE.md +17 -23
  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 +64 -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 +52 -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 +119 -119
  30. package/assets/skills/design-resource-authoring/references/resource-selection.md +158 -181
  31. package/assets/skills/design-system-authoring/SKILL.md +57 -57
  32. package/assets/skills/design-system-authoring/agents/openai.yaml +6 -6
  33. package/assets/skills/design-system-authoring/references/authority-adoption.md +48 -48
  34. package/assets/skills/design-system-authoring/references/open-design-design-system-provider.md +110 -110
  35. package/assets/skills/long-task-workflow/SKILL.md +71 -106
  36. package/assets/skills/long-task-workflow/agents/openai.yaml +1 -1
  37. package/assets/skills/long-task-workflow/references/authority-lifecycle.md +71 -69
  38. package/assets/skills/long-task-workflow/references/contract-authoring.md +98 -94
  39. package/assets/skills/long-task-workflow/references/evidence-design.md +67 -63
  40. package/assets/skills/long-task-workflow/references/source-authoring.md +90 -90
  41. package/assets/tools/validate_context.py +442 -442
  42. package/dist/commands/design-resource.js +9 -2
  43. package/dist/commands/enable.js +2 -0
  44. package/dist/commands/index.js +1 -1
  45. package/dist/commands/long-task-revision.js +8 -7
  46. package/dist/commands/sync.js +2 -0
  47. package/dist/index.d.ts +3 -4
  48. package/dist/index.js +2 -1
  49. package/dist/lib/compact-authoring-support.d.ts +22 -0
  50. package/dist/lib/compact-authoring-support.js +143 -0
  51. package/dist/lib/compact-shared-structure-authoring.d.ts +5 -0
  52. package/dist/lib/compact-shared-structure-authoring.js +9 -0
  53. package/dist/lib/compact-shared-structure-types.d.ts +61 -0
  54. package/dist/lib/compact-shared-structure-types.js +1 -0
  55. package/dist/lib/compact-shared-structure-validation.d.ts +2 -0
  56. package/dist/lib/compact-shared-structure-validation.js +159 -0
  57. package/dist/lib/compact-shared-structures.d.ts +3 -0
  58. package/dist/lib/compact-shared-structures.js +204 -0
  59. package/dist/lib/design-resource-fact-enums.d.ts +4 -0
  60. package/dist/lib/design-resource-fact-enums.js +12 -0
  61. package/dist/lib/design-resource-fact-manifest-shape-evidence.js +2 -2
  62. package/dist/lib/design-resource-fact-manifest-validation.d.ts +2 -1
  63. package/dist/lib/design-resource-fact-policy.d.ts +2 -2
  64. package/dist/lib/design-resource-fact-types.d.ts +2 -2
  65. package/dist/lib/design-resource-handoff-bundle-draft.d.ts +11 -0
  66. package/dist/lib/design-resource-handoff-bundle-draft.js +40 -0
  67. package/dist/lib/design-resource-handoff-bundle.js +4 -28
  68. package/dist/lib/design-resource-handoff-input-types.d.ts +14 -0
  69. package/dist/lib/design-resource-handoff-input-types.js +1 -0
  70. package/dist/lib/design-resource-handoff-manifest-projection.d.ts +2 -1
  71. package/dist/lib/design-resource-handoff-parser.d.ts +2 -2
  72. package/dist/lib/design-resource-handoff-parser.js +2 -2
  73. package/dist/lib/design-resource-handoff-shape.d.ts +4 -1
  74. package/dist/lib/design-resource-handoff-shape.js +10 -0
  75. package/dist/lib/design-resource-handoff-snapshot.d.ts +1 -1
  76. package/dist/lib/design-resource-handoff-snapshot.js +4 -0
  77. package/dist/lib/design-resource-handoff-types.d.ts +0 -10
  78. package/dist/lib/design-resource-handoff-validation.d.ts +6 -2
  79. package/dist/lib/design-resource-handoff-validation.js +11 -0
  80. package/dist/lib/design-resource-handoff-web-dependency-validation.d.ts +4 -2
  81. package/dist/lib/design-resource-symbolic-applicability-authority.d.ts +7 -0
  82. package/dist/lib/design-resource-symbolic-applicability-authority.js +19 -0
  83. package/dist/lib/design-resource-symbolic-applicability-policy.d.ts +12 -0
  84. package/dist/lib/design-resource-symbolic-applicability-policy.js +79 -0
  85. package/dist/lib/design-resource-symbolic-applicability-profiles.d.ts +8 -0
  86. package/dist/lib/design-resource-symbolic-applicability-profiles.js +55 -0
  87. package/dist/lib/design-resource-symbolic-applicability-shape.d.ts +2 -0
  88. package/dist/lib/design-resource-symbolic-applicability-shape.js +76 -0
  89. package/dist/lib/design-resource-symbolic-applicability-validation.d.ts +7 -0
  90. package/dist/lib/design-resource-symbolic-applicability-validation.js +128 -0
  91. package/dist/lib/design-resource-symbolic-compilation.d.ts +3 -0
  92. package/dist/lib/design-resource-symbolic-compilation.js +13 -0
  93. package/dist/lib/design-resource-symbolic-denotation.d.ts +3 -0
  94. package/dist/lib/design-resource-symbolic-denotation.js +167 -0
  95. package/dist/lib/design-resource-symbolic-disposition-validation.d.ts +4 -0
  96. package/dist/lib/design-resource-symbolic-disposition-validation.js +28 -0
  97. package/dist/lib/design-resource-symbolic-fact-policy.d.ts +12 -0
  98. package/dist/lib/design-resource-symbolic-fact-policy.js +12 -0
  99. package/dist/lib/design-resource-symbolic-fact-shape.d.ts +3 -0
  100. package/dist/lib/design-resource-symbolic-fact-shape.js +138 -0
  101. package/dist/lib/design-resource-symbolic-fact-types.d.ts +213 -0
  102. package/dist/lib/design-resource-symbolic-fact-types.js +1 -0
  103. package/dist/lib/design-resource-symbolic-fact-validation.d.ts +3 -0
  104. package/dist/lib/design-resource-symbolic-fact-validation.js +86 -0
  105. package/dist/lib/design-resource-symbolic-indexes.d.ts +23 -0
  106. package/dist/lib/design-resource-symbolic-indexes.js +54 -0
  107. package/dist/lib/design-resource-symbolic-manifest-shape.d.ts +3 -0
  108. package/dist/lib/design-resource-symbolic-manifest-shape.js +155 -0
  109. package/dist/lib/design-resource-symbolic-manifest-validation.d.ts +6 -0
  110. package/dist/lib/design-resource-symbolic-manifest-validation.js +132 -0
  111. package/dist/lib/design-resource-symbolic-noninterference-artifact.d.ts +33 -0
  112. package/dist/lib/design-resource-symbolic-noninterference-artifact.js +110 -0
  113. package/dist/lib/design-resource-symbolic-noninterference-equivalence.d.ts +3 -0
  114. package/dist/lib/design-resource-symbolic-noninterference-equivalence.js +77 -0
  115. package/dist/lib/design-resource-symbolic-noninterference-recompute.d.ts +4 -0
  116. package/dist/lib/design-resource-symbolic-noninterference-recompute.js +146 -0
  117. package/dist/lib/design-resource-symbolic-noninterference-scope.d.ts +7 -0
  118. package/dist/lib/design-resource-symbolic-noninterference-scope.js +49 -0
  119. package/dist/lib/design-resource-symbolic-noninterference-shape.d.ts +2 -0
  120. package/dist/lib/design-resource-symbolic-noninterference-shape.js +152 -0
  121. package/dist/lib/design-resource-symbolic-noninterference-types.d.ts +103 -0
  122. package/dist/lib/design-resource-symbolic-noninterference-types.js +1 -0
  123. package/dist/lib/design-resource-symbolic-noninterference-validation.d.ts +5 -0
  124. package/dist/lib/design-resource-symbolic-noninterference-validation.js +62 -0
  125. package/dist/lib/design-resource-symbolic-oracle-fingerprint.d.ts +1 -0
  126. package/dist/lib/design-resource-symbolic-oracle-fingerprint.js +47 -0
  127. package/dist/lib/design-resource-symbolic-predicate-shape.d.ts +6 -0
  128. package/dist/lib/design-resource-symbolic-predicate-shape.js +123 -0
  129. package/dist/lib/design-resource-symbolic-production-closure.d.ts +4 -0
  130. package/dist/lib/design-resource-symbolic-production-closure.js +144 -0
  131. package/dist/lib/design-resource-symbolic-proof-authority-validation.d.ts +10 -0
  132. package/dist/lib/design-resource-symbolic-proof-authority-validation.js +68 -0
  133. package/dist/lib/design-resource-symbolic-proof-validation.d.ts +10 -0
  134. package/dist/lib/design-resource-symbolic-proof-validation.js +89 -0
  135. package/dist/lib/design-resource-symbolic-region-validation.d.ts +19 -0
  136. package/dist/lib/design-resource-symbolic-region-validation.js +146 -0
  137. package/dist/lib/design-resource-symbolic-resource-validation.d.ts +5 -0
  138. package/dist/lib/design-resource-symbolic-resource-validation.js +90 -0
  139. package/dist/lib/design-resource-symbolic-rule-shape.d.ts +27 -0
  140. package/dist/lib/design-resource-symbolic-rule-shape.js +158 -0
  141. package/dist/lib/design-resource-symbolic-safety-validation.d.ts +6 -0
  142. package/dist/lib/design-resource-symbolic-safety-validation.js +29 -0
  143. package/dist/lib/design-resource-symbolic-source-ir-evaluation.d.ts +19 -0
  144. package/dist/lib/design-resource-symbolic-source-ir-evaluation.js +74 -0
  145. package/dist/lib/design-resource-symbolic-source-ir-evidence.d.ts +44 -0
  146. package/dist/lib/design-resource-symbolic-source-ir-evidence.js +88 -0
  147. package/dist/lib/design-resource-symbolic-source-ir-oracle.d.ts +13 -0
  148. package/dist/lib/design-resource-symbolic-source-ir-oracle.js +96 -0
  149. package/dist/lib/design-resource-symbolic-source-ir-proof.d.ts +14 -0
  150. package/dist/lib/design-resource-symbolic-source-ir-proof.js +98 -0
  151. package/dist/lib/design-resource-symbolic-source-ir-shape.d.ts +2 -0
  152. package/dist/lib/design-resource-symbolic-source-ir-shape.js +38 -0
  153. package/dist/lib/design-resource-symbolic-source-ir-types.d.ts +17 -0
  154. package/dist/lib/design-resource-symbolic-source-ir-types.js +2 -0
  155. package/dist/lib/design-resource-symbolic-static-dependency-validation.d.ts +2 -0
  156. package/dist/lib/design-resource-symbolic-static-dependency-validation.js +83 -0
  157. package/dist/lib/design-resource-symbolic-structural-closure-validation.d.ts +6 -0
  158. package/dist/lib/design-resource-symbolic-structural-closure-validation.js +79 -0
  159. package/dist/lib/design-resource-symbolic-validation-support.d.ts +29 -0
  160. package/dist/lib/design-resource-symbolic-validation-support.js +111 -0
  161. package/dist/lib/design-resource-v1-capacity-header.d.ts +8 -0
  162. package/dist/lib/design-resource-v1-capacity-header.js +231 -0
  163. package/dist/lib/design-resource-v1-capacity.d.ts +5 -0
  164. package/dist/lib/design-resource-v1-capacity.js +45 -0
  165. package/dist/lib/init.js +1 -0
  166. package/dist/lib/long-task-activation-validation.js +2 -2
  167. package/dist/lib/long-task-authority-policy.d.ts +3 -0
  168. package/dist/lib/long-task-authority-policy.js +3 -0
  169. package/dist/lib/long-task-codex-agent-profile.d.ts +42 -0
  170. package/dist/lib/long-task-codex-agent-profile.js +276 -0
  171. package/dist/lib/long-task-compact-authoring-projections.d.ts +12 -0
  172. package/dist/lib/long-task-compact-authoring-projections.js +67 -0
  173. package/dist/lib/long-task-compact-authoring.d.ts +3 -0
  174. package/dist/lib/long-task-compact-authoring.js +173 -0
  175. package/dist/lib/long-task-compact-carrier.d.ts +7 -0
  176. package/dist/lib/long-task-compact-carrier.js +132 -0
  177. package/dist/lib/long-task-compact-parser.d.ts +14 -0
  178. package/dist/lib/long-task-compact-parser.js +123 -0
  179. package/dist/lib/long-task-compact-primitives.d.ts +22 -0
  180. package/dist/lib/long-task-compact-primitives.js +132 -0
  181. package/dist/lib/long-task-compact-projections.d.ts +4 -0
  182. package/dist/lib/long-task-compact-projections.js +153 -0
  183. package/dist/lib/long-task-compact-structure-targets.d.ts +2 -0
  184. package/dist/lib/long-task-compact-structure-targets.js +90 -0
  185. package/dist/lib/long-task-counterfactual-sandbox.d.ts +1 -1
  186. package/dist/lib/long-task-counterfactual-sandbox.js +7 -5
  187. package/dist/lib/long-task-delivery-parser.d.ts +1 -0
  188. package/dist/lib/long-task-delivery-parser.js +38 -6
  189. package/dist/lib/long-task-design-resource-handoff.d.ts +2 -1
  190. package/dist/lib/long-task-design-resource-handoff.js +71 -11
  191. package/dist/lib/long-task-design-resource-method-binding.d.ts +8 -1
  192. package/dist/lib/long-task-design-resource-method-binding.js +150 -0
  193. package/dist/lib/long-task-evidence-capability-codec.js +256 -34
  194. package/dist/lib/long-task-evidence-capability-policy.js +28 -0
  195. package/dist/lib/long-task-evidence-capability-runtime.js +271 -63
  196. package/dist/lib/long-task-evidence-capability-types.d.ts +70 -2
  197. package/dist/lib/long-task-evidence-v2.d.ts +1 -1
  198. package/dist/lib/long-task-evidence-v2.js +5 -5
  199. package/dist/lib/long-task-hook-install.d.ts +19 -2
  200. package/dist/lib/long-task-hook-install.js +288 -91
  201. package/dist/lib/long-task-playwright-capability-records.d.ts +2 -0
  202. package/dist/lib/long-task-playwright-capability-records.js +74 -2
  203. package/dist/lib/long-task-runner-freeze.d.ts +1 -1
  204. package/dist/lib/long-task-runner-freeze.js +4 -2
  205. package/dist/lib/long-task-semantic-contract-types.d.ts +1 -1
  206. package/dist/lib/long-task-semantic-fact-binding-types.d.ts +8 -0
  207. package/dist/lib/long-task-semantic-fact-closure.js +4 -1
  208. package/dist/lib/long-task-semantic-fact-contract-closure.d.ts +1 -1
  209. package/dist/lib/long-task-semantic-fact-contract-closure.js +15 -3
  210. package/dist/lib/long-task-semantic-fact-contract-facts.d.ts +1 -1
  211. package/dist/lib/long-task-semantic-fact-contract-facts.js +4 -1
  212. package/dist/lib/long-task-semantic-fact-contract-proofs.d.ts +1 -1
  213. package/dist/lib/long-task-semantic-fact-contract-proofs.js +12 -3
  214. package/dist/lib/long-task-semantic-fact-evidence.d.ts +5 -1
  215. package/dist/lib/long-task-semantic-fact-evidence.js +47 -4
  216. package/dist/lib/long-task-semantic-fact-shape.js +17 -6
  217. package/dist/lib/long-task-shape-primitives.d.ts +1 -1
  218. package/dist/lib/long-task-shape-primitives.js +1 -0
  219. package/dist/lib/long-task-source-item-parser.d.ts +2 -2
  220. package/dist/lib/long-task-source-item-parser.js +20 -11
  221. package/dist/lib/long-task-ui-design-policy.js +64 -4
  222. package/dist/lib/long-task-ui-surface-shape.js +195 -0
  223. package/dist/lib/long-task-ui-surface-types.d.ts +53 -0
  224. package/dist/lib/long-task-verifier-v2.js +1 -1
  225. package/dist/lib/long-task-worker-selection.d.ts +2 -0
  226. package/dist/lib/long-task-worker-selection.js +7 -0
  227. package/dist/lib/long-task-workspace-scope.js +3 -1
  228. package/dist/lib/long-task-workspace.js +11 -1
  229. package/dist/lib/migrations.js +58 -0
  230. package/dist/lib/profiles.js +0 -1
  231. package/dist/lib/semantic-fact-compact-authoring.d.ts +2 -0
  232. package/dist/lib/semantic-fact-compact-authoring.js +160 -0
  233. package/dist/lib/semantic-fact-compact-capacity.d.ts +9 -0
  234. package/dist/lib/semantic-fact-compact-capacity.js +40 -0
  235. package/dist/lib/semantic-fact-compact-carrier.d.ts +16 -0
  236. package/dist/lib/semantic-fact-compact-carrier.js +146 -0
  237. package/dist/lib/semantic-fact-compact-parser.d.ts +17 -0
  238. package/dist/lib/semantic-fact-compact-parser.js +168 -0
  239. package/dist/lib/semantic-fact-compact-revision.d.ts +11 -0
  240. package/dist/lib/semantic-fact-compact-revision.js +64 -0
  241. package/dist/lib/semantic-fact-compact-support.d.ts +23 -0
  242. package/dist/lib/semantic-fact-compact-support.js +159 -0
  243. package/dist/lib/semantic-fact-policy-census.d.ts +1 -0
  244. package/dist/lib/semantic-fact-policy-census.js +43 -0
  245. package/dist/lib/semantic-fact-proof-shape.d.ts +1 -1
  246. package/dist/lib/semantic-fact-property-shape.d.ts +1 -1
  247. package/dist/lib/semantic-fact-source-parser.d.ts +5 -0
  248. package/dist/lib/semantic-fact-source-parser.js +47 -6
  249. package/dist/lib/structural-closure-cost.d.ts +79 -0
  250. package/dist/lib/structural-closure-cost.js +91 -0
  251. package/dist/lib/symbolic-denotation-dag-builder.d.ts +25 -0
  252. package/dist/lib/symbolic-denotation-dag-builder.js +176 -0
  253. package/dist/lib/symbolic-denotation-domain-validation.d.ts +3 -0
  254. package/dist/lib/symbolic-denotation-domain-validation.js +56 -0
  255. package/dist/lib/symbolic-denotation-engine.d.ts +32 -0
  256. package/dist/lib/symbolic-denotation-engine.js +140 -0
  257. package/dist/lib/symbolic-denotation-public.d.ts +11 -0
  258. package/dist/lib/symbolic-denotation-public.js +12 -0
  259. package/dist/lib/symbolic-denotation-runtime.d.ts +20 -0
  260. package/dist/lib/symbolic-denotation-runtime.js +90 -0
  261. package/dist/lib/symbolic-denotation-support.d.ts +11 -0
  262. package/dist/lib/symbolic-denotation-support.js +49 -0
  263. package/dist/lib/symbolic-denotation-types.d.ts +133 -0
  264. package/dist/lib/symbolic-denotation-types.js +18 -0
  265. package/dist/lib/symbolic-denotation-validation.d.ts +6 -0
  266. package/dist/lib/symbolic-denotation-validation.js +126 -0
  267. package/dist/lib/sync-engine.d.ts +1 -0
  268. package/dist/lib/sync-engine.js +4 -1
  269. package/dist/lib/upgrade.js +1 -0
  270. package/dist/long-task-hook.js +40 -1
  271. package/dist/public-types.d.ts +8 -0
  272. package/dist/public-types.js +1 -0
  273. package/dist/schemas/design-resource-symbolic-noninterference-artifact-v2.schema.json +289 -0
  274. package/dist/schemas/design-resource-symbolic-source-ir-v1.schema.json +130 -0
  275. package/dist/schemas/long-task-delivery-v2/long-task-delivery-v2.schema.json +390 -5
  276. package/migrations/README.md +15 -15
  277. package/package.json +2 -2
  278. package/source-mappings.yaml +28 -25
  279. package/assets/skills/source-plan-authoring/SKILL.md +0 -14
@@ -0,0 +1,138 @@
1
+ import { parseDesignResourceHandoffResources } from "./design-resource-handoff-shape-structure.js";
2
+ import { contractKey, sourceItemKeys, stableKey, stableKeys, } from "./design-resource-handoff-shape-primitives.js";
3
+ import { array, literal, object, repositoryFile, string, strings, } from "./long-task-shape-primitives.js";
4
+ export { parseDesignResourceObservableRuleManifestJson, parseDesignResourceObservableRuleManifestShape, } from "./design-resource-symbolic-manifest-shape.js";
5
+ export function parseDesignResourceSymbolicHandoffShape(value) {
6
+ const label = "design_resource_handoff_v2";
7
+ const root = object(value, label, [
8
+ "schema_version",
9
+ "representation",
10
+ "intent",
11
+ "scope",
12
+ "provenance",
13
+ "resources",
14
+ "targets",
15
+ "coverage",
16
+ "proposal",
17
+ ]);
18
+ return {
19
+ schema_version: literal(root.schema_version, ["design-resource-handoff-v2"], `${label}.schema_version`),
20
+ representation: literal(root.representation, ["symbolic_rules_v2"], `${label}.representation`),
21
+ intent: literal(root.intent, ["implementation_handoff"], `${label}.intent`),
22
+ scope: parseScope(root.scope, label),
23
+ provenance: parseProvenance(root.provenance, label),
24
+ resources: parseDesignResourceHandoffResources(root.resources),
25
+ targets: parseTargets(root.targets, label),
26
+ coverage: parseCoverage(root.coverage, label),
27
+ proposal: parseProposal(root.proposal, label),
28
+ };
29
+ }
30
+ function parseScope(value, label) {
31
+ const row = object(value, `${label}.scope`, [
32
+ "key",
33
+ "style_dependency",
34
+ "surface_keys",
35
+ "necessary_context",
36
+ "exclusions",
37
+ ]);
38
+ return {
39
+ key: contractKey(row.key, `${label}.scope.key`),
40
+ style_dependency: literal(row.style_dependency, ["style-bearing", "non-fidelity", "mixed"], `${label}.scope.style_dependency`),
41
+ surface_keys: stableKeys(row.surface_keys, `${label}.scope.surface_keys`),
42
+ necessary_context: strings(row.necessary_context, `${label}.scope.necessary_context`),
43
+ exclusions: strings(row.exclusions, `${label}.scope.exclusions`),
44
+ };
45
+ }
46
+ function parseProvenance(value, label) {
47
+ const row = object(value, `${label}.provenance`, [
48
+ "provider",
49
+ "provider_version",
50
+ "project",
51
+ "run",
52
+ "capability",
53
+ "agent",
54
+ "model",
55
+ "design_system_id",
56
+ ]);
57
+ return {
58
+ provider: string(row.provider, `${label}.provenance.provider`),
59
+ provider_version: string(row.provider_version, `${label}.provenance.provider_version`),
60
+ project: string(row.project, `${label}.provenance.project`),
61
+ run: string(row.run, `${label}.provenance.run`),
62
+ capability: string(row.capability, `${label}.provenance.capability`),
63
+ agent: string(row.agent, `${label}.provenance.agent`),
64
+ model: string(row.model, `${label}.provenance.model`),
65
+ design_system_id: string(row.design_system_id, `${label}.provenance.design_system_id`),
66
+ };
67
+ }
68
+ function parseTargets(value, label) {
69
+ return array(value, `${label}.targets`).map((item, index) => {
70
+ const itemLabel = `${label}.targets[${index}]`;
71
+ const row = object(item, itemLabel, [
72
+ "key",
73
+ "interpretation",
74
+ "resource_refs",
75
+ "source_profile",
76
+ "selection_basis",
77
+ ]);
78
+ const profile = object(row.source_profile, `${itemLabel}.source_profile`, [
79
+ "kind",
80
+ "entry_resource_ref",
81
+ "dependency_resource_refs",
82
+ "fact_manifest_resource_ref",
83
+ "acquisition",
84
+ ]);
85
+ return {
86
+ key: contractKey(row.key, `${itemLabel}.key`),
87
+ interpretation: literal(row.interpretation, ["exact_target", "constraint"], `${itemLabel}.interpretation`),
88
+ resource_refs: stableKeys(row.resource_refs, `${itemLabel}.resource_refs`),
89
+ source_profile: {
90
+ kind: literal(profile.kind, ["implementation_web", "implementation_app", "reference"], `${itemLabel}.source_profile.kind`),
91
+ entry_resource_ref: stableKey(profile.entry_resource_ref, `${itemLabel}.source_profile.entry_resource_ref`),
92
+ dependency_resource_refs: stableKeys(profile.dependency_resource_refs, `${itemLabel}.source_profile.dependency_resource_refs`),
93
+ fact_manifest_resource_ref: stableKey(profile.fact_manifest_resource_ref, `${itemLabel}.source_profile.fact_manifest_resource_ref`),
94
+ acquisition: literal(profile.acquisition, ["complete"], `${itemLabel}.source_profile.acquisition`),
95
+ },
96
+ selection_basis: string(row.selection_basis, `${itemLabel}.selection_basis`),
97
+ };
98
+ });
99
+ }
100
+ function parseCoverage(value, label) {
101
+ return array(value, `${label}.coverage`).map((item, index) => {
102
+ const itemLabel = `${label}.coverage[${index}]`;
103
+ const row = object(item, itemLabel, [
104
+ "key",
105
+ "target_ref",
106
+ "subject_or_relation_refs",
107
+ "property_refs",
108
+ "fact_rule_refs",
109
+ "semantic_obligation_refs",
110
+ "certificate_refs",
111
+ "source_item_refs",
112
+ "rationale",
113
+ ]);
114
+ return {
115
+ key: stableKey(row.key, `${itemLabel}.key`),
116
+ target_ref: contractKey(row.target_ref, `${itemLabel}.target_ref`),
117
+ subject_or_relation_refs: stableKeys(row.subject_or_relation_refs, `${itemLabel}.subject_or_relation_refs`),
118
+ property_refs: stableKeys(row.property_refs, `${itemLabel}.property_refs`),
119
+ fact_rule_refs: stableKeys(row.fact_rule_refs, `${itemLabel}.fact_rule_refs`),
120
+ semantic_obligation_refs: stableKeys(row.semantic_obligation_refs, `${itemLabel}.semantic_obligation_refs`),
121
+ certificate_refs: stableKeys(row.certificate_refs, `${itemLabel}.certificate_refs`),
122
+ source_item_refs: sourceItemKeys(row.source_item_refs, `${itemLabel}.source_item_refs`),
123
+ rationale: string(row.rationale, `${itemLabel}.rationale`),
124
+ };
125
+ });
126
+ }
127
+ function parseProposal(value, label) {
128
+ const row = object(value, `${label}.proposal`, [
129
+ "reconciliation_status",
130
+ "path",
131
+ "revision",
132
+ ]);
133
+ return {
134
+ reconciliation_status: literal(row.reconciliation_status, ["applied", "returned", "not_applicable"], `${label}.proposal.reconciliation_status`),
135
+ path: repositoryFile(row.path, `${label}.proposal.path`),
136
+ revision: string(row.revision, `${label}.proposal.revision`),
137
+ };
138
+ }
@@ -0,0 +1,213 @@
1
+ import type { DesignResourceDesignSystemSnapshotV1, DesignResourceInspectorV1 } from "./design-resource-fact-manifest-model.js";
2
+ import type { DesignResourceEnvironmentV1, DesignResourceFactLineageV1, DesignResourceLocatedDigestV1, DesignResourceOracleV1, DesignResourcePropertyDefinitionV1 } from "./design-resource-fact-types.js";
3
+ import type { DesignResourceHandoffBlockerV1, DesignResourceHandoffResourceV1, DesignResourceHandoffSubjectV1, DesignResourceSourceProfileKind, DesignResourceVerificationMethod } from "./design-resource-handoff-types.js";
4
+ import type { CompiledSymbolicDenotationV1, SymbolicDenotationAxisDomain, SymbolicDenotationDisposition, SymbolicDenotationPredicate, SymbolicExtensionalPointV1 } from "./symbolic-denotation-types.js";
5
+ import type { DesignResourceSymbolicNoninterferenceCertificateV2 } from "./design-resource-symbolic-noninterference-types.js";
6
+ export type { DesignResourceSymbolicNoninterferenceArtifactV2, DesignResourceSymbolicNoninterferenceCertificateV2, DesignResourceSymbolicNoninterferenceDerivedResultV2, DesignResourceSymbolicNoninterferenceEquivalenceCaseV2, DesignResourceSymbolicNoninterferenceFailureWitnessV1, DesignResourceSymbolicNoninterferenceInputBindingV2, DesignResourceSymbolicNoninterferenceProofMethodV2, DesignResourceSymbolicNoninterferenceProofV2, DesignResourceSymbolicStaticDependencyNodeV2, DesignResourceSymbolicStaticDependencyRootV2, } from "./design-resource-symbolic-noninterference-types.js";
7
+ export interface DesignResourceSymbolicPopulationV2 {
8
+ key: string;
9
+ kind: "static" | "dynamic";
10
+ member_subject_refs: string[];
11
+ universe: DesignResourceLocatedDigestV1;
12
+ enumeration: "complete" | "symbolic_partition";
13
+ exclusions: Array<{
14
+ key: string;
15
+ region: SymbolicDenotationPredicate;
16
+ basis_refs: string[];
17
+ rationale: string;
18
+ }>;
19
+ quantifier: SymbolicExtensionalPointV1["quantifier"];
20
+ }
21
+ export interface DesignResourceSymbolicFactRuleV2 {
22
+ key: string;
23
+ subject_or_relation_ref: string;
24
+ target_ref: string;
25
+ property_ref: string;
26
+ population_ref: string | null;
27
+ quantifier: SymbolicExtensionalPointV1["quantifier"];
28
+ region: SymbolicDenotationPredicate;
29
+ expected: DesignResourceLocatedDigestV1;
30
+ value_kind: string;
31
+ provenance_ref: string;
32
+ observation_scope: "subject" | "full_target";
33
+ observation_sensitivity: "plain" | "protected";
34
+ lineage: DesignResourceFactLineageV1;
35
+ evidence_refs: string[];
36
+ census_refs: string[];
37
+ source_item_refs: string[];
38
+ semantic_obligation_refs: string[];
39
+ }
40
+ export interface DesignResourceSymbolicDispositionRegionV2 {
41
+ key: string;
42
+ subject_or_relation_ref: string;
43
+ target_ref: string;
44
+ property_ref: string;
45
+ population_ref: string | null;
46
+ quantifier: SymbolicExtensionalPointV1["quantifier"];
47
+ region: SymbolicDenotationPredicate;
48
+ disposition: Exclude<SymbolicDenotationDisposition, "specified">;
49
+ census_refs: string[];
50
+ source_item_refs: string[];
51
+ basis_refs: string[];
52
+ rationale: string;
53
+ }
54
+ export interface DesignResourceSymbolicProofObligationV2 {
55
+ key: string;
56
+ fact_rule_ref: string;
57
+ method: DesignResourceVerificationMethod;
58
+ region_sha256: string;
59
+ proof_surface: string;
60
+ observation_boundary: string;
61
+ comparison: {
62
+ comparator: string;
63
+ mode: "exact" | "tolerance";
64
+ parameters: DesignResourceLocatedDigestV1;
65
+ tolerance: DesignResourceLocatedDigestV1 | null;
66
+ mask: DesignResourceLocatedDigestV1 | null;
67
+ };
68
+ oracle_ref: string;
69
+ environment_ref: string;
70
+ protected_value_policy: string;
71
+ completion_effect: string;
72
+ }
73
+ export interface DesignResourceSymbolicDependencyEdgeV2 {
74
+ key: string;
75
+ axis_ref: string;
76
+ fact_rule_ref: string;
77
+ effects: Array<"disposition" | "expected_semantics" | "proof_denotation">;
78
+ }
79
+ export interface DesignResourceSymbolicSubjectProfileBindingV2 {
80
+ key: string;
81
+ subject_refs: string[];
82
+ profile_refs: string[];
83
+ census_refs: string[];
84
+ source_item_refs: string[];
85
+ basis_refs: string[];
86
+ rationale: string;
87
+ }
88
+ export interface DesignResourceSymbolicCustomPropertyClosureV2 {
89
+ property_ref: string;
90
+ applicable_subject_refs: string[];
91
+ census_refs: string[];
92
+ source_item_refs: string[];
93
+ basis_refs: string[];
94
+ rationale: string;
95
+ }
96
+ export interface DesignResourceSymbolicApplicabilityExceptionV2 {
97
+ key: string;
98
+ subject_ref: string;
99
+ property_ref: string;
100
+ disposition: "applicable" | "not_applicable";
101
+ census_refs: string[];
102
+ source_item_refs: string[];
103
+ basis_refs: string[];
104
+ rationale: string;
105
+ }
106
+ export interface DesignResourceSymbolicStructuralApplicabilityV2 {
107
+ profile_catalog: "package-subject-property-applicability-v1";
108
+ subject_profile_bindings: DesignResourceSymbolicSubjectProfileBindingV2[];
109
+ inspector_custom_property_closure: DesignResourceSymbolicCustomPropertyClosureV2[];
110
+ instance_exceptions: DesignResourceSymbolicApplicabilityExceptionV2[];
111
+ }
112
+ export interface DesignResourceObservableRuleManifestV2 {
113
+ schema_version: "design-resource-observable-rule-manifest-v2";
114
+ scope_key: string;
115
+ target_key: string;
116
+ inspector: DesignResourceInspectorV1;
117
+ design_system: DesignResourceDesignSystemSnapshotV1;
118
+ axis_domains: SymbolicDenotationAxisDomain[];
119
+ reachable_region: SymbolicDenotationPredicate;
120
+ subjects: DesignResourceHandoffSubjectV1[];
121
+ populations: DesignResourceSymbolicPopulationV2[];
122
+ properties: DesignResourcePropertyDefinitionV1[];
123
+ fact_rules: DesignResourceSymbolicFactRuleV2[];
124
+ disposition_regions: DesignResourceSymbolicDispositionRegionV2[];
125
+ semantic_proof_obligations: DesignResourceSymbolicProofObligationV2[];
126
+ dependency_edges: DesignResourceSymbolicDependencyEdgeV2[];
127
+ noninterference_certificates: DesignResourceSymbolicNoninterferenceCertificateV2[];
128
+ oracles: DesignResourceOracleV1[];
129
+ environments: DesignResourceEnvironmentV1[];
130
+ acceptance_blockers: DesignResourceHandoffBlockerV1[];
131
+ structural_applicability?: DesignResourceSymbolicStructuralApplicabilityV2;
132
+ }
133
+ export interface DesignResourceSymbolicHandoffTargetV2 {
134
+ key: string;
135
+ interpretation: "exact_target" | "constraint";
136
+ resource_refs: string[];
137
+ source_profile: {
138
+ kind: DesignResourceSourceProfileKind;
139
+ entry_resource_ref: string;
140
+ dependency_resource_refs: string[];
141
+ fact_manifest_resource_ref: string;
142
+ acquisition: "complete";
143
+ };
144
+ selection_basis: string;
145
+ }
146
+ export interface DesignResourceSymbolicHandoffCoverageV2 {
147
+ key: string;
148
+ target_ref: string;
149
+ subject_or_relation_refs: string[];
150
+ property_refs: string[];
151
+ fact_rule_refs: string[];
152
+ semantic_obligation_refs: string[];
153
+ certificate_refs: string[];
154
+ source_item_refs: string[];
155
+ rationale: string;
156
+ }
157
+ export interface DesignResourceHandoffV2 {
158
+ schema_version: "design-resource-handoff-v2";
159
+ representation: "symbolic_rules_v2";
160
+ intent: "implementation_handoff";
161
+ scope: {
162
+ key: string;
163
+ style_dependency: "style-bearing" | "non-fidelity" | "mixed";
164
+ surface_keys: string[];
165
+ necessary_context: string[];
166
+ exclusions: string[];
167
+ };
168
+ provenance: {
169
+ provider: string;
170
+ provider_version: string;
171
+ project: string;
172
+ run: string;
173
+ capability: string;
174
+ agent: string;
175
+ model: string;
176
+ design_system_id: string;
177
+ };
178
+ resources: DesignResourceHandoffResourceV1[];
179
+ targets: DesignResourceSymbolicHandoffTargetV2[];
180
+ coverage: DesignResourceSymbolicHandoffCoverageV2[];
181
+ proposal: {
182
+ reconciliation_status: "applied" | "returned" | "not_applicable";
183
+ path: string;
184
+ revision: string;
185
+ };
186
+ }
187
+ export interface ParsedDesignResourceHandoffV2 {
188
+ handoff_path: string;
189
+ handoff: DesignResourceHandoffV2;
190
+ source_item_keys: string[];
191
+ source_item_kinds: Record<string, string>;
192
+ }
193
+ export interface DesignResourceSymbolicRuleProjectionV2 {
194
+ rule: DesignResourceSymbolicFactRuleV2;
195
+ compiled_region: CompiledSymbolicDenotationV1;
196
+ }
197
+ export interface DesignResourceHandoffPreflightV2 extends ParsedDesignResourceHandoffV2 {
198
+ preflight_schema_version: "design-resource-handoff-preflight-v2";
199
+ status: "ready";
200
+ manifest: DesignResourceObservableRuleManifestV2;
201
+ resource_hashes: Record<string, string>;
202
+ rule_projections: DesignResourceSymbolicRuleProjectionV2[];
203
+ metrics: {
204
+ semantic_obligations: number;
205
+ certificate_obligations: number;
206
+ certificate_covered_omitted_axes: number;
207
+ certificate_covered_dependency_edges: number;
208
+ canonical_dag_nodes: number;
209
+ canonical_partition_edges: number;
210
+ canonical_bytes: number;
211
+ theoretical_ground_cardinality: string;
212
+ };
213
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ import type { DesignResourceHandoffPreflightV2, ParsedDesignResourceHandoffV2 } from "./design-resource-symbolic-fact-types.js";
2
+ export { designResourceSymbolicCertificateKey, designResourceSymbolicCombinedRuleDigest, designResourceSymbolicDependencyEdge, designResourceSymbolicNoninterferenceProofDigest, designResourceSymbolicObligationKey, designResourceSymbolicRuleKey, } from "./design-resource-symbolic-validation-support.js";
3
+ export declare function preflightParsedDesignResourceSymbolicHandoff(repository: string, parsed: ParsedDesignResourceHandoffV2): Promise<DesignResourceHandoffPreflightV2>;
@@ -0,0 +1,86 @@
1
+ import { readFile, stat } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { validateDesignResourceImplementationDependencyClosure } from "./design-resource-handoff-web-dependency-validation.js";
4
+ import { parseDesignResourceObservableRuleManifestJson } from "./design-resource-symbolic-fact-shape.js";
5
+ import { validateDesignResourceSymbolicManifest } from "./design-resource-symbolic-manifest-validation.js";
6
+ import { validateSymbolicCoverage } from "./design-resource-symbolic-region-validation.js";
7
+ import { assertSameSet, invalid, requireExactRefs, unique, } from "./design-resource-symbolic-validation-support.js";
8
+ import { assertProtectedRepositoryFile } from "./long-task-protected-files.js";
9
+ import { sha256Hex } from "./strict-codec.js";
10
+ export { designResourceSymbolicCertificateKey, designResourceSymbolicCombinedRuleDigest, designResourceSymbolicDependencyEdge, designResourceSymbolicNoninterferenceProofDigest, designResourceSymbolicObligationKey, designResourceSymbolicRuleKey, } from "./design-resource-symbolic-validation-support.js";
11
+ const V2_MANIFEST_MAX_BYTES = 8_388_608;
12
+ export async function preflightParsedDesignResourceSymbolicHandoff(repository, parsed) {
13
+ const { handoff } = parsed;
14
+ validateHandoffIdentities(handoff);
15
+ if (handoff.targets.length !== 1)
16
+ invalid("v2_one_target_required", String(handoff.targets.length));
17
+ const target = handoff.targets[0];
18
+ if (!handoff.scope.surface_keys.length)
19
+ invalid("v2_scope_surface_keys_required", target.key);
20
+ const resources = new Map(handoff.resources.map((resource) => [resource.key, resource]));
21
+ requireExactRefs(target.resource_refs, resources, "v2_target_resource");
22
+ const manifestResource = resources.get(target.source_profile.fact_manifest_resource_ref);
23
+ if (!manifestResource)
24
+ invalid("v2_manifest_resource_unknown", target.source_profile.fact_manifest_resource_ref);
25
+ validateManifestResource(target, manifestResource);
26
+ assertSameSet(target.resource_refs, [
27
+ target.source_profile.entry_resource_ref,
28
+ ...target.source_profile.dependency_resource_refs,
29
+ ], "v2_source_profile_resource_closure_mismatch", target.key);
30
+ const { contents, resourceHashes } = await readAndVerifyResources(repository, parsed, manifestResource.key);
31
+ if (target.source_profile.kind === "implementation_web" ||
32
+ target.source_profile.kind === "implementation_app")
33
+ validateDesignResourceImplementationDependencyClosure(target, resources, contents);
34
+ const manifest = parseDesignResourceObservableRuleManifestJson(contents.get(manifestResource.key).toString("utf8"));
35
+ if (manifest.scope_key !== handoff.scope.key ||
36
+ manifest.target_key !== target.key)
37
+ invalid("v2_manifest_identity_mismatch", `${manifest.scope_key}:${manifest.target_key}`);
38
+ const validated = validateDesignResourceSymbolicManifest(manifest, parsed, resources, contents);
39
+ validateSymbolicCoverage(parsed, manifest);
40
+ return {
41
+ ...parsed,
42
+ preflight_schema_version: "design-resource-handoff-preflight-v2",
43
+ status: "ready",
44
+ manifest,
45
+ resource_hashes: resourceHashes,
46
+ rule_projections: validated.ruleProjections,
47
+ metrics: validated.metrics,
48
+ };
49
+ }
50
+ function validateHandoffIdentities(handoff) {
51
+ unique(handoff.resources.map((item) => item.key), "v2_resource_key_duplicate");
52
+ unique(handoff.resources.map((item) => item.path), "v2_resource_path_duplicate");
53
+ unique(handoff.targets.map((item) => item.key), "v2_target_key_duplicate");
54
+ unique(handoff.coverage.map((item) => item.key), "v2_coverage_key_duplicate");
55
+ }
56
+ function validateManifestResource(target, manifestResource) {
57
+ if (manifestResource.role !== "supporting" ||
58
+ manifestResource.media_type !== "application/json")
59
+ invalid("v2_manifest_resource_invalid", `${manifestResource.key}:${manifestResource.role}:${manifestResource.media_type}`);
60
+ if (target.source_profile.entry_resource_ref === manifestResource.key ||
61
+ !target.source_profile.dependency_resource_refs.includes(manifestResource.key))
62
+ invalid("v2_manifest_dependency_invalid", target.key);
63
+ }
64
+ async function readAndVerifyResources(repository, parsed, manifestResourceRef) {
65
+ const contents = new Map();
66
+ const resourceHashes = {};
67
+ for (const resource of parsed.handoff.resources) {
68
+ if (resource.path === parsed.handoff_path)
69
+ invalid("v2_resource_must_not_be_handoff", resource.key);
70
+ const file = await assertProtectedRepositoryFile(repository, path.resolve(repository, ...resource.path.split("/")), `design_resource_v2:${resource.key}`);
71
+ if (resource.key === manifestResourceRef)
72
+ await enforceManifestByteLimit(file);
73
+ const bytes = await readFile(file);
74
+ const digest = sha256Hex(bytes);
75
+ if (digest !== resource.sha256)
76
+ invalid("v2_resource_digest_mismatch", `${resource.key}:${resource.sha256}:${digest}`);
77
+ contents.set(resource.key, bytes);
78
+ resourceHashes[resource.key] = digest;
79
+ }
80
+ return { contents, resourceHashes };
81
+ }
82
+ async function enforceManifestByteLimit(file) {
83
+ const size = (await stat(file)).size;
84
+ if (size > V2_MANIFEST_MAX_BYTES)
85
+ invalid("v2_manifest_byte_limit_exceeded", `bytes=${size}:limit=${V2_MANIFEST_MAX_BYTES}`);
86
+ }
@@ -0,0 +1,23 @@
1
+ import type { DesignResourceObservableRuleManifestV2, DesignResourceSymbolicDispositionRegionV2, DesignResourceSymbolicFactRuleV2, ParsedDesignResourceHandoffV2 } from "./design-resource-symbolic-fact-types.js";
2
+ import type { SymbolicExtensionalPointV1 } from "./symbolic-denotation-types.js";
3
+ export declare function buildSymbolicManifestIndexes(manifest: DesignResourceObservableRuleManifestV2, parsed: Pick<ParsedDesignResourceHandoffV2, "source_item_keys">): {
4
+ sourceItems: Set<string>;
5
+ census: Map<string, import("./design-resource-fact-manifest-model.js").DesignResourceInspectorCensusEntryV1>;
6
+ subjects: Map<string, import("./design-resource-handoff-types.js").DesignResourceHandoffSubjectV1>;
7
+ populations: Map<string, import("./design-resource-symbolic-fact-types.js").DesignResourceSymbolicPopulationV2>;
8
+ properties: Map<string, import("./design-resource-fact-types.js").DesignResourcePropertyDefinitionV1>;
9
+ rules: Map<string, DesignResourceSymbolicFactRuleV2>;
10
+ dispositions: Map<string, DesignResourceSymbolicDispositionRegionV2>;
11
+ obligations: Map<string, import("./design-resource-symbolic-fact-types.js").DesignResourceSymbolicProofObligationV2>;
12
+ oracles: Map<string, import("./design-resource-fact-types.js").DesignResourceOracleV1>;
13
+ environments: Map<string, import("./design-resource-fact-types.js").DesignResourceEnvironmentV1>;
14
+ inspectorCapabilities: Set<"accessibility" | "assets" | "audio" | "component_anatomy" | "css_cascade" | "custom_properties" | "design_tokens" | "dynamic_population" | "geometry_measurement" | "haptics" | "html_dom" | "input_rules" | "javascript_static" | "json" | "localization" | "markdown" | "motion" | "prototype_transitions" | "relations" | "render_capture" | "responsive_rules" | "svg" | "system_ui">;
15
+ rulesBySubjectProperty: Map<string, DesignResourceSymbolicFactRuleV2[]>;
16
+ dispositionsBySubjectProperty: Map<string, DesignResourceSymbolicDispositionRegionV2[]>;
17
+ rulesBySemanticTuple: Map<string, DesignResourceSymbolicFactRuleV2[]>;
18
+ dispositionsBySemanticTuple: Map<string, DesignResourceSymbolicDispositionRegionV2[]>;
19
+ rulesByCensus: Map<string, DesignResourceSymbolicFactRuleV2[]>;
20
+ };
21
+ export type SymbolicManifestIndexes = ReturnType<typeof buildSymbolicManifestIndexes>;
22
+ export declare function symbolicSubjectPropertyKey(subjectRef: string, propertyRef: string): string;
23
+ export declare function symbolicSemanticTupleKey(row: DesignResourceSymbolicFactRuleV2 | DesignResourceSymbolicDispositionRegionV2 | SymbolicExtensionalPointV1): string;
@@ -0,0 +1,54 @@
1
+ import { stableJson } from "./design-resource-symbolic-validation-support.js";
2
+ export function buildSymbolicManifestIndexes(manifest, parsed) {
3
+ const rulesBySubjectProperty = groupRows(manifest.fact_rules, (rule) => symbolicSubjectPropertyKey(rule.subject_or_relation_ref, rule.property_ref));
4
+ const dispositionsBySubjectProperty = groupRows(manifest.disposition_regions, (row) => symbolicSubjectPropertyKey(row.subject_or_relation_ref, row.property_ref));
5
+ const rulesBySemanticTuple = groupRows(manifest.fact_rules, symbolicSemanticTupleKey);
6
+ const dispositionsBySemanticTuple = groupRows(manifest.disposition_regions, symbolicSemanticTupleKey);
7
+ const rulesByCensus = new Map();
8
+ for (const rule of manifest.fact_rules)
9
+ for (const censusRef of rule.census_refs)
10
+ append(rulesByCensus, censusRef, rule);
11
+ return {
12
+ sourceItems: new Set(parsed.source_item_keys),
13
+ census: new Map(manifest.inspector.census.map((item) => [item.key, item])),
14
+ subjects: new Map(manifest.subjects.map((item) => [item.key, item])),
15
+ populations: new Map(manifest.populations.map((item) => [item.key, item])),
16
+ properties: new Map(manifest.properties.map((item) => [item.key, item])),
17
+ rules: new Map(manifest.fact_rules.map((item) => [item.key, item])),
18
+ dispositions: new Map(manifest.disposition_regions.map((item) => [item.key, item])),
19
+ obligations: new Map(manifest.semantic_proof_obligations.map((item) => [item.key, item])),
20
+ oracles: new Map(manifest.oracles.map((item) => [item.key, item])),
21
+ environments: new Map(manifest.environments.map((item) => [item.key, item])),
22
+ inspectorCapabilities: new Set(manifest.inspector.capability_refs),
23
+ rulesBySubjectProperty,
24
+ dispositionsBySubjectProperty,
25
+ rulesBySemanticTuple,
26
+ dispositionsBySemanticTuple,
27
+ rulesByCensus,
28
+ };
29
+ }
30
+ export function symbolicSubjectPropertyKey(subjectRef, propertyRef) {
31
+ return `${subjectRef}\u0000${propertyRef}`;
32
+ }
33
+ export function symbolicSemanticTupleKey(row) {
34
+ return [
35
+ row.subject_or_relation_ref,
36
+ row.target_ref,
37
+ row.property_ref,
38
+ row.population_ref ?? "none",
39
+ stableJson(row.quantifier),
40
+ ].join("\u0000");
41
+ }
42
+ function groupRows(rows, keyOf) {
43
+ const groups = new Map();
44
+ for (const row of rows)
45
+ append(groups, keyOf(row), row);
46
+ return groups;
47
+ }
48
+ function append(groups, key, row) {
49
+ const values = groups.get(key);
50
+ if (values)
51
+ values.push(row);
52
+ else
53
+ groups.set(key, [row]);
54
+ }
@@ -0,0 +1,3 @@
1
+ import type { DesignResourceObservableRuleManifestV2 } from "./design-resource-symbolic-fact-types.js";
2
+ export declare function parseDesignResourceObservableRuleManifestJson(content: string): DesignResourceObservableRuleManifestV2;
3
+ export declare function parseDesignResourceObservableRuleManifestShape(value: unknown): DesignResourceObservableRuleManifestV2;