Skip to content

fix(chat): reconcile adopted steward executor bindings - #8589

Merged
huangruiteng merged 1 commit into
mainfrom
codex/reconcile-bound-steward-executor-20261111
Nov 11, 2026
Merged

huangruiteng merged 1 commit into
mainfrom
codex/reconcile-bound-steward-executor-20261111

Conversation

@loopx-agent

Copy link
Copy Markdown
Collaborator

An existing private steward Session can already have the configured executor while its conversation binding still points to the previous executor. Core then rejects discovery of the original App Session, and the provider admission path cannot use that Session.

Chat startup now reconciles the executor field through the existing binding owner. It verifies the current machine configuration, the idle original Session, and the provider and operator for the original private grant. When a previous write retained a machine transaction revision, the exact document is verified before the steward allocation is rebuilt. The binding revision advances atomically after the allocation readback.

The regression exercises original App discovery and delivery from a previously prepared provider request through the same Session and client Turn ID. It covers a publication interruption, an existing queue, a stale configuration, a different operator, and a default change without Session adoption.

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, GPT-6 family, OpenAI, self_reported

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

Reviewed exact head: bbbc7c3

动机 / Motivation

通过原私聊或 App 打开同一管家会话的所有者。已采用的新执行器写入原 Session,但旧绑定仍指向之前的执行器。App 解析原会话失败,原路由无法继续使用这个会话。已采用执行器的 owner-private steward Session 空闲,绑定端点落后,机器配置仍匹配。App 再次解析原 Session。隔离环境中,原队列对待准入事件生成一次执行,最终回传沿同一来源读回。历史失败请求、进行中的执行、权限授权和群聊采用各自现有生命周期。线上安装及原会话的新自然请求仍待单独验收。精确提交还需独立评审。

改动思路 / Approach

本次范围是原私聊、原 Session、原绑定和既有授权下的执行器元数据采用。Chat 启动调用既有绑定所有者。Core 通过原授权检查决定是否允许更新,Python 在绑定锁内持久化并读回。继续使用既有的 provider、operator、工作区和 Session 授权检查。机器默认值只有在原 Session 已采用该执行器时才能触发这一步。更新先落分配记录,再发布绑定端点。发布中断时,下次启动可按原绑定重试。

具体改动 / Changes

  • C1 在 Chat 启动和原传输开始接收消息之间对齐端点。loopx/chat_server.py:2047 调用原绑定所有者。loopx/capabilities/native_chat/conversation_bindings.py:204 检查只有一个匹配的空闲原 Session,核对队列及机器配置版本,并在原绑定锁内提交。完整机器配置事务版本需要与现存配置精确一致,之后才能投影到标准管家分配记录。
  • C2 loopx/control_plane/collaboration/conversation_binding.ts:236 重用 Core 的原会话解析来验证绑定 ID、provider、operator、工作区与授权。分配和绑定都读回后,App 入口仍指向原 Session。tests/test_chat_conversation_bindings.py:733 覆盖绑定发布中断、队列忙、配置陈旧、operator 不匹配和仅改默认值,以及原队列完成一次执行并读回回传。原私聊和 App 入口契约

对主干的风险 / Risks

风险集中在身份误配、用陈旧配置更新端点、绑定发布中断及运行中修改。Core 复用原身份授权检查,Python 在持久化前后复核空闲、队列及配置。原队列和回传由各自现有所有者处理。隔离验证包括两种原入口元数据、180 项 Chat 回归、68 项 Core 测试及标准预检。禁用启动修复后,正例在旧绑定版本的断言处失败。已采用的服务版本与当前候选之间仍有安装和原消息验收。

我的整体评价 / Verdict

修复覆盖一个可独立验收的边界。两条入口继续使用原 Session,候选在发布中断后恢复原绑定,并让原队列处理一次待准入事件。当前结论覆盖此精确提交的作者复核。运行时改动进入主干仍需独立评审,线上采用另有安装和回传验证。

English verdict: APPROVE

@huangruiteng
huangruiteng merged commit 1d0bad0 into main Nov 11, 2026
27 of 44 checks passed
@huangruiteng
huangruiteng deleted the codex/reconcile-bound-steward-executor-20261111 branch November 11, 2026 10:54
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.

2 participants