project-tiny-context-harness 0.8.11 → 0.8.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (395) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +514 -472
  3. package/assets/README.md +803 -749
  4. package/assets/README.zh-CN.md +468 -431
  5. package/assets/agents/.gitkeep +1 -1
  6. package/assets/agents/AGENTS_CORE.md +22 -24
  7. package/assets/agents/long-task-implementation.toml +15 -0
  8. package/assets/context_templates/architecture.md +18 -18
  9. package/assets/context_templates/area.md +30 -30
  10. package/assets/context_templates/context.toml +24 -24
  11. package/assets/context_templates/deployment.md +35 -35
  12. package/assets/context_templates/global.md +56 -56
  13. package/assets/context_templates/product-surface-contract.md +70 -70
  14. package/assets/context_templates/screen-contract.md +189 -189
  15. package/assets/context_templates/verification.md +25 -25
  16. package/assets/github/.gitkeep +1 -1
  17. package/assets/github/harness.yml +39 -39
  18. package/assets/make/.gitkeep +1 -1
  19. package/assets/make/ty-context.mk +48 -48
  20. package/assets/skills/context_development_engineer/SKILL.md +72 -185
  21. package/assets/skills/context_full_project_export/SKILL.md +28 -28
  22. package/assets/skills/context_harness_upgrade/SKILL.md +60 -60
  23. package/assets/skills/context_product_plan/SKILL.md +35 -101
  24. package/assets/skills/context_surface_contract/SKILL.md +194 -191
  25. package/assets/skills/context_uiux_design/SKILL.md +49 -172
  26. package/assets/skills/design-resource-authoring/SKILL.md +54 -88
  27. package/assets/skills/design-resource-authoring/references/downstream-handoff.md +51 -163
  28. package/assets/skills/design-resource-authoring/references/formal-selected-web-app-handoff.md +96 -0
  29. package/assets/skills/design-resource-authoring/references/open-design-provider.md +140 -120
  30. package/assets/skills/design-resource-authoring/references/recovery-and-writeback.md +199 -0
  31. package/assets/skills/design-resource-authoring/references/resource-selection.md +158 -181
  32. package/assets/skills/design-system-authoring/SKILL.md +57 -57
  33. package/assets/skills/design-system-authoring/agents/openai.yaml +6 -6
  34. package/assets/skills/design-system-authoring/references/authority-adoption.md +48 -48
  35. package/assets/skills/design-system-authoring/references/open-design-design-system-provider.md +110 -110
  36. package/assets/skills/long-task-workflow/SKILL.md +71 -106
  37. package/assets/skills/long-task-workflow/agents/openai.yaml +1 -1
  38. package/assets/skills/long-task-workflow/references/authority-lifecycle.md +71 -69
  39. package/assets/skills/long-task-workflow/references/contract-authoring.md +110 -101
  40. package/assets/skills/long-task-workflow/references/evidence-design.md +99 -78
  41. package/assets/skills/long-task-workflow/references/source-authoring.md +90 -90
  42. package/assets/tools/validate_context.py +442 -442
  43. package/dist/commands/design-resource-recovery.d.ts +1 -0
  44. package/dist/commands/design-resource-recovery.js +152 -0
  45. package/dist/commands/design-resource.js +29 -3
  46. package/dist/commands/enable.js +2 -0
  47. package/dist/commands/index.js +2 -2
  48. package/dist/commands/long-task-revision.js +8 -7
  49. package/dist/commands/sync.js +2 -0
  50. package/dist/index.d.ts +3 -3
  51. package/dist/index.js +2 -0
  52. package/dist/lib/compact-authoring-support.d.ts +22 -0
  53. package/dist/lib/compact-authoring-support.js +143 -0
  54. package/dist/lib/compact-shared-structure-authoring.d.ts +5 -0
  55. package/dist/lib/compact-shared-structure-authoring.js +9 -0
  56. package/dist/lib/compact-shared-structure-types.d.ts +61 -0
  57. package/dist/lib/compact-shared-structure-types.js +1 -0
  58. package/dist/lib/compact-shared-structure-validation.d.ts +2 -0
  59. package/dist/lib/compact-shared-structure-validation.js +159 -0
  60. package/dist/lib/compact-shared-structures.d.ts +3 -0
  61. package/dist/lib/compact-shared-structures.js +204 -0
  62. package/dist/lib/design-resource-fact-enums.d.ts +4 -0
  63. package/dist/lib/design-resource-fact-enums.js +12 -0
  64. package/dist/lib/design-resource-fact-manifest-shape-evidence.js +2 -2
  65. package/dist/lib/design-resource-fact-policy.d.ts +2 -2
  66. package/dist/lib/design-resource-fact-types.d.ts +2 -2
  67. package/dist/lib/design-resource-handoff-bundle-draft.js +4 -2
  68. package/dist/lib/design-resource-handoff-input-types.d.ts +3 -0
  69. package/dist/lib/design-resource-handoff-parser.d.ts +2 -2
  70. package/dist/lib/design-resource-handoff-parser.js +2 -2
  71. package/dist/lib/design-resource-handoff-shape.d.ts +2 -0
  72. package/dist/lib/design-resource-handoff-shape.js +10 -0
  73. package/dist/lib/design-resource-handoff-snapshot.js +4 -0
  74. package/dist/lib/design-resource-handoff-validation.d.ts +4 -1
  75. package/dist/lib/design-resource-handoff-validation.js +11 -0
  76. package/dist/lib/design-resource-handoff-web-dependency-validation.d.ts +4 -2
  77. package/dist/lib/design-resource-reconciliation-codec.d.ts +2 -0
  78. package/dist/lib/design-resource-reconciliation-codec.js +174 -0
  79. package/dist/lib/design-resource-reconciliation-types.d.ts +62 -0
  80. package/dist/lib/design-resource-reconciliation-types.js +1 -0
  81. package/dist/lib/design-resource-reconciliation.d.ts +3 -0
  82. package/dist/lib/design-resource-reconciliation.js +224 -0
  83. package/dist/lib/design-resource-recovery-authority-policy.d.ts +8 -0
  84. package/dist/lib/design-resource-recovery-authority-policy.js +123 -0
  85. package/dist/lib/design-resource-recovery-catalog-resources.d.ts +6 -0
  86. package/dist/lib/design-resource-recovery-catalog-resources.js +121 -0
  87. package/dist/lib/design-resource-recovery-catalog-shape.d.ts +3 -0
  88. package/dist/lib/design-resource-recovery-catalog-shape.js +104 -0
  89. package/dist/lib/design-resource-recovery-catalog.d.ts +9 -0
  90. package/dist/lib/design-resource-recovery-catalog.js +103 -0
  91. package/dist/lib/design-resource-recovery-cleanup.d.ts +2 -0
  92. package/dist/lib/design-resource-recovery-cleanup.js +11 -0
  93. package/dist/lib/design-resource-recovery-codec-primitives.d.ts +19 -0
  94. package/dist/lib/design-resource-recovery-codec-primitives.js +92 -0
  95. package/dist/lib/design-resource-recovery-codec.d.ts +4 -0
  96. package/dist/lib/design-resource-recovery-codec.js +93 -0
  97. package/dist/lib/design-resource-recovery-current.d.ts +9 -0
  98. package/dist/lib/design-resource-recovery-current.js +41 -0
  99. package/dist/lib/design-resource-recovery-delta-policy.d.ts +5 -0
  100. package/dist/lib/design-resource-recovery-delta-policy.js +108 -0
  101. package/dist/lib/design-resource-recovery-files.d.ts +37 -0
  102. package/dist/lib/design-resource-recovery-files.js +204 -0
  103. package/dist/lib/design-resource-recovery-final-disposition-shape.d.ts +2 -0
  104. package/dist/lib/design-resource-recovery-final-disposition-shape.js +47 -0
  105. package/dist/lib/design-resource-recovery-patch-types.d.ts +54 -0
  106. package/dist/lib/design-resource-recovery-patch-types.js +1 -0
  107. package/dist/lib/design-resource-recovery-replay.d.ts +7 -0
  108. package/dist/lib/design-resource-recovery-replay.js +112 -0
  109. package/dist/lib/design-resource-recovery-repository-bindings.d.ts +9 -0
  110. package/dist/lib/design-resource-recovery-repository-bindings.js +49 -0
  111. package/dist/lib/design-resource-recovery-schema.d.ts +5 -0
  112. package/dist/lib/design-resource-recovery-schema.js +5 -0
  113. package/dist/lib/design-resource-recovery-shape.d.ts +10 -0
  114. package/dist/lib/design-resource-recovery-shape.js +184 -0
  115. package/dist/lib/design-resource-recovery-source-authority.d.ts +5 -0
  116. package/dist/lib/design-resource-recovery-source-authority.js +219 -0
  117. package/dist/lib/design-resource-recovery-text.d.ts +17 -0
  118. package/dist/lib/design-resource-recovery-text.js +186 -0
  119. package/dist/lib/design-resource-recovery-types.d.ts +197 -0
  120. package/dist/lib/design-resource-recovery-types.js +1 -0
  121. package/dist/lib/design-resource-recovery-writeback-policy.d.ts +5 -0
  122. package/dist/lib/design-resource-recovery-writeback-policy.js +326 -0
  123. package/dist/lib/design-resource-recovery-writeback-shape.d.ts +6 -0
  124. package/dist/lib/design-resource-recovery-writeback-shape.js +155 -0
  125. package/dist/lib/design-resource-recovery.d.ts +44 -0
  126. package/dist/lib/design-resource-recovery.js +216 -0
  127. package/dist/lib/design-resource-symbolic-applicability-authority.d.ts +7 -0
  128. package/dist/lib/design-resource-symbolic-applicability-authority.js +19 -0
  129. package/dist/lib/design-resource-symbolic-applicability-policy.d.ts +12 -0
  130. package/dist/lib/design-resource-symbolic-applicability-policy.js +79 -0
  131. package/dist/lib/design-resource-symbolic-applicability-profiles.d.ts +8 -0
  132. package/dist/lib/design-resource-symbolic-applicability-profiles.js +55 -0
  133. package/dist/lib/design-resource-symbolic-applicability-shape.d.ts +2 -0
  134. package/dist/lib/design-resource-symbolic-applicability-shape.js +76 -0
  135. package/dist/lib/design-resource-symbolic-applicability-validation.d.ts +7 -0
  136. package/dist/lib/design-resource-symbolic-applicability-validation.js +128 -0
  137. package/dist/lib/design-resource-symbolic-compilation.d.ts +3 -0
  138. package/dist/lib/design-resource-symbolic-compilation.js +13 -0
  139. package/dist/lib/design-resource-symbolic-denotation.d.ts +3 -0
  140. package/dist/lib/design-resource-symbolic-denotation.js +167 -0
  141. package/dist/lib/design-resource-symbolic-disposition-validation.d.ts +4 -0
  142. package/dist/lib/design-resource-symbolic-disposition-validation.js +28 -0
  143. package/dist/lib/design-resource-symbolic-fact-policy.d.ts +12 -0
  144. package/dist/lib/design-resource-symbolic-fact-policy.js +12 -0
  145. package/dist/lib/design-resource-symbolic-fact-shape.d.ts +3 -0
  146. package/dist/lib/design-resource-symbolic-fact-shape.js +138 -0
  147. package/dist/lib/design-resource-symbolic-fact-types.d.ts +213 -0
  148. package/dist/lib/design-resource-symbolic-fact-types.js +1 -0
  149. package/dist/lib/design-resource-symbolic-fact-validation.d.ts +3 -0
  150. package/dist/lib/design-resource-symbolic-fact-validation.js +86 -0
  151. package/dist/lib/design-resource-symbolic-indexes.d.ts +23 -0
  152. package/dist/lib/design-resource-symbolic-indexes.js +54 -0
  153. package/dist/lib/design-resource-symbolic-manifest-shape.d.ts +3 -0
  154. package/dist/lib/design-resource-symbolic-manifest-shape.js +155 -0
  155. package/dist/lib/design-resource-symbolic-manifest-validation.d.ts +6 -0
  156. package/dist/lib/design-resource-symbolic-manifest-validation.js +132 -0
  157. package/dist/lib/design-resource-symbolic-noninterference-artifact.d.ts +33 -0
  158. package/dist/lib/design-resource-symbolic-noninterference-artifact.js +110 -0
  159. package/dist/lib/design-resource-symbolic-noninterference-equivalence.d.ts +3 -0
  160. package/dist/lib/design-resource-symbolic-noninterference-equivalence.js +77 -0
  161. package/dist/lib/design-resource-symbolic-noninterference-recompute.d.ts +4 -0
  162. package/dist/lib/design-resource-symbolic-noninterference-recompute.js +146 -0
  163. package/dist/lib/design-resource-symbolic-noninterference-scope.d.ts +7 -0
  164. package/dist/lib/design-resource-symbolic-noninterference-scope.js +49 -0
  165. package/dist/lib/design-resource-symbolic-noninterference-shape.d.ts +2 -0
  166. package/dist/lib/design-resource-symbolic-noninterference-shape.js +152 -0
  167. package/dist/lib/design-resource-symbolic-noninterference-types.d.ts +103 -0
  168. package/dist/lib/design-resource-symbolic-noninterference-types.js +1 -0
  169. package/dist/lib/design-resource-symbolic-noninterference-validation.d.ts +5 -0
  170. package/dist/lib/design-resource-symbolic-noninterference-validation.js +62 -0
  171. package/dist/lib/design-resource-symbolic-oracle-fingerprint.d.ts +1 -0
  172. package/dist/lib/design-resource-symbolic-oracle-fingerprint.js +47 -0
  173. package/dist/lib/design-resource-symbolic-predicate-shape.d.ts +6 -0
  174. package/dist/lib/design-resource-symbolic-predicate-shape.js +123 -0
  175. package/dist/lib/design-resource-symbolic-production-closure.d.ts +4 -0
  176. package/dist/lib/design-resource-symbolic-production-closure.js +144 -0
  177. package/dist/lib/design-resource-symbolic-proof-authority-validation.d.ts +10 -0
  178. package/dist/lib/design-resource-symbolic-proof-authority-validation.js +68 -0
  179. package/dist/lib/design-resource-symbolic-proof-validation.d.ts +10 -0
  180. package/dist/lib/design-resource-symbolic-proof-validation.js +89 -0
  181. package/dist/lib/design-resource-symbolic-region-validation.d.ts +19 -0
  182. package/dist/lib/design-resource-symbolic-region-validation.js +146 -0
  183. package/dist/lib/design-resource-symbolic-resource-validation.d.ts +5 -0
  184. package/dist/lib/design-resource-symbolic-resource-validation.js +90 -0
  185. package/dist/lib/design-resource-symbolic-rule-shape.d.ts +27 -0
  186. package/dist/lib/design-resource-symbolic-rule-shape.js +158 -0
  187. package/dist/lib/design-resource-symbolic-safety-validation.d.ts +6 -0
  188. package/dist/lib/design-resource-symbolic-safety-validation.js +29 -0
  189. package/dist/lib/design-resource-symbolic-source-ir-evaluation.d.ts +19 -0
  190. package/dist/lib/design-resource-symbolic-source-ir-evaluation.js +74 -0
  191. package/dist/lib/design-resource-symbolic-source-ir-evidence.d.ts +44 -0
  192. package/dist/lib/design-resource-symbolic-source-ir-evidence.js +88 -0
  193. package/dist/lib/design-resource-symbolic-source-ir-oracle.d.ts +13 -0
  194. package/dist/lib/design-resource-symbolic-source-ir-oracle.js +96 -0
  195. package/dist/lib/design-resource-symbolic-source-ir-proof.d.ts +14 -0
  196. package/dist/lib/design-resource-symbolic-source-ir-proof.js +98 -0
  197. package/dist/lib/design-resource-symbolic-source-ir-shape.d.ts +2 -0
  198. package/dist/lib/design-resource-symbolic-source-ir-shape.js +38 -0
  199. package/dist/lib/design-resource-symbolic-source-ir-types.d.ts +17 -0
  200. package/dist/lib/design-resource-symbolic-source-ir-types.js +2 -0
  201. package/dist/lib/design-resource-symbolic-static-dependency-validation.d.ts +2 -0
  202. package/dist/lib/design-resource-symbolic-static-dependency-validation.js +83 -0
  203. package/dist/lib/design-resource-symbolic-structural-closure-validation.d.ts +6 -0
  204. package/dist/lib/design-resource-symbolic-structural-closure-validation.js +79 -0
  205. package/dist/lib/design-resource-symbolic-validation-support.d.ts +29 -0
  206. package/dist/lib/design-resource-symbolic-validation-support.js +111 -0
  207. package/dist/lib/design-resource-v1-capacity-header.d.ts +8 -0
  208. package/dist/lib/design-resource-v1-capacity-header.js +231 -0
  209. package/dist/lib/design-resource-v1-capacity.d.ts +5 -0
  210. package/dist/lib/design-resource-v1-capacity.js +45 -0
  211. package/dist/lib/init.js +1 -0
  212. package/dist/lib/long-task-acceptance-shape.js +8 -2
  213. package/dist/lib/long-task-activation-validation.js +13 -3
  214. package/dist/lib/long-task-admitted-observation-records.d.ts +25 -0
  215. package/dist/lib/long-task-admitted-observation-records.js +40 -0
  216. package/dist/lib/long-task-admitted-observation.d.ts +93 -0
  217. package/dist/lib/long-task-admitted-observation.js +201 -0
  218. package/dist/lib/long-task-artifacts.d.ts +1 -0
  219. package/dist/lib/long-task-artifacts.js +1 -0
  220. package/dist/lib/long-task-authority-material-diff.js +1 -0
  221. package/dist/lib/long-task-authority-policy.d.ts +5 -0
  222. package/dist/lib/long-task-authority-policy.js +5 -0
  223. package/dist/lib/long-task-authority-revision-details.js +3 -1
  224. package/dist/lib/long-task-authority.js +2 -1
  225. package/dist/lib/long-task-check-execution-policy.js +5 -0
  226. package/dist/lib/long-task-check-runner.d.ts +2 -2
  227. package/dist/lib/long-task-check-runner.js +440 -23
  228. package/dist/lib/long-task-claims.d.ts +18 -0
  229. package/dist/lib/long-task-claims.js +35 -0
  230. package/dist/lib/long-task-codex-agent-profile.d.ts +42 -0
  231. package/dist/lib/long-task-codex-agent-profile.js +276 -0
  232. package/dist/lib/long-task-compact-authoring-projections.d.ts +12 -0
  233. package/dist/lib/long-task-compact-authoring-projections.js +67 -0
  234. package/dist/lib/long-task-compact-authoring.d.ts +3 -0
  235. package/dist/lib/long-task-compact-authoring.js +173 -0
  236. package/dist/lib/long-task-compact-carrier.d.ts +7 -0
  237. package/dist/lib/long-task-compact-carrier.js +132 -0
  238. package/dist/lib/long-task-compact-parser.d.ts +14 -0
  239. package/dist/lib/long-task-compact-parser.js +123 -0
  240. package/dist/lib/long-task-compact-primitives.d.ts +22 -0
  241. package/dist/lib/long-task-compact-primitives.js +132 -0
  242. package/dist/lib/long-task-compact-projections.d.ts +4 -0
  243. package/dist/lib/long-task-compact-projections.js +153 -0
  244. package/dist/lib/long-task-compact-structure-targets.d.ts +2 -0
  245. package/dist/lib/long-task-compact-structure-targets.js +91 -0
  246. package/dist/lib/long-task-conformance-policy.js +3 -1
  247. package/dist/lib/long-task-counterfactual-claim-policy.d.ts +3 -4
  248. package/dist/lib/long-task-counterfactual-claim-policy.js +11 -3
  249. package/dist/lib/long-task-counterfactual-sandbox.d.ts +1 -1
  250. package/dist/lib/long-task-counterfactual-sandbox.js +8 -5
  251. package/dist/lib/long-task-counterfactual-types.d.ts +2 -0
  252. package/dist/lib/long-task-delivery-compiler.js +2 -0
  253. package/dist/lib/long-task-delivery-parser.d.ts +1 -0
  254. package/dist/lib/long-task-delivery-parser.js +38 -6
  255. package/dist/lib/long-task-design-resource-handoff.d.ts +2 -1
  256. package/dist/lib/long-task-design-resource-handoff.js +71 -11
  257. package/dist/lib/long-task-design-resource-method-binding.d.ts +8 -1
  258. package/dist/lib/long-task-design-resource-method-binding.js +150 -0
  259. package/dist/lib/long-task-evidence-capability-codec.js +256 -34
  260. package/dist/lib/long-task-evidence-capability-policy.d.ts +3 -2
  261. package/dist/lib/long-task-evidence-capability-policy.js +142 -8
  262. package/dist/lib/long-task-evidence-capability-runtime.d.ts +5 -2
  263. package/dist/lib/long-task-evidence-capability-runtime.js +420 -68
  264. package/dist/lib/long-task-evidence-capability-types.d.ts +70 -2
  265. package/dist/lib/long-task-evidence-sensitivity-policy.d.ts +9 -0
  266. package/dist/lib/long-task-evidence-sensitivity-policy.js +31 -1
  267. package/dist/lib/long-task-evidence-v2.d.ts +4 -4
  268. package/dist/lib/long-task-evidence-v2.js +322 -44
  269. package/dist/lib/long-task-exact-comparison.d.ts +16 -0
  270. package/dist/lib/long-task-exact-comparison.js +28 -0
  271. package/dist/lib/long-task-execution-observation.d.ts +24 -0
  272. package/dist/lib/long-task-execution-observation.js +332 -0
  273. package/dist/lib/long-task-explain-acceptance-link.d.ts +4 -0
  274. package/dist/lib/long-task-explain-acceptance-link.js +4 -0
  275. package/dist/lib/long-task-explain-claim-links.d.ts +2 -0
  276. package/dist/lib/long-task-explain-claim-links.js +2 -0
  277. package/dist/lib/long-task-explain-source-links.d.ts +6 -0
  278. package/dist/lib/long-task-final-v2.js +7 -4
  279. package/dist/lib/long-task-hook-install.d.ts +19 -2
  280. package/dist/lib/long-task-hook-install.js +288 -91
  281. package/dist/lib/long-task-json-pointer-observation.d.ts +59 -0
  282. package/dist/lib/long-task-json-pointer-observation.js +184 -0
  283. package/dist/lib/long-task-observation-artifact.d.ts +8 -0
  284. package/dist/lib/long-task-observation-artifact.js +58 -0
  285. package/dist/lib/long-task-observation-authority.d.ts +17 -0
  286. package/dist/lib/long-task-observation-authority.js +348 -0
  287. package/dist/lib/long-task-paths.js +1 -1
  288. package/dist/lib/long-task-playwright-capability-records.d.ts +2 -0
  289. package/dist/lib/long-task-playwright-capability-records.js +74 -2
  290. package/dist/lib/long-task-process-observation.d.ts +6 -0
  291. package/dist/lib/long-task-process-observation.js +117 -0
  292. package/dist/lib/long-task-process-runtime-closure.d.ts +13 -0
  293. package/dist/lib/long-task-process-runtime-closure.js +175 -0
  294. package/dist/lib/long-task-progress.js +2 -0
  295. package/dist/lib/long-task-protected-files.d.ts +1 -1
  296. package/dist/lib/long-task-protected-files.js +1 -30
  297. package/dist/lib/long-task-risk.js +8 -3
  298. package/dist/lib/long-task-root-shape.js +10 -1
  299. package/dist/lib/long-task-runner-environment.d.ts +1 -1
  300. package/dist/lib/long-task-runner-environment.js +4 -4
  301. package/dist/lib/long-task-runner-freeze.d.ts +4 -2
  302. package/dist/lib/long-task-runner-freeze.js +130 -28
  303. package/dist/lib/long-task-runtime-types.d.ts +111 -0
  304. package/dist/lib/long-task-scoped-binding.d.ts +13 -0
  305. package/dist/lib/long-task-scoped-binding.js +11 -0
  306. package/dist/lib/long-task-semantic-contract-types.d.ts +2 -1
  307. package/dist/lib/long-task-semantic-fact-binding-types.d.ts +8 -0
  308. package/dist/lib/long-task-semantic-fact-closure.js +4 -1
  309. package/dist/lib/long-task-semantic-fact-contract-closure.d.ts +1 -1
  310. package/dist/lib/long-task-semantic-fact-contract-closure.js +18 -6
  311. package/dist/lib/long-task-semantic-fact-contract-facts.d.ts +1 -1
  312. package/dist/lib/long-task-semantic-fact-contract-facts.js +4 -1
  313. package/dist/lib/long-task-semantic-fact-contract-proofs.d.ts +1 -1
  314. package/dist/lib/long-task-semantic-fact-contract-proofs.js +12 -3
  315. package/dist/lib/long-task-semantic-fact-evidence.d.ts +8 -4
  316. package/dist/lib/long-task-semantic-fact-evidence.js +103 -43
  317. package/dist/lib/long-task-semantic-fact-shape.js +17 -6
  318. package/dist/lib/long-task-shape-primitives.d.ts +1 -1
  319. package/dist/lib/long-task-shape-primitives.js +1 -0
  320. package/dist/lib/long-task-source-claim-validation.js +4 -1
  321. package/dist/lib/long-task-source-item-parser.d.ts +2 -2
  322. package/dist/lib/long-task-source-item-parser.js +20 -11
  323. package/dist/lib/long-task-source-target-continuity.d.ts +2 -2
  324. package/dist/lib/long-task-source-target-continuity.js +35 -2
  325. package/dist/lib/long-task-source-target-index.d.ts +3 -0
  326. package/dist/lib/long-task-source-target-index.js +19 -0
  327. package/dist/lib/long-task-stage-policy.js +10 -4
  328. package/dist/lib/long-task-static-observation-freeze.d.ts +83 -0
  329. package/dist/lib/long-task-static-observation-freeze.js +428 -0
  330. package/dist/lib/long-task-status-projection.js +5 -1
  331. package/dist/lib/long-task-target-policy.d.ts +1 -1
  332. package/dist/lib/long-task-target-policy.js +3 -0
  333. package/dist/lib/long-task-ui-design-policy.js +64 -4
  334. package/dist/lib/long-task-ui-surface-shape.js +195 -0
  335. package/dist/lib/long-task-ui-surface-types.d.ts +53 -0
  336. package/dist/lib/long-task-verifier-dependency-closure.js +7 -3
  337. package/dist/lib/long-task-verifier-v2.js +70 -9
  338. package/dist/lib/long-task-worker-selection.d.ts +2 -0
  339. package/dist/lib/long-task-worker-selection.js +7 -0
  340. package/dist/lib/long-task-workspace-scope.js +3 -1
  341. package/dist/lib/long-task-workspace.d.ts +1 -1
  342. package/dist/lib/long-task-workspace.js +12 -13
  343. package/dist/lib/migrations.js +58 -0
  344. package/dist/lib/profiles.js +0 -1
  345. package/dist/lib/repository-path-safety.d.ts +14 -0
  346. package/dist/lib/repository-path-safety.js +126 -0
  347. package/dist/lib/semantic-fact-compact-authoring.d.ts +2 -0
  348. package/dist/lib/semantic-fact-compact-authoring.js +160 -0
  349. package/dist/lib/semantic-fact-compact-capacity.d.ts +9 -0
  350. package/dist/lib/semantic-fact-compact-capacity.js +40 -0
  351. package/dist/lib/semantic-fact-compact-carrier.d.ts +16 -0
  352. package/dist/lib/semantic-fact-compact-carrier.js +146 -0
  353. package/dist/lib/semantic-fact-compact-parser.d.ts +17 -0
  354. package/dist/lib/semantic-fact-compact-parser.js +168 -0
  355. package/dist/lib/semantic-fact-compact-revision.d.ts +11 -0
  356. package/dist/lib/semantic-fact-compact-revision.js +64 -0
  357. package/dist/lib/semantic-fact-compact-support.d.ts +23 -0
  358. package/dist/lib/semantic-fact-compact-support.js +159 -0
  359. package/dist/lib/semantic-fact-policy-census.d.ts +1 -0
  360. package/dist/lib/semantic-fact-policy-census.js +43 -0
  361. package/dist/lib/semantic-fact-proof-shape.d.ts +1 -1
  362. package/dist/lib/semantic-fact-property-shape.d.ts +1 -1
  363. package/dist/lib/semantic-fact-source-parser.d.ts +5 -0
  364. package/dist/lib/semantic-fact-source-parser.js +47 -6
  365. package/dist/lib/structural-closure-cost.d.ts +79 -0
  366. package/dist/lib/structural-closure-cost.js +91 -0
  367. package/dist/lib/symbolic-denotation-dag-builder.d.ts +25 -0
  368. package/dist/lib/symbolic-denotation-dag-builder.js +176 -0
  369. package/dist/lib/symbolic-denotation-domain-validation.d.ts +3 -0
  370. package/dist/lib/symbolic-denotation-domain-validation.js +56 -0
  371. package/dist/lib/symbolic-denotation-engine.d.ts +32 -0
  372. package/dist/lib/symbolic-denotation-engine.js +140 -0
  373. package/dist/lib/symbolic-denotation-public.d.ts +11 -0
  374. package/dist/lib/symbolic-denotation-public.js +12 -0
  375. package/dist/lib/symbolic-denotation-runtime.d.ts +20 -0
  376. package/dist/lib/symbolic-denotation-runtime.js +90 -0
  377. package/dist/lib/symbolic-denotation-support.d.ts +11 -0
  378. package/dist/lib/symbolic-denotation-support.js +49 -0
  379. package/dist/lib/symbolic-denotation-types.d.ts +133 -0
  380. package/dist/lib/symbolic-denotation-types.js +18 -0
  381. package/dist/lib/symbolic-denotation-validation.d.ts +6 -0
  382. package/dist/lib/symbolic-denotation-validation.js +126 -0
  383. package/dist/lib/sync-engine.d.ts +1 -0
  384. package/dist/lib/sync-engine.js +4 -1
  385. package/dist/lib/upgrade.js +1 -0
  386. package/dist/long-task-hook.js +40 -1
  387. package/dist/public-types.d.ts +8 -0
  388. package/dist/public-types.js +1 -0
  389. package/dist/schemas/design-resource-symbolic-noninterference-artifact-v2.schema.json +289 -0
  390. package/dist/schemas/design-resource-symbolic-source-ir-v1.schema.json +130 -0
  391. package/dist/schemas/long-task-delivery-v2/long-task-delivery-v2.schema.json +435 -5
  392. package/migrations/README.md +92 -15
  393. package/package.json +2 -2
  394. package/source-mappings.yaml +28 -25
  395. package/assets/skills/source-plan-authoring/SKILL.md +0 -14
