[fix] A live-route repair no longer clears every other eviction check - #6372
[fix] A live-route repair no longer clears every other eviction check#6372mmabrouk wants to merge 2 commits into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. 🗂️ Base branches to auto review (1)
Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository YAML (base), Organization UI (inherited) Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
📘 Docs preview
This comment updates in place on every push. |
3ecf16e to
e895ed6
Compare
66bf2da to
c5f0f39
Compare
c5f0f39 to
ca7d734
Compare
e895ed6 to
a0755aa
Compare
Found by a code audit of the cold/warm flows (follow-up to #6364). The coordinator computed the eviction reason with an else-if chain and the live model route then set mismatch = undefined wholesale, so a repair of the CONFIG question also cleared every question the chain never reached: - a model switch riding an EDITED transcript continued warm on a native conversation still holding the unedited turn; - riding a ROTATED credential with no delivery port, it ran on the old baked key (silently, if the old key still worked); - riding an EXPIRING mount lease, it let the turn die under the mount; - riding a stale tail, it ran a turn the tail check should have evicted. The claude live route has been exposed since step 6 shipped; #6364 makes the route fire for pi_core too, widening the surface, so this belongs in the same stack. Each repair door now marks ITS reason repaired and re-asks the ordered checks. A model switch with a deliverable rotation chains both repairs and stays warm (pinned); the four bad pairings rebuild (pinned). Claude-Session: https://claude.ai/code/session_014s6jqKCsVKsNMmnrJVJkZt
Finding 1 is fixed in this branch; findings 2-8 are queued with their cheapest standing check named, so the record survives the session that produced it. Claude-Session: https://claude.ai/code/session_014s6jqKCsVKsNMmnrJVJkZt
ca7d734 to
74bc668
Compare
a0755aa to
1deffd7
Compare
Context
Found by the cold/warm code audit that followed #6364. The coordinator computed the eviction reason with an else-if chain (config first), and a successful live model route then set
mismatch = undefinedwholesale. The repair answered one question and cleared the answers to all of them. Proven with a test harness, warm reuse (acquire == 1) in every case:The claude live route has been exposed since step 6 shipped. #6364 makes the route fire for
pi_coretoo, so this fix belongs in the same stack.Changes
Before: one
mismatchvalue from an else-if chain; a successful repair cleared it entirely.After: the ordered checks live in one
firstMismatch()function; each repair door (the live config route, the credential delivery route) marks its own reason repaired and asks again. The remaining reasons keep their order and their semantics. A model switch with a deliverable rotation chains both repairs and stays warm; any unrepaired reason still evicts.One accepted cost: when a model switch rides a bad pairing, the in-place apply happens before the other mismatch is discovered, on an environment that is then destroyed. A wasted
setModelon a doomed sandbox is harmless; the warm reuse was not.Tests
Stacked on #6370.
https://claude.ai/code/session_014s6jqKCsVKsNMmnrJVJkZt