enhance(#1960): add RCA branching (fishbone + AND-gate) to gsd-debugger (#2405)

* test(#1960): add failing-first RCA-branching contract + schema-invariant tests

Epic #1957 Phase 2A. Source-text-is-the-product contract tests (fishbone
>=2 categories, AND-gate, multi-cause root_cause, backward compat, reasoning
checkpoint candidate_causes+and_gate fields, debugger-philosophy single-cause
note, DEBUG template) plus behavioral schema-invariant checks on two fixtures:
two contributing causes (AND-gate yes) -> both recorded; single-cause
(AND-gate no) -> one root_cause, identical to today.

Failing-first: reference, agent edits, and template note do not yet exist.

* feat(#1960): add RCA branching (fishbone + AND-gate) to gsd-debugger

Epic #1957 Phase 2A. Guards against 5-Whys single-cause bias: before committing
root_cause, the debugger enumerates candidate causes across >=2 Ishikawa
categories (code/config/environment/data) and explicitly answers an AND-gate
question. When the AND-gate fires, every contributing cause is recorded, so a
multi-cause fix no longer recurs via the unaddressed second cause.
Resolution.root_cause may hold one OR a small set (additive; single-cause
sessions are byte-identical to today). The Structured Reasoning Checkpoint gains
candidate_causes + and_gate fields; debugger-philosophy.md adds the
single-cause-bias trap.

Full rules extracted to gsd-core/references/debugger-rca-branching.md (slim
Phase 2 routing + 2 checkpoint fields kept in the agent). INVENTORY + manifest +
agent-size baseline + install-parity goldens + AGENTS.md + DEBUG template updated.

* fix(#1960): address orthogonal review (AND-gate self-consistency, parity guard, narrowed claim, ripples)

- Reference: the collapse rule now enforces AND-gate self-consistency —
  and_gate=yes with a single confirmed cause is flagged as incomplete
  (return to Phase 3); a race/timing note clarifies such bugs bridge
  categories; the 'byte-identical' backward-compat claim narrowed to
  'root_cause shape unchanged; reasoning_checkpoint gains 2 fields in every
  session'.
- DEBUG.md: stale 'five-field' mirror prose -> seven-field (parallel-surface
  drift the reviewer flagged); new debug-session-management parity test pins
  the field-count claim to the gsd-debugger.md YAML keys (CRLF-safe).
- Scalar-assuming consumers of set-valued root_cause updated: session-manager
  compact summaries (319/332), diagnose-only return (1062), archive entry
  (1216), ROOT CAUSE FOUND return (1322).
- Test: added the AND-gate-yes/single-cause invariant + fixture; rephrased the
  fixture describe block honestly as a schema-invariant specification.
- Phase 2 bullet phrasing clarified ('at hypothesis formation, before the
  Phase 4 commit').

* test(#1960): parity regex accepts word-form count ('seven-field' or '7-field')

* test(#1960): parity regex counts array-valued YAML keys (no inline value)

* chore(#1960): backfill changeset pr number (PR #2405)
This commit is contained in:
Tom Boucher
2026-07-18 13:42:58 -04:00
committed by GitHub
parent 50efae13ce
commit f8b16d1874
48 changed files with 448 additions and 85 deletions

View File

@@ -0,0 +1,5 @@
---
type: Added
pr: 2405
---
**`gsd-debugger` now branches root-cause analysis instead of chaining, guarding against 5-Whys single-cause bias** — before committing `root_cause`, the debugger enumerates candidate causes across ≥2 Ishikawa categories (code / config / environment / data) rather than a single linear "why" chain, and explicitly answers an AND-gate question ("could this failure require more than one contributing condition simultaneously?"). When the AND-gate fires, every contributing cause is recorded — so a multi-cause fix no longer recurs via the unaddressed second cause. `Resolution.root_cause` may now hold one OR a small set of contributing causes (additive; a single-cause session still records exactly one root_cause while the reasoning_checkpoint gains two RCA fields populated in every session). The Structured Reasoning Checkpoint gains `candidate_causes` + `and_gate` fields, and `debugger-philosophy.md` adds the single-cause-bias trap to its cognitive-bias table. Full rules live in `gsd-core/references/debugger-rca-branching.md`. (#1960)

View File

@@ -316,7 +316,7 @@ Return compact summary (terminal — investigation resolved):
## DEBUG SESSION COMPLETE
**Session:** {final path — resolved/ if archived, otherwise debug_file_path}
**Root Cause:** {one sentence from Resolution.root_cause, or "not determined"}
**Root Cause:** {one sentence, or a '; '-joined list when the AND-gate identified multiple contributing causes, from Resolution.root_cause; or "not determined"}
**Fix:** {one sentence from Resolution.fix, or "not applied"}
**Cycles:** {N} (investigation) + {M} (fix)
**TDD:** {yes/no}
@@ -329,7 +329,7 @@ If the session was abandoned by user choice, return (terminal — user stopped):
## DEBUG SESSION COMPLETE
**Session:** {debug_file_path}
**Root Cause:** {one sentence if found, or "not determined"}
**Root Cause:** {one sentence if found (or a '; '-joined list if the AND-gate identified multiple contributing causes), or "not determined"}
**Fix:** not applied
**Cycles:** {N}
**TDD:** {yes/no}

View File

@@ -253,6 +253,10 @@ reasoning_checkpoint:
falsification_test: "[what specific observation would prove this hypothesis wrong]"
fix_rationale: "[why the proposed fix addresses the root cause — not just the symptom]"
blind_spots: "[what you haven't tested that could invalidate this hypothesis]"
candidate_causes:
- "[cause in category: code|config|environment|data]"
- "[cause in a DIFFERENT category — single-category is not a branch]"
and_gate: "[could this failure require >1 contributing condition simultaneously? yes/no + why — see RCA branching]"
```
**Check before proceeding:**
@@ -260,8 +264,9 @@ reasoning_checkpoint:
- Is the confirming evidence direct observation, not inference?
- Does the fix address the root cause or a symptom?
- Have you documented your blind spots honestly?
- **Did you branch across ≥2 categories and answer the AND-gate?** (Single-cause is fine when the AND-gate is no — but you must have checked.)
If you cannot fill all five fields with specific, concrete answers — you do not have a confirmed root cause yet. Return to investigation_loop.
If you cannot fill all seven fields with specific, concrete answers — you do not have a confirmed root cause yet. Return to investigation_loop.
## Minimal Reproduction
@@ -788,7 +793,7 @@ Each resolved session appends one entry:
## {slug} — {one-line description}
- **Date:** {ISO date}
- **Error patterns:** {comma-separated keywords extracted from symptoms.errors and symptoms.actual}
- **Root cause:** {from Resolution.root_cause}
- **Root cause(s):** {from Resolution.root_cause — one cause, or a '; '-joined list when the AND-gate fired}
- **Fix:** {from Resolution.fix}
- **Files changed:** {from Resolution.files_changed}
---
@@ -998,6 +1003,10 @@ At investigation decision points, apply structured reasoning:
**Phase 2: Form hypothesis**
- Based on evidence AND common pattern matches, form SPECIFIC, FALSIFIABLE hypothesis
- **Branch, don't chain** — at hypothesis formation (so it's done before the Phase 4 commit), enumerate candidate causes across ≥2 Ishikawa categories (code / config / environment / data) and answer the AND-gate check; `root_cause` may hold a set when the AND-gate fires:
@~/.claude/gsd-core/references/debugger-rca-branching.md
- Update Current Focus with hypothesis, test, expecting, next_action
**Phase 3: Test hypothesis**
@@ -1050,7 +1059,7 @@ Return structured diagnosis:
**Debug Session:** .planning/debug/{slug}.md
**Root Cause:** {from Resolution.root_cause}
**Root Cause:** {from Resolution.root_cause — one cause, or a '; '-joined list when the AND-gate identified multiple contributing causes}
**Evidence Summary:**
- {key finding 1}
@@ -1090,7 +1099,7 @@ Update status to "fixing".
**0. Structured Reasoning Checkpoint (MANDATORY)**
- Write the `reasoning_checkpoint` block to Current Focus (see Structured Reasoning Checkpoint in investigation_techniques)
- Verify all five fields can be filled with specific, concrete answers
- Verify every field can be filled with specific, concrete answers — including the RCA `candidate_causes` (≥2 categories) and `and_gate` fields
- If any field is vague or empty: return to investigation_loop — root cause is not confirmed
**1. Implement minimal fix**
@@ -1204,7 +1213,7 @@ Then append the entry:
## {slug} — {one-line description of the bug}
- **Date:** {ISO date}
- **Error patterns:** {comma-separated keywords from Symptoms.errors + Symptoms.actual}
- **Root cause:** {Resolution.root_cause}
- **Root cause(s):** {Resolution.root_cause — joined as '; ' when multiple contributing causes were confirmed}
- **Fix:** {Resolution.fix}
- **Files changed:** {Resolution.files_changed joined as comma list}
---
@@ -1309,7 +1318,7 @@ Orchestrator presents checkpoint to user, gets response, spawns fresh continuati
**Debug Session:** .planning/debug/{slug}.md
**Root Cause:** {specific cause with evidence}
**Root Cause:** {specific cause with evidence — one cause, or a '; '-joined list when the AND-gate identified multiple contributing causes}
**Evidence Summary:**
- {key finding 1}

View File

@@ -402,6 +402,7 @@ runs its default whole-repo scan.
- Requires human verification before marking resolved
- Runs a multi-signal fix-acceptance guardrail (mutation check, no-op/deletion detector, adjacent tests, revert-and-reconfirm) before accepting a fix; degrades gracefully when Stryker or a test suite is absent
- Ranks suspect code by Ochiai suspiciousness from test pass/fail coverage (spectrum-based fault localization) before forming hypotheses; skips cleanly when no coverage exists
- Branches root-cause analysis across ≥2 Ishikawa categories and applies an AND-gate check before committing root_cause (guards against 5-Whys single-cause bias); root_cause may hold a set when the AND-gate fires
- Appends to persistent knowledge base on resolution
- Consults knowledge base on new sessions

View File

@@ -216,6 +216,7 @@
"continuation-format.md",
"debugger-fix-acceptance.md",
"debugger-philosophy.md",
"debugger-rca-branching.md",
"debugger-sbfl.md",
"decimal-phase-calculation.md",
"doc-conflict-engine.md",

View File

@@ -296,6 +296,7 @@ Full roster at `gsd-core/references/*.md`. References are shared knowledge docum
| `debugger-philosophy.md` | Evergreen debugging disciplines loaded by `gsd-debugger`. |
| `debugger-fix-acceptance.md` | Multi-signal fix-acceptance guardrail (anti-overfitting) loaded by `gsd-debugger`. |
| `debugger-sbfl.md` | Spectrum-based fault localization (Ochiai) pre-filter loaded by `gsd-debugger`. |
| `debugger-rca-branching.md` | RCA branching (fishbone + AND-gate) anti-single-cause discipline loaded by `gsd-debugger`. |
| `mandatory-initial-read.md` | Shared required-reading boilerplate injected into agent prompts. |
| `agent-skills-bootstrap.md` | Shared agent_skills self-load contract (query + Read + dedup guard) injected into all 22 consumer agents. |
| `project-skills-discovery.md` | Shared project-skills-discovery boilerplate injected into agent prompts. |

View File

@@ -50,6 +50,7 @@ When debugging, return to foundational truths:
| **Anchoring** | First explanation becomes your anchor | Generate 3+ independent hypotheses before investigating any |
| **Availability** | Recent bugs → assume similar cause | Treat each bug as novel until evidence suggests otherwise |
| **Sunk Cost** | Spent 2 hours on one path, keep going despite evidence | Every 30 min: "If I started fresh, is this still the path I'd take?" |
| **Single-cause (5-Whys) bias** | A linear "why → why → why" chain stops at ONE cause; multi-cause failures recur via the unaddressed second cause | Branch across ≥2 Ishikawa categories and answer the AND-gate before committing `root_cause` (see `debugger-rca-branching.md`) |
## Systematic Investigation Disciplines

View File

@@ -0,0 +1,98 @@
# RCA Branching — Anti-Single-Cause Bias
Loaded by `gsd-debugger` via `@-include` from Phase 2 (form hypothesis) and the
pre-fix Structured Reasoning Checkpoint. A lightweight discipline that guards
against the best-known Root-Cause-Analysis failure mode: **5-Whys single-cause
bias** — a linear "why → why → why" chain tends to isolate ONE cause and stop,
even when a failure has several independent contributing causes.
## Why this exists
The agent already warns against confirmation bias and encourages "multiple
competing hypotheses." But the resolution still commits to a single
`Resolution.root_cause`, and there is no explicit guard against stopping at the
first plausible cause. A single-cause fix on a multi-cause failure passes
verification and then **recurs via the unaddressed second cause** — wasting a
whole future debug cycle. The fix is a few sentences of prompt discipline reusing
the existing hypothesis machinery and debug-file sections; it is **not** a
Fault-Tree-Analysis subsystem.
## The discipline
### 1. Branch, don't chain
Before committing `root_cause`, enumerate candidate causes across **≥2
Ishikawa (fishbone) categories** — not a single linear chain. The four
categories:
- **code** — logic error, off-by-one, wrong branch, missing null check, race in the code under investigation
- **config** — configuration value, feature flag, schema/migration, index/capacity setting
- **environment** — runtime version, OS/platform, timezone, network, dependencies, resource limits
- **data** — input shape, corrupt/partial record, ordering/encoding, volume/scale
A race or timing bug often **bridges categories** (e.g., a code race amplified by environment load, or by a config-driven scan window) — enumerate it in every category it spans, not just one. That cross-category enumeration is exactly what the AND-gate is designed to surface.
Record each candidate branch in `Current Focus` (under the `reasoning_checkpoint.candidate_causes` field). Two+ categories is the minimum bar — if every candidate lands in the same category, you have not branched; generate at least one candidate from a different category before proceeding.
### 2. AND-gate check (Fault Tree Analysis)
Explicitly answer one question before collapsing:
> **Could this failure require more than one contributing condition simultaneously?**
Record the answer in `reasoning_checkpoint.and_gate`. If **yes** (an AND-gate —
the symptom only manifests when two or more conditions co-occur), **every
contributing cause is recorded**, not just the most salient. If **no**, the
single confirmed cause suffices.
### 3. Collapse
Collapse to the confirmed `root_cause` — which may now be **one cause OR a small
set of contributing causes**. Append the eliminated branches to the `Eliminated`
section (never delete them — Kernighan auditability). The recorded set must be
non-empty (at least one confirmed cause) and disjoint from `Eliminated`.
**Self-consistency with the AND-gate:** the confirmed set must agree with the
AND-gate answer. If `and_gate: yes` (the failure requires ≥2 simultaneous
conditions), a single confirmed cause **cannot** fully account for the symptom —
investigation is incomplete; **return to Phase 3** and find the missing
co-occurring cause(s) before collapsing. If `and_gate: no`, the confirmed set
holds exactly one cause.
## Worked examples
**Single-cause (AND-gate no):** a counter shows 3 when clicked once. Candidate
branches: code (event handler fires twice) · config (none) · environment (none)
· data (none). AND-gate: no — the double-fire alone fully accounts for the
symptom. Collapse to one root cause: `event handler bound twice`. Recorded shape:
`root_causes: [double-fire]`. **Identical to today** — single-cause sessions are
byte-for-byte unchanged.
**Multi-cause (AND-gate yes):** intermittent database corruption under load.
Candidate branches: code (two async writers, no lock) · config (missing index →
full-table scan amplifies the race window) · environment (none) · data (none).
AND-gate: **yes** — the corruption only occurs when a writer races AND the scan
holds the read transaction open long enough for the interleaving. Collapse to a
set: `root_causes: [missing async lock, missing index]`. Eliminated: timezone
(reproduced in UTC), env-var (unset in repro). The fix must address BOTH;
addressing only the lock leaves the index-driven amplification, and the
corruption recurs under load.
## Backward compatibility
`Resolution.root_cause` may now hold one OR a small set of contributing causes.
For a single-cause session it still holds exactly one cause (shape unchanged);
the `reasoning_checkpoint` block gains two RCA fields (`candidate_causes`,
`and_gate`) that are populated in **every** session regardless of cause count.
There is no file-format break — readers that handled one cause continue to work
(a single-element set is the same shape as a lone value to a reader that
iterates).
## Scope boundary (Zawinski's Law)
This is a few sentences of prompt discipline. It is **not** a full FTA tree, not
an incident-management system, and not a new debug-file section — it reuses the
existing `Current Focus`, `Eliminated`, and `Resolution` sections and the
existing `reasoning_checkpoint` block. Where a bug genuinely has one cause, the
discipline costs two extra sentences (the empty non-code branches + an AND-gate
"no"); where it has many, it prevents a recurrence.

View File

@@ -51,7 +51,7 @@ started: [when it broke / always broken]
## Resolution
<!-- OVERWRITE as understanding evolves -->
root_cause: [empty until found]
root_cause: [empty until found — may hold one OR a small set of contributing causes when the AND-gate fires; see gsd-core/references/debugger-rca-branching.md]
fix: [empty until applied]
verification: [empty until verified — holds the nested per-signal fix-acceptance guardrail record (map shape) when active; see gsd-core/references/debugger-fix-acceptance.md]
files_changed: []
@@ -73,7 +73,7 @@ files_changed: []
- If Claude reads this after /clear, it knows exactly where to resume
- Fields: hypothesis, test, expecting, next_action, reasoning_checkpoint, tdd_checkpoint
- `next_action`: must be concrete and actionable — bad: "continue investigating"; good: "Add logging at line 47 of auth.js to observe token value before jwt.verify()"
- `reasoning_checkpoint`: OVERWRITE before every fix_and_verify — five-field structured reasoning record (hypothesis, confirming_evidence, falsification_test, fix_rationale, blind_spots)
- `reasoning_checkpoint`: OVERWRITE before every fix_and_verify — seven-field structured reasoning record (hypothesis, confirming_evidence, falsification_test, fix_rationale, blind_spots, candidate_causes, and_gate) — see `gsd-debugger.md` Structured Reasoning Checkpoint
- `tdd_checkpoint`: OVERWRITE during TDD red/green phases — test file, name, status, failure output
**Symptoms:**

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": 16850,
"gsd-debugger.md": 52734,
"gsd-debug-session-manager.md": 17012,
"gsd-debugger.md": 53893,
"gsd-doc-classifier.md": 11717,
"gsd-doc-synthesizer.md": 13154,
"gsd-doc-verifier.md": 12403,

View File

@@ -187,8 +187,37 @@ describe('debug skill dispatch and sub-orchestrator (#2148, #2151)', () => {
});
test('debug.md delegates to gsd-debug-session-manager', () => {
const content = fs.readFileSync(path.join(process.cwd(), 'gsd-core/workflows/debug.md'), 'utf8');
const content = fs.readFileSync(path.join(process.cwd(), 'gsd-core', 'workflows', 'debug.md'), 'utf8');
assert.ok(content.includes('gsd-debug-session-manager'),
'debug.md does not delegate to session manager');
});
test('DEBUG.md reasoning_checkpoint field-count claim matches gsd-debugger.md YAML keys (parity)', () => {
// Parallel-surface drift guard (DEFECT.GENERATIVE-FIX): the field-count
// claim in the DEBUG.md section_rules prose must equal the number of keys
// enumerated in the gsd-debugger.md reasoning_checkpoint YAML block.
// CRLF-safe regex/split per DEFECT.WINDOWS-TEST-PORTABILITY. Accepts either
// digit ("7-field") or word ("seven-field") count form.
const NUMWORDS = { one: 1, two: 2, three: 3, four: 4, five: 5, six: 6, seven: 7, eight: 8, nine: 9, ten: 10 };
const debugContent = fs.readFileSync(path.join(process.cwd(), 'gsd-core', 'templates', 'DEBUG.md'), 'utf8');
const agentContent = fs.readFileSync(path.join(process.cwd(), 'agents', 'gsd-debugger.md'), 'utf8');
const debugMatch = debugContent.match(/reasoning_checkpoint[^.\r\n]*?(\d+|one|two|three|four|five|six|seven|eight|nine|ten)-field structured reasoning record/i);
assert.ok(debugMatch, 'DEBUG.md must state a "N-field structured reasoning record" claim for reasoning_checkpoint');
const claimedCount = /^\d+$/.test(debugMatch[1]) ? parseInt(debugMatch[1], 10) : NUMWORDS[debugMatch[1].toLowerCase()];
assert.ok(typeof claimedCount === 'number', `unrecognized field-count token: ${debugMatch[1]}`);
const yamlBlock = agentContent.match(/reasoning_checkpoint:\s*\r?\n([\s\S]*?)```/);
assert.ok(yamlBlock, 'gsd-debugger.md must define a fenced reasoning_checkpoint YAML block');
const keys = new Set();
for (const line of yamlBlock[1].split(/\r?\n/)) {
// Match 2-space-indented YAML keys (with OR without an inline value —
// array-valued keys like confirming_evidence: have no trailing space).
const m = line.match(/^ {2}([a-z_]+):/);
if (m) keys.add(m[1]);
}
assert.strictEqual(
keys.size,
claimedCount,
`parity drift: DEBUG.md claims ${claimedCount}-field but gsd-debugger.md enumerates ${keys.size} keys (${[...keys].join(', ')}). Update BOTH surfaces together.`
);
});
});

View File

@@ -0,0 +1,182 @@
// allow-test-rule: source-text-is-the-product (see #1960)
// Agent .md + reference .md + template .md files — their text IS what the
// runtime loads. Testing text content tests the deployed RCA-branching
// contract. The pure-JS schema-invariant checks below validate the data model
// the agent records (root_cause may hold a set when the AND-gate fires).
// Per CONTRIBUTING.md exception matrix. Covers epic #1957 Phase 2A (#1960).
'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 REFERENCE = path.join(ROOT, 'gsd-core/references/debugger-rca-branching.md');
const PHILOSOPHY = path.join(ROOT, 'gsd-core/references/debugger-philosophy.md');
const DEBUG_TEMPLATE = path.join(ROOT, 'gsd-core/templates/DEBUG.md');
// Validated data-model invariant: the RCA-branching output the agent records.
// root_causes holds every CONFIRMED candidate (one OR a small set — the AND-gate
// decides whether >1 is kept); eliminated holds the rest. The two never overlap
// and every candidate lands in exactly one bucket.
function assertRcaSchemaInvariants(output) {
assert.ok(Array.isArray(output.root_causes), 'root_causes must be a list (set-valued)');
assert.ok(Array.isArray(output.eliminated), 'eliminated must be a list');
assert.ok(output.root_causes.length >= 1, 'at least one confirmed root cause is required');
const rootIds = new Set(output.root_causes.map((c) => c.id));
const elimIds = new Set(output.eliminated.map((c) => c.id));
for (const id of rootIds) {
assert.ok(!elimIds.has(id), `cause ${id} appears in BOTH root_causes and eliminated (must be disjoint)`);
}
// AND-gate self-consistency: if the gate fired (yes — failure requires >=2
// simultaneous conditions), a single confirmed cause cannot fully account for
// the symptom; investigation is incomplete.
const andGateYes = /^yes\b/i.test(String(output.and_gate || '').trim());
if (andGateYes) {
assert.ok(
output.root_causes.length >= 2,
`and_gate=yes requires >=2 confirmed causes (got ${output.root_causes.length}) — single-cause with AND-gate=yes means investigation is incomplete`
);
}
}
describe('RCA branching — anti-single-cause bias (#1960, epic #1957 Phase 2A)', () => {
describe('reference extract exists and is wired into Phase 2', () => {
test('gsd-core/references/debugger-rca-branching.md exists', () => {
assert.ok(fs.existsSync(REFERENCE), 'debugger-rca-branching.md reference must exist');
});
test('gsd-debugger.md Phase 2 @-includes the RCA-branching reference', () => {
const content = fs.readFileSync(AGENT, 'utf8');
assert.ok(
content.includes('@~/.claude/gsd-core/references/debugger-rca-branching.md'),
'gsd-debugger.md must @-include the RCA-branching reference from Phase 2 (or the reasoning checkpoint)'
);
});
});
describe('branch-don\'t-chain: fishbone across >=2 categories', () => {
test('reference documents the four Ishikawa categories', () => {
const content = fs.readFileSync(REFERENCE, 'utf8');
assert.ok(/code/i.test(content), 'category: code');
assert.ok(/config/i.test(content), 'category: config');
assert.ok(/environment/i.test(content), 'category: environment');
assert.ok(/data/i.test(content), 'category: data');
assert.ok(/fishbone|ishikawa|\b>=?\s*2\s+categor/i.test(content),
'must require branching across >=2 categories (Ishikawa/fishbone)');
});
test('reference contrasts branching with a single linear 5-Whys chain', () => {
const content = fs.readFileSync(REFERENCE, 'utf8');
assert.ok(/5-?\s*whys|five whys|linear chain|single[\s-]?cause/i.test(content),
'must name the 5-Whys / single-cause-bias failure mode being guarded against');
});
});
describe('AND-gate check (Fault Tree Analysis)', () => {
test('reference documents the AND-gate question', () => {
const content = fs.readFileSync(REFERENCE, 'utf8');
assert.ok(/and[\s-]?gate/i.test(content), 'must name the AND-gate check');
assert.ok(/more than one|multiple|simultaneous/i.test(content),
'must ask whether the failure requires multiple contributing conditions simultaneously');
});
});
describe('root_cause may hold a set; single-cause sessions unaffected (backward compat)', () => {
test('reference documents that root_cause can record multiple contributing causes', () => {
const content = fs.readFileSync(REFERENCE, 'utf8');
assert.ok(/root_cause|root cause/i.test(content));
assert.ok(/multiple|set|more than one|all contributing/i.test(content),
'must document that root_cause can hold multiple contributing causes when the AND-gate fires');
});
test('reference documents single-cause backward compatibility', () => {
const content = fs.readFileSync(REFERENCE, 'utf8');
assert.ok(/single[\s-]?cause|backward|identical|unchanged/i.test(content),
'must document that single-cause sessions are unaffected (backward compatible)');
});
test('DEBUG.md template root_cause field notes it may hold a set', () => {
const content = fs.readFileSync(DEBUG_TEMPLATE, 'utf8');
assert.ok(/root_cause/.test(content), 'template must still have the root_cause field');
assert.ok(/set|multiple|contributing|one or more/i.test(content),
'DEBUG.md root_cause must note it may hold one or more contributing causes (per RCA branching)');
});
});
describe('Structured Reasoning Checkpoint gains the RCA fields', () => {
test('reasoning_checkpoint YAML includes candidate_causes + and_gate', () => {
const content = fs.readFileSync(AGENT, 'utf8');
assert.ok(/candidate_causes/.test(content),
'reasoning_checkpoint must include a candidate_causes field (the >=2-category branches)');
assert.ok(/and_gate/.test(content),
'reasoning_checkpoint must include an and_gate field (the AND-gate answer)');
});
});
describe('debugger-philosophy.md notes the single-cause-bias trap', () => {
test('philosophy reference calls out single-cause bias', () => {
const content = fs.readFileSync(PHILOSOPHY, 'utf8');
assert.ok(/single[\s-]?cause|5-?\s*whys|root[\s-]?cause bias/i.test(content),
'debugger-philosophy.md must note the single-cause-bias / 5-Whys trap alongside the existing cognitive-bias guidance');
});
});
describe('RCA output schema — invariant specification (agent-output conformance enforced by the source-text contract tests above)', () => {
// The fixtures below exercise the documented data model. They are a
// *specification* of the schema invariants (not a test of production code,
// which is prompt-level); the Tier-1 source-text contract tests carry the
// real enforcement that the agent records conformant output.
test('fixture A — two contributing causes (AND-gate yes): both recorded in root_causes', () => {
const output = {
// The agent confirmed BOTH causes (AND-gate fired — both required simultaneously).
root_causes: [
{ id: 'race-condition', category: 'code', evidence: 'two async writers, no lock' },
{ id: 'missing-index', category: 'config', evidence: 'full-table scan under load amplifies the race window' },
],
eliminated: [{ id: 'timezone', category: 'environment', evidence: 'reproduced in UTC too' }],
and_gate: 'yes — both the race AND the missing index are required to produce the observed corruption',
};
assertRcaSchemaInvariants(output);
assert.strictEqual(output.root_causes.length, 2, 'both contributing causes must be recorded (criterion 1)');
const cats = new Set(output.root_causes.map((c) => c.category));
assert.ok(cats.size >= 2, 'the confirmed causes span >=2 categories (branching is real)');
});
test('fixture B — single-cause (AND-gate no): one root_cause, identical to today (criterion 2)', () => {
const output = {
root_causes: [
{ id: 'off-by-one', category: 'code', evidence: 'loop bound < instead of <=' },
],
eliminated: [
{ id: 'config-default', category: 'config', evidence: 'unchanged in repro' },
{ id: 'env-var', category: 'environment', evidence: 'unset in repro' },
],
and_gate: 'no — the off-by-one alone fully accounts for the symptom',
};
assertRcaSchemaInvariants(output);
assert.strictEqual(output.root_causes.length, 1, 'single-cause session records exactly one root cause (criterion 2: unaffected)');
});
test('invariant: a confirmed cause can never also appear in eliminated', () => {
const bad = {
root_causes: [{ id: 'x', category: 'code', evidence: 'e' }],
eliminated: [{ id: 'x', category: 'code', evidence: 'e' }],
and_gate: 'no',
};
assert.throws(() => assertRcaSchemaInvariants(bad), /disjoint/);
});
test('invariant: AND-gate=yes with a single confirmed cause is flagged as incomplete', () => {
const incomplete = {
root_causes: [{ id: 'only-one', category: 'code', evidence: 'e' }],
eliminated: [],
and_gate: 'yes — two conditions required simultaneously',
};
assert.throws(() => assertRcaSchemaInvariants(incomplete), />=2/);
});
});
});

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": "95441545abeab3f5",
"agents/gsd-debugger.md": "a41ea4bc59ea744f",
"agents/gsd-debug-session-manager.md": "523f28a1ed8a4536",
"agents/gsd-debugger.md": "71beaf5bd92bac6e",
"agents/gsd-doc-classifier.md": "fca19595590391df",
"agents/gsd-doc-synthesizer.md": "0e5184bbcf0dca02",
"agents/gsd-doc-verifier.md": "888c6ac870cb91a6",
@@ -61,7 +61,8 @@
"gsd-core/references/context-budget.md": "177520ead2ae3a23",
"gsd-core/references/continuation-format.md": "580287399ad3ba68",
"gsd-core/references/debugger-fix-acceptance.md": "87d367e4e864910e",
"gsd-core/references/debugger-philosophy.md": "1cb61d4565081c88",
"gsd-core/references/debugger-philosophy.md": "459a8ac647c4ce9c",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-sbfl.md": "de9cd1bd0e1485c6",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "883d0a1b9d9ff96e",
@@ -153,7 +154,7 @@
"gsd-core/references/worktree-branch-check.md": "21d9c31bf6542b93",
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
"gsd-core/templates/DEBUG.md": "88e8753b4296b586",
"gsd-core/templates/DEBUG.md": "0df505199f1c248b",
"gsd-core/templates/README.md": "28160dd8b0631652",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "68d32d1fea14e184",

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": "2f775ae4ab8855a0",
"agents/gsd-debugger.md": "a0ec84b507f2e036",
"agents/gsd-debug-session-manager.md": "d2b983f774816e9a",
"agents/gsd-debugger.md": "10bc326f43c3ce13",
"agents/gsd-doc-classifier.md": "262a94b947a4e2aa",
"agents/gsd-doc-synthesizer.md": "01f90ea9b0d05d7d",
"agents/gsd-doc-verifier.md": "b3433e0db51e1c60",
@@ -132,7 +132,8 @@
"gsd-core/references/context-budget.md": "f1ce57bf418824af",
"gsd-core/references/continuation-format.md": "ce73e57d053ab8a7",
"gsd-core/references/debugger-fix-acceptance.md": "5616622f33e00436",
"gsd-core/references/debugger-philosophy.md": "0466f95a3d6bfcd3",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-sbfl.md": "a7d0cd5940d6d2cd",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "67d019d23e17f934",
@@ -224,7 +225,7 @@
"gsd-core/references/worktree-branch-check.md": "21d9c31bf6542b93",
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
"gsd-core/templates/AI-SPEC.md": "efa1f8354bd3a24b",
"gsd-core/templates/DEBUG.md": "81b60f25e9e7c9a3",
"gsd-core/templates/DEBUG.md": "f85918715fef9743",
"gsd-core/templates/README.md": "93d3426fc64e2c12",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "9e296471b97ebcec",

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": "7e08652ad1c48efb",
"agents/gsd-debugger.md": "3c0526872ae337d7",
"agents/gsd-debug-session-manager.md": "11afaabc2a749f32",
"agents/gsd-debugger.md": "b3910b8cc38d167e",
"agents/gsd-doc-classifier.md": "a76778bdde1c7f72",
"agents/gsd-doc-synthesizer.md": "8b0b6fc187c9d353",
"agents/gsd-doc-verifier.md": "4232dcf9076e3566",
@@ -131,7 +131,8 @@
"gsd-core/references/context-budget.md": "6bfac08025ea3106",
"gsd-core/references/continuation-format.md": "580287399ad3ba68",
"gsd-core/references/debugger-fix-acceptance.md": "5616622f33e00436",
"gsd-core/references/debugger-philosophy.md": "0466f95a3d6bfcd3",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-sbfl.md": "a7d0cd5940d6d2cd",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "883d0a1b9d9ff96e",
@@ -223,7 +224,7 @@
"gsd-core/references/worktree-branch-check.md": "21d9c31bf6542b93",
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
"gsd-core/templates/DEBUG.md": "50062753f2f0c24c",
"gsd-core/templates/DEBUG.md": "ba1d879f05b7ee2e",
"gsd-core/templates/README.md": "90d2617778373147",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "68d32d1fea14e184",

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": "a813e6b226b2be58",
"agents/gsd-debugger.md": "fc975cf160dfee7a",
"agents/gsd-debug-session-manager.md": "3a6614424653612b",
"agents/gsd-debugger.md": "bd5e2b010ca6bb0b",
"agents/gsd-doc-classifier.md": "a636ae9594b25770",
"agents/gsd-doc-synthesizer.md": "dfb95eedfb3789bf",
"agents/gsd-doc-verifier.md": "4232dcf9076e3566",
@@ -60,7 +60,8 @@
"gsd-core/references/context-budget.md": "533eae480bfc4bb8",
"gsd-core/references/continuation-format.md": "580287399ad3ba68",
"gsd-core/references/debugger-fix-acceptance.md": "5616622f33e00436",
"gsd-core/references/debugger-philosophy.md": "0466f95a3d6bfcd3",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-sbfl.md": "a7d0cd5940d6d2cd",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "883d0a1b9d9ff96e",
@@ -152,7 +153,7 @@
"gsd-core/references/worktree-branch-check.md": "21d9c31bf6542b93",
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
"gsd-core/templates/DEBUG.md": "50062753f2f0c24c",
"gsd-core/templates/DEBUG.md": "ba1d879f05b7ee2e",
"gsd-core/templates/README.md": "90d2617778373147",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "68d32d1fea14e184",

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": "dd70329c06ec5b79",
"agents/gsd-debugger.md": "706cc2c87a8da251",
"agents/gsd-debug-session-manager.md": "55788b44fdfc4375",
"agents/gsd-debugger.md": "7773cd1a65b723bf",
"agents/gsd-doc-classifier.md": "5011d7358d2b2848",
"agents/gsd-doc-synthesizer.md": "e59cdd669876582d",
"agents/gsd-doc-verifier.md": "b60290c9d9f6d8d2",
@@ -64,7 +64,8 @@
"gsd-core/references/context-budget.md": "c154ba00dbbf4477",
"gsd-core/references/continuation-format.md": "ce73e57d053ab8a7",
"gsd-core/references/debugger-fix-acceptance.md": "1057d70f7f2d654a",
"gsd-core/references/debugger-philosophy.md": "0466f95a3d6bfcd3",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-sbfl.md": "6e4975ee50973c23",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "67d019d23e17f934",
@@ -156,7 +157,7 @@
"gsd-core/references/worktree-branch-check.md": "46882ad61f3f9075",
"gsd-core/references/worktree-path-safety.md": "8e5b4d542d2d9853",
"gsd-core/templates/AI-SPEC.md": "efa1f8354bd3a24b",
"gsd-core/templates/DEBUG.md": "81b60f25e9e7c9a3",
"gsd-core/templates/DEBUG.md": "f85918715fef9743",
"gsd-core/templates/README.md": "004c355d4b02b145",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "9e296471b97ebcec",

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": "6dc05c3ac8a3f2cc",
"agents/gsd-debugger.md": "54ab502a6b751680",
"agents/gsd-debug-session-manager.md": "9f56455afb580275",
"agents/gsd-debugger.md": "dd19b31e62f3d052",
"agents/gsd-doc-classifier.md": "c2bf59af9467810b",
"agents/gsd-doc-synthesizer.md": "b2a179bf3c9bd636",
"agents/gsd-doc-verifier.md": "e74d930905a782ea",
@@ -132,7 +132,8 @@
"gsd-core/references/context-budget.md": "f1ce57bf418824af",
"gsd-core/references/continuation-format.md": "ce73e57d053ab8a7",
"gsd-core/references/debugger-fix-acceptance.md": "5616622f33e00436",
"gsd-core/references/debugger-philosophy.md": "0466f95a3d6bfcd3",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-sbfl.md": "a7d0cd5940d6d2cd",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "67d019d23e17f934",
@@ -224,7 +225,7 @@
"gsd-core/references/worktree-branch-check.md": "21d9c31bf6542b93",
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
"gsd-core/templates/AI-SPEC.md": "efa1f8354bd3a24b",
"gsd-core/templates/DEBUG.md": "81b60f25e9e7c9a3",
"gsd-core/templates/DEBUG.md": "f85918715fef9743",
"gsd-core/templates/README.md": "93d3426fc64e2c12",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "9e296471b97ebcec",

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": "5c7af4adccaa9597",
"agents/gsd-debug-session-manager.toml": "e3b962d5478f2b46",
"agents/gsd-debugger.md": "fefd9d1a59661bff",
"agents/gsd-debugger.toml": "83dbb27716668d91",
"agents/gsd-debug-session-manager.md": "c2b615fce5adc13e",
"agents/gsd-debug-session-manager.toml": "4420cb596ad6b183",
"agents/gsd-debugger.md": "75dbb44988dc6c27",
"agents/gsd-debugger.toml": "793203a40a0c5a26",
"agents/gsd-doc-classifier.md": "2745bc04d7b93666",
"agents/gsd-doc-classifier.toml": "3fe5ec83f62b586e",
"agents/gsd-doc-synthesizer.md": "4f545f2e916458ad",
@@ -167,7 +167,8 @@
"gsd-core/references/context-budget.md": "0b67ea1d5db4bc08",
"gsd-core/references/continuation-format.md": "e64c0da2b3d0f2f0",
"gsd-core/references/debugger-fix-acceptance.md": "b2732420bdbcadcd",
"gsd-core/references/debugger-philosophy.md": "1cb61d4565081c88",
"gsd-core/references/debugger-philosophy.md": "459a8ac647c4ce9c",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-sbfl.md": "391e732abf32786a",
"gsd-core/references/decimal-phase-calculation.md": "ee363ec47be68922",
"gsd-core/references/doc-conflict-engine.md": "257aba80c93854d4",
@@ -259,7 +260,7 @@
"gsd-core/references/worktree-branch-check.md": "21d9c31bf6542b93",
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
"gsd-core/templates/AI-SPEC.md": "6411a4789f481c15",
"gsd-core/templates/DEBUG.md": "0b3251208f63b437",
"gsd-core/templates/DEBUG.md": "f6d2f4365490e5ad",
"gsd-core/templates/README.md": "dc13994dabe139a2",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "59a3d4f6c4afbfc9",

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": "bbea35c986c88ce6",
"agents/gsd-debugger.agent.md": "358b4c70a38b4341",
"agents/gsd-debug-session-manager.agent.md": "77ee029f0f81c09d",
"agents/gsd-debugger.agent.md": "e467c0235e5002f9",
"agents/gsd-doc-classifier.agent.md": "aea81c0ba00e06cf",
"agents/gsd-doc-synthesizer.agent.md": "6ae32e4db005696d",
"agents/gsd-doc-verifier.agent.md": "0230208ae7ab1a08",
@@ -62,7 +62,8 @@
"gsd-core/references/context-budget.md": "435474d5e10be65a",
"gsd-core/references/continuation-format.md": "580287399ad3ba68",
"gsd-core/references/debugger-fix-acceptance.md": "812922e2b5db9410",
"gsd-core/references/debugger-philosophy.md": "1cb61d4565081c88",
"gsd-core/references/debugger-philosophy.md": "459a8ac647c4ce9c",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-sbfl.md": "5bb65a8653bf2e06",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "883d0a1b9d9ff96e",
@@ -154,7 +155,7 @@
"gsd-core/references/worktree-branch-check.md": "21d9c31bf6542b93",
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
"gsd-core/templates/DEBUG.md": "88e8753b4296b586",
"gsd-core/templates/DEBUG.md": "0df505199f1c248b",
"gsd-core/templates/README.md": "da29c64b438065b3",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "68d32d1fea14e184",

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": "69a051432e54f9a5",
"agents/gsd-debugger.md": "ac61fdd3129770c5",
"agents/gsd-debug-session-manager.md": "5e47d7b36e262219",
"agents/gsd-debugger.md": "8d3a21e3f8e3f059",
"agents/gsd-doc-classifier.md": "a6ab02b8f45f9d0b",
"agents/gsd-doc-synthesizer.md": "fd3c18addbc8265d",
"agents/gsd-doc-verifier.md": "9934ec11845d41c3",
@@ -132,7 +132,8 @@
"gsd-core/references/context-budget.md": "304dcdab82a27623",
"gsd-core/references/continuation-format.md": "580287399ad3ba68",
"gsd-core/references/debugger-fix-acceptance.md": "86b7cbde0171fafd",
"gsd-core/references/debugger-philosophy.md": "0466f95a3d6bfcd3",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-sbfl.md": "838445590aab52e3",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "883d0a1b9d9ff96e",
@@ -224,7 +225,7 @@
"gsd-core/references/worktree-branch-check.md": "ab004404d028cc0d",
"gsd-core/references/worktree-path-safety.md": "66de0b35266c807d",
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
"gsd-core/templates/DEBUG.md": "50062753f2f0c24c",
"gsd-core/templates/DEBUG.md": "ba1d879f05b7ee2e",
"gsd-core/templates/README.md": "83a3d5b593587e83",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "68d32d1fea14e184",

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": "60945a8dcfb7e3d7",
"agents/gsd-debugger.md": "8a375259b81d8adf",
"agents/gsd-debug-session-manager.md": "de03d1f43295518f",
"agents/gsd-debugger.md": "904b45639181d8cb",
"agents/gsd-doc-classifier.md": "29b563a146c9d22c",
"agents/gsd-doc-synthesizer.md": "652beb928e93fa1d",
"agents/gsd-doc-verifier.md": "d3d8457bdd44bf10",
@@ -61,7 +61,8 @@
"gsd-core/references/context-budget.md": "b93e9f47aa1b1753",
"gsd-core/references/continuation-format.md": "580287399ad3ba68",
"gsd-core/references/debugger-fix-acceptance.md": "b04b913d5ea0ac90",
"gsd-core/references/debugger-philosophy.md": "0466f95a3d6bfcd3",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-sbfl.md": "70e699200f6197e0",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "883d0a1b9d9ff96e",
@@ -153,7 +154,7 @@
"gsd-core/references/worktree-branch-check.md": "5d79e26e3b51d9ae",
"gsd-core/references/worktree-path-safety.md": "fa79fcdff2aaa5f0",
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
"gsd-core/templates/DEBUG.md": "50062753f2f0c24c",
"gsd-core/templates/DEBUG.md": "ba1d879f05b7ee2e",
"gsd-core/templates/README.md": "89560317a9097a05",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "68d32d1fea14e184",

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": "621c4c28af4f7b01",
"agents/gsd-debugger.md": "c9fcb57e5f6e6ee7",
"agents/gsd-debug-session-manager.md": "59191275e650f655",
"agents/gsd-debugger.md": "a661848ce5505080",
"agents/gsd-doc-classifier.md": "6256bbc0b887f60f",
"agents/gsd-doc-synthesizer.md": "212aaf89a34b51d7",
"agents/gsd-doc-verifier.md": "8016f792d0766b77",
@@ -132,7 +132,8 @@
"gsd-core/references/context-budget.md": "533eae480bfc4bb8",
"gsd-core/references/continuation-format.md": "580287399ad3ba68",
"gsd-core/references/debugger-fix-acceptance.md": "b2732420bdbcadcd",
"gsd-core/references/debugger-philosophy.md": "1cb61d4565081c88",
"gsd-core/references/debugger-philosophy.md": "459a8ac647c4ce9c",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-sbfl.md": "391e732abf32786a",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "883d0a1b9d9ff96e",
@@ -224,7 +225,7 @@
"gsd-core/references/worktree-branch-check.md": "21d9c31bf6542b93",
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
"gsd-core/templates/DEBUG.md": "88e8753b4296b586",
"gsd-core/templates/DEBUG.md": "0df505199f1c248b",
"gsd-core/templates/README.md": "73d3c9689b6efbc9",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "68d32d1fea14e184",

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": "69b3083e7e29c435",
"agents/subagents/gsd-debug-session-manager.md": "c71b4debebaa978e",
"agents/subagents/gsd-debug-session-manager.yaml": "aab147717b5082e7",
"agents/subagents/gsd-debugger.md": "a2f38433646baffc",
"agents/subagents/gsd-debugger.md": "176aa5bfdde031e5",
"agents/subagents/gsd-debugger.yaml": "6d02d7feb90cad43",
"agents/subagents/gsd-doc-classifier.md": "632dc6c61bafa63e",
"agents/subagents/gsd-doc-classifier.yaml": "a4e9cf7025b57503",
@@ -125,7 +125,8 @@
"gsd-core/references/context-budget.md": "f1ce57bf418824af",
"gsd-core/references/continuation-format.md": "ce73e57d053ab8a7",
"gsd-core/references/debugger-fix-acceptance.md": "5616622f33e00436",
"gsd-core/references/debugger-philosophy.md": "0466f95a3d6bfcd3",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-sbfl.md": "a7d0cd5940d6d2cd",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "67d019d23e17f934",
@@ -217,7 +218,7 @@
"gsd-core/references/worktree-branch-check.md": "21d9c31bf6542b93",
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
"gsd-core/templates/AI-SPEC.md": "efa1f8354bd3a24b",
"gsd-core/templates/DEBUG.md": "81b60f25e9e7c9a3",
"gsd-core/templates/DEBUG.md": "f85918715fef9743",
"gsd-core/templates/README.md": "93d3426fc64e2c12",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "9e296471b97ebcec",

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": "cb64aa404849be60",
"agents/gsd-debugger.md": "1653f7447e3fa8a8",
"agents/gsd-debug-session-manager.md": "b5a39dcf10210cbb",
"agents/gsd-debugger.md": "739bfe544f55f191",
"agents/gsd-doc-classifier.md": "fb776cfbb7e991b0",
"agents/gsd-doc-synthesizer.md": "2389f388d291c2eb",
"agents/gsd-doc-verifier.md": "65bbc2ae6b9ace29",
@@ -132,7 +132,8 @@
"gsd-core/references/context-budget.md": "355826e667f9ccd1",
"gsd-core/references/continuation-format.md": "580287399ad3ba68",
"gsd-core/references/debugger-fix-acceptance.md": "b2732420bdbcadcd",
"gsd-core/references/debugger-philosophy.md": "1cb61d4565081c88",
"gsd-core/references/debugger-philosophy.md": "459a8ac647c4ce9c",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-sbfl.md": "391e732abf32786a",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "883d0a1b9d9ff96e",
@@ -224,7 +225,7 @@
"gsd-core/references/worktree-branch-check.md": "21d9c31bf6542b93",
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
"gsd-core/templates/DEBUG.md": "88e8753b4296b586",
"gsd-core/templates/DEBUG.md": "0df505199f1c248b",
"gsd-core/templates/README.md": "73d3c9689b6efbc9",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "68d32d1fea14e184",

View File

@@ -28,7 +28,8 @@
"gsd-core/references/context-budget.md": "f1ce57bf418824af",
"gsd-core/references/continuation-format.md": "ce73e57d053ab8a7",
"gsd-core/references/debugger-fix-acceptance.md": "5616622f33e00436",
"gsd-core/references/debugger-philosophy.md": "0466f95a3d6bfcd3",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-sbfl.md": "a7d0cd5940d6d2cd",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "67d019d23e17f934",
@@ -120,7 +121,7 @@
"gsd-core/references/worktree-branch-check.md": "21d9c31bf6542b93",
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
"gsd-core/templates/AI-SPEC.md": "efa1f8354bd3a24b",
"gsd-core/templates/DEBUG.md": "81b60f25e9e7c9a3",
"gsd-core/templates/DEBUG.md": "f85918715fef9743",
"gsd-core/templates/README.md": "93d3426fc64e2c12",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "9e296471b97ebcec",

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": "e4db798b5a536a2c",
"agents/gsd-debugger.md": "a93dd835d97836c7",
"agents/gsd-debug-session-manager.md": "afe383b6483d4097",
"agents/gsd-debugger.md": "3500269dc9e4fd88",
"agents/gsd-doc-classifier.md": "bdf3d54082424e76",
"agents/gsd-doc-synthesizer.md": "96c383b74a60fbbe",
"agents/gsd-doc-verifier.md": "da9ab6f3ec27778a",
@@ -61,7 +61,8 @@
"gsd-core/references/context-budget.md": "a1351dd40ef8691f",
"gsd-core/references/continuation-format.md": "580287399ad3ba68",
"gsd-core/references/debugger-fix-acceptance.md": "ab6a1cce253944f4",
"gsd-core/references/debugger-philosophy.md": "0466f95a3d6bfcd3",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-sbfl.md": "061b719c754a12d3",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "883d0a1b9d9ff96e",
@@ -153,7 +154,7 @@
"gsd-core/references/worktree-branch-check.md": "3fc21ae9462c35c8",
"gsd-core/references/worktree-path-safety.md": "b4111595eabec186",
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
"gsd-core/templates/DEBUG.md": "50062753f2f0c24c",
"gsd-core/templates/DEBUG.md": "ba1d879f05b7ee2e",
"gsd-core/templates/README.md": "f4825d4fa594f2b1",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "68d32d1fea14e184",

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": "5e64d23321942c1c",
"agents/gsd-debugger.md": "1839444836892ffe",
"agents/gsd-debug-session-manager.md": "ada53877ba56d894",
"agents/gsd-debugger.md": "768876bab90cb1e1",
"agents/gsd-doc-classifier.md": "a6ab02b8f45f9d0b",
"agents/gsd-doc-synthesizer.md": "fd3c18addbc8265d",
"agents/gsd-doc-verifier.md": "e51e50892963ccc7",
@@ -61,7 +61,8 @@
"gsd-core/references/context-budget.md": "b7e9640063775c98",
"gsd-core/references/continuation-format.md": "580287399ad3ba68",
"gsd-core/references/debugger-fix-acceptance.md": "134f83886c343733",
"gsd-core/references/debugger-philosophy.md": "0466f95a3d6bfcd3",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-sbfl.md": "23d7a3bb15bc8b7c",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "883d0a1b9d9ff96e",
@@ -153,7 +154,7 @@
"gsd-core/references/worktree-branch-check.md": "8de8075d76ff71cd",
"gsd-core/references/worktree-path-safety.md": "34689482908229bc",
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
"gsd-core/templates/DEBUG.md": "50062753f2f0c24c",
"gsd-core/templates/DEBUG.md": "ba1d879f05b7ee2e",
"gsd-core/templates/README.md": "332f65072c3f03ae",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "68d32d1fea14e184",

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": "7ea9975264a99b2c",
"agents/gsd-debugger.md": "520dbc9408761e2e",
"agents/gsd-debug-session-manager.md": "b7d57cd8ed9103d3",
"agents/gsd-debugger.md": "eff6469d58661c73",
"agents/gsd-doc-classifier.md": "a6ab02b8f45f9d0b",
"agents/gsd-doc-synthesizer.md": "fd3c18addbc8265d",
"agents/gsd-doc-verifier.md": "ede2f297b73b5a86",
@@ -61,7 +61,8 @@
"gsd-core/references/context-budget.md": "ff843cd6139c8564",
"gsd-core/references/continuation-format.md": "580287399ad3ba68",
"gsd-core/references/debugger-fix-acceptance.md": "ddd00cbd78dd3fdf",
"gsd-core/references/debugger-philosophy.md": "0466f95a3d6bfcd3",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-sbfl.md": "071651eaf7414a4c",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "883d0a1b9d9ff96e",
@@ -153,7 +154,7 @@
"gsd-core/references/worktree-branch-check.md": "f6018dddf15bc1cb",
"gsd-core/references/worktree-path-safety.md": "0e8a26b9b3424974",
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
"gsd-core/templates/DEBUG.md": "50062753f2f0c24c",
"gsd-core/templates/DEBUG.md": "ba1d879f05b7ee2e",
"gsd-core/templates/README.md": "ee35799bf08677f3",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "68d32d1fea14e184",

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": "716e31255a94e0ce",
"agents/gsd-debugger.md": "376cb361acbafafd",
"agents/gsd-debug-session-manager.md": "baf23c3834eb36ba",
"agents/gsd-debugger.md": "113f31a0c3c1d075",
"agents/gsd-doc-classifier.md": "146acf4d176134b5",
"agents/gsd-doc-synthesizer.md": "b1f5e2eb28fa3659",
"agents/gsd-doc-verifier.md": "7ed4d9611f678a95",
@@ -132,7 +132,8 @@
"gsd-core/references/context-budget.md": "f1ce57bf418824af",
"gsd-core/references/continuation-format.md": "ce73e57d053ab8a7",
"gsd-core/references/debugger-fix-acceptance.md": "5616622f33e00436",
"gsd-core/references/debugger-philosophy.md": "0466f95a3d6bfcd3",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-sbfl.md": "a7d0cd5940d6d2cd",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "67d019d23e17f934",
@@ -224,7 +225,7 @@
"gsd-core/references/worktree-branch-check.md": "21d9c31bf6542b93",
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
"gsd-core/templates/AI-SPEC.md": "efa1f8354bd3a24b",
"gsd-core/templates/DEBUG.md": "81b60f25e9e7c9a3",
"gsd-core/templates/DEBUG.md": "f85918715fef9743",
"gsd-core/templates/README.md": "93d3426fc64e2c12",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "9e296471b97ebcec",

View File

@@ -62,6 +62,7 @@
"gsd-core/references/continuation-format.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-sbfl.md",
"gsd-core/references/decimal-phase-calculation.md",
"gsd-core/references/doc-conflict-engine.md",

View File

@@ -133,6 +133,7 @@
"gsd-core/references/continuation-format.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-sbfl.md",
"gsd-core/references/decimal-phase-calculation.md",
"gsd-core/references/doc-conflict-engine.md",

View File

@@ -132,6 +132,7 @@
"gsd-core/references/continuation-format.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-sbfl.md",
"gsd-core/references/decimal-phase-calculation.md",
"gsd-core/references/doc-conflict-engine.md",

View File

@@ -61,6 +61,7 @@
"gsd-core/references/continuation-format.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-sbfl.md",
"gsd-core/references/decimal-phase-calculation.md",
"gsd-core/references/doc-conflict-engine.md",

View File

@@ -65,6 +65,7 @@
"gsd-core/references/continuation-format.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-sbfl.md",
"gsd-core/references/decimal-phase-calculation.md",
"gsd-core/references/doc-conflict-engine.md",

View File

@@ -133,6 +133,7 @@
"gsd-core/references/continuation-format.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-sbfl.md",
"gsd-core/references/decimal-phase-calculation.md",
"gsd-core/references/doc-conflict-engine.md",

View File

@@ -168,6 +168,7 @@
"gsd-core/references/continuation-format.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-sbfl.md",
"gsd-core/references/decimal-phase-calculation.md",
"gsd-core/references/doc-conflict-engine.md",

View File

@@ -63,6 +63,7 @@
"gsd-core/references/continuation-format.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-sbfl.md",
"gsd-core/references/decimal-phase-calculation.md",
"gsd-core/references/doc-conflict-engine.md",

View File

@@ -133,6 +133,7 @@
"gsd-core/references/continuation-format.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-sbfl.md",
"gsd-core/references/decimal-phase-calculation.md",
"gsd-core/references/doc-conflict-engine.md",

View File

@@ -62,6 +62,7 @@
"gsd-core/references/continuation-format.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-sbfl.md",
"gsd-core/references/decimal-phase-calculation.md",
"gsd-core/references/doc-conflict-engine.md",

View File

@@ -133,6 +133,7 @@
"gsd-core/references/continuation-format.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-sbfl.md",
"gsd-core/references/decimal-phase-calculation.md",
"gsd-core/references/doc-conflict-engine.md",

View File

@@ -126,6 +126,7 @@
"gsd-core/references/continuation-format.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-sbfl.md",
"gsd-core/references/decimal-phase-calculation.md",
"gsd-core/references/doc-conflict-engine.md",

View File

@@ -133,6 +133,7 @@
"gsd-core/references/continuation-format.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-sbfl.md",
"gsd-core/references/decimal-phase-calculation.md",
"gsd-core/references/doc-conflict-engine.md",

View File

@@ -29,6 +29,7 @@
"gsd-core/references/continuation-format.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-sbfl.md",
"gsd-core/references/decimal-phase-calculation.md",
"gsd-core/references/doc-conflict-engine.md",

View File

@@ -62,6 +62,7 @@
"gsd-core/references/continuation-format.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-sbfl.md",
"gsd-core/references/decimal-phase-calculation.md",
"gsd-core/references/doc-conflict-engine.md",

View File

@@ -62,6 +62,7 @@
"gsd-core/references/continuation-format.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-sbfl.md",
"gsd-core/references/decimal-phase-calculation.md",
"gsd-core/references/doc-conflict-engine.md",

View File

@@ -62,6 +62,7 @@
"gsd-core/references/continuation-format.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-sbfl.md",
"gsd-core/references/decimal-phase-calculation.md",
"gsd-core/references/doc-conflict-engine.md",

View File

@@ -133,6 +133,7 @@
"gsd-core/references/continuation-format.md",
"gsd-core/references/debugger-fix-acceptance.md",
"gsd-core/references/debugger-philosophy.md",
"gsd-core/references/debugger-rca-branching.md",
"gsd-core/references/debugger-sbfl.md",
"gsd-core/references/decimal-phase-calculation.md",
"gsd-core/references/doc-conflict-engine.md",