Files
my-pi/pi-permission-system/docs/retro/0035-align-test-mock-cleanup-rules.md
T

49 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
issue: 35
issue_title: "Align #21 test files with updated mock-cleanup and node:* default-export rules"
---
# Retro: #35 — Align #21 test files with updated mock-cleanup and node:\* default-export rules
## Final Retrospective (2026-05-03T05:58:17Z)
### Session summary
Planned, implemented, and shipped a test-infrastructure cleanup that brought four test files written in #21 into conformance with two AGENTS.md rules added during the #21 retro.
All four files were updated in four atomic commits; `npx vitest run` and `npm run build` stayed green throughout; the release-please PR for v3.0.2 was merged at the end.
### Observations
#### What went well
- **Nuance caught at plan time, not implementation time.**
The plan identified upfront that `compileWildcardPatterns` has a non-trivial default implementation in its `vi.mock()` factory (it transforms a patterns object into a compiled array), and that `mockReset()` would wipe it — meaning `mockClear()` was the right call for that stub while `mockReset()` was fine for the others.
Catching this during planning prevented a mid-implementation red-herring debugging pass.
- **Atomic per-file commits.**
One commit per test file made the CI history clean and each step independently revertable.
#### What caused friction (agent side)
None observed.
The issue was tightly scoped, the plan was accurate, and the implementation matched the design exactly.
#### What caused friction (user side)
- The user asked whether the `mockClear` vs `mockReset` distinction was from authoritative sources before confirming the AGENTS.md sharpening.
The existing rule wrote `(or .mockClear())` parenthetically without explaining when to choose either option, which left room for doubt.
Impact: one extra round-trip before the retro change was confirmed; no rework.
### Broader pattern
This issue was a retroactive cleanup of rules added during the #21 retro.
The sequence — (1) add rule to `AGENTS.md`, (2) notice existing files violate it, (3) file a follow-up issue — is the correct pattern.
One refinement worth noting: the moment a new testing rule is added to `AGENTS.md`, a quick scan for pre-existing violations and an immediate follow-up issue (if any are found) would collapse steps 2 and 3 into the retro that adds the rule.
### Changes made
1. Sharpened the `mockReset` vs `mockClear` rule in `AGENTS.md` § Testing (lines 107109):
replaced the parenthetical "(or `.mockClear()`)" with two explicit sentences explaining
when to use each, sourced from official Vitest documentation.
2. Created `docs/retro/0035-align-test-mock-cleanup-rules.md` (this file).