@rsaglobaltech/specgate 0.20.0 → 0.22.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 (273) hide show
  1. package/CHANGELOG.md +208 -0
  2. package/README.md +31 -31
  3. package/bin/specgate.ts +25 -19
  4. package/dist/bin/specgate.js +15 -10
  5. package/dist/bin/specgate.js.map +1 -1
  6. package/dist/packages/core/src/application/AddRequirementUseCase.js +11 -1
  7. package/dist/packages/core/src/application/AddRequirementUseCase.js.map +1 -1
  8. package/dist/packages/core/src/application/ArchiveChangeUseCase.js +7 -2
  9. package/dist/packages/core/src/application/ArchiveChangeUseCase.js.map +1 -1
  10. package/dist/packages/core/src/application/ValidateProjectUseCase.js +9 -3
  11. package/dist/packages/core/src/application/ValidateProjectUseCase.js.map +1 -1
  12. package/dist/packages/core/src/domain/ArchivePlan.js.map +1 -1
  13. package/dist/packages/core/src/domain/BriefCards.js +320 -0
  14. package/dist/packages/core/src/domain/BriefCards.js.map +1 -0
  15. package/dist/packages/core/src/domain/ChangeTemplates.js +19 -0
  16. package/dist/packages/core/src/domain/ChangeTemplates.js.map +1 -1
  17. package/dist/packages/core/src/domain/DeltaSpec.js +14 -7
  18. package/dist/packages/core/src/domain/DeltaSpec.js.map +1 -1
  19. package/dist/packages/core/src/domain/DerivedMatrix.js +2 -2
  20. package/dist/packages/core/src/domain/DerivedMatrix.js.map +1 -1
  21. package/dist/packages/core/src/domain/Diagnostic.js.map +1 -1
  22. package/dist/packages/core/src/domain/DoneVerification.js +3 -3
  23. package/dist/packages/core/src/domain/DoneVerification.js.map +1 -1
  24. package/dist/packages/core/src/domain/DraftChecklist.js +6 -2
  25. package/dist/packages/core/src/domain/DraftChecklist.js.map +1 -1
  26. package/dist/packages/core/src/domain/GherkinQuality.js +5 -2
  27. package/dist/packages/core/src/domain/GherkinQuality.js.map +1 -1
  28. package/dist/packages/core/src/domain/HarnessEvents.js +129 -0
  29. package/dist/packages/core/src/domain/HarnessEvents.js.map +1 -0
  30. package/dist/packages/core/src/domain/HarnessRun.js.map +1 -1
  31. package/dist/packages/core/src/domain/Language.js +5 -2
  32. package/dist/packages/core/src/domain/Language.js.map +1 -1
  33. package/dist/packages/core/src/domain/PackContribution.js.map +1 -1
  34. package/dist/packages/core/src/domain/PackDelta.js +5 -2
  35. package/dist/packages/core/src/domain/PackDelta.js.map +1 -1
  36. package/dist/packages/core/src/domain/PackSpec.js +16 -2
  37. package/dist/packages/core/src/domain/PackSpec.js.map +1 -1
  38. package/dist/packages/core/src/domain/QuotedText.js +41 -0
  39. package/dist/packages/core/src/domain/QuotedText.js.map +1 -0
  40. package/dist/packages/core/src/domain/RequirementPlan.js.map +1 -1
  41. package/dist/packages/core/src/domain/SpecParser.js +2 -9
  42. package/dist/packages/core/src/domain/SpecParser.js.map +1 -1
  43. package/dist/packages/core/src/domain/TicketText.js +337 -0
  44. package/dist/packages/core/src/domain/TicketText.js.map +1 -0
  45. package/dist/packages/core/src/domain/TraceabilityFormat.js.map +1 -1
  46. package/dist/packages/core/src/domain/TraceabilityMatrix.js +3 -3
  47. package/dist/packages/core/src/domain/TraceabilityMatrix.js.map +1 -1
  48. package/dist/packages/core/src/domain/YamlLite.js +3 -0
  49. package/dist/packages/core/src/domain/YamlLite.js.map +1 -1
  50. package/dist/packages/core/src/infrastructure/ChangeWorkspace.js +7 -3
  51. package/dist/packages/core/src/infrastructure/ChangeWorkspace.js.map +1 -1
  52. package/dist/packages/core/src/infrastructure/ConsoleReporter.js.map +1 -1
  53. package/dist/packages/core/src/infrastructure/DiskLanguageRepository.js +1 -0
  54. package/dist/packages/core/src/infrastructure/DiskLanguageRepository.js.map +1 -1
  55. package/dist/packages/core/src/infrastructure/DiskPackDeltaRepository.js +3 -1
  56. package/dist/packages/core/src/infrastructure/DiskPackDeltaRepository.js.map +1 -1
  57. package/dist/packages/core/src/infrastructure/DiskPackRepository.js +0 -2
  58. package/dist/packages/core/src/infrastructure/DiskPackRepository.js.map +1 -1
  59. package/dist/packages/core/src/infrastructure/DiskRequirementGraphRepository.js.map +1 -1
  60. package/dist/packages/core/src/infrastructure/GitContributionStager.js +0 -4
  61. package/dist/packages/core/src/infrastructure/GitContributionStager.js.map +1 -1
  62. package/dist/packages/core/src/infrastructure/GitMergeDriver.js +0 -3
  63. package/dist/packages/core/src/infrastructure/GitMergeDriver.js.map +1 -1
  64. package/dist/packages/core/src/infrastructure/HarnessConfigFile.js +7 -13
  65. package/dist/packages/core/src/infrastructure/HarnessConfigFile.js.map +1 -1
  66. package/dist/packages/core/src/infrastructure/IdsAcrossBranches.js +48 -0
  67. package/dist/packages/core/src/infrastructure/IdsAcrossBranches.js.map +1 -0
  68. package/dist/packages/core/src/infrastructure/PackChangeDeposit.js.map +1 -1
  69. package/dist/packages/core/src/infrastructure/RemotePackResolver.js +0 -7
  70. package/dist/packages/core/src/infrastructure/RemotePackResolver.js.map +1 -1
  71. package/dist/packages/core/src/infrastructure/SpecopsConfigFile.js.map +1 -1
  72. package/dist/packages/core/test/unit/declared-artifacts.test.js +6 -2
  73. package/dist/packages/core/test/unit/declared-artifacts.test.js.map +1 -1
  74. package/dist/packages/core/test/unit/derived-matrix.test.js +3 -0
  75. package/dist/packages/core/test/unit/derived-matrix.test.js.map +1 -1
  76. package/dist/packages/core/test/unit/done-verification.test.js +3 -0
  77. package/dist/packages/core/test/unit/done-verification.test.js.map +1 -1
  78. package/dist/packages/core/test/unit/matrix-dependencies.test.js.map +1 -1
  79. package/dist/packages/core/test/unit/reconciliation.test.js.map +1 -1
  80. package/dist/packages/core/test/unit/requirement-readiness.test.js +2 -2
  81. package/dist/packages/core/test/unit/requirement-readiness.test.js.map +1 -1
  82. package/dist/packages/core/test/unit/resume-state.test.js +4 -1
  83. package/dist/packages/core/test/unit/resume-state.test.js.map +1 -1
  84. package/dist/packages/core/test/unit/run-budget.test.js +3 -0
  85. package/dist/packages/core/test/unit/run-budget.test.js.map +1 -1
  86. package/dist/packages/core/test/unit/untouched-delta.test.js +52 -0
  87. package/dist/packages/core/test/unit/untouched-delta.test.js.map +1 -0
  88. package/dist/packages/core/test/unit/validate-project.test.js +6 -2
  89. package/dist/packages/core/test/unit/validate-project.test.js.map +1 -1
  90. package/dist/packages/mcp-spec-driven/src/server.js +4 -3
  91. package/dist/packages/mcp-spec-driven/src/server.js.map +1 -1
  92. package/dist/packages/mcp-spec-driven/src/tools.js.map +1 -1
  93. package/dist/scripts/agents/commands.js +52 -38
  94. package/dist/scripts/agents/commands.js.map +1 -1
  95. package/dist/scripts/agents/contract-file.js +44 -0
  96. package/dist/scripts/agents/contract-file.js.map +1 -1
  97. package/dist/scripts/agents/detect.js.map +1 -1
  98. package/dist/scripts/agents/init.js.map +1 -1
  99. package/dist/scripts/alm/cli.js +16 -5
  100. package/dist/scripts/alm/cli.js.map +1 -1
  101. package/dist/scripts/alm/core.js +1 -0
  102. package/dist/scripts/alm/core.js.map +1 -1
  103. package/dist/scripts/alm/port.js +1 -1
  104. package/dist/scripts/alm/port.js.map +1 -1
  105. package/dist/scripts/alm/providers/http-client.js +46 -3
  106. package/dist/scripts/alm/providers/http-client.js.map +1 -1
  107. package/dist/scripts/alm/providers/jira.js +108 -32
  108. package/dist/scripts/alm/providers/jira.js.map +1 -1
  109. package/dist/scripts/apply.js +9 -0
  110. package/dist/scripts/apply.js.map +1 -0
  111. package/dist/scripts/archive.js +9 -0
  112. package/dist/scripts/archive.js.map +1 -0
  113. package/dist/scripts/change/archive.js.map +1 -1
  114. package/dist/scripts/change/artifacts.js.map +1 -1
  115. package/dist/scripts/change/delta.js +0 -8
  116. package/dist/scripts/change/delta.js.map +1 -1
  117. package/dist/scripts/change/instructions.js +9 -11
  118. package/dist/scripts/change/instructions.js.map +1 -1
  119. package/dist/scripts/cli/commands/alm/PrCommand.js +198 -0
  120. package/dist/scripts/cli/commands/alm/PrCommand.js.map +1 -0
  121. package/dist/scripts/cli/commands/alm/PullCommand.js +4 -2
  122. package/dist/scripts/cli/commands/alm/PullCommand.js.map +1 -1
  123. package/dist/scripts/cli/commands/change/ChangeCommand.js +119 -19
  124. package/dist/scripts/cli/commands/change/ChangeCommand.js.map +1 -1
  125. package/dist/scripts/cli/commands/change/TicketCommand.js +657 -0
  126. package/dist/scripts/cli/commands/change/TicketCommand.js.map +1 -0
  127. package/dist/scripts/cli/commands/config/ConfigSetCommand.js +1 -1
  128. package/dist/scripts/cli/commands/config/ConfigSetCommand.js.map +1 -1
  129. package/dist/scripts/cli/commands/harness/RunCommand.js +225 -35
  130. package/dist/scripts/cli/commands/harness/RunCommand.js.map +1 -1
  131. package/dist/scripts/cli/commands/mcp/McpInstallCommand.js +1 -0
  132. package/dist/scripts/cli/commands/mcp/McpInstallCommand.js.map +1 -1
  133. package/dist/scripts/cli/commands/pack/BundlePackCommand.js +2 -1
  134. package/dist/scripts/cli/commands/pack/BundlePackCommand.js.map +1 -1
  135. package/dist/scripts/cli/commands/pack/ExpandDomainPackCommand.js +32 -17
  136. package/dist/scripts/cli/commands/pack/ExpandDomainPackCommand.js.map +1 -1
  137. package/dist/scripts/cli/commands/pack/InferPackCommand.js +8 -5
  138. package/dist/scripts/cli/commands/pack/InferPackCommand.js.map +1 -1
  139. package/dist/scripts/cli/commands/pack/LintPackCommand.js +36 -44
  140. package/dist/scripts/cli/commands/pack/LintPackCommand.js.map +1 -1
  141. package/dist/scripts/cli/commands/pack/pack-args.js.map +1 -1
  142. package/dist/scripts/cli/commands/project/AddCommand.js.map +1 -1
  143. package/dist/scripts/cli/commands/project/AdoptCommand.js +62 -2
  144. package/dist/scripts/cli/commands/project/AdoptCommand.js.map +1 -1
  145. package/dist/scripts/cli/commands/project/InitFromPackCommand.js.map +1 -1
  146. package/dist/scripts/cli/commands/project/InitProjectCommand.js +2 -1
  147. package/dist/scripts/cli/commands/project/InitProjectCommand.js.map +1 -1
  148. package/dist/scripts/cli/commands/project/OnboardCommand.js +40 -4
  149. package/dist/scripts/cli/commands/project/OnboardCommand.js.map +1 -1
  150. package/dist/scripts/cli/commands/project/UpdateCommand.js +4 -0
  151. package/dist/scripts/cli/commands/project/UpdateCommand.js.map +1 -1
  152. package/dist/scripts/cli/commands/project/WizardCommand.js.map +1 -1
  153. package/dist/scripts/cli/commands/quality/CheckCommand.js +86 -10
  154. package/dist/scripts/cli/commands/quality/CheckCommand.js.map +1 -1
  155. package/dist/scripts/cli/commands/quality/DoctorCommand.js +8 -4
  156. package/dist/scripts/cli/commands/quality/DoctorCommand.js.map +1 -1
  157. package/dist/scripts/cli/commands/quality/FixCommand.js.map +1 -1
  158. package/dist/scripts/cli/commands/quality/LicenseCheckCommand.js +3 -1
  159. package/dist/scripts/cli/commands/quality/LicenseCheckCommand.js.map +1 -1
  160. package/dist/scripts/cli/commands/quality/ReportCommand.js +8 -3
  161. package/dist/scripts/cli/commands/quality/ReportCommand.js.map +1 -1
  162. package/dist/scripts/cli/commands/quality/ValidateSpecsCommand.js +39 -30
  163. package/dist/scripts/cli/commands/quality/ValidateSpecsCommand.js.map +1 -1
  164. package/dist/scripts/cli/commands/quality/VerifyCommand.js +3 -2
  165. package/dist/scripts/cli/commands/quality/VerifyCommand.js.map +1 -1
  166. package/dist/scripts/cli/commands/spec/DoneCommand.js +182 -77
  167. package/dist/scripts/cli/commands/spec/DoneCommand.js.map +1 -1
  168. package/dist/scripts/cli/commands/spec/DraftCommand.js +292 -56
  169. package/dist/scripts/cli/commands/spec/DraftCommand.js.map +1 -1
  170. package/dist/scripts/cli/commands/spec/ExploreCommand.js +224 -0
  171. package/dist/scripts/cli/commands/spec/ExploreCommand.js.map +1 -0
  172. package/dist/scripts/cli/commands/spec/MatrixCommand.js +35 -5
  173. package/dist/scripts/cli/commands/spec/MatrixCommand.js.map +1 -1
  174. package/dist/scripts/cli/commands/spec/NewCommand.js +4 -4
  175. package/dist/scripts/cli/commands/spec/NewCommand.js.map +1 -1
  176. package/dist/scripts/cli/commands/spec/PetCommand.js.map +1 -1
  177. package/dist/scripts/cli/commands/spec/PlanCommand.js +8 -3
  178. package/dist/scripts/cli/commands/spec/PlanCommand.js.map +1 -1
  179. package/dist/scripts/cli/commands/spec/ReqCommand.js +8 -9
  180. package/dist/scripts/cli/commands/spec/ReqCommand.js.map +1 -1
  181. package/dist/scripts/cli/commands/spec/StatusCommand.js +105 -26
  182. package/dist/scripts/cli/commands/spec/StatusCommand.js.map +1 -1
  183. package/dist/scripts/cli/commands/spec/StudioCommand.js +76 -4
  184. package/dist/scripts/cli/commands/spec/StudioCommand.js.map +1 -1
  185. package/dist/scripts/cli/commands/specops/ContributeCommand.js +6 -2
  186. package/dist/scripts/cli/commands/specops/ContributeCommand.js.map +1 -1
  187. package/dist/scripts/cli/commands/specops/DiffCommand.js +19 -5
  188. package/dist/scripts/cli/commands/specops/DiffCommand.js.map +1 -1
  189. package/dist/scripts/cli/commands/specops/SyncCommand.js +4 -2
  190. package/dist/scripts/cli/commands/specops/SyncCommand.js.map +1 -1
  191. package/dist/scripts/docs/build-site.js.map +1 -1
  192. package/dist/scripts/docs/icons.js +0 -6
  193. package/dist/scripts/docs/icons.js.map +1 -1
  194. package/dist/scripts/docs/journey-storyboard.js +56 -47
  195. package/dist/scripts/docs/journey-storyboard.js.map +1 -1
  196. package/dist/scripts/docs/nav.js +5 -0
  197. package/dist/scripts/docs/nav.js.map +1 -1
  198. package/dist/scripts/docs/record-journey.js +93 -30
  199. package/dist/scripts/docs/record-journey.js.map +1 -1
  200. package/dist/scripts/docs/record-terminal.js +1 -1
  201. package/dist/scripts/docs/record-terminal.js.map +1 -1
  202. package/dist/scripts/docs/terminal-storyboard.js +24 -21
  203. package/dist/scripts/docs/terminal-storyboard.js.map +1 -1
  204. package/dist/scripts/draft/brief-check.js +34 -0
  205. package/dist/scripts/draft/brief-check.js.map +1 -0
  206. package/dist/scripts/draft/brief-setup.js +190 -24
  207. package/dist/scripts/draft/brief-setup.js.map +1 -1
  208. package/dist/scripts/draft/confined-agent.js +1 -0
  209. package/dist/scripts/draft/confined-agent.js.map +1 -1
  210. package/dist/scripts/draft/drafting-guide.js +49 -6
  211. package/dist/scripts/draft/drafting-guide.js.map +1 -1
  212. package/dist/scripts/draft/ticket-guide.js +129 -0
  213. package/dist/scripts/draft/ticket-guide.js.map +1 -0
  214. package/dist/scripts/explore.js +10 -0
  215. package/dist/scripts/explore.js.map +1 -0
  216. package/dist/scripts/gen_mcp_tools.js +15 -7
  217. package/dist/scripts/gen_mcp_tools.js.map +1 -1
  218. package/dist/scripts/harness/events.js +202 -0
  219. package/dist/scripts/harness/events.js.map +1 -0
  220. package/dist/scripts/harness/init.js +6 -2
  221. package/dist/scripts/harness/init.js.map +1 -1
  222. package/dist/scripts/harness/run.js +2 -1
  223. package/dist/scripts/harness/run.js.map +1 -1
  224. package/dist/scripts/lib/agent.js.map +1 -1
  225. package/dist/scripts/lib/base-ids.js +179 -0
  226. package/dist/scripts/lib/base-ids.js.map +1 -0
  227. package/dist/scripts/lib/capability-specs.js.map +1 -1
  228. package/dist/scripts/lib/diagnostics.js +0 -10
  229. package/dist/scripts/lib/diagnostics.js.map +1 -1
  230. package/dist/scripts/lib/harness-events.js +74 -0
  231. package/dist/scripts/lib/harness-events.js.map +1 -0
  232. package/dist/scripts/lib/in-flight.js +191 -0
  233. package/dist/scripts/lib/in-flight.js.map +1 -0
  234. package/dist/scripts/lib/live-model.js +145 -0
  235. package/dist/scripts/lib/live-model.js.map +1 -0
  236. package/dist/scripts/lib/live-page.js +89 -0
  237. package/dist/scripts/lib/live-page.js.map +1 -0
  238. package/dist/scripts/lib/monorepo-fanout.js.map +1 -1
  239. package/dist/scripts/lib/placeholders.js.map +1 -1
  240. package/dist/scripts/lib/project-root.js.map +1 -1
  241. package/dist/scripts/lib/run-with-deadline.js +6 -1
  242. package/dist/scripts/lib/run-with-deadline.js.map +1 -1
  243. package/dist/scripts/lib/surface.js +95 -30
  244. package/dist/scripts/lib/surface.js.map +1 -1
  245. package/dist/scripts/lib/ticket-keys.js +140 -0
  246. package/dist/scripts/lib/ticket-keys.js.map +1 -0
  247. package/dist/scripts/lib/tour.js +149 -0
  248. package/dist/scripts/lib/tour.js.map +1 -0
  249. package/dist/scripts/propose.js +27 -0
  250. package/dist/scripts/propose.js.map +1 -0
  251. package/dist/scripts/schema/cli.js +1 -1
  252. package/dist/scripts/schema/cli.js.map +1 -1
  253. package/dist/scripts/schema/registry.js +1 -0
  254. package/dist/scripts/schema/registry.js.map +1 -1
  255. package/dist/scripts/specops/add.js +2 -1
  256. package/dist/scripts/specops/add.js.map +1 -1
  257. package/dist/scripts/specops/against_lock.js +22 -25
  258. package/dist/scripts/specops/against_lock.js.map +1 -1
  259. package/dist/scripts/specops/as_change.js.map +1 -1
  260. package/dist/scripts/specops/lock.js +0 -5
  261. package/dist/scripts/specops/lock.js.map +1 -1
  262. package/dist/scripts/specops/manifest.js +0 -8
  263. package/dist/scripts/specops/manifest.js.map +1 -1
  264. package/dist/scripts/specops/remove.js +2 -1
  265. package/dist/scripts/specops/remove.js.map +1 -1
  266. package/dist/scripts/specops/verify.js.map +1 -1
  267. package/dist/scripts/vcs/github-pr.js +88 -0
  268. package/dist/scripts/vcs/github-pr.js.map +1 -0
  269. package/package.json +1 -1
  270. package/templates/adopt/spec.md.tpl +1 -1
  271. package/templates/adopt/traceability.md.tpl +1 -1
  272. package/templates/base/AGENTS.md.tpl +14 -7
  273. package/templates/harness/prompt-prefix.md.tpl +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TicketCommand.js","sourceRoot":"","sources":["../../../../../scripts/cli/commands/change/TicketCommand.ts"],"names":[],"mappings":"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"}
