@wrongstack/sdd 1.0.32 → 1.0.33

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.
package/dist/index.js CHANGED
@@ -3697,6 +3697,15 @@ var SddParallelRun = class {
3697
3697
  /** Monotonic dispatch counter (unique subagent ids) + dispatch-round counter. */
3698
3698
  dispatchSeq = 0;
3699
3699
  round = 0;
3700
+ /**
3701
+ * True once `run()` has returned. A FINISHED run is not "running" even when
3702
+ * the graph is left unsettled (deadlock exit): `isRunning()` gates
3703
+ * `cleanupWorktrees()` / `rollback()` / the Ctrl+C ladders, and a returned
3704
+ * run kept reporting live, silently no-oping cleanup and refusing rollback
3705
+ * with "run still active" until the user called `stop()` on a run that had
3706
+ * already ended. Cleared again at the top of `run()` so a re-run re-arms.
3707
+ */
3708
+ runReturned = false;
3700
3709
  /** Type-safe emit on the optional EventBus (no-op when unwired). */
3701
3710
  emit(event, payload) {
3702
3711
  const sessionId = this.currentSessionId();
@@ -3738,7 +3747,7 @@ var SddParallelRun = class {
3738
3747
  return this.paused;
3739
3748
  }
3740
3749
  isRunning() {
3741
- return !this.stopRequested && !this.decomposer.isSettled();
3750
+ return !this.stopRequested && !this.runReturned && !this.decomposer.isSettled();
3742
3751
  }
3743
3752
  /** Base branch the run's squash commits land on (undefined when worktrees off). */
3744
3753
  getBaseBranch() {
@@ -3913,6 +3922,7 @@ var SddParallelRun = class {
3913
3922
  const startTime = Date.now();
3914
3923
  this.round = 0;
3915
3924
  this.dispatchSeq = 0;
3925
+ this.runReturned = false;
3916
3926
  let totalDispatched = 0;
3917
3927
  this.buildCoordinator();
3918
3928
  if (this.opts.worktrees && !this.baseBranch) {
@@ -4018,6 +4028,7 @@ var SddParallelRun = class {
4018
4028
  stopped: this.stopRequested,
4019
4029
  ...this.fatalError ? { fatalError: this.fatalError } : {}
4020
4030
  });
4031
+ this.runReturned = true;
4021
4032
  return {
4022
4033
  totalWaves: this.round,
4023
4034
  totalCompleted: finalProgress.completed,
@@ -64,6 +64,15 @@ export declare class SddParallelRun {
64
64
  /** Monotonic dispatch counter (unique subagent ids) + dispatch-round counter. */
65
65
  private dispatchSeq;
66
66
  private round;
67
+ /**
68
+ * True once `run()` has returned. A FINISHED run is not "running" even when
69
+ * the graph is left unsettled (deadlock exit): `isRunning()` gates
70
+ * `cleanupWorktrees()` / `rollback()` / the Ctrl+C ladders, and a returned
71
+ * run kept reporting live, silently no-oping cleanup and refusing rollback
72
+ * with "run still active" until the user called `stop()` on a run that had
73
+ * already ended. Cleared again at the top of `run()` so a re-run re-arms.
74
+ */
75
+ private runReturned;
67
76
  constructor(opts: SddParallelRunOptions);
68
77
  /** Type-safe emit on the optional EventBus (no-op when unwired). */
69
78
  private emit;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wrongstack/sdd",
3
- "version": "1.0.32",
3
+ "version": "1.0.33",
4
4
  "license": "MIT",
5
5
  "description": "WrongStack Spec-Driven Development engine — standalone package extracted from @wrongstack/core. Task graph generation, tracking, execution, lifecycle management, and AI-driven spec building for SDD workflows.",
6
6
  "repository": {
@@ -27,10 +27,10 @@
27
27
  "!dist/**/*.map"
28
28
  ],
29
29
  "dependencies": {
30
- "@wrongstack/core": "1.0.32",
31
- "@wrongstack/kanban": "1.0.32",
32
- "@wrongstack/primitives": "1.0.32",
33
- "@wrongstack/requirement-intake": "1.0.32"
30
+ "@wrongstack/core": "1.0.33",
31
+ "@wrongstack/kanban": "1.0.33",
32
+ "@wrongstack/primitives": "1.0.33",
33
+ "@wrongstack/requirement-intake": "1.0.33"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@types/node": "^26.5.1",