Phase: Phase 0 — Scaffold + TestPrism + Bootstrap UX · Status:
closed · Filed 2026-04-16What Worked
- Manifest-return pattern (ADR-008) — clean separation, idempotent retries
- Atomic config writes with .bak.
<ts>(ADR-009/010) — zero corrupted configs - Idempotent FS-MCP path injection — agents call freely without state reasoning
- Dev API key bypass gated by ENVIRONMENT=development (ADR-005)
- Porting builtin.ts instead of redesigning the tree (ADR-011)
- One-shot start-backend.ps1 kept dev loop tight
What Didn’t
- last_used_at on API keys never persists on GET routes — commit skipped
- Initial install.py before the TS pivot — threw away ~200 LOC
- Asking ‘which one next?’ mid-build — violated AI FIRST mandate
- Implying Frank should extend the CLI — never frame work as a developer task
- Misnamed initial PIDs in TestPrism smoke — decide identity authority on day one
- Claude Desktop launches MCP servers with CWD = system32 — silent server
Lessons
- [project] L1 — GET handlers need explicit commits when they update audit fields
- [project] L2 — All future scaffolders must port from a known-good source rather than redesign
- [project] L3 — Every config edit through .bak.
<ts>+ atomic replace, no exceptions - [project] L4 — Server mints all identifiers (PIDs, IDs, slugs). Never accept from client
- [global] G1 — CLI runtime tracks the editor ecosystem, not the backend
- [global] G2 — AI FIRST and AI ONLY extends P2. When queue is clear, agent executes without asking