@@ -205,7 +205,7 @@ class ConfigSetCommand extends command_1.BaseCommand {
205
205
  }
206
206
  const file = (0, HarnessConfigFile_1.writeHarnessCommand)(projectDir, key, value);
207
207
  io.emit({ config: { [key]: value } }, () => process.stdout.write(` ✔ ${key} = ${value}\n ${path.relative(process.cwd(), file) || file}\n` +
208
- " `check` and `done` now run it.\n"));
208
+ " `check` and `apply` now run it.\n"));
209
209
  process.exit(agent_1.EXIT.OK);
210
210
  }
211
211
  const config = read(projectDir);
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigSetCommand.js","sourceRoot":"","sources":["../../../../../scripts/cli/commands/config/ConfigSetCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConfigSetCommand.js","sourceRoot":"","sources":["../../../../../scripts/cli/commands/config/ConfigSetCommand.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,9 @@
19
19
  * 5. Emit a pass/fail/attempts report.
20
20
  *
21
21
  * Vendor-neutral by construction: the agent is any shell command. The
22
- * harness never merges a branch — a human reviews and merges.
22
+ * harness never merges a branch — a human reviews and merges — except with
23
+ * `--chain`, which a person asks for and which merges only what passed the
24
+ * gate twice: on its branch and merged (ADR-0036).
23
25
  */
