specweave 0.28.62 → 0.28.64
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/CLAUDE.md +23 -0
- package/README.md +23 -1
- package/dist/src/cli/helpers/init/ado-repo-cloning.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/ado-repo-cloning.js +29 -79
- package/dist/src/cli/helpers/init/ado-repo-cloning.js.map +1 -1
- package/dist/src/cli/workers/clone-worker.d.ts +18 -0
- package/dist/src/cli/workers/clone-worker.d.ts.map +1 -0
- package/dist/src/cli/workers/clone-worker.js +191 -0
- package/dist/src/cli/workers/clone-worker.js.map +1 -0
- package/dist/src/core/background/index.d.ts +2 -1
- package/dist/src/core/background/index.d.ts.map +1 -1
- package/dist/src/core/background/index.js +1 -1
- package/dist/src/core/background/index.js.map +1 -1
- package/dist/src/core/background/job-launcher.d.ts +20 -0
- package/dist/src/core/background/job-launcher.d.ts.map +1 -1
- package/dist/src/core/background/job-launcher.js +92 -4
- package/dist/src/core/background/job-launcher.js.map +1 -1
- package/dist/src/core/increment/metadata-manager.d.ts.map +1 -1
- package/dist/src/core/increment/metadata-manager.js +11 -0
- package/dist/src/core/increment/metadata-manager.js.map +1 -1
- package/dist/src/core/types/increment-metadata.d.ts +33 -2
- package/dist/src/core/types/increment-metadata.d.ts.map +1 -1
- package/dist/src/core/types/increment-metadata.js +32 -5
- package/dist/src/core/types/increment-metadata.js.map +1 -1
- package/package.json +1 -1
- package/plugins/specweave/commands/specweave-done.md +30 -1
- package/plugins/specweave/commands/specweave-next.md +66 -14
- package/plugins/specweave/hooks/hooks.json +12 -0
- package/plugins/specweave/hooks/v2/dispatchers/post-tool-use.sh +16 -0
- package/plugins/specweave/hooks/v2/guards/completion-guard.sh +81 -0
- package/plugins/specweave/hooks/v2/handlers/github-sync-handler.sh +19 -2
- package/plugins/specweave/hooks/v2/handlers/living-docs-handler.sh +20 -3
- package/plugins/specweave/hooks/v2/handlers/living-specs-handler.sh +19 -5
- package/plugins/specweave/hooks/v2/handlers/status-update.sh +5 -1
- package/plugins/specweave/hooks/v2/queue/processor.sh +77 -10
- package/plugins/specweave/lib/vendor/core/increment/metadata-manager.js +11 -0
- package/plugins/specweave/lib/vendor/core/increment/metadata-manager.js.map +1 -1
- package/plugins/specweave/lib/vendor/core/types/increment-metadata.d.ts +33 -2
- package/plugins/specweave/lib/vendor/core/types/increment-metadata.js +32 -5
- package/plugins/specweave/lib/vendor/core/types/increment-metadata.js.map +1 -1
|
@@ -17,7 +17,20 @@ export declare enum IncrementStatus {
|
|
|
17
17
|
BACKLOG = "backlog",
|
|
18
18
|
/** Temporarily stopped (blocked by external dependency, deprioritized) */
|
|
19
19
|
PAUSED = "paused",
|
|
20
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* All tasks complete, awaiting user review (v0.28.63+)
|
|
22
|
+
*
|
|
23
|
+
* CRITICAL: This is a gating status that prevents auto-completion bugs.
|
|
24
|
+
* - Auto-transitions to READY_FOR_REVIEW when all tasks completed
|
|
25
|
+
* - User MUST explicitly run /specweave:done to move to COMPLETED
|
|
26
|
+
* - /specweave:next will prompt for confirmation before closure
|
|
27
|
+
*
|
|
28
|
+
* Prevents the bug where status becomes "completed" without:
|
|
29
|
+
* 1. ACs being checked in spec.md
|
|
30
|
+
* 2. User approval
|
|
31
|
+
*/
|
|
32
|
+
READY_FOR_REVIEW = "ready_for_review",
|
|
33
|
+
/** All tasks complete AND user approved - increment finished */
|
|
21
34
|
COMPLETED = "completed",
|
|
22
35
|
/** Work abandoned (requirements changed, obsolete, etc.) */
|
|
23
36
|
ABANDONED = "abandoned"
|
|
@@ -71,6 +84,18 @@ export interface IncrementMetadata {
|
|
|
71
84
|
abandonedReason?: string;
|
|
72
85
|
/** Timestamp when abandoned (ISO 8601) */
|
|
73
86
|
abandonedAt?: string;
|
|
87
|
+
/**
|
|
88
|
+
* Timestamp when moved to ready_for_review (ISO 8601)
|
|
89
|
+
* Set automatically when all tasks are completed
|
|
90
|
+
* (v0.28.63+)
|
|
91
|
+
*/
|
|
92
|
+
readyForReviewAt?: string;
|
|
93
|
+
/**
|
|
94
|
+
* Timestamp when user approved completion (ISO 8601)
|
|
95
|
+
* Set only via explicit /specweave:done command
|
|
96
|
+
* (v0.28.63+)
|
|
97
|
+
*/
|
|
98
|
+
approvedAt?: string;
|
|
74
99
|
}
|
|
75
100
|
/**
|
|
76
101
|
* Increment metadata with additional computed fields
|
|
@@ -91,6 +116,11 @@ export interface IncrementMetadataExtended extends IncrementMetadata {
|
|
|
91
116
|
/**
|
|
92
117
|
* Valid status transitions
|
|
93
118
|
* Enforces increment lifecycle rules
|
|
119
|
+
*
|
|
120
|
+
* CRITICAL (v0.28.63+): ACTIVE cannot directly transition to COMPLETED!
|
|
121
|
+
* Must go through READY_FOR_REVIEW first, which requires explicit user approval.
|
|
122
|
+
* This prevents the auto-completion bug where increments are marked "completed"
|
|
123
|
+
* without ACs being checked or user confirmation.
|
|
94
124
|
*/
|
|
95
125
|
export declare const VALID_TRANSITIONS: Record<IncrementStatus, IncrementStatus[]>;
|
|
96
126
|
/**
|
|
@@ -137,11 +167,12 @@ export declare function shouldAutoAbandon(metadata: IncrementMetadata): boolean;
|
|
|
137
167
|
*
|
|
138
168
|
* ACTIVE: Currently executing tasks, consumes team capacity
|
|
139
169
|
* PAUSED: Temporarily blocked but still holding resources/context
|
|
170
|
+
* READY_FOR_REVIEW: Tasks done, awaiting approval (still blocks capacity)
|
|
140
171
|
*
|
|
141
172
|
* Statuses that do NOT count:
|
|
142
173
|
* - PLANNING: Lightweight spec/planning work, parallel-safe
|
|
143
174
|
* - BACKLOG: Not started yet
|
|
144
|
-
* - COMPLETED: Already done
|
|
175
|
+
* - COMPLETED: Already done (user approved)
|
|
145
176
|
* - ABANDONED: Cancelled
|
|
146
177
|
*/
|
|
147
178
|
export declare const WIP_COUNTED_STATUSES: IncrementStatus[];
|
|
@@ -18,7 +18,20 @@ export var IncrementStatus;
|
|
|
18
18
|
IncrementStatus["BACKLOG"] = "backlog";
|
|
19
19
|
/** Temporarily stopped (blocked by external dependency, deprioritized) */
|
|
20
20
|
IncrementStatus["PAUSED"] = "paused";
|
|
21
|
-
/**
|
|
21
|
+
/**
|
|
22
|
+
* All tasks complete, awaiting user review (v0.28.63+)
|
|
23
|
+
*
|
|
24
|
+
* CRITICAL: This is a gating status that prevents auto-completion bugs.
|
|
25
|
+
* - Auto-transitions to READY_FOR_REVIEW when all tasks completed
|
|
26
|
+
* - User MUST explicitly run /specweave:done to move to COMPLETED
|
|
27
|
+
* - /specweave:next will prompt for confirmation before closure
|
|
28
|
+
*
|
|
29
|
+
* Prevents the bug where status becomes "completed" without:
|
|
30
|
+
* 1. ACs being checked in spec.md
|
|
31
|
+
* 2. User approval
|
|
32
|
+
*/
|
|
33
|
+
IncrementStatus["READY_FOR_REVIEW"] = "ready_for_review";
|
|
34
|
+
/** All tasks complete AND user approved - increment finished */
|
|
22
35
|
IncrementStatus["COMPLETED"] = "completed";
|
|
23
36
|
/** Work abandoned (requirements changed, obsolete, etc.) */
|
|
24
37
|
IncrementStatus["ABANDONED"] = "abandoned";
|
|
@@ -45,6 +58,11 @@ export var IncrementType;
|
|
|
45
58
|
/**
|
|
46
59
|
* Valid status transitions
|
|
47
60
|
* Enforces increment lifecycle rules
|
|
61
|
+
*
|
|
62
|
+
* CRITICAL (v0.28.63+): ACTIVE cannot directly transition to COMPLETED!
|
|
63
|
+
* Must go through READY_FOR_REVIEW first, which requires explicit user approval.
|
|
64
|
+
* This prevents the auto-completion bug where increments are marked "completed"
|
|
65
|
+
* without ACs being checked or user confirmation.
|
|
48
66
|
*/
|
|
49
67
|
export const VALID_TRANSITIONS = {
|
|
50
68
|
[IncrementStatus.PLANNING]: [
|
|
@@ -55,8 +73,9 @@ export const VALID_TRANSITIONS = {
|
|
|
55
73
|
[IncrementStatus.ACTIVE]: [
|
|
56
74
|
IncrementStatus.BACKLOG,
|
|
57
75
|
IncrementStatus.PAUSED,
|
|
58
|
-
IncrementStatus.
|
|
76
|
+
IncrementStatus.READY_FOR_REVIEW, // All tasks done → awaiting review
|
|
59
77
|
IncrementStatus.ABANDONED
|
|
78
|
+
// NOTE: COMPLETED intentionally NOT allowed! Must go through READY_FOR_REVIEW
|
|
60
79
|
],
|
|
61
80
|
[IncrementStatus.BACKLOG]: [
|
|
62
81
|
IncrementStatus.PLANNING, // Resume planning
|
|
@@ -65,10 +84,16 @@ export const VALID_TRANSITIONS = {
|
|
|
65
84
|
],
|
|
66
85
|
[IncrementStatus.PAUSED]: [
|
|
67
86
|
IncrementStatus.ACTIVE,
|
|
87
|
+
IncrementStatus.READY_FOR_REVIEW, // Can mark done while paused
|
|
68
88
|
IncrementStatus.ABANDONED
|
|
69
89
|
],
|
|
90
|
+
[IncrementStatus.READY_FOR_REVIEW]: [
|
|
91
|
+
IncrementStatus.COMPLETED, // ONLY via explicit /specweave:done with user approval
|
|
92
|
+
IncrementStatus.ACTIVE, // Reopen if more work needed
|
|
93
|
+
IncrementStatus.ABANDONED // Cancel if requirements changed
|
|
94
|
+
],
|
|
70
95
|
[IncrementStatus.COMPLETED]: [
|
|
71
|
-
//
|
|
96
|
+
// Allow reopening completed increments when issues discovered
|
|
72
97
|
IncrementStatus.ACTIVE, // Reopen for fixes
|
|
73
98
|
IncrementStatus.ABANDONED // Mark as failed (rare)
|
|
74
99
|
],
|
|
@@ -160,16 +185,18 @@ export function shouldAutoAbandon(metadata) {
|
|
|
160
185
|
*
|
|
161
186
|
* ACTIVE: Currently executing tasks, consumes team capacity
|
|
162
187
|
* PAUSED: Temporarily blocked but still holding resources/context
|
|
188
|
+
* READY_FOR_REVIEW: Tasks done, awaiting approval (still blocks capacity)
|
|
163
189
|
*
|
|
164
190
|
* Statuses that do NOT count:
|
|
165
191
|
* - PLANNING: Lightweight spec/planning work, parallel-safe
|
|
166
192
|
* - BACKLOG: Not started yet
|
|
167
|
-
* - COMPLETED: Already done
|
|
193
|
+
* - COMPLETED: Already done (user approved)
|
|
168
194
|
* - ABANDONED: Cancelled
|
|
169
195
|
*/
|
|
170
196
|
export const WIP_COUNTED_STATUSES = [
|
|
171
197
|
IncrementStatus.ACTIVE,
|
|
172
|
-
IncrementStatus.PAUSED // Paused work still blocks team capacity
|
|
198
|
+
IncrementStatus.PAUSED, // Paused work still blocks team capacity
|
|
199
|
+
IncrementStatus.READY_FOR_REVIEW // Awaiting user approval, still in progress
|
|
173
200
|
];
|
|
174
201
|
/**
|
|
175
202
|
* Check if increment status counts toward WIP (Work In Progress) limits
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"increment-metadata.js","sourceRoot":"","sources":["../../../../src/core/types/increment-metadata.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"increment-metadata.js","sourceRoot":"","sources":["../../../../src/core/types/increment-metadata.ts"],"names":[],"mappings":"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"}
|