fix Β· diff

git:20260710.4567e40 to git:20260826.3720324

8 added, 28 removed. Audit A to A.

---
name: fix
description: Plan-aware auto-fix loop after coding. Runs tests, lint, format, and graph checks. Updates plan task status. Use after execute/tdd.
mcp: codebase-memory-mcp
---
# /supergraph:fix
Plan-aware auto-fix loop. Ensure tests pass, lint clean, format applied, graph risks handled.
## Usage
`/supergraph:fix` | `/supergraph:fix plan auth-login` | `/supergraph:fix plan auth-login task 2`
## Steps
### 0. Announce
"πŸ”§ /supergraph:fix β€” starting auto-fix loop..."
### 1. Select Plan Context
0 plans β†’ skip | 1 β†’ use | >1 β†’ ask | `plan <slug>` β†’ match.
Read `## Environment Context`, fix scoped task or all in-progress/stuck tasks.
### 2. Get Commands
Read from plan `## Environment Context` or `.supergraph-env` (set by `/supergraph:scan`). Missing β†’ STOP, run scan first.
Missing command β†’ skip phase, report as `SKIP`.
### 3. Get Changed Files
-
- ```bash
- git diff --name-only && git diff --cached --name-only
- ```
- Reindex changed files before graph analysis (graph may be stale after edits):
- ```
- index_status(project=CBM_PROJECT); if stale/degraded, index_repository(repo_path=<absolute>, name=CBM_PROJECT, mode=CBM_INDEX_MODE)
- ```
- Graph: project-scoped `detect_changes`, `trace_path` call/data-flow, and validated
- `cycles`, `test-gaps`, `complexity`, and `cross-boundary` recipes.
- No changed files and no in-progress/stuck tasks β†’ STOP: nothing to fix.
-
- ### 3b. Serena pre-loop diagnostics (optional)
-
- If `/supergraph:scan` was not run this session, call `mcp__serena__initial_instructions()` first. Skip entire step if `SERENA_ACTIVE=false` in `.supergraph-env`.
+ `git diff --name-only && git diff --cached --name-only`. Reindex `CBM_PROJECT` if stale (`index_status`β†’`index_repository`, see `references/codebase-memory-contract.md`) via `codebase-memory-mcp`.
- Before starting the fix loop, triage IDE-level errors with Serena:
- ```
- for each changed_file:
- mcp__serena__get_diagnostics_for_file(file=changed_file)
- ```
- Fix any type errors found before entering the loop β€” reduces iterations by catching obvious errors early.
- Skip if Serena unavailable.
+ ### 3b. Serena pre-loop (optional): See `serena/SKILL.md:Setup`. If scan not run, call `initial_instructions`; `get_diagnostics_for_file` per changed file to catch type errors early. Skip if `SERENA_ACTIVE=false` or unavailable.
### 4. Auto-Fix Loop (max 3 iterations)
At iteration start: "πŸ”§ Fix iteration N/3 β€” running tests..."
| Phase | Action |
|---|---|
- | **Reproduce** | Smallest failing command + expected vs actual. Classify: assertion / crash / timeout / env / data pollution / race. |
- | **Tests** | Run targeted tests (from graph) else `$TEST_CMD`. FAIL β†’ trace to root cause, fix source. Don't modify tests unless demonstrably wrong. |
- | **Serena fix** | After source fix: `mcp__serena__get_diagnostics_for_file(file=<fixed_file>)` β€” confirm fix didn't introduce new type errors before re-running suite. For body fixes: prefer `mcp__serena__replace_symbol_body(symbol=<fn>)`. For renames: `mcp__serena__rename_symbol(old, new)`. Skip if Serena unavailable. |
- | **Format+Lint** | `$FORMAT_CMD` then `$LINT_CMD`. If format changed files β†’ re-run lint. |
- | **Graph** | Check `index_status`; stale/degraded triggers `index_repository`. Then `detect_changes`, `trace_path`, and contract recipes `cycles`, `test-gaps`, `complexity`, `cross-boundary`. CRITICAL β†’ fix. WARNING β†’ fix or record. |
- | **Decide** | All clean β†’ break. Tests/lint fail β†’ continue loop. |
+ | Reproduce | Smallest failing cmd + expected vs actual |
+ | Tests | Targeted tests else `$TEST_CMD`; fix source |
+ | Serena fix | `get_diagnostics_for_file` + `replace_symbol_body`/`rename_symbol` (see `serena/SKILL.md`) |
+ | Format+Lint | `$FORMAT_CMD`β†’`$LINT_CMD`; rerun lint if formatted |
+ | Graph | Reindex `CBM_PROJECT` if stale (`index_status`β†’`index_repository`), then `codebase-memory-mcp` recipes `cycles/test-gaps/complexity/cross-boundary` |
+ | Decide | All clean→break else continue |
### 5. Update Plan Status (if plan exists)
- Succeeded β†’ `Status: completed`
- Failed after 3 β†’ `stuck` + append STUCK log
- Never mark completed if tests or lint fail
### 6. Report
```
## Auto-Fix Report
- Iterations: N/3 | Tests: PASS|FAIL|SKIP | Lint: PASS|FAIL|SKIP | Format: PASS|SKIP
- Graph: PASS|WARNING|CRITICAL | Plan status: updated|none
- Issues: [list or "none"]
Next: /supergraph:verify β†’ /supergraph:review
```
## Rules
- Max 3 fix iterations
- Never commit broken code
- Never use `git add -A`
- Never hide failures by weakening tests
- Prefer source fixes over test edits
- CRITICAL graph findings: fix or escalate
- Warnings: fix or report
- Prefer `mcp__serena__replace_symbol_body` for body fixes and `mcp__serena__rename_symbol` for renames when Serena is available