project-tiny-context-harness 0.8.17 → 0.11.0

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 (488) hide show
  1. package/README.md +93 -30
  2. package/assets/README.md +158 -44
  3. package/assets/README.zh-CN.md +88 -29
  4. package/assets/agents/AGENTS_CORE.md +2 -2
  5. package/assets/context_templates/context.toml +6 -1
  6. package/assets/runtime/windows-job-supervisor/formal_process_supervisor_native_helpers.cs +301 -0
  7. package/assets/runtime/windows-job-supervisor/formal_process_supervisor_native_run.cs +197 -0
  8. package/assets/runtime/windows-job-supervisor/formal_process_supervisor_native_types.cs +215 -0
  9. package/assets/runtime/windows-job-supervisor/windows_job_process_supervisor.ps1 +117 -0
  10. package/assets/skills/design-resource-authoring/SKILL.md +6 -3
  11. package/assets/skills/design-resource-authoring/references/authority-delta-assessment.md +52 -0
  12. package/assets/skills/design-resource-authoring/references/downstream-handoff.md +5 -1
  13. package/assets/skills/design-system-authoring/SKILL.md +23 -17
  14. package/assets/skills/design-system-authoring/references/authority-adoption.md +19 -9
  15. package/assets/skills/design-system-authoring/references/open-design-design-system-provider.md +4 -0
  16. package/assets/skills/long-task-workflow/SKILL.md +6 -6
  17. package/assets/skills/long-task-workflow/references/authority-lifecycle.md +10 -4
  18. package/assets/skills/long-task-workflow/references/contract-authoring.md +5 -5
  19. package/assets/skills/long-task-workflow/references/evidence-design.md +14 -3
  20. package/assets/skills/long-task-workflow/references/source-authoring.md +11 -8
  21. package/assets/tools/context_rules.json +53 -0
  22. package/assets/tools/validate_context.py +302 -77
  23. package/dist/cli.js +2 -1
  24. package/dist/commands/context-create.d.ts +1 -0
  25. package/dist/commands/context-create.js +90 -0
  26. package/dist/commands/context-inspect.d.ts +1 -0
  27. package/dist/commands/context-inspect.js +98 -0
  28. package/dist/commands/context-move.d.ts +1 -0
  29. package/dist/commands/context-move.js +78 -0
  30. package/dist/commands/context-register.d.ts +1 -0
  31. package/dist/commands/context-register.js +110 -0
  32. package/dist/commands/context-transaction.d.ts +1 -0
  33. package/dist/commands/context-transaction.js +84 -0
  34. package/dist/commands/context.d.ts +1 -0
  35. package/dist/commands/context.js +36 -0
  36. package/dist/commands/design-authority-delta.d.ts +1 -0
  37. package/dist/commands/design-authority-delta.js +53 -0
  38. package/dist/commands/design-authority.d.ts +1 -0
  39. package/dist/commands/design-authority.js +104 -0
  40. package/dist/commands/design-resource.js +8 -1
  41. package/dist/commands/doctor.d.ts +1 -1
  42. package/dist/commands/doctor.js +61 -3
  43. package/dist/commands/index.js +19 -2
  44. package/dist/commands/long-task-authoring.js +20 -2
  45. package/dist/commands/long-task-workdir.d.ts +2 -0
  46. package/dist/commands/long-task-workdir.js +23 -0
  47. package/dist/commands/long-task.js +75 -6
  48. package/dist/commands/route.d.ts +15 -0
  49. package/dist/commands/route.js +142 -0
  50. package/dist/index.d.ts +3 -13
  51. package/dist/index.js +3 -12
  52. package/dist/lib/cli-exit.d.ts +14 -0
  53. package/dist/lib/cli-exit.js +19 -0
  54. package/dist/lib/context-catalog/catalog-default-footprint.d.ts +3 -0
  55. package/dist/lib/context-catalog/catalog-default-footprint.js +53 -0
  56. package/dist/lib/context-catalog/catalog-diagnostics.d.ts +9 -0
  57. package/dist/lib/context-catalog/catalog-diagnostics.js +34 -0
  58. package/dist/lib/context-catalog/catalog-discovery.d.ts +7 -0
  59. package/dist/lib/context-catalog/catalog-discovery.js +81 -0
  60. package/dist/lib/context-catalog/catalog-load.d.ts +8 -0
  61. package/dist/lib/context-catalog/catalog-load.js +187 -0
  62. package/dist/lib/context-catalog/catalog-path-validation.d.ts +7 -0
  63. package/dist/lib/context-catalog/catalog-path-validation.js +62 -0
  64. package/dist/lib/context-catalog/catalog-paths.d.ts +11 -0
  65. package/dist/lib/context-catalog/catalog-paths.js +41 -0
  66. package/dist/lib/context-catalog/catalog-portable-contract.d.ts +15 -0
  67. package/dist/lib/context-catalog/catalog-portable-contract.js +68 -0
  68. package/dist/lib/context-catalog/catalog-staged-path-safety.d.ts +1 -0
  69. package/dist/lib/context-catalog/catalog-staged-path-safety.js +36 -0
  70. package/dist/lib/context-catalog/catalog-types.d.ts +40 -0
  71. package/dist/lib/context-catalog/catalog-types.js +1 -0
  72. package/dist/lib/context-catalog/catalog-validation.d.ts +9 -0
  73. package/dist/lib/context-catalog/catalog-validation.js +148 -0
  74. package/dist/lib/context-create/context-create-path.d.ts +2 -0
  75. package/dist/lib/context-create/context-create-path.js +30 -0
  76. package/dist/lib/context-create/context-create-template.d.ts +2 -0
  77. package/dist/lib/context-create/context-create-template.js +95 -0
  78. package/dist/lib/context-create/context-create-types.d.ts +28 -0
  79. package/dist/lib/context-create/context-create-types.js +1 -0
  80. package/dist/lib/context-create/context-create-write.d.ts +1 -0
  81. package/dist/lib/context-create/context-create-write.js +85 -0
  82. package/dist/lib/context-create/context-create.d.ts +2 -0
  83. package/dist/lib/context-create/context-create.js +84 -0
  84. package/dist/lib/context-default-footprint.d.ts +2 -3
  85. package/dist/lib/context-default-footprint.js +49 -57
  86. package/dist/lib/context-doctor/context-doctor-types.d.ts +16 -0
  87. package/dist/lib/context-doctor/context-doctor-types.js +15 -0
  88. package/dist/lib/context-doctor/context-doctor.d.ts +2 -0
  89. package/dist/lib/context-doctor/context-doctor.js +130 -0
  90. package/dist/lib/context-graph-snapshot.d.ts +5 -0
  91. package/dist/lib/context-graph-snapshot.js +46 -25
  92. package/dist/lib/context-inspect/context-inspect-projection.d.ts +9 -0
  93. package/dist/lib/context-inspect/context-inspect-projection.js +49 -0
  94. package/dist/lib/context-inspect/context-inspect-render.d.ts +2 -0
  95. package/dist/lib/context-inspect/context-inspect-render.js +29 -0
  96. package/dist/lib/context-inspect/context-inspect-types.d.ts +43 -0
  97. package/dist/lib/context-inspect/context-inspect-types.js +1 -0
  98. package/dist/lib/context-inspect/context-inspect.d.ts +2 -0
  99. package/dist/lib/context-inspect/context-inspect.js +104 -0
  100. package/dist/lib/context-manifest-schema.d.ts +1 -1
  101. package/dist/lib/context-manifest-schema.js +4 -20
  102. package/dist/lib/context-markdown/context-markdown-analysis.d.ts +15 -0
  103. package/dist/lib/context-markdown/context-markdown-analysis.js +245 -0
  104. package/dist/lib/context-markdown/context-markdown-extract.d.ts +7 -0
  105. package/dist/lib/context-markdown/context-markdown-extract.js +114 -0
  106. package/dist/lib/context-markdown/context-markdown-types.d.ts +57 -0
  107. package/dist/lib/context-markdown/context-markdown-types.js +1 -0
  108. package/dist/lib/context-move/context-move-input.d.ts +8 -0
  109. package/dist/lib/context-move/context-move-input.js +17 -0
  110. package/dist/lib/context-move/context-move-literal-scan.d.ts +20 -0
  111. package/dist/lib/context-move/context-move-literal-scan.js +213 -0
  112. package/dist/lib/context-move/context-move-live-validation.d.ts +3 -0
  113. package/dist/lib/context-move/context-move-live-validation.js +56 -0
  114. package/dist/lib/context-move/context-move-markdown-plan.d.ts +22 -0
  115. package/dist/lib/context-move/context-move-markdown-plan.js +39 -0
  116. package/dist/lib/context-move/context-move-projection.d.ts +3 -0
  117. package/dist/lib/context-move/context-move-projection.js +11 -0
  118. package/dist/lib/context-move/context-move-reference-validation.d.ts +11 -0
  119. package/dist/lib/context-move/context-move-reference-validation.js +64 -0
  120. package/dist/lib/context-move/context-move-render.d.ts +2 -0
  121. package/dist/lib/context-move/context-move-render.js +24 -0
  122. package/dist/lib/context-move/context-move-support.d.ts +10 -0
  123. package/dist/lib/context-move/context-move-support.js +88 -0
  124. package/dist/lib/context-move/context-move-transaction-plan.d.ts +24 -0
  125. package/dist/lib/context-move/context-move-transaction-plan.js +108 -0
  126. package/dist/lib/context-move/context-move-types.d.ts +74 -0
  127. package/dist/lib/context-move/context-move-types.js +1 -0
  128. package/dist/lib/context-move/context-move.d.ts +8 -0
  129. package/dist/lib/context-move/context-move.js +180 -0
  130. package/dist/lib/context-mutation/manifest-lossless-patch.d.ts +28 -0
  131. package/dist/lib/context-mutation/manifest-lossless-patch.js +208 -0
  132. package/dist/lib/context-mutation/markdown-link-patch.d.ts +34 -0
  133. package/dist/lib/context-mutation/markdown-link-patch.js +143 -0
  134. package/dist/lib/context-mutation/markdown-link-spans.d.ts +10 -0
  135. package/dist/lib/context-mutation/markdown-link-spans.js +179 -0
  136. package/dist/lib/context-mutation/mutation-cas.d.ts +13 -0
  137. package/dist/lib/context-mutation/mutation-cas.js +365 -0
  138. package/dist/lib/context-mutation/mutation-command-support.d.ts +12 -0
  139. package/dist/lib/context-mutation/mutation-command-support.js +57 -0
  140. package/dist/lib/context-mutation/mutation-commit.d.ts +12 -0
  141. package/dist/lib/context-mutation/mutation-commit.js +89 -0
  142. package/dist/lib/context-mutation/mutation-directories.d.ts +5 -0
  143. package/dist/lib/context-mutation/mutation-directories.js +56 -0
  144. package/dist/lib/context-mutation/mutation-file-state.d.ts +14 -0
  145. package/dist/lib/context-mutation/mutation-file-state.js +137 -0
  146. package/dist/lib/context-mutation/mutation-journal-file-validation.d.ts +1 -0
  147. package/dist/lib/context-mutation/mutation-journal-file-validation.js +106 -0
  148. package/dist/lib/context-mutation/mutation-journal-io.d.ts +5 -0
  149. package/dist/lib/context-mutation/mutation-journal-io.js +55 -0
  150. package/dist/lib/context-mutation/mutation-journal-storage.d.ts +18 -0
  151. package/dist/lib/context-mutation/mutation-journal-storage.js +283 -0
  152. package/dist/lib/context-mutation/mutation-journal-validation-support.d.ts +16 -0
  153. package/dist/lib/context-mutation/mutation-journal-validation-support.js +140 -0
  154. package/dist/lib/context-mutation/mutation-journal-validation.d.ts +3 -0
  155. package/dist/lib/context-mutation/mutation-journal-validation.js +177 -0
  156. package/dist/lib/context-mutation/mutation-journal.d.ts +8 -0
  157. package/dist/lib/context-mutation/mutation-journal.js +111 -0
  158. package/dist/lib/context-mutation/mutation-live-validation.d.ts +3 -0
  159. package/dist/lib/context-mutation/mutation-live-validation.js +51 -0
  160. package/dist/lib/context-mutation/mutation-long-task-guard.d.ts +6 -0
  161. package/dist/lib/context-mutation/mutation-long-task-guard.js +57 -0
  162. package/dist/lib/context-mutation/mutation-recovery.d.ts +4 -0
  163. package/dist/lib/context-mutation/mutation-recovery.js +189 -0
  164. package/dist/lib/context-mutation/mutation-staged-fs.d.ts +5 -0
  165. package/dist/lib/context-mutation/mutation-staged-fs.js +56 -0
  166. package/dist/lib/context-mutation/mutation-types.d.ts +103 -0
  167. package/dist/lib/context-mutation/mutation-types.js +1 -0
  168. package/dist/lib/context-register/context-register-input.d.ts +11 -0
  169. package/dist/lib/context-register/context-register-input.js +43 -0
  170. package/dist/lib/context-register/context-register-render.d.ts +2 -0
  171. package/dist/lib/context-register/context-register-render.js +21 -0
  172. package/dist/lib/context-register/context-register-support.d.ts +6 -0
  173. package/dist/lib/context-register/context-register-support.js +46 -0
  174. package/dist/lib/context-register/context-register-types.d.ts +46 -0
  175. package/dist/lib/context-register/context-register-types.js +1 -0
  176. package/dist/lib/context-register/context-register.d.ts +8 -0
  177. package/dist/lib/context-register/context-register.js +155 -0
  178. package/dist/lib/context-router/context-route-budget.d.ts +15 -0
  179. package/dist/lib/context-router/context-route-budget.js +14 -0
  180. package/dist/lib/context-router/context-route-candidates.d.ts +15 -0
  181. package/dist/lib/context-router/context-route-candidates.js +112 -0
  182. package/dist/lib/context-router/context-route-order.d.ts +6 -0
  183. package/dist/lib/context-router/context-route-order.js +53 -0
  184. package/dist/lib/context-router/context-route-paths.d.ts +16 -0
  185. package/dist/lib/context-router/context-route-paths.js +109 -0
  186. package/dist/lib/context-router/context-route-render.d.ts +2 -0
  187. package/dist/lib/context-router/context-route-render.js +32 -0
  188. package/dist/lib/context-router/context-route-scan.d.ts +18 -0
  189. package/dist/lib/context-router/context-route-scan.js +156 -0
  190. package/dist/lib/context-router/context-route-selection.d.ts +16 -0
  191. package/dist/lib/context-router/context-route-selection.js +72 -0
  192. package/dist/lib/context-router/context-route-terms.d.ts +13 -0
  193. package/dist/lib/context-router/context-route-terms.js +202 -0
  194. package/dist/lib/context-router/context-route-types.d.ts +101 -0
  195. package/dist/lib/context-router/context-route-types.js +1 -0
  196. package/dist/lib/context-router/context-route.d.ts +2 -0
  197. package/dist/lib/context-router/context-route.js +127 -0
  198. package/dist/lib/context-units-migration.d.ts +13 -0
  199. package/dist/lib/context-units-migration.js +217 -0
  200. package/dist/lib/design-authority-binding.d.ts +7 -0
  201. package/dist/lib/design-authority-binding.js +96 -0
  202. package/dist/lib/design-authority-closure.d.ts +3 -0
  203. package/dist/lib/design-authority-closure.js +201 -0
  204. package/dist/lib/design-authority-delta-codec-primitives.d.ts +10 -0
  205. package/dist/lib/design-authority-delta-codec-primitives.js +58 -0
  206. package/dist/lib/design-authority-delta-codec.d.ts +2 -0
  207. package/dist/lib/design-authority-delta-codec.js +193 -0
  208. package/dist/lib/design-authority-delta-types.d.ts +65 -0
  209. package/dist/lib/design-authority-delta-types.js +6 -0
  210. package/dist/lib/design-authority-delta-validation.d.ts +2 -0
  211. package/dist/lib/design-authority-delta-validation.js +16 -0
  212. package/dist/lib/design-authority-digest.d.ts +8 -0
  213. package/dist/lib/design-authority-digest.js +36 -0
  214. package/dist/lib/design-authority-files.d.ts +9 -0
  215. package/dist/lib/design-authority-files.js +62 -0
  216. package/dist/lib/design-authority-format.d.ts +2 -0
  217. package/dist/lib/design-authority-format.js +93 -0
  218. package/dist/lib/design-authority-links.d.ts +10 -0
  219. package/dist/lib/design-authority-links.js +137 -0
  220. package/dist/lib/design-authority-manifest.d.ts +4 -0
  221. package/dist/lib/design-authority-manifest.js +144 -0
  222. package/dist/lib/design-authority-tokens.d.ts +9 -0
  223. package/dist/lib/design-authority-tokens.js +45 -0
  224. package/dist/lib/design-authority-types.d.ts +80 -0
  225. package/dist/lib/design-authority-types.js +23 -0
  226. package/dist/lib/design-md-tool-adapter.d.ts +9 -0
  227. package/dist/lib/design-md-tool-adapter.js +152 -0
  228. package/dist/lib/design-md-tool-normalization.d.ts +7 -0
  229. package/dist/lib/design-md-tool-normalization.js +78 -0
  230. package/dist/lib/design-md-tool-types.d.ts +99 -0
  231. package/dist/lib/design-md-tool-types.js +8 -0
  232. package/dist/lib/design-resource-handoff-input-types.d.ts +1 -1
  233. package/dist/lib/design-resource-handoff-manifest-projection.js +3 -0
  234. package/dist/lib/design-resource-handoff-shape.js +14 -2
  235. package/dist/lib/design-resource-handoff-types.d.ts +3 -0
  236. package/dist/lib/design-resource-handoff-validation.js +16 -4
  237. package/dist/lib/design-resource-implementation-feasibility-validation-support.js +1 -1
  238. package/dist/lib/design-resource-recovery-current.js +22 -0
  239. package/dist/lib/design-resource-recovery-shape.js +64 -7
  240. package/dist/lib/design-resource-recovery-types.d.ts +4 -1
  241. package/dist/lib/design-resource-symbolic-fact-shape.js +7 -1
  242. package/dist/lib/design-resource-symbolic-fact-types.d.ts +3 -0
  243. package/dist/lib/design-resource-symbolic-fact-validation.js +15 -3
  244. package/dist/lib/doctor.d.ts +2 -1
  245. package/dist/lib/doctor.js +29 -1
  246. package/dist/lib/fs.js +1 -1
  247. package/dist/lib/long-task-acceptance-reachability-claims.d.ts +2 -0
  248. package/dist/lib/long-task-acceptance-reachability-claims.js +279 -0
  249. package/dist/lib/long-task-acceptance-reachability-design.d.ts +2 -0
  250. package/dist/lib/long-task-acceptance-reachability-design.js +96 -0
  251. package/dist/lib/long-task-acceptance-reachability-external.d.ts +9 -0
  252. package/dist/lib/long-task-acceptance-reachability-external.js +123 -0
  253. package/dist/lib/long-task-acceptance-reachability-helpers.d.ts +64 -0
  254. package/dist/lib/long-task-acceptance-reachability-helpers.js +473 -0
  255. package/dist/lib/long-task-acceptance-reachability-semantic.d.ts +2 -0
  256. package/dist/lib/long-task-acceptance-reachability-semantic.js +122 -0
  257. package/dist/lib/long-task-acceptance-reachability-types.d.ts +91 -0
  258. package/dist/lib/long-task-acceptance-reachability-types.js +1 -0
  259. package/dist/lib/long-task-acceptance-reachability.d.ts +4 -0
  260. package/dist/lib/long-task-acceptance-reachability.js +115 -0
  261. package/dist/lib/long-task-activation-validation.d.ts +6 -0
  262. package/dist/lib/long-task-activation-validation.js +72 -69
  263. package/dist/lib/long-task-active-authority-lock-context.d.ts +4 -0
  264. package/dist/lib/long-task-active-authority-lock-context.js +29 -0
  265. package/dist/lib/long-task-applicability-identity.d.ts +25 -0
  266. package/dist/lib/long-task-applicability-identity.js +60 -0
  267. package/dist/lib/long-task-authoring-preflight-diagnostics.js +8 -0
  268. package/dist/lib/long-task-authoring-preflight-types.d.ts +2 -0
  269. package/dist/lib/long-task-authoring-preflight-types.js +9 -0
  270. package/dist/lib/long-task-authoring-preflight.js +18 -2
  271. package/dist/lib/long-task-authority-material-diff.js +4 -0
  272. package/dist/lib/long-task-authority-materials.js +19 -0
  273. package/dist/lib/long-task-authority-policy.d.ts +3 -0
  274. package/dist/lib/long-task-authority-policy.js +3 -0
  275. package/dist/lib/long-task-authority-revision-details.js +2 -1
  276. package/dist/lib/long-task-authority-types.d.ts +2 -0
  277. package/dist/lib/long-task-authority.js +2 -0
  278. package/dist/lib/long-task-check-shape.js +6 -1
  279. package/dist/lib/long-task-claim-definitions.js +1 -3
  280. package/dist/lib/long-task-claim-semantic-proof-floor.d.ts +3 -0
  281. package/dist/lib/long-task-claim-semantic-proof-floor.js +78 -0
  282. package/dist/lib/long-task-claims.d.ts +0 -18
  283. package/dist/lib/long-task-claims.js +15 -14
  284. package/dist/lib/long-task-command-process.js +3 -0
  285. package/dist/lib/long-task-compact-authoring.js +3 -0
  286. package/dist/lib/long-task-compact-projections.js +10 -0
  287. package/dist/lib/long-task-complete-delivery-evidence-types.d.ts +38 -0
  288. package/dist/lib/long-task-complete-delivery-evidence-types.js +1 -0
  289. package/dist/lib/long-task-completion-types.d.ts +109 -0
  290. package/dist/lib/long-task-completion-types.js +1 -0
  291. package/dist/lib/long-task-conformance-policy.d.ts +2 -1
  292. package/dist/lib/long-task-conformance-policy.js +11 -4
  293. package/dist/lib/long-task-context-authority-topology.js +6 -4
  294. package/dist/lib/long-task-contract-types.d.ts +52 -1
  295. package/dist/lib/long-task-counterfactual-sandbox.d.ts +7 -1
  296. package/dist/lib/long-task-counterfactual-sandbox.js +86 -6
  297. package/dist/lib/long-task-delivery-compiler-preflight.d.ts +24 -0
  298. package/dist/lib/long-task-delivery-compiler-preflight.js +32 -0
  299. package/dist/lib/long-task-delivery-compiler.d.ts +1 -0
  300. package/dist/lib/long-task-delivery-compiler.js +59 -44
  301. package/dist/lib/long-task-delivery-parser.d.ts +3 -0
  302. package/dist/lib/long-task-delivery-parser.js +26 -8
  303. package/dist/lib/long-task-delivery-types.d.ts +2 -0
  304. package/dist/lib/long-task-delivery-types.js +2 -0
  305. package/dist/lib/long-task-delivery-validation.d.ts +6 -1
  306. package/dist/lib/long-task-delivery-validation.js +19 -4
  307. package/dist/lib/long-task-design-feasibility-binding.d.ts +1 -0
  308. package/dist/lib/long-task-design-feasibility-binding.js +3 -3
  309. package/dist/lib/long-task-design-feasibility-source-closure.js +11 -2
  310. package/dist/lib/long-task-design-obligation.d.ts +50 -0
  311. package/dist/lib/long-task-design-obligation.js +99 -0
  312. package/dist/lib/long-task-design-resource-handoff.d.ts +3 -1
  313. package/dist/lib/long-task-design-resource-handoff.js +36 -12
  314. package/dist/lib/long-task-design-resource-method-binding.js +12 -0
  315. package/dist/lib/long-task-effective-external-takeover.d.ts +15 -0
  316. package/dist/lib/long-task-effective-external-takeover.js +109 -0
  317. package/dist/lib/long-task-effective-external-ui-takeover.d.ts +5 -0
  318. package/dist/lib/long-task-effective-external-ui-takeover.js +117 -0
  319. package/dist/lib/long-task-evidence-capability-codec.js +91 -0
  320. package/dist/lib/long-task-evidence-capability-runtime.js +62 -14
  321. package/dist/lib/long-task-evidence-capability-types.d.ts +3 -2
  322. package/dist/lib/long-task-evidence-v2.d.ts +6 -1
  323. package/dist/lib/long-task-evidence-v2.js +253 -170
  324. package/dist/lib/long-task-execution-observation.d.ts +7 -0
  325. package/dist/lib/long-task-execution-observation.js +21 -4
  326. package/dist/lib/long-task-expected-authority.d.ts +4 -0
  327. package/dist/lib/long-task-expected-authority.js +126 -0
  328. package/dist/lib/long-task-external-confirmation-artifacts.d.ts +9 -0
  329. package/dist/lib/long-task-external-confirmation-artifacts.js +138 -0
  330. package/dist/lib/long-task-external-confirmation-attestation.d.ts +20 -0
  331. package/dist/lib/long-task-external-confirmation-attestation.js +115 -0
  332. package/dist/lib/long-task-external-confirmation-challenge.d.ts +23 -0
  333. package/dist/lib/long-task-external-confirmation-challenge.js +164 -0
  334. package/dist/lib/long-task-external-confirmation-context.d.ts +14 -0
  335. package/dist/lib/long-task-external-confirmation-context.js +53 -0
  336. package/dist/lib/long-task-external-confirmation-evaluation.d.ts +11 -0
  337. package/dist/lib/long-task-external-confirmation-evaluation.js +454 -0
  338. package/dist/lib/long-task-external-confirmation-expected.d.ts +8 -0
  339. package/dist/lib/long-task-external-confirmation-expected.js +200 -0
  340. package/dist/lib/long-task-external-confirmation-identity.d.ts +10 -0
  341. package/dist/lib/long-task-external-confirmation-identity.js +77 -0
  342. package/dist/lib/long-task-external-confirmation-plan.d.ts +25 -0
  343. package/dist/lib/long-task-external-confirmation-plan.js +148 -0
  344. package/dist/lib/long-task-external-confirmation-preparation.d.ts +4 -0
  345. package/dist/lib/long-task-external-confirmation-preparation.js +100 -0
  346. package/dist/lib/long-task-external-confirmation-shape.d.ts +8 -0
  347. package/dist/lib/long-task-external-confirmation-shape.js +387 -0
  348. package/dist/lib/long-task-external-confirmation-state.d.ts +10 -0
  349. package/dist/lib/long-task-external-confirmation-state.js +109 -0
  350. package/dist/lib/long-task-external-confirmation-types.d.ts +195 -0
  351. package/dist/lib/long-task-external-confirmation-types.js +1 -0
  352. package/dist/lib/long-task-final-integrity.d.ts +2 -0
  353. package/dist/lib/long-task-final-integrity.js +21 -10
  354. package/dist/lib/long-task-final-v2.d.ts +7 -2
  355. package/dist/lib/long-task-final-v2.js +179 -55
  356. package/dist/lib/long-task-finalization-identity.d.ts +27 -0
  357. package/dist/lib/long-task-finalization-identity.js +58 -0
  358. package/dist/lib/long-task-finding-context.d.ts +1 -1
  359. package/dist/lib/long-task-finding-context.js +139 -13
  360. package/dist/lib/long-task-freshness.d.ts +27 -0
  361. package/dist/lib/long-task-freshness.js +128 -5
  362. package/dist/lib/long-task-git.js +3 -3
  363. package/dist/lib/long-task-material-input-closure.d.ts +3 -0
  364. package/dist/lib/long-task-material-input-closure.js +92 -0
  365. package/dist/lib/long-task-obligation-authority-resolution.d.ts +12 -0
  366. package/dist/lib/long-task-obligation-authority-resolution.js +57 -0
  367. package/dist/lib/long-task-obligation-semantic-identity.d.ts +16 -0
  368. package/dist/lib/long-task-obligation-semantic-identity.js +116 -0
  369. package/dist/lib/long-task-observation-authority.d.ts +11 -0
  370. package/dist/lib/long-task-observation-authority.js +137 -6
  371. package/dist/lib/long-task-process-table.d.ts +2 -5
  372. package/dist/lib/long-task-process-table.js +21 -53
  373. package/dist/lib/long-task-process-tree.d.ts +0 -1
  374. package/dist/lib/long-task-process-tree.js +24 -54
  375. package/dist/lib/long-task-proof-adequacy.d.ts +12 -0
  376. package/dist/lib/long-task-proof-adequacy.js +57 -0
  377. package/dist/lib/long-task-proof-capability-floor.d.ts +6 -0
  378. package/dist/lib/long-task-proof-capability-floor.js +137 -0
  379. package/dist/lib/long-task-repair-frontier-checks.d.ts +8 -0
  380. package/dist/lib/long-task-repair-frontier-checks.js +93 -0
  381. package/dist/lib/long-task-repair-frontier-groups.d.ts +2 -0
  382. package/dist/lib/long-task-repair-frontier-groups.js +64 -0
  383. package/dist/lib/long-task-repair-frontier-utils.d.ts +6 -0
  384. package/dist/lib/long-task-repair-frontier-utils.js +27 -0
  385. package/dist/lib/long-task-repair-frontier.d.ts +14 -0
  386. package/dist/lib/long-task-repair-frontier.js +132 -0
  387. package/dist/lib/long-task-risk.d.ts +3 -2
  388. package/dist/lib/long-task-risk.js +73 -24
  389. package/dist/lib/long-task-root-shape.js +148 -8
  390. package/dist/lib/long-task-runner-freeze.d.ts +2 -1
  391. package/dist/lib/long-task-runner-freeze.js +23 -8
  392. package/dist/lib/long-task-runtime-types.d.ts +34 -40
  393. package/dist/lib/long-task-semantic-assurance-policy.js +2 -11
  394. package/dist/lib/long-task-semantic-contract-types.d.ts +2 -1
  395. package/dist/lib/long-task-semantic-drift-migration.js +48 -2
  396. package/dist/lib/long-task-semantic-fact-binding-types.d.ts +20 -0
  397. package/dist/lib/long-task-semantic-fact-closure.d.ts +5 -1
  398. package/dist/lib/long-task-semantic-fact-closure.js +33 -5
  399. package/dist/lib/long-task-semantic-fact-contract-closure.js +176 -1
  400. package/dist/lib/long-task-semantic-fact-contract-proofs.js +18 -1
  401. package/dist/lib/long-task-semantic-fact-input-closure.d.ts +16 -2
  402. package/dist/lib/long-task-semantic-fact-input-closure.js +138 -15
  403. package/dist/lib/long-task-semantic-fact-provenance-closure.js +1 -1
  404. package/dist/lib/long-task-semantic-fact-shape.d.ts +2 -1
  405. package/dist/lib/long-task-semantic-fact-shape.js +35 -1
  406. package/dist/lib/long-task-semantic-proof-adequacy.d.ts +2 -0
  407. package/dist/lib/long-task-semantic-proof-adequacy.js +19 -0
  408. package/dist/lib/long-task-semantic-proof-profile.d.ts +5 -0
  409. package/dist/lib/long-task-semantic-proof-profile.js +187 -0
  410. package/dist/lib/long-task-shape-primitives.d.ts +1 -1
  411. package/dist/lib/long-task-shape-primitives.js +5 -0
  412. package/dist/lib/long-task-source-anchors.d.ts +10 -0
  413. package/dist/lib/long-task-source-anchors.js +102 -0
  414. package/dist/lib/long-task-source-authority-types.d.ts +46 -0
  415. package/dist/lib/long-task-source-claim-validation.js +36 -0
  416. package/dist/lib/long-task-source-conservation-facts.d.ts +8 -0
  417. package/dist/lib/long-task-source-conservation-facts.js +57 -0
  418. package/dist/lib/long-task-source-conservation-types.d.ts +34 -0
  419. package/dist/lib/long-task-source-conservation-types.js +1 -0
  420. package/dist/lib/long-task-source-conservation.d.ts +7 -0
  421. package/dist/lib/long-task-source-conservation.js +110 -0
  422. package/dist/lib/long-task-source-fragments.d.ts +6 -0
  423. package/dist/lib/long-task-source-fragments.js +219 -0
  424. package/dist/lib/long-task-source-projection-resolution.d.ts +5 -0
  425. package/dist/lib/long-task-source-projection-resolution.js +57 -0
  426. package/dist/lib/long-task-source-projection-validation.d.ts +17 -0
  427. package/dist/lib/long-task-source-projection-validation.js +154 -0
  428. package/dist/lib/long-task-source-shape.js +14 -6
  429. package/dist/lib/long-task-source-supersession.d.ts +5 -0
  430. package/dist/lib/long-task-source-supersession.js +138 -0
  431. package/dist/lib/long-task-stage-policy.d.ts +7 -2
  432. package/dist/lib/long-task-stage-policy.js +67 -23
  433. package/dist/lib/long-task-state.d.ts +18 -4
  434. package/dist/lib/long-task-state.js +319 -33
  435. package/dist/lib/long-task-static-observation-freeze.js +4 -3
  436. package/dist/lib/long-task-status-projection.d.ts +3 -1
  437. package/dist/lib/long-task-status-projection.js +44 -13
  438. package/dist/lib/long-task-status-v2.d.ts +10 -6
  439. package/dist/lib/long-task-status-v2.js +70 -58
  440. package/dist/lib/long-task-target-policy.d.ts +8 -3
  441. package/dist/lib/long-task-target-policy.js +40 -9
  442. package/dist/lib/long-task-terminal-finalization.d.ts +12 -0
  443. package/dist/lib/long-task-terminal-finalization.js +190 -0
  444. package/dist/lib/long-task-ui-design-policy.js +15 -4
  445. package/dist/lib/long-task-verifier-counterfactuals.d.ts +11 -0
  446. package/dist/lib/long-task-verifier-counterfactuals.js +96 -0
  447. package/dist/lib/long-task-verifier-execution.d.ts +9 -0
  448. package/dist/lib/long-task-verifier-execution.js +67 -0
  449. package/dist/lib/long-task-verifier-identity.js +16 -5
  450. package/dist/lib/long-task-verifier-v2.js +52 -65
  451. package/dist/lib/long-task-windows-job-supervisor-helper.d.ts +1 -0
  452. package/dist/lib/long-task-windows-job-supervisor-helper.js +104 -0
  453. package/dist/lib/long-task-windows-job-supervisor-protocol.d.ts +28 -0
  454. package/dist/lib/long-task-windows-job-supervisor-protocol.js +124 -0
  455. package/dist/lib/long-task-windows-job-supervisor-result.d.ts +11 -0
  456. package/dist/lib/long-task-windows-job-supervisor-result.js +152 -0
  457. package/dist/lib/long-task-windows-job-supervisor.d.ts +2 -0
  458. package/dist/lib/long-task-windows-job-supervisor.js +126 -0
  459. package/dist/lib/long-task-workspace-scope.d.ts +1 -0
  460. package/dist/lib/long-task-workspace-scope.js +4 -1
  461. package/dist/lib/long-task-workspace.d.ts +1 -0
  462. package/dist/lib/long-task-workspace.js +10 -0
  463. package/dist/lib/migrations.js +43 -2
  464. package/dist/lib/repository-path-safety.d.ts +1 -0
  465. package/dist/lib/repository-path-safety.js +3 -3
  466. package/dist/lib/semantic-fact-input-shape.d.ts +7 -2
  467. package/dist/lib/semantic-fact-input-shape.js +25 -1
  468. package/dist/lib/semantic-fact-inventory-types.d.ts +8 -2
  469. package/dist/lib/semantic-fact-policy-census.d.ts +1 -1
  470. package/dist/lib/semantic-fact-policy-census.js +5 -2
  471. package/dist/lib/semantic-fact-policy.d.ts +1 -1
  472. package/dist/lib/semantic-fact-policy.js +2 -2
  473. package/dist/lib/semantic-fact-proof-shape.d.ts +1 -1
  474. package/dist/lib/semantic-fact-property-shape.d.ts +1 -1
  475. package/dist/lib/validators.d.ts +3 -0
  476. package/dist/lib/validators.js +45 -157
  477. package/dist/public-api-core.d.ts +12 -0
  478. package/dist/public-api-core.js +12 -0
  479. package/dist/public-api-long-task.d.ts +10 -0
  480. package/dist/public-api-long-task.js +10 -0
  481. package/dist/public-types.d.ts +5 -1
  482. package/dist/schemas/design-authority-delta-assessment-v1.schema.json +191 -0
  483. package/dist/schemas/long-task-delivery-v2/long-task-delivery-v2.schema.json +166 -2
  484. package/dist/schemas/long-task-external-confirmation-record-v1.schema.json +155 -0
  485. package/dist/schemas/long-task-external-confirmation-record-v2.schema.json +209 -0
  486. package/migrations/README.md +99 -0
  487. package/package.json +7 -5
  488. package/source-mappings.yaml +18 -0
@@ -0,0 +1,78 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import path from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ import { stableJson } from "./stable-json.js";
5
+ export function loadDesignMdToolIdentity() {
6
+ let directory = path.dirname(fileURLToPath(import.meta.resolve("@google/design.md")));
7
+ for (let depth = 0; depth < 4; depth += 1) {
8
+ const packagePath = path.join(directory, "package.json");
9
+ if (existsSync(packagePath)) {
10
+ const parsed = JSON.parse(readFileSync(packagePath, "utf8"));
11
+ if (parsed.name === "@google/design.md" &&
12
+ typeof parsed.version === "string") {
13
+ return {
14
+ package_name: "@google/design.md",
15
+ package_version: parsed.version,
16
+ api_surface: "@google/design.md/linter",
17
+ };
18
+ }
19
+ }
20
+ directory = path.dirname(directory);
21
+ }
22
+ throw new Error("unable to resolve @google/design.md package identity");
23
+ }
24
+ export function normalizeDesignMdFinding(finding) {
25
+ return {
26
+ severity: finding.severity,
27
+ ...(finding.path ? { path: finding.path } : {}),
28
+ message: finding.message,
29
+ ...(finding.rule ? { rule: finding.rule } : {}),
30
+ };
31
+ }
32
+ export function snapshotDesignSystem(state) {
33
+ return {
34
+ ...(state.name ? { name: state.name } : {}),
35
+ ...(state.description ? { description: state.description } : {}),
36
+ colors: mapToRecord(state.colors),
37
+ typography: mapToRecord(state.typography),
38
+ rounded: mapToRecord(state.rounded),
39
+ spacing: mapToRecord(state.spacing),
40
+ components: Object.fromEntries([...state.components.entries()]
41
+ .sort(([left], [right]) => compareText(left, right))
42
+ .map(([key, component]) => [
43
+ key,
44
+ {
45
+ properties: mapToRecord(component.properties),
46
+ unresolved_refs: [...component.unresolvedRefs].sort(compareText),
47
+ },
48
+ ])),
49
+ sections: [...(state.sections ?? [])],
50
+ unknown_keys: [...(state.unknownKeys ?? [])].sort(compareText),
51
+ };
52
+ }
53
+ export function componentProperties(components) {
54
+ return Object.fromEntries(Object.entries(components).map(([key, component]) => [
55
+ key,
56
+ component.properties,
57
+ ]));
58
+ }
59
+ export function diffDesignMdRecords(before, after) {
60
+ const beforeKeys = Object.keys(before).sort(compareText);
61
+ const afterKeys = Object.keys(after).sort(compareText);
62
+ return {
63
+ added: afterKeys.filter((key) => !(key in before)),
64
+ removed: beforeKeys.filter((key) => !(key in after)),
65
+ modified: afterKeys.filter((key) => key in before && stableJson(before[key]) !== stableJson(after[key])),
66
+ };
67
+ }
68
+ function mapToRecord(map) {
69
+ return Object.fromEntries([...map.entries()]
70
+ .sort(([left], [right]) => compareText(left, right))
71
+ .map(([key, value]) => [key, toJsonValue(value)]));
72
+ }
73
+ function toJsonValue(value) {
74
+ return JSON.parse(JSON.stringify(value));
75
+ }
76
+ function compareText(left, right) {
77
+ return left < right ? -1 : left > right ? 1 : 0;
78
+ }
@@ -0,0 +1,99 @@
1
+ export declare const DESIGN_MD_TOOL_ADAPTER_SCHEMA_VERSION = 1;
2
+ export declare const DESIGN_MD_EXPORT_FORMATS: readonly ["json-tailwind", "css-tailwind", "tailwind", "dtcg", "css-vars"];
3
+ export type DesignMdExportFormat = (typeof DESIGN_MD_EXPORT_FORMATS)[number];
4
+ export type DesignMdValidationMode = "parse-validate" | "lint";
5
+ export type DesignMdFindingSeverity = "error" | "warning" | "info";
6
+ export interface DesignMdToolIdentity {
7
+ package_name: "@google/design.md";
8
+ package_version: string;
9
+ api_surface: "@google/design.md/linter";
10
+ }
11
+ export interface DesignMdFinding {
12
+ severity: DesignMdFindingSeverity;
13
+ path?: string;
14
+ message: string;
15
+ rule?: string;
16
+ }
17
+ export interface DesignMdFindingSummary {
18
+ errors: number;
19
+ warnings: number;
20
+ infos: number;
21
+ }
22
+ export interface DesignMdComponentSnapshot {
23
+ properties: Record<string, unknown>;
24
+ unresolved_refs: string[];
25
+ }
26
+ export interface DesignMdSystemSnapshot {
27
+ name?: string;
28
+ description?: string;
29
+ colors: Record<string, unknown>;
30
+ typography: Record<string, unknown>;
31
+ rounded: Record<string, unknown>;
32
+ spacing: Record<string, unknown>;
33
+ components: Record<string, DesignMdComponentSnapshot>;
34
+ sections: string[];
35
+ unknown_keys: string[];
36
+ }
37
+ export interface DesignMdValidationResult {
38
+ schema_version: typeof DESIGN_MD_TOOL_ADAPTER_SCHEMA_VERSION;
39
+ mode: DesignMdValidationMode;
40
+ tool: DesignMdToolIdentity;
41
+ valid: boolean;
42
+ findings: DesignMdFinding[];
43
+ summary: DesignMdFindingSummary;
44
+ design_system: DesignMdSystemSnapshot | null;
45
+ }
46
+ export interface DesignMdExportSuccess {
47
+ success: true;
48
+ format: DesignMdExportFormat;
49
+ media_type: "application/json" | "text/css";
50
+ content: string;
51
+ options: DesignMdExportOptions;
52
+ validation: DesignMdValidationResult;
53
+ }
54
+ export interface DesignMdExportFailure {
55
+ success: false;
56
+ format: DesignMdExportFormat;
57
+ error: string;
58
+ options: DesignMdExportOptions;
59
+ validation: DesignMdValidationResult;
60
+ }
61
+ export interface DesignMdExportOptions {
62
+ css_variable_prefix?: string;
63
+ }
64
+ export type DesignMdExportResult = DesignMdExportSuccess | DesignMdExportFailure;
65
+ export interface DesignMdTokenChangeSet {
66
+ added: string[];
67
+ removed: string[];
68
+ modified: string[];
69
+ }
70
+ export interface DesignMdDiffSuccess {
71
+ success: true;
72
+ tool: DesignMdToolIdentity;
73
+ tokens: {
74
+ colors: DesignMdTokenChangeSet;
75
+ typography: DesignMdTokenChangeSet;
76
+ rounded: DesignMdTokenChangeSet;
77
+ spacing: DesignMdTokenChangeSet;
78
+ components: DesignMdTokenChangeSet;
79
+ };
80
+ findings: {
81
+ before: DesignMdFindingSummary;
82
+ after: DesignMdFindingSummary;
83
+ delta: {
84
+ errors: number;
85
+ warnings: number;
86
+ };
87
+ };
88
+ regression: boolean;
89
+ before_validation: DesignMdValidationResult;
90
+ after_validation: DesignMdValidationResult;
91
+ }
92
+ export interface DesignMdDiffFailure {
93
+ success: false;
94
+ tool: DesignMdToolIdentity;
95
+ error: string;
96
+ before_validation: DesignMdValidationResult;
97
+ after_validation: DesignMdValidationResult;
98
+ }
99
+ export type DesignMdDiffResult = DesignMdDiffSuccess | DesignMdDiffFailure;
@@ -0,0 +1,8 @@
1
+ export const DESIGN_MD_TOOL_ADAPTER_SCHEMA_VERSION = 1;
2
+ export const DESIGN_MD_EXPORT_FORMATS = [
3
+ "json-tailwind",
4
+ "css-tailwind",
5
+ "tailwind",
6
+ "dtcg",
7
+ "css-vars",
8
+ ];
@@ -1,6 +1,6 @@
1
1
  import type { DesignResourceHandoffV1 } from "./design-resource-handoff-types.js";
2
2
  import type { DesignResourceHandoffV2, ParsedDesignResourceHandoffV2 } from "./design-resource-symbolic-fact-types.js";
3
- export type DesignResourceHandoffManifestBackedV1 = Pick<DesignResourceHandoffV1, "schema_version" | "intent" | "scope" | "provenance" | "technical_feasibility_inputs" | "resources" | "targets" | "resource_fact_closure" | "coverage" | "proposal"> & {
3
+ export type DesignResourceHandoffManifestBackedV1 = Pick<DesignResourceHandoffV1, "schema_version" | "intent" | "scope" | "provenance" | "project_design_authority" | "technical_feasibility_inputs" | "resources" | "targets" | "resource_fact_closure" | "coverage" | "proposal"> & {
4
4
  representation: "manifest_backed";
5
5
  };
6
6
  export type DesignResourceHandoffInputV1 = DesignResourceHandoffV1 | DesignResourceHandoffManifestBackedV1;
@@ -11,6 +11,9 @@ export function hydrateManifestBackedDesignResourceHandoff(descriptor, manifests
11
11
  intent: descriptor.intent,
12
12
  scope: descriptor.scope,
13
13
  provenance: descriptor.provenance,
14
+ ...(descriptor.project_design_authority === undefined
15
+ ? {}
16
+ : { project_design_authority: descriptor.project_design_authority }),
14
17
  technical_feasibility_inputs: descriptor.technical_feasibility_inputs,
15
18
  resources: descriptor.resources,
16
19
  axis_dispositions: manifest.axis_dispositions,
@@ -1,5 +1,6 @@
1
1
  import { parseDesignResourceSymbolicHandoffShape } from "./design-resource-symbolic-fact-shape.js";
2
2
  import { parseDesignResourceTechnicalFeasibilityInputs } from "./design-resource-implementation-feasibility-shape.js";
3
+ import { parseDesignAuthorityHandoffBinding } from "./design-authority-binding.js";
3
4
  import { parseDesignResourceAssetBindings, parseDesignResourceAxisDispositions, parseDesignResourceConditionExclusions, parseDesignResourceEnvironments, parseDesignResourceFactCells, parseDesignResourceLineageNodes, parseDesignResourceOracles, parseDesignResourceProofObligations, parseDesignResourceProperties, parseDesignResourceVariationAxisDispositions, parseDesignResourceVariationExclusions, parseDesignResourceVariations, } from "./design-resource-fact-manifest-shape.js";
4
5
  import { parseDesignResourceHandoffBlockers, parseDesignResourceHandoffCoverage, parseDesignResourceHandoffEvidence, parseDesignResourceHandoffFacts, parseDesignResourceHandoffResourceFactClosure, } from "./design-resource-handoff-shape-evidence.js";
5
6
  import { contractKey, stableKeys, } from "./design-resource-handoff-shape-primitives.js";
@@ -50,7 +51,7 @@ export function parseDesignResourceHandoffShape(value) {
50
51
  "coverage",
51
52
  "acceptance_blockers",
52
53
  "proposal",
53
- ], ["technical_feasibility_inputs"]);
54
+ ], ["technical_feasibility_inputs", "project_design_authority"]);
54
55
  const scope = object(root.scope, "design_resource_handoff.scope", [
55
56
  "key",
56
57
  "style_dependency",
@@ -93,6 +94,11 @@ export function parseDesignResourceHandoffShape(value) {
93
94
  model: string(provenance.model, "design_resource_handoff.provenance.model"),
94
95
  design_system_id: string(provenance.design_system_id, "design_resource_handoff.provenance.design_system_id"),
95
96
  },
97
+ ...(root.project_design_authority === undefined
98
+ ? {}
99
+ : {
100
+ project_design_authority: parseDesignAuthorityHandoffBinding(root.project_design_authority, "design_resource_handoff.project_design_authority"),
101
+ }),
96
102
  technical_feasibility_inputs: parseDesignResourceTechnicalFeasibilityInputs(root.technical_feasibility_inputs ?? []),
97
103
  resources: parseDesignResourceHandoffResources(root.resources),
98
104
  axis_dispositions: parseDesignResourceAxisDispositions(root.axis_dispositions),
@@ -134,12 +140,15 @@ function parseManifestBackedDesignResourceHandoffShape(value) {
134
140
  "resource_fact_closure",
135
141
  "coverage",
136
142
  "proposal",
137
- ], ["technical_feasibility_inputs"]);
143
+ ], ["technical_feasibility_inputs", "project_design_authority"]);
138
144
  const parsed = parseDesignResourceHandoffShape({
139
145
  schema_version: root.schema_version,
140
146
  intent: root.intent,
141
147
  scope: root.scope,
142
148
  provenance: root.provenance,
149
+ ...(root.project_design_authority === undefined
150
+ ? {}
151
+ : { project_design_authority: root.project_design_authority }),
143
152
  technical_feasibility_inputs: root.technical_feasibility_inputs ?? [],
144
153
  resources: root.resources,
145
154
  axis_dispositions: [],
@@ -170,6 +179,9 @@ function parseManifestBackedDesignResourceHandoffShape(value) {
170
179
  intent: parsed.intent,
171
180
  scope: parsed.scope,
172
181
  provenance: parsed.provenance,
182
+ ...(parsed.project_design_authority === undefined
183
+ ? {}
184
+ : { project_design_authority: parsed.project_design_authority }),
173
185
  technical_feasibility_inputs: parsed.technical_feasibility_inputs,
174
186
  resources: parsed.resources,
175
187
  targets: parsed.targets,
@@ -1,6 +1,7 @@
1
1
  import type { ExecutionTargetCapabilityV2 } from "./execution-target-capabilities.js";
2
2
  import type { DesignResourceAssetBindingV1, DesignResourceAxisDispositionV1, DesignResourceConditionCombinationDispositionV1, DesignResourceEnvironmentV1, DesignResourceFactCellV1, DesignResourceFactV1, DesignResourceLineageNodeV1, DesignResourceManifestCollectionName, DesignResourceOracleV1, DesignResourcePropertyDefinitionV1, DesignResourceProofObligationV1, DesignResourceRelationEndpointV1, DesignResourceSubjectKind, DesignResourceSubjectPresenceKind, DesignResourceSubjectVariationV1, DesignResourceVariationAxisDispositionV1, DesignResourceVariationCombinationDispositionV1 } from "./design-resource-fact-manifest-types.js";
3
3
  import type { DesignResourceImplementationFeasibilityIdentityV1, DesignResourceImplementationFeasibilityV1, DesignResourceTechnicalFeasibilityInputV1 } from "./design-resource-implementation-feasibility-types.js";
4
+ import type { DesignAuthorityHandoffBinding, DesignAuthorityHandoffResolution } from "./design-authority-types.js";
4
5
  export declare const DESIGN_RESOURCE_DIMENSIONS: readonly ["surface_flow", "visual_content", "component_control", "state_interaction", "motion", "adaptation_input", "accessibility", "assets"];
5
6
  export type DesignResourceDimension = (typeof DESIGN_RESOURCE_DIMENSIONS)[number];
6
7
  export declare const DESIGN_RESOURCE_EVIDENCE_KINDS: readonly ["frame", "component_variant", "prototype_state", "prototype_transition", "motion_spec", "motion_capture", "responsive_spec", "input_spec", "accessibility_spec", "semantic_tree", "token_spec", "asset", "annotation", "localization_spec", "system_ui_spec", "haptic_spec", "sound_spec", "sound_capture", "render_environment", "relation_spec"];
@@ -31,6 +32,7 @@ export interface DesignResourceHandoffV1 {
31
32
  model: string;
32
33
  design_system_id: string;
33
34
  };
35
+ project_design_authority?: DesignAuthorityHandoffBinding;
34
36
  technical_feasibility_inputs: DesignResourceTechnicalFeasibilityInputV1[];
35
37
  resources: DesignResourceHandoffResourceV1[];
36
38
  axis_dispositions: DesignResourceAxisDispositionV1[];
@@ -221,6 +223,7 @@ export interface ParsedDesignResourceHandoffV1 {
221
223
  export interface DesignResourceHandoffPreflightV1 extends ParsedDesignResourceHandoffV1 {
222
224
  schema_version: "design-resource-handoff-preflight-v1";
223
225
  status: "ready";
226
+ project_design_authority_resolution: DesignAuthorityHandoffResolution;
224
227
  resource_hashes: Record<string, string>;
225
228
  technical_feasibility_documents: DesignResourceImplementationFeasibilityV1[];
226
229
  technical_feasibility_identities: DesignResourceImplementationFeasibilityIdentityV1[];
@@ -14,6 +14,7 @@ import { assertProtectedRepositoryFile } from "./long-task-protected-files.js";
14
14
  import { assertDesignResourceV1HandoffCapacity } from "./design-resource-v1-capacity.js";
15
15
  import { createV1ImplementationFeasibilityTargetModel } from "./design-resource-implementation-feasibility-model.js";
16
16
  import { readAndValidateDesignResourceImplementationFeasibility } from "./design-resource-implementation-feasibility-validation.js";
17
+ import { resolveDesignAuthorityHandoffBinding } from "./design-authority-binding.js";
17
18
  export async function preflightDesignResourceHandoff(repository, handoffPath) {
18
19
  const handoffFile = await assertProtectedRepositoryFile(repository, path.resolve(repository, ...handoffPath.split("/")), "design_resource_handoff");
19
20
  await assertDesignResourceV1HandoffCapacity(handoffFile);
@@ -30,6 +31,11 @@ function isParsedSymbolicHandoff(parsed) {
30
31
  }
31
32
  export async function preflightParsedDesignResourceHandoff(repository, parsed) {
32
33
  const inputHandoff = parsed.handoff;
34
+ const authorityResolution = await resolveDesignAuthorityHandoffBinding({
35
+ repository,
36
+ style_dependency: inputHandoff.scope.style_dependency,
37
+ binding: inputHandoff.project_design_authority,
38
+ });
33
39
  if (isManifestBacked(inputHandoff) && inputHandoff.targets.length !== 1)
34
40
  invalidDesignResourceHandoff("manifest_backed_one_target_required", String(inputHandoff.targets.length));
35
41
  if (!isManifestBacked(inputHandoff))
@@ -55,14 +61,20 @@ export async function preflightParsedDesignResourceHandoff(repository, parsed) {
55
61
  return {
56
62
  schema_version: "design-resource-handoff-preflight-v1",
57
63
  status: "ready",
64
+ project_design_authority_resolution: authorityResolution,
58
65
  ...normalized,
59
66
  resource_hashes: snapshot.hashes,
60
67
  technical_feasibility_documents: feasibility.map((item) => item.document),
61
68
  technical_feasibility_identities: feasibility.map((item) => item.identity),
62
- limitations: handoff.targets.some((target) => target.source_profile.kind !== "reference" &&
63
- !feasibility.some((item) => item.index.target_ref === target.key))
64
- ? ["technical feasibility not declared"]
65
- : [],
69
+ limitations: [
70
+ ...(authorityResolution.compatibility_derived
71
+ ? ["project Design Authority identity derived from legacy DESIGN.md"]
72
+ : []),
73
+ ...(handoff.targets.some((target) => target.source_profile.kind !== "reference" &&
74
+ !feasibility.some((item) => item.index.target_ref === target.key))
75
+ ? ["technical feasibility not declared"]
76
+ : []),
77
+ ],
66
78
  manifest_identities: handoff.targets.map((target) => {
67
79
  const resourceRef = target.source_profile.fact_manifest_resource_ref;
68
80
  const resource = resources.get(resourceRef);
@@ -5,7 +5,7 @@ const EXACT_VISUAL_VALUE_PATTERNS = [
5
5
  /\b(?:color|background|font(?:-family|-size|-weight)?|line-height|border-radius|radius|padding|margin|gap|width|height|opacity|duration|easing|shadow)\s*[:=]\s*\S+/iu,
6
6
  /--[a-z0-9_-]+\s*:\s*\S+/iu,
7
7
  ];
8
- const TIME_VALUE_PATTERN = /\b\d+(?:\.\d+)?(?:ms|s)\b/giu;
8
+ const TIME_VALUE_PATTERN = /\b\d+(?:\.\d+)?\s*(?:milliseconds?|msecs?|ms|seconds?|secs?|sec|s)\b/giu;
9
9
  const MOTION_TIME_CONTEXT = /\b(?:animation|transition|motion|duration|delay|easing|timeline|keyframes?|fade|spring|stagger|enter|exit|hover|press|ease(?:-in|-out|-in-out)?)\b/iu;
10
10
  const TECHNICAL_TIME_CONTEXT = /\b(?:build|compile|bundle|generation|ci|tests?|startup|initialization|latency|timeout|network|benchmark|runtime\s+cost|render\s+cost|benchmark\s+execution)\b/iu;
11
11
  const TIME_CONTEXT_RADIUS = 80;
@@ -4,6 +4,8 @@ import { validateDesignResourceRecoverySemantics } from "./design-resource-recov
4
4
  import { decodeDesignResourceText } from "./design-resource-recovery-text.js";
5
5
  import { validateDesignResourceAuthoritySourceItems } from "./design-resource-recovery-source-authority.js";
6
6
  import { validateSelectedResourceRepositoryBindings } from "./design-resource-recovery-repository-bindings.js";
7
+ import { inspectDesignAuthorityClosure, loadCurrentDesignAuthorityClosure, } from "./design-authority-closure.js";
8
+ import { DESIGN_AUTHORITY_ENTRY_PATH } from "./design-authority-types.js";
7
9
  export async function loadCurrentDesignResourceRecoveryCheckpoint(repository, sessionId, options = {}) {
8
10
  const snapshot = await readRecoveryCheckpointFile(repository, sessionId);
9
11
  const checkpoint = parseDesignResourceRecoveryCheckpoint(snapshot.bytes.toString("utf8"));
@@ -27,8 +29,28 @@ export async function loadCurrentDesignResourceRecoveryCheckpoint(repository, se
27
29
  };
28
30
  }
29
31
  export async function validateDesignResourceRepositoryAuthority(repository, authority) {
32
+ if (authority.kind === "repository-closure") {
33
+ const current = await loadCurrentDesignAuthorityClosure(repository);
34
+ for (const field of [
35
+ "format_version",
36
+ "entry_path",
37
+ "manifest_path",
38
+ "closure_digest",
39
+ "revision",
40
+ ])
41
+ if (current.identity[field] !== authority[field])
42
+ invalid(`design_authority_closure_mismatch:${field}:${String(authority[field])}:${String(current.identity[field])}`);
43
+ return;
44
+ }
30
45
  if (authority.kind !== "repository-file")
31
46
  return;
47
+ if (authority.locator !== DESIGN_AUTHORITY_ENTRY_PATH)
48
+ invalid(`legacy_design_authority_locator:${authority.locator}`);
49
+ const inspection = await inspectDesignAuthorityClosure(repository);
50
+ if (inspection.status !== "valid")
51
+ invalid("legacy_design_authority_invalid");
52
+ if (inspection.mode !== "legacy")
53
+ invalid("legacy_design_authority_bundle_not_allowed");
32
54
  const snapshot = await readRecoveryRepositoryFile(repository, authority.locator, "design_resource_recovery_design_authority");
33
55
  assertDigest("design_authority", snapshot.raw_byte_digest, authority.raw_byte_digest);
34
56
  }
@@ -1,4 +1,5 @@
1
- import { arrayOf, digest, integer, object, oneOf, stringSet, text, unknownSemantics, } from "./design-resource-recovery-codec-primitives.js";
1
+ import { arrayOf, digest, integer, literal, object, oneOf, stringSet, text, unknownSemantics, } from "./design-resource-recovery-codec-primitives.js";
2
+ import { DESIGN_AUTHORITY_ENTRY_PATH, DESIGN_AUTHORITY_IDENTITY_FORMAT_VERSION, DESIGN_AUTHORITY_MANIFEST_PATH, isDesignAuthorityDigest, } from "./design-authority-types.js";
2
3
  export const DESIGN_RESOURCE_ORIGINS = [
3
4
  "user-direct",
4
5
  "necessary-derived",
@@ -156,24 +157,80 @@ export function parseDelta(value, label) {
156
157
  };
157
158
  }
158
159
  export function parseAuthorityIdentity(value, label) {
159
- const first = object(value, label, ["kind"], ["locator", "raw_byte_digest", "rationale"]);
160
- const kind = oneOf(first.kind, ["repository-file", "external-immutable", "not-applicable"], `${label}.kind`);
160
+ const first = object(value, label, ["kind"], [
161
+ "locator",
162
+ "raw_byte_digest",
163
+ "rationale",
164
+ "format_version",
165
+ "entry_path",
166
+ "manifest_path",
167
+ "closure_digest",
168
+ "revision",
169
+ ]);
170
+ const kind = oneOf(first.kind, [
171
+ "repository-closure",
172
+ "repository-file",
173
+ "external-immutable",
174
+ "not-applicable",
175
+ ], `${label}.kind`);
176
+ if (kind === "repository-closure") {
177
+ rejectFields(first, label, ["locator", "raw_byte_digest", "rationale"]);
178
+ literal(first.format_version, DESIGN_AUTHORITY_IDENTITY_FORMAT_VERSION, `${label}.format_version`);
179
+ literal(first.entry_path, DESIGN_AUTHORITY_ENTRY_PATH, `${label}.entry_path`);
180
+ const manifestPath = parseNullableManifestPath(first.manifest_path, `${label}.manifest_path`);
181
+ if (!isDesignAuthorityDigest(first.closure_digest))
182
+ throw new Error(`design_resource_recovery_invalid:${label}.closure_digest:sha256_required`);
183
+ const revision = first.revision === null
184
+ ? null
185
+ : text(first.revision, `${label}.revision`);
186
+ return {
187
+ kind,
188
+ format_version: DESIGN_AUTHORITY_IDENTITY_FORMAT_VERSION,
189
+ entry_path: DESIGN_AUTHORITY_ENTRY_PATH,
190
+ manifest_path: manifestPath,
191
+ closure_digest: first.closure_digest,
192
+ revision,
193
+ };
194
+ }
161
195
  if (kind === "not-applicable") {
162
- if ("locator" in first || "raw_byte_digest" in first)
163
- throw new Error(`design_resource_recovery_invalid:${label}:not_applicable_identity_fields`);
196
+ rejectFields(first, label, [
197
+ "locator",
198
+ "raw_byte_digest",
199
+ "format_version",
200
+ "entry_path",
201
+ "manifest_path",
202
+ "closure_digest",
203
+ "revision",
204
+ ]);
164
205
  return {
165
206
  kind,
166
207
  rationale: text(first.rationale, `${label}.rationale`),
167
208
  };
168
209
  }
169
- if ("rationale" in first)
170
- throw new Error(`design_resource_recovery_invalid:${label}:unexpected_rationale`);
210
+ rejectFields(first, label, [
211
+ "rationale",
212
+ "format_version",
213
+ "entry_path",
214
+ "manifest_path",
215
+ "closure_digest",
216
+ "revision",
217
+ ]);
171
218
  return {
172
219
  kind,
173
220
  locator: text(first.locator, `${label}.locator`),
174
221
  raw_byte_digest: digest(first.raw_byte_digest, `${label}.raw_byte_digest`),
175
222
  };
176
223
  }
224
+ function parseNullableManifestPath(value, label) {
225
+ if (value === null)
226
+ return null;
227
+ return literal(value, DESIGN_AUTHORITY_MANIFEST_PATH, label);
228
+ }
229
+ function rejectFields(row, label, fields) {
230
+ for (const field of fields)
231
+ if (Object.hasOwn(row, field))
232
+ throw new Error(`design_resource_recovery_invalid:${label}:unexpected_field:${field}`);
233
+ }
177
234
  export function parseDecisionAuthority(value, label) {
178
235
  const result = text(value, label);
179
236
  if (result === "explicit-user" || result === "none")
@@ -1,6 +1,7 @@
1
1
  import { DESIGN_RESOURCE_AUTHORITY_PROJECTION_SCHEMA, DESIGN_RESOURCE_RECOVERY_INPUT_SCHEMA, DESIGN_RESOURCE_RECOVERY_SCHEMA } from "./design-resource-recovery-schema.js";
2
2
  import type { DesignResourceRecoveryWriteback, DesignResourceWritebackInput } from "./design-resource-recovery-patch-types.js";
3
3
  import type { SourceItemKind } from "./long-task-source-authority-types.js";
4
+ import type { DesignAuthorityIdentityV1 } from "./design-authority-types.js";
4
5
  export type DesignResourceDecisionOrigin = "user-direct" | "necessary-derived" | "repository-evidence-backed" | "provider-suggested";
5
6
  export type DesignResourceDecisionStatus = "accepted" | "rejected" | "unresolved";
6
7
  export type DesignResourceDecisionAuthority = "explicit-user" | "none" | `delegated:${string}`;
@@ -71,7 +72,9 @@ export interface DesignResourceDelta {
71
72
  explicitly_unchanged_keys: string[];
72
73
  status: DesignResourceDecisionStatus;
73
74
  }
74
- export type DesignResourceAuthorityIdentity = {
75
+ export type DesignResourceAuthorityIdentity = ({
76
+ kind: "repository-closure";
77
+ } & DesignAuthorityIdentityV1) | {
75
78
  kind: "repository-file" | "external-immutable";
76
79
  locator: string;
77
80
  raw_byte_digest: string;
@@ -1,6 +1,7 @@
1
1
  import { parseDesignResourceHandoffResources } from "./design-resource-handoff-shape-structure.js";
2
2
  import { contractKey, sourceItemKeys, stableKey, stableKeys, } from "./design-resource-handoff-shape-primitives.js";
3
3
  import { parseDesignResourceTechnicalFeasibilityInputs } from "./design-resource-implementation-feasibility-shape.js";
4
+ import { parseDesignAuthorityHandoffBinding } from "./design-authority-binding.js";
4
5
  import { array, literal, object, repositoryFile, string, strings, } from "./long-task-shape-primitives.js";
5
6
  export { parseDesignResourceObservableRuleManifestJson, parseDesignResourceObservableRuleManifestShape, } from "./design-resource-symbolic-manifest-shape.js";
6
7
  export function parseDesignResourceSymbolicHandoffShape(value) {
@@ -15,13 +16,18 @@ export function parseDesignResourceSymbolicHandoffShape(value) {
15
16
  "targets",
16
17
  "coverage",
17
18
  "proposal",
18
- ], ["technical_feasibility_inputs"]);
19
+ ], ["technical_feasibility_inputs", "project_design_authority"]);
19
20
  return {
20
21
  schema_version: literal(root.schema_version, ["design-resource-handoff-v2"], `${label}.schema_version`),
21
22
  representation: literal(root.representation, ["symbolic_rules_v2"], `${label}.representation`),
22
23
  intent: literal(root.intent, ["implementation_handoff"], `${label}.intent`),
23
24
  scope: parseScope(root.scope, label),
24
25
  provenance: parseProvenance(root.provenance, label),
26
+ ...(root.project_design_authority === undefined
27
+ ? {}
28
+ : {
29
+ project_design_authority: parseDesignAuthorityHandoffBinding(root.project_design_authority, `${label}.project_design_authority`),
30
+ }),
25
31
  technical_feasibility_inputs: parseDesignResourceTechnicalFeasibilityInputs(root.technical_feasibility_inputs ?? [], `${label}.technical_feasibility_inputs`),
26
32
  resources: parseDesignResourceHandoffResources(root.resources),
27
33
  targets: parseTargets(root.targets, label),
@@ -4,6 +4,7 @@ import type { DesignResourceHandoffBlockerV1, DesignResourceHandoffResourceV1, D
4
4
  import type { CompiledSymbolicDenotationV1, SymbolicDenotationAxisDomain, SymbolicDenotationDisposition, SymbolicDenotationPredicate, SymbolicExtensionalPointV1 } from "./symbolic-denotation-types.js";
5
5
  import type { DesignResourceSymbolicNoninterferenceCertificateV2 } from "./design-resource-symbolic-noninterference-types.js";
6
6
  import type { DesignResourceImplementationFeasibilityIdentityV1, DesignResourceImplementationFeasibilityV1, DesignResourceTechnicalFeasibilityInputV1 } from "./design-resource-implementation-feasibility-types.js";
7
+ import type { DesignAuthorityHandoffBinding, DesignAuthorityHandoffResolution } from "./design-authority-types.js";
7
8
  export type { DesignResourceSymbolicNoninterferenceArtifactV2, DesignResourceSymbolicNoninterferenceCertificateV2, DesignResourceSymbolicNoninterferenceDerivedResultV2, DesignResourceSymbolicNoninterferenceEquivalenceCaseV2, DesignResourceSymbolicNoninterferenceFailureWitnessV1, DesignResourceSymbolicNoninterferenceInputBindingV2, DesignResourceSymbolicNoninterferenceProofMethodV2, DesignResourceSymbolicNoninterferenceProofV2, DesignResourceSymbolicStaticDependencyNodeV2, DesignResourceSymbolicStaticDependencyRootV2, } from "./design-resource-symbolic-noninterference-types.js";
8
9
  export interface DesignResourceSymbolicPopulationV2 {
9
10
  key: string;
@@ -176,6 +177,7 @@ export interface DesignResourceHandoffV2 {
176
177
  model: string;
177
178
  design_system_id: string;
178
179
  };
180
+ project_design_authority?: DesignAuthorityHandoffBinding;
179
181
  technical_feasibility_inputs: DesignResourceTechnicalFeasibilityInputV1[];
180
182
  resources: DesignResourceHandoffResourceV1[];
181
183
  targets: DesignResourceSymbolicHandoffTargetV2[];
@@ -199,6 +201,7 @@ export interface DesignResourceSymbolicRuleProjectionV2 {
199
201
  export interface DesignResourceHandoffPreflightV2 extends ParsedDesignResourceHandoffV2 {
200
202
  preflight_schema_version: "design-resource-handoff-preflight-v2";
201
203
  status: "ready";
204
+ project_design_authority_resolution: DesignAuthorityHandoffResolution;
202
205
  manifest: DesignResourceObservableRuleManifestV2;
203
206
  resource_hashes: Record<string, string>;
204
207
  technical_feasibility_documents: DesignResourceImplementationFeasibilityV1[];
@@ -9,10 +9,16 @@ import { assertProtectedRepositoryFile } from "./long-task-protected-files.js";
9
9
  import { sha256Hex } from "./strict-codec.js";
10
10
  import { createV2ImplementationFeasibilityTargetModel } from "./design-resource-implementation-feasibility-model.js";
11
11
  import { readAndValidateDesignResourceImplementationFeasibility } from "./design-resource-implementation-feasibility-validation.js";
12
+ import { resolveDesignAuthorityHandoffBinding } from "./design-authority-binding.js";
12
13
  export { designResourceSymbolicCertificateKey, designResourceSymbolicCombinedRuleDigest, designResourceSymbolicDependencyEdge, designResourceSymbolicNoninterferenceProofDigest, designResourceSymbolicObligationKey, designResourceSymbolicRuleKey, } from "./design-resource-symbolic-validation-support.js";
13
14
  const V2_MANIFEST_MAX_BYTES = 8_388_608;
14
15
  export async function preflightParsedDesignResourceSymbolicHandoff(repository, parsed) {
15
16
  const { handoff } = parsed;
17
+ const authorityResolution = await resolveDesignAuthorityHandoffBinding({
18
+ repository,
19
+ style_dependency: handoff.scope.style_dependency,
20
+ binding: handoff.project_design_authority,
21
+ });
16
22
  validateHandoffIdentities(handoff);
17
23
  if (handoff.targets.length !== 1)
18
24
  invalid("v2_one_target_required", String(handoff.targets.length));
@@ -49,13 +55,19 @@ export async function preflightParsedDesignResourceSymbolicHandoff(repository, p
49
55
  ...parsed,
50
56
  preflight_schema_version: "design-resource-handoff-preflight-v2",
51
57
  status: "ready",
58
+ project_design_authority_resolution: authorityResolution,
52
59
  manifest,
53
60
  resource_hashes: resourceHashes,
54
61
  technical_feasibility_documents: feasibility.map((item) => item.document),
55
62
  technical_feasibility_identities: feasibility.map((item) => item.identity),
56
- limitations: target.source_profile.kind !== "reference" && !feasibility.length
57
- ? ["technical feasibility not declared"]
58
- : [],
63
+ limitations: [
64
+ ...(authorityResolution.compatibility_derived
65
+ ? ["project Design Authority identity derived from legacy DESIGN.md"]
66
+ : []),
67
+ ...(target.source_profile.kind !== "reference" && !feasibility.length
68
+ ? ["technical feasibility not declared"]
69
+ : []),
70
+ ],
59
71
  rule_projections: validated.ruleProjections,
60
72
  metrics: validated.metrics,
61
73
  };
@@ -1,6 +1,7 @@
1
+ import type { ContextDoctorOptions } from "./context-doctor/context-doctor-types.js";
1
2
  export interface DoctorReport {
2
3
  info: string[];
3
4
  warnings: string[];
4
5
  errors: string[];
5
6
  }
6
- export declare function runDoctor(projectRoot: string): Promise<DoctorReport>;
7
+ export declare function runDoctor(projectRoot: string, options?: ContextDoctorOptions): Promise<DoctorReport>;