Adopt a shared LLMProvider protocol (list/load/unload/chat/structured-chat) as the adapter pattern answer to GitHub issue #15 — Ollama and llama.cpp share the chat/structured-output mechanism via pydantic-ai while model lifecycle stays backend-specific per provider. Supersedes ADR-006, narrows ADR-004's scope to non-chat REST calls. Adds epic 007 (llm-provider-abstraction, prerequisite) and the llamacpp-integration epic it unblocks, plus the full spec/plan/tasks/BDD scaffold for the prerequisite epic. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0132ojafeazQ3ephcBejEWFj