Skip to main content
Phase: Phase 0 — Scaffold + TestPrism + Bootstrap UX · Status: closed · Filed 2026-04-16

What 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
Last modified on April 20, 2026