mirror of
https://bitbucket.org/siakitem/my-pi.git
synced 2026-08-28 16:45:22 +00:00
59 lines
3.5 KiB
Markdown
59 lines
3.5 KiB
Markdown
---
|
|
issue: 10
|
|
issue_title: "Consolidate config into .pi/extensions/pi-permission-system/config.json (match pi-autoformat convention)"
|
|
---
|
|
|
|
# Retro: #10 — Consolidate config layout
|
|
|
|
## Final Retrospective (2026-05-03T03:30:00Z)
|
|
|
|
### Session summary
|
|
|
|
Implemented the full config consolidation: new `config-paths.ts` and `config-loader.ts` modules, rewired `permission-manager.ts`, `index.ts`, `config-reporter.ts`, and all test harnesses to the new `extensions/<id>/config.json` layout.
|
|
Legacy-path detection and merge landed with migration warnings.
|
|
Schema, example, README, and AGENTS.md updated in lockstep.
|
|
Released as v3.0.0 (breaking change).
|
|
Post-release, enriched the JSON schema with examples, defaults, `markdownDescription`, deprecated hints, and per-enum descriptions.
|
|
|
|
### Observations
|
|
|
|
#### What went well
|
|
|
|
- The plan's TDD order was close enough to execute linearly.
|
|
Steps 7 (logging) and 10 (config-modal) were naturally absorbed into step 9 because the existing code was already parameterized — recognizing this and collapsing them avoided empty commits.
|
|
- Legacy-path detection worked correctly on first implementation.
|
|
The `normalize()` comparison to avoid false positives when the extension root happens to equal the new global path was tested and caught a real edge case.
|
|
- The schema enrichment after shipping was a clean, user-driven iteration.
|
|
The `ask_user` interaction surfaced five concrete improvements; the user selected all five and the result is a significantly better editor experience.
|
|
|
|
#### What caused friction (agent side)
|
|
|
|
1. `missing-context` — In step 9, I cached `getAgentDir()` as the module-level constant `PI_AGENT_DIR` and passed it into `createPermissionManagerForCwd`.
|
|
Tests set `PI_CODING_AGENT_DIR` after the module was imported, so `PI_AGENT_DIR` was stale.
|
|
This caused 4 test failures in the external-directory tests.
|
|
Diagnosing the root cause required tracing through `piPermissionSystemExtension` init → `PermissionManager` constructor → `defaultGlobalConfigPath()` → `getAgentDir()` call timing.
|
|
Impact: ~3 edit-run-debug cycles and several minutes of investigation.
|
|
Self-identified — I traced the failure to the stale constant without user intervention.
|
|
|
|
2. `premature-convergence` — In step 6, I initially changed `defaultGlobalConfigPath()` in `permission-manager.ts` to use the new layout path, which immediately broke 5 integration tests.
|
|
I had to revert that change and defer it to step 9.
|
|
A closer reading of the test harness flow before changing the default path would have shown the dependency.
|
|
Impact: one revert edit, minor rework.
|
|
Self-identified.
|
|
|
|
3. `missing-context` (formatting) — Three commits were rejected by the Biome pre-commit hook.
|
|
Each required `npm run lint:fix` and re-staging.
|
|
`pi-autoformat` is configured for this project and should have formatted files automatically on `agent_end`, but the `/tdd-plan` workflow commits immediately after tests go green — likely before `agent_end` fires the formatter flush.
|
|
The friction is not inherent to `Write`/`Edit` tools; it is a sequencing gap between the TDD commit cadence and the autoformatter's `agent_end` trigger.
|
|
Impact: added friction but no rework.
|
|
|
|
#### What caused friction (user side)
|
|
|
|
- None observed.
|
|
The user's issue body was exceptionally detailed (proposed file shape, layout question resolved, migration plan, acceptance criteria).
|
|
This eliminated ambiguity that would normally require `ask_user` during planning.
|
|
|
|
### Changes made
|
|
|
|
1. Added rule to `AGENTS.md` § Code Style: do not cache `getAgentDir()` at module scope.
|