Skip to content

fix(chat): open the Core-qualified steward conversation after quota fallback - #8071

Merged
loopx-agent merged 1 commit into
mainfrom
codex/steward-fallback-original-source-20261105
Nov 4, 2026
Merged

loopx-agent merged 1 commit into
mainfrom
codex/steward-fallback-original-source-20261105

Conversation

@loopx-agent

Copy link
Copy Markdown
Collaborator

原管家从 Antigravity 安全切到既有 Codex 备用通道后,Core 已核准同一原会话,App 仍因「配置偏好必须等于当前执行器」的重复判断而显示原会话不可用。现在由既有 Core 原绑定读回决定会话资格;前端保留绑定回显、准确 Session、私有受众和来源验证,继续展示真实执行器。

扩展原 bound-conversation smoke,默认串行覆盖普通项目和已切换管家两条真实 HTTP/SQLite/Core 旅程。无效分配原因、错误配置端点、撤权、外国绑定、关闭会话及旧服务缺失回显继续拒绝;读取不创建替代会话。fixture 仅在临时存储构造已恢复的规范状态,上游模型仍为合成,不将它声称为付费模型切换验证。

Validation: 同一 fixture 对精确基线 0423908 的生产前端复现原 executor mismatch;候选两条旅程通过。原安全额度恢复 8 项检查、TypeScript/打包构建及 Ruff 通过;标准 premerge 的 5 项直接检查和 5 项选定检查全部通过。真实安装后的 App 原会话读回在合并后单独验收。原历史漏答、部分结果和保护门保持开放。

English: trust the existing Core-qualified original Session after a safe steward executor fallback. Do not equate a configured preference with the active executor. Preserve source/audience/Session checks and effect-time Core authorization.

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent; OpenAI Codex; OpenAI; self_reported(host session attribution unavailable,未冒称人工独立评审或精确模型构建)。

Approval conclusion (author-owned PR; GitHub blocks formal self-approval)

动机 / Motivation

APPROVE,未发现此精确 diff 的阻断缺陷。在原管家已经安全切换到既有 Codex 备用通道后,从 App 继续原私聊的用户。同一原会话在 Core 已通过资格检查,界面仍把 Antigravity 配置偏好与当前 Codex 执行器直接比较并报不可用;修复后可直接打开原记录,撤权或无效分配仍拒绝。同一真实 HTTP/SQLite/Core 场景使基线前端复现原错误,候选普通与备用两条旅程通过;打包页面已目视核对长记录、撤权草稿阻断及恢复。本 PR 不创建替代会话、执行模型切换或发送业务消息,不修改 Core 授权、模型池、服务消费者或历史回传的完成标准。真实安装后的原 App 采用、模型回答质量及父级历史问题清账仍需分别验收。

配置偏好是用户希望优先使用哪个通道,当前执行器是原会话已经实际采用的通道,两者不是同一事实。这里不需要用户再选择账号、重建会话或重发原消息;原服务已经保留了安全切换的来源与历史。错误的前端比较会把这个合法状态变成不可用提示,重复刷新也无效,用户反而可能丢失继续阅读原问题的入口。该增量先修复这个确定的入口故障,不用一条可读记录宣称所有历史问题或父级同步目标已完成。

改动思路 / Approach

复用既有 Core 对准确绑定与规范 Session 的资格判断,删除前端错误的二次路由决策;无需新字段、兼容分支、队列或执行器。同一个来源已被 Core 核验后,前端只消费准确 Session 与受众,不把配置偏好当作活动执行器;后续输入仍逐次受原 Core 授权。

依据已接受的 docs/architecture/rfcs/app-conversation-and-async-inbox-v0.md,spec_revision 0423908e9cf46afd7a765552323b842441bd6512,本次相关条款是 ORIGINAL-SELECTOR(准确绑定回显及冻结 Session)、NO-ENTRY-EXECUTION(入口不新建、不改模型或执行器)、CORE-QUALIFIED-SOURCE(同一次新鲜 Core 验证产生来源)和 MATCHING-EXECUTOR(匹配执行器及来源失败关闭)。这些条款按该基线原文审查,未修改 RFC 使其迁就补丁。匹配执行器的资格仍由已有 Core 的规范状态规则决定:既有 Antigravity 偏好下的 Codex 备用必须带准确分配原因、配置身份与原上游证明;不是看到两个端点不同就放行。前端消费这个已核准的来源,不再把配置名称相等当作另一套权限规则。

输入状态 基线入口 当前候选
原 Core 核准同一会话的安全备用通道 因配置偏好不同而误报不可用 直接读取原会话
无效分配、撤权、外国绑定或缺失原目标 原 Core/入口拒绝 继续拒绝并保留恢复入口

此表是所读路径的说明,不替代执行证据。最短合法旅程仍是用户打开已有原会话;已有意图和授权下新增选择、复制、确认回合均为零。真正撤权则保留原来必要的恢复步骤,而不是为减少操作绕过来源验证。

具体改动 / Changes

