The /gsd-debug orchestrator handled the gsd-debug-session-manager return with only two literal-string checks (DEBUG SESSION COMPLETE, ABANDONED) and no else branch, so a usable-but-non-terminal progress summary (the manager's own turn/context budget exhausted mid-loop, with a valid on-disk checkpoint) fell through to the user as if the debug were complete. Same gap at the continue subcommand. Callee side (agents/gsd-debug-session-manager.md): add an explicit non-terminal CONTINUE_REQUIRED return marker, distinct from the two terminal shapes and from a genuine user-input checkpoint. Orchestrator (gsd-core/workflows/debug.md Sections 4 and 1c): classify returns exhaustively — recognized terminal markers behave as before, anything else is non-terminal and auto-resumes by re-spawning the session manager from the same slug/checkpoint. Anti-loop guard: after two consecutive no-progress resumes (unchanged next_action/updated), emit a blocker report instead of looping. Regression test (source-text contract guard, fix-2196 idiom) asserts both sections' non-terminal/auto-resume branch, the CONTINUE_REQUIRED marker, and the anti-loop bound. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
"gsd-code-fixer.md": 36640,
|
||||
"gsd-code-reviewer.md": 16870,
|
||||
"gsd-codebase-mapper.md": 21485,
|
||||
"gsd-debug-session-manager.md": 14203,
|
||||
"gsd-debug-session-manager.md": 15887,
|
||||
"gsd-debugger.md": 51354,
|
||||
"gsd-doc-classifier.md": 11717,
|
||||
"gsd-doc-synthesizer.md": 13154,
|
||||
|
||||
138
tests/fix-2257-debug-nonterminal-resume.test.cjs
Normal file
138
tests/fix-2257-debug-nonterminal-resume.test.cjs
Normal file
@@ -0,0 +1,138 @@
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* #2257: the /gsd-debug orchestrator had no contract for a foreground
|
||||
* gsd-debug-session-manager return that is usable but non-terminal. Section 4
|
||||
* "Session Management" (and the `continue` subcommand's return handling in
|
||||
* Section 1c) recognized only two literal-string returns — `DEBUG SESSION
|
||||
* COMPLETE` and `ABANDONED` — with no else branch. Any other return (e.g. a
|
||||
* mid-investigation progress summary emitted when the manager's own
|
||||
* turn/context budget runs out) matched neither and fell through to the user
|
||||
* as if the debug session were complete, silently abandoning the
|
||||
* investigation mid-flight.
|
||||
*
|
||||
* The fix defines an explicit non-terminal marker, `CONTINUE_REQUIRED`, that
|
||||
* the session manager emits when it must stop before reaching a terminal
|
||||
* state (distinct from the two terminal returns and from a genuine
|
||||
* user-input/approval `CHECKPOINT REACHED`, which already correctly pauses
|
||||
* via AskUserQuestion). The orchestrator treats anything that is not one of
|
||||
* the two terminal markers as non-terminal and auto-resumes by re-spawning
|
||||
* the session manager from the on-disk checkpoint, bounded by an anti-loop
|
||||
* guard.
|
||||
*
|
||||
* Correction (orthogonal review): the first cut of the anti-loop guard
|
||||
* required BOTH `next_action` AND `updated` to be unchanged across two
|
||||
* resumes to detect no-progress — but `agents/gsd-debugger.md` overwrites
|
||||
* `updated` on every checkpoint write ("Update the file BEFORE taking
|
||||
* action"), so `updated` changes every cycle and the AND-condition could
|
||||
* never be true, making the guard dead (unbounded auto-resume / DoS
|
||||
* regression). The corrected guard keys no-progress detection off
|
||||
* `next_action` ALONE and adds an absolute, content-independent hard cap of
|
||||
* 3 total auto-resumes per slug per `/gsd:debug` invocation as the real
|
||||
* termination bound.
|
||||
*
|
||||
* debug.md and gsd-debug-session-manager.md ARE the product the runtime
|
||||
* loads, so this asserts the deployed text carries the contract — the
|
||||
* sanctioned source-text/contract-guard idiom (see
|
||||
* tests/fix-2196-debug-agent-handoff.test.cjs).
|
||||
*/
|
||||
|
||||
const { describe, test } = require('node:test');
|
||||
const assert = require('node:assert/strict');
|
||||
const fs = require('node:fs');
|
||||
const path = require('node:path');
|
||||
|
||||
const DEBUG_MD = path.join(__dirname, '..', 'gsd-core', 'workflows', 'debug.md');
|
||||
const SESSION_MANAGER_MD = path.join(__dirname, '..', 'agents', 'gsd-debug-session-manager.md');
|
||||
|
||||
describe('#2257 debug non-terminal session-manager return contract', () => {
|
||||
// allow-test-rule: workflow/agent prose IS the runtime contract under test #2257
|
||||
const debugContent = fs.readFileSync(DEBUG_MD, 'utf-8');
|
||||
// allow-test-rule: workflow/agent prose IS the runtime contract under test #2257
|
||||
const managerContent = fs.readFileSync(SESSION_MANAGER_MD, 'utf-8');
|
||||
|
||||
const section4Start = debugContent.indexOf('## 4. Session Management');
|
||||
const section4 = section4Start !== -1 ? debugContent.slice(section4Start) : '';
|
||||
|
||||
const section1cStart = debugContent.indexOf('## 1c. CONTINUE subcommand');
|
||||
const section1dStart = debugContent.indexOf('## 1d. Check Active Sessions');
|
||||
const section1c =
|
||||
section1cStart !== -1 && section1dStart !== -1
|
||||
? debugContent.slice(section1cStart, section1dStart)
|
||||
: '';
|
||||
|
||||
test('debug.md has Section 4 (Session Management) and Section 1c (CONTINUE subcommand)', () => {
|
||||
assert.notEqual(section4Start, -1, 'debug.md must contain Section 4 Session Management');
|
||||
assert.notEqual(section1cStart, -1, 'debug.md must contain Section 1c CONTINUE subcommand');
|
||||
});
|
||||
|
||||
test('Section 4 has an exhaustive non-terminal branch that auto-resumes from the checkpoint', () => {
|
||||
assert.ok(/CONTINUE_REQUIRED/.test(section4),
|
||||
'Section 4 must reference the CONTINUE_REQUIRED non-terminal marker');
|
||||
assert.ok(/ANYTHING ELSE/i.test(section4),
|
||||
'Section 4 must exhaustively catch any return that is not one of the two terminal markers');
|
||||
assert.ok(/AUTO-RESUME/i.test(section4) && /re-spawning/i.test(section4),
|
||||
'Section 4 must auto-resume by re-spawning the session manager, not return control to the user');
|
||||
assert.ok(/same.{0,20}slug/i.test(section4),
|
||||
'Section 4 auto-resume must use the SAME slug/checkpoint as the original spawn');
|
||||
});
|
||||
|
||||
test('Section 1c has the same exhaustive non-terminal auto-resume branch (not just the two literals)', () => {
|
||||
assert.ok(/CONTINUE_REQUIRED/.test(section1c),
|
||||
'Section 1c must reference the CONTINUE_REQUIRED non-terminal marker');
|
||||
assert.ok(/ANYTHING ELSE/i.test(section1c),
|
||||
'Section 1c must exhaustively catch any return that is not one of the two terminal markers');
|
||||
assert.ok(/AUTO-RESUME/i.test(section1c) && /re-spawning/i.test(section1c),
|
||||
'Section 1c must auto-resume by re-spawning the session manager, not return control to the user');
|
||||
assert.ok(/same.{0,20}slug/i.test(section1c),
|
||||
'Section 1c auto-resume must use the SAME slug/checkpoint as the original spawn (symmetric with Section 4)');
|
||||
});
|
||||
|
||||
test('gsd-debug-session-manager.md defines CONTINUE_REQUIRED distinct from the two terminal formats', () => {
|
||||
assert.ok(/## CONTINUE_REQUIRED/.test(managerContent),
|
||||
'the agent must define an explicit ## CONTINUE_REQUIRED return heading');
|
||||
assert.ok(/## DEBUG SESSION COMPLETE/.test(managerContent),
|
||||
'the terminal DEBUG SESSION COMPLETE format must still be present');
|
||||
assert.ok(/ABANDONED/.test(managerContent),
|
||||
'the terminal ABANDONED format must still be present');
|
||||
assert.ok(/non-terminal/i.test(managerContent),
|
||||
'the agent must characterize CONTINUE_REQUIRED as non-terminal');
|
||||
assert.ok(/CHECKPOINT REACHED/.test(managerContent) && /distinct from/i.test(managerContent),
|
||||
'CONTINUE_REQUIRED must be explicitly distinguished from the genuine user-input CHECKPOINT REACHED shape');
|
||||
assert.ok(/\.planning\/debug\/\{slug\}\.md/.test(managerContent),
|
||||
'CONTINUE_REQUIRED must reference the on-disk checkpoint path');
|
||||
assert.ok(/next_action/.test(managerContent) && /status/.test(managerContent),
|
||||
'CONTINUE_REQUIRED must reference the checkpoint status/next_action fields');
|
||||
});
|
||||
|
||||
test('an anti-loop bound exists so repeated no-progress auto-resumes do not loop indefinitely', () => {
|
||||
assert.ok(/anti-loop guard/i.test(section4),
|
||||
'Section 4 must name an anti-loop guard');
|
||||
assert.ok(/blocker report/i.test(section4),
|
||||
'Section 4 must emit a blocker report to the user once the bound is exceeded, instead of looping forever');
|
||||
|
||||
assert.ok(/anti-loop guard/i.test(section1c),
|
||||
'Section 1c must name an anti-loop guard');
|
||||
});
|
||||
|
||||
test('the anti-loop guard has an absolute hard cap independent of no-progress detection (#2257 correction)', () => {
|
||||
for (const [label, section] of [['Section 4', section4], ['Section 1c', section1c]]) {
|
||||
assert.ok(/hard cap/i.test(section), `${label} must name an absolute hard cap`);
|
||||
assert.ok(/\b3\b/.test(section) && /total auto-resumes/i.test(section),
|
||||
`${label} must encode a concrete numeric cap of 3 total auto-resumes`);
|
||||
assert.ok(/regardless/i.test(section),
|
||||
`${label} hard cap must trip regardless of whether next_action changed (content-independent)`);
|
||||
}
|
||||
});
|
||||
|
||||
test('no-progress detection keys off next_action alone, never the always-changing updated timestamp (#2257 correction)', () => {
|
||||
for (const [label, section] of [['Section 4', section4], ['Section 1c', section1c]]) {
|
||||
assert.ok(/next_action/.test(section),
|
||||
`${label} no-progress heuristic must reference next_action`);
|
||||
assert.ok(/(do not|never).{0,40}updated/i.test(section),
|
||||
`${label} must explicitly forbid keying no-progress detection off updated`);
|
||||
assert.ok(/changes every cycle/i.test(section),
|
||||
`${label} must state WHY updated cannot be used: it is overwritten/changes every checkpoint cycle`);
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -7,7 +7,7 @@
|
||||
"agents/gsd-code-fixer.md": "6937a1f20beaa1c6",
|
||||
"agents/gsd-code-reviewer.md": "a700d295bbf110a9",
|
||||
"agents/gsd-codebase-mapper.md": "afdae82284cb21b4",
|
||||
"agents/gsd-debug-session-manager.md": "5ea82765fc041ad7",
|
||||
"agents/gsd-debug-session-manager.md": "a2ca059d2ebf0858",
|
||||
"agents/gsd-debugger.md": "7439166a1770521c",
|
||||
"agents/gsd-doc-classifier.md": "fca19595590391df",
|
||||
"agents/gsd-doc-synthesizer.md": "0e5184bbcf0dca02",
|
||||
@@ -211,7 +211,7 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "60640e633b0a124b",
|
||||
"gsd-core/workflows/code-review.md": "5c40505c01871153",
|
||||
"gsd-core/workflows/complete-milestone.md": "aaf272074acec69d",
|
||||
"gsd-core/workflows/debug.md": "af2d1ae03b24fc71",
|
||||
"gsd-core/workflows/debug.md": "0b802b267d0ca2d1",
|
||||
"gsd-core/workflows/diagnose-issues.md": "c8c41993c277363c",
|
||||
"gsd-core/workflows/discovery-phase.md": "3de990caffdde4f8",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "8581fd77def7ce84",
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"agents/gsd-code-fixer.md": "68b2d2faccfdd8a3",
|
||||
"agents/gsd-code-reviewer.md": "bc8a6f2e1f787ff5",
|
||||
"agents/gsd-codebase-mapper.md": "85ea778ad9cf7e66",
|
||||
"agents/gsd-debug-session-manager.md": "0d388fcee3eba770",
|
||||
"agents/gsd-debug-session-manager.md": "cf7f235f6d32c0b9",
|
||||
"agents/gsd-debugger.md": "2c8234c76c5d15c1",
|
||||
"agents/gsd-doc-classifier.md": "262a94b947a4e2aa",
|
||||
"agents/gsd-doc-synthesizer.md": "01f90ea9b0d05d7d",
|
||||
@@ -282,7 +282,7 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "2e113d1f4350a075",
|
||||
"gsd-core/workflows/code-review.md": "334c90c401f291f8",
|
||||
"gsd-core/workflows/complete-milestone.md": "c1f91b77f4ace7f2",
|
||||
"gsd-core/workflows/debug.md": "c581e89aa9d9d71e",
|
||||
"gsd-core/workflows/debug.md": "98c8ed5af882ef8f",
|
||||
"gsd-core/workflows/diagnose-issues.md": "6cc3900891dfb927",
|
||||
"gsd-core/workflows/discovery-phase.md": "3ba7cfb89fb1e761",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "f5b765d33eba4f88",
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"agents/gsd-code-fixer.md": "c6148e5511d02459",
|
||||
"agents/gsd-code-reviewer.md": "e2c45baa8c0b5f6d",
|
||||
"agents/gsd-codebase-mapper.md": "f96958e5f85b93fb",
|
||||
"agents/gsd-debug-session-manager.md": "ec9ca0011a1aab75",
|
||||
"agents/gsd-debug-session-manager.md": "368d88502df7ac5f",
|
||||
"agents/gsd-debugger.md": "9f35a91f8b3a918e",
|
||||
"agents/gsd-doc-classifier.md": "a76778bdde1c7f72",
|
||||
"agents/gsd-doc-synthesizer.md": "8b0b6fc187c9d353",
|
||||
@@ -281,7 +281,7 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "78c716068ccdf820",
|
||||
"gsd-core/workflows/code-review.md": "2d21452eb0449fdd",
|
||||
"gsd-core/workflows/complete-milestone.md": "9962377cddee50d7",
|
||||
"gsd-core/workflows/debug.md": "18c97b804f2dd5dd",
|
||||
"gsd-core/workflows/debug.md": "80c413b3a9877433",
|
||||
"gsd-core/workflows/diagnose-issues.md": "db6a599674efbc4d",
|
||||
"gsd-core/workflows/discovery-phase.md": "a20dfb32adec51de",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "35a3b2d1285565d8",
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"agents/gsd-code-fixer.md": "3d5f67cfd24ac452",
|
||||
"agents/gsd-code-reviewer.md": "d626a828e8de3648",
|
||||
"agents/gsd-codebase-mapper.md": "8c2e9f2ce3aedf78",
|
||||
"agents/gsd-debug-session-manager.md": "767c0f43d47e89ad",
|
||||
"agents/gsd-debug-session-manager.md": "93bbc34d0d1cfdef",
|
||||
"agents/gsd-debugger.md": "4d8a618121c8056a",
|
||||
"agents/gsd-doc-classifier.md": "a636ae9594b25770",
|
||||
"agents/gsd-doc-synthesizer.md": "dfb95eedfb3789bf",
|
||||
@@ -210,7 +210,7 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "722416b71b31c5fc",
|
||||
"gsd-core/workflows/code-review.md": "506412604f767adc",
|
||||
"gsd-core/workflows/complete-milestone.md": "dcf1182398efb1ca",
|
||||
"gsd-core/workflows/debug.md": "7183935f8e145a01",
|
||||
"gsd-core/workflows/debug.md": "b4c658c9608d08e2",
|
||||
"gsd-core/workflows/diagnose-issues.md": "75ffc381ac3059ff",
|
||||
"gsd-core/workflows/discovery-phase.md": "6161c60d752d0058",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "a8cd1db094fefd35",
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
"agents/gsd-code-fixer.md": "6aa74a2fb2ad244a",
|
||||
"agents/gsd-code-reviewer.md": "e5ec12d4d409e800",
|
||||
"agents/gsd-codebase-mapper.md": "e5b7941bdda53c91",
|
||||
"agents/gsd-debug-session-manager.md": "a9d4e43e4d2e327a",
|
||||
"agents/gsd-debug-session-manager.md": "60f3b42d4aa7f90f",
|
||||
"agents/gsd-debugger.md": "b1f3af91f0e651c8",
|
||||
"agents/gsd-doc-classifier.md": "5011d7358d2b2848",
|
||||
"agents/gsd-doc-synthesizer.md": "e59cdd669876582d",
|
||||
@@ -214,7 +214,7 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "e4549af672e74e6f",
|
||||
"gsd-core/workflows/code-review.md": "a65e3e869508f89e",
|
||||
"gsd-core/workflows/complete-milestone.md": "c0808127038a8f86",
|
||||
"gsd-core/workflows/debug.md": "337fc2076e7fc449",
|
||||
"gsd-core/workflows/debug.md": "870682af53182a6c",
|
||||
"gsd-core/workflows/diagnose-issues.md": "e616d0d730328d68",
|
||||
"gsd-core/workflows/discovery-phase.md": "3ba7cfb89fb1e761",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "9efcb2ef6a9245b3",
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"agents/gsd-code-fixer.md": "1cf3a9fdade9a470",
|
||||
"agents/gsd-code-reviewer.md": "5342fcc0da974696",
|
||||
"agents/gsd-codebase-mapper.md": "b995bf01af0193d2",
|
||||
"agents/gsd-debug-session-manager.md": "a5649998f68812d5",
|
||||
"agents/gsd-debug-session-manager.md": "a13fdb7f466dd5ff",
|
||||
"agents/gsd-debugger.md": "a63306f54bdc63bf",
|
||||
"agents/gsd-doc-classifier.md": "c2bf59af9467810b",
|
||||
"agents/gsd-doc-synthesizer.md": "b2a179bf3c9bd636",
|
||||
@@ -282,7 +282,7 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "2e113d1f4350a075",
|
||||
"gsd-core/workflows/code-review.md": "334c90c401f291f8",
|
||||
"gsd-core/workflows/complete-milestone.md": "c1f91b77f4ace7f2",
|
||||
"gsd-core/workflows/debug.md": "c581e89aa9d9d71e",
|
||||
"gsd-core/workflows/debug.md": "98c8ed5af882ef8f",
|
||||
"gsd-core/workflows/diagnose-issues.md": "77d98ac07c4a26ff",
|
||||
"gsd-core/workflows/discovery-phase.md": "3ba7cfb89fb1e761",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "f5b765d33eba4f88",
|
||||
|
||||
@@ -84,8 +84,8 @@
|
||||
"agents/gsd-code-reviewer.toml": "66420d6e6ffd14eb",
|
||||
"agents/gsd-codebase-mapper.md": "cf8f8550b44aec35",
|
||||
"agents/gsd-codebase-mapper.toml": "a4609f3ac66c2081",
|
||||
"agents/gsd-debug-session-manager.md": "3d4779f94c6cfb14",
|
||||
"agents/gsd-debug-session-manager.toml": "c8d894c734e97256",
|
||||
"agents/gsd-debug-session-manager.md": "22afb03c62b19298",
|
||||
"agents/gsd-debug-session-manager.toml": "6abd110e0c7f62d1",
|
||||
"agents/gsd-debugger.md": "cb8a103ed221ca7c",
|
||||
"agents/gsd-debugger.toml": "b31333b83a8fed0a",
|
||||
"agents/gsd-doc-classifier.md": "2745bc04d7b93666",
|
||||
@@ -317,7 +317,7 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "ae7f9c6b39a23c12",
|
||||
"gsd-core/workflows/code-review.md": "eadada9e0a89adf2",
|
||||
"gsd-core/workflows/complete-milestone.md": "017df7443bd08da5",
|
||||
"gsd-core/workflows/debug.md": "7c3b407470762585",
|
||||
"gsd-core/workflows/debug.md": "63691293c0bc0294",
|
||||
"gsd-core/workflows/diagnose-issues.md": "e38bb21d06dff077",
|
||||
"gsd-core/workflows/discovery-phase.md": "71a4b78ff876a854",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "0d936ec25299917c",
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"agents/gsd-code-fixer.agent.md": "8f39aacb760aab57",
|
||||
"agents/gsd-code-reviewer.agent.md": "fa1e7c421c78eae1",
|
||||
"agents/gsd-codebase-mapper.agent.md": "949bc73f2a7ea44d",
|
||||
"agents/gsd-debug-session-manager.agent.md": "558683230ba311ba",
|
||||
"agents/gsd-debug-session-manager.agent.md": "b34b7d3f7e7035ca",
|
||||
"agents/gsd-debugger.agent.md": "d31e32f73cd1e0dc",
|
||||
"agents/gsd-doc-classifier.agent.md": "aea81c0ba00e06cf",
|
||||
"agents/gsd-doc-synthesizer.agent.md": "6ae32e4db005696d",
|
||||
@@ -212,7 +212,7 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "fda53892ae4b17fc",
|
||||
"gsd-core/workflows/code-review.md": "f1c045ec4d33abc8",
|
||||
"gsd-core/workflows/complete-milestone.md": "470cf39261400ee2",
|
||||
"gsd-core/workflows/debug.md": "505ed67d48b1fa9d",
|
||||
"gsd-core/workflows/debug.md": "37c900b9f6c11663",
|
||||
"gsd-core/workflows/diagnose-issues.md": "42acbe2a43fc886e",
|
||||
"gsd-core/workflows/discovery-phase.md": "8e99da61fb2b7074",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "ab0c432b84038681",
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"agents/gsd-code-fixer.md": "76085f4442f268e6",
|
||||
"agents/gsd-code-reviewer.md": "f29d6edbac0a01b6",
|
||||
"agents/gsd-codebase-mapper.md": "d49c91fdab4efc70",
|
||||
"agents/gsd-debug-session-manager.md": "d6e799fdeb1fadde",
|
||||
"agents/gsd-debug-session-manager.md": "284d49a7fbe4a040",
|
||||
"agents/gsd-debugger.md": "79bccf33fa2b4272",
|
||||
"agents/gsd-doc-classifier.md": "a6ab02b8f45f9d0b",
|
||||
"agents/gsd-doc-synthesizer.md": "fd3c18addbc8265d",
|
||||
@@ -282,7 +282,7 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "c57af378033b1b58",
|
||||
"gsd-core/workflows/code-review.md": "32c37bcbec8b8698",
|
||||
"gsd-core/workflows/complete-milestone.md": "1400a4856f592f3e",
|
||||
"gsd-core/workflows/debug.md": "c02dec84c8a346b9",
|
||||
"gsd-core/workflows/debug.md": "fb9e5ecb5027b98e",
|
||||
"gsd-core/workflows/diagnose-issues.md": "cd582747131726e3",
|
||||
"gsd-core/workflows/discovery-phase.md": "7dcf150998559c11",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "c25c6a6c633d71b6",
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"agents/gsd-code-fixer.md": "94628312f25decb5",
|
||||
"agents/gsd-code-reviewer.md": "5ef947ca5baed775",
|
||||
"agents/gsd-codebase-mapper.md": "feccaeeacd05e34b",
|
||||
"agents/gsd-debug-session-manager.md": "e0bdc1947db579c4",
|
||||
"agents/gsd-debug-session-manager.md": "ac81c11d0fd3292a",
|
||||
"agents/gsd-debugger.md": "ec4f796f5c39504a",
|
||||
"agents/gsd-doc-classifier.md": "29b563a146c9d22c",
|
||||
"agents/gsd-doc-synthesizer.md": "652beb928e93fa1d",
|
||||
@@ -211,7 +211,7 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "e829d3baf9901b54",
|
||||
"gsd-core/workflows/code-review.md": "50a05ab8957bd05f",
|
||||
"gsd-core/workflows/complete-milestone.md": "f1866541148dc291",
|
||||
"gsd-core/workflows/debug.md": "639348c8657e7147",
|
||||
"gsd-core/workflows/debug.md": "0289d3caa7252779",
|
||||
"gsd-core/workflows/diagnose-issues.md": "16f2d2a85335641f",
|
||||
"gsd-core/workflows/discovery-phase.md": "6161c60d752d0058",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "3a1e215890d2b3f4",
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"agents/gsd-code-fixer.md": "9652d5b56a2afbf5",
|
||||
"agents/gsd-code-reviewer.md": "922c08885bc78662",
|
||||
"agents/gsd-codebase-mapper.md": "0ccbf6a685804979",
|
||||
"agents/gsd-debug-session-manager.md": "828335b15a46b324",
|
||||
"agents/gsd-debug-session-manager.md": "56719239e1e06145",
|
||||
"agents/gsd-debugger.md": "b59cda547363e617",
|
||||
"agents/gsd-doc-classifier.md": "6256bbc0b887f60f",
|
||||
"agents/gsd-doc-synthesizer.md": "212aaf89a34b51d7",
|
||||
@@ -282,7 +282,7 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "722416b71b31c5fc",
|
||||
"gsd-core/workflows/code-review.md": "506412604f767adc",
|
||||
"gsd-core/workflows/complete-milestone.md": "59753bf44d4300da",
|
||||
"gsd-core/workflows/debug.md": "28c964bceb6f03af",
|
||||
"gsd-core/workflows/debug.md": "e88c2d430c3625b6",
|
||||
"gsd-core/workflows/diagnose-issues.md": "210b5b313e8a559a",
|
||||
"gsd-core/workflows/discovery-phase.md": "ca7b2be46e59e862",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "3ef1df313e715387",
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
"agents/subagents/gsd-code-reviewer.yaml": "5f2398f56018f50d",
|
||||
"agents/subagents/gsd-codebase-mapper.md": "04c7528a13fa3de7",
|
||||
"agents/subagents/gsd-codebase-mapper.yaml": "bce1c6d15f55c477",
|
||||
"agents/subagents/gsd-debug-session-manager.md": "be5653e631bbd006",
|
||||
"agents/subagents/gsd-debug-session-manager.md": "feb32f5c184db47b",
|
||||
"agents/subagents/gsd-debug-session-manager.yaml": "aab147717b5082e7",
|
||||
"agents/subagents/gsd-debugger.md": "528ad732ccff4485",
|
||||
"agents/subagents/gsd-debugger.yaml": "6d02d7feb90cad43",
|
||||
@@ -275,7 +275,7 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "2e113d1f4350a075",
|
||||
"gsd-core/workflows/code-review.md": "334c90c401f291f8",
|
||||
"gsd-core/workflows/complete-milestone.md": "c1f91b77f4ace7f2",
|
||||
"gsd-core/workflows/debug.md": "c581e89aa9d9d71e",
|
||||
"gsd-core/workflows/debug.md": "98c8ed5af882ef8f",
|
||||
"gsd-core/workflows/diagnose-issues.md": "67c058fc7ae6026b",
|
||||
"gsd-core/workflows/discovery-phase.md": "3ba7cfb89fb1e761",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "f5b765d33eba4f88",
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"agents/gsd-code-fixer.md": "3622ae5d90fb15f6",
|
||||
"agents/gsd-code-reviewer.md": "2249774416314c57",
|
||||
"agents/gsd-codebase-mapper.md": "948612acd505e87f",
|
||||
"agents/gsd-debug-session-manager.md": "0a0483c6470df4d1",
|
||||
"agents/gsd-debug-session-manager.md": "373b4c83cc19595d",
|
||||
"agents/gsd-debugger.md": "a83427bd5a0406fc",
|
||||
"agents/gsd-doc-classifier.md": "fb776cfbb7e991b0",
|
||||
"agents/gsd-doc-synthesizer.md": "2389f388d291c2eb",
|
||||
@@ -282,7 +282,7 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "adb9388bb157610c",
|
||||
"gsd-core/workflows/code-review.md": "ae6bcbd1575aeec4",
|
||||
"gsd-core/workflows/complete-milestone.md": "614299b2c08e66c3",
|
||||
"gsd-core/workflows/debug.md": "437b47e14eba8786",
|
||||
"gsd-core/workflows/debug.md": "161be2a77ffce47a",
|
||||
"gsd-core/workflows/diagnose-issues.md": "2971c699d52f1b85",
|
||||
"gsd-core/workflows/discovery-phase.md": "724408336596c50c",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "92e43cd12200c610",
|
||||
|
||||
2
tests/fixtures/golden-install-parity/pi.json
vendored
2
tests/fixtures/golden-install-parity/pi.json
vendored
@@ -178,7 +178,7 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "2e113d1f4350a075",
|
||||
"gsd-core/workflows/code-review.md": "334c90c401f291f8",
|
||||
"gsd-core/workflows/complete-milestone.md": "c1f91b77f4ace7f2",
|
||||
"gsd-core/workflows/debug.md": "c581e89aa9d9d71e",
|
||||
"gsd-core/workflows/debug.md": "98c8ed5af882ef8f",
|
||||
"gsd-core/workflows/diagnose-issues.md": "d6d978fddfd5da8d",
|
||||
"gsd-core/workflows/discovery-phase.md": "3ba7cfb89fb1e761",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "f5b765d33eba4f88",
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"agents/gsd-code-fixer.md": "3ed1a27ddc372ef8",
|
||||
"agents/gsd-code-reviewer.md": "27eeeee6cb600e9b",
|
||||
"agents/gsd-codebase-mapper.md": "032ff8ac55466a74",
|
||||
"agents/gsd-debug-session-manager.md": "9f64af6513b8ec9e",
|
||||
"agents/gsd-debug-session-manager.md": "72e3f4c60d282873",
|
||||
"agents/gsd-debugger.md": "d0a1e6a1b1cfd9e6",
|
||||
"agents/gsd-doc-classifier.md": "bdf3d54082424e76",
|
||||
"agents/gsd-doc-synthesizer.md": "96c383b74a60fbbe",
|
||||
@@ -211,7 +211,7 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "f3725ae9d685bed2",
|
||||
"gsd-core/workflows/code-review.md": "29125604bed2c467",
|
||||
"gsd-core/workflows/complete-milestone.md": "40085d32b15805c8",
|
||||
"gsd-core/workflows/debug.md": "a4e4c2f6d004460e",
|
||||
"gsd-core/workflows/debug.md": "09b6bad63939bb82",
|
||||
"gsd-core/workflows/diagnose-issues.md": "652ae26975f82242",
|
||||
"gsd-core/workflows/discovery-phase.md": "6161c60d752d0058",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "18712f78bb960ec8",
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"agents/gsd-code-fixer.md": "5fe29063843be67e",
|
||||
"agents/gsd-code-reviewer.md": "338c46ab59c4e45f",
|
||||
"agents/gsd-codebase-mapper.md": "8529d8a1ede8bbfb",
|
||||
"agents/gsd-debug-session-manager.md": "69aa7eae3a23f6a9",
|
||||
"agents/gsd-debug-session-manager.md": "1519818b8efb2385",
|
||||
"agents/gsd-debugger.md": "704eb4e94b4d1212",
|
||||
"agents/gsd-doc-classifier.md": "a6ab02b8f45f9d0b",
|
||||
"agents/gsd-doc-synthesizer.md": "fd3c18addbc8265d",
|
||||
@@ -211,7 +211,7 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "f2761f7f8c4a5674",
|
||||
"gsd-core/workflows/code-review.md": "47663a2922756c5e",
|
||||
"gsd-core/workflows/complete-milestone.md": "6e918b72bd885426",
|
||||
"gsd-core/workflows/debug.md": "7783c3cb81fef70d",
|
||||
"gsd-core/workflows/debug.md": "04b29e0ba18603b6",
|
||||
"gsd-core/workflows/diagnose-issues.md": "9274b11a3db98c65",
|
||||
"gsd-core/workflows/discovery-phase.md": "b32b6197b66c9a13",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "e376b1cf29379df4",
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"agents/gsd-code-fixer.md": "f00d815ec535a168",
|
||||
"agents/gsd-code-reviewer.md": "efc0d2dee321c654",
|
||||
"agents/gsd-codebase-mapper.md": "cfa2bbfaf264e1fd",
|
||||
"agents/gsd-debug-session-manager.md": "793d9a80778d1080",
|
||||
"agents/gsd-debug-session-manager.md": "a31a327a82f37af1",
|
||||
"agents/gsd-debugger.md": "6b28c99a37402200",
|
||||
"agents/gsd-doc-classifier.md": "a6ab02b8f45f9d0b",
|
||||
"agents/gsd-doc-synthesizer.md": "fd3c18addbc8265d",
|
||||
@@ -211,7 +211,7 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "b99b1f20bb27c291",
|
||||
"gsd-core/workflows/code-review.md": "faa87faf07ae765a",
|
||||
"gsd-core/workflows/complete-milestone.md": "f463bf4e86ac26f6",
|
||||
"gsd-core/workflows/debug.md": "d0ee63e547f4d997",
|
||||
"gsd-core/workflows/debug.md": "830c309b48c35c8c",
|
||||
"gsd-core/workflows/diagnose-issues.md": "447072aa72385271",
|
||||
"gsd-core/workflows/discovery-phase.md": "7dcf150998559c11",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "b091b3d3e580dd29",
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"agents/gsd-code-fixer.md": "78549833f0411b0c",
|
||||
"agents/gsd-code-reviewer.md": "7d94fe8bfa6661aa",
|
||||
"agents/gsd-codebase-mapper.md": "7cc9d387f29c46e1",
|
||||
"agents/gsd-debug-session-manager.md": "30651d0b4a465263",
|
||||
"agents/gsd-debug-session-manager.md": "4d3b1d31c6242e3a",
|
||||
"agents/gsd-debugger.md": "fc76a617817be610",
|
||||
"agents/gsd-doc-classifier.md": "146acf4d176134b5",
|
||||
"agents/gsd-doc-synthesizer.md": "b1f5e2eb28fa3659",
|
||||
@@ -282,7 +282,7 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "2e113d1f4350a075",
|
||||
"gsd-core/workflows/code-review.md": "334c90c401f291f8",
|
||||
"gsd-core/workflows/complete-milestone.md": "c1f91b77f4ace7f2",
|
||||
"gsd-core/workflows/debug.md": "c581e89aa9d9d71e",
|
||||
"gsd-core/workflows/debug.md": "98c8ed5af882ef8f",
|
||||
"gsd-core/workflows/diagnose-issues.md": "aa8d787db8f3c46c",
|
||||
"gsd-core/workflows/discovery-phase.md": "3ba7cfb89fb1e761",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "f5b765d33eba4f88",
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
"code-review-fix.md": 24320,
|
||||
"code-review.md": 31916,
|
||||
"complete-milestone.md": 31071,
|
||||
"debug.md": 14241,
|
||||
"debug.md": 19031,
|
||||
"diagnose-issues.md": 12864,
|
||||
"discovery-phase.md": 8651,
|
||||
"discuss-phase-assumptions.md": 27302,
|
||||
|
||||
Reference in New Issue
Block a user