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.4",
16
+ "version": "0.5.5",
17
17
  "keywords": [
18
18
  "orchestration",
19
19
  "mcp",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gsd",
3
- "version": "0.5.4",
3
+ "version": "0.5.5",
4
4
  "description": "AI orchestration tool for Claude Code — GSD management shell + Superpowers quality core",
5
5
  "author": {
6
6
  "name": "sdsrss",
@@ -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": ["ev:repro:error-xyz", "ev:trace:data-flow"],
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,
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gsd-lite",
3
- "version": "0.5.4",
3
+ "version": "0.5.5",
4
4
  "description": "AI orchestration tool for Claude Code — GSD management shell + Superpowers quality core",
5
5
  "type": "module",
6
6
  "bin": {
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,