24
26
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
25
27
  if (k2 === undefined) k2 = k;
@@ -63,6 +65,7 @@ exports.isRegeneratedMatrix = isRegeneratedMatrix;
63
65
  exports.publishBranch = publishBranch;
64
66
  exports.printReport = printReport;
65
67
  exports.runLevels = runLevels;
68
+ const ticket_keys_1 = require("../../../lib/ticket-keys");
66
69
  const run_with_deadline_1 = require("../../../lib/run-with-deadline");
67
70
  const MatrixCommand_1 = require("../spec/MatrixCommand");
68
71
  const derived_writes_1 = require("../../../lib/derived-writes");
@@ -75,6 +78,25 @@ const node_child_process_1 = require("node:child_process");
75
78
  const command_1 = require("../../../lib/command");
76
79
  const project_root_1 = require("../../../lib/project-root");
77
80
  const prompt_1 = require("../../../harness/prompt");
81
+ const init_1 = require("../../../harness/init");
82
+ const in_flight_1 = require("../../../lib/in-flight");
83
+ const harness_events_1 = require("../../../lib/harness-events");
84
+ const HarnessEvents_1 = require("../../../../packages/core/src/domain/HarnessEvents");
85
+ /**
86
+ * `read` against the project as it will be after its open changes are
87
+ * archived (ADR-0035), so the harness sees, prompts for and gates a change's
88
+ * requirements while they are in flight. The project itself when none is open.
89
+ */
90
+ function judged(dir, read) {
91
+ const view = (0, in_flight_1.inFlightView)(dir);
92
+ try {
93
+ return read(view ? view.dir : dir, view ? view.toProject : (text) => text);
94
+ }
95
+ finally {
96
+ if (view)
97
+ view.cleanup();
98
+ }
99
+ }
78
100
  const GherkinQuality_1 = require("../../../../packages/core/src/domain/GherkinQuality");
