Repository navigation
fix(steward): accept retained Codex fallback for native work - #8082
Conversation
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; GPT-6; OpenAI; self_reported
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机 / Motivation
已将私聊管家保留在 Codex 备用通道的用户,在管理原周期监控和详细汇报时遇到错误禁用。
同一管家偏好 Antigravity、原会话已分配 Codex:旧版仍拒绝周期操作,新版沿原身份受理,同时保留来源失效时的拒绝。 已验证合格备用通道的配置与准入恢复,原 actor、日历和窗口保留。 不切换宿主、不扩大权限,不宣称本次已完成真实模型日报或全部历史业务回传。
这是有用的有限增量,而不是整个日报需求完成。真实模型日报生成、安装后的自然送达和其它未闭业务仍需原服务独立验收。 如果只删 HTTP 禁用,实际 native consent 仍拒绝;如果再写 Python 条件,会增加第二处规则。此次应复用既有 Core 决策。
改动思路 / Approach
共享 Core 判断执行器匹配,原生 owner 继续决定授权和写入;新增接口只投影已有事实,未新增可人工同步的状态。 本 PR 仅修复原生准入与设置投影,实际宿主选择、额度、生成和投递继续由原 owner 管理。
在确切 head ecf7ad4b81203461103ea2379f09adcee681691e,原输入、上下文恢复和原生任务共用 boundConversationExecutorMatches;observeStewardNativeExecutor 只返回可用性,Python 只传输,仍由 stewardManagedBasis 与原宿主判断来源、grant、actor、队列和窗口。最强反对理由是绿色设置可能被误解为已恢复完整生成,因此文档明确区分配置准入、模型执行和实际送达。没有新增调度器、consumer、持久布尔状态或额度策略。
| 相同原会话状态 | 基线 | 候选 |
|---|---|---|
| Core 已分配合格 Codex 备用通道 | 原生操作被偏好配置否决 | 沿原身份进入已有准入 |
| 只有偏好或历史线程,缺合格 allocation | 拒绝 | 继续拒绝 |
| 原来源不可用 | 保留原状态并拒绝 | 继续拒绝,恢复来源后可操作 |
这是依据源码和执行证据的比较表;没有把示意图或字段存在当作运行证明。
具体改动 / Changes
规范基线是 docs/product/periodic-reports.md,spec_revision bd79adc649680818f44f7c5f7e5743645309fc3d。采用修改前的约定作判断:identity-retention 已实现并以原 actor/history/window 读回核验;source-bound-consent 已实现并覆盖来源、受众、空闲队列和错误窗口;one-native-owner 已实现,仍只有原队列、宿主和 publication owner,未知失败不自动重放。新增文档只解释修复与验收边界,不能反过来改写接受条件。
关键代码讲解
conversation_scope.ts:220的boundConversationExecutorMatches搬移原匹配条件,不缩短它:双方 Codex 身份、flexible 策略、准确候选集、配置 revision 和 Antigravity 来源历史共同成立才接受备用通道;原输入和恢复两处调用复用它。steward_managed_mode.ts:419的observeStewardNativeExecutor是纯观察,保留普通 Codex 分支,新增已有合格 allocation 的观察结果。已有 RPC 家族承载结果,StewardManagedMode.health消费它,API 删除独立的偏好否决。- 同文件
stewardManagedBasis只替换执行器条件,private、grant、channel/source、actor、closed/busy/queued 与后续 report-window 检查均保留;观察结果不能跳过这些准入。
整体文本 160 行新增、25 行删除,主要为既有测试扩展和说明,生产规则以移动和复用为主。两张 PNG 是当前指南的合成数据插图;逐像素检查并检查 PNG 元数据,仅有 IHDR/iCCP/IDAT/IEND,没有文本元数据或真实私聊。public text scan 覆盖十个改动文本文件;二进制不冒充文本扫描通过。
对主干的风险 / Risks
未发现阻塞本次改动的缺陷。最危险反例是历史线程或可用性字段被误当授权;typed tests 覆盖 pinned、错误 allocation、错误来源/受众、closed/attached、忙碌队列与错误窗口,HTTP/UI 实际执行来源失败和恢复路径。真正的 host/account pool 仍在 dispatch 前检查;合成既有 wake 的配置不匹配时明确拒绝,模型调用为零,因此不能据本 PR 宣称已生成或已送达日报。
PASS:69 项 TS、96 项 binding、File/SQLite 两条真实 HTTP、control-plane typecheck、Chat 打包、Ruff 和 diff-check。旧基线使用相同 harness 在新增的备用通道断言上失败,证明回归敏感性。premerge 的 6 个直接检查和 11 个选定检查均通过;两个图片 manual hold 由本次准确 head 的像素、元数据和来源审查覆盖,自动 gate 的原始 manual_review_required 结果保留,未将其伪装为授权。
FAIL 保留:扩大五组回归为 381 passed / 14 failed。逐项基线对照复现 13 个同名同详情的旧 local managed host/retarget/refusal 问题,因果路径未被本次 private-fallback 条件改动;另一个 retained-probe 在基线和候选单独运行均通过,仍保留不稳定性,未以重跑绿覆盖历史。本次变更不修改该本地路径、断言或时限;直接的 changed-invariant 证据独立通过。完整模型/长期定时送达未验证,属于未关闭的父需求。
语义与 CI 对齐
复用已有 allocation 和原生 actor/source 语义,没有新增 quota/权限词汇或迁移。当前契约明确 wait_for_ci=false,未查询、轮询或等待 CI。无需为无关历史测试更改预算或门禁;merge readiness 与本 review 结论分开。
我的整体评价 / Verdict
long_horizon 与 user_experience 均为 improved:消除稳定复现的错误否决,同时保留原任务、失败、队列优先级和未知效果等待;现有授权下不增加用户额外设置或确认轮次。实际打包界面在相同合成数据下由错误禁用变为可操作,原窗口和失败状态继续可读;源码未改版式或正文。 真实模型正文质量和安装后的自然定时送达另行验收,本次截图与合成旅程不作这两项证明。
本次范围与成本相称,兼容路径保留有真实消费者:普通 Codex 的旧字段形状、真正不支持的执行器、现有存储 actor/history/calendar 均保留。下一步由正常安装后的原服务自行接受执行和原受众投递检验;这不授权手工代理业务或重放未知结果。只有 exact-head review、图片人工审查和独立 merge readiness 均满足且原授权仍有效时才可合并。
English verdict: APPROVE — ecf7ad4b81203461103ea2379f09adcee681691e fixes the demonstrated retained-fallback admission mismatch; focused native/HTTP/UI checks pass. Broader pre-existing failures, intermittency and live scheduled-delivery limits remain explicit.
当私聊管家偏好 Antigravity、原 Session 已由 Core 分配到合格的 flexible Codex 备用通道时,普通输入可以继续,周期任务却仍按配置偏好被拒绝,设置中的四个操作也被禁用。
本改动把既有 executor 匹配规则移到共享 Core owner,供原输入、恢复和 native consent 共同复用;HTTP 设置读取 Core 的执行器观察结果。它不选择新宿主,不启用 Antigravity 原生定时执行,也不放宽来源、受众、授权、空闲队列或窗口检查。原 actor、历史、日历、失败与投递回执保留。
验证: