| name | resolve |
| description | Review pending drift warnings and fix affected documentation or dismiss false positives |
| disable-model-invocation | true |
| allowed-tools | Read, Bash, Glob, Grep, Write, Edit, Agent |
doc-sentinel:resolve
Process accumulated drift warnings from .doc-sentinel-drift.json. For each warning, verify whether the doc actually drifted, fix it if so, or dismiss if it is a false positive.
Phase 1: Load Drift Queue
cat .doc-sentinel-drift.json 2>/dev/null || echo "No drift warnings pending"
If the file is empty or missing, report "No drift warnings to resolve" and exit.
Phase 2: Deduplicate and Group
Group warnings by doc file. Multiple source changes may affect the same doc — process them together for coherent updates.
Example grouping:
ARCHITECTURE.md
- src/routes/auth.ts changed (commit abc123)
- src/routes/users.ts changed (commit def456)
docs/api.md
- src/controllers/payments.ts changed (commit abc123)
Present the grouped summary and total count before proceeding.
Phase 3: Triage Each Group
For each doc file with drift warnings:
3a: Read Current State
Read the doc file and the changed source files to understand what actually changed.
3b: Classify the Drift
Determine what kind of drift occurred:
| Classification | Description | Action |
|---|
| Path moved | Source file was renamed or moved | Update path references in doc |
| API changed | Function signatures, endpoints, or interfaces changed | Update API documentation |
| Config changed | Env vars, ports, or settings changed | Update config references |
| Structure changed | Directories added/removed, module reorganized | Update codemap/architecture sections |
| Behavioral change | Logic changed but interface stayed the same | Update descriptions if they mention specific behavior |
| False positive | Doc references the file but the relevant content did not change | Dismiss |
3c: Apply Fix or Dismiss
For real drift:
- Read the doc section that references the changed code
- Read the new state of the source code
- Update the doc to reflect the current reality
- Keep the same writing style and level of detail as the surrounding content
- If unsure about intent, add a
<!-- TODO: verify --> comment rather than guessing
For false positives:
- Record as dismissed (remove from queue)
- No changes needed
Phase 4: Commit Fixes
After processing all groups:
git add <fixed-doc-files>
git commit -m "docs: resolve documentation drift from recent changes
Updated docs to reflect code changes detected by doc-sentinel:
- <brief summary of fixes>"
Use the docs: commit prefix to prevent the post-commit hook from re-triggering on this commit.
Phase 5: Clear Drift Queue
rm -f .doc-sentinel-drift.json
Phase 6: Report
Print resolution summary:
doc-sentinel: resolved N drift warning(s)
Fixed:
- ARCHITECTURE.md — updated 2 path references
- docs/api.md — updated endpoint documentation
Dismissed (false positives):
- README.md — logo path unchanged despite src/ changes
Remaining:
- None (all warnings resolved)
If any warnings could not be resolved automatically (require human judgment about intent), list them separately under "Needs Review" with specific questions.
Rules
- Always read both the doc and the source before making changes
- Preserve the existing writing style — match tone, detail level, and formatting
- Never remove documentation sections wholesale — update them
- Use
docs: commit prefix to avoid hook feedback loops
- If a doc file has >5 drift warnings from a single commit, consider whether the doc needs a broader rewrite rather than point fixes — dispatch a
drift-resolver agent for complex cases
- Delete
.doc-sentinel-drift.json after processing, even if some warnings were dismissed
- If doc-sync or inkwell is also installed, do not duplicate their work — sentinel fixes references and accuracy, not content generation