fix: resolve historical repair targets from live provider config - #2110
Merged
BigPizzaV3 merged 1 commit intoSep 9, 2026
Merged
Conversation
Contributor
Author
|
补充当前提交
#2098 的独立分支也遇到相同的 x64 镜像卸载/转换失败。两个 PR 都未改动相关打包脚本;底层占用源尚未确定,未另跑 main 基线。本次保留 Provider 修复范围,不混入独立打包修改。 主仓 run 目前需要维护者批准( |
BigPizzaV3
approved these changes
Sep 9, 2026
BigPizzaV3
left a comment
Owner
There was a problem hiding this comment.
复审通过。已核实:改动将历史修复目标从旧文件引用改为从活 provider 配置(config.toml + provider 表)解析快照,并增加 revalidate 保护、failed-closed 语义;本地 Rust provider_sync 49/49 通过、app 层 provider-sync-target.test.ts 3/3 通过(含 history-only/legacy targets fail closed);与最新 main 三-way 合并干净。当前分支无 GitHub checks(UNSTABLE)建议作者触发一次三平台 CI 留档,但本地验证充分,予以合并。
This was referenced Sep 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
在 CCS 等外部工具把当前 Provider 从 A 切到 B 后,“修复历史会话”仍可能优先选择上次保存的 A;即使 live config 中已没有 A 的映射,原实现也允许把会话再次写成 A,导致
Model provider not found。本 PR 让现有修复入口优先使用当前可解析的 Provider,并在写入前验证目标。Changes
config.tomlas TOML. Custom provider IDs must match an exact table key;openairemains built in. IDs are data-driven and case-sensitive, including quoted keys.Validation
cargo test --workspace --all-featuresexposed one existing failure:a_busy_floating_helper_port_fails_immediately_without_waitingexpects 1 attempt although the upstream macOS retry implementation makes 31 attempts. Neither that test nor the core retry implementation is changed here.openairegression coverage checking rollout/SQLite convergence and unchanged config/auth bytes and message body; exact quoted provider IDs; absent/malformed mappings; and a switch at the pre-write boundary.cargo clippy --workspace --all-targets --all-features: completed successfully with warnings; not a warning-free lint claim.git diff --check: passed. Repository-wide rustfmt remains affected by existing formatting drift; unrelated formatting was not rewritten.Scope
Related to #2090: this addresses unsafe target selection in the existing repair path. It does not add the per-session keep/fork policy proposed there or guarantee cross-provider replay of encrypted reasoning content. Automatic repair remains opt-in. External changes after history writes have begun are not made transactional by this patch.
This is independent of #2084's streaming/progress work and #1903's thread-fork workflow, though their shared repair/UI files may need merge reconciliation.