---
issue: 19
issue_title: "Drop legacy ~/.pi/agent/settings.json fallback for MCP server names"
---

# Retro: #19 — Drop legacy `~/.pi/agent/settings.json` fallback for MCP server names

## Final Retrospective (2026-05-03T02:05:00Z)

### Session summary

Removed the `legacyGlobalSettingsPath` fallback from `PermissionManager`, making `mcp.json` the sole file-based source for MCP server name derivation.
Three slash-command steps (`/plan-issue`, `/tdd-plan`, `/ship-issue`) executed with zero user corrections and zero rework.
Released as v1.2.0.

### Observations

#### What went well

- **End-to-end pipeline without intervention.**
  Plan → TDD → ship executed in sequence with no user corrections, redirections, or rework.
  The issue body was precise, the plan was unambiguous, and the implementation was a pure removal.
- **Correct red→green test design despite misleading plan language.**
  The plan's TDD step 1 suggested the test "should pass even before the removal," but a proper red→green cycle needs a failing test.
  The agent correctly wrote a test that fails before the fix (by passing `legacyGlobalSettingsPath` to the constructor, proving the legacy path is active) and passes after (when the option is removed).
  The test was updated in the green commit — a minor plan deviation but the right call.

#### What caused friction (agent side)

- `instruction-violation` (self-identified) — Markdownlint MD060 (table column alignment) failed the pre-commit hook on the plan commit because separator widths didn't match header widths.
  This is the same friction seen in the #18 retro.
  MD060 is not auto-fixable by `markdownlint-cli2 --fix`.
  Impact: one failed pre-commit hook, ~30 seconds of rework.

#### What caused friction (user side)

- No friction observed.

### Changes made

1. Created `docs/retro/0019-drop-legacy-settings-json-mcp-fallback.md` (this file).
2. Added markdownlint MD060 table-column-alignment rule to `AGENTS.md` § Markdown (not auto-fixable; must match separator widths to header widths).
