Skip to content

fix(collaboration): retain original conversation requests in turn agendas - #7495

Merged
loopx-agent merged 1 commit into
mainfrom
codex/project-request-turn-agenda-20261027
Oct 27, 2026
Merged

loopx-agent merged 1 commit into
mainfrom
codex/project-request-turn-agenda-20261027

Conversation

@loopx-agent

@loopx-agent loopx-agent commented Oct 27, 2026 •

Copy link
Copy Markdown
Collaborator

已授权的原项目会话请求能够在 Inbox 读到结果,却因自动 Goal Turn 摘要仍按旧 Goal/Agent 地址查找,被误报为不可用。这会让请求方后续回合遗漏尚待返回或消费的请求。

本改动让自动摘要与显式 Inbox 结果读取复用现有类型化发出地址 reader,保留原会话 recipient、当前修订与请求方身份。等结果、读到结果和显式消费保持不同状态;请求方或原返回路由冲突时仍报告覆盖不完整。摘要只读,不启动 Turn、不确认接收、不消费结果。相关中英文 RFC 检查点与能力/协议文档同步。

验证(f2746012447d86cacc3151bdc1dc451f69169d0a):

  • 不可变主干基线上的四个自动摘要断言失败;修复后 File/SQLite 完整项目场景 30 项及重点身份/路由负例 6 项通过。
  • 相邻实际入口回归 205 项通过,3 项 Windows 专用用例在本机跳过;聚焦 TypeScript 28 项、control-plane 类型检查、Ruff、双语及差分检查通过。
  • 完整 wheel 隔离安装后,真实 Codex app-server 的原请求、修订/丢队列恢复、请求方身份和路由负例共 10 项通过。1879 个包文件与安装一致,1749 个 Python/TypeScript 文件与源码一致,722 个实际加载模块均来自安装目录;推理为 8 次本地合成响应。
  • 标准 premerge 的 5 项直接检查与 15 项选中检查通过,无人工 hold。完整 TypeScript 套件 5555 项通过、75 项跳过、零失败(247.18 秒);跳过项不作环境资格。此前被宿主中断的运行仍保留。当前作用域质量回执 cqr_7793c9d7c96c0bc8c7d1 已验证有效。

组合补验(GitHub merge candidate 0fff3f3a452974518a39e15d57698d107367bc0f,19e1525a8babdd6bae5d505d72747f64ec21bc8d + 上述提案 head):

  • 目标新增的 8 个提交涉及工作选择、结算与上下文恢复;在该固定组合上,真实 File/SQLite/CLI/HTTP 相关套件 323 项通过,24 项需显式原生宿主的用例在这一轮跳过。聚焦 TypeScript 231 项、类型和双语检查通过。
  • 从该组合重新构建完整前端和 wheel,隔离安装的原项目请求/恢复/身份与路由 10 项再次通过;1879 个包文件、1749 个源码文件一致,722 个实际加载模块均来自安装目录,推理为 8 次本地合成响应。
  • 另用这个安装包显式执行原生 exec/app-server 上下文与自动压缩套件:18 项通过、6 项预期失败。hook 失败后的完整来源回退、additionalContext 压缩丢失及大文本不完整仍保留为未获资格的宿主边界。原断言和超时未改。

此组合资格绑定上述不可变版本;后续主干、正式 App 自然采用及完整成本仍需相应证据。

本提案补齐现有自动摘要 caller;正式 App/原来源的自然采用、请求方实际采用、完整成本及独立评审仍待验证。未改变 UI 布局,未合并或切换全局安装。

…ndas

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.1-sol | OpenAI | runtime_reported | reasoning_effort=max

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

动机 / Motivation

已注册 Agent 向原项目会话发出咨询后,需要在后续正常回合继续跟进该请求。

此前显式 Inbox 能读到结果,自动回合摘要却把原会话当作缺少 Goal/Agent 的记录,导致该承诺只显示为不可用;修复后能看到等待答案或等待显式消费的当前步骤。

真实 File/SQLite 调用已验证请求持续可见、读取后仍待消费、消费后消失;旧结果消费后修订的新版本会重新进入议程。

本次不新增派发、授权、自动消费或外部投递,也不以源码测试证明已安装 provider、真实模型采用或长期净收益。

正式安装后的自然回合采用、模型行为及完整长期成本仍未验证,由既有原项目协作的 Qualification boundary 承接。

改动思路 / Approach

发出请求的地址校验应由现有 collaboration reader 统一拥有,议程只派生读模型,不另建状态或授权分支。

本 PR 的边界是修复原始会话请求的自动议程读取及 requester 一致性,继续复用既有显式消费与修订 owner。

保留显式 Inbox 作为手动补救并不能修好普通回合的跟进;另造队列或给原会话伪造 Goal/Agent 又会扩大状态与身份成本。当前修改将 collectReturns 已有的地址判断收敛为一个 helper,并让自动摘要使用它;结果消费、修订和返回路由继续归原 owner。这里观察的是已获授权的请求,不会凭读取启动工作,也没有新增确认轮次。

路径 旧行为 本 head 核验
原会话已排队或已有答案 自动摘要无法完整读取 显示当前请求及待答复/待消费步骤
已消费旧答案后产生修订 仍受旧地址读取限制 新修订重新可见,旧答案保持历史
requester 或原路由冲突 不能安全推断空队列 incomplete/unavailable;修复来源后恢复

这是已执行用例的概括;没有把示意表作为额外测试证据。

具体改动 / Changes

完整审阅 head f274601 的八个路径,+132/-16:两个现有 TypeScript reader、四份对齐文档和两个现有测试文件。不可变对照为 19e1525;实际 merge-base d52f2e1 的相关 reader、hook、fixture 和原规范 blobs 与该对照相同。

规范依据是 docs/reference/original-project-collaboration.md,spec_revision=19e1525a8babdd6bae5d505d72747f64ec21bc8d。以下标识是本次按原文整理的检查映射,不新增规范要求:ORIGINAL-IDENTITY 已实现精确 requester/原会话地址;ORIGINAL-RETURN 已实现原路由校验与显式消费;ORIGINAL-REVISION 沿用当前修订及恢复;ORIGINAL-AUTHORITY 保持读写与执行授权分离。改后的规范没有被用来反向定义验收。

关键代码讲解

  1. outgoingEntry 从 operation 校验精确 requester,再按规范化 recipient 读取原 entry;还比较 entry.requester 与 operation.requester。显式返回和自动议程共用这一步,避免同一资源出现两套地址判断。
  2. turnContext 对原会话复用 verifyOriginalConversationReturnRoute。路由丢失或冲突计入 unavailable;正常读取继续使用既有 receipt、links、当前结果和20项显示上限,不写入确认或派发。
  3. projectDelegationTurnItem 仅增加已有 schema 的 recipient;当前修订、已消费历史与待消费新答案仍由原状态转换区分,没有新增状态词汇或接收 Agent。

对主干的风险 / Risks

最值得担心的是共用 reader 后误拒旧的合法返回,或把已消费旧结果误当成修订后的完成状态。我独立比较了六个 legacy 完整 packet(空、发出、无关 Agent、返回、读但未消费、消费后)及 File/SQLite 的四个 registered-only/dense 完整 packet,均相等;只归一化观测时间,固定相同 read_command,没有删掉身份、正文、步骤或错误。真实26条 incoming 加3条 outgoing 仍保留两条原会话请求、正确总数和9条省略;篡改 requester 后 unavailable=1,恢复来源后回到完整覆盖。

PASS:142项实际 Python 验证、14项 TypeScript、control-plane typecheck、Ruff、双语及 diff 检查。相同新增断言在旧对照得到10项预期失败/2项通过;当前原会话全套及与主干 24f4768 的合并验证均34项通过,覆盖队列丢失、重启、修订、结果写入失败后恢复和零重复执行。标准 premerge 的5项直接、15项选中检查及八路径公开边界扫描全部通过,无 manual hold,CQR e43d1be9 有效。初始质量结果的引用格式被校验器拒绝,已按真实路径更正;未修改产品源码或放宽检查。

语义与 CI 对齐

这是既有自动读取行为的修复,四份文档明确披露;没有 opt-in/default-off 的新策略,也没有扩展 quota、scheduler、消息或授权。严格拒绝 requester 冲突与原身份规范一致。按当前策略未查询、轮询或等待远端 CI;本结论不宣称远端 CI 成功。

我的整体评价 / Verdict

我将本切片判为 justified_increment:long_horizon 的承诺保留和既有使用路径在已测源码边界得到改善,完整长期效果与费用保持未知。复用和必要收敛已经落在现有 owner 内,未发现需要阻塞的缺陷;补充上下文中的产品价值建议被用于核对真实调用方,不当作先验批准或记忆收益证明。

已检查八个变更路径;未改渲染页面或首屏,功能回归不作视觉质量证明。已安装 provider、真实模型采用、长期完整成本与收益未验证。当前批准仅适用于 f274601,变头需重新核验;合并资格和维护者授权另行判断。

English verdict: APPROVE f274601; typed outgoing agenda and requester/route recovery are independently verified, with installed/model adoption unverified.

@loopx-agent
loopx-agent merged commit 277d766 into main Oct 27, 2026
20 of 38 checks passed
@loopx-agent
loopx-agent deleted the codex/project-request-turn-agenda-20261027 branch October 27, 2026 15:55
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