project-tiny-context-harness 0.2.84 → 0.6.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 (361) hide show
  1. package/README.md +163 -428
  2. package/assets/README.md +283 -455
  3. package/assets/README.zh-CN.md +199 -123
  4. package/assets/agents/AGENTS_CORE.md +54 -67
  5. package/assets/context_templates/context.toml +3 -0
  6. package/assets/context_templates/global.md +6 -6
  7. package/assets/github/harness.yml +2 -2
  8. package/assets/skills/context_development_engineer/SKILL.md +91 -107
  9. package/assets/skills/context_product_plan/SKILL.md +18 -28
  10. package/assets/skills/context_surface_contract/SKILL.md +35 -38
  11. package/assets/skills/context_uiux_design/SKILL.md +31 -30
  12. package/assets/skills/long-task-workflow/SKILL.md +76 -0
  13. package/assets/skills/long-task-workflow/agents/openai.yaml +4 -0
  14. package/assets/skills/long-task-workflow/references/authority-lifecycle.md +41 -0
  15. package/assets/skills/long-task-workflow/references/contract-authoring.md +62 -0
  16. package/assets/skills/long-task-workflow/references/evidence-design.md +45 -0
  17. package/assets/skills/normal-long-task/SKILL.md +12 -489
  18. package/assets/skills/source-plan-authoring/SKILL.md +379 -0
  19. package/assets/tools/validate_context.py +293 -127
  20. package/dist/cli.js +3 -1
  21. package/dist/commands/check-modularity.js +33 -10
  22. package/dist/commands/composite-campaign.d.ts +1 -0
  23. package/dist/commands/composite-campaign.js +8 -0
  24. package/dist/commands/composite-long-task.d.ts +1 -6
  25. package/dist/commands/composite-long-task.js +7 -157
  26. package/dist/commands/delivery-set.d.ts +1 -0
  27. package/dist/commands/delivery-set.js +8 -0
  28. package/dist/commands/disable.d.ts +1 -0
  29. package/dist/commands/disable.js +15 -0
  30. package/dist/commands/enable.d.ts +1 -0
  31. package/dist/commands/enable.js +14 -0
  32. package/dist/commands/export-context-args.js +13 -4
  33. package/dist/commands/export-context.js +18 -7
  34. package/dist/commands/index.js +42 -30
  35. package/dist/commands/init.js +12 -6
  36. package/dist/commands/long-task-authoring.d.ts +3 -0
  37. package/dist/commands/long-task-authoring.js +92 -0
  38. package/dist/commands/long-task-explain.d.ts +1 -0
  39. package/dist/commands/long-task-explain.js +52 -0
  40. package/dist/commands/long-task.d.ts +1 -0
  41. package/dist/commands/long-task.js +226 -0
  42. package/dist/commands/package-source.js +2 -2
  43. package/dist/commands/upgrade.js +10 -10
  44. package/dist/index.d.ts +11 -1
  45. package/dist/index.js +8 -0
  46. package/dist/lib/config.js +34 -8
  47. package/dist/lib/context-default-footprint.d.ts +16 -0
  48. package/dist/lib/context-default-footprint.js +107 -0
  49. package/dist/lib/context-export.js +105 -41
  50. package/dist/lib/context-graph-snapshot.d.ts +18 -0
  51. package/dist/lib/context-graph-snapshot.js +171 -0
  52. package/dist/lib/context-manifest-schema.d.ts +28 -0
  53. package/dist/lib/context-manifest-schema.js +150 -0
  54. package/dist/lib/context-manifest.js +28 -20
  55. package/dist/lib/context-templates.js +5 -5
  56. package/dist/lib/design-md.js +1 -1
  57. package/dist/lib/doctor.js +54 -1
  58. package/dist/lib/harness-root.js +25 -8
  59. package/dist/lib/init.js +6 -3
  60. package/dist/lib/legacy-managed-scan.js +23 -7
  61. package/dist/lib/legacy-sdlc-migration.js +21 -11
  62. package/dist/lib/long-task-acceptance-reference.d.ts +22 -0
  63. package/dist/lib/long-task-acceptance-reference.js +46 -0
  64. package/dist/lib/long-task-acceptance-shape.d.ts +5 -0
  65. package/dist/lib/long-task-acceptance-shape.js +131 -0
  66. package/dist/lib/long-task-activation-validation.d.ts +21 -0
  67. package/dist/lib/long-task-activation-validation.js +136 -0
  68. package/dist/lib/long-task-artifacts.d.ts +5 -0
  69. package/dist/lib/long-task-artifacts.js +34 -0
  70. package/dist/lib/long-task-assertions-v2.d.ts +22 -0
  71. package/dist/lib/long-task-assertions-v2.js +212 -0
  72. package/dist/lib/long-task-authoring-authority-preview.d.ts +5 -0
  73. package/dist/lib/long-task-authoring-authority-preview.js +85 -0
  74. package/dist/lib/long-task-authoring-preflight-diagnostics.d.ts +8 -0
  75. package/dist/lib/long-task-authoring-preflight-diagnostics.js +179 -0
  76. package/dist/lib/long-task-authoring-preflight-repair-order.d.ts +8 -0
  77. package/dist/lib/long-task-authoring-preflight-repair-order.js +95 -0
  78. package/dist/lib/long-task-authoring-preflight-types.d.ts +46 -0
  79. package/dist/lib/long-task-authoring-preflight-types.js +38 -0
  80. package/dist/lib/long-task-authoring-preflight.d.ts +3 -0
  81. package/dist/lib/long-task-authoring-preflight.js +44 -0
  82. package/dist/lib/long-task-authority-material-diff.d.ts +17 -0
  83. package/dist/lib/long-task-authority-material-diff.js +152 -0
  84. package/dist/lib/long-task-authority-materials.d.ts +7 -0
  85. package/dist/lib/long-task-authority-materials.js +83 -0
  86. package/dist/lib/long-task-authority-policy.d.ts +168 -0
  87. package/dist/lib/long-task-authority-policy.js +181 -0
  88. package/dist/lib/long-task-authority-revision-details.d.ts +19 -0
  89. package/dist/lib/long-task-authority-revision-details.js +192 -0
  90. package/dist/lib/long-task-authority-revision-enforcement.d.ts +3 -0
  91. package/dist/lib/long-task-authority-revision-enforcement.js +41 -0
  92. package/dist/lib/long-task-authority-revision-types.d.ts +50 -0
  93. package/dist/lib/long-task-authority-revision-types.js +1 -0
  94. package/dist/lib/long-task-authority-revision.d.ts +4 -0
  95. package/dist/lib/long-task-authority-revision.js +188 -0
  96. package/dist/lib/long-task-authority-transition-policy.d.ts +62 -0
  97. package/dist/lib/long-task-authority-transition-policy.js +62 -0
  98. package/dist/lib/long-task-authority-types.d.ts +96 -0
  99. package/dist/lib/long-task-authority-types.js +1 -0
  100. package/dist/lib/long-task-authority.d.ts +7 -0
  101. package/dist/lib/long-task-authority.js +142 -0
  102. package/dist/lib/long-task-boundary-check.d.ts +15 -0
  103. package/dist/lib/long-task-boundary-check.js +9 -0
  104. package/dist/lib/long-task-check-evidence-decoder.d.ts +3 -0
  105. package/dist/lib/long-task-check-evidence-decoder.js +74 -0
  106. package/dist/lib/long-task-check-execution-policy.d.ts +18 -0
  107. package/dist/lib/long-task-check-execution-policy.js +36 -0
  108. package/dist/lib/long-task-check-runner.d.ts +2 -0
  109. package/dist/lib/long-task-check-runner.js +181 -0
  110. package/dist/lib/long-task-check-shape.d.ts +2 -0
  111. package/dist/lib/long-task-check-shape.js +136 -0
  112. package/dist/lib/long-task-claim-definitions.d.ts +7 -0
  113. package/dist/lib/long-task-claim-definitions.js +78 -0
  114. package/dist/lib/long-task-claim-proof-policy.d.ts +4 -0
  115. package/dist/lib/long-task-claim-proof-policy.js +57 -0
  116. package/dist/lib/long-task-claims.d.ts +10 -0
  117. package/dist/lib/long-task-claims.js +187 -0
  118. package/dist/lib/long-task-context-authority-topology.d.ts +7 -0
  119. package/dist/lib/long-task-context-authority-topology.js +37 -0
  120. package/dist/lib/long-task-context-authority.d.ts +14 -0
  121. package/dist/lib/long-task-context-authority.js +66 -0
  122. package/dist/lib/long-task-contract-types.d.ts +203 -0
  123. package/dist/lib/long-task-contract-types.js +1 -0
  124. package/dist/lib/long-task-counterfactual-claim-policy.d.ts +10 -0
  125. package/dist/lib/long-task-counterfactual-claim-policy.js +57 -0
  126. package/dist/lib/long-task-counterfactual-sandbox.d.ts +6 -0
  127. package/dist/lib/long-task-counterfactual-sandbox.js +87 -0
  128. package/dist/lib/long-task-counterfactual-types.d.ts +24 -0
  129. package/dist/lib/long-task-counterfactual-types.js +1 -0
  130. package/dist/lib/long-task-delivery-compiler.d.ts +10 -0
  131. package/dist/lib/long-task-delivery-compiler.js +129 -0
  132. package/dist/lib/long-task-delivery-parser.d.ts +13 -0
  133. package/dist/lib/long-task-delivery-parser.js +90 -0
  134. package/dist/lib/long-task-delivery-preflight.d.ts +5 -0
  135. package/dist/lib/long-task-delivery-preflight.js +151 -0
  136. package/dist/lib/long-task-delivery-shape.d.ts +5 -0
  137. package/dist/lib/long-task-delivery-shape.js +5 -0
  138. package/dist/lib/long-task-delivery-types.d.ts +8 -0
  139. package/dist/lib/long-task-delivery-types.js +8 -0
  140. package/dist/lib/long-task-delivery-validation.d.ts +3 -0
  141. package/dist/lib/long-task-delivery-validation.js +175 -0
  142. package/dist/lib/long-task-evidence-adapter-policy.d.ts +4 -0
  143. package/dist/lib/long-task-evidence-adapter-policy.js +15 -0
  144. package/dist/lib/long-task-evidence-adapter-types.d.ts +1 -0
  145. package/dist/lib/long-task-evidence-adapter-types.js +1 -0
  146. package/dist/lib/long-task-evidence-findings.d.ts +5 -0
  147. package/dist/lib/long-task-evidence-findings.js +113 -0
  148. package/dist/lib/long-task-evidence-sensitivity-policy.d.ts +4 -0
  149. package/dist/lib/long-task-evidence-sensitivity-policy.js +98 -0
  150. package/dist/lib/long-task-evidence-v2.d.ts +5 -0
  151. package/dist/lib/long-task-evidence-v2.js +226 -0
  152. package/dist/lib/long-task-explain-acceptance-link.d.ts +46 -0
  153. package/dist/lib/long-task-explain-acceptance-link.js +96 -0
  154. package/dist/lib/long-task-explain-claim-links.d.ts +45 -0
  155. package/dist/lib/long-task-explain-claim-links.js +88 -0
  156. package/dist/lib/long-task-explain-source-links.d.ts +93 -0
  157. package/dist/lib/long-task-explain-source-links.js +51 -0
  158. package/dist/lib/long-task-final-v2.d.ts +2 -0
  159. package/dist/lib/long-task-final-v2.js +124 -0
  160. package/dist/lib/long-task-finding-context.d.ts +3 -0
  161. package/dist/lib/long-task-finding-context.js +63 -0
  162. package/dist/lib/long-task-freshness.d.ts +3 -0
  163. package/dist/lib/long-task-freshness.js +80 -0
  164. package/dist/lib/long-task-hook-install.d.ts +9 -0
  165. package/dist/lib/long-task-hook-install.js +184 -0
  166. package/dist/lib/long-task-hook-preflight.d.ts +7 -0
  167. package/dist/lib/long-task-hook-preflight.js +58 -0
  168. package/dist/lib/long-task-observation-ownership.d.ts +2 -0
  169. package/dist/lib/long-task-observation-ownership.js +22 -0
  170. package/dist/lib/long-task-outcome-parser.d.ts +4 -0
  171. package/dist/lib/long-task-outcome-parser.js +100 -0
  172. package/dist/lib/long-task-paths.d.ts +49 -0
  173. package/dist/lib/long-task-paths.js +418 -0
  174. package/dist/lib/long-task-playwright-counterfactual-policy.d.ts +7 -0
  175. package/dist/lib/long-task-playwright-counterfactual-policy.js +125 -0
  176. package/dist/lib/long-task-playwright-evidence.d.ts +6 -0
  177. package/dist/lib/long-task-playwright-evidence.js +244 -0
  178. package/dist/lib/long-task-product-shape.d.ts +6 -0
  179. package/dist/lib/long-task-product-shape.js +73 -0
  180. package/dist/lib/long-task-progress.d.ts +4 -0
  181. package/dist/lib/long-task-progress.js +114 -0
  182. package/dist/lib/long-task-protected-files.d.ts +1 -0
  183. package/dist/lib/long-task-protected-files.js +30 -0
  184. package/dist/lib/long-task-required-proof-surfaces.d.ts +2 -0
  185. package/dist/lib/long-task-required-proof-surfaces.js +13 -0
  186. package/dist/lib/long-task-requirement-shape.d.ts +2 -0
  187. package/dist/lib/long-task-requirement-shape.js +18 -0
  188. package/dist/lib/long-task-risk-surfaces.d.ts +2 -0
  189. package/dist/lib/long-task-risk-surfaces.js +60 -0
  190. package/dist/lib/long-task-risk-types.d.ts +5 -0
  191. package/dist/lib/long-task-risk-types.js +12 -0
  192. package/dist/lib/long-task-risk.d.ts +9 -0
  193. package/dist/lib/long-task-risk.js +132 -0
  194. package/dist/lib/long-task-root-shape.d.ts +4 -0
  195. package/dist/lib/long-task-root-shape.js +86 -0
  196. package/dist/lib/long-task-runner-environment.d.ts +7 -0
  197. package/dist/lib/long-task-runner-environment.js +57 -0
  198. package/dist/lib/long-task-runner-files.d.ts +3 -0
  199. package/dist/lib/long-task-runner-files.js +39 -0
  200. package/dist/lib/long-task-runner-freeze.d.ts +2 -0
  201. package/dist/lib/long-task-runner-freeze.js +168 -0
  202. package/dist/lib/long-task-runtime-types.d.ts +214 -0
  203. package/dist/lib/long-task-runtime-types.js +1 -0
  204. package/dist/lib/long-task-shape-primitives.d.ts +17 -0
  205. package/dist/lib/long-task-shape-primitives.js +81 -0
  206. package/dist/lib/long-task-source-authority-types.d.ts +13 -0
  207. package/dist/lib/long-task-source-authority-types.js +1 -0
  208. package/dist/lib/long-task-source-claim-validation.d.ts +5 -0
  209. package/dist/lib/long-task-source-claim-validation.js +96 -0
  210. package/dist/lib/long-task-source-continuity.d.ts +4 -0
  211. package/dist/lib/long-task-source-continuity.js +57 -0
  212. package/dist/lib/long-task-source-inventory.d.ts +2 -0
  213. package/dist/lib/long-task-source-inventory.js +21 -0
  214. package/dist/lib/long-task-source-item-parser.d.ts +3 -0
  215. package/dist/lib/long-task-source-item-parser.js +112 -0
  216. package/dist/lib/long-task-source-shape.d.ts +2 -0
  217. package/dist/lib/long-task-source-shape.js +56 -0
  218. package/dist/lib/long-task-source-target-continuity.d.ts +4 -0
  219. package/dist/lib/long-task-source-target-continuity.js +80 -0
  220. package/dist/lib/long-task-source-target-index.d.ts +12 -0
  221. package/dist/lib/long-task-source-target-index.js +76 -0
  222. package/dist/lib/long-task-source-validation.d.ts +3 -0
  223. package/dist/lib/long-task-source-validation.js +46 -0
  224. package/dist/lib/long-task-state.d.ts +91 -0
  225. package/dist/lib/long-task-state.js +611 -0
  226. package/dist/lib/long-task-status-projection.d.ts +21 -0
  227. package/dist/lib/long-task-status-projection.js +116 -0
  228. package/dist/lib/long-task-status-v2.d.ts +37 -0
  229. package/dist/lib/long-task-status-v2.js +306 -0
  230. package/dist/lib/long-task-technical-shape.d.ts +3 -0
  231. package/dist/lib/long-task-technical-shape.js +44 -0
  232. package/dist/lib/long-task-verifier-authority.d.ts +12 -0
  233. package/dist/lib/long-task-verifier-authority.js +47 -0
  234. package/dist/lib/long-task-verifier-identity.d.ts +2 -0
  235. package/dist/lib/long-task-verifier-identity.js +55 -0
  236. package/dist/lib/long-task-verifier-v2.d.ts +13 -0
  237. package/dist/lib/long-task-verifier-v2.js +266 -0
  238. package/dist/lib/long-task-workspace-runtime-types.d.ts +23 -0
  239. package/dist/lib/long-task-workspace-runtime-types.js +1 -0
  240. package/dist/lib/long-task-workspace.d.ts +25 -0
  241. package/dist/lib/long-task-workspace.js +366 -0
  242. package/dist/lib/managed-file.js +20 -5
  243. package/dist/lib/migrations.js +156 -32
  244. package/dist/lib/modularity.d.ts +27 -1
  245. package/dist/lib/modularity.js +499 -23
  246. package/dist/lib/package-json-config.js +14 -5
  247. package/dist/lib/package-source.js +15 -3
  248. package/dist/lib/profiles.d.ts +13 -0
  249. package/dist/lib/profiles.js +66 -0
  250. package/dist/lib/schema-guard.js +4 -2
  251. package/dist/lib/source-files.js +14 -7
  252. package/dist/lib/source-pack-classify.js +91 -19
  253. package/dist/lib/source-pack-config.js +25 -8
  254. package/dist/lib/source-pack-export.js +84 -25
  255. package/dist/lib/source-pack-manifest.js +18 -6
  256. package/dist/lib/source-pack-records.js +35 -11
  257. package/dist/lib/source-pack-render.js +47 -18
  258. package/dist/lib/stable-json.d.ts +2 -0
  259. package/dist/lib/stable-json.js +21 -0
  260. package/dist/lib/strict-codec.d.ts +4 -0
  261. package/dist/lib/strict-codec.js +65 -0
  262. package/dist/lib/sync-engine.js +76 -24
  263. package/dist/lib/types.d.ts +8 -1
  264. package/dist/lib/upgrade.js +4 -3
  265. package/dist/lib/validators.js +218 -191
  266. package/dist/long-task-hook.d.ts +2 -0
  267. package/dist/long-task-hook.js +55 -0
  268. package/dist/schemas/long-task-delivery-v2/long-task-delivery-v2.schema.json +340 -0
  269. package/dist/schemas/long-task-delivery-v2/long-task-outcomes-v2.schema.json +18 -0
  270. package/migrations/README.md +8 -3
  271. package/package.json +17 -6
  272. package/source-mappings.yaml +0 -3
  273. package/assets/protected-harness-baseline.json +0 -20
  274. package/assets/skills/composite-long-task-workflow/SKILL.md +0 -244
  275. package/assets/skills/composite-long-task-workflow/assets/execution-binding.template.md +0 -57
  276. package/assets/skills/composite-long-task-workflow/assets/goal-objective.template.md +0 -17
  277. package/assets/skills/composite-long-task-workflow/references/composite-long-task-workflow-protocol.md +0 -675
  278. package/dist/commands/superpowers.d.ts +0 -1
  279. package/dist/commands/superpowers.js +0 -8
  280. package/dist/lib/composite-long-task-renderer.d.ts +0 -12
  281. package/dist/lib/composite-long-task-renderer.js +0 -109
  282. package/dist/lib/plan-acceptance-artifacts.d.ts +0 -1
  283. package/dist/lib/plan-acceptance-artifacts.js +0 -220
  284. package/dist/lib/plan-acceptance-evidence.d.ts +0 -2
  285. package/dist/lib/plan-acceptance-evidence.js +0 -108
  286. package/dist/lib/plan-acceptance-json.d.ts +0 -15
  287. package/dist/lib/plan-acceptance-json.js +0 -133
  288. package/dist/lib/plan-acceptance-validator.d.ts +0 -2
  289. package/dist/lib/plan-acceptance-validator.js +0 -209
  290. package/dist/lib/plan-contract-validator.d.ts +0 -2
  291. package/dist/lib/plan-contract-validator.js +0 -127
  292. package/dist/lib/plan-validator-common.d.ts +0 -24
  293. package/dist/lib/plan-validator-common.js +0 -196
  294. package/dist/lib/superpowers-task-ac010.d.ts +0 -6
  295. package/dist/lib/superpowers-task-ac010.js +0 -26
  296. package/dist/lib/superpowers-task-assertion-normalizers.d.ts +0 -3
  297. package/dist/lib/superpowers-task-assertion-normalizers.js +0 -74
  298. package/dist/lib/superpowers-task-assertions.d.ts +0 -20
  299. package/dist/lib/superpowers-task-assertions.js +0 -257
  300. package/dist/lib/superpowers-task-attempt.d.ts +0 -4
  301. package/dist/lib/superpowers-task-attempt.js +0 -102
  302. package/dist/lib/superpowers-task-command-run-correlation.d.ts +0 -8
  303. package/dist/lib/superpowers-task-command-run-correlation.js +0 -103
  304. package/dist/lib/superpowers-task-command-specs.d.ts +0 -3
  305. package/dist/lib/superpowers-task-command-specs.js +0 -52
  306. package/dist/lib/superpowers-task-compile-diagnostics.d.ts +0 -5
  307. package/dist/lib/superpowers-task-compile-diagnostics.js +0 -20
  308. package/dist/lib/superpowers-task-compile-guards.d.ts +0 -2
  309. package/dist/lib/superpowers-task-compile-guards.js +0 -66
  310. package/dist/lib/superpowers-task-compile.d.ts +0 -6
  311. package/dist/lib/superpowers-task-compile.js +0 -133
  312. package/dist/lib/superpowers-task-completion-output.d.ts +0 -52
  313. package/dist/lib/superpowers-task-completion-output.js +0 -228
  314. package/dist/lib/superpowers-task-conformance.d.ts +0 -2
  315. package/dist/lib/superpowers-task-conformance.js +0 -24
  316. package/dist/lib/superpowers-task-contradictions.d.ts +0 -6
  317. package/dist/lib/superpowers-task-contradictions.js +0 -126
  318. package/dist/lib/superpowers-task-current-evidence.d.ts +0 -3
  319. package/dist/lib/superpowers-task-current-evidence.js +0 -176
  320. package/dist/lib/superpowers-task-delivery.d.ts +0 -4
  321. package/dist/lib/superpowers-task-delivery.js +0 -96
  322. package/dist/lib/superpowers-task-derive.d.ts +0 -14
  323. package/dist/lib/superpowers-task-derive.js +0 -382
  324. package/dist/lib/superpowers-task-events.d.ts +0 -1
  325. package/dist/lib/superpowers-task-events.js +0 -13
  326. package/dist/lib/superpowers-task-evidence-kernel.d.ts +0 -19
  327. package/dist/lib/superpowers-task-evidence-kernel.js +0 -347
  328. package/dist/lib/superpowers-task-evidence-records.d.ts +0 -2
  329. package/dist/lib/superpowers-task-evidence-records.js +0 -55
  330. package/dist/lib/superpowers-task-evidence.d.ts +0 -10
  331. package/dist/lib/superpowers-task-evidence.js +0 -147
  332. package/dist/lib/superpowers-task-fields.d.ts +0 -22
  333. package/dist/lib/superpowers-task-fields.js +0 -276
  334. package/dist/lib/superpowers-task-final-card.d.ts +0 -3
  335. package/dist/lib/superpowers-task-final-card.js +0 -24
  336. package/dist/lib/superpowers-task-gates.d.ts +0 -12
  337. package/dist/lib/superpowers-task-gates.js +0 -155
  338. package/dist/lib/superpowers-task-harness-drift.d.ts +0 -11
  339. package/dist/lib/superpowers-task-harness-drift.js +0 -90
  340. package/dist/lib/superpowers-task-next-slices.d.ts +0 -1
  341. package/dist/lib/superpowers-task-next-slices.js +0 -12
  342. package/dist/lib/superpowers-task-protected-baseline.d.ts +0 -10
  343. package/dist/lib/superpowers-task-protected-baseline.js +0 -66
  344. package/dist/lib/superpowers-task-source-compile.d.ts +0 -5
  345. package/dist/lib/superpowers-task-source-compile.js +0 -226
  346. package/dist/lib/superpowers-task-source-parser.d.ts +0 -23
  347. package/dist/lib/superpowers-task-source-parser.js +0 -218
  348. package/dist/lib/superpowers-task-state-schema.d.ts +0 -440
  349. package/dist/lib/superpowers-task-state-schema.js +0 -66
  350. package/dist/lib/superpowers-task-state-shape.d.ts +0 -3
  351. package/dist/lib/superpowers-task-state-shape.js +0 -50
  352. package/dist/lib/superpowers-task-state.d.ts +0 -16
  353. package/dist/lib/superpowers-task-state.js +0 -246
  354. package/dist/lib/superpowers-task-status.d.ts +0 -2
  355. package/dist/lib/superpowers-task-status.js +0 -24
  356. package/dist/lib/superpowers-task-under-specified.d.ts +0 -7
  357. package/dist/lib/superpowers-task-under-specified.js +0 -61
  358. package/dist/lib/superpowers-task-unregistered-evidence.d.ts +0 -11
  359. package/dist/lib/superpowers-task-unregistered-evidence.js +0 -72
  360. package/dist/lib/superpowers-task-validator.d.ts +0 -5
  361. package/dist/lib/superpowers-task-validator.js +0 -290
@@ -0,0 +1,192 @@
1
+ import { proveRepositoryPatternSubset } from "./long-task-paths.js";
2
+ import { canonicalValueJson } from "./strict-codec.js";
3
+ export function checkIndex(globalChecks, outcomes) {
4
+ return new Map([
5
+ ...globalChecks.map((check) => [`GLOBAL.${check.key}`, check]),
6
+ ...outcomes.flatMap((outcome) => outcome.acceptance.checks.map((check) => [`${outcome.key}.${check.key}`, check])),
7
+ ]);
8
+ }
9
+ export function changedRunnerFields(identity, before, after) {
10
+ const beforeRunner = declaredRunner(before);
11
+ const afterRunner = declaredRunner(after);
12
+ const changed = Object.keys(beforeRunner)
13
+ .filter((field) => !same(beforeRunner[field], afterRunner[field]))
14
+ .map((field) => `${identity}:${field}`);
15
+ if (before.runner.resolved_target !== after.runner.resolved_target)
16
+ changed.push(`${identity}:resolved_target`);
17
+ if (before.runner.resolved_cwd !== after.runner.resolved_cwd)
18
+ changed.push(`${identity}:resolved_cwd`);
19
+ if (before.runner.package_script !== after.runner.package_script)
20
+ changed.push(`${identity}:package_script`);
21
+ return changed;
22
+ }
23
+ export function removedOrReplacedVerificationInputs(identity, before, after) {
24
+ return Object.entries(before.verification_input_hashes)
25
+ .filter(([file, hash]) => after.verification_input_hashes[file] !== hash)
26
+ .map(([file]) => `${identity}:${file}`);
27
+ }
28
+ export function removedOrNarrowedInputPaths(identity, before, after) {
29
+ return before.input_paths
30
+ .filter((oldPattern) => !after.input_paths.some((newPattern) => proveRepositoryPatternSubset(oldPattern, newPattern).status ===
31
+ "proven_subset"))
32
+ .map((pattern) => `${identity}:${pattern}`);
33
+ }
34
+ export function removedOrWeakenedExpectedOutputPaths(identity, before, after) {
35
+ return before.expected_output_paths
36
+ .filter((oldPattern) => !after.expected_output_paths.some((newPattern) => proveRepositoryPatternSubset(newPattern, oldPattern).status ===
37
+ "proven_subset"))
38
+ .map((pattern) => `${identity}:${pattern}`);
39
+ }
40
+ export function sourceClaimReductions(beforeClaims, afterClaims) {
41
+ const after = new Map(afterClaims.map((claim) => [claim.key, claim]));
42
+ const changed = [];
43
+ for (const claim of beforeClaims) {
44
+ const candidate = after.get(claim.key);
45
+ if (!candidate) {
46
+ changed.push(`${claim.key}:removed`);
47
+ continue;
48
+ }
49
+ if (claim.statement !== candidate.statement ||
50
+ claim.source_ref !== candidate.source_ref ||
51
+ claim.disposition.type !== candidate.disposition.type) {
52
+ changed.push(`${claim.key}:authority_changed`);
53
+ continue;
54
+ }
55
+ if ((claim.disposition.type === "claim" ||
56
+ claim.disposition.type === "global_constraint" ||
57
+ claim.disposition.type === "risk_fact") &&
58
+ (candidate.disposition.type === "claim" ||
59
+ candidate.disposition.type === "global_constraint" ||
60
+ candidate.disposition.type === "risk_fact")) {
61
+ const nextRefs = new Set(candidate.disposition.refs);
62
+ if (claim.disposition.refs.some((reference) => !nextRefs.has(reference)))
63
+ changed.push(`${claim.key}:disposition_refs_removed_or_replaced`);
64
+ }
65
+ else if (!same(claim.disposition, candidate.disposition))
66
+ changed.push(`${claim.key}:disposition_changed`);
67
+ }
68
+ return changed;
69
+ }
70
+ export function removedGlobalForbiddenPaths(previous, next) {
71
+ const after = new Map(next.global.technical.forbidden_paths.map((item) => [item.key, item.path]));
72
+ return previous.global.technical.forbidden_paths
73
+ .filter((item) => after.get(item.key) !== item.path)
74
+ .map((item) => `GLOBAL:${item.key}:${item.path}`);
75
+ }
76
+ export function bindingReductions(before, after) {
77
+ const nextBindings = new Map(after.technical.bindings.map((binding) => [binding.key, binding]));
78
+ const reductions = [];
79
+ for (const binding of before.technical.bindings) {
80
+ const candidate = nextBindings.get(binding.key);
81
+ if (!candidate) {
82
+ reductions.push(`${after.key}:${binding.key}:removed`);
83
+ continue;
84
+ }
85
+ if (binding.kind !== candidate.kind ||
86
+ binding.target !== candidate.target ||
87
+ binding.existence !== candidate.existence ||
88
+ binding.verification_check_key !== candidate.verification_check_key)
89
+ reductions.push(`${after.key}:${binding.key}:target_or_kind_changed`);
90
+ reductions.push(...expandedPatterns(`${after.key}:${binding.key}`, binding.carrier_paths, candidate.carrier_paths));
91
+ }
92
+ return reductions;
93
+ }
94
+ export function obligationReductions(before, after) {
95
+ const nextObligations = new Map(after.technical.obligations.map((obligation) => [
96
+ obligation.key,
97
+ obligation,
98
+ ]));
99
+ const reductions = [];
100
+ for (const obligation of before.technical.obligations) {
101
+ const candidate = nextObligations.get(obligation.key);
102
+ if (!candidate) {
103
+ reductions.push(`${after.key}:${obligation.key}:removed`);
104
+ continue;
105
+ }
106
+ if (obligation.statement !== candidate.statement)
107
+ reductions.push(`${after.key}:${obligation.key}:statement_changed`);
108
+ const nextSurfaces = new Set(candidate.required_proof_surfaces);
109
+ if (obligation.required_proof_surfaces.some((surface) => !nextSurfaces.has(surface)))
110
+ reductions.push(`${after.key}:${obligation.key}:proof_surface_removed`);
111
+ }
112
+ return reductions;
113
+ }
114
+ export function rollbackReductions(before, after) {
115
+ const previous = before.technical.rollback_and_recovery;
116
+ const next = after.technical.rollback_and_recovery;
117
+ if (!previous)
118
+ return [];
119
+ if (!next)
120
+ return [`${after.key}:removed`];
121
+ if (previous.rollback !== next.rollback ||
122
+ previous.recovery !== next.recovery)
123
+ return [`${after.key}:statement_changed`];
124
+ const nextChecks = new Set(next.verification_check_keys);
125
+ return previous.verification_check_keys.some((key) => !nextChecks.has(key))
126
+ ? [`${after.key}:verification_check_removed`]
127
+ : [];
128
+ }
129
+ export function counterfactualReductions(before, after) {
130
+ const next = new Map(after.acceptance.counterfactual_controls.map((control) => [
131
+ control.key,
132
+ control,
133
+ ]));
134
+ return before.acceptance.counterfactual_controls
135
+ .filter((control) => {
136
+ const candidate = next.get(control.key);
137
+ return !candidate || !same(control, candidate);
138
+ })
139
+ .map((control) => `${after.key}:${control.key}`);
140
+ }
141
+ export function globalCounterfactualReductions(before, after) {
142
+ const next = new Map(after.global.acceptance.counterfactual_controls.map((control) => [
143
+ control.key,
144
+ control,
145
+ ]));
146
+ return (before.global.acceptance.counterfactual_controls ?? [])
147
+ .filter((control) => {
148
+ const candidate = next.get(control.key);
149
+ return !candidate || !same(control, candidate);
150
+ })
151
+ .map((control) => `GLOBAL:${control.key}`);
152
+ }
153
+ export function expandedPatterns(label, before, after) {
154
+ return after
155
+ .filter((candidate) => !before.some((existing) => proveRepositoryPatternSubset(candidate, existing).status ===
156
+ "proven_subset"))
157
+ .map((candidate) => `${label}:${candidate}`);
158
+ }
159
+ export function removedExactValues(label, before, after) {
160
+ const available = new Set(after);
161
+ return before
162
+ .filter((value) => !available.has(value))
163
+ .map((value) => `${label}:${value}`);
164
+ }
165
+ export function removedStructuredValues(label, before, after) {
166
+ const available = new Set(after.map(canonicalValueJson));
167
+ return before
168
+ .filter((value) => !available.has(canonicalValueJson(value)))
169
+ .map((value) => `${label}:${canonicalValueJson(value)}`);
170
+ }
171
+ export function removedValues(before, after) {
172
+ return [...before].filter((value) => !after.has(value)).sort();
173
+ }
174
+ export function addedValues(before, after) {
175
+ return [...after].filter((value) => !before.has(value)).sort();
176
+ }
177
+ export function same(left, right) {
178
+ return canonicalValueJson(left) === canonicalValueJson(right);
179
+ }
180
+ function declaredRunner(check) {
181
+ const runner = check.runner;
182
+ return {
183
+ type: runner.type,
184
+ target: runner.target,
185
+ argv: runner.argv,
186
+ cwd: runner.cwd,
187
+ timeout_ms: runner.timeout_ms,
188
+ effect: runner.effect,
189
+ retry_policy: runner.retry_policy,
190
+ idempotent: runner.idempotent,
191
+ };
192
+ }
@@ -0,0 +1,3 @@
1
+ import type { AuthorityHashesV2, CompiledDeliveryContractV2, CompiledOutcomeV2, DeliveryContractV2, NextAuthorityMaterialsV2, VerifierIdentityV2 } from "./long-task-delivery-types.js";
2
+ export declare function assertRiskNotDowngraded(previous: CompiledDeliveryContractV2, nextLevel: "standard" | "strict", nextReasons: string[]): void;
3
+ export declare function enforceAuthorityRevision(previous: CompiledDeliveryContractV2, nextContract: DeliveryContractV2, nextHashes: AuthorityHashesV2, nextMaterials: NextAuthorityMaterialsV2, nextGlobalChecks: CompiledDeliveryContractV2["global"]["acceptance"]["checks"], nextOutcomes: CompiledOutcomeV2[], nextVerifier: VerifierIdentityV2, workdir: string, riskFloor: "standard" | "strict"): Promise<void>;
@@ -0,0 +1,41 @@
1
+ import { changedAuthoritySections } from "./long-task-authority.js";
2
+ import { authorityMaterialHashes, compiledAuthorityMaterials, } from "./long-task-authority-materials.js";
3
+ import { authorityRevisionDiff, } from "./long-task-authority-revision.js";
4
+ import { authorityRevisionApproved, writePendingAuthorityRevision, } from "./long-task-state.js";
5
+ import { canonicalValueJson, sha256Hex } from "./strict-codec.js";
6
+ export function assertRiskNotDowngraded(previous, nextLevel, nextReasons) {
7
+ if (previous.effective_risk === "strict" && nextLevel !== "strict")
8
+ throw new Error("authority_risk_downgrade_rejected:strict_to_standard");
9
+ const next = new Set(nextReasons);
10
+ const removed = previous.risk_reasons.filter((reason) => !next.has(reason));
11
+ if (removed.length)
12
+ throw new Error(`authority_risk_downgrade_rejected:${removed.join(",")}`);
13
+ }
14
+ export async function enforceAuthorityRevision(previous, nextContract, nextHashes, nextMaterials, nextGlobalChecks, nextOutcomes, nextVerifier, workdir, riskFloor) {
15
+ const previousMaterials = compiledAuthorityMaterials(previous);
16
+ const diff = authorityRevisionDiff(previous, nextContract, nextHashes, nextMaterials, nextGlobalChecks, nextOutcomes, nextVerifier);
17
+ if (!diff.reduction_reasons.length)
18
+ return;
19
+ const unsignedRevision = {
20
+ previous_hashes: previous.authority_hashes,
21
+ next_hashes: nextHashes,
22
+ previous_materials: previousMaterials,
23
+ next_materials: nextMaterials,
24
+ previous_material_hashes: authorityMaterialHashes(previousMaterials),
25
+ next_material_hashes: authorityMaterialHashes(nextMaterials),
26
+ changed_authority_sections: changedAuthoritySections(previous.authority_hashes, nextHashes),
27
+ revision_diff: diff,
28
+ new_risk_floor: riskFloor,
29
+ affected_outcomes_or_contracts: nextContract.outcomes.map((outcome) => outcome.key),
30
+ };
31
+ const revisionIdentity = sha256Hex(canonicalValueJson(unsignedRevision));
32
+ if (!(await authorityRevisionApproved(workdir, revisionIdentity))) {
33
+ await writePendingAuthorityRevision(workdir, {
34
+ schema_version: "long-task-authority-revision-pending-v2",
35
+ ...unsignedRevision,
36
+ revision_identity: revisionIdentity,
37
+ created_at: new Date().toISOString(),
38
+ });
39
+ throw new Error(`authority_change_requires_user_decision:${revisionIdentity}`);
40
+ }
41
+ }
@@ -0,0 +1,50 @@
1
+ import type { VerifierIdentityV2 } from "./long-task-authority-types.js";
2
+ export interface AuthorityRevisionDiffV2 {
3
+ product_claims_added: string[];
4
+ product_claims_removed: string[];
5
+ product_claims_changed: string[];
6
+ product_semantics_changed: string[];
7
+ global_semantics_changed: string[];
8
+ checks_added: string[];
9
+ checks_removed: string[];
10
+ negative_assertions_removed: string[];
11
+ proof_surfaces_changed: string[];
12
+ source_claims_added: string[];
13
+ source_claims_removed_or_changed: string[];
14
+ source_paths_removed_or_replaced: string[];
15
+ source_files_added: string[];
16
+ source_files_removed: string[];
17
+ source_files_changed: string[];
18
+ context_snapshot_mode_changed: boolean;
19
+ context_topology_changed: boolean;
20
+ context_files_added: string[];
21
+ context_files_removed: string[];
22
+ context_files_changed: string[];
23
+ owner_paths_expanded: string[];
24
+ owner_context_refs_removed: string[];
25
+ expected_change_paths_expanded: string[];
26
+ allowed_paths_expanded: string[];
27
+ forbidden_paths_removed: string[];
28
+ runner_definitions_changed: string[];
29
+ verification_inputs_removed_or_replaced: string[];
30
+ input_paths_removed_or_narrowed: string[];
31
+ expected_output_paths_removed_or_weakened: string[];
32
+ artifacts_removed: string[];
33
+ environment_requirements_removed: string[];
34
+ bindings_removed_or_expanded: string[];
35
+ obligations_removed_or_weakened: string[];
36
+ rollback_or_recovery_weakened: string[];
37
+ counterfactuals_removed: string[];
38
+ population_weakened: string[];
39
+ verifier_content_changed: boolean;
40
+ verifier_runtime_locator_changed: boolean;
41
+ verifier_files_changed: string[];
42
+ previous_verifier: VerifierIdentityV2;
43
+ next_verifier: VerifierIdentityV2;
44
+ source_claims_changed: boolean;
45
+ risk_changed: boolean;
46
+ owner_or_path_boundary_changed: boolean;
47
+ runner_or_verification_inputs_changed: boolean;
48
+ technical_obligations_changed: boolean;
49
+ reduction_reasons: string[];
50
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ import type { AuthorityHashesV2, CompiledCheckV2, CompiledDeliveryContractV2, CompiledOutcomeV2, DeliveryContractV2, NextAuthorityMaterialsV2, VerifierIdentityV2 } from "./long-task-delivery-types.js";
2
+ import type { AuthorityRevisionDiffV2 } from "./long-task-authority-revision-types.js";
3
+ export type { AuthorityRevisionDiffV2 } from "./long-task-authority-revision-types.js";
4
+ export declare function authorityRevisionDiff(previous: CompiledDeliveryContractV2, next: DeliveryContractV2, nextHashes: AuthorityHashesV2, nextMaterials: NextAuthorityMaterialsV2, nextGlobalChecks: CompiledCheckV2[], nextOutcomes: CompiledOutcomeV2[], nextVerifier: VerifierIdentityV2): AuthorityRevisionDiffV2;
@@ -0,0 +1,188 @@
1
+ import { acceptanceSemanticsChanged, isMonotonicAcceptanceStrengthening, } from "./long-task-authority.js";
2
+ import { authorityMaterialRevisionDiff, changedProductClaimSemantics, sourceClaimAdditions, } from "./long-task-authority-material-diff.js";
3
+ import { compileProductClaimCoverage } from "./long-task-claims.js";
4
+ import { addedValues, bindingReductions, changedRunnerFields, checkIndex, counterfactualReductions, expandedPatterns, globalCounterfactualReductions, obligationReductions, removedExactValues, removedGlobalForbiddenPaths, removedOrNarrowedInputPaths, removedOrReplacedVerificationInputs, removedOrWeakenedExpectedOutputPaths, removedStructuredValues, removedValues, rollbackReductions, same, sourceClaimReductions, } from "./long-task-authority-revision-details.js";
5
+ import { verifierAuthorityDiff } from "./long-task-verifier-authority.js";
6
+ export function authorityRevisionDiff(previous, next, nextHashes, nextMaterials, nextGlobalChecks, nextOutcomes, nextVerifier) {
7
+ const materialDiff = authorityMaterialRevisionDiff(previous, nextMaterials);
8
+ const nextClaims = compileProductClaimCoverage(next).by_outcome;
9
+ const beforeClaimIds = new Set(previous.outcomes.flatMap((outcome) => outcome.generated_claims.map((claim) => claim.id)));
10
+ const afterClaimIds = new Set(Object.values(nextClaims)
11
+ .flat()
12
+ .map((claim) => claim.id));
13
+ const beforeChecks = checkIndex(previous.global.acceptance.checks, previous.outcomes);
14
+ const afterChecks = checkIndex(nextGlobalChecks, nextOutcomes);
15
+ const productClaimsRemoved = removedValues(beforeClaimIds, afterClaimIds);
16
+ const productClaimsAdded = addedValues(beforeClaimIds, afterClaimIds);
17
+ const productClaimsChanged = changedProductClaimSemantics(previous, next);
18
+ const checksRemoved = removedValues(new Set(beforeChecks.keys()), new Set(afterChecks.keys()));
19
+ const negativeAssertionsRemoved = [];
20
+ const proofSurfacesChanged = [];
21
+ const runnerDefinitionsChanged = [];
22
+ const verificationInputsRemovedOrReplaced = [];
23
+ const inputPathsRemovedOrNarrowed = [];
24
+ const expectedOutputPathsRemovedOrWeakened = [];
25
+ const artifactsRemoved = [];
26
+ const environmentRequirementsRemoved = [];
27
+ for (const [identity, before] of beforeChecks) {
28
+ const after = afterChecks.get(identity);
29
+ if (!after)
30
+ continue;
31
+ for (const assertion of before.negative_assertions)
32
+ if (!after.negative_assertions.some((item) => same(item, assertion)))
33
+ negativeAssertionsRemoved.push(`${identity}:${assertion.key}`);
34
+ if (before.proof_surface !== after.proof_surface)
35
+ proofSurfacesChanged.push(`${identity}:${before.proof_surface}->${after.proof_surface}`);
36
+ runnerDefinitionsChanged.push(...changedRunnerFields(identity, before, after));
37
+ verificationInputsRemovedOrReplaced.push(...removedOrReplacedVerificationInputs(identity, before, after));
38
+ inputPathsRemovedOrNarrowed.push(...removedOrNarrowedInputPaths(identity, before, after));
39
+ expectedOutputPathsRemovedOrWeakened.push(...removedOrWeakenedExpectedOutputPaths(identity, before, after));
40
+ artifactsRemoved.push(...removedExactValues(identity, before.artifact_globs, after.artifact_globs));
41
+ environmentRequirementsRemoved.push(...removedStructuredValues(identity, before.environment_requirements, after.environment_requirements));
42
+ }
43
+ const sourceClaimsRemovedOrChanged = sourceClaimReductions(previous.source_claims, next.source_claims);
44
+ const sourceClaimsAdded = sourceClaimAdditions(previous.source_claims, next.source_claims);
45
+ const sourcePathsRemovedOrReplaced = removedExactValues("task", previous.task.source_paths, next.task.source_paths);
46
+ const ownerPathsExpanded = [];
47
+ const ownerContextRefsRemoved = [];
48
+ const expectedChangePathsExpanded = [];
49
+ const allowedPathsExpanded = [];
50
+ const forbiddenPathsRemoved = removedGlobalForbiddenPaths(previous, next);
51
+ const bindingsRemovedOrExpanded = [];
52
+ const obligationsRemovedOrWeakened = [];
53
+ const rollbackOrRecoveryWeakened = [];
54
+ const counterfactualsRemoved = globalCounterfactualReductions(previous, next);
55
+ const populationWeakened = [];
56
+ const verifierDiff = verifierAuthorityDiff(previous.verifier_identity, nextVerifier);
57
+ const previousOutcomes = new Map(previous.outcomes.map((outcome) => [outcome.key, outcome]));
58
+ for (const after of next.outcomes) {
59
+ const before = previousOutcomes.get(after.key);
60
+ if (!before)
61
+ continue;
62
+ ownerPathsExpanded.push(...expandedPatterns(after.key, before.product.owner.path_globs, after.product.owner.path_globs));
63
+ ownerContextRefsRemoved.push(...removedExactValues(after.key, before.product.owner.context_refs, after.product.owner.context_refs));
64
+ expectedChangePathsExpanded.push(...expandedPatterns(after.key, before.technical.expected_change_paths, after.technical.expected_change_paths));
65
+ allowedPathsExpanded.push(...expandedPatterns(after.key, before.technical.allowed_support_paths, after.technical.allowed_support_paths));
66
+ forbiddenPathsRemoved.push(...removedExactValues(after.key, before.technical.forbidden_paths, after.technical.forbidden_paths));
67
+ bindingsRemovedOrExpanded.push(...bindingReductions(before, after));
68
+ obligationsRemovedOrWeakened.push(...obligationReductions(before, after));
69
+ rollbackOrRecoveryWeakened.push(...rollbackReductions(before, after));
70
+ counterfactualsRemoved.push(...counterfactualReductions(before, after));
71
+ if (before.acceptance.population &&
72
+ (!after.acceptance.population ||
73
+ !same(before.acceptance.population, after.acceptance.population)))
74
+ populationWeakened.push(after.key);
75
+ }
76
+ const riskChanged = previous.authority_hashes.risk_authority_hash !==
77
+ nextHashes.risk_authority_hash;
78
+ const acceptanceChanged = acceptanceSemanticsChanged(previous, next);
79
+ const monotonic = isMonotonicAcceptanceStrengthening(previous, next);
80
+ const reductionReasons = [
81
+ ...(productClaimsAdded.length ? ["product_claim_added"] : []),
82
+ ...(productClaimsRemoved.length ? ["product_claim_removed"] : []),
83
+ ...(productClaimsChanged.length ? ["product_claim_changed"] : []),
84
+ ...materialDiff.reduction_reasons,
85
+ ...(checksRemoved.length ? ["check_removed"] : []),
86
+ ...(negativeAssertionsRemoved.length ? ["negative_assertion_removed"] : []),
87
+ ...(proofSurfacesChanged.length ? ["proof_surface_changed"] : []),
88
+ ...(sourceClaimsRemovedOrChanged.length
89
+ ? ["source_claim_removed_or_changed"]
90
+ : []),
91
+ ...(sourceClaimsAdded.length ? ["source_claim_added"] : []),
92
+ ...(sourcePathsRemovedOrReplaced.length
93
+ ? ["source_path_removed_or_replaced"]
94
+ : []),
95
+ ...(ownerPathsExpanded.length ? ["owner_path_expanded"] : []),
96
+ ...(ownerContextRefsRemoved.length ? ["owner_context_ref_removed"] : []),
97
+ ...(expectedChangePathsExpanded.length
98
+ ? ["expected_change_path_expanded"]
99
+ : []),
100
+ ...(allowedPathsExpanded.length ? ["allowed_path_expanded"] : []),
101
+ ...(forbiddenPathsRemoved.length ? ["forbidden_path_removed"] : []),
102
+ ...(runnerDefinitionsChanged.length ? ["runner_definition_changed"] : []),
103
+ ...(verificationInputsRemovedOrReplaced.length
104
+ ? ["verification_input_removed_or_replaced"]
105
+ : []),
106
+ ...(inputPathsRemovedOrNarrowed.length
107
+ ? ["input_path_coverage_reduced"]
108
+ : []),
109
+ ...(expectedOutputPathsRemovedOrWeakened.length
110
+ ? ["expected_output_requirement_weakened"]
111
+ : []),
112
+ ...(artifactsRemoved.length ? ["artifact_removed"] : []),
113
+ ...(environmentRequirementsRemoved.length
114
+ ? ["environment_requirement_removed"]
115
+ : []),
116
+ ...(bindingsRemovedOrExpanded.length
117
+ ? ["binding_removed_or_expanded"]
118
+ : []),
119
+ ...(obligationsRemovedOrWeakened.length
120
+ ? ["obligation_removed_or_weakened"]
121
+ : []),
122
+ ...(rollbackOrRecoveryWeakened.length
123
+ ? ["rollback_or_recovery_weakened"]
124
+ : []),
125
+ ...(counterfactualsRemoved.length ? ["counterfactual_removed"] : []),
126
+ ...(populationWeakened.length ? ["population_weakened"] : []),
127
+ ...(verifierDiff.verifier_content_changed
128
+ ? ["verifier_content_changed"]
129
+ : []),
130
+ ...(riskChanged ? ["risk_changed_requires_review"] : []),
131
+ ...(acceptanceChanged && !monotonic ? ["acceptance_not_monotonic"] : []),
132
+ ];
133
+ return {
134
+ product_claims_added: productClaimsAdded,
135
+ product_claims_removed: productClaimsRemoved,
136
+ product_claims_changed: productClaimsChanged,
137
+ product_semantics_changed: materialDiff.product_semantics_changed,
138
+ global_semantics_changed: materialDiff.global_semantics_changed,
139
+ checks_added: addedValues(new Set(beforeChecks.keys()), new Set(afterChecks.keys())),
140
+ checks_removed: checksRemoved,
141
+ negative_assertions_removed: negativeAssertionsRemoved,
142
+ proof_surfaces_changed: proofSurfacesChanged,
143
+ source_claims_added: sourceClaimsAdded,
144
+ source_claims_removed_or_changed: sourceClaimsRemovedOrChanged,
145
+ source_paths_removed_or_replaced: sourcePathsRemovedOrReplaced,
146
+ source_files_added: materialDiff.source_files_added,
147
+ source_files_removed: materialDiff.source_files_removed,
148
+ source_files_changed: materialDiff.source_files_changed,
149
+ context_snapshot_mode_changed: materialDiff.context_snapshot_mode_changed,
150
+ context_topology_changed: materialDiff.context_topology_changed,
151
+ context_files_added: materialDiff.context_files_added,
152
+ context_files_removed: materialDiff.context_files_removed,
153
+ context_files_changed: materialDiff.context_files_changed,
154
+ owner_paths_expanded: ownerPathsExpanded,
155
+ owner_context_refs_removed: ownerContextRefsRemoved,
156
+ expected_change_paths_expanded: expectedChangePathsExpanded,
157
+ allowed_paths_expanded: allowedPathsExpanded,
158
+ forbidden_paths_removed: forbiddenPathsRemoved,
159
+ runner_definitions_changed: runnerDefinitionsChanged,
160
+ verification_inputs_removed_or_replaced: verificationInputsRemovedOrReplaced,
161
+ input_paths_removed_or_narrowed: inputPathsRemovedOrNarrowed,
162
+ expected_output_paths_removed_or_weakened: expectedOutputPathsRemovedOrWeakened,
163
+ artifacts_removed: artifactsRemoved,
164
+ environment_requirements_removed: environmentRequirementsRemoved,
165
+ bindings_removed_or_expanded: bindingsRemovedOrExpanded,
166
+ obligations_removed_or_weakened: obligationsRemovedOrWeakened,
167
+ rollback_or_recovery_weakened: rollbackOrRecoveryWeakened,
168
+ counterfactuals_removed: counterfactualsRemoved,
169
+ population_weakened: populationWeakened,
170
+ ...verifierDiff,
171
+ source_claims_changed: previous.authority_hashes.source_authority_hash !==
172
+ nextHashes.source_authority_hash,
173
+ risk_changed: riskChanged,
174
+ owner_or_path_boundary_changed: ownerPathsExpanded.length > 0 ||
175
+ ownerContextRefsRemoved.length > 0 ||
176
+ expectedChangePathsExpanded.length > 0 ||
177
+ allowedPathsExpanded.length > 0 ||
178
+ forbiddenPathsRemoved.length > 0 ||
179
+ bindingsRemovedOrExpanded.length > 0,
180
+ runner_or_verification_inputs_changed: runnerDefinitionsChanged.length > 0 ||
181
+ verificationInputsRemovedOrReplaced.length > 0 ||
182
+ inputPathsRemovedOrNarrowed.length > 0 ||
183
+ expectedOutputPathsRemovedOrWeakened.length > 0,
184
+ technical_obligations_changed: obligationsRemovedOrWeakened.length > 0 ||
185
+ rollbackOrRecoveryWeakened.length > 0,
186
+ reduction_reasons: [...new Set(reductionReasons)],
187
+ };
188
+ }
@@ -0,0 +1,62 @@
1
+ export declare const ACTIVE_AUTHORITY_TRANSITION_POLICY: {
2
+ readonly compile_first: {
3
+ readonly reads_authority: "none";
4
+ readonly modifies_authority: true;
5
+ readonly requires_lock: true;
6
+ readonly cas: "expected_null";
7
+ };
8
+ readonly compile_revise: {
9
+ readonly reads_authority: "active_snapshot";
10
+ readonly modifies_authority: true;
11
+ readonly requires_lock: true;
12
+ readonly cas: "expected_identity";
13
+ };
14
+ readonly verify: {
15
+ readonly reads_authority: "active_snapshot";
16
+ readonly modifies_authority: false;
17
+ readonly requires_lock: false;
18
+ readonly cas: "recheck_before_progress_write";
19
+ };
20
+ readonly final_gate: {
21
+ readonly reads_authority: "active_snapshot";
22
+ readonly modifies_authority: false;
23
+ readonly requires_lock: false;
24
+ readonly cas: "recheck_before_acceptance";
25
+ };
26
+ readonly stop_accepted_clear: {
27
+ readonly reads_authority: "accepted_identity";
28
+ readonly modifies_authority: true;
29
+ readonly requires_lock: true;
30
+ readonly cas: "expected_identity";
31
+ };
32
+ readonly close_accepted_clear: {
33
+ readonly reads_authority: "accepted_identity";
34
+ readonly modifies_authority: true;
35
+ readonly requires_lock: true;
36
+ readonly cas: "expected_identity";
37
+ };
38
+ readonly abandon_valid: {
39
+ readonly reads_authority: "active_snapshot";
40
+ readonly modifies_authority: true;
41
+ readonly requires_lock: true;
42
+ readonly cas: "expected_identity";
43
+ };
44
+ readonly abandon_corrupt: {
45
+ readonly reads_authority: "deterministic_local_paths";
46
+ readonly modifies_authority: true;
47
+ readonly requires_lock: true;
48
+ readonly cas: "explicit_force";
49
+ };
50
+ readonly legacy_migration: {
51
+ readonly reads_authority: "legacy_plus_matching_cache";
52
+ readonly modifies_authority: true;
53
+ readonly requires_lock: true;
54
+ readonly cas: "expected_legacy_identity";
55
+ };
56
+ readonly verifier_migration: {
57
+ readonly reads_authority: "active_snapshot";
58
+ readonly modifies_authority: true;
59
+ readonly requires_lock: true;
60
+ readonly cas: "expected_identity";
61
+ };
62
+ };
@@ -0,0 +1,62 @@
1
+ export const ACTIVE_AUTHORITY_TRANSITION_POLICY = {
2
+ compile_first: {
3
+ reads_authority: "none",
4
+ modifies_authority: true,
5
+ requires_lock: true,
6
+ cas: "expected_null",
7
+ },
8
+ compile_revise: {
9
+ reads_authority: "active_snapshot",
10
+ modifies_authority: true,
11
+ requires_lock: true,
12
+ cas: "expected_identity",
13
+ },
14
+ verify: {
15
+ reads_authority: "active_snapshot",
16
+ modifies_authority: false,
17
+ requires_lock: false,
18
+ cas: "recheck_before_progress_write",
19
+ },
20
+ final_gate: {
21
+ reads_authority: "active_snapshot",
22
+ modifies_authority: false,
23
+ requires_lock: false,
24
+ cas: "recheck_before_acceptance",
25
+ },
26
+ stop_accepted_clear: {
27
+ reads_authority: "accepted_identity",
28
+ modifies_authority: true,
29
+ requires_lock: true,
30
+ cas: "expected_identity",
31
+ },
32
+ close_accepted_clear: {
33
+ reads_authority: "accepted_identity",
34
+ modifies_authority: true,
35
+ requires_lock: true,
36
+ cas: "expected_identity",
37
+ },
38
+ abandon_valid: {
39
+ reads_authority: "active_snapshot",
40
+ modifies_authority: true,
41
+ requires_lock: true,
42
+ cas: "expected_identity",
43
+ },
44
+ abandon_corrupt: {
45
+ reads_authority: "deterministic_local_paths",
46
+ modifies_authority: true,
47
+ requires_lock: true,
48
+ cas: "explicit_force",
49
+ },
50
+ legacy_migration: {
51
+ reads_authority: "legacy_plus_matching_cache",
52
+ modifies_authority: true,
53
+ requires_lock: true,
54
+ cas: "expected_legacy_identity",
55
+ },
56
+ verifier_migration: {
57
+ reads_authority: "active_snapshot",
58
+ modifies_authority: true,
59
+ requires_lock: true,
60
+ cas: "expected_identity",
61
+ },
62
+ };