---
name: context-retrieval-loop
description: Use when about to refactor, rename, or remove code, assessing dead code before deletion, or unsure of the blast radius of a change.
---

# Context Retrieval Loop (Codebase Maintenance)

Gather context before any refactor or maintenance task. Prevents breaking undetected callers or missing test coverage.

## When to Use

- About to refactor, rename, or remove code
- Assessing dead code before deletion
- Unsure of the blast radius of a change

## The 3-Cycle Loop

### Cycle 1 — Broad Search

```bash
# Find callers and references
rg "<symbol-name>" --type ts --type js -l
rg "<symbol-name>" --glob "*.py" -l
```

Stop here if you can confirm the symbol is unused (no results).

### Cycle 2 — Exact Source and Tests

Read the target file and its tests. Find all callers:

```bash
rg "import.*<module>" -l
rg "<function-name>" --glob "*.test.*" -l
```

Stop here if you understand the change scope and existing test coverage.

### Cycle 3 — Config and Build

```bash
# Check if symbol appears in build or config
rg "<symbol-name>" *.config.* tsconfig.json Makefile -l 2>/dev/null
```

Check for re-exports, barrel files, and public API surfaces.

## Output

```
Context gathered:
  <file-path> — <reason>

Blast radius:
  <N> callers in <N> files
  Tests covering this code: <yes/no/partial>

Missing context (if any):
  <what is still unclear>
```

Do not start a refactor without knowing the blast radius. If callers are unclear after Cycle 3, stop and report.

## Verification

- [ ] Cycles ran in order and stopped at the first satisfied condition — never past 3
- [ ] Blast radius is reported: caller count, files affected, test coverage status
- [ ] Re-exports, barrel files, and public API surfaces were checked before concluding
- [ ] No refactor started while callers remained unclear — stopped and reported instead
