# Batch 1 — 014/017 narrative correction (post-021 deep-review)

USER CLARIFICATION (authoritative):
- Q1=A: the actual ship state is `EMBEDDINGS_PROVIDER=auto` cascading Voyage → OpenAI → llama-cpp (when GGUF runtime installed) → hf-local. The `factory.ts` code is CORRECT. The 014/017 implementation-summary's claim that "hf-local restored as automatic default; llama-cpp explicit opt-in" is WRONG. Fix the narrative, not the code.
- Q2=yes: Voyage auto-pick when `VOYAGE_API_KEY` is set is intended.

ALLOWED WRITE PATHS (touch ONLY these files; banned operations below for anything else):
- `.opencode/specs/system-spec-kit/026-graph-and-context-optimization/014-local-embeddings-setup-a/spec.md`
- `.opencode/specs/system-spec-kit/026-graph-and-context-optimization/014-local-embeddings-setup-a/handover.md`
- `.opencode/specs/system-spec-kit/026-graph-and-context-optimization/014-local-embeddings-setup-a/SETUP_A_RECIPE.md`
- `.opencode/specs/system-spec-kit/026-graph-and-context-optimization/014-local-embeddings-setup-a/017-llama-cpp-default-flip/implementation-summary.md`

BANNED OPERATIONS (RM-8 Layer 1):
- NO `rm`, `rm -rf`, `git rm`, `mv`, `sed -i`, `rmdir`, `find ... -delete`
- NO `git add`, `git commit`, `git push`, NO branch changes
- NO writes to any file not listed in "ALLOWED WRITE PATHS"
- If you detect a need to mutate outside scope, RECORD it as "SCOPE_VIOLATION: <path>: <why>" in a final report instead of executing

YOUR TASK:
1. For each of the 4 allowed-write files:
   a. Read it
   b. Find every occurrence of (case-insensitive) "llama-cpp explicit opt-in", "explicit opt-in", "hf-local restored as automatic default", or any wording that frames llama-cpp as opt-in-only or hf-local as the auto default
   c. Replace with wording matching the ACTUAL ship state: "auto-cascade resolves Voyage → OpenAI → llama-cpp (when GGUF runtime is installed) → hf-local; llama-cpp is auto-selected by availability probe, not by an explicit opt-in flag. Explicit override via `EMBEDDINGS_PROVIDER=<provider>` remains available."

2. Preserve all OTHER historical context unchanged:
   - 014/014 ONNX rejection evidence
   - 014/015 parity-failed measurements (mean 0.968)
   - 014/016 retrieval-equivalent finding (recall@5 overlap 0.912)
   - 014/017 migration evidence (2488 rows, MILD_DIVERGENCE) — but FIX the conclusion wording
   - Provider precedence ordering when correctly stated
   - All other text, timestamps, commit hashes

3. Specifically in `017-llama-cpp-default-flip/implementation-summary.md`:
   - The final-state/recommendation sentence currently says hf-local restored as default and llama-cpp explicit opt-in. Rewrite it: "Operator accepted the flip; llama-cpp is auto-selected when the GGUF runtime is available, with hf-local retained as the health-checked fallback. Explicit override via `EMBEDDINGS_PROVIDER=hf-local` remains available."
   - Any `_memory.continuity.recent_action` or `next_safe_action` fields referencing "explicit opt-in" should be updated accordingly.

4. In parent `spec.md` and `handover.md`, look for SetupA / Recipe / decision-log sections that frame llama-cpp as opt-in or hf-local as the default-auto. Fix them. Do NOT touch unrelated migration history.

5. In `SETUP_A_RECIPE.md`, similarly fix any user-facing instruction that tells the user llama-cpp is opt-in or hf-local is the default. The recipe should say: when llama-cpp is installed, it's auto-selected; users with the GGUF runtime get llama-cpp by default.

6. After editing, output a final structured report:

```
BATCH 1 REPORT
File: <path> — <N edits> — <one-line summary>
File: <path> — <N edits> — <one-line summary>
...
Scope violations: <none | list>
Total edits: <N>
```

Do NOT commit. Do NOT run git. Stop after writing the report.
