project-tiny-context-harness 0.2.85 → 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 -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,218 +0,0 @@
1
- import { compileError, throwCompileErrors } from "./superpowers-task-compile-diagnostics.js";
2
- export function parseHeadingDefinitions(content, options) {
3
- const lines = splitLines(content);
4
- const errors = [];
5
- rejectListStyleDefinitions(lines, options, errors);
6
- const headings = findDefinitionHeadings(lines, options.kind);
7
- const seen = new Map();
8
- const definitions = [];
9
- for (const heading of headings) {
10
- const firstLine = seen.get(heading.id);
11
- if (firstLine !== undefined) {
12
- errors.push(compileError(`${heading.id} duplicate definition at ${options.sourceFile}:${firstLine} and ${options.sourceFile}:${heading.line}`, "blocking_unparseable_object", options.sourceFile, heading.line, heading.id, "duplicate object ids make PI/AC graph references ambiguous", "keep exactly one heading definition for this id"));
13
- continue;
14
- }
15
- seen.set(heading.id, heading.line);
16
- const sourceEndLine = sectionEndLine(lines, heading.index, heading.level);
17
- const section = lines.slice(heading.index, sourceEndLine);
18
- definitions.push({
19
- id: heading.id,
20
- title: heading.title,
21
- fields: parseFields(section, options.sourceFile, heading.line, options.allowedFields, errors),
22
- source_file: options.sourceFile,
23
- source_start_line: heading.line,
24
- source_end_line: sourceEndLine
25
- });
26
- }
27
- if (definitions.length === 0) {
28
- errors.push(compileError(`${options.sourceFile} must define ${options.kind} items with Markdown headings like "## ${options.kind}-001: ..."`, options.kind === "PI" ? "blocking_missing_plan" : "blocking_missing_checklist", options.sourceFile, 1, `${options.kind}_heading`, "the source cannot compile without at least one object heading", `add headings like ## ${options.kind}-001: ...`));
29
- }
30
- throwCompileErrors(errors);
31
- return definitions;
32
- }
33
- export function parseDocumentFields(content, sourceFile, allowedFields) {
34
- const errors = [];
35
- const fields = parseFields(splitLines(content), sourceFile, 1, allowedFields, errors);
36
- throwCompileErrors(errors);
37
- return fields;
38
- }
39
- export function fieldText(fields, name) {
40
- const field = fields[name];
41
- if (!field) {
42
- return "";
43
- }
44
- return Array.isArray(field.value) ? field.value.join("\n").trim() : field.value.trim();
45
- }
46
- export function fieldArray(fields, name) {
47
- const field = fields[name];
48
- if (!field) {
49
- return [];
50
- }
51
- if (Array.isArray(field.value)) {
52
- return field.value.flatMap(splitScalarArray).filter(Boolean);
53
- }
54
- return splitScalarArray(field.value);
55
- }
56
- export function fieldBoolean(fields, name) {
57
- const value = fieldText(fields, name).toLowerCase();
58
- if (value === "true") {
59
- return true;
60
- }
61
- if (value === "false") {
62
- return false;
63
- }
64
- return null;
65
- }
66
- export function fieldLine(fields, name) {
67
- return fields[name]?.line;
68
- }
69
- function parseFields(lines, sourceFile, startLine, allowedFields, errors) {
70
- const fields = {};
71
- for (let index = 0; index < lines.length; index++) {
72
- const line = lines[index];
73
- const lineNumber = startLine + index;
74
- const heading = /^(#{1,6})\s+(.+?)\s*$/.exec(line);
75
- if (heading && allowedFields.has(heading[2].trim())) {
76
- errors.push(compileError(`${sourceFile}:${lineNumber} field headings are not supported; use "${heading[2].trim()}: ..."`, "blocking_unparseable_object", sourceFile, lineNumber, heading[2].trim(), "field heading syntax is ambiguous in compiled source", "use key: value fields"));
77
- continue;
78
- }
79
- if (/^\s*\|/.test(line) && containsKnownField(line, allowedFields)) {
80
- errors.push(compileError(`${sourceFile}:${lineNumber} table fields are not supported; use key: value fields`, "blocking_unparseable_object", sourceFile, lineNumber, "table_field", "table fields cannot be parsed into canonical state safely", "use key: value fields"));
81
- continue;
82
- }
83
- const match = /^([a-z][a-z0-9_]*)\s*:\s*(.*)$/.exec(line);
84
- if (!match) {
85
- continue;
86
- }
87
- const name = match[1];
88
- if (!allowedFields.has(name)) {
89
- errors.push(compileError(`${sourceFile}:${lineNumber} unknown field ${name}`, "blocking_unparseable_object", sourceFile, lineNumber, name, "unknown fields may hide required source semantics", "rename the field to a supported canonical key"));
90
- continue;
91
- }
92
- if (fields[name]) {
93
- errors.push(compileError(`${sourceFile}:${lineNumber} duplicate field ${name}`, "blocking_unparseable_object", sourceFile, lineNumber, name, "duplicate fields make canonical source values ambiguous", "keep one field value"));
94
- continue;
95
- }
96
- const parsed = parseFieldValue(lines, index, match[2], sourceFile, lineNumber, errors);
97
- fields[name] = { value: parsed.value, line: lineNumber };
98
- index = parsed.endIndex;
99
- }
100
- return fields;
101
- }
102
- function parseFieldValue(lines, index, rest, sourceFile, lineNumber, errors) {
103
- const trimmed = rest.trim();
104
- if (trimmed === "|") {
105
- const block = [];
106
- let cursor = index + 1;
107
- for (; cursor < lines.length; cursor++) {
108
- const next = lines[cursor];
109
- if (next.trim() && isTopLevelFieldOrHeading(next)) {
110
- break;
111
- }
112
- block.push(next.replace(/^\s{0,2}/, ""));
113
- }
114
- if (block.length === 0) {
115
- errors.push(compileError(`${sourceFile}:${lineNumber} block field must include indented text`, "blocking_unparseable_object", sourceFile, lineNumber, "block_field", "empty block field cannot prove source intent", "add indented text or remove the field"));
116
- }
117
- return { value: block.join("\n").trim(), endIndex: cursor - 1 };
118
- }
119
- if (trimmed) {
120
- return { value: cleanValue(trimmed), endIndex: index };
121
- }
122
- const values = [];
123
- let cursor = index + 1;
124
- for (; cursor < lines.length; cursor++) {
125
- const next = lines[cursor];
126
- if (!next.trim()) {
127
- continue;
128
- }
129
- if (isTopLevelFieldOrHeading(next)) {
130
- break;
131
- }
132
- const listItem = /^\s*[-*+]\s+(.+?)\s*$/.exec(next);
133
- if (!listItem) {
134
- errors.push(compileError(`${sourceFile}:${cursor + 1} field lists must use indented "- item" entries or key: | blocks`, "blocking_unparseable_object", sourceFile, cursor + 1, "list_field", "list syntax cannot be parsed into canonical arrays", "use indented '- item' entries or key: | blocks"));
135
- continue;
136
- }
137
- values.push(cleanValue(listItem[1]));
138
- }
139
- return { value: values, endIndex: cursor - 1 };
140
- }
141
- function isTopLevelFieldOrHeading(line) {
142
- if (/^(#{1,6})\s+/.test(line)) {
143
- return true;
144
- }
145
- return /^([a-z][a-z0-9_]*)\s*:/.test(line);
146
- }
147
- function rejectListStyleDefinitions(lines, options, errors) {
148
- const idPattern = options.kind === "PI" ? "PI" : "AC";
149
- const listPattern = new RegExp(`^\\s*[-*+]\\s+(${idPattern}-\\d{3,})\\b\\s*[:.-]?`, "i");
150
- for (let index = 0; index < lines.length; index++) {
151
- const match = listPattern.exec(lines[index]);
152
- if (!match) {
153
- continue;
154
- }
155
- const block = listItemBlock(lines, index);
156
- if (!block.some((line) => containsKnownField(line, options.allowedFields))) {
157
- continue;
158
- }
159
- const id = match[1].toUpperCase();
160
- errors.push(compileError(`${id} list-style definition is not allowed at ${options.sourceFile}:${index + 1}; use "## ${id}: ..."`, "blocking_unparseable_object", options.sourceFile, index + 1, id, "list-style object definitions are not canonical PI/AC headings", `use "## ${id}: ..."`));
161
- }
162
- }
163
- function listItemBlock(lines, start) {
164
- const block = [lines[start]];
165
- for (let index = start + 1; index < lines.length; index++) {
166
- const line = lines[index];
167
- if (line.trim() && !/^\s/.test(line)) {
168
- break;
169
- }
170
- block.push(line);
171
- }
172
- return block;
173
- }
174
- function findDefinitionHeadings(lines, kind) {
175
- const pattern = new RegExp(`^(#{1,6})\\s+(${kind}-\\d{3,})\\b(?:\\s*[:.-]\\s*|\\s+)?(.*?)\\s*$`, "i");
176
- return lines.flatMap((line, index) => {
177
- const match = pattern.exec(line);
178
- if (!match) {
179
- return [];
180
- }
181
- return [{
182
- id: match[2].toUpperCase(),
183
- level: match[1].length,
184
- title: cleanValue(match[3]) || match[2].toUpperCase(),
185
- index,
186
- line: index + 1
187
- }];
188
- });
189
- }
190
- function sectionEndLine(lines, headingIndex, headingLevel) {
191
- for (let index = headingIndex + 1; index < lines.length; index++) {
192
- const match = /^(#{1,6})\s+/.exec(lines[index]);
193
- if (match && match[1].length <= headingLevel) {
194
- return index;
195
- }
196
- }
197
- return lines.length;
198
- }
199
- function containsKnownField(line, allowedFields) {
200
- for (const field of allowedFields) {
201
- if (new RegExp(`\\b${field}\\b\\s*:`, "i").test(line) || new RegExp(`\\b${field}\\b`, "i").test(line)) {
202
- return true;
203
- }
204
- }
205
- return false;
206
- }
207
- function splitScalarArray(value) {
208
- return value
209
- .split(/[,;\n]/)
210
- .map((item) => cleanValue(item))
211
- .filter(Boolean);
212
- }
213
- function splitLines(content) {
214
- return content.replace(/\r\n/g, "\n").replace(/\r/g, "\n").split("\n");
215
- }
216
- function cleanValue(value) {
217
- return value.replace(/^[-#*\s]+/, "").trim();
218
- }
@@ -1,460 +0,0 @@
1
- export declare const SUPERPOWERS_TASK_STATE_SCHEMA_VERSION = "superpowers-task-state-v1";
2
- export declare const SUPERPOWERS_TASK_STATE_JSON_SCHEMA: {
3
- readonly $schema: "https://json-schema.org/draft/2020-12/schema";
4
- readonly $id: "https://project-tiny-context-harness.local/superpowers-task-state.schema.json";
5
- readonly title: "Superpowers Long-Task State";
6
- readonly type: "object";
7
- readonly required: readonly ["meta", "sources", "context", "delivery", "graph", "attempts", "current_attempt_id", "required_command_specs", "command_runs", "negative_evidence_records", "slices", "evidence", "gates", "progress", "blockers", "final"];
8
- readonly properties: {
9
- readonly meta: {
10
- readonly type: "object";
11
- readonly required: readonly ["task_id", "plan_slug", "created_at", "updated_at", "schema_version", "product_goal_complete", "acceptance_target_status"];
12
- readonly properties: {
13
- readonly schema_version: {
14
- readonly const: "superpowers-task-state-v1";
15
- };
16
- readonly product_goal_complete: {
17
- readonly type: "boolean";
18
- };
19
- readonly acceptance_target_status: {
20
- readonly type: "string";
21
- };
22
- };
23
- };
24
- readonly sources: {
25
- readonly type: "object";
26
- };
27
- readonly context: {
28
- readonly type: "object";
29
- };
30
- readonly delivery: {
31
- readonly type: "object";
32
- };
33
- readonly graph: {
34
- readonly type: "object";
35
- };
36
- readonly attempts: {
37
- readonly type: "array";
38
- };
39
- readonly current_attempt_id: {
40
- readonly type: "string";
41
- };
42
- readonly required_command_specs: {
43
- readonly type: "array";
44
- };
45
- readonly command_runs: {
46
- readonly type: "array";
47
- };
48
- readonly negative_evidence_records: {
49
- readonly type: "array";
50
- };
51
- readonly slices: {
52
- readonly type: "array";
53
- };
54
- readonly evidence: {
55
- readonly type: "array";
56
- };
57
- readonly gates: {
58
- readonly type: "object";
59
- };
60
- readonly progress: {
61
- readonly type: "object";
62
- };
63
- readonly blockers: {
64
- readonly type: "array";
65
- };
66
- readonly final: {
67
- readonly type: "object";
68
- };
69
- };
70
- };
71
- export type SuperpowersProofLayerStatus = "missing" | "satisfied" | "invalidated" | "blocked";
72
- export type SuperpowersPlanItemStatus = "not_started" | "in_progress" | "complete" | "partial" | "blocked" | "invalidated" | "out_of_scope_NA";
73
- export type SuperpowersAcceptanceStatus = "not_run" | "complete" | "partial" | "blocked" | "invalidated" | "under_specified" | "out_of_scope_NA";
74
- export type SuperpowersAttemptMode = "product_task" | "harness_task";
75
- export type SuperpowersProductDeliveryScope = "system_capability_build" | "representative_sample_validation" | "full_population_operation" | "mixed_scope_requires_boundary";
76
- export type SuperpowersPlanDeliveryScope = "system_capability_build" | "representative_sample_validation" | "full_population_operation" | "out_of_scope_backlog";
77
- export type SuperpowersAcceptanceScope = "system_capability_build" | "representative_sample_validation" | "full_population_operation" | "full_population_not_required";
78
- export type SuperpowersScopeFitDecision = "fit_for_three_inputs" | "selected_from_split" | "blocked_for_decision" | "";
79
- export type CompletionOutputStatus = "accept" | "reject" | "blocked";
80
- export type FinalGateBlockerCategory = "none" | "product_evidence_failed" | "missing_current_evidence" | "stale_or_contradictory_evidence" | "generated_output_mismatch" | "self_recoverable_generated_output_mismatch" | "transient_state_bookkeeping" | "environment_blocked" | "contract_blocked" | "harness_drift_blocked";
81
- export interface FinalGateCandidateStateRecord {
82
- final_gate_ran: boolean;
83
- product_goal_complete: boolean;
84
- acceptance_target_status: string;
85
- completion_output_status: CompletionOutputStatus;
86
- generated_output_mismatch: boolean;
87
- source: string;
88
- }
89
- export interface FinalGateBlockerTriageRecord {
90
- category: FinalGateBlockerCategory;
91
- self_recoverable: boolean;
92
- recovery_attempted: boolean;
93
- recovery_action: string;
94
- next_action: string;
95
- details: string[];
96
- blocker_count: number;
97
- }
98
- export interface SuperpowersTaskState {
99
- meta: {
100
- task_id: string;
101
- plan_slug: string;
102
- created_at: string;
103
- updated_at: string;
104
- schema_version: typeof SUPERPOWERS_TASK_STATE_SCHEMA_VERSION;
105
- goal_type: string;
106
- product_goal_complete: boolean;
107
- acceptance_target_status: string;
108
- audit_task_complete: boolean;
109
- completion_output_status?: CompletionOutputStatus;
110
- };
111
- sources: Record<string, SuperpowersSourceRecord>;
112
- context: {
113
- product_context_delta: "none" | "required";
114
- technical_context_delta: "none" | "required";
115
- source_to_context_coverage: Record<string, unknown>[];
116
- context_to_implementation_binding: Record<string, unknown>[];
117
- };
118
- delivery: SuperpowersDeliveryState;
119
- graph: {
120
- plan_items: Record<string, SuperpowersPlanItem>;
121
- acceptance_criteria: Record<string, SuperpowersAcceptanceCriterion>;
122
- proof_layers: Record<string, SuperpowersProofLayer>;
123
- edges: SuperpowersGraphEdge[];
124
- };
125
- attempts: ExecutionAttempt[];
126
- current_attempt_id: string;
127
- required_command_specs: RequiredCommandSpec[];
128
- command_runs: CommandRunRecord[];
129
- negative_evidence_records: NegativeEvidenceRecord[];
130
- slices: SuperpowersSliceRecord[];
131
- evidence: SuperpowersEvidenceRecord[];
132
- gates: Record<string, unknown>;
133
- progress: SuperpowersProgressState;
134
- blockers: unknown[];
135
- final: {
136
- product_goal_complete: boolean;
137
- acceptance_target_status: string;
138
- audit_task_complete: boolean;
139
- completion_output_status?: CompletionOutputStatus;
140
- final_answer_allowed?: boolean;
141
- required_user_visible_status?: "accepted" | "rejected" | "blocked";
142
- final_answer?: CompletionOutputStatus;
143
- exit_code?: 0 | 1 | 2;
144
- blocked_reasons?: string[];
145
- rejection_reasons?: string[];
146
- generated_output_mismatch?: boolean;
147
- false_completion_phrase_findings?: unknown[];
148
- blocker_triage?: FinalGateBlockerTriageRecord;
149
- candidate_state?: FinalGateCandidateStateRecord;
150
- completion_basis: string[];
151
- next_required_actions?: string[];
152
- };
153
- }
154
- export interface ExecutionAttempt {
155
- task_attempt_id: string;
156
- source_bundle_hash: string;
157
- product_source_hash: string;
158
- technical_plan_hash: string;
159
- acceptance_checklist_hash: string;
160
- git_head: string;
161
- git_status_short: string;
162
- tracked_diff_hash: string;
163
- relevant_untracked_hash: string;
164
- untracked_relevant_hash?: string;
165
- worktree_fingerprint: string;
166
- started_at: string;
167
- ended_at: string | null;
168
- finalized_at?: string | null;
169
- required_command_specs_hash: string;
170
- mode: SuperpowersAttemptMode;
171
- changed_files?: string[];
172
- }
173
- export interface RequiredCommandSpec {
174
- command_spec_id: string;
175
- ac_id: string;
176
- proof_layers: string[];
177
- command: string;
178
- assertion_artifacts: string[];
179
- required_test_ids: string[];
180
- machine_blocking: boolean;
181
- assertion_result_required: boolean;
182
- positive_assertions: string[];
183
- negative_assertions: string[];
184
- invalid_completion_signals: string[];
185
- final_evidence_expected: string[];
186
- }
187
- export interface CommandRunRecord {
188
- command_run_id: string;
189
- task_attempt_id: string;
190
- command_spec_id: string;
191
- ac_id: string;
192
- proof_layer: string;
193
- command_line: string;
194
- exit_code: number;
195
- started_at: string;
196
- completed_at?: string;
197
- ended_at: string;
198
- artifact_paths: string[];
199
- }
200
- export interface NegativeEvidenceRecord {
201
- negative_evidence_id: string;
202
- task_attempt_id: string;
203
- target_ac_ids: string[];
204
- target_proof_layers: string[];
205
- artifact_path: string;
206
- artifact_sha256?: string;
207
- status: "passed" | "failed" | "blocked" | "stale";
208
- }
209
- export interface SuperpowersSourceRecord {
210
- path: string;
211
- sha256: string;
212
- authority: string;
213
- }
214
- export interface SuperpowersDeliveryState {
215
- product_architecture_scope: SuperpowersProductArchitectureScope;
216
- scope_conflicts: string[];
217
- }
218
- export interface SuperpowersProductArchitectureScope {
219
- delivery_scope: SuperpowersProductDeliveryScope | "";
220
- full_population_required: boolean | null;
221
- representative_samples_validate: string[];
222
- representative_samples_do_not_validate: string[];
223
- out_of_scope_backlog: string[];
224
- scope_fit_decision: SuperpowersScopeFitDecision;
225
- selected_scope_fit_slice: string;
226
- owner_boundary: string;
227
- primary_capability_path: string;
228
- non_completing_outcomes: string[];
229
- assertion_policy: string;
230
- source_authority: string;
231
- product_goal: string;
232
- surface_ia_lock?: string;
233
- decision_lock?: string;
234
- context_delta?: string;
235
- source_to_context_coverage?: string;
236
- acceptance_semantics?: string;
237
- impact?: string;
238
- }
239
- export interface SuperpowersProgressState {
240
- system_capability_progress: Record<string, unknown>;
241
- representative_sample_progress: Record<string, unknown>;
242
- real_object_coverage: Record<string, unknown>;
243
- full_population_operation_progress: Record<string, unknown>;
244
- [key: string]: unknown;
245
- }
246
- export interface SuperpowersPlanItem {
247
- requirement: string;
248
- source_file: string;
249
- source_start_line: number;
250
- source_end_line: number;
251
- delivery_scope: SuperpowersPlanDeliveryScope | "";
252
- capability_target: string;
253
- representative_samples: string[];
254
- full_population_boundary: string;
255
- non_required_population: string[];
256
- owner_boundary: string;
257
- primary_capability_path: string;
258
- trigger_contract: string;
259
- state_transition_contract: string;
260
- observable_result_contract: string;
261
- assertion_support: string;
262
- required_assertion_commands: string[];
263
- invalid_implementation_shortcuts: string[];
264
- owner_surfaces: string[];
265
- forbidden_surfaces: string[];
266
- implementation_paths: string[];
267
- required_tests: string[];
268
- proof_layer_ids?: string[];
269
- requirement_ref?: string;
270
- decision_id?: string;
271
- api_schema_changes?: string;
272
- state_machine?: string;
273
- data_flow?: string;
274
- worker_runtime_behavior?: string;
275
- ui_ia_changes?: string;
276
- migration_plan?: string;
277
- evidence_artifacts?: string[];
278
- non_completing_shortcuts?: string[];
279
- substitution_policy?: string[];
280
- drift_severity?: string;
281
- partial_conditions?: string[];
282
- blockers?: string[];
283
- explicit_no_test_scope?: boolean;
284
- context_fact_refs?: string[];
285
- status: SuperpowersPlanItemStatus;
286
- related_acs: string[];
287
- required_proof_layers: string[];
288
- }
289
- export interface SuperpowersAcceptanceCriterion {
290
- scope: string;
291
- source_file: string;
292
- source_start_line: number;
293
- source_end_line: number;
294
- acceptance_scope: SuperpowersAcceptanceScope | "";
295
- ac_validates: string[];
296
- ac_does_not_validate: string[];
297
- sample_boundary: string;
298
- full_population_required: boolean | null;
299
- related_plan_items: string[];
300
- required_proof_layers: string[];
301
- assertion_requirements?: AssertionRequirement[];
302
- assertion_command?: string;
303
- assertion_artifacts?: string[];
304
- positive_assertions?: string[];
305
- negative_assertions?: string[];
306
- machine_blocking?: boolean | null;
307
- invalid_completion_signals?: string[];
308
- assertion_result_required?: boolean | null;
309
- ac_type?: string;
310
- proof_chain?: string[];
311
- required_test_ids?: string[];
312
- fail_conditions?: string[];
313
- invalid_evidence?: string[];
314
- substitution_policy?: string[];
315
- missing_layer_downgrade?: string;
316
- auditor_expectation?: string;
317
- out_of_scope_na_approval_source?: string;
318
- hard_blockers?: string[];
319
- validates_explanation?: string;
320
- does_not_validate_explanation?: string;
321
- final_evidence_expected?: string[];
322
- verification_method?: string[];
323
- test_cases?: string[];
324
- explicit_no_test_scope?: boolean;
325
- status: SuperpowersAcceptanceStatus;
326
- }
327
- export interface AssertionRequirement {
328
- proof_layer: string;
329
- required: boolean;
330
- machine_blocking: boolean;
331
- assertion_result_required?: boolean;
332
- assertion_command?: string;
333
- assertion_artifacts?: string[];
334
- invalid_completion_signals?: string[];
335
- required_test_ids: string[];
336
- positive_assertions: string[];
337
- negative_assertions: string[];
338
- }
339
- export interface SuperpowersProofLayer {
340
- required: boolean;
341
- status: SuperpowersProofLayerStatus;
342
- evidence_ids: string[];
343
- }
344
- export interface SuperpowersGraphEdge {
345
- from: string;
346
- to: string;
347
- type: "supports" | string;
348
- }
349
- export interface SuperpowersSliceRecord {
350
- slice_id: string;
351
- slice_goal: string;
352
- touched_plan_items: string[];
353
- touched_acs: string[];
354
- missing_layer_classes?: string[];
355
- code_changes: string[];
356
- evidence_records: string[];
357
- closed_layers: string[];
358
- remaining_layers: string[];
359
- blockers: unknown[];
360
- cleanup_assertions: string[];
361
- progress_value: {
362
- type: string;
363
- closed_items: string[];
364
- why_it_reduces_rework: string;
365
- };
366
- }
367
- export interface SuperpowersEvidenceRecord {
368
- schema_version?: "evidence-record-v1" | "evidence-record-v2" | string;
369
- evidence_id: string;
370
- task_attempt_id?: string;
371
- generated_at?: string;
372
- source_bundle_hash?: string;
373
- product_source_hash?: string;
374
- technical_plan_hash?: string;
375
- acceptance_checklist_hash?: string;
376
- git_head?: string;
377
- git_status_short?: string;
378
- tracked_diff_hash?: string;
379
- relevant_untracked_hash?: string;
380
- covers_dirty_worktree?: boolean;
381
- worktree_fingerprint?: string;
382
- command_spec_id?: string;
383
- command_run_id?: string;
384
- command_line?: string;
385
- artifact_path?: string;
386
- artifact_sha256?: string;
387
- artifact_mtime?: string;
388
- target_ac_ids?: string[];
389
- target_pi_ids?: string[];
390
- target_proof_layers?: string[];
391
- slice_id: string;
392
- type: string;
393
- freshness: {
394
- created_at: string;
395
- valid_for: string;
396
- stale_after: string | null;
397
- };
398
- command?: string;
399
- command_exit_code?: number;
400
- artifact_paths: string[];
401
- proves: string[];
402
- does_not_prove: string[];
403
- redaction: {
404
- checked: boolean;
405
- contains_secret: boolean;
406
- };
407
- reviewability: {
408
- external_reviewer_can_reproduce: boolean;
409
- reproduction_steps: string;
410
- };
411
- assertion_result?: AssertionResult;
412
- negative_evidence_scan?: NegativeEvidenceScan;
413
- sibling_substitution_used?: boolean;
414
- sibling_substitution_approval_source?: string;
415
- }
416
- export interface AssertionResult {
417
- schema_version: "assertion-result-v1" | "assertion-result-v2";
418
- status: "passed" | "failed" | "blocked" | "stale";
419
- runner: string;
420
- exit_code: number;
421
- target_ac_ids: string[];
422
- target_pi_ids?: string[];
423
- target_proof_layers: string[];
424
- owner_surface?: string;
425
- route?: string;
426
- action?: string;
427
- positive_assertions: AssertionCheck[];
428
- negative_assertions: AssertionCheck[];
429
- invalid_completion_signals?: AssertionCheck[];
430
- negative_evidence_scan?: NegativeEvidenceScan;
431
- required_test_ids?: string[];
432
- artifacts?: string[];
433
- }
434
- export interface AssertionCheck {
435
- id: string;
436
- status: "passed" | "failed" | "blocked" | "stale";
437
- actual?: string;
438
- expected?: string;
439
- forbidden_text?: string;
440
- }
441
- export interface NegativeEvidenceScan {
442
- schema_version: "negative-evidence-scan-v1";
443
- status: "passed" | "failed" | "blocked" | "stale";
444
- target_ac_ids: string[];
445
- target_proof_layers?: string[];
446
- invalid_completion_signals_checked?: string[];
447
- owner_surface?: string;
448
- route?: string;
449
- forbidden_findings: NegativeFinding[];
450
- required_findings: AssertionCheck[];
451
- artifacts: string[];
452
- }
453
- export interface NegativeFinding {
454
- id: string;
455
- status: "found" | "not_found";
456
- forbidden_text?: string;
457
- actual?: string;
458
- }
459
- export declare function isRecord(value: unknown): value is Record<string, unknown>;
460
- export declare function asStringArray(value: unknown): string[];