feat(#1963): emit blameless-postmortem Prevention block at resolution (#2410)

* test(#1963): add failing-first prevention/postmortem contract tests

Epic #1957 Phase 3B. Source-text-is-the-product contract tests: blameless
5-Whys that BRANCHES per Phase 2A RCA (not a single-cause chain; treats agent
error as 'why was that possible?'), the 'why wasn't this caught?' question,
the recurrence-guard taxonomy (regression test / assertion / lint rule / KB
pattern), the KB-entry why_not_caught + recurrence_guard fields with backward
compat, the session-manager prevention summary line, and the Zawinski
scope-boundary (a block, not a subsystem).

Failing-first: reference, archive_session edit, KB schema extension, and
session-manager summary do not yet exist.

* feat(#1963): emit blameless-postmortem Prevention block at resolution

Epic #1957 Phase 3B. At archive_session the debugger now produces a
Prevention block with three blame-free components: a branching 5-Whys causal
chain (branches per Phase 2A RCA, not a single chain; 'agent error' prompts
'why was that possible?', never blame), a 'why wasn't this caught?' answer
naming the missed gate (test/typecheck/lint/review/verify), and a concrete
recurrence guard (regression test / assertion / lint rule / KB pattern).

The knowledge-base entry gains two structured fields (why_not_caught +
recurrence_guard) so future Phase-0 recall surfaces the prior prevention, not
just the prior fix. Additive: old entries without the fields still load. The
session-manager compact summary surfaces a one-line prevention summary.

Full rules extracted to gsd-core/references/debugger-prevention.md (slim
archive_session step + 2 KB fields kept in the agent). INVENTORY + manifest +
agent-size baseline + install-parity goldens + AGENTS.md updated.

* fix(#1963): address orthogonal review (CRITICAL append-template drift + Phase-0 consumption + parity test)

- CRITICAL: the archive_session KB append template omitted Why not caught +
  Recurrence guard (only the Entry Format had them) — the feature's core
  deliverable silently did not happen. Added both fields to the append template
  the agent actually follows (nearest-instruction wins).
- HIGH: Phase 0 (KB read) only surfaced root_cause + fix; the new fields were
  dead data. Extended the Phase 0 Evidence line to consume why_not_caught +
  recurrence_guard when present (absent on old entries — backward compat holds).
- MEDIUM: added a cross-section parity test (every Entry-Format field must also
  appear in the append template — the guard that would have caught the
  Critical) + a Phase-0-consumption assertion.
- MEDIUM: the 'branches per Phase 2A' claim is now wired — reuses
  reasoning_checkpoint.candidate_causes across the four categories.
- MEDIUM: recurrence-guard taxonomy gains type refinement + config-default
  change; LOW: added 'build' gate to both surfaces for parity.
- NIT: compact-summary fallback shape ('no gate existed'); verify the guard
  artifact exists before recording it.

* test(#1963): anchor Phase-0 consumption test on the specific heading

The regex /Phase 0[\s\S]{0,1200}/ matched the first 'Phase 0' in the file
(in knowledge_base_protocol prose), not the Phase 0 block in investigation_loop.
Anchor on '**Phase 0: Check knowledge base**' and widen to 1500 chars.

* chore(#1963): backfill changeset pr number (PR #2410)
This commit is contained in:
Tom Boucher
2026-07-18 17:38:54 -04:00
committed by GitHub
parent 36a311c5bb
commit c67f301867
45 changed files with 311 additions and 41 deletions

View File

@@ -5,8 +5,8 @@
"gsd-code-fixer.md": 36640,
"gsd-code-reviewer.md": 16870,
"gsd-codebase-mapper.md": 21485,
"gsd-debug-session-manager.md": 17012,
"gsd-debugger.md": 55758,
"gsd-debug-session-manager.md": 17161,
"gsd-debugger.md": 56835,
"gsd-doc-classifier.md": 11717,
"gsd-doc-synthesizer.md": 13154,
"gsd-doc-verifier.md": 12403,

View File

@@ -0,0 +1,119 @@
// allow-test-rule: source-text-is-the-product (see #1963)
// Agent .md + reference .md files — their text IS what the runtime loads.
// Testing text content tests the deployed prevention/postmortem contract.
// Per CONTRIBUTING.md exception matrix. Covers epic #1957 Phase 3B (#1963).
'use strict';
const { describe, test } = require('node:test');
const assert = require('node:assert/strict');
const fs = require('node:fs');
const path = require('node:path');
const ROOT = process.cwd();
const AGENT = path.join(ROOT, 'agents/gsd-debugger.md');
const SESSION_MGR = path.join(ROOT, 'agents/gsd-debug-session-manager.md');
const REFERENCE = path.join(ROOT, 'gsd-core/references/debugger-prevention.md');
describe('prevention / blameless-postmortem output (#1963, epic #1957 Phase 3B)', () => {
describe('reference extract exists and is wired into archive_session', () => {
test('gsd-core/references/debugger-prevention.md exists', () => {
assert.ok(fs.existsSync(REFERENCE), 'debugger-prevention.md reference must exist');
});
test('gsd-debugger.md @-includes the prevention reference', () => {
const content = fs.readFileSync(AGENT, 'utf8');
assert.ok(
content.includes('@~/.claude/gsd-core/references/debugger-prevention.md'),
'gsd-debugger.md must @-include the prevention reference from archive_session'
);
});
});
describe('the Prevention block has three blame-free components (criterion 1)', () => {
test('reference documents a blameless 5-Whys causal chain', () => {
const content = fs.readFileSync(REFERENCE, 'utf8');
assert.ok(/5-?\s*whys|five whys|causal chain/i.test(content), 'must document a 5-Whys causal chain');
assert.ok(/blame|blameless|blame-free/i.test(content), 'must state the chain is blame-free/blameless');
});
test('the 5-Whys branches per RCA (Phase 2A), not a single-cause chain', () => {
const content = fs.readFileSync(REFERENCE, 'utf8');
assert.ok(/branch/i.test(content), 'the postmortem must branch (not chain) per the Phase 2A RCA discipline');
assert.ok(/single[\s-]?cause|agent error|why was that (?:error|possible)/i.test(content),
'must treat "agent error" as a prompt for "why was that error possible?" (blame-free), not a terminal cause');
});
test('reference documents the "why wasn\'t this caught?" question', () => {
const content = fs.readFileSync(REFERENCE, 'utf8');
assert.ok(/why (?:wasn'?t|was not|didn'?t).*(?:caught|prevent)/i.test(content) || /why[\s-]?not[\s-]?caught/i.test(content),
'must document the "why wasn\'t this caught?" question (which existing gate missed it)');
});
test('reference documents the recurrence-guard taxonomy', () => {
const content = fs.readFileSync(REFERENCE, 'utf8');
assert.ok(/recurrence guard|recurrence-guard/i.test(content), 'must name the recurrence guard');
// The concrete artifact options from the issue
assert.ok(/regression test/i.test(content), 'guard option: regression test');
assert.ok(/lint rule|assertion|precondition/i.test(content), 'guard option: lint rule / assertion / precondition');
});
});
describe('knowledge-base entry stores the prevention fields (criterion 2)', () => {
test('KB entry format in gsd-debugger.md includes why_not_caught + recurrence_guard', () => {
const content = fs.readFileSync(AGENT, 'utf8');
assert.ok(/why.not.caught/i.test(content), 'KB entry format must include a why_not_caught field');
assert.ok(/recurrence.guard/i.test(content), 'KB entry format must include a recurrence_guard field');
});
test('reference documents backward compatibility (old entries without the fields still load)', () => {
const content = fs.readFileSync(REFERENCE, 'utf8');
assert.ok(/backward|back.compat|old entries|without.*fields.*load|absent.*field/i.test(content),
'must document that old KB entries without the new fields still load (additive, no format break)');
});
});
describe('session-manager compact return surfaces the prevention summary (criterion 3)', () => {
test('gsd-debug-session-manager.md compact summary includes a prevention line', () => {
const content = fs.readFileSync(SESSION_MGR, 'utf8');
assert.ok(/prevention|recurrence guard|why not caught/i.test(content),
'session-manager compact summary must surface the prevention summary (recurrence guard / why-not-caught)');
});
});
describe('scope boundary (Zawinski) — a block, not an incident-management subsystem', () => {
test('reference states the prevention block reuses existing structures and adds no subsystem', () => {
const content = fs.readFileSync(REFERENCE, 'utf8');
assert.ok(/reuse|existing|no(?:t| new).*(?:subsystem|framework|command)|block, not/i.test(content),
'must state the prevention block reuses the existing debug file + knowledge base (no new subsystem)');
});
});
describe('cross-section parity (guards the Critical: Entry-Format fields must also appear in the archive append template)', () => {
test('every Entry-Format KB field appears in the archive_session append template', () => {
// DEFECT.GENERATIVE-FIX guard: the <knowledge_base_protocol> Entry Format
// and the archive_session append template are two parallel surfaces that
// must agree. A field declared in one but not the other is dead data.
const content = fs.readFileSync(AGENT, 'utf8');
const requiredFields = ['Date', 'Error patterns', 'Root cause', 'Fix', 'Files changed', 'Why not caught', 'Recurrence guard'];
for (const field of requiredFields) {
const re = new RegExp(`\\*\\*${field}`, 'i');
const matches = content.match(new RegExp(`\\*\\*${field}`, 'gi'));
assert.ok(
matches && matches.length >= 2,
`KB field "${field}" must appear in BOTH the Entry Format and the archive append template (found ${matches ? matches.length : 0} occurrence(s)) — parallel-surface drift`
);
}
});
test('Phase 0 consumes the prevention fields (why_not_caught + recurrence_guard) when present', () => {
const content = fs.readFileSync(AGENT, 'utf8');
// Anchor on the specific Phase 0 heading in investigation_loop (the
// string "Phase 0" also appears in knowledge_base_protocol prose, which
// would match the wrong region).
const phase0Block = content.match(/\*\*Phase 0: Check knowledge base\*\*[\s\S]{0,1500}/);
assert.ok(phase0Block, 'a Phase 0: Check knowledge base block must exist in investigation_loop');
assert.ok(/why.?not.?caught/i.test(phase0Block[0]) && /recurrence.?guard/i.test(phase0Block[0]),
'the Phase 0 Evidence line must include why_not_caught + recurrence_guard (consume when present, absent on old entries)');
});
});
});

View File

@@ -7,8 +7,8 @@
"agents/gsd-code-fixer.md": "6937a1f20beaa1c6",
"agents/gsd-code-reviewer.md": "a700d295bbf110a9",
"agents/gsd-codebase-mapper.md": "afdae82284cb21b4",
"agents/gsd-debug-session-manager.md": "523f28a1ed8a4536",
"agents/gsd-debugger.md": "a4ea87f55b1c9718",
"agents/gsd-debug-session-manager.md": "8a7ae327a00d47cd",
"agents/gsd-debugger.md": "b4d6a994d6c433c4",
"agents/gsd-doc-classifier.md": "fca19595590391df",
"agents/gsd-doc-synthesizer.md": "0e5184bbcf0dca02",
"agents/gsd-doc-verifier.md": "888c6ac870cb91a6",
@@ -63,6 +63,7 @@
"gsd-core/references/debugger-bug-taxonomy.md": "4c13da220b6a4261",
"gsd-core/references/debugger-fix-acceptance.md": "87d367e4e864910e",
"gsd-core/references/debugger-philosophy.md": "459a8ac647c4ce9c",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "745e517012e03d23",
"gsd-core/references/debugger-sbfl.md": "de9cd1bd0e1485c6",

View File

@@ -7,8 +7,8 @@
"agents/gsd-code-fixer.md": "68b2d2faccfdd8a3",
"agents/gsd-code-reviewer.md": "bc8a6f2e1f787ff5",
"agents/gsd-codebase-mapper.md": "85ea778ad9cf7e66",
"agents/gsd-debug-session-manager.md": "d2b983f774816e9a",
"agents/gsd-debugger.md": "714649ac8c7fabce",
"agents/gsd-debug-session-manager.md": "1d966d0bbf22660c",
"agents/gsd-debugger.md": "7141e0c61747befe",
"agents/gsd-doc-classifier.md": "262a94b947a4e2aa",
"agents/gsd-doc-synthesizer.md": "01f90ea9b0d05d7d",
"agents/gsd-doc-verifier.md": "b3433e0db51e1c60",
@@ -134,6 +134,7 @@
"gsd-core/references/debugger-bug-taxonomy.md": "78fb8c1711acc971",
"gsd-core/references/debugger-fix-acceptance.md": "5616622f33e00436",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "fdf55a6cee9b1792",
"gsd-core/references/debugger-sbfl.md": "a7d0cd5940d6d2cd",

View File

@@ -6,8 +6,8 @@
"agents/gsd-code-fixer.md": "c6148e5511d02459",
"agents/gsd-code-reviewer.md": "e2c45baa8c0b5f6d",
"agents/gsd-codebase-mapper.md": "f96958e5f85b93fb",
"agents/gsd-debug-session-manager.md": "11afaabc2a749f32",
"agents/gsd-debugger.md": "76e3f9b0ccdeb4db",
"agents/gsd-debug-session-manager.md": "d5fbb343fac38729",
"agents/gsd-debugger.md": "13cfdb9e8caa78d9",
"agents/gsd-doc-classifier.md": "a76778bdde1c7f72",
"agents/gsd-doc-synthesizer.md": "8b0b6fc187c9d353",
"agents/gsd-doc-verifier.md": "4232dcf9076e3566",
@@ -133,6 +133,7 @@
"gsd-core/references/debugger-bug-taxonomy.md": "78fb8c1711acc971",
"gsd-core/references/debugger-fix-acceptance.md": "5616622f33e00436",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "fdf55a6cee9b1792",
"gsd-core/references/debugger-sbfl.md": "a7d0cd5940d6d2cd",

View File

@@ -6,8 +6,8 @@
"agents/gsd-code-fixer.md": "3d5f67cfd24ac452",
"agents/gsd-code-reviewer.md": "d626a828e8de3648",
"agents/gsd-codebase-mapper.md": "8c2e9f2ce3aedf78",
"agents/gsd-debug-session-manager.md": "3a6614424653612b",
"agents/gsd-debugger.md": "f6323235d733c990",
"agents/gsd-debug-session-manager.md": "1e23cdf4376bed3c",
"agents/gsd-debugger.md": "54cb91f574d020ed",
"agents/gsd-doc-classifier.md": "a636ae9594b25770",
"agents/gsd-doc-synthesizer.md": "dfb95eedfb3789bf",
"agents/gsd-doc-verifier.md": "4232dcf9076e3566",
@@ -62,6 +62,7 @@
"gsd-core/references/debugger-bug-taxonomy.md": "78fb8c1711acc971",
"gsd-core/references/debugger-fix-acceptance.md": "5616622f33e00436",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "fdf55a6cee9b1792",
"gsd-core/references/debugger-sbfl.md": "a7d0cd5940d6d2cd",

View File

@@ -10,8 +10,8 @@
"agents/gsd-code-fixer.md": "6aa74a2fb2ad244a",
"agents/gsd-code-reviewer.md": "e5ec12d4d409e800",
"agents/gsd-codebase-mapper.md": "e5b7941bdda53c91",
"agents/gsd-debug-session-manager.md": "55788b44fdfc4375",
"agents/gsd-debugger.md": "51f39ada470339ff",
"agents/gsd-debug-session-manager.md": "444fa983fdc85325",
"agents/gsd-debugger.md": "815a2b65d85c29dd",
"agents/gsd-doc-classifier.md": "5011d7358d2b2848",
"agents/gsd-doc-synthesizer.md": "e59cdd669876582d",
"agents/gsd-doc-verifier.md": "b60290c9d9f6d8d2",
@@ -66,6 +66,7 @@
"gsd-core/references/debugger-bug-taxonomy.md": "63521aea0206d4ac",
"gsd-core/references/debugger-fix-acceptance.md": "1057d70f7f2d654a",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "98872822b7f1ef08",
"gsd-core/references/debugger-sbfl.md": "6e4975ee50973c23",

View File

@@ -7,8 +7,8 @@
"agents/gsd-code-fixer.md": "1cf3a9fdade9a470",
"agents/gsd-code-reviewer.md": "5342fcc0da974696",
"agents/gsd-codebase-mapper.md": "b995bf01af0193d2",
"agents/gsd-debug-session-manager.md": "9f56455afb580275",
"agents/gsd-debugger.md": "0dd86ecf4e9e3ee9",
"agents/gsd-debug-session-manager.md": "8a495718576f24e6",
"agents/gsd-debugger.md": "dbf1b89a5ef6a7ea",
"agents/gsd-doc-classifier.md": "c2bf59af9467810b",
"agents/gsd-doc-synthesizer.md": "b2a179bf3c9bd636",
"agents/gsd-doc-verifier.md": "e74d930905a782ea",
@@ -134,6 +134,7 @@
"gsd-core/references/debugger-bug-taxonomy.md": "78fb8c1711acc971",
"gsd-core/references/debugger-fix-acceptance.md": "5616622f33e00436",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "fdf55a6cee9b1792",
"gsd-core/references/debugger-sbfl.md": "a7d0cd5940d6d2cd",

View File

@@ -84,10 +84,10 @@
"agents/gsd-code-reviewer.toml": "66420d6e6ffd14eb",
"agents/gsd-codebase-mapper.md": "cf8f8550b44aec35",
"agents/gsd-codebase-mapper.toml": "a4609f3ac66c2081",
"agents/gsd-debug-session-manager.md": "c2b615fce5adc13e",
"agents/gsd-debug-session-manager.toml": "4420cb596ad6b183",
"agents/gsd-debugger.md": "8b40ec1a784b1c84",
"agents/gsd-debugger.toml": "9ade5b336aae9a91",
"agents/gsd-debug-session-manager.md": "8a336fd497d2e6b2",
"agents/gsd-debug-session-manager.toml": "277a54c7661ff018",
"agents/gsd-debugger.md": "ad9aa9530c891872",
"agents/gsd-debugger.toml": "b05785c9a4dad6f6",
"agents/gsd-doc-classifier.md": "2745bc04d7b93666",
"agents/gsd-doc-classifier.toml": "3fe5ec83f62b586e",
"agents/gsd-doc-synthesizer.md": "4f545f2e916458ad",
@@ -169,6 +169,7 @@
"gsd-core/references/debugger-bug-taxonomy.md": "49f94fe75cabba52",
"gsd-core/references/debugger-fix-acceptance.md": "b2732420bdbcadcd",
"gsd-core/references/debugger-philosophy.md": "459a8ac647c4ce9c",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "097c2da83d697566",
"gsd-core/references/debugger-sbfl.md": "391e732abf32786a",

View File

@@ -7,8 +7,8 @@
"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": "77ee029f0f81c09d",
"agents/gsd-debugger.agent.md": "943af322184a1479",
"agents/gsd-debug-session-manager.agent.md": "e669e5d76bfd7810",
"agents/gsd-debugger.agent.md": "1f5cd5c6d3d7d1aa",
"agents/gsd-doc-classifier.agent.md": "aea81c0ba00e06cf",
"agents/gsd-doc-synthesizer.agent.md": "6ae32e4db005696d",
"agents/gsd-doc-verifier.agent.md": "0230208ae7ab1a08",
@@ -64,6 +64,7 @@
"gsd-core/references/debugger-bug-taxonomy.md": "ddfb2bbc1f3de50a",
"gsd-core/references/debugger-fix-acceptance.md": "812922e2b5db9410",
"gsd-core/references/debugger-philosophy.md": "459a8ac647c4ce9c",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "62089f91dfa470bd",
"gsd-core/references/debugger-sbfl.md": "5bb65a8653bf2e06",

View File

@@ -7,8 +7,8 @@
"agents/gsd-code-fixer.md": "76085f4442f268e6",
"agents/gsd-code-reviewer.md": "f29d6edbac0a01b6",
"agents/gsd-codebase-mapper.md": "d49c91fdab4efc70",
"agents/gsd-debug-session-manager.md": "5e47d7b36e262219",
"agents/gsd-debugger.md": "327fe2ec83e46205",
"agents/gsd-debug-session-manager.md": "c723ce1b8691296f",
"agents/gsd-debugger.md": "3a568af40765db29",
"agents/gsd-doc-classifier.md": "a6ab02b8f45f9d0b",
"agents/gsd-doc-synthesizer.md": "fd3c18addbc8265d",
"agents/gsd-doc-verifier.md": "9934ec11845d41c3",
@@ -134,6 +134,7 @@
"gsd-core/references/debugger-bug-taxonomy.md": "63c03b8afbd21b8a",
"gsd-core/references/debugger-fix-acceptance.md": "86b7cbde0171fafd",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "d5f1796cde97e7d2",
"gsd-core/references/debugger-sbfl.md": "838445590aab52e3",

View File

@@ -7,8 +7,8 @@
"agents/gsd-code-fixer.md": "94628312f25decb5",
"agents/gsd-code-reviewer.md": "5ef947ca5baed775",
"agents/gsd-codebase-mapper.md": "feccaeeacd05e34b",
"agents/gsd-debug-session-manager.md": "de03d1f43295518f",
"agents/gsd-debugger.md": "1912fdfe312b3482",
"agents/gsd-debug-session-manager.md": "d46222bd8037b695",
"agents/gsd-debugger.md": "ef869f69333fdcd9",
"agents/gsd-doc-classifier.md": "29b563a146c9d22c",
"agents/gsd-doc-synthesizer.md": "652beb928e93fa1d",
"agents/gsd-doc-verifier.md": "d3d8457bdd44bf10",
@@ -63,6 +63,7 @@
"gsd-core/references/debugger-bug-taxonomy.md": "fd9b10fffb3bd052",
"gsd-core/references/debugger-fix-acceptance.md": "b04b913d5ea0ac90",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "8318008696c1e0b2",
"gsd-core/references/debugger-sbfl.md": "70e699200f6197e0",

View File

@@ -7,8 +7,8 @@
"agents/gsd-code-fixer.md": "9652d5b56a2afbf5",
"agents/gsd-code-reviewer.md": "922c08885bc78662",
"agents/gsd-codebase-mapper.md": "0ccbf6a685804979",
"agents/gsd-debug-session-manager.md": "59191275e650f655",
"agents/gsd-debugger.md": "5dfaadd8e26b5d57",
"agents/gsd-debug-session-manager.md": "42a775633c9b1b34",
"agents/gsd-debugger.md": "753165cedae67dd6",
"agents/gsd-doc-classifier.md": "6256bbc0b887f60f",
"agents/gsd-doc-synthesizer.md": "212aaf89a34b51d7",
"agents/gsd-doc-verifier.md": "8016f792d0766b77",
@@ -134,6 +134,7 @@
"gsd-core/references/debugger-bug-taxonomy.md": "49f94fe75cabba52",
"gsd-core/references/debugger-fix-acceptance.md": "b2732420bdbcadcd",
"gsd-core/references/debugger-philosophy.md": "459a8ac647c4ce9c",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "097c2da83d697566",
"gsd-core/references/debugger-sbfl.md": "391e732abf32786a",

View File

@@ -43,9 +43,9 @@
"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": "c71b4debebaa978e",
"agents/subagents/gsd-debug-session-manager.md": "cec62a7fd99ab1c3",
"agents/subagents/gsd-debug-session-manager.yaml": "aab147717b5082e7",
"agents/subagents/gsd-debugger.md": "9302c5c4b7d5a2b7",
"agents/subagents/gsd-debugger.md": "ce8ab001fde869cb",
"agents/subagents/gsd-debugger.yaml": "6d02d7feb90cad43",
"agents/subagents/gsd-doc-classifier.md": "632dc6c61bafa63e",
"agents/subagents/gsd-doc-classifier.yaml": "a4e9cf7025b57503",
@@ -127,6 +127,7 @@
"gsd-core/references/debugger-bug-taxonomy.md": "78fb8c1711acc971",
"gsd-core/references/debugger-fix-acceptance.md": "5616622f33e00436",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "fdf55a6cee9b1792",
"gsd-core/references/debugger-sbfl.md": "a7d0cd5940d6d2cd",

View File

@@ -7,8 +7,8 @@
"agents/gsd-code-fixer.md": "3622ae5d90fb15f6",
"agents/gsd-code-reviewer.md": "2249774416314c57",
"agents/gsd-codebase-mapper.md": "948612acd505e87f",
"agents/gsd-debug-session-manager.md": "b5a39dcf10210cbb",
"agents/gsd-debugger.md": "2cb64b4cac666e81",
"agents/gsd-debug-session-manager.md": "e4b96ea41c74c479",
"agents/gsd-debugger.md": "e7f3e6c558756918",
"agents/gsd-doc-classifier.md": "fb776cfbb7e991b0",
"agents/gsd-doc-synthesizer.md": "2389f388d291c2eb",
"agents/gsd-doc-verifier.md": "65bbc2ae6b9ace29",
@@ -134,6 +134,7 @@
"gsd-core/references/debugger-bug-taxonomy.md": "49f94fe75cabba52",
"gsd-core/references/debugger-fix-acceptance.md": "b2732420bdbcadcd",
"gsd-core/references/debugger-philosophy.md": "459a8ac647c4ce9c",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "097c2da83d697566",
"gsd-core/references/debugger-sbfl.md": "391e732abf32786a",

View File

@@ -30,6 +30,7 @@
"gsd-core/references/debugger-bug-taxonomy.md": "78fb8c1711acc971",
"gsd-core/references/debugger-fix-acceptance.md": "5616622f33e00436",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "fdf55a6cee9b1792",
"gsd-core/references/debugger-sbfl.md": "a7d0cd5940d6d2cd",

View File

@@ -7,8 +7,8 @@
"agents/gsd-code-fixer.md": "3ed1a27ddc372ef8",
"agents/gsd-code-reviewer.md": "27eeeee6cb600e9b",
"agents/gsd-codebase-mapper.md": "032ff8ac55466a74",
"agents/gsd-debug-session-manager.md": "afe383b6483d4097",
"agents/gsd-debugger.md": "620e92debfaa906c",
"agents/gsd-debug-session-manager.md": "c1c9c5f538acb941",
"agents/gsd-debugger.md": "2a6bf0bb1a964771",
"agents/gsd-doc-classifier.md": "bdf3d54082424e76",
"agents/gsd-doc-synthesizer.md": "96c383b74a60fbbe",
"agents/gsd-doc-verifier.md": "da9ab6f3ec27778a",
@@ -63,6 +63,7 @@
"gsd-core/references/debugger-bug-taxonomy.md": "47e7929972c06378",
"gsd-core/references/debugger-fix-acceptance.md": "ab6a1cce253944f4",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "07ad93b8bcad3c34",
"gsd-core/references/debugger-sbfl.md": "061b719c754a12d3",

View File

@@ -7,8 +7,8 @@
"agents/gsd-code-fixer.md": "5fe29063843be67e",
"agents/gsd-code-reviewer.md": "338c46ab59c4e45f",
"agents/gsd-codebase-mapper.md": "8529d8a1ede8bbfb",
"agents/gsd-debug-session-manager.md": "ada53877ba56d894",
"agents/gsd-debugger.md": "c2dea41cd878723c",
"agents/gsd-debug-session-manager.md": "913a370b529ec717",
"agents/gsd-debugger.md": "7a2fd82d5f328d23",
"agents/gsd-doc-classifier.md": "a6ab02b8f45f9d0b",
"agents/gsd-doc-synthesizer.md": "fd3c18addbc8265d",
"agents/gsd-doc-verifier.md": "e51e50892963ccc7",
@@ -63,6 +63,7 @@
"gsd-core/references/debugger-bug-taxonomy.md": "d0458c690c4487c9",
"gsd-core/references/debugger-fix-acceptance.md": "134f83886c343733",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "4bf1af239ae875f3",
"gsd-core/references/debugger-sbfl.md": "23d7a3bb15bc8b7c",

View File

@@ -7,8 +7,8 @@
"agents/gsd-code-fixer.md": "f00d815ec535a168",
"agents/gsd-code-reviewer.md": "efc0d2dee321c654",
"agents/gsd-codebase-mapper.md": "cfa2bbfaf264e1fd",
"agents/gsd-debug-session-manager.md": "b7d57cd8ed9103d3",
"agents/gsd-debugger.md": "8d91db51d9fe1959",
"agents/gsd-debug-session-manager.md": "86d75b269a6c40e7",
"agents/gsd-debugger.md": "77a2f8edc9193e54",
"agents/gsd-doc-classifier.md": "a6ab02b8f45f9d0b",
"agents/gsd-doc-synthesizer.md": "fd3c18addbc8265d",
"agents/gsd-doc-verifier.md": "ede2f297b73b5a86",
@@ -63,6 +63,7 @@
"gsd-core/references/debugger-bug-taxonomy.md": "5d8c0a266a6d61f8",
"gsd-core/references/debugger-fix-acceptance.md": "ddd00cbd78dd3fdf",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "b5d7c4a5804327c3",
"gsd-core/references/debugger-sbfl.md": "071651eaf7414a4c",

View File

@@ -7,8 +7,8 @@
"agents/gsd-code-fixer.md": "78549833f0411b0c",
"agents/gsd-code-reviewer.md": "7d94fe8bfa6661aa",
"agents/gsd-codebase-mapper.md": "7cc9d387f29c46e1",
"agents/gsd-debug-session-manager.md": "baf23c3834eb36ba",
"agents/gsd-debugger.md": "240cb56fcb4fa4a7",
"agents/gsd-debug-session-manager.md": "dc4e8a556dbf1708",
"agents/gsd-debugger.md": "95854ad0457494f2",
"agents/gsd-doc-classifier.md": "146acf4d176134b5",
"agents/gsd-doc-synthesizer.md": "b1f5e2eb28fa3659",
"agents/gsd-doc-verifier.md": "7ed4d9611f678a95",
@@ -134,6 +134,7 @@
"gsd-core/references/debugger-bug-taxonomy.md": "78fb8c1711acc971",
"gsd-core/references/debugger-fix-acceptance.md": "5616622f33e00436",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "fdf55a6cee9b1792",
"gsd-core/references/debugger-sbfl.md": "a7d0cd5940d6d2cd",

View File

@@ -63,6 +63,7 @@
"gsd-core/references/debugger-bug-taxonomy.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-prevention.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-repro-hardening.md",
"gsd-core/references/debugger-sbfl.md",

View File

@@ -134,6 +134,7 @@
"gsd-core/references/debugger-bug-taxonomy.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-prevention.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-repro-hardening.md",
"gsd-core/references/debugger-sbfl.md",

View File

@@ -133,6 +133,7 @@
"gsd-core/references/debugger-bug-taxonomy.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-prevention.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-repro-hardening.md",
"gsd-core/references/debugger-sbfl.md",

View File

@@ -62,6 +62,7 @@
"gsd-core/references/debugger-bug-taxonomy.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-prevention.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-repro-hardening.md",
"gsd-core/references/debugger-sbfl.md",

View File

@@ -66,6 +66,7 @@
"gsd-core/references/debugger-bug-taxonomy.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-prevention.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-repro-hardening.md",
"gsd-core/references/debugger-sbfl.md",

View File

@@ -134,6 +134,7 @@
"gsd-core/references/debugger-bug-taxonomy.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-prevention.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-repro-hardening.md",
"gsd-core/references/debugger-sbfl.md",

View File

@@ -169,6 +169,7 @@
"gsd-core/references/debugger-bug-taxonomy.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-prevention.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-repro-hardening.md",
"gsd-core/references/debugger-sbfl.md",

View File

@@ -64,6 +64,7 @@
"gsd-core/references/debugger-bug-taxonomy.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-prevention.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-repro-hardening.md",
"gsd-core/references/debugger-sbfl.md",

View File

@@ -134,6 +134,7 @@
"gsd-core/references/debugger-bug-taxonomy.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-prevention.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-repro-hardening.md",
"gsd-core/references/debugger-sbfl.md",

View File

@@ -63,6 +63,7 @@
"gsd-core/references/debugger-bug-taxonomy.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-prevention.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-repro-hardening.md",
"gsd-core/references/debugger-sbfl.md",

View File

@@ -134,6 +134,7 @@
"gsd-core/references/debugger-bug-taxonomy.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-prevention.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-repro-hardening.md",
"gsd-core/references/debugger-sbfl.md",

View File

@@ -127,6 +127,7 @@
"gsd-core/references/debugger-bug-taxonomy.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-prevention.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-repro-hardening.md",
"gsd-core/references/debugger-sbfl.md",

View File

@@ -134,6 +134,7 @@
"gsd-core/references/debugger-bug-taxonomy.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-prevention.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-repro-hardening.md",
"gsd-core/references/debugger-sbfl.md",

View File

@@ -30,6 +30,7 @@
"gsd-core/references/debugger-bug-taxonomy.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-prevention.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-repro-hardening.md",
"gsd-core/references/debugger-sbfl.md",

View File

@@ -63,6 +63,7 @@
"gsd-core/references/debugger-bug-taxonomy.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-prevention.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-repro-hardening.md",
"gsd-core/references/debugger-sbfl.md",

View File

@@ -63,6 +63,7 @@
"gsd-core/references/debugger-bug-taxonomy.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-prevention.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-repro-hardening.md",
"gsd-core/references/debugger-sbfl.md",

View File

@@ -63,6 +63,7 @@
"gsd-core/references/debugger-bug-taxonomy.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-prevention.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-repro-hardening.md",
"gsd-core/references/debugger-sbfl.md",

View File

@@ -134,6 +134,7 @@
"gsd-core/references/debugger-bug-taxonomy.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-prevention.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-repro-hardening.md",
"gsd-core/references/debugger-sbfl.md",