project-tiny-context-harness 0.2.85 → 0.6.1

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 +164 -427
  2. package/assets/README.md +284 -455
  3. package/assets/README.zh-CN.md +200 -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 +63 -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 +467 -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 -163
  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 +4 -2
  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 -245
  275. package/assets/skills/composite-long-task-workflow/assets/execution-binding.template.md +0 -62
  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 -682
  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 -91
  313. package/dist/lib/superpowers-task-completion-output.js +0 -374
  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 -393
  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 -35
  336. package/dist/lib/superpowers-task-gates.d.ts +0 -12
  337. package/dist/lib/superpowers-task-gates.js +0 -267
  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 -460
  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 -293
@@ -0,0 +1,56 @@
1
+ import { array, fail, key, literal, object, repositorySourceRef, string, strings, } from "./long-task-shape-primitives.js";
2
+ export function parseSourceClaims(value, label) {
3
+ return array(value, label).map((item, index) => {
4
+ const itemLabel = `${label}[${index}]`;
5
+ const row = object(item, itemLabel, [
6
+ "key",
7
+ "source_ref",
8
+ "statement",
9
+ "disposition",
10
+ ]);
11
+ const disposition = object(row.disposition, `${itemLabel}.disposition`, ["type"], ["refs", "ref", "reason"]);
12
+ const type = literal(disposition.type, [
13
+ "claim",
14
+ "acceptance",
15
+ "outcome_result",
16
+ "global_constraint",
17
+ "risk_fact",
18
+ "external_confirmation",
19
+ "out_of_scope",
20
+ "decision_required",
21
+ ], `${itemLabel}.disposition.type`);
22
+ if (type === "out_of_scope")
23
+ fail("out_of_scope_requires_non_goal_or_decision", key(row.key, `${itemLabel}.key`));
24
+ const claimKey = key(row.key, `${itemLabel}.key`);
25
+ return {
26
+ key: claimKey,
27
+ source_ref: repositorySourceRef(row.source_ref, `${itemLabel}.source_ref`),
28
+ statement: string(row.statement, `${itemLabel}.statement`),
29
+ disposition: type === "decision_required"
30
+ ? {
31
+ type,
32
+ reason: string(disposition.reason, `${itemLabel}.disposition.reason`),
33
+ }
34
+ : type === "outcome_result"
35
+ ? {
36
+ type,
37
+ ref: string(disposition.ref, `${itemLabel}.disposition.ref`),
38
+ }
39
+ : type === "acceptance"
40
+ ? {
41
+ type,
42
+ refs: acceptanceRefs(disposition.refs, `${itemLabel}.disposition.refs`),
43
+ }
44
+ : {
45
+ type,
46
+ refs: strings(disposition.refs, `${itemLabel}.disposition.refs`),
47
+ },
48
+ };
49
+ });
50
+ }
51
+ function acceptanceRefs(value, label) {
52
+ const refs = strings(value, label);
53
+ if (refs.length !== 1)
54
+ fail("source_claim_acceptance_ref_count", label);
55
+ return [refs[0]];
56
+ }
@@ -0,0 +1,4 @@
1
+ import type { CompiledSourceItemV2, DeliveryContractV2 } from "./long-task-delivery-types.js";
2
+ export declare function validateSourceTargetContinuity(contract: DeliveryContractV2, items: CompiledSourceItemV2[], report?: ValidationReporter): void;
3
+ type ValidationReporter = (message: string) => void;
4
+ export {};
@@ -0,0 +1,80 @@
1
+ import { resolveAcceptanceAssertion } from "./long-task-acceptance-reference.js";
2
+ import { buildCanonicalSourceTargetIndex, sourceKindForTarget, } from "./long-task-source-target-index.js";
3
+ export function validateSourceTargetContinuity(contract, items, report) {
4
+ const itemByKey = new Map(items.map((item) => [item.key, item]));
5
+ const targets = buildCanonicalSourceTargetIndex(contract);
6
+ const owners = new Map();
7
+ const sourceBackedOutcomeClaims = new Set();
8
+ const sourceBackedGlobalClaims = new Set();
9
+ const acceptanceBindings = [];
10
+ for (const claim of contract.source_claims) {
11
+ const item = itemByKey.get(claim.key);
12
+ if (!item || claim.disposition.type === "decision_required")
13
+ continue;
14
+ const refs = dispositionRefs(claim.disposition);
15
+ if (refs.length !== 1) {
16
+ issue(report, `source_claim_target_ref_count:${claim.key}:${refs.length}`);
17
+ continue;
18
+ }
19
+ const ref = refs[0];
20
+ const target = targets.get(ref);
21
+ if (!target || sourceKindForTarget(target) !== item.kind) {
22
+ issue(report, `source_target_kind_mismatch:${claim.key}:${item.kind}:${target ? sourceKindForTarget(target) : "unknown"}:${ref}`);
23
+ continue;
24
+ }
25
+ if (item.kind === "risk_fact" &&
26
+ (target.risk_fact !== item.risk_semantics?.fact ||
27
+ target.affected_outcome !== item.risk_semantics?.affected_outcome)) {
28
+ issue(report, `source_risk_target_mismatch:${claim.key}:${item.risk_semantics?.fact ?? "missing"}:${item.risk_semantics?.affected_outcome ?? "missing"}:${ref}`);
29
+ continue;
30
+ }
31
+ if (target.normalized_text !== undefined &&
32
+ target.normalized_text !== item.normalized_text) {
33
+ issue(report, `source_target_statement_mismatch:${claim.key}:${ref}`);
34
+ continue;
35
+ }
36
+ const owner = owners.get(ref);
37
+ if (owner) {
38
+ issue(report, `source_target_already_owned:${claim.key}:${ref}:${owner}`);
39
+ continue;
40
+ }
41
+ owners.set(ref, claim.key);
42
+ if (target.outcome_key &&
43
+ [
44
+ "requirement",
45
+ "control",
46
+ "technical_obligation",
47
+ "non_completing",
48
+ "forbidden_shortcut",
49
+ ].includes(target.kind))
50
+ sourceBackedOutcomeClaims.add(ref);
51
+ if (!target.outcome_key &&
52
+ ["global_constraint", "non_goal", "forbidden_shortcut"].includes(target.kind))
53
+ sourceBackedGlobalClaims.add(ref);
54
+ if (target.kind === "acceptance")
55
+ acceptanceBindings.push({ claim, target });
56
+ }
57
+ for (const { claim, target } of acceptanceBindings) {
58
+ const resolved = resolveAcceptanceAssertion(contract, target.ref);
59
+ const sourceBacked = resolved?.scope === "outcome" && target.outcome_key
60
+ ? resolved.assertion.claims.some((localKey) => localKey !== "result" &&
61
+ sourceBackedOutcomeClaims.has(`${target.outcome_key}.${localKey}`))
62
+ : resolved?.scope === "global"
63
+ ? resolved.assertion.claims.some((localKey) => sourceBackedGlobalClaims.has(localKey))
64
+ : false;
65
+ if (!sourceBacked)
66
+ issue(report, `source_acceptance_without_source_backed_claim:${claim.key}:${target.ref}`);
67
+ }
68
+ }
69
+ function dispositionRefs(disposition) {
70
+ if (disposition.type === "decision_required")
71
+ return [];
72
+ if (disposition.type === "outcome_result")
73
+ return [disposition.ref];
74
+ return disposition.refs;
75
+ }
76
+ function issue(report, message) {
77
+ if (!report)
78
+ throw new Error(message);
79
+ report(message);
80
+ }
@@ -0,0 +1,12 @@
1
+ import type { DeliveryContractV2, SourceItemKind } from "./long-task-delivery-types.js";
2
+ export interface CanonicalSourceTarget {
3
+ ref: string;
4
+ kind: "outcome_result" | "requirement" | "control" | "technical_obligation" | "non_completing" | "global_constraint" | "non_goal" | "forbidden_shortcut" | "acceptance" | "risk_fact" | "external_confirmation";
5
+ normalized_text?: string;
6
+ scope?: "global" | "outcome";
7
+ outcome_key?: string;
8
+ risk_fact?: keyof DeliveryContractV2["risk"]["facts"];
9
+ affected_outcome?: string;
10
+ }
11
+ export declare function buildCanonicalSourceTargetIndex(contract: DeliveryContractV2): Map<string, CanonicalSourceTarget>;
12
+ export declare function sourceKindForTarget(target: CanonicalSourceTarget): SourceItemKind | null;
@@ -0,0 +1,76 @@
1
+ import { normalizeSourceItemText } from "./long-task-source-item-parser.js";
2
+ export function buildCanonicalSourceTargetIndex(contract) {
3
+ const targets = [];
4
+ for (const outcome of contract.outcomes) {
5
+ targets.push(target(`${outcome.key}.result`, "outcome_result", outcome.product.observable_result, outcome.key));
6
+ for (const requirement of outcome.product.requirements)
7
+ targets.push(target(`${outcome.key}.requirement.${requirement.key}`, "requirement", requirement.statement, outcome.key));
8
+ for (const control of outcome.product.controls)
9
+ for (const [field, value] of controlFields(control))
10
+ if (value.trim())
11
+ targets.push(target(`${outcome.key}.control.${control.key}.${field}`, "control", value, outcome.key));
12
+ for (const obligation of outcome.technical.obligations)
13
+ targets.push(target(`${outcome.key}.obligation.${obligation.key}`, "technical_obligation", obligation.statement, outcome.key));
14
+ for (const item of outcome.product.non_completing_outcomes)
15
+ targets.push(target(`${outcome.key}.non_completing.${item.key}`, "non_completing", item.statement, outcome.key));
16
+ for (const shortcut of outcome.technical.forbidden_shortcuts)
17
+ targets.push(target(`${outcome.key}.forbidden_shortcut.${shortcut.key}`, "forbidden_shortcut", shortcut.statement, outcome.key));
18
+ for (const check of outcome.acceptance.checks)
19
+ for (const assertion of [
20
+ ...check.positive_assertions,
21
+ ...check.negative_assertions,
22
+ ])
23
+ targets.push(target(`${outcome.key}.${check.key}.${assertion.key}`, "acceptance", assertion.criterion, outcome.key, "outcome"));
24
+ }
25
+ for (const item of contract.global.product.non_goals)
26
+ targets.push(target(`non_goal.${item.key}`, "non_goal", item.statement));
27
+ for (const item of contract.global.technical.constraints)
28
+ targets.push(target(`constraint.${item.key}`, "global_constraint", item.statement));
29
+ for (const item of contract.global.technical.forbidden_shortcuts)
30
+ targets.push(target(`forbidden_shortcut.${item.key}`, "forbidden_shortcut", item.statement));
31
+ for (const check of contract.global.acceptance.checks)
32
+ for (const assertion of [
33
+ ...check.positive_assertions,
34
+ ...check.negative_assertions,
35
+ ])
36
+ targets.push(target(`GLOBAL.${check.key}.${assertion.key}`, "acceptance", assertion.criterion, undefined, "global"));
37
+ for (const [fact, outcomes] of Object.entries(contract.risk.facts))
38
+ for (const outcome of outcomes)
39
+ targets.push({
40
+ ref: `${fact}:${outcome}`,
41
+ kind: "risk_fact",
42
+ risk_fact: fact,
43
+ affected_outcome: outcome,
44
+ });
45
+ for (const item of contract.global.acceptance.external_confirmations)
46
+ targets.push(target(item.key, "external_confirmation", item.description));
47
+ return new Map(targets.map((item) => [item.ref, item]));
48
+ }
49
+ function target(ref, kind, text, outcomeKey, scope) {
50
+ return {
51
+ ref,
52
+ kind,
53
+ ...(text !== undefined
54
+ ? { normalized_text: normalizeSourceItemText(text) }
55
+ : {}),
56
+ ...(outcomeKey ? { outcome_key: outcomeKey } : {}),
57
+ ...(scope ? { scope } : {}),
58
+ };
59
+ }
60
+ function controlFields(control) {
61
+ return [
62
+ ["location", control.location],
63
+ ["trigger", control.trigger],
64
+ ["input", control.input],
65
+ ["loading", control.loading_state],
66
+ ["empty", control.empty_state],
67
+ ["success", control.success_state],
68
+ ["failure", control.failure_state],
69
+ ["feedback", control.feedback],
70
+ ];
71
+ }
72
+ export function sourceKindForTarget(target) {
73
+ return target.kind === "global_constraint"
74
+ ? "technical_obligation"
75
+ : target.kind;
76
+ }
@@ -0,0 +1,3 @@
1
+ import type { SourceClaimV2 } from "./long-task-delivery-types.js";
2
+ export declare function validateSourceAnchors(repository: string, sourceClaims: SourceClaimV2[]): Promise<void>;
3
+ export declare function markdownAnchors(content: string): Set<string>;
@@ -0,0 +1,46 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { assertProtectedRepositoryFile } from "./long-task-protected-files.js";
4
+ export async function validateSourceAnchors(repository, sourceClaims) {
5
+ const anchorsByFile = new Map();
6
+ for (const [index, claim] of sourceClaims.entries()) {
7
+ const [relative, anchor] = claim.source_ref.split("#");
8
+ if (!anchor)
9
+ continue;
10
+ let anchors = anchorsByFile.get(relative);
11
+ if (!anchors) {
12
+ const file = await assertProtectedRepositoryFile(repository, path.resolve(repository, ...relative.split("/")), `source[${index}]`);
13
+ anchors = markdownAnchors(await readFile(file, "utf8"));
14
+ anchorsByFile.set(relative, anchors);
15
+ }
16
+ if (!anchors.has(anchor))
17
+ throw new Error(`source_claim_anchor_not_found:${claim.key}:${claim.source_ref}`);
18
+ }
19
+ }
20
+ export function markdownAnchors(content) {
21
+ const anchors = new Set();
22
+ const slugCounts = new Map();
23
+ for (const line of content.split(/\r?\n/u)) {
24
+ const heading = /^(?: {0,3})#{1,6}\s+(.+?)\s*#*\s*$/u.exec(line);
25
+ if (heading) {
26
+ const base = githubSlug(heading[1]);
27
+ if (base) {
28
+ const count = slugCounts.get(base) ?? 0;
29
+ anchors.add(count === 0 ? base : `${base}-${count}`);
30
+ slugCounts.set(base, count + 1);
31
+ }
32
+ }
33
+ for (const match of line.matchAll(/(?:\{#([A-Za-z0-9._:-]+)\}|(?:id|name)=["']([^"']+)["'])/gu))
34
+ anchors.add(match[1] ?? match[2]);
35
+ }
36
+ return anchors;
37
+ }
38
+ function githubSlug(value) {
39
+ return value
40
+ .trim()
41
+ .toLowerCase()
42
+ .replace(/<[^>]*>/gu, "")
43
+ .replace(/[^\p{L}\p{N}\s_-]/gu, "")
44
+ .replace(/\s+/gu, "-")
45
+ .replace(/-+/gu, "-");
46
+ }
@@ -0,0 +1,91 @@
1
+ import type { AuthorityMaterialHashesV2, AuthorityHashesV2, CompiledDeliveryContractV2, FinalReceiptV2, InitialTaskBaseV2, NextAuthorityMaterialsV2, ProgressRecordV2, VerifierIdentityV2 } from "./long-task-delivery-types.js";
2
+ export interface ActiveLongTaskAuthorityV3 {
3
+ schema_version: "active-long-task-authority-v3";
4
+ task_id: string;
5
+ repository_root: string;
6
+ worktree_identity: string;
7
+ workdir: string;
8
+ active_authority_identity: string;
9
+ authority_revision: number;
10
+ initial_task_base: InitialTaskBaseV2;
11
+ verifier_identity: VerifierIdentityV2;
12
+ activated_at: string;
13
+ authority_snapshot: CompiledDeliveryContractV2;
14
+ authority_snapshot_sha256: string;
15
+ }
16
+ export type CompiledCacheStatusV3 = "compiled_cache_matching" | "compiled_cache_missing_repairable" | "compiled_cache_mismatched_ignored";
17
+ export interface ActiveAuthorityLoadResultV3 {
18
+ authority: ActiveLongTaskAuthorityV3 | null;
19
+ source: "none" | "active_authority_v3";
20
+ migrated: boolean;
21
+ }
22
+ export type ActiveAuthorityLockOperation = "commit" | "clear" | "abandon" | "migrate";
23
+ export interface ActiveAuthorityIdentityExpectation {
24
+ task_id: string;
25
+ authority_revision: number;
26
+ compiled_identity: string;
27
+ worktree_identity?: string;
28
+ }
29
+ export interface ClearActiveBindingCasOptions extends ActiveAuthorityIdentityExpectation {
30
+ repository_root: string;
31
+ workdir: string;
32
+ }
33
+ export interface StagedCompiledDeliveryContractV2 {
34
+ publish(): Promise<void>;
35
+ discard(): Promise<void>;
36
+ }
37
+ export interface PendingAuthorityRevisionV2 {
38
+ schema_version: "long-task-authority-revision-pending-v2";
39
+ previous_hashes: AuthorityHashesV2;
40
+ next_hashes: AuthorityHashesV2;
41
+ previous_materials: NextAuthorityMaterialsV2;
42
+ next_materials: NextAuthorityMaterialsV2;
43
+ previous_material_hashes: AuthorityMaterialHashesV2;
44
+ next_material_hashes: AuthorityMaterialHashesV2;
45
+ changed_authority_sections: string[];
46
+ revision_diff: Record<string, unknown> & {
47
+ reduction_reasons: string[];
48
+ };
49
+ new_risk_floor: "standard" | "strict";
50
+ affected_outcomes_or_contracts: string[];
51
+ revision_identity: string;
52
+ created_at: string;
53
+ }
54
+ export declare function runtimePath(workdir: string, file?: string): string;
55
+ export declare function worktreeIdentity(repositoryRoot: string): string;
56
+ export declare function activeRecordPath(repositoryRoot: string): Promise<string>;
57
+ export declare function activeAuthorityLockPath(repositoryRoot: string): Promise<string>;
58
+ export declare function activeAuthorityLockExists(repositoryRoot: string): Promise<boolean>;
59
+ export declare function withActiveAuthorityLock<T>(repositoryRoot: string, operation: ActiveAuthorityLockOperation, action: () => Promise<T>): Promise<T>;
60
+ export declare function writeCompiledDeliveryContract(compiled: CompiledDeliveryContractV2): Promise<void>;
61
+ export declare function stageCompiledDeliveryContract(compiled: CompiledDeliveryContractV2): Promise<StagedCompiledDeliveryContractV2>;
62
+ export declare function readCompiledDeliveryContract(workdir: string): Promise<CompiledDeliveryContractV2>;
63
+ export declare function loadActiveLongTaskAuthority(repositoryRoot: string, _options?: {
64
+ migrate_legacy?: boolean;
65
+ }): Promise<ActiveAuthorityLoadResultV3>;
66
+ export declare function loadActiveCompiledAuthority(repositoryRoot: string, workdir?: string, options?: {
67
+ migrate_legacy?: boolean;
68
+ }): Promise<CompiledDeliveryContractV2 | null>;
69
+ export declare function readActiveLongTaskBinding(repositoryRoot: string): Promise<ActiveLongTaskAuthorityV3 | null>;
70
+ export declare function inspectCompiledCache(authority: ActiveLongTaskAuthorityV3): Promise<CompiledCacheStatusV3>;
71
+ export declare function commitActiveAuthority(options: {
72
+ candidate: CompiledDeliveryContractV2;
73
+ expected_previous_identity: string | null;
74
+ }): Promise<ActiveLongTaskAuthorityV3>;
75
+ export declare function activateDeliveryContract(compiled: CompiledDeliveryContractV2): Promise<ActiveLongTaskAuthorityV3>;
76
+ export declare function assertMatchingActiveBinding(compiled: CompiledDeliveryContractV2): Promise<ActiveLongTaskAuthorityV3>;
77
+ export declare function writeProgressRecord(workdir: string, record: ProgressRecordV2): Promise<void>;
78
+ export declare function readProgressRecords(workdir: string): Promise<Record<string, ProgressRecordV2>>;
79
+ export declare function writePendingAuthorityRevision(workdir: string, pending: PendingAuthorityRevisionV2): Promise<void>;
80
+ export declare function readPendingAuthorityRevision(workdir: string): Promise<PendingAuthorityRevisionV2 | null>;
81
+ export declare function approvePendingAuthorityRevision(workdir: string, revision: string): Promise<void>;
82
+ export declare function authorityRevisionApproved(workdir: string, revision: string): Promise<boolean>;
83
+ export declare function clearAuthorityRevision(workdir: string): Promise<void>;
84
+ export declare function invalidateDerivedProgress(workdir: string): Promise<void>;
85
+ export declare function writeFinalReceipt(repositoryRoot: string, workdir: string, unsigned: Omit<FinalReceiptV2, "receipt_sha256">): Promise<FinalReceiptV2>;
86
+ export declare function readFinalReceipt(_repositoryRoot: string, workdir: string): Promise<FinalReceiptV2 | null>;
87
+ export declare function activeAuthorityIdentityMatches(authority: ActiveLongTaskAuthorityV3, expected: ActiveAuthorityIdentityExpectation): boolean;
88
+ export declare function clearActiveBindingCas(options: ClearActiveBindingCasOptions): Promise<boolean>;
89
+ export declare function abandonLongTaskState(repositoryRoot: string, workdir: string): Promise<void>;
90
+ export declare function forceClearCorruptActiveState(repositoryRoot: string, workdir: string): Promise<void>;
91
+ export declare function clearFinalReceipt(repositoryRoot: string, workdir: string): Promise<void>;