# Implementation Iteration History: Multi-Provider Local Models

This file records how the implementation plan was assembled from the existing research, OpenSpec docs, and codebase review.
Committed decisions live in [implementation-decision-log.md](implementation-decision-log.md). The primary plan lives in
[../feature-implementation-plan.md](../feature-implementation-plan.md).

## R1: Coordinator pass grounded in source docs and local code review

- **Specialists engaged:** coordinator-only pass using the existing research note, OpenSpec design/tasks, implementation analysis, root and app `CLAUDE.md` files, ADRs, coding standard, and targeted code search. No separate specialist tool round was run in this repo pass.
- **New input provided:** [../build-phase-outline.md](../build-phase-outline.md), [./.discovery-notes.md](./.discovery-notes.md), the OpenSpec batch, and the current code seams in server, web, and coder.
- **Claim ledger:**

  | # | Claim | State | Spec-maturity |
  |---|---|---|---|
  | C1 | There is no single source of truth for local providers shared by server and coder | Evidenced | plan-level |
  | C2 | Composite `provider/model` ids are required for duplicate model names across hosts | Evidenced | plan-level |
  | C3 | Routing logic is duplicated across streaming, non-streaming, context, compaction, task-model, and Arena | Evidenced | plan-level |
  | C4 | Favorites belong in settings plus client derivation, not in the server catalog | Evidenced | plan-level |
  | C5 | Native BooCoder can adopt the shared resolver before `opencode` can | Evidenced | plan-level |
  | C6 | The current `opencode` bridge collapses local identity and needs a provider-preserving gateway | Evidenced | plan-level |
  | C7 | Arena is a separate local-model consumer and must be planned explicitly | Evidenced | plan-level |
  | C8 | BooControl depends on this substrate and should not be built first | Evidenced | plan-level |

- **Open Questions raised:**
  - OQ-1: shared local-provider authority format and location
    Resolution: D-1, `/data/llama-providers.json` plus `LLAMA_PROVIDERS_PATH`
  - OQ-2: canonical local model identity format
    Resolution: D-2, composite `provider/model`
  - OQ-3: how to achieve external-agent parity honestly
    Resolution: D-6, `boocode-local` gateway
  - OQ-4: whether add-a-machine is UI-driven in this batch
    Resolution: D-7, no, keep config-driven

- **Spec-maturity tags:** all findings were plan-level. No spec-stage reopening was required because the earlier research and OpenSpec docs already settled the behavior.
- **Resolution source:** evidence from source docs plus current code inspection.
- **Decisions produced:** D-1, D-2, D-3, D-4, D-5, D-6, D-7, D-8.
- **Changed in plan:** initial authoring of `feature-implementation-plan.md` and its three supporting artifacts.
- **Next-step recommendation:** go to synthesis. The work is ready to execute as W1 through W8 in order, with W7 as the main hard seam and W8 as the operational closeout.
