From ca4251ddeae65278daafc84245eeedbf68727dd8 Mon Sep 17 00:00:00 2001 From: garrytan Date: Sat, 31 Oct 2026 15:04:48 +0000 Subject: [PATCH] changelog.d: GSTA-167 PR B fragment Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --- changelog.d/gsta-167-reviewer-pin.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 changelog.d/gsta-167-reviewer-pin.md diff --git a/changelog.d/gsta-167-reviewer-pin.md b/changelog.d/gsta-167-reviewer-pin.md new file mode 100644 index 000000000..c32c8ff99 --- /dev/null +++ b/changelog.d/gsta-167-reviewer-pin.md @@ -0,0 +1,11 @@ +**/ship's Step 11 outside voice now defaults to the model it was tested with, and a same-family outside voice is refused.** On a lane running an Anthropic model, the pass program uses `openai/gpt-6.1-sol` at medium reasoning when no outside-voice model is given. That is the pairing no-loss rounds 3 to 6 and A3668 ran. Until now the lane picked the model (gpt-6-astra in replays 6c, 7e and 8g), and the only check was that some model was given, so a Claude outside voice beside a Claude native voice would have run as "outside" (GSTA-167 plan R2 and O2). + +### Changed +- **Outside-voice default, Anthropic lanes only** (`lib/capy-review-pass.js`): with no `models['outside-voice']` and an `anthropic/` `laneModel`, the voice runs on `openai/gpt-6.1-sol` at medium. Any other lane, or no lane identity, still stops with "none was given", because an OpenAI lane's pairing is not certified. +- **Same-family STOP**: an outside voice whose provider (the part before `/`) matches the lane model or the native voice's model stops the pass before either voice is created. The check runs again on every rerun of the same manifest and before a queued voice is started. An explicit outside voice with no lane model and no native model to compare against also stops. +- **Overrides are labeled**: each dispatched outside voice prints an `OUTSIDE_VOICE:` line saying whether it is the certified configuration. A different model or reasoning level still runs, marked "outside the certified configuration". +- **Step 14.5 docs audit runs once on Sonnet 5.5** (`ship/DRIVER.md`). In replay C5 the docs audit first ran on a smaller model whose reply lacked its JSON line, then ran again on Sonnet, which wasted 1.55M tokens. To stay under the driver's 12 KB cap, one sentence that repeated Phase 4 and 5 ("A fix repeats Phases 3-4.") was removed. + +### Tests +- `test/review-pass.test.ts`: five new fake-host cases: a same-family override stops; a rerun or a queued start still refuses it; a missing lane identity stops; an Anthropic lane gets the certified default with every brief byte-identical to naming that model; an override with changed reasoning runs and is labeled uncertified. The Step 11 case now passes `laneModel: undefined` to keep its "none was given" check, since an Anthropic lane gets the default. +- `test/ship-driver.test.ts`: the audit-reader assertion names Step 14.5's Sonnet 5.5 run.