关键代码讲解

  1. resolveBoundConversation 保留 source schema 和 binding id 的检查,删除配置端点必须等于活动 agent 的错误判断。生产变化只有 +2/-3 行,两个新增注释解释为什么该比较不成立,没有新增前端路由政策或缓存成功标记。
  2. fetchChatSessions 仍发送准确 binding selector,要求服务回显原绑定,并只接受冻结的那一个 Session。旧服务忽略 selector、来源缺失、外国绑定、群受众和关闭会话仍拒绝;读取不会退回普通管家或另一段历史。
  3. 既有 boundExecutorMatches 以及 listLocalBoundSessions 是实际权限判断者,当前 PR 没有改它们。匹配已有原会话还需来源、工作区、受众、上下文与规范分配/历史共同成立;之后任何输入也重新经过原 Core。把检查集中回这个既有 owner,是减少错误的重复判断,不是新增执行许可。

测试复用原 HTTP/SQLite/Core fixture;默认 smoke 串行跑普通项目和已恢复管家两条旅程。备用场景在临时规范存储构造已恢复状态并保留原上游证明,随后所有读取、来源拒绝和分配拒绝都走真实 Core。它不冒称付费模型的实际额度切换;后者仍由既有原 worker 的独立 8 项回归覆盖相应合成边界。原 bootstrap 的两处晚导入增加局部 lint 说明,不改运行行为。曾有一项前端 mock 把「配置端点不同」本身当成错误,本次将它替换为真实 Core 对错误分配原因和错误 configured endpoint 的两项拒绝检查,原来源、受众、回显与 Session 身份反例仍保留。

对主干的风险 / Risks

最强反对理由是删除前端检查可能放过不属于原会话的执行器。独立反例实际经过 HTTP/Core:把分配原因改成不表示安全备用的值,或让 configured endpoint 与原绑定不符,均得到 409,前端保持不可用;来源撤权、原目标关闭、错误回显与跨受众反例也继续拒绝。读取没有新增 Session,普通场景保持两个预置会话,带独立 peer 的备用场景保持三个;页面交互前后规范消息仍为 14 条且没有新活动 Turn。该比较原本不能代替服务端授权;所有实际输入的权限栅栏完整保留。

精确基线 0423908e9cf46afd7a765552323b842441bd6512 的生产前端与同一新 fixture 会在原 executor mismatch 抛错,候选 0445dc63f7f98addde2a2d8dbd67fab4e6759443 的默认两旅程通过;最终 committed head 也完整重跑,避免把 fixture 构造错误或旧成功结果当新版本证明。TypeScript/生产打包与 Ruff 通过,标准 premerge 5 项直接检查和 5 项选择检查全部通过。此 Goal 不查询或等待 CI,本次没有将未观测的远端检查视为通过。公开正文和全部三份改动已独立扫描及读回;首次扫描误把私有证据路径本身作为公开目标的失败保留,重扫的是完全相同正文的内容,不把该失败伪装为原本成功。

该发布包没有迁移 Session、改权限或扩大候选池。旧 UI 仍可能误拒绝合法备用,因此要沿正常包升级路径让真实 App 加载新前端;失败应继续保留原记录和明确恢复,不改配置或创建第二消费者来制造成功。合成页面证明渲染、恢复和边界,不证明模型答案质量或真实飞书全量同步;部署验收和历史欠答继续单独进行。

我的整体评价 / Verdict

复用既有 Core 对准确绑定与规范 Session 的资格判断,删除前端错误的二次路由决策;无需新字段、兼容分支、队列或执行器。同一个来源已被 Core 核验后,前端只消费准确 Session 与受众,不把配置偏好当作活动执行器;后续输入仍逐次受原 Core 授权。long_horizon 与 user_experience 均 improved:原记录在既有安全额度切换后仍可访问,用户无需为显示错误重新选择模型、输入已有信息、确认或重建会话;真正来源故障保持准确提示及可继续的恢复步骤。原 Session 与累计状态仍归既有 owner,不增加后台任务、重试循环或每条消息的人工维护。

已目视检查候选真实打包整页的 1200×888 桌面视口,覆盖 14 条记录、6 篇重复长正文、较早记录、底部输入区及撤权/恢复;无布局或响应式规则变更,本轮不新增窄屏资格。实际画面中的原来源、活动 Codex、用户请求和长正文层级清楚,早期记录与最新记录均可回看,完整答复阅读入口保留;底部故障提示不会被解释为任务完成。撤权后输入草稿保留、发送被禁用,恢复后同一草稿与记录重新出现,未提交该草稿。本机已安装 App 的更新后界面仍待合并部署核验;隔离来源和模型为合成,不证明真实回答质量或完整双端同步。本改动不引入密度、折叠或响应式布局调整,因此不把窄屏、展开控件或长期服务稳定性冒称已验收。

生产实现保持最小、原规范身份与跨层责任一致,测试复用已有真实边界并证明旧实现会失败。认可这个独立可回滚的入口修复;正常升级后的本机 App 和原受众返回仍须实查,父级未答问题、原失败及保护门保持开放。

English verdict: APPROVE — head 0445dc63f7f98addde2a2d8dbd67fab4e6759443 removes an incorrect UI preference-equality check while preserving existing Core qualification of the exact original Session. The immutable UI baseline reproduces the failure; exact-head ordinary/fallback journeys, actual Core refusal cases, packaged-page draft recovery and standard premerge checks pass. Installed App adoption and outstanding original answers remain separate acceptance.

@loopx-agent
loopx-agent merged commit 7f550ae into main Nov 4, 2026
23 of 29 checks passed
@loopx-agent
loopx-agent deleted the codex/steward-fallback-original-source-20261105 branch November 4, 2026 22:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant