Repository navigation
Fix manager returns from aliased runtime directories - #8539
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 family, OpenAI, self_reported
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
Reviewed exact head: 4cb8cf4
动机 / Motivation
用户等候在原管家对话中返回的文件。通过目录符号链接打开同一 Chat runtime;回传条目仍含别名,但事务根已解析为物理路径。已存在且授权正确的条目被当成不在运行目录中,进入 retry_pending;原投递器调用 0 次。运行目录只解析一次;同一来源成功投递一次,原会话读回和文件下载与发布字节一致。不改路径权限、模型或超时设置;未安装到现网。包内使用真实 worker、Core、SQLite 和 HTTP,提供者身份为合成;生产采用、实际桌面附件点击和原服务偶发响应慢仍需独立验证。
改动思路 / Approach
现有 Python drain 固定配置路径;TypeScript return_delivery 继续拥有回传准入和状态。 本次范围是现有管家结果回传 worker 的配置运行目录别名。 扫描、回传来源和事务共用解析后的根,原事务继续检查条目地址、原请求身份和受众授权。目录可读性仍不能作为权限凭据。
具体改动 / Changes
以 loopx/capabilities/manager_context/README.md 在 b89a574b05a3e7d5920a8e7184476dfb7b041790 的契约为准。C1:原委派结果回到原对话;打包验收通过原时间线和完整回复页下载两份附件,逐字节匹配。C2:保留原授权和投递状态;撤权、丢失原路和文件来源变化的回归继续拒绝读取或重复发送。
关键代码讲解
loopx/capabilities/manager_context/roundtrip.py:724的drain在派生任何回传路径前固定实际运行目录。loopx/capabilities/manager_context/roundtrip.py:582的_return_transaction使用同一个根;仍调用现有 TypeScript 准入和状态机。tests/test_manager_context_roundtrip.py:1267在同一验收中覆盖直接路径和目录别名,要求原路恰好投递一次,后续只读且文件字节不变。
对主干的风险 / Risks
主要风险是目录解析意外扩大可读范围。解析只作用于已配置的根;条目地址仍从该根和原请求构造,类型化边界检查未变。两套回传测试合计 255 项通过,打包浏览器用例和标准合入前检查也通过。两种窗口尺寸都看到了原消息上的两个文件按钮及完整阅读器内的对应下载入口。下载后的内容与原文件逐字节一致,读历史和下载都未引发新的模型执行或回传。
我的整体评价 / Verdict
这个改动解决了一个可独立复现的原路回传失败,沿用了现有授权、重试和投递逻辑。当前结论不替代独立评审与合入门禁。上线后还应从原会话点击并核验文件,才能确认生产链路。使用打包浏览器验证原时间线和完整回复。实际安装 App 的点击未验证。
English verdict: APPROVE
songoow
left a comment
There was a problem hiding this comment.
Reviewer: model_agent · GPT-6 Astra Pro · OpenAI · self_reported
评审 head:4cb8cf4b429ec9133c7ff26fbb8a3269697facc6;固定比较基线:beff0f3e55d1f70eceebbd8e78c11f1cff34643b。
动机 / Motivation
从软链接形式的runtime路径接收原会话答复与结果文件的用户。
同一个runtime通过软链接传入时,RPC root解析为物理路径,派生回执路径仍保留alias,原路回传没有真正调用sender。
在入口统一root后,原回复发送一次,既有历史投影读回完整附件与原文件字节。
只修复同一资源的路径一致性,不扩大读写范围、不新建投递队列、不重放旧消息。
改动思路 / Approach
在现有drain入口统一路径,事务共享同一物理根,继续复用原source/receipt/attempt owner。 范围限制在原后端入口,所有原请求与授权检查保留。
不增加全局alias缓存或新的消息权威。规范化仅发生于当前调用入口,后续仍由原目录内证据与绑定核验决定结果。
具体改动 / Changes
完整检查 2 个差异文件。关键入口是 drain / _return_transaction / _pending_return_paths。生产差异调整根规范化位置和两个调用参数;测试把已有附件回传场景参数化为direct/alias,保留消息、原文件字节和不重复写入的断言。
本轮独立验证: 完整manager-context roundtrip套件139项通过。 把相同候选 fixture 载入固定基线生产模块后:direct通过;runtime-alias在sender.calls处失败,实际0而应为1(1 passed / 1 error)。;head:direct和alias均通过,sender恰好1次;投影后消息、原JSON状态和附件字节不变。。基线日志核对全部已载入 loopx 模块,没有混入候选生产代码。
独立接受依据:已有契约,spec_revision=beff0f3e55d1f70eceebbd8e78c11f1cff34643b,criterion_id=existing_boundary,当前实现满足这里列出的范围;没有据此扩大外部权限或宣称完整产品里程碑。
对主干的风险 / Risks
关键风险是路径规范化越过原作用域,或历史读回再次发送。direct/alias、源漂移和原字节对照未发现这些变化,原path/receipt owner继续逐次校验。
与已读取当前主干c49d59b可干净组合;近期dense-history变更没有改动这三个路径入口。组合结果仅证明无文本冲突,不替代运行证据。
使用 真实本地File/Core/Effect及结果文件读回,provider sender为合成fixture。没有重跑已安装App点击下载或外部provider网络;合成sender不等于真实飞书发送。 远端CI没有作为整体通过依据;本review不宣称合并条件已全部满足。
我的整体评价 / Verdict
建议APPROVE。缺陷和修复位于同一入口,候选回归在基线稳定暴露且在head消失;无需为路径一致性增加新抽象。
本 PR 没有修改页面布局、组件或样式;验证范围为已有后端、CLI或文件观察边界。 未验证范围:没有重跑已安装App点击下载或外部provider网络;合成sender不等于真实飞书发送。
English verdict: APPROVE. Normalize the runtime root once while retaining original reply, receipt and file-snapshot semantics.
When a configured Chat runtime is reached through a directory alias, the return worker gives the typed transaction a resolved runtime root and an entry path built from the alias. The transaction rejects that valid entry as outside the runtime, so the original return is queued again before publication.
Resolve the configured root once and use it for the scan and all return phases. The typed containment check, original audience and provider delivery rules remain unchanged.
Validation: the new alias case fails on the base and passes with the fix. The packaged Chat smoke uses the real return worker and SQLite, then downloads the original files from the bound timeline and reader, compares their bytes, and checks that history reads produce no model Turns or repeat sends.
The focused manager return and Lark transport suites passed all 255 tests. The exact candidate also passed the standard local premerge checks.