79
101
  const HarnessConfigFile_1 = require("../../../../packages/core/src/infrastructure/HarnessConfigFile");
80
102
  const agent_1 = require("../../../lib/agent");
@@ -156,6 +178,15 @@ function usage() {
156
178
  " --req <REQ-NNN> Limit to specific requirement(s); repeatable.\n" +
157
179
  " --project-dir <path> Project root (auto-detected from cwd if omitted).\n" +
158
180
  " --base-branch <ref> Branch/ref each worktree is cut from (default: current HEAD).\n" +
181
+ " --setup-cmd <cmd> Run in each new worktree before the agent. Default: the\n" +
182
+ " install the lockfile implies (npm ci, pnpm, yarn);\n" +
183
+ " `none` runs nothing. The agent gets SPECGATE_REQ and\n" +
184
+ " SPECGATE_ATTEMPT in its environment.\n" +
185
+ " --chain One requirement at a time, in order, each cut from the\n" +
186
+ " previous merge: a green one is merged into the branch\n" +
187
+ " you are on (a merge commit, its prompts left on its\n" +
188
+ " branch), the gate runs again on the merge, and a red\n" +
189
+ " result is undone. Stops at the first failure.\n" +
159
190
  " --timeout <seconds> Per-agent-invocation timeout (default 1200).\n" +
160
191
  " --keep-worktrees Do not remove worktrees after each requirement.\n" +
161
192
  " --force Recreate harness/REQ-NNN branches that already exist.\n" +
@@ -212,6 +243,8 @@ function parseArgs(argv) {
212
243
  push: false,
213
244
  remote: "",
214
245
  prCmd: "",
246
+ setupCmd: "",
247
+ chain: false,
215
248
  };
216
249
  for (let i = 0; i < argv.length; i += 1) {
217
250
  const token = argv[i];
@@ -247,6 +280,12 @@ function parseArgs(argv) {
247
280
  else if (token === "--base-branch") {
248
281
  args.baseBranch = argv[++i] || "";
249
282
  }
283
+ else if (token === "--setup-cmd") {
284
+ args.setupCmd = argv[++i] || "";
285
+ }
286
+ else if (token === "--chain") {
287
+ args.chain = true;
288
+ }
250
289
  else if (token === "--timeout") {
251
290
  const n = Number(argv[++i]);
252
291
  if (!Number.isInteger(n) || n < 1)
@@ -335,9 +374,9 @@ function branchExists(projectDir, branch) {
335
374
  return r.status === 0 && r.stdout.trim() !== "";
336
375
  }
337
376
  function runPlan(projectDir) {
338
- const r = (0, node_child_process_1.spawnSync)(process.execPath, [PLAN_SCRIPT, "--project-dir", projectDir, "--format", "json"], {
377
+ const r = judged(projectDir, (dir) => (0, node_child_process_1.spawnSync)(process.execPath, [PLAN_SCRIPT, "--project-dir", dir, "--format", "json"], {
339
378
  encoding: "utf8",
340
- });
379
+ }));
341
380
  if (r.status !== 0) {
342
381
  throw new Error(`plan failed:\n${r.stderr || r.stdout}`);
343
382
  }
@@ -346,6 +385,7 @@ function runPlan(projectDir) {
346
385
  parsed = JSON.parse(r.stdout);
347
386
  }
348
387
  catch (err) {
388
+ // `JSON.parse` only ever throws a SyntaxError.
349
389
  throw new Error(`plan produced invalid JSON: ${err.message}`);
350
390
  }
351
391
  return parsed;
@@ -388,21 +428,26 @@ function readGateMessages(worktreeDir, reportPath) {
388
428
  const run = (0, CucumberMessages_1.parseCucumberMessages)(raw);
389
429
  return run.parsed ? run : null;
390
430
  }
391
- function runGate(worktreeDir, testCmd, timeoutMs, req = {}, settings = {}) {
431
+ function runGate(worktreeDir, testCmd, timeoutMs, req = {}, settings = {}, report = () => { }) {
392
432
  // `--delivering`: the requirement is still Draft while its gate runs, and a
393
433
  // Draft row owes no files. Without it the gate would skip the one
394
434
  // requirement this attempt exists to deliver.
395
435
  // The agent's tests are new evidence for a generated matrix: refresh it so
396
436
  // the gate judges the attempt, not the matrix as it was before it.
397
437
  (0, MatrixCommand_1.refreshDerivedMatrix)(worktreeDir);
398
- const validateArgs = [VALIDATE_SCRIPT, worktreeDir, "--strict"];
399
- if (req.requirement)
400
- validateArgs.push("--delivering", req.requirement);
401
- const validate = (0, node_child_process_1.spawnSync)(process.execPath, validateArgs, {
402
- encoding: "utf8",
403
- timeout: timeoutMs,
404
- maxBuffer: SUBPROCESS_MAX_BUFFER,
438
+ const validate = judged(worktreeDir, (dir, toProject) => {
439
+ const validateArgs = [VALIDATE_SCRIPT, dir, "--strict"];
440
+ if (req.requirement)
441
+ validateArgs.push("--delivering", req.requirement);
442
+ const run = (0, node_child_process_1.spawnSync)(process.execPath, validateArgs, {
443
+ encoding: "utf8",
444
+ timeout: timeoutMs,
445
+ maxBuffer: SUBPROCESS_MAX_BUFFER,
446
+ });
447
+ // The agent is told about its worktree, not about the copy it was judged in.
448
+ return { ...run, stdout: toProject(run.stdout || ""), stderr: toProject(run.stderr || "") };
405
449
  });
450
+ report("validate --strict", validate.status === 0 ? "pass" : "fail");
406
451
  if (validate.status !== 0) {
407
452
  return {
408
453
  ok: false,
@@ -422,6 +467,7 @@ function runGate(worktreeDir, testCmd, timeoutMs, req = {}, settings = {}) {
422
467
  timeout: timeoutMs,
423
468
  maxBuffer: SUBPROCESS_MAX_BUFFER,
424
469
  });
470
+ report(`architecture check: ${archCmd}`, arch.status === 0 ? "pass" : "fail");
425
471
  if (arch.status !== 0) {
426
472
  return {
427
473
  ok: false,
@@ -463,6 +509,7 @@ function runGate(worktreeDir, testCmd, timeoutMs, req = {}, settings = {}) {
463
509
  maxBuffer: SUBPROCESS_MAX_BUFFER,
464
510
  stdio: settings.verbose ? ["ignore", 2, 2] : undefined,
465
511
  });
512
+ report(`test command: ${(0, HarnessEvents_1.maskCommand)(resolved)}`, test.status === 0 ? "pass" : "fail", (0, HarnessEvents_1.testCounts)(`${test.stdout || ""}${test.stderr || ""}`));
466
513
  if (test.status !== 0) {
467
514
  // Name the command. A gate that silently does the wrong thing — running
468
515
  // the whole suite because a filter did not apply, say — produces a
@@ -732,7 +779,7 @@ function checkWriteScopeInWorktree(worktreeDir, settings) {
732
779
  `makes a passing gate meaningless. Revert them and satisfy the scenario as written.\n` +
733
780
  (evidence ? `\nWhat was changed:\n\n\`\`\`diff\n${evidence}\n\`\`\`\n` : "") +
734
781
  `\nIf the change is genuinely required, it belongs in a spec change ` +
735
- `(\`specgate change new\`), reviewed by a person — not in this attempt.`,
782
+ `(\`specgate propose\`), reviewed by a person — not in this attempt.`,
736
783
  };
737
784
  }
738
785
  /**
@@ -765,12 +812,14 @@ function checkGateCommandInWorktree(worktreeDir, baseRef, testCmd) {
765
812
  const result = (0, GateCommandIntegrity_1.gateCommandIntegrity)(testCmd, before, after);
766
813
  if (!result.checked || !result.changed)
767
814
  return null;
815
+ // A checked result always names its script: the probe above resolved it.
816
+ const changed = result.script;
768
817
  return {
769
818
  manifest,
770
- script: result.script.script,
819
+ script: changed.script,
771
820
  message: `agent_rewrote_gate_command — the gate runs \`${testCmd}\`, and this attempt ` +
772
821
  `changed what that means.\n\n` +
773
- ` ${manifest} → scripts.${result.script.script}\n` +
822
+ ` ${manifest} → scripts.${changed.script}\n` +
774
823
  ` before: ${result.before === null ? "(absent)" : result.before}\n` +
775
824
  ` after: ${result.after === null ? "(absent)" : result.after}\n\n` +
776
825
  `The command the gate runs is part of the contract this requirement is ` +
@@ -842,13 +891,23 @@ function attemptRequirement(req, ctx) {
842
891
  const firstAttempt = Math.max(1, (ctx.resumeAt && ctx.resumeAt.attempt) || 1);
843
892
  /** Set when another attempt cannot change the outcome (#50). */
844
893
  let stopRetrying = false;
894
+ // The live view's file (ADR-0037), in the project, not the worktree.
895
+ const eventsFile = (0, harness_events_1.eventsFileFor)(ctx.projectDir || worktreeDir, req.requirement);
845
896
  for (let attempt = firstAttempt; attempt <= settings.maxAttempts; attempt += 1) {
846
897
  info(`${req.requirement}: attempt ${attempt}/${settings.maxAttempts}`);
847
898
  const attemptStart = Date.now();
899
+ const event = (e) => (0, harness_events_1.appendEvent)(eventsFile, e, req.requirement, attempt);
900
+ event({ type: "attempt", state: "start" });
848
901
  let agentMs = 0;
849
902
  /** Which roles ran this attempt, in order — the run record's answer to "who did this". */
850
903
  const profilesUsed = [];
851
904
  const record = (stage) => {
905
+ event({
906
+ type: "attempt",
907
+ state: "end",
908
+ result: stage === "pass" ? "pass" : "fail",
909
+ ...(stage === "pass" ? {} : { stage }),
910
+ });
852
911
  attemptLog.push({
853
912
  attempt,
854
913
  endedAt: stage,
@@ -871,7 +930,7 @@ function attemptRequirement(req, ctx) {
871
930
  // implementing step that follows must see what it said. Building once
872
931
  // up front meant findings only ever reached the *next* attempt, which
873
932
  // is not what a reviewer is for.
874
- const prompt = (0, prompt_1.buildPrompt)(req, worktreeDir, {
933
+ const prompt = judged(worktreeDir, (dir) => (0, prompt_1.buildPrompt)(req, dir, {
875
934
  promptPrefix: settings.promptPrefix,
876
935
  hint,
877
936
  previousFailure: previousFailure || undefined,
@@ -882,7 +941,7 @@ function attemptRequirement(req, ctx) {
882
941
  // commit — the precedent must be work already accepted, not a
883
942
  // sibling requirement this same run happens to be writing.
884
943
  withPrecedents: settings.promptPrecedents === true,
885
- });
944
+ }));
886
945
  const promptFile = path.join(os.tmpdir(), `specgate-harness-prompt-${req.requirement}-${crypto.randomBytes(4).toString("hex")}.md`);
887
946
  fs.writeFileSync(promptFile, prompt, "utf8");
888
947
  archivePrompt(worktreeDir, req.requirement, attempt, step, prompt);
@@ -903,6 +962,15 @@ function attemptRequirement(req, ctx) {
903
962
  cwd: worktreeDir,
904
963
  timeoutMs,
905
964
  maxBuffer: SUBPROCESS_MAX_BUFFER,
965
+ // Which requirement and attempt this is, for agents and the wrappers
966
+ // around them (ADR-0036).
967
+ env: {
968
+ SPECGATE_REQ: req.requirement,
969
+ SPECGATE_ATTEMPT: String(attempt),
970
+ [HarnessEvents_1.EVENTS_FILE_VAR]: eventsFile,
971
+ [HarnessEvents_1.EVENTS_REQ_VAR]: req.requirement,
972
+ [HarnessEvents_1.EVENTS_ATTEMPT_VAR]: String(attempt),
973
+ },
906
974
  });
907
975
  // Node reports a timeout as an errno-carrying Error; the base `Error`
908
976
  // type the spawnSync signature declares does not have `code`.
@@ -997,10 +1065,7 @@ function attemptRequirement(req, ctx) {
997
1065
  }
998
1066
  // `verbose` is a run flag, not a project setting, so it travels on the
999
1067
  // context rather than in `harness.config.yaml`.
1000
- const gate = runGate(worktreeDir, settings.testCmd, timeoutMs, req, {
1001
- ...settings,
1002
- verbose: ctx.verbose,
1003
- });
1068
+ const gate = runGate(worktreeDir, settings.testCmd, timeoutMs, req, { ...settings, verbose: ctx.verbose }, (stage, result, extra) => event({ type: "gate", stage, result, ...(extra || {}) }));
1004
1069
  if (!gate.ok) {
1005
1070
  previousFailure =
1006
1071
  `Gate failed at: ${gate.stage}\n\n` + (gate.hint ? `⚠ ${gate.hint}\n\n` : "") + gate.output;
@@ -1060,7 +1125,7 @@ function attemptRequirement(req, ctx) {
1060
1125
  const commit = git(worktreeDir, [
1061
1126
  "commit",
1062
1127
  "-m",
1063
- `feat(${req.requirement}): implement via specgate harness\n\nAttempt ${attempt}/${settings.maxAttempts}.`,
1128
+ (0, ticket_keys_1.harnessCommitMessage)(worktreeDir, req.requirement, attempt, settings.maxAttempts),
1064
1129
  ]);
1065
1130
  if (commit.status !== 0) {
1066
1131
  previousFailure = `git commit failed:\n${commit.stderr || commit.stdout}`;
@@ -1260,7 +1325,7 @@ function resolveGeneratedConflicts(worktree) {
1260
1325
  * @param passed REQ → branch, for the dependencies that passed in this run
1261
1326
  */
1262
1327
  function deriveBase(projectDir, reqId, deps, passed, ctx) {
1263
- const branches = deps.map((d) => passed.get(d)).filter(Boolean);
1328
+ const branches = deps.map((d) => passed.get(d)).filter((b) => Boolean(b));
1264
1329
  if (branches.length === 0)
1265
1330
  return { base: ctx.baseRef };
1266
1331
  if (branches.length === 1)
@@ -1382,7 +1447,7 @@ function preserveFailedAttempt(worktreeDir, req, failure) {
1382
1447
  `wip(${req.requirement}): FAILED the gate — do not merge as is\n\n` +
1383
1448
  `${firstLine}\n\n` +
1384
1449
  "Committed by `specgate harness run` so the attempt is reviewable rather than\n" +
1385
- "discarded. The requirement is still Draft: `specgate done` never ran.",
1450
+ "discarded. The requirement is still Draft: `specgate apply` never ran.",
1386
1451
  ]);
1387
1452
  return commit.status === 0;
1388
1453
  }
@@ -1811,6 +1876,7 @@ function printReport(results, format, recorded) {
1811
1876
  process.stdout.write(` ${ui.muted(`Run recorded in ${recorded} — specgate harness report sums them up`)}\n`);
1812
1877
  }
1813
1878
  if (pass > 0) {
1879
+ // `pass > 0`, so there is one.
1814
1880
  const first = results.find((r) => r.result === "pass");
1815
1881
  process.stdout.write(ui.next(`git diff HEAD...${first.branch}`, "review and merge the harness/* branches you trust"));
1816
1882
  }
@@ -1832,7 +1898,7 @@ function printReport(results, format, recorded) {
1832
1898
  * scoped to one requirement, so a parallel run and a serial run execute the
1833
1899
  * same code.
1834
1900
  */
1835
- async function dispatchLevel(runnable, byId, hintByReq, ctx, concurrency) {
1901
+ const dispatchLevel = async (runnable, byId, hintByReq, ctx, concurrency) => {
1836
1902
  if (concurrency <= 1) {
1837
1903
  const results = [];
1838
1904
  for (const id of runnable) {
@@ -1844,6 +1910,7 @@ async function dispatchLevel(runnable, byId, hintByReq, ctx, concurrency) {
1844
1910
  results.push(notAttempted(byId.get(id), id, ctx.stopReason()));
1845
1911
  continue;
1846
1912
  }
1913
+ // Every id in a level comes from the queue `byId` was built from.
1847
1914
  results.push(processRequirement(byId.get(id), {
1848
1915
  ...ctx,
1849
1916
  baseRef: ctx.baseFor ? ctx.baseFor(id) : ctx.baseRef,
@@ -1853,6 +1920,100 @@ async function dispatchLevel(runnable, byId, hintByReq, ctx, concurrency) {
1853
1920
  return results;
1854
1921
  }
1855
1922
  return runWorkers(runnable, byId, ctx, concurrency);
1923
+ };
1924
+ /**
1925
+ * `--chain` (ADR-0036): the one place the harness merges, and only on request.
1926
+ *
1927
+ * Each requirement is cut from the head the previous merge produced, so it
1928
+ * builds on everything before it. A green one is merged into the branch the
1929
+ * run started on with a merge commit — one revertible commit per requirement,
1930
+ * its prompt archive left on its own branch — and the gate runs again on the
1931
+ * merged result: green alone is not green together. A red result is undone,
1932
+ * and the chain stops at the first requirement that does not pass.
1933
+ */
1934
+ async function runChain(pending, ctx, hintByReq) {
1935
+ const projectDir = ctx.projectDir;
1936
+ const results = [];
1937
+ for (let i = 0; i < pending.length; i += 1) {
1938
+ const req = pending[i];
1939
+ const stop = (reason) => {
1940
+ for (const rest of pending.slice(i + 1)) {
1941
+ results.push(notAttempted(rest, rest.requirement, reason));
1942
+ }
1943
+ };
1944
+ const [result] = await runLevels([req], ctx, {
1945
+ concurrency: 1,
1946
+ hintByReq,
1947
+ runOne: dispatchLevel,
1948
+ });
1949
+ results.push(result);
1950
+ if (!result || result.result !== "pass") {
1951
+ stop(`the chain stopped at ${req.requirement}`);
1952
+ break;
1953
+ }
1954
+ const branch = `harness/${req.requirement}`;
1955
+ const merge = git(projectDir, ["merge", "--no-ff", "--no-commit", branch]);
1956
+ if (merge.status !== 0) {
1957
+ const unresolved = resolveGeneratedConflicts(projectDir);
1958
+ if (unresolved.length > 0) {
1959
+ git(projectDir, ["merge", "--abort"]);
1960
+ Object.assign(result, {
1961
+ result: "fail",
1962
+ error: `merge into the chain's branch conflicted in: ${unresolved.join(", ")}`,
1963
+ });
1964
+ stop(`the chain stopped at ${req.requirement}`);
1965
+ break;
1966
+ }
1967
+ }
1968
+ // The prompts stay on the requirement's branch, for review and --resume;
1969
+ // they never reach the branch the chain merges into.
1970
+ const prompts = git(projectDir, [
1971
+ "diff",
1972
+ "--cached",
1973
+ "--name-only",
1974
+ "--diff-filter=A",
1975
+ "HEAD",
1976
+ "--",
1977
+ EmptyAttempt_1.PROMPT_ARCHIVE_DIR,
1978
+ ])
1979
+ .stdout.split("\n")
1980
+ .filter(Boolean);
1981
+ if (prompts.length > 0) {
1982
+ git(projectDir, ["rm", "-q", "--cached", "--", ...prompts]);
1983
+ for (const f of prompts)
1984
+ fs.rmSync(path.join(projectDir, f), { force: true });
1985
+ }
1986
+ const title = String(req.title || req.use_case || req.useCase || "").replace(/^UC-\d+\s*/, "");
1987
+ const mergeKey = (0, ticket_keys_1.ticketKeyOf)(projectDir, req.requirement);
1988
+ git(projectDir, [
1989
+ "commit",
1990
+ "-q",
1991
+ "-m",
1992
+ `${mergeKey ? `${mergeKey} ` : ""}Merge ${branch}${title ? ` — ${title}` : ""}\n\n` +
1993
+ `Merged by \`specgate harness run --chain\` after its gate passed on ${branch}.`,
1994
+ ]);
1995
+ const eventsFile = (0, harness_events_1.eventsFileFor)(projectDir, req.requirement);
1996
+ const attempt = Number(result.attempts) || undefined;
1997
+ (0, harness_events_1.appendEvent)(eventsFile, { type: "merge", into: "HEAD", branch }, req.requirement, attempt);
1998
+ const gate = runGate(projectDir, ctx.settings.testCmd, ctx.timeoutMs, req, ctx.settings, (stage, res, extra) => (0, harness_events_1.appendEvent)(eventsFile, { type: "gate", stage: `post-merge ${stage}`, result: res, ...(extra || {}) }, req.requirement, attempt));
1999
+ if (!gate.ok) {
2000
+ git(projectDir, ["reset", "-q", "--hard", "HEAD~1"]);
2001
+ Object.assign(result, {
2002
+ result: "fail",
2003
+ error: `post-merge gate: ${gate.stage}\n${String(gate.output || "").slice(-4000)}`,
2004
+ });
2005
+ warn(`${req.requirement}: green on ${branch}, red once merged — the merge was undone`);
2006
+ stop(`the chain stopped at ${req.requirement}`);
2007
+ break;
2008
+ }
2009
+ // The gate may regenerate the matrix: it belongs to the merge commit.
2010
+ if (!isGitClean(projectDir)) {
2011
+ git(projectDir, ["add", "-A"]);
2012
+ git(projectDir, ["commit", "-q", "--amend", "--no-edit"]);
2013
+ }
2014
+ info(`${req.requirement}: merged into the chain's branch, gate green`);
2015
+ }
2016
+ return results;
1856
2017
  }
1857
2018
  /** A requirement the budget never let start. Not a failure — it was not tried. */
1858
2019
  function notAttempted(req, id, reason) {
@@ -1942,6 +2103,8 @@ function workerArgs(id, ctx) {
1942
2103
  String(ctx.timeoutSeconds),
1943
2104
  "--max-attempts",
1944
2105
  String(ctx.settings.maxAttempts),
2106
+ "--setup-cmd",
2107
+ ctx.settings.setupCmd || "none",
1945
2108
  ...(ctx.force ? ["--force"] : []),
1946
2109
  ...(ctx.keepWorktrees ? ["--keep-worktrees"] : []),
1947
2110
  ...(ctx.settings.agent ? ["--agent", ctx.settings.agent] : []),
@@ -2000,8 +2163,14 @@ async function runLevels(pending, ctx, opts) {
2000
2163
  };
2001
2164
  const budgetStartedAt = Date.now();
2002
2165
  let started = 0;
2166
+ // Asserted rather than annotated: it is assigned inside `mayStart`, and an
2167
+ // annotated `null` would stay narrowed to `null` everywhere below.
2003
2168
  let stoppedBy = null;
2004
- const { levels, cycles, dependsOn, graph } = (0, HarnessRun_1.scheduleLevels)(pending);
2169
+ const schedule = (0, HarnessRun_1.scheduleLevels)(pending);
2170
+ const { levels, cycles, graph } = schedule;
2171
+ // REQ → the requirements in this run it waits for. Core builds it as a plain
2172
+ // object and does not declare its shape.
2173
+ const dependsOn = schedule.dependsOn;
2005
2174
  const byId = new Map(pending.map((r) => [r.requirement, r]));
2006
2175
  if (cycles.length > 0) {
2007
2176
  // `validate` is the gate that reports the cycle properly. Here we only
@@ -2036,7 +2205,7 @@ async function runLevels(pending, ctx, opts) {
2036
2205
  const derivationFailures = new Map();
2037
2206
  const baseFor = (id) => {
2038
2207
  const derived = deriveBase(ctx.projectDir, id, dependsOn[id] || [], passedBranches, ctx);
2039
- if (derived.error) {
2208
+ if ("error" in derived) {
2040
2209
  derivationFailures.set(id, derived.error);
2041
2210
  return ctx.baseRef;
2042
2211
  }
@@ -2068,6 +2237,7 @@ async function runLevels(pending, ctx, opts) {
2068
2237
  // that, and again with `--budget-seconds`.
2069
2238
  const levelResults = await runOne(attemptable, byId, hintByReq, {
2070
2239
  ...ctx,
2240
+ // Only `attemptable` ids reach the runner, and each has a base.
2071
2241
  baseFor: (id) => bases.get(id),
2072
2242
  // The level asks before starting each requirement. `started` counts
2073
2243
  // what was actually begun, so the count ceiling and the clock agree.
@@ -2135,6 +2305,12 @@ class RunCommand extends command_1.BaseCommand {
2135
2305
  const projectDir = (0, project_root_1.resolveProjectDir)(args.projectDir, { requireSentinel: true });
2136
2306
  const fileConfig = (0, HarnessConfigFile_1.readHarnessConfig)(projectDir);
2137
2307
  const settings = (0, HarnessConfigFile_1.resolveHarnessSettings)(fileConfig, args);
2308
+ // A fresh worktree has no dependencies. Unless told, install what the
2309
+ // lockfile pins (ADR-0036); `--setup-cmd none` runs nothing.
2310
+ if (settings.setupCmd === "none")
2311
+ settings.setupCmd = "";
2312
+ else if (!settings.setupCmd)
2313
+ settings.setupCmd = (0, init_1.detectSetupCommand)(projectDir);
2138
2314
  // D1: profile match rules live in `.harness/profiles.yaml`, and a project
2139
2315
  // may declare profiles without ever writing a `harness.config.yaml`.
2140
2316
  // Reaching them through the config reader made them silently absent
@@ -2188,13 +2364,15 @@ class RunCommand extends command_1.BaseCommand {
2188
2364
  }
2189
2365
  const hintByReq = new Map((plan.next_steps || []).map((s) => [s.requirement, s.hint]));
2190
2366
  if (args.dryRun) {
2191
- process.stdout.write(ui.header("harness run", `dry run · ${pending.length} requirement(s) would be processed`));
2367
+ process.stdout.write(ui.header("harness run", `dry run · ${pending.length} requirement(s) would be processed`) +
2368
+ ui.kv("Setup", settings.setupCmd || "none", 14) +
2369
+ (args.chain ? ui.kv("Chain", "each green requirement merged into this branch", 14) : ""));
2192
2370
  for (const req of pending) {
2193
- const prompt = (0, prompt_1.buildPrompt)(req, projectDir, {
2371
+ const prompt = judged(projectDir, (dir) => (0, prompt_1.buildPrompt)(req, dir, {
2194
2372
  promptPrefix: settings.promptPrefix,
2195
2373
  hint: hintByReq.get(req.requirement),
2196
2374
  withPrecedents: settings.promptPrecedents === true,
2197
- });
2375
+ }));
2198
2376
  process.stdout.write("\n" +
2199
2377
  ui.section(`${req.requirement} · ${req.category} → branch harness/${req.requirement}`) +
2200
2378
  "\n");
@@ -2214,6 +2392,15 @@ class RunCommand extends command_1.BaseCommand {
2214
2392
  const identity = gitIdentityProblem(projectDir);
2215
2393
  if (identity)
2216
2394
  throw new Error(identity);
2395
+ if (args.chain) {
2396
+ if (args.baseBranch) {
2397
+ throw new Error("--chain merges into the branch you are on: check that branch out instead of --base-branch.");
2398
+ }
2399
+ const current = git(projectDir, ["rev-parse", "--abbrev-ref", "HEAD"]).stdout.trim();
2400
+ if (!current || current === "HEAD") {
2401
+ throw new Error("--chain needs a branch to merge into; HEAD is detached.");
2402
+ }
2403
+ }
2217
2404
  const baseRef = args.baseBranch || "HEAD";
2218
2405
  const concurrencyNote = settings.concurrency > 1 ? `, up to ${settings.concurrency} at a time` : "";
2219
2406
  if (jsonMode || process.env.SPECGATE_HARNESS_WORKER) {
@@ -2245,11 +2432,13 @@ class RunCommand extends command_1.BaseCommand {
2245
2432
  verbose: args.verbose,
2246
2433
  };
2247
2434
  const startedAt = new Date().toISOString();
2248
- const results = await runLevels(pending, ctx, {
2249
- concurrency: settings.concurrency,
2250
- hintByReq,
2251
- runOne: dispatchLevel,
2252
- });
2435
+ const results = args.chain
2436
+ ? await runChain(pending, ctx, hintByReq)
2437
+ : await runLevels(pending, ctx, {
2438
+ concurrency: settings.concurrency,
2439
+ hintByReq,
2440
+ runOne: dispatchLevel,
2441
+ });
2253
2442
  // Only the run that a person started writes a record. A worker is one
2254
2443
  // slice of that run, and its own record would be a second copy of the
2255
2444
  // same requirement — `harness report` reads every file in the directory,
@@ -2279,6 +2468,7 @@ class RunCommand extends command_1.BaseCommand {
2279
2468
  process.exit(failed > 0 ? 1 : 0);
2280
2469
  }
2281
2470
  catch (err) {
2471
+ const thrown = err;
2282
2472
  let isJson = false;
2283
2473
  try {
2284
2474
  isJson = parseArgs(this.args).format === "json";
@@ -2288,7 +2478,7 @@ class RunCommand extends command_1.BaseCommand {
2288
2478
  }
2289
2479
  const io = (0, agent_1.agentIo)(isJson);
2290
2480
  return io.fail({ results: null }, [
2291
- { severity: "error", code: "harness_run_error", message: err.message || String(err) },
2481
+ { severity: "error", code: "harness_run_error", message: thrown.message || String(err) },
2292
2482
  ]);
2293
2483
  }
2294
2484
  }