Repository navigation
Tell the user when a picked model is not the one answering - #722
Conversation
The vendor's list only arrives with session/new, so no upstream gate can refuse the launch over an unavailable model. The note is gated on the launch having picked one: a daemon-wide default the vendor omits would nag every time. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
PR Summary by QodoSurface ACP model fallback in the transcript
AI Description
Diagram
High-Level Assessment
Files changed (4)
|
Code Review by Qodo
1.
|
Which of the three the selector hit does not reach the runtime, so the note cannot name one. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…elector A vendor whose selector cannot apply a model is the case most in need of the note, and the clear that keeps the dashboard honest is what hid it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Closes #716 — AI-2385
What & why
A launch carrying a model the vendor does not publish runs the vendor's default instead. That is correct — the model list only arrives with
session/new, so no upstream gate can refuse the launch over it — but the only trace was a daemon-log warning, and the launcher went on showing the model the user picked while a different one answered. The runtime now puts onesystem_noteon the transcript naming the dropped model and the vendor whose default is running.Both launcher surfaces already clear the model when the vendor changes, so this closes the half of the issue that was still open. The
Launching agentlog line now also carries the vendor, so a future requested-vs-running mismatch is attributable from one line rather than by correlating with a later runtime line — which PTY vendors never emit.Where to look
The note is gated on the launch having picked a model, not merely on one reaching the selector:
ResolveRequestedModelsubstitutes the daemon-wide default, and a default the vendor omits would otherwise produce this note on every launch. That gate and the substitution share one predicate so they cannot disagree.Verification
Three new pins in
AcpModelFallbackNoticeTests, driving the real factory againstFakeAcpAgent: the mismatch note, silence when the model is applied, and silence for a daemon default the vendor does not publish (assertingResolvedModelis null, so the drop really happens). Daemon unit suite 2869 total, 0 failed. AOT publish of the daemon clean of IL3050/IL2026.🤖 Generated with Claude Code