gsd-antigravity-kit 1.32.0 → 2.0.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.
- package/.agent/skills/gsd/SKILL.md +152 -123
- package/.agent/skills/gsd/VERSION +1 -0
- package/.agent/skills/gsd/assets/templates/user-profile.md +8 -8
- package/.agent/skills/gsd/bin/gsd-tools.cjs +81 -3
- package/.agent/skills/gsd/bin/help-manifest.json +24 -1
- package/.agent/skills/gsd/bin/hooks/gsd-check-update.js +15 -5
- package/.agent/skills/gsd/bin/hooks/gsd-context-monitor.js +1 -1
- package/.agent/skills/gsd/bin/hooks/gsd-phase-boundary.sh +27 -0
- package/.agent/skills/gsd/bin/hooks/gsd-prompt-guard.js +2 -1
- package/.agent/skills/gsd/bin/hooks/gsd-read-guard.js +1 -1
- package/.agent/skills/gsd/bin/hooks/gsd-session-state.sh +33 -0
- package/.agent/skills/gsd/bin/hooks/gsd-statusline.js +5 -5
- package/.agent/skills/gsd/bin/hooks/gsd-validate-commit.sh +47 -0
- package/.agent/skills/gsd/bin/hooks/gsd-workflow-guard.js +1 -1
- package/.agent/skills/gsd/bin/lib/config.cjs +31 -10
- package/.agent/skills/gsd/bin/lib/core.cjs +48 -13
- package/.agent/skills/gsd/bin/lib/frontmatter.cjs +34 -2
- package/.agent/skills/gsd/bin/lib/intel.cjs +660 -0
- package/.agent/skills/gsd/bin/lib/learnings.cjs +378 -0
- package/.agent/skills/gsd/bin/lib/milestone.cjs +13 -4
- package/.agent/skills/gsd/bin/lib/model-profiles.cjs +17 -17
- package/.agent/skills/gsd/bin/lib/profile-output.cjs +31 -31
- package/.agent/skills/gsd/bin/lib/security.cjs +119 -0
- package/.agent/skills/gsd/bin/lib/verify.cjs +15 -15
- package/.agent/skills/gsd/migration_report.md +7 -0
- package/.agent/skills/gsd/references/agents/gsd-code-fixer.md +516 -0
- package/.agent/skills/gsd/references/agents/gsd-code-reviewer.md +355 -0
- package/.agent/skills/gsd/references/agents/gsd-debugger.md +10 -1
- package/.agent/skills/gsd/references/agents/gsd-executor.md +3 -0
- package/.agent/skills/gsd/references/agents/gsd-intel-updater.md +314 -0
- package/.agent/skills/gsd/references/agents/gsd-phase-researcher.md +3 -0
- package/.agent/skills/gsd/references/agents/gsd-plan-checker.md +16 -4
- package/.agent/skills/gsd/references/agents/gsd-planner.md +7 -0
- package/.agent/skills/gsd/references/agents/gsd-user-profiler.md +5 -5
- package/.agent/skills/gsd/references/agents/gsd-verifier.md +55 -1
- package/.agent/skills/gsd/references/agents/profiles/dev.md +21 -0
- package/.agent/skills/gsd/references/agents/profiles/research.md +22 -0
- package/.agent/skills/gsd/references/agents/profiles/review.md +22 -0
- package/.agent/skills/gsd/references/commands/{gsd-add-todo.md → atomic/add-todo.md} +5 -4
- package/.agent/skills/gsd/references/commands/{gsd-check-todos.md → atomic/check-todos.md} +5 -4
- package/.agent/skills/gsd/references/commands/{gsd-cleanup.md → atomic/cleanup.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-do.md → atomic/do.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-help.md → atomic/help.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-join-discord.md → atomic/join-discord.md} +21 -19
- package/.agent/skills/gsd/references/commands/{gsd-note.md → atomic/note.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-session-report.md → atomic/session-report.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-ship.md → atomic/ship.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-stats.md → atomic/stats.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-thread.md → atomic/thread.md} +7 -6
- package/.agent/skills/gsd/references/commands/atomic/undo.md +36 -0
- package/.agent/skills/gsd/references/commands/{gsd-add-backlog.md → milestone/add-backlog.md} +8 -7
- package/.agent/skills/gsd/references/commands/{gsd-audit-milestone.md → milestone/audit-milestone.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-complete-milestone.md → milestone/complete-milestone.md} +6 -4
- package/.agent/skills/gsd/references/commands/{gsd-milestone-summary.md → milestone/milestone-summary.md} +5 -3
- package/.agent/skills/gsd/references/commands/{gsd-new-milestone.md → milestone/new-milestone.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-plan-milestone-gaps.md → milestone/plan-milestone-gaps.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-plant-seed.md → milestone/plant-seed.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-review-backlog.md → milestone/review-backlog.md} +6 -5
- package/.agent/skills/gsd/references/commands/misc/audit-fix.md +35 -0
- package/.agent/skills/gsd/references/commands/{gsd-audit-uat.md → misc/audit-uat.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-next.md → misc/next.md} +6 -3
- package/.agent/skills/gsd/references/commands/{gsd-progress.md → misc/progress.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-verify-work.md → misc/verify-work.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-add-phase.md → phase/add-phase.md} +5 -4
- package/.agent/skills/gsd/references/commands/{gsd-add-tests.md → phase/add-tests.md} +8 -3
- package/.agent/skills/gsd/references/commands/{gsd-discuss-phase.md → phase/discuss-phase.md} +5 -4
- package/.agent/skills/gsd/references/commands/{gsd-execute-phase.md → phase/execute-phase.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-insert-phase.md → phase/insert-phase.md} +5 -4
- package/.agent/skills/gsd/references/commands/{gsd-list-phase-assumptions.md → phase/list-phase-assumptions.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-plan-phase.md → phase/plan-phase.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-remove-phase.md → phase/remove-phase.md} +5 -4
- package/.agent/skills/gsd/references/commands/{gsd-research-phase.md → phase/research-phase.md} +7 -6
- package/.agent/skills/gsd/references/commands/{gsd-secure-phase.md → phase/secure-phase.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-ui-phase.md → phase/ui-phase.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-ui-review.md → phase/ui-review.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-validate-phase.md → phase/validate-phase.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-workstreams.md → phase/workstreams.md} +71 -70
- package/.agent/skills/gsd/references/commands/{gsd-analyze-dependencies.md → project/analyze-dependencies.md} +5 -4
- package/.agent/skills/gsd/references/commands/project/explore.md +29 -0
- package/.agent/skills/gsd/references/commands/project/import.md +38 -0
- package/.agent/skills/gsd/references/commands/project/intel.md +181 -0
- package/.agent/skills/gsd/references/commands/{gsd-list-workspaces.md → project/list-workspaces.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-map-codebase.md → project/map-codebase.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-new-project.md → project/new-project.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-new-workspace.md → project/new-workspace.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-remove-workspace.md → project/remove-workspace.md} +4 -3
- package/.agent/skills/gsd/references/commands/project/scan.md +28 -0
- package/.agent/skills/gsd/references/commands/{gsd-autonomous.md → system/autonomous.md} +4 -3
- package/.agent/skills/gsd/references/commands/system/code-review-fix.md +54 -0
- package/.agent/skills/gsd/references/commands/system/code-review.md +57 -0
- package/.agent/skills/gsd/references/commands/{gsd-debug.md → system/debug.md} +7 -6
- package/.agent/skills/gsd/references/commands/{gsd-docs-update.md → system/docs-update.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-fast.md → system/fast.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-forensics.md → system/forensics.md} +5 -3
- package/.agent/skills/gsd/references/commands/{gsd-health.md → system/health.md} +5 -4
- package/.agent/skills/gsd/references/commands/{gsd-manager.md → system/manager.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-pause-work.md → system/pause-work.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-pr-branch.md → system/pr-branch.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-profile-user.md → system/profile-user.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-quick.md → system/quick.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-reapply-patches.md → system/reapply-patches.md} +25 -7
- package/.agent/skills/gsd/references/commands/{gsd-resume-work.md → system/resume-work.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-review.md → system/review.md} +4 -3
- package/.agent/skills/gsd/references/commands/system/set-profile.md +14 -0
- package/.agent/skills/gsd/references/commands/{gsd-settings.md → system/settings.md} +4 -3
- package/.agent/skills/gsd/references/commands/{gsd-update.md → system/update.md} +4 -3
- package/.agent/skills/gsd/references/docs/agent-contracts.md +79 -0
- package/.agent/skills/gsd/references/docs/common-bug-patterns.md +114 -0
- package/.agent/skills/gsd/references/docs/context-budget.md +49 -0
- package/.agent/skills/gsd/references/docs/domain-probes.md +125 -0
- package/.agent/skills/gsd/references/docs/few-shot-examples/plan-checker.md +73 -0
- package/.agent/skills/gsd/references/docs/few-shot-examples/verifier.md +109 -0
- package/.agent/skills/gsd/references/docs/gate-prompts.md +100 -0
- package/.agent/skills/gsd/references/docs/gates.md +70 -0
- package/.agent/skills/gsd/references/docs/model-profile-resolution.md +2 -0
- package/.agent/skills/gsd/references/docs/model-profiles.md +20 -14
- package/.agent/skills/gsd/references/docs/planning-config.md +216 -1
- package/.agent/skills/gsd/references/docs/revision-loop.md +97 -0
- package/.agent/skills/gsd/references/docs/thinking-models-debug.md +44 -0
- package/.agent/skills/gsd/references/docs/thinking-models-execution.md +50 -0
- package/.agent/skills/gsd/references/docs/thinking-models-planning.md +62 -0
- package/.agent/skills/gsd/references/docs/thinking-models-research.md +50 -0
- package/.agent/skills/gsd/references/docs/thinking-models-verification.md +55 -0
- package/.agent/skills/gsd/references/docs/thinking-partner.md +96 -0
- package/.agent/skills/gsd/references/docs/universal-anti-patterns.md +58 -0
- package/.agent/skills/gsd/references/docs/user-profiling.md +10 -10
- package/.agent/skills/gsd/references/docs/verification-overrides.md +227 -0
- package/.agent/skills/gsd/references/docs/workstream-flag.md +2 -2
- package/.agent/skills/gsd/references/mapping.md +11 -21
- package/.agent/skills/gsd/references/workflows/analyze-dependencies.md +3 -3
- package/.agent/skills/gsd/references/workflows/audit-fix.md +157 -0
- package/.agent/skills/gsd/references/workflows/autonomous.md +22 -1
- package/.agent/skills/gsd/references/workflows/code-review-fix.md +497 -0
- package/.agent/skills/gsd/references/workflows/code-review.md +515 -0
- package/.agent/skills/gsd/references/workflows/discuss-phase-power.md +3 -3
- package/.agent/skills/gsd/references/workflows/discuss-phase.md +20 -0
- package/.agent/skills/gsd/references/workflows/execute-phase.md +103 -0
- package/.agent/skills/gsd/references/workflows/explore.md +139 -0
- package/.agent/skills/gsd/references/workflows/import.md +274 -0
- package/.agent/skills/gsd/references/workflows/inbox.md +384 -0
- package/.agent/skills/gsd/references/workflows/manager.md +5 -5
- package/.agent/skills/gsd/references/workflows/new-milestone.md +1 -1
- package/.agent/skills/gsd/references/workflows/next.md +56 -0
- package/.agent/skills/gsd/references/workflows/plan-phase.md +48 -1
- package/.agent/skills/gsd/references/workflows/quick.md +96 -2
- package/.agent/skills/gsd/references/workflows/review.md +23 -3
- package/.agent/skills/gsd/references/workflows/scan.md +102 -0
- package/.agent/skills/gsd/references/workflows/settings.md +1 -1
- package/.agent/skills/gsd/references/workflows/ui-review.md +2 -2
- package/.agent/skills/gsd/references/workflows/undo.md +312 -0
- package/.agent/skills/gsd/references/workflows/update.md +5 -5
- package/.agent/skills/gsd-converter/SKILL.md +67 -59
- package/.agent/skills/gsd-converter/assets/migration-manifest.json +74 -0
- package/.agent/skills/gsd-converter/references/mapping.md +6 -16
- package/.agent/skills/gsd-converter/scripts/convert.py +419 -80
- package/.agent/skills/gsd-converter/scripts/regression_test.py +33 -0
- package/.agent/skills/selectpaste-update/SKILL.md +46 -0
- package/.agent/skills/selectpaste-update/scripts/sync-commands.py +317 -0
- package/README.md +4 -2
- package/bin/install.js +116 -116
- package/package.json +1 -1
- package/.agent/skills/gsd/references/commands/gsd-set-profile.md +0 -12
- /package/.agent/skills/gsd/references/commands/{gsd-tools.md → system/gsd-tools.md} +0 -0
|
@@ -152,6 +152,25 @@ const INJECTION_PATTERNS = [
|
|
|
152
152
|
/(?:run|execute|call|invoke)\s+(?:the\s+)?(?:bash|shell|exec|spawn)\s+(?:tool|command)/i,
|
|
153
153
|
];
|
|
154
154
|
|
|
155
|
+
/**
|
|
156
|
+
* Layer 2: Encoding-obfuscation patterns with custom finding messages.
|
|
157
|
+
* Each entry: { pattern: RegExp, message: string }
|
|
158
|
+
*/
|
|
159
|
+
const OBFUSCATION_PATTERN_ENTRIES = [
|
|
160
|
+
{
|
|
161
|
+
pattern: /\b(\w\s){4,}\w\b/,
|
|
162
|
+
message: 'Character-spacing obfuscation pattern detected (e.g. "i g n o r e")',
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
pattern: /<\/?(system|human|assistant|user)\s*>/i,
|
|
166
|
+
message: 'Delimiter injection pattern: <system>/<assistant>/<user> tag detected',
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
pattern: /0x[0-9a-fA-F]{16,}/,
|
|
170
|
+
message: 'Long hex sequence detected — possible encoded payload',
|
|
171
|
+
},
|
|
172
|
+
];
|
|
173
|
+
|
|
155
174
|
/**
|
|
156
175
|
* Scan text for potential prompt injection patterns.
|
|
157
176
|
* Returns an array of findings (empty = clean).
|
|
@@ -174,6 +193,13 @@ function scanForInjection(text, opts = {}) {
|
|
|
174
193
|
}
|
|
175
194
|
}
|
|
176
195
|
|
|
196
|
+
// Layer 2: encoding-obfuscation patterns with custom messages
|
|
197
|
+
for (const entry of OBFUSCATION_PATTERN_ENTRIES) {
|
|
198
|
+
if (entry.pattern.test(text)) {
|
|
199
|
+
findings.push(entry.message);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
177
203
|
if (opts.strict) {
|
|
178
204
|
// Check for suspicious Unicode that could hide instructions
|
|
179
205
|
// (zero-width chars, RTL override, homoglyph attacks)
|
|
@@ -181,6 +207,12 @@ function scanForInjection(text, opts = {}) {
|
|
|
181
207
|
findings.push('Contains suspicious zero-width or invisible Unicode characters');
|
|
182
208
|
}
|
|
183
209
|
|
|
210
|
+
// Layer 1: Unicode tag block U+E0000–U+E007F (2025 supply-chain attack vector)
|
|
211
|
+
// These characters are invisible and can embed hidden instructions
|
|
212
|
+
if (/[\uDB40\uDC00-\uDB40\uDC7F]/u.test(text) || /[\u{E0000}-\u{E007F}]/u.test(text)) {
|
|
213
|
+
findings.push('Contains Unicode tag block characters (U+E0000–E007F) — invisible instruction injection vector');
|
|
214
|
+
}
|
|
215
|
+
|
|
184
216
|
// Check for extremely long strings that could be prompt stuffing.
|
|
185
217
|
// Normalize CRLF → LF before measuring so Windows checkouts don't inflate the count.
|
|
186
218
|
const normalizedLength = text.replace(/\r\n/g, '\n').replace(/\r/g, '\n').length;
|
|
@@ -361,6 +393,87 @@ function validateFieldName(field) {
|
|
|
361
393
|
return { valid: false, error: `Invalid field name: "${field}"` };
|
|
362
394
|
}
|
|
363
395
|
|
|
396
|
+
// ─── Layer 3: Structural Schema Validation ───────────────────────────────────
|
|
397
|
+
|
|
398
|
+
const KNOWN_VALID_TAGS = new Set([
|
|
399
|
+
'objective', 'process', 'step', 'success_criteria', 'critical_rules',
|
|
400
|
+
'available_agent_types', 'purpose', 'required_reading',
|
|
401
|
+
]);
|
|
402
|
+
|
|
403
|
+
/**
|
|
404
|
+
* Validate the XML structure of a prompt file.
|
|
405
|
+
* For agent/workflow files, flags any XML tag not in the known-valid set.
|
|
406
|
+
*
|
|
407
|
+
* @param {string} text - The file content to validate
|
|
408
|
+
* @param {'agent'|'workflow'|'unknown'} fileType - The type of prompt file
|
|
409
|
+
* @returns {{ valid: boolean, violations: string[] }}
|
|
410
|
+
*/
|
|
411
|
+
function validatePromptStructure(text, fileType) {
|
|
412
|
+
if (!text || typeof text !== 'string') {
|
|
413
|
+
return { valid: true, violations: [] };
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
if (fileType !== 'agent' && fileType !== 'workflow') {
|
|
417
|
+
return { valid: true, violations: [] };
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
const violations = [];
|
|
421
|
+
const tagRegex = /<([A-Za-z][A-Za-z0-9_-]*)/g;
|
|
422
|
+
let match;
|
|
423
|
+
while ((match = tagRegex.exec(text)) !== null) {
|
|
424
|
+
const tag = match[1].toLowerCase();
|
|
425
|
+
if (!KNOWN_VALID_TAGS.has(tag)) {
|
|
426
|
+
violations.push(`Unknown XML tag in ${fileType} file: <${tag}>`);
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
return { valid: violations.length === 0, violations };
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
// ─── Layer 4: Paragraph-Level Entropy Anomaly Detection ─────────────────────
|
|
434
|
+
|
|
435
|
+
function shannonEntropy(text) {
|
|
436
|
+
if (!text || text.length === 0) return 0;
|
|
437
|
+
const freq = {};
|
|
438
|
+
for (const ch of text) {
|
|
439
|
+
freq[ch] = (freq[ch] || 0) + 1;
|
|
440
|
+
}
|
|
441
|
+
const len = text.length;
|
|
442
|
+
let entropy = 0;
|
|
443
|
+
for (const count of Object.values(freq)) {
|
|
444
|
+
const p = count / len;
|
|
445
|
+
entropy -= p * Math.log2(p);
|
|
446
|
+
}
|
|
447
|
+
return entropy;
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
/**
|
|
451
|
+
* Scan text for paragraphs with anomalously high Shannon entropy.
|
|
452
|
+
*
|
|
453
|
+
* @param {string} text - The text to scan
|
|
454
|
+
* @returns {{ clean: boolean, findings: string[] }}
|
|
455
|
+
*/
|
|
456
|
+
function scanEntropyAnomalies(text) {
|
|
457
|
+
if (!text || typeof text !== 'string') {
|
|
458
|
+
return { clean: true, findings: [] };
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
const findings = [];
|
|
462
|
+
const paragraphs = text.split(/\n\n+/);
|
|
463
|
+
|
|
464
|
+
for (const para of paragraphs) {
|
|
465
|
+
if (para.length <= 50) continue;
|
|
466
|
+
const entropy = shannonEntropy(para);
|
|
467
|
+
if (entropy > 5.5) {
|
|
468
|
+
findings.push(
|
|
469
|
+
`High-entropy paragraph detected (${entropy.toFixed(2)} bits/char) — possible encoded payload`
|
|
470
|
+
);
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
return { clean: findings.length === 0, findings };
|
|
475
|
+
}
|
|
476
|
+
|
|
364
477
|
module.exports = {
|
|
365
478
|
// Path safety
|
|
366
479
|
validatePath,
|
|
@@ -381,4 +494,10 @@ module.exports = {
|
|
|
381
494
|
// Input validation
|
|
382
495
|
validatePhaseNumber,
|
|
383
496
|
validateFieldName,
|
|
497
|
+
|
|
498
|
+
// Structural validation (Layer 3)
|
|
499
|
+
validatePromptStructure,
|
|
500
|
+
|
|
501
|
+
// Entropy anomaly detection (Layer 4)
|
|
502
|
+
scanEntropyAnomalies,
|
|
384
503
|
};
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
const fs = require('fs');
|
|
6
6
|
const path = require('path');
|
|
7
7
|
const os = require('os');
|
|
8
|
-
const { safeReadFile, loadConfig, normalizePhaseName, escapeRegex, execGit, findPhaseInternal, getMilestoneInfo, stripShippedMilestones, extractCurrentMilestone, planningDir, planningRoot, output, error, checkAgentsInstalled } = require('./core.cjs');
|
|
8
|
+
const { safeReadFile, loadConfig, normalizePhaseName, escapeRegex, execGit, findPhaseInternal, getMilestoneInfo, stripShippedMilestones, extractCurrentMilestone, planningDir, planningRoot, output, error, checkAgentsInstalled, CONFIG_DEFAULTS } = require('./core.cjs');
|
|
9
9
|
const { extractFrontmatter, parseMustHavesBlock } = require('./frontmatter.cjs');
|
|
10
10
|
const { writeStateMd } = require('./state.cjs');
|
|
11
11
|
|
|
@@ -777,7 +777,7 @@ function cmdValidateHealth(cwd, options, raw) {
|
|
|
777
777
|
if (statusVal !== 'complete' && statusVal !== 'done') {
|
|
778
778
|
addIssue('warning', 'W011',
|
|
779
779
|
`STATE.md says current phase is ${statePhase} (status: ${statusVal || 'unknown'}) but ROADMAP.md shows it as [x] complete — state files may be out of sync`,
|
|
780
|
-
'Run /gsd
|
|
780
|
+
'Run /gsd-progress to re-derive current position, or manually update STATE.md');
|
|
781
781
|
}
|
|
782
782
|
}
|
|
783
783
|
}
|
|
@@ -831,21 +831,21 @@ function cmdValidateHealth(cwd, options, raw) {
|
|
|
831
831
|
case 'createConfig':
|
|
832
832
|
case 'resetConfig': {
|
|
833
833
|
const defaults = {
|
|
834
|
-
model_profile:
|
|
835
|
-
commit_docs:
|
|
836
|
-
search_gitignored:
|
|
837
|
-
branching_strategy:
|
|
838
|
-
phase_branch_template:
|
|
839
|
-
milestone_branch_template:
|
|
840
|
-
quick_branch_template:
|
|
834
|
+
model_profile: CONFIG_DEFAULTS.model_profile,
|
|
835
|
+
commit_docs: CONFIG_DEFAULTS.commit_docs,
|
|
836
|
+
search_gitignored: CONFIG_DEFAULTS.search_gitignored,
|
|
837
|
+
branching_strategy: CONFIG_DEFAULTS.branching_strategy,
|
|
838
|
+
phase_branch_template: CONFIG_DEFAULTS.phase_branch_template,
|
|
839
|
+
milestone_branch_template: CONFIG_DEFAULTS.milestone_branch_template,
|
|
840
|
+
quick_branch_template: CONFIG_DEFAULTS.quick_branch_template,
|
|
841
841
|
workflow: {
|
|
842
|
-
research:
|
|
843
|
-
plan_check:
|
|
844
|
-
verifier:
|
|
845
|
-
nyquist_validation:
|
|
842
|
+
research: CONFIG_DEFAULTS.research,
|
|
843
|
+
plan_check: CONFIG_DEFAULTS.plan_checker,
|
|
844
|
+
verifier: CONFIG_DEFAULTS.verifier,
|
|
845
|
+
nyquist_validation: CONFIG_DEFAULTS.nyquist_validation,
|
|
846
846
|
},
|
|
847
|
-
parallelization:
|
|
848
|
-
brave_search:
|
|
847
|
+
parallelization: CONFIG_DEFAULTS.parallelization,
|
|
848
|
+
brave_search: CONFIG_DEFAULTS.brave_search,
|
|
849
849
|
};
|
|
850
850
|
fs.writeFileSync(configPath, JSON.stringify(defaults, null, 2), 'utf-8');
|
|
851
851
|
repairActions.push({ action: repair, success: true, path: 'config.json' });
|