Skip to content

fix(chat): share source observation during stop recovery reads - #8099

Merged
loopx-agent merged 1 commit into
mainfrom
codex/lark-health-observation-20261105T064241330
Nov 5, 2026
Merged

loopx-agent merged 1 commit into
mainfrom
codex/lark-health-observation-20261105T064241330

Conversation

@loopx-agent

Copy link
Copy Markdown
Collaborator

连接设置读取需要逐个检查会话中尚未结束的撤销任务。此前每个队列读取都会重复观察同一份 runtime 源码版本,开销随会话数量增长。

为 stop_recoveries 复用现有的 request scope,使同一次扫描共享源码观察;每个队列和后续请求仍读取当前 Turn 状态,不缓存执行许可或撤销决定。

验证:

  • 136 项相关测试通过;增加真实 HTTP 回归,覆盖多会话、撤销与仍获授权的排队任务,以及下一次读取立即看到结算。
  • 移除 request scope 的进程内反例会触发重复源码读取断言。
  • 在固定输入上的完整返回对照一致。该修改针对读取开销,不代表端到端延迟或全部消息补回复已完成。

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; model=GPT-6 family (Codex); provider=OpenAI; self_reported; exact build and effort unavailable

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

未发现阻塞问题。审查精确版本 cc17db7ad9a9bbbbe3bcbcdf8d8b3b77dee91862,结论为 APPROVE;自审不等于 GitHub 的正式批准或额外合并权限。

动机 / Motivation

打开 Chat 连接设置、查看尚未结束的撤销任务的用户会遇到这个问题。

八个会话只含一项待结算的撤销任务时,原路径重复观察源码八次;修复后该扫描至多观察一次,下一次读取仍能立即看到任务结算。

相同输入下完整设置返回一致,HTTP 回归确认只有源码观察被合并。

本 PR 不修改消息执行、自动重放、授权或答案回传,也不承诺端到端延迟和全部欠答已解决。

原服务完整设置页的尾延迟、安装采用及尚欠消息仍需各自验收。

改动思路 / Approach

不改会继续重复扫描;缓存最终列表会隐藏结算或撤销变化;现有 request scope 已限定源码观察生命周期,因此无需新增缓存与失效策略。 只在现有投影边界复用既有源码观察作用域,没有新增策略、事实源或执行权。 只减少连接设置读取内的重复源码观察,保留原队列和撤销任务投影。 请求作用域只保留一次源码观察,既有 TypeScript queue owner 继续选择队列,文件中的任务状态与授权集合不存进缓存;原接收者负责结算,健康读取不能替它完成工作。作用域退出时通过 finally 清除,后续请求重新观察,因此不需要持久缓存、额外开关或人工刷新。

具体改动 / Changes

本次边界没有独立书面规格,按既有 HTTP 及 canonical Turn 契约核验(spec_basis=no_spec);没有把其他恢复 RFC 的未来目标充当当前承诺。生产代码仅增加导入、装饰器与说明,5行增加、1行删除;测试在原 fixture 增加75行,无新状态、CLI、依赖或迁移。

关键代码讲解

  1. ChatConversationBindings.stop_recoveries 仍读取所有 Session 的当前排队/活动 Turn,并排除终态及当前授权绑定。新增装饰器只覆盖这一次逻辑扫描,未更改 pending 计算、异常或排序。
  2. effect_runtime_request_scope 是已有机制:嵌套调用加入当前请求,退出释放;队列内容没有进入该缓存。相邻 LarkPrivateConversations.health 已使用此 owner,无第二套失效机制。
  3. test_http_stop_recovery_reuses_source_revision_without_reusing_turn_state 经真实 HTTP 检查八会话只重复核对一次源码;撤销任务结算后再次 GET 立即消失,仍授权的排队任务保留,binding 与原 Turn 的字节不被读取改变,provider 没有写入。

对主干的风险 / Risks

最强反例是误缓存任务/许可,使待办看起来已经完成或结算后仍残留。因此测试同时检查授权与撤销两种任务,并在两次请求之间改变任务状态。当前精确 head HTTP 回归 PASS;相关 binding、health、撤销与断连136项 PASS,作用域嵌套/关闭等11项 PASS。进程内移除 scope 后同一 HTTP 资源断言实际以8<=1失败,证明回归能发现本问题;固定输入的完整生产投影 base/head 一致,未用删除 pending 字段来降低成本。测试 provider 不调用模型,投影对照固定了 listener 存活观察;这些边界不能证明生产端到端尾延迟。

标准本地检查为6项直接检查及2项所选 canary,源码编译、diff、RFC镜像及词汇检查通过。维护性 ratchet 仍报告 interaction_contract._admitted_interaction_next_cli_actions 的未审大函数;在不可变 base 33b15d037191be7273e39e1e78a01e66b316d732 与当前 head 运行同一命令,失败身份和明细一致且无幅度回归,故保留为既有无关债务,未放宽预算。当前策略 wait_for_ci=false,未查询或等待远端CI。真实 caller 是设置HTTP读取,无新功能开关,default_off_isolation 与新的 actor/authority 命名均不适用;没有自动重放或恢复 grant 的权力变化。

我的整体评价 / Verdict

这是 justified_increment:long_horizon=improved,减少随历史增长的重复工作;user_experience=improved,沿同一入口且新增配置、确认或恢复交互轮数为0。原服务完整设置页的尾延迟、安装采用及尚欠消息仍需各自验收。 只在现有投影边界复用既有源码观察作用域,没有新增策略、事实源或执行权。 只减少连接设置读取内的重复源码观察,保留原队列和撤销任务投影。 可观察语义对照为 equivalent,机制成本与问题成比例,直接复用已有词汇与owner;没有必要再抽象缓存框架。visual_review=not_applicable:只改变 stop_recoveries 的源码观察边界,未改变页面、文本或投影结构;完整返回对照相同。 未验证范围:安装后真实服务尾延迟和全部欠答未由本 PR 证明。

English verdict: APPROVE — the scoped source-observation reuse preserves fresh queue state; installed tail latency and message completion remain separate acceptance work.

@loopx-agent
loopx-agent merged commit 8a48e34 into main Nov 5, 2026
7 of 9 checks passed
@loopx-agent
loopx-agent deleted the codex/lark-health-observation-20261105T064241330 branch November 5, 2026 07:53
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