@@ -0,0 +1,90 @@
1
+ import { compareText, invalid } from "./symbolic-denotation-support.js";
2
+ export function buildSymbolicRuntimeAxes(domains, numberCuts) {
3
+ return domains.map((domain) => {
4
+ if (domain.kind === "enum")
5
+ return {
6
+ domain,
7
+ segments: domain.values.map((value) => ({
8
+ kind: "enum",
9
+ values: [value],
10
+ })),
11
+ };
12
+ return { domain, segments: buildNumberSegments(domain, numberCuts) };
13
+ });
14
+ }
15
+ function buildNumberSegments(domain, numberCuts) {
16
+ const cuts = new Set([
17
+ domain.minimum,
18
+ domain.maximum + 1,
19
+ ...(numberCuts.get(domain.key) ?? []),
20
+ ]);
21
+ const sorted = [...cuts]
22
+ .filter((value) => value >= domain.minimum && value <= domain.maximum + 1)
23
+ .sort((left, right) => left - right);
24
+ const segments = [];
25
+ for (let index = 0; index < sorted.length - 1; index += 1) {
26
+ const minimum = sorted[index];
27
+ const maximum = sorted[index + 1] - 1;
28
+ if (minimum <= maximum)
29
+ segments.push({ kind: "number", minimum, maximum });
30
+ }
31
+ return segments;
32
+ }
33
+ export function canonicalSymbolicEdges(axis, childRefs) {
34
+ return axis.domain.kind === "enum"
35
+ ? canonicalEnumEdges(axis, childRefs)
36
+ : canonicalNumberEdges(axis, childRefs);
37
+ }
38
+ function canonicalEnumEdges(axis, childRefs) {
39
+ const groups = new Map();
40
+ axis.segments.forEach((segment, index) => {
41
+ const values = groups.get(childRefs[index]) ?? [];
42
+ values.push(...segment.values);
43
+ groups.set(childRefs[index], values);
44
+ });
45
+ return [...groups.entries()]
46
+ .map(([child_ref, values]) => ({
47
+ region: { kind: "enum_set", values },
48
+ child_ref,
49
+ }))
50
+ .sort((left, right) => compareText(left.region.values[0], right.region.values[0]));
51
+ }
52
+ function canonicalNumberEdges(axis, childRefs) {
53
+ const edges = [];
54
+ axis.segments.forEach((segment, index) => {
55
+ const numeric = segment;
56
+ const previous = edges.at(-1);
57
+ if (previous?.region.kind === "integer_range" &&
58
+ previous.child_ref === childRefs[index] &&
59
+ previous.region.maximum + 1 === numeric.minimum) {
60
+ previous.region.maximum = numeric.maximum;
61
+ return;
62
+ }
63
+ edges.push({
64
+ region: {
65
+ kind: "integer_range",
66
+ minimum: numeric.minimum,
67
+ maximum: numeric.maximum,
68
+ },
69
+ child_ref: childRefs[index],
70
+ });
71
+ });
72
+ return edges;
73
+ }
74
+ export function symbolicEdgeMatches(edge, value) {
75
+ if (edge.region.kind === "enum_set")
76
+ return typeof value === "string" && edge.region.values.includes(value);
77
+ return (typeof value === "number" &&
78
+ Number.isSafeInteger(value) &&
79
+ value >= edge.region.minimum &&
80
+ value <= edge.region.maximum);
81
+ }
82
+ export function symbolicSegmentMatches(segment, matches) {
83
+ if (segment.kind === "enum")
84
+ return matches(segment.values[0]);
85
+ const atMinimum = matches(segment.minimum);
86
+ const atMaximum = matches(segment.maximum);
87
+ if (atMinimum !== atMaximum)
88
+ invalid("numeric_partition_not_theory_complete", `${segment.minimum}:${segment.maximum}`);
89
+ return atMinimum;
90
+ }
@@ -0,0 +1,11 @@
1
+ import type { SymbolicDenotationAxisDomain, SymbolicDenotationScalar } from "./symbolic-denotation-types.js";
2
+ export declare function exactKeys(value: object, expected: string[], label: string): void;
3
+ export declare function stableKey(value: unknown, label: string): asserts value is string;
4
+ export declare function stableJson(value: unknown): string;
5
+ export declare function sha256(value: string): string;
6
+ export declare function compareText(left: string, right: string): number;
7
+ export declare function compareScalar(left: SymbolicDenotationScalar, right: SymbolicDenotationScalar): number;
8
+ export declare function scalarEqual(left: SymbolicDenotationScalar, right: SymbolicDenotationScalar): boolean;
9
+ export declare function domainCardinality(domain: SymbolicDenotationAxisDomain): bigint;
10
+ export declare function neverValue(value: never): string;
11
+ export declare function invalid(code: string, detail: string): never;
@@ -0,0 +1,49 @@
1
+ import { createHash } from "node:crypto";
2
+ export function exactKeys(value, expected, label) {
3
+ const actual = Object.keys(value).sort(compareText);
4
+ const required = [...expected].sort(compareText);
5
+ if (actual.length !== required.length ||
6
+ actual.some((key, index) => key !== required[index]))
7
+ invalid("shape_keys_invalid", `${label}:actual=${actual.join(",")}:expected=${required.join(",")}`);
8
+ }
9
+ export function stableKey(value, label) {
10
+ if (typeof value !== "string" || !/^[a-z0-9][a-z0-9._-]*$/u.test(value))
11
+ invalid("stable_key_invalid", `${label}:${String(value)}`);
12
+ }
13
+ export function stableJson(value) {
14
+ if (Array.isArray(value))
15
+ return `[${value.map((item) => stableJson(item)).join(",")}]`;
16
+ if (value && typeof value === "object")
17
+ return `{${Object.entries(value)
18
+ .sort(([left], [right]) => compareText(left, right))
19
+ .map(([key, entry]) => `${JSON.stringify(key)}:${stableJson(entry)}`)
20
+ .join(",")}}`;
21
+ return JSON.stringify(value);
22
+ }
23
+ export function sha256(value) {
24
+ return createHash("sha256").update(value).digest("hex");
25
+ }
26
+ export function compareText(left, right) {
27
+ return left < right ? -1 : left > right ? 1 : 0;
28
+ }
29
+ export function compareScalar(left, right) {
30
+ if (typeof left !== typeof right)
31
+ return typeof left === "number" ? -1 : 1;
32
+ return typeof left === "number"
33
+ ? left - right
34
+ : compareText(left, right);
35
+ }
36
+ export function scalarEqual(left, right) {
37
+ return typeof left === typeof right && left === right;
38
+ }
39
+ export function domainCardinality(domain) {
40
+ return domain.kind === "enum"
41
+ ? BigInt(domain.values.length)
42
+ : BigInt(domain.maximum) - BigInt(domain.minimum) + 1n;
43
+ }
44
+ export function neverValue(value) {
45
+ return String(value);
46
+ }
47
+ export function invalid(code, detail) {
48
+ throw new Error(`symbolic_denotation_invalid:${code}:${detail}`);
49
+ }
@@ -0,0 +1,133 @@
1
+ export type SymbolicDenotationScalar = string | number;
2
+ export type SymbolicDenotationAxisDomain = {
3
+ key: string;
4
+ kind: "enum";
5
+ values: string[];
6
+ } | {
7
+ key: string;
8
+ kind: "bounded_number";
9
+ minimum: number;
10
+ maximum: number;
11
+ integer: true;
12
+ };
13
+ export type SymbolicDenotationPredicate = {
14
+ op: "eq";
15
+ axis_ref: string;
16
+ value: SymbolicDenotationScalar;
17
+ } | {
18
+ op: "in";
19
+ axis_ref: string;
20
+ values: SymbolicDenotationScalar[];
21
+ } | {
22
+ op: "range";
23
+ axis_ref: string;
24
+ minimum: number;
25
+ maximum: number;
26
+ minimum_inclusive: boolean;
27
+ maximum_inclusive: boolean;
28
+ } | {
29
+ op: "all" | "any";
30
+ predicates: SymbolicDenotationPredicate[];
31
+ } | {
32
+ op: "not";
33
+ predicate: SymbolicDenotationPredicate;
34
+ };
35
+ export interface SymbolicDenotationComplexityLimits {
36
+ max_predicate_depth: number;
37
+ max_input_predicate_nodes: number;
38
+ max_canonical_dag_nodes: number;
39
+ max_partition_edges: number;
40
+ max_canonical_bytes: number;
41
+ }
42
+ export interface SymbolicDenotationCanonicalDagV1 {
43
+ schema_version: "symbolic-denotation-canonical-dag-v1";
44
+ root_ref: string;
45
+ nodes: SymbolicDenotationCanonicalNodeV1[];
46
+ }
47
+ export interface SymbolicDenotationCanonicalNodeV1 {
48
+ key: string;
49
+ axis_ref: string;
50
+ edges: SymbolicDenotationCanonicalEdgeV1[];
51
+ }
52
+ export type SymbolicDenotationCanonicalEdgeV1 = {
53
+ region: {
54
+ kind: "enum_set";
55
+ values: string[];
56
+ };
57
+ child_ref: string;
58
+ } | {
59
+ region: {
60
+ kind: "integer_range";
61
+ minimum: number;
62
+ maximum: number;
63
+ };
64
+ child_ref: string;
65
+ };
66
+ export interface CompiledSymbolicDenotationV1 {
67
+ canonical_dag: SymbolicDenotationCanonicalDagV1;
68
+ canonical_sha256: string;
69
+ canonical_bytes: number;
70
+ referenced_axis_refs: string[];
71
+ omitted_axis_refs: string[];
72
+ theoretical_ground_cardinality: string;
73
+ metrics: {
74
+ input_predicate_nodes: number;
75
+ canonical_dag_nodes: number;
76
+ partition_edges: number;
77
+ canonical_bytes: number;
78
+ };
79
+ }
80
+ export declare const SYMBOLIC_DENOTATION_DISPOSITIONS: readonly ["specified", "not_applicable", "excluded", "decision_required", "unavailable", "blocking"];
81
+ export type SymbolicDenotationDisposition = (typeof SYMBOLIC_DENOTATION_DISPOSITIONS)[number];
82
+ export declare const SYMBOLIC_DENOTATION_QUANTIFIERS: readonly ["one", "all", "any", "none", "exactly", "at_least", "at_most", "range"];
83
+ export type SymbolicDenotationQuantifier = (typeof SYMBOLIC_DENOTATION_QUANTIFIERS)[number];
84
+ export interface SymbolicExtensionalPointV1 {
85
+ subject_or_relation_ref: string;
86
+ target_ref: string;
87
+ condition_assignment: Record<string, SymbolicDenotationScalar>;
88
+ variation_assignment: Record<string, SymbolicDenotationScalar>;
89
+ property_ref: string;
90
+ population_ref: string | null;
91
+ quantifier: {
92
+ kind: SymbolicDenotationQuantifier;
93
+ minimum: number | null;
94
+ maximum: number | null;
95
+ };
96
+ }
97
+ export interface SymbolicExpectedSemanticsV1 {
98
+ value_type: string;
99
+ expected: {
100
+ locator: {
101
+ resource_ref: string;
102
+ kind: string;
103
+ value: string;
104
+ };
105
+ sha256: string;
106
+ };
107
+ provenance_ref: string;
108
+ sensitivity: string;
109
+ population_ref: string | null;
110
+ quantifier: SymbolicExtensionalPointV1["quantifier"];
111
+ lineage: unknown;
112
+ }
113
+ export interface SymbolicProofObligationDenotationV1 {
114
+ method: string;
115
+ proof_surface: string;
116
+ observation_boundary: string;
117
+ comparison: {
118
+ comparator: string;
119
+ mode: "exact" | "tolerance";
120
+ parameters: unknown;
121
+ tolerance: unknown;
122
+ mask: unknown;
123
+ };
124
+ oracle: unknown;
125
+ environment: unknown;
126
+ protected_value_policy: string;
127
+ completion_effect: string;
128
+ }
129
+ export interface SymbolicPointDenotationV1 {
130
+ disposition: SymbolicDenotationDisposition;
131
+ expected_semantics: SymbolicExpectedSemanticsV1 | null;
132
+ proof_obligations: SymbolicProofObligationDenotationV1[];
133
+ }
@@ -0,0 +1,18 @@
1
+ export const SYMBOLIC_DENOTATION_DISPOSITIONS = [
2
+ "specified",
3
+ "not_applicable",
4
+ "excluded",
5
+ "decision_required",
6
+ "unavailable",
7
+ "blocking",
8
+ ];
9
+ export const SYMBOLIC_DENOTATION_QUANTIFIERS = [
10
+ "one",
11
+ "all",
12
+ "any",
13
+ "none",
14
+ "exactly",
15
+ "at_least",
16
+ "at_most",
17
+ "range",
18
+ ];
@@ -0,0 +1,6 @@
1
+ import type { SymbolicDenotationAxisDomain, SymbolicDenotationComplexityLimits, SymbolicDenotationPredicate } from "./symbolic-denotation-types.js";
2
+ export interface SymbolicPredicateInspection {
3
+ input_nodes: number;
4
+ number_cuts: Map<string, Set<number>>;
5
+ }
6
+ export declare function validateSymbolicPredicate(input: SymbolicDenotationPredicate, domains: SymbolicDenotationAxisDomain[], domainIndex: ReadonlyMap<string, number>, inspection: SymbolicPredicateInspection, depth: number, limits: SymbolicDenotationComplexityLimits): SymbolicDenotationPredicate;
@@ -0,0 +1,126 @@
1
+ import { compareScalar, exactKeys, invalid, } from "./symbolic-denotation-support.js";
2
+ export function validateSymbolicPredicate(input, domains, domainIndex, inspection, depth, limits) {
3
+ inspectPredicateNode(input, depth, inspection, limits);
4
+ switch (input.op) {
5
+ case "eq":
6
+ return validateEq(input, domains, domainIndex, inspection);
7
+ case "in":
8
+ return validateIn(input, domains, domainIndex, inspection);
9
+ case "range":
10
+ return validateRange(input, domains, domainIndex, inspection);
11
+ case "all":
12
+ case "any":
13
+ return validateGroup(input, domains, domainIndex, inspection, depth, limits);
14
+ case "not":
15
+ return validateNot(input, domains, domainIndex, inspection, depth, limits);
16
+ default:
17
+ return invalid("predicate_operator_unknown", String(input.op));
18
+ }
19
+ }
20
+ function inspectPredicateNode(input, depth, inspection, limits) {
21
+ if (!input || typeof input !== "object" || Array.isArray(input))
22
+ invalid("predicate_invalid", "not_object");
23
+ if (depth > limits.max_predicate_depth)
24
+ invalid("predicate_depth_limit_exceeded", `actual=${depth}:limit=${limits.max_predicate_depth}`);
25
+ inspection.input_nodes += 1;
26
+ if (inspection.input_nodes > limits.max_input_predicate_nodes)
27
+ invalid("predicate_node_limit_exceeded", `actual=${inspection.input_nodes}:limit=${limits.max_input_predicate_nodes}`);
28
+ }
29
+ function validateEq(input, domains, domainIndex, inspection) {
30
+ exactKeys(input, ["op", "axis_ref", "value"], "predicate:eq");
31
+ const domain = predicateDomain(input.axis_ref, domains, domainIndex);
32
+ validateScalar(domain, input.value);
33
+ addNumberCuts(domain, [input.value], inspection);
34
+ return { ...input };
35
+ }
36
+ function validateIn(input, domains, domainIndex, inspection) {
37
+ exactKeys(input, ["op", "axis_ref", "values"], "predicate:in");
38
+ const domain = predicateDomain(input.axis_ref, domains, domainIndex);
39
+ if (!Array.isArray(input.values) || !input.values.length)
40
+ invalid("predicate_in_values_required", input.axis_ref);
41
+ const values = input.values.map((value) => {
42
+ validateScalar(domain, value);
43
+ return value;
44
+ });
45
+ if (new Set(values.map((value) => `${typeof value}:${value}`)).size !==
46
+ values.length)
47
+ invalid("predicate_in_value_duplicate", input.axis_ref);
48
+ addNumberCuts(domain, values, inspection);
49
+ return { ...input, values: [...values].sort(compareScalar) };
50
+ }
51
+ function validateRange(input, domains, domainIndex, inspection) {
52
+ exactKeys(input, [
53
+ "op",
54
+ "axis_ref",
55
+ "minimum",
56
+ "maximum",
57
+ "minimum_inclusive",
58
+ "maximum_inclusive",
59
+ ], "predicate:range");
60
+ const domain = predicateDomain(input.axis_ref, domains, domainIndex);
61
+ validateRangeBounds(input, domain);
62
+ const effectiveMinimum = input.minimum + (input.minimum_inclusive ? 0 : 1);
63
+ const effectiveMaximum = input.maximum - (input.maximum_inclusive ? 0 : 1);
64
+ if (effectiveMinimum > effectiveMaximum)
65
+ invalid("predicate_range_empty", input.axis_ref);
66
+ addCuts(inspection, domain.key, effectiveMinimum, effectiveMaximum + 1);
67
+ return { ...input };
68
+ }
69
+ function validateRangeBounds(input, domain) {
70
+ if (domain.kind !== "bounded_number" ||
71
+ !Number.isSafeInteger(input.minimum) ||
72
+ !Number.isSafeInteger(input.maximum) ||
73
+ typeof input.minimum_inclusive !== "boolean" ||
74
+ typeof input.maximum_inclusive !== "boolean" ||
75
+ input.minimum < domain.minimum ||
76
+ input.maximum > domain.maximum ||
77
+ input.minimum > input.maximum)
78
+ invalid("predicate_range_invalid", input.axis_ref);
79
+ }
80
+ function validateGroup(input, domains, domainIndex, inspection, depth, limits) {
81
+ exactKeys(input, ["op", "predicates"], `predicate:${input.op}`);
82
+ if (!Array.isArray(input.predicates) || !input.predicates.length)
83
+ invalid("predicate_children_required", input.op);
84
+ return {
85
+ op: input.op,
86
+ predicates: input.predicates.map((predicate) => validateSymbolicPredicate(predicate, domains, domainIndex, inspection, depth + 1, limits)),
87
+ };
88
+ }
89
+ function validateNot(input, domains, domainIndex, inspection, depth, limits) {
90
+ exactKeys(input, ["op", "predicate"], "predicate:not");
91
+ return {
92
+ op: "not",
93
+ predicate: validateSymbolicPredicate(input.predicate, domains, domainIndex, inspection, depth + 1, limits),
94
+ };
95
+ }
96
+ function predicateDomain(axisRef, domains, domainIndex) {
97
+ if (typeof axisRef !== "string")
98
+ invalid("predicate_axis_invalid", "");
99
+ const index = domainIndex.get(axisRef);
100
+ if (index === undefined)
101
+ invalid("predicate_axis_unknown", axisRef);
102
+ return domains[index];
103
+ }
104
+ function validateScalar(domain, value) {
105
+ if (domain.kind === "enum") {
106
+ if (typeof value !== "string" || !domain.values.includes(value))
107
+ invalid("predicate_value_outside_domain", `${domain.key}:${String(value)}`);
108
+ return;
109
+ }
110
+ if (typeof value !== "number" ||
111
+ !Number.isSafeInteger(value) ||
112
+ value < domain.minimum ||
113
+ value > domain.maximum)
114
+ invalid("predicate_value_outside_domain", `${domain.key}:${String(value)}`);
115
+ }
116
+ function addNumberCuts(domain, values, inspection) {
117
+ if (domain.kind !== "bounded_number")
118
+ return;
119
+ for (const value of values)
120
+ addCuts(inspection, domain.key, value, value + 1);
121
+ }
122
+ function addCuts(inspection, axisRef, ...cuts) {
123
+ const values = inspection.number_cuts.get(axisRef) ?? new Set();
124
+ cuts.forEach((cut) => values.add(cut));
125
+ inspection.number_cuts.set(axisRef, values);
126
+ }
@@ -2,6 +2,7 @@ export interface SyncReport {
2
2
  changed: string[];
3
3
  skipped: string[];
4
4
  blocked: string[];
5
+ notices?: string[];
5
6
  }
6
7
  export declare function emptySyncReport(): SyncReport;
7
8
  export declare function runSync(projectRoot: string): Promise<SyncReport>;
@@ -7,6 +7,7 @@ import { AGENTS_BLOCK_MARKERS, GITHUB_WORKFLOW_BLOCK_END, GITHUB_WORKFLOW_BLOCK_
7
7
  import { packageAssetPath } from "./paths.js";
8
8
  import { assertSupportedSchema } from "./schema-guard.js";
9
9
  import { installLongTaskHooks, uninstallLongTaskHooks, } from "./long-task-hook-install.js";
10
+ import { syncLongTaskCodexAgentProfile } from "./long-task-codex-agent-profile.js";
10
11
  import { enabledManagedSkillNames, isProfileEnabled } from "./profiles.js";
11
12
  export function emptySyncReport() {
12
13
  return {
@@ -27,7 +28,9 @@ export async function runSync(projectRoot) {
27
28
  for (const managedFile of config.managed_files) {
28
29
  await syncManagedFile(projectRoot, root, managedFile, report, config);
29
30
  }
30
- if (isProfileEnabled(config, "long-task")) {
31
+ const longTaskEnabled = isProfileEnabled(config, "long-task");
32
+ await syncLongTaskCodexAgentProfile(projectRoot, root, longTaskEnabled, report);
33
+ if (longTaskEnabled) {
31
34
  await installLongTaskHooks(projectRoot, report);
32
35
  }
33
36
  else {
@@ -42,6 +42,7 @@ export async function runUpgradeReport(projectRoot) {
42
42
  for (const skipped of syncReport.skipped.filter((line) => line.includes("customized"))) {
43
43
  lines.push(`sync skipped: ${skipped}`);
44
44
  }
45
+ lines.push(...(syncReport.notices ?? []));
45
46
  const doctor = await runDoctor(projectRoot);
46
47
  lines.push(`doctor warnings=${doctor.warnings.length} errors=${doctor.errors.length}`);
47
48
  const blocked = migrationReport.manualRequired.length > 0 ||
@@ -1,13 +1,41 @@
1
1
  #!/usr/bin/env node
2
2
  import { readActiveLongTaskBinding } from "./lib/long-task-state.js";
3
3
  import { stopCheckDeliveryTask } from "./lib/long-task-status-v2.js";
4
+ import { LONG_TASK_IMPLEMENTATION_AGENT, selectedAgentType, } from "./lib/long-task-worker-selection.js";
4
5
  import { repositoryRoot } from "./lib/long-task-workspace.js";
6
+ const LONG_TASK_IMPLEMENTATION_BOUNDARY = [
7
+ "This is a delegated rolling implementation worker, not the parent Long-Task Goal.",
8
+ "Follow only the bounded packet from the parent.",
9
+ "Do not run long-task resume, Preflight, Compile, Authority Revision, verify as formal Progress, Final Gate, Stop/close, abandon, or completion.",
10
+ "The parent Goal owns Source, Contract, Authority, Context writeback, integration and formal acceptance.",
11
+ "Your report is advisory and is not Progress, Evidence or acceptance.",
12
+ ].join("\n");
13
+ const AGENT_SPAWN_TOOLS = new Set(["spawn_agent", "Agent"]);
14
+ const EXACT_WORKER_REQUIRED = "Active Tiny Context Long-Task permits delegation only to the exact custom agent long_task_implementation. The current host request does not explicitly select it. Do not substitute a generic worker; complete this packet in the parent Goal.";
5
15
  const input = await readStdin();
16
+ const isAgentSpawnPreToolUse = input.hook_event_name === "PreToolUse" &&
17
+ AGENT_SPAWN_TOOLS.has(input.tool_name ?? "");
18
+ if (input.hook_event_name === "PreToolUse" && !isAgentSpawnPreToolUse)
19
+ output({});
6
20
  try {
7
21
  const root = await repositoryRoot(input.cwd || process.cwd());
8
22
  const active = await readActiveLongTaskBinding(root);
9
23
  if (!active)
10
24
  output({});
25
+ if (isAgentSpawnPreToolUse) {
26
+ if (selectedAgentType(input.tool_input) === LONG_TASK_IMPLEMENTATION_AGENT)
27
+ output({});
28
+ denyAgentSpawn(EXACT_WORKER_REQUIRED);
29
+ }
30
+ if (input.hook_event_name === "SubagentStart")
31
+ output(input.agent_type === LONG_TASK_IMPLEMENTATION_AGENT
32
+ ? {
33
+ hookSpecificOutput: {
34
+ hookEventName: "SubagentStart",
35
+ additionalContext: LONG_TASK_IMPLEMENTATION_BOUNDARY,
36
+ },
37
+ }
38
+ : {});
11
39
  if (input.hook_event_name === "SessionStart" ||
12
40
  input.hook_event_name === "PostCompact")
13
41
  output({
@@ -35,7 +63,9 @@ try {
35
63
  });
36
64
  }
37
65
  catch (error) {
38
- const reason = `Long-task Live Final Gate failed closed: ${message(error)}`;
66
+ const reason = `Tiny Context Long-Task Hook failed closed: ${message(error)}`;
67
+ if (isAgentSpawnPreToolUse)
68
+ denyAgentSpawn(`${reason} Do not spawn a substitute agent; complete the packet in the parent Goal.`);
39
69
  if (input.hook_event_name === "Stop")
40
70
  output({ decision: "block", reason });
41
71
  output({ continue: false, stopReason: reason });
@@ -50,6 +80,15 @@ function output(value) {
50
80
  process.stdout.write(`${JSON.stringify(value)}\n`);
51
81
  process.exit(0);
52
82
  }
83
+ function denyAgentSpawn(reason) {
84
+ output({
85
+ hookSpecificOutput: {
86
+ hookEventName: "PreToolUse",
87
+ permissionDecision: "deny",
88
+ permissionDecisionReason: reason,
89
+ },
90
+ });
91
+ }
53
92
  function message(error) {
54
93
  return error instanceof Error ? error.message : String(error);
55
94
  }
@@ -0,0 +1,8 @@
1
+ export type { HarnessConfig, HarnessProfile, ManagedFile, SourceMapping, } from "./lib/types.js";
2
+ export type { CheckExecutionResultV2, CompiledDeliveryContractV2, DeliveryAssertionV2, DeliveryCheckV2, DeliveryContractV2, DeliveryOutcomeV2, EffectiveRiskLevel, ExternalConfirmationV2, FinalReceiptV2, LongTaskFindingV2, LongTaskRiskFacts, ProofSurface, ProgressRecordV2, RequestedRiskLevel, RunnerType, SourceClaimV2, TargetedVerificationResultV2, } from "./lib/long-task-delivery-types.js";
3
+ export type { BoundaryCheckDecisionV2, BoundaryCheckInputV2, } from "./lib/long-task-boundary-check.js";
4
+ export type { DesignResourceHandoffBundleOptions, DesignResourceHandoffBundleResult, } from "./lib/design-resource-handoff-bundle.js";
5
+ export type { DesignResourceHandoffPreflightV1, DesignResourceHandoffV1, } from "./lib/design-resource-handoff-types.js";
6
+ export type { DesignResourceHandoffPreflightV2, DesignResourceHandoffV2, DesignResourceObservableRuleManifestV2, DesignResourceSymbolicFactRuleV2, DesignResourceSymbolicNoninterferenceCertificateV2, DesignResourceSymbolicNoninterferenceArtifactV2, DesignResourceSymbolicNoninterferenceDerivedResultV2, DesignResourceSymbolicNoninterferenceFailureWitnessV1, DesignResourceSymbolicNoninterferenceInputBindingV2, DesignResourceSymbolicNoninterferenceProofV2, DesignResourceSymbolicProofObligationV2, } from "./lib/design-resource-symbolic-fact-types.js";
7
+ export type { DesignResourceSymbolicSourceIrCertificateScopeV1, DesignResourceSymbolicSourceIrRegionV1, DesignResourceSymbolicSourceIrV1, } from "./lib/design-resource-symbolic-source-ir-types.js";
8
+ export type { CompiledSymbolicDenotationV1, SymbolicDenotationAxisDomain, SymbolicDenotationComplexityLimits, SymbolicDenotationPredicate, SymbolicExtensionalPointV1, SymbolicPointDenotationV1, } from "./lib/symbolic-denotation-types.js";
@@ -0,0 +1 @@
1
+ export {};