Found during merged-main verification of #40 (c046ef8). Recording only.
- No cancel, no timeout.
build-view.tsx has no stop control and streamProjectRun sets no deadline. A local model that stalls (still loading, wedged Ollama) freezes the Build view indefinitely; the only recovery is a reload, which discards the whole thread.
- Auto-open can yank the user.
composer.tsx:35-41 switches to Build on the first readiness.ready false→true transition — including when that transition happens while the user is deliberately working in Mapper or Governance.
- Readiness flipping false hides the thread. The nav button is disabled from
readiness.reason, so a save that turns gates red mid-session removes the only door back to an in-progress thread (the turns are still in memory).
- Readiness consults emit findings only.
buildReadiness gates on gatesSummary(emit.findings); a project whose own Validate view reports document/S-gate failures can still be admitted to Build, because those findings aren't part of the emit result.
- Readiness never re-checks the corpus. An example that no longer passes S1–S3 (a rule changed after it was saved) still counts toward readiness and is still served as few-shot, so every run inherits it.
- Smaller: model/intent/prompt state is lost on view switches (model silently reverts to
scripted); Enter in the prompt box always starts a fresh build, never a refinement; emit warnings that change what the canvas shows are folded but never rendered.
🤖 Generated with Claude Code
Found during merged-main verification of #40 (c046ef8). Recording only.
build-view.tsxhas no stop control andstreamProjectRunsets no deadline. A local model that stalls (still loading, wedged Ollama) freezes the Build view indefinitely; the only recovery is a reload, which discards the whole thread.composer.tsx:35-41switches to Build on the firstreadiness.readyfalse→true transition — including when that transition happens while the user is deliberately working in Mapper or Governance.readiness.reason, so a save that turns gates red mid-session removes the only door back to an in-progress thread (the turns are still in memory).buildReadinessgates ongatesSummary(emit.findings); a project whose own Validate view reports document/S-gate failures can still be admitted to Build, because those findings aren't part of the emit result.scripted); Enter in the prompt box always starts a fresh build, never a refinement; emit warnings that change what the canvas shows are folded but never rendered.🤖 Generated with Claude Code