Files
my-pi/pi-permission-system/docs/retro/0053-home-directory-expansion.md
T

35 lines
1.6 KiB
Markdown

---
issue: 53
issue_title: "Support ~/$HOME expansion in permission config patterns"
---
# Retro: #53 — Support ~/$HOME expansion in permission config patterns
## Final Retrospective (2026-05-05T03:09:00Z)
### Session summary
Implemented `~/` and `$HOME/` prefix expansion in wildcard permission patterns, shipping as v4.8.0.
The change adds a single utility (`src/expand-home.ts`) integrated into `compileWildcardPattern()`, making configs portable across machines.
Completed in 4 functional commits + 1 docs commit with zero regressions across 944 tests.
### Observations
#### What went well
- Integration point was surgically minimal — one import + one line in `compileWildcardPattern()` with zero changes to callers.
- The plan's prediction that step 6 ("no code change expected") would pass immediately was correct — the integration tests were green without additional work.
- Using the real `homedir()` in the integration test (`permission-manager-unified.test.ts`) avoided a complex `vi.mock` setup that would have risked breaking the file's `tmpdir()` dependency.
#### What caused friction (agent side)
- `instruction-violation` — First draft of `tests/expand-home.test.ts` used `await import("node:os")` inside a non-async function.
AGENTS.md explicitly documents the `vi.hoisted()` + `vi.mock()` pattern, and `tests/bash-external-directory.test.ts` demonstrates the correct approach 4 lines in.
Self-identified after autoformat/vitest failure.
Impact: one file rewrite (< 30 seconds of rework, no wasted commits).
#### What caused friction (user side)
- None observed.
The issue spec was detailed and unambiguous, including prior art and exact scope.