gsd-lite 0.5.4 → 0.5.5
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.
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"name": "gsd",
|
|
14
14
|
"source": "./",
|
|
15
15
|
"description": "AI orchestration tool — GSD management shell + Superpowers quality core. 5 commands, 4 agents, 5 workflows, MCP server, context monitoring.",
|
|
16
|
-
"version": "0.5.
|
|
16
|
+
"version": "0.5.5",
|
|
17
17
|
"keywords": [
|
|
18
18
|
"orchestration",
|
|
19
19
|
"mcp",
|
package/agents/debugger.md
CHANGED
|
@@ -67,9 +67,11 @@ Phase 4 修复方向建议:
|
|
|
67
67
|
"task_id": "2.3",
|
|
68
68
|
"outcome": "root_cause_found | fix_suggested | failed",
|
|
69
69
|
"root_cause": "Description of the identified root cause",
|
|
70
|
-
"evidence": [
|
|
70
|
+
"evidence": [
|
|
71
|
+
{ "id": "ev:repro:error-xyz", "scope": "task:2.3", "command": "npm test", "exit_code": 1, "stdout": "...", "stderr": "...", "timestamp": "ISO8601" }
|
|
72
|
+
],
|
|
71
73
|
"hypothesis_tested": [
|
|
72
|
-
{ "hypothesis": "X causes Y", "result": "confirmed | rejected", "evidence": "
|
|
74
|
+
{ "hypothesis": "X causes Y", "result": "confirmed | rejected", "evidence": "non-empty string (required)" }
|
|
73
75
|
],
|
|
74
76
|
"fix_direction": "Suggested fix approach for executor",
|
|
75
77
|
"fix_attempts": 0,
|
package/agents/reviewer.md
CHANGED
|
@@ -93,7 +93,7 @@ Minor = 建议修复 (命名/风格)
|
|
|
93
93
|
{
|
|
94
94
|
"scope": "task | phase",
|
|
95
95
|
"scope_id": "2.3 (task scope: string ID) | 2 (phase scope: number ID)",
|
|
96
|
-
"review_level": "L2 | L1-batch",
|
|
96
|
+
"review_level": "L2 | L1-batch | L1",
|
|
97
97
|
"spec_passed": true,
|
|
98
98
|
"quality_passed": false,
|
|
99
99
|
"critical_issues": [
|
package/package.json
CHANGED
package/src/schema.js
CHANGED
|
@@ -598,7 +598,7 @@ export function validateReviewerResult(r) {
|
|
|
598
598
|
if (!(typeof r.scope_id === 'string' || typeof r.scope_id === 'number') || r.scope_id === '') {
|
|
599
599
|
errors.push('missing scope_id');
|
|
600
600
|
}
|
|
601
|
-
if (!['L2', 'L1-batch'].includes(r.review_level)) errors.push('invalid review_level');
|
|
601
|
+
if (!['L2', 'L1-batch', 'L1'].includes(r.review_level)) errors.push('invalid review_level (expected L2, L1-batch, or L1)');
|
|
602
602
|
if (typeof r.spec_passed !== 'boolean') errors.push('spec_passed must be boolean');
|
|
603
603
|
if (typeof r.quality_passed !== 'boolean') errors.push('quality_passed must be boolean');
|
|
604
604
|
if (!Array.isArray(r.critical_issues)) errors.push('critical_issues must be array');
|
|
@@ -450,6 +450,13 @@ async function resumeExecutingTask(state, basePath) {
|
|
|
450
450
|
|
|
451
451
|
if (selection.task) {
|
|
452
452
|
const task = selection.task;
|
|
453
|
+
// Two-step transition for needs_revalidation: must go through pending first
|
|
454
|
+
if (task.lifecycle === 'needs_revalidation') {
|
|
455
|
+
const resetError = await persist(basePath, {
|
|
456
|
+
phases: [{ id: phase.id, todo: [{ id: task.id, lifecycle: 'pending' }] }],
|
|
457
|
+
});
|
|
458
|
+
if (resetError) return resetError;
|
|
459
|
+
}
|
|
453
460
|
const persistError = await persist(basePath, {
|
|
454
461
|
workflow_mode: 'executing_task',
|
|
455
462
|
current_task: task.id,
|