Skip to content

fix(chat): retain partial handoff scope in steward evidence reads - #8056

Merged
loopx-agent merged 2 commits into
mainfrom
codex/steward-partial-reply-readback-20261105
Nov 4, 2026
Merged

loopx-agent merged 2 commits into
mainfrom
codex/steward-partial-reply-readback-20261105

Conversation

@loopx-agent

@loopx-agent loopx-agent commented Nov 4, 2026 •

Copy link
Copy Markdown
Collaborator

管家查询交办状态时只看到投递收据,已经送达的阶段性 conclusion 会掩盖接收者明确保留的工作范围。现在 view=handoffs 在原受众筛选后复用原生 Inbox 的 receipt_states/agenda,保留最新修订的 remaining_work、后续待投递结果和不可读证据;不新增任务状态、调度器或消息消费者。最终结果会清除陈旧的派生 remainder。

验证使用实际 report → drain → scoped read 路径,覆盖部分结果送达、最终结果排队与送达、后来重新声明缺口、重启、授权撤回、受众隔离、损坏结果范围、13 个请求的 3/12 大小分页与陈旧标注。相同最终 fixture 在不可变旧 reader 上 4 项失败,在最终提交上 222 项相关测试通过;标准 premerge 通过 6 项直接检查和 18 项选定检查,未查询或等待远端 CI。

这只修复结果范围的读取,未证明任何具体业务已完成,也不会重放原请求或修改原始收据。

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
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: actor_kind=model_agent; model=GPT-6 (Codex); provider=OpenAI; self_reported (host execution observation unavailable).

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

精确 head 2ba8d250b7979fe70e421c389a4009f2ddfbac48 无阻塞发现。本次完整审查四文件和原生结果 owner,修复既有证据读取遗漏;业务完成、实际模型采用和安装送达仍按各自证据判断。

动机 / Motivation

通过管家查询既有交办进度、等待原问题答复的用户与原接收 Agent。 同一交办先送达阶段性结果,再排队补充结论:旧查询只见 conclusion/delivered,容易被误当作已经答完;新查询同时给出原生剩余范围或待投递续接项。 原生 Inbox 的结果范围现在通过同一管家读取入口返回,部分答复、排队补答和不可读证据继续可见。 不自动完成业务,不重放请求,不增加消费者、调度器、授权或可编辑的完成状态。 收据上的结果范围不证明原问题获得了完整、准确的实质答案;实际模型采用、安装与原受众送达仍需分别验收。

改动思路 / Approach

复用现有 Inbox 的 receipt_states 与 agenda;Python 只做已授权页面的身份绑定、只读收集和展示脱敏,不另写 pending/final 判断。 只有缺失的读取适配需要修复:原生 Inbox 已经拥有结果范围和续接规则,复用它比给 Python 增加完成判断、同步字段或新队列更小。 本 PR 只补齐既有管家读取与报告来源的结果范围,原结果发布、执行和回传 owner 均不改。 如果只给 Python 加“存在已送达 conclusion”判断,旧结果会再次遮蔽最新剩余范围;如果维护另一份 pending 列表,则需要额外同步,且无法正确处理源修订和损坏结果。当前实现读取原已授权页的原始身份,随后在一次既有原生批读中派生结果。观察失败保留未知,不启动恢复执行,也不靠猜测正文中的“完成”字样作结论。

具体改动 / Changes

关键代码讲解

handoff_receipt_readbacks(loopx/capabilities/manager_context/inspection.py:332)在原受众筛选后按现有 Goal-instance 路径读回原请求,核对 request/Goal/Agent/source 身份及修订,再调用原 read_inbox_transaction(receipt_states, include_agenda=True)。只投影 native inbox_state、remaining_work 和 agenda,清掉旧的派生 remainder,复用路径脱敏。没有写结果、已读、消费或调度操作。ManagerInspection.read(同文件:559)继续使用原有分页、来源范围和末尾 live scope 检查,损坏结果显式保持 unknown;report_source.py 通过既有 reader 自动取得同样的信息。

test_handoff_reader_retains_partial_scope_after_delivery_and_later_results 和 test_handoff_scope_is_independent_of_page_size_and_stale_projection_annotations(tests/test_manager_context_roundtrip.py:270、354)使用真实临时 request/result/delivery 文件和原 report/drain 路径,比较部分结果、排队补答、送达、后来新增缺口与重启后的读回。13 个请求跨 3/12 大小分页保持相同义务;陈旧标注不能覆盖最终结果。外部 provider ACK 为合成边界,不冒充真实飞书验收。

规范 loopx/capabilities/manager_context/README.md,不可变 revision ce4cfc1ce74a2ffe0d685758b8d6e9233b467f41:partial-result-retention 对应部分结果仍留原 Inbox/agenda;queued-is-not-delivered 对应最终正文排队前后不同续接项;unavailable-is-not-absence 对应损坏回执保留 recover_evidence;receipt-is-not-acceptance 对应只读、无业务重放且 null agenda 不证明完整回答。相关目标基线已推进到 85d88e4394ee44dee9122c09dd883a35857deb2f,涉及的 reader、Inbox、agenda 和 report caller 与原基线逐文件字节一致,故这些比较仍适用。

对主干的风险 / Risks

最强反例是修复漏报时泄漏另一原受众,或把旧派生字段当成新权威。真实公共入口的另一 channel 得到空页;读取过程中撤权返回 authorization_changed;畸形 remaining_work 保留原生不可读状态和 recover_evidence。读取前后原 JSON 字节完全一致。当前修订不一致会拒绝本次查询;不把不完整读取当成空队列,也不另发或重跑旧结果。额外读取按原页有界,持久化和执行 owner 均未改变。

语义与 CI 对齐

本次复用既有语义词汇,没有新状态机或默认关闭特性。四项最终 fixture 在不可变旧 reader 上均失败,在此 head 所属的同一 fixture 上通过;另外发现并修复了首版的陈旧 remainder 遗留。222 项相关测试通过,最终提交的标准 premerge 通过 6 项直接检查和 18 项选定检查,没有失败、跳过或人工 hold。wait_for_ci=false,未查询或等待远端 CI。本次变更文件的公开边界扫描通过。无需收据迁移或抬高模块预算。

我的整体评价 / Verdict

long_horizon 与 user_experience 均改善:已有承诺在重复读取、分阶段交付及重启后继续可见,没有新增用户输入、确认或恢复轮次。本 PR 只补齐既有管家读取与报告来源的结果范围,原结果发布、执行和回传 owner 均不改。 实现是现有 owner 的读取接入,成本与真实遗漏相称,未来策略仍只由原生 Inbox 修改。loopx/capabilities/manager_context/inspection.py 仅改变模型读取的证据字段和工具说明;App/Lark 渲染组件未变,没有新增视觉界面;实际模型理解和业务履行不由字段测试证明。收据上的结果范围不证明原问题获得了完整、准确的实质答案;实际模型采用、安装与原受众送达仍需分别验收。

English verdict: APPROVE 2ba8d25; the existing scoped reader now preserves native partial-result and return obligations without adding execution, authority, or mutable completion state.

@loopx-agent
loopx-agent merged commit acecb5d into main Nov 4, 2026
5 of 7 checks passed
@loopx-agent
loopx-agent deleted the codex/steward-partial-reply-readback-20261105 branch November 4, 2026 17:21
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