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
@@ -1,176 +0,0 @@
1
- import { createHash } from "node:crypto";
2
- import path from "node:path";
3
- import { pathExists, readText } from "./fs.js";
4
- import { normalizeProofLayerName } from "./superpowers-task-fields.js";
5
- export function evaluateCurrentAttemptEvidence(state, evidence, layerId) {
6
- if (!state.current_attempt_id) {
7
- return [];
8
- }
9
- const failures = [];
10
- const label = `proof layer ${layerId} evidence ${evidence.evidence_id}`;
11
- if (evidence.schema_version !== "evidence-record-v2") {
12
- failures.push(`${label} must be EvidenceRecordV2 for current-attempt machine completion`);
13
- }
14
- if (evidence.task_attempt_id !== state.current_attempt_id) {
15
- failures.push(`${label} stale evidence from old attempt ${evidence.task_attempt_id || "(missing)"}; expected current attempt ${state.current_attempt_id}`);
16
- }
17
- for (const field of [
18
- "generated_at",
19
- "source_bundle_hash",
20
- "product_source_hash",
21
- "technical_plan_hash",
22
- "acceptance_checklist_hash",
23
- "git_head",
24
- "git_status_short",
25
- "tracked_diff_hash",
26
- "relevant_untracked_hash",
27
- "worktree_fingerprint",
28
- "command_spec_id",
29
- "command_run_id",
30
- "command_line",
31
- "artifact_path",
32
- "artifact_sha256",
33
- "artifact_mtime"
34
- ]) {
35
- if (!evidence[field]) {
36
- failures.push(`${label} EvidenceRecordV2 missing ${field}`);
37
- }
38
- }
39
- const attempt = state.attempts?.find((item) => item.task_attempt_id === state.current_attempt_id);
40
- if (attempt && evidence.source_bundle_hash && evidence.source_bundle_hash !== attempt.source_bundle_hash) {
41
- failures.push(`${label} stale evidence source_bundle_hash mismatch for current attempt`);
42
- }
43
- if (attempt && evidence.product_source_hash && evidence.product_source_hash !== attempt.product_source_hash) {
44
- failures.push(`${label} stale evidence product_source_hash mismatch for current attempt`);
45
- }
46
- if (attempt && evidence.technical_plan_hash && evidence.technical_plan_hash !== attempt.technical_plan_hash) {
47
- failures.push(`${label} stale evidence technical_plan_hash mismatch for current attempt`);
48
- }
49
- if (attempt && evidence.acceptance_checklist_hash && evidence.acceptance_checklist_hash !== attempt.acceptance_checklist_hash) {
50
- failures.push(`${label} stale evidence acceptance_checklist_hash mismatch for current attempt`);
51
- }
52
- if (attempt && evidence.git_head && evidence.git_head !== attempt.git_head) {
53
- failures.push(`${label} stale evidence git_head mismatch for current attempt`);
54
- }
55
- if (attempt && evidence.git_status_short !== undefined && evidence.git_status_short !== attempt.git_status_short) {
56
- failures.push(`${label} stale evidence git_status_short mismatch for current attempt`);
57
- }
58
- if (attempt && evidence.tracked_diff_hash !== undefined && evidence.tracked_diff_hash !== attempt.tracked_diff_hash) {
59
- failures.push(`${label} stale evidence tracked_diff_hash mismatch for current attempt`);
60
- }
61
- if (attempt && evidence.relevant_untracked_hash !== undefined && evidence.relevant_untracked_hash !== attempt.relevant_untracked_hash) {
62
- failures.push(`${label} stale evidence relevant_untracked_hash mismatch for current attempt`);
63
- }
64
- if (attempt && evidence.worktree_fingerprint && evidence.worktree_fingerprint !== attempt.worktree_fingerprint) {
65
- failures.push(`${label} stale evidence worktree_fingerprint mismatch for current attempt`);
66
- }
67
- if (attempt && (attempt.git_status_short || attempt.relevant_untracked_hash !== "none") && evidence.covers_dirty_worktree !== true) {
68
- failures.push(`${label} dirty worktree evidence must set covers_dirty_worktree=true for current attempt`);
69
- }
70
- if (attempt && evidence.generated_at && Date.parse(evidence.generated_at) < Date.parse(attempt.started_at)) {
71
- failures.push(`${label} stale evidence generated_at predates current attempt`);
72
- }
73
- if (attempt && evidence.artifact_mtime && Date.parse(evidence.artifact_mtime) < Date.parse(attempt.started_at)) {
74
- failures.push(`${label} stale evidence artifact_mtime predates current attempt`);
75
- }
76
- const commandRun = state.command_runs?.find((item) => item.command_run_id === evidence.command_run_id);
77
- if (!commandRun) {
78
- failures.push(`${label} missing command run ${evidence.command_run_id || "(missing)"}`);
79
- }
80
- else {
81
- if (commandRun.task_attempt_id !== state.current_attempt_id) {
82
- failures.push(`${label} command run ${commandRun.command_run_id} is from old attempt ${commandRun.task_attempt_id}`);
83
- }
84
- if (commandRun.exit_code !== 0) {
85
- failures.push(`${label} command run ${commandRun.command_run_id} exit_code=${commandRun.exit_code}; expected 0`);
86
- }
87
- if (!commandRun.completed_at) {
88
- failures.push(`${label} command run ${commandRun.command_run_id} missing completed_at`);
89
- }
90
- if (commandRun.command_spec_id !== evidence.command_spec_id) {
91
- failures.push(`${label} command_spec_id mismatch between evidence and command run`);
92
- }
93
- }
94
- const commandSpec = state.required_command_specs?.find((item) => item.command_spec_id === evidence.command_spec_id);
95
- if (!commandSpec) {
96
- failures.push(`${label} missing required command spec ${evidence.command_spec_id || "(missing)"}`);
97
- }
98
- else if (commandSpec.ac_id !== proofLayerAcId(layerId) || !commandSpec.proof_layers.map(normalizeProofLayerName).includes(proofLayerName(layerId))) {
99
- failures.push(`${label} command spec does not cover ${layerId}`);
100
- }
101
- const ac = state.graph.acceptance_criteria?.[proofLayerAcId(layerId)];
102
- const targetAcIds = evidence.target_ac_ids ?? evidence.assertion_result?.target_ac_ids ?? [];
103
- if (!targetAcIds.includes(proofLayerAcId(layerId))) {
104
- failures.push(`${label} target_ac_ids ${targetAcIds.join(", ") || "(none)"} do not include ${proofLayerAcId(layerId)}`);
105
- }
106
- const expectedPiIds = ac?.related_plan_items ?? [];
107
- const targetPiIds = evidence.target_pi_ids ?? evidence.assertion_result?.target_pi_ids ?? [];
108
- for (const piId of expectedPiIds) {
109
- if (!targetPiIds.includes(piId)) {
110
- failures.push(`${label} target_pi_ids ${targetPiIds.join(", ") || "(none)"} do not include related plan item ${piId}`);
111
- }
112
- }
113
- const targetLayers = (evidence.target_proof_layers ?? evidence.assertion_result?.target_proof_layers ?? []).map(normalizeLayerId);
114
- if (!targetLayers.includes(normalizeLayerId(layerId)) && !targetLayers.includes(proofLayerName(layerId))) {
115
- failures.push(`${label} target_proof_layers ${targetLayers.join(", ") || "(none)"} do not include ${layerId}`);
116
- }
117
- if (evidence.assertion_result?.schema_version !== "assertion-result-v2") {
118
- failures.push(`${label} assertion_result.schema_version must be assertion-result-v2 for current-attempt machine completion`);
119
- }
120
- return failures;
121
- }
122
- export async function evaluateCurrentAttemptArtifact(workdir, evidence, layerId) {
123
- const label = `proof layer ${layerId} evidence ${evidence.evidence_id}`;
124
- return validateArtifact(workdir, evidence, label);
125
- }
126
- async function validateArtifact(workdir, evidence, label) {
127
- const failures = [];
128
- if (!evidence.artifact_path) {
129
- failures.push(`${label} EvidenceRecordV2 missing artifact_path`);
130
- return failures;
131
- }
132
- const artifact = await resolveArtifactPath(workdir, evidence.artifact_path);
133
- if (!artifact) {
134
- failures.push(`${label} artifact_path does not exist: ${evidence.artifact_path}`);
135
- return failures;
136
- }
137
- if (evidence.artifact_sha256) {
138
- const actual = createHash("sha256").update(await readText(artifact)).digest("hex");
139
- if (actual !== evidence.artifact_sha256) {
140
- failures.push(`${label} stale evidence artifact_sha256 mismatch for ${evidence.artifact_path}`);
141
- }
142
- }
143
- return failures;
144
- }
145
- async function resolveArtifactPath(workdir, artifactPath) {
146
- const candidates = path.isAbsolute(artifactPath) ? [artifactPath] : [path.join(workdir, artifactPath), path.join(projectRootFromWorkdir(workdir), artifactPath)];
147
- for (const candidate of candidates) {
148
- if (await pathExists(candidate)) {
149
- return candidate;
150
- }
151
- }
152
- return undefined;
153
- }
154
- function proofLayerName(layerId) {
155
- const raw = layerId.includes(".") ? layerId.slice(layerId.lastIndexOf(".") + 1) : layerId;
156
- return normalizeProofLayerName(raw);
157
- }
158
- function proofLayerAcId(layerId) {
159
- return layerId.includes(".") ? layerId.slice(0, layerId.lastIndexOf(".")) : "";
160
- }
161
- function normalizeLayerId(layerId) {
162
- if (!layerId.includes(".")) {
163
- return normalizeProofLayerName(layerId);
164
- }
165
- const acId = proofLayerAcId(layerId);
166
- return `${acId}.${proofLayerName(layerId)}`;
167
- }
168
- function projectRootFromWorkdir(workdir) {
169
- const normalized = workdir.replace(/\\/g, "/");
170
- const marker = "/tmp/ty-context/plan-acceptance/";
171
- const index = normalized.lastIndexOf(marker);
172
- if (index < 0) {
173
- return workdir;
174
- }
175
- return normalized.slice(0, index);
176
- }
@@ -1,4 +0,0 @@
1
- import { type SuperpowersTaskState } from "./superpowers-task-state-schema.js";
2
- export declare function validateDeliveryContract(state: SuperpowersTaskState, errors: string[]): void;
3
- export declare function validateScopeConflicts(state: SuperpowersTaskState, errors: string[]): void;
4
- export declare function fullPopulationRequired(state: SuperpowersTaskState): boolean;
@@ -1,96 +0,0 @@
1
- import { computeScopeConflicts } from "./superpowers-task-compile.js";
2
- import { ACCEPTANCE_SCOPES, isSelectedScopeFitSlice, PLAN_DELIVERY_SCOPES, PRODUCT_DELIVERY_SCOPES, SCOPE_FIT_DECISIONS } from "./superpowers-task-fields.js";
3
- import { isRecord } from "./superpowers-task-state-schema.js";
4
- export function validateDeliveryContract(state, errors) {
5
- const product = state.delivery?.product_architecture_scope;
6
- if (!isRecord(product)) {
7
- errors.push("Product / Architecture Source delivery scope is missing");
8
- }
9
- else {
10
- requireEnum(errors, "Product / Architecture Source delivery_scope", product.delivery_scope, PRODUCT_DELIVERY_SCOPES);
11
- requireBoolean(errors, "Product / Architecture Source full_population_required", product.full_population_required);
12
- requireArray(errors, "Product / Architecture Source representative_samples_validate", product.representative_samples_validate);
13
- requireArray(errors, "Product / Architecture Source representative_samples_do_not_validate", product.representative_samples_do_not_validate);
14
- requireArray(errors, "Product / Architecture Source out_of_scope_backlog", product.out_of_scope_backlog);
15
- requireEnum(errors, "Product / Architecture Source scope_fit_decision", product.scope_fit_decision, SCOPE_FIT_DECISIONS);
16
- requireText(errors, "Product / Architecture Source selected_scope_fit_slice", product.selected_scope_fit_slice);
17
- if (typeof product.selected_scope_fit_slice === "string" && product.selected_scope_fit_slice && !isSelectedScopeFitSlice(product.selected_scope_fit_slice)) {
18
- errors.push(`Product / Architecture Source selected_scope_fit_slice must be none or SFC-###: ${product.selected_scope_fit_slice}`);
19
- }
20
- requireText(errors, "Product / Architecture Source owner_boundary", product.owner_boundary);
21
- requireText(errors, "Product / Architecture Source primary_capability_path", product.primary_capability_path);
22
- requireArray(errors, "Product / Architecture Source non_completing_outcomes", product.non_completing_outcomes);
23
- requireText(errors, "Product / Architecture Source assertion_policy", product.assertion_policy);
24
- requireText(errors, "Product / Architecture Source source_authority", product.source_authority);
25
- requireText(errors, "Product / Architecture Source product_goal", product.product_goal);
26
- }
27
- for (const [planId, item] of Object.entries(state.graph?.plan_items ?? {})) {
28
- requireEnum(errors, `${planId} delivery_scope`, item.delivery_scope, PLAN_DELIVERY_SCOPES);
29
- requireText(errors, `${planId} capability_target`, item.capability_target);
30
- requireArray(errors, `${planId} representative_samples`, item.representative_samples);
31
- requireText(errors, `${planId} full_population_boundary`, item.full_population_boundary);
32
- requireArray(errors, `${planId} non_required_population`, item.non_required_population);
33
- requireText(errors, `${planId} owner_boundary`, item.owner_boundary);
34
- requireText(errors, `${planId} primary_capability_path`, item.primary_capability_path);
35
- requireText(errors, `${planId} trigger_contract`, item.trigger_contract);
36
- requireText(errors, `${planId} state_transition_contract`, item.state_transition_contract);
37
- requireText(errors, `${planId} observable_result_contract`, item.observable_result_contract);
38
- requireText(errors, `${planId} assertion_support`, item.assertion_support);
39
- requireArray(errors, `${planId} required_assertion_commands`, item.required_assertion_commands);
40
- requireArray(errors, `${planId} invalid_implementation_shortcuts`, item.invalid_implementation_shortcuts);
41
- requireArray(errors, `${planId} implementation_paths`, item.implementation_paths);
42
- }
43
- for (const [acId, ac] of Object.entries(state.graph?.acceptance_criteria ?? {})) {
44
- requireEnum(errors, `${acId} acceptance_scope`, ac.acceptance_scope, ACCEPTANCE_SCOPES);
45
- requireArray(errors, `${acId} ac_validates`, ac.ac_validates);
46
- requireArray(errors, `${acId} ac_does_not_validate`, ac.ac_does_not_validate);
47
- requireText(errors, `${acId} sample_boundary`, ac.sample_boundary);
48
- requireBoolean(errors, `${acId} full_population_required`, ac.full_population_required);
49
- requireArray(errors, `${acId} related_plan_items`, ac.related_plan_items);
50
- requireArray(errors, `${acId} required_proof_layers`, ac.required_proof_layers);
51
- requireText(errors, `${acId} assertion_command`, ac.assertion_command);
52
- requireArray(errors, `${acId} assertion_artifacts`, ac.assertion_artifacts);
53
- requireArray(errors, `${acId} positive_assertions`, ac.positive_assertions);
54
- requireArray(errors, `${acId} negative_assertions`, ac.negative_assertions);
55
- requireBoolean(errors, `${acId} machine_blocking`, ac.machine_blocking);
56
- requireArray(errors, `${acId} invalid_completion_signals`, ac.invalid_completion_signals);
57
- requireBoolean(errors, `${acId} assertion_result_required`, ac.assertion_result_required);
58
- }
59
- }
60
- export function validateScopeConflicts(state, errors) {
61
- const conflicts = [...new Set([...(state.delivery?.scope_conflicts ?? []), ...computeScopeConflicts(state)])].filter(Boolean);
62
- for (const conflict of conflicts) {
63
- if (/scope_conflict_requires_decision/i.test(conflict)) {
64
- errors.push(conflict);
65
- }
66
- }
67
- }
68
- export function fullPopulationRequired(state) {
69
- return (state.delivery?.product_architecture_scope?.delivery_scope === "full_population_operation" ||
70
- state.delivery?.product_architecture_scope?.full_population_required === true ||
71
- Object.values(state.graph?.acceptance_criteria ?? {}).some((ac) => ac.acceptance_scope === "full_population_operation" || ac.full_population_required === true));
72
- }
73
- function requireEnum(errors, label, value, allowed) {
74
- if (typeof value !== "string" || value.trim() === "") {
75
- errors.push(`${label} is missing`);
76
- return;
77
- }
78
- if (!allowed.has(value)) {
79
- errors.push(`${label} has unknown value: ${value}`);
80
- }
81
- }
82
- function requireText(errors, label, value) {
83
- if (typeof value !== "string" || value.trim() === "") {
84
- errors.push(`${label} is missing`);
85
- }
86
- }
87
- function requireBoolean(errors, label, value) {
88
- if (typeof value !== "boolean") {
89
- errors.push(`${label} must be true or false`);
90
- }
91
- }
92
- function requireArray(errors, label, value) {
93
- if (!Array.isArray(value)) {
94
- errors.push(`${label} is missing`);
95
- }
96
- }
@@ -1,14 +0,0 @@
1
- import { type SuperpowersTaskState } from "./superpowers-task-state-schema.js";
2
- export interface DerivedSuperpowersArtifacts {
3
- matrix: Record<string, unknown>;
4
- verdict: Record<string, unknown>;
5
- files: string[];
6
- }
7
- export declare function deriveSuperpowersArtifacts(workdir: string): Promise<DerivedSuperpowersArtifacts>;
8
- export declare function deriveObjects(state: SuperpowersTaskState): {
9
- matrix: Record<string, unknown>;
10
- verdict: Record<string, unknown>;
11
- progress: Record<string, unknown>;
12
- };
13
- export declare function derivedMatchesState(workdir: string, state: SuperpowersTaskState): Promise<string[]>;
14
- export declare function deriveEvidenceIndex(state: SuperpowersTaskState): Record<string, unknown>;