Repository navigation
fix(collaboration): explain delegation receipt conflicts on demand - #7644
Conversation
…stics 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.1-sol; OpenAI; runtime_reported; reasoning_effort=max.
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机 / Motivation
在管家对话查看自己已委派请求的用户,需要知道哪些记录为何无法核验。原对话回执指向另一条委派时,旧列表只给出笼统缺口;新版在原有警示图标内显示已授权请求的具体冲突原因,并继续拒读其内容。同一冻结 HTTP 探针在 base 的 File/SQLite 两侧均因缺少身份诊断失败,在 head 两侧通过;冲突操作仍400、越权来源不返回身份、原凭据恢复后重新读出请求。不修复历史凭据、不推断取消或完成、不接受/启动接收方工作、不新增请求控制权,也不证明已安装用户旅程或长期协作收益。尚存缺口:Historical repair and installed environment remain outside this diagnostic slice; no new follow-up or parent completion is asserted.
改动思路 / Approach
复用既有来源证明与 ContextHelp,只保留结构化拒绝原因即可交付可诊断读回;另建错误台账或请求控制协议没有必要。本 PR 只把既有 typed lifecycle 的冲突原因投影到当前来源可见的 inventory 和原有按需说明;控制与内容拒读保持。
TypeScript先证明请求、原路、来源及实例相符,只有 original_request_inspect 的特定回执冲突才带诊断。Python仍沿既有权限与请求锁读取,保留 typed拒绝,最多投影12条身份;所有未知记录继续计入缺口。API在发送前再次核对权限。前端复用原图标,用户自愿展开时才能看到原因,既无新增默认说明块,也无新增必答或确认轮次。
具体改动 / Changes
完整13文件评审绑定 head 5a00491,实际 merge base 5d7f0a6。包含 runtime/UI、测试、能力文档、按需修复参考和4张视觉资产,未把截图当权限或持久化证明。
关键代码讲解
withOriginalRequestDiagnostic只给已通过前序来源/路由证明、随后因回执冲突而拒绝的 inspect增加一个 reason。return admission/settlement不获得这项放宽,原拒绝 kind/code保持。CollaborationLifecycleRejected是原 ValueError 的子类,保存结构化决定;既有捕获和错误文字仍成立,无须从字符串猜测原因。read_conversation_requests在已验证来源和请求锁内收集最多12条诊断,继续拒读内容。coverage进入既有 snapshot digest;13条冲突仍报告13条缺口,分页不会把未列出的诊断当作不存在。ConversationRequests的警示说明 展示缺口数、原因及完整标识;Zod对旧后端缺少 diagnostics 的响应补空数组。ContextHelp的换行、滚动及触控尺寸保持既有实现。
规格依据是 loopx/capabilities/manager_context/README.md 在 5d7f0a6 的原文,并对照同版本 design.md 的按需说明和 populated-page review:
- “Current binding and Goal visibility”:implemented;读前、读后核对当前来源与权限,改变关闭权限时整份响应400且不泄露身份。
- “does not mark reads, accept work, start an Agent or certify an overall outcome.”:implemented;诊断不更新原文件,冲突时 revise/cancel/recover仍400,接收方和结果回传权威未改。
- “Unreadable/missing sources and incomplete scans”:implemented;保留完整缺口数、扫描不完整状态和有界诊断,未把0条可读记录当作任务完成。
对主干的风险 / Risks
最危险的是为了可诊断而泄漏另一来源的请求身份,或允许用户操作未经核验的原请求。独立冻结探针通过真实 HTTP分别运行 File和SQLite:base两侧均只在“诊断身份缺失”的断言失败;head两侧通过完整冲突、内容拒读、控制400、变更来源不返回身份、源文件字节不变、恢复原始凭据后重新读出请求的检查。另有22个 inventory、6个control、12个TS用例通过,覆盖关闭权限变化、后续新委派不取消旧请求及13条缺口/12条详情的分页边界。全control-plane typecheck、Ruff及真实 packaged Chat build通过,未查询或等待CI。
标准premerge的19项自动选择为0 failures,但原始退出码是1、状态 manual_review_required,原因是4张PNG不能由文本扫描替代隐私审查。我逐张检查了实际像素、文件元数据和合成来源:没有私人消息、路径、凭据或内部上下文;PNG无文字/EXIF附件,窄屏额外的ICC仅为Google Display P3色彩配置。该人工检查已经完成,不能把原始退出码写成自动通过。build仍有既有大chunk提示,未因此改动无关打包行为。
语义与 CI 对齐
这是对既有拒绝词汇的窄扩展,不是新增持久化状态或通用生命周期协议。诊断由现有证明推导,默认缺失不表示不存在请求;按需修复参考不自动加载成全局策略,也不产生执行许可。当前授权与未授权主体、同容器后续请求、越权尝试和恢复读回均已对照,通用控制规则没有产品/业务关键词分类。
我的整体评价 / Verdict
APPROVE。长程协作的原始承诺、来源权威和独立请求关系保持;用户体验改善且没有额外必需交互。默认列表由请求、状态和时间主导;新增原因只在原有图标展开,完整标识在窄屏可换行,详情未挤入默认列表。此diff未改变响应式布局或CSS;额外检查了窄屏展开,未重拍窄屏默认状态。检查了43条合成请求、两个接收方及混合状态的1716×995默认/展开/前后截图和390×844展开截图,并核对exact-head资产与未变组件;当前源码重新打包通过。
未重复作者浏览器交互或已安装环境;12条诊断的计数/分页由真实HTTP用例验证,截图只覆盖1条展开的实际排版。没有材料问题需要由截图推断为已通过。当前范围与现有owner匹配,有界诊断和原有说明组件已经是更小的可用解法;合并、安装和更广泛协作收益仍分别验证。
English verdict: APPROVE at 5a0049189b8cd5148550b3b0896531ad60029e39. Real File/SQLite HTTP counterfactuals preserve source isolation, refusal and recovery while exposing the bounded conflict explanation. Automated checks and manual image privacy inspection are distinguished; installed adoption is not claimed.
原对话回执指向另一条委派时,旧请求会被拒读,界面却只显示“部分记录无法核验”。这次把既有 typed lifecycle 的冲突原因保留到 inventory,并在计数旁原有警示图标中按需展示具体请求、Goal 和 Agent。
handoff_receipt_conflict才提供身份诊断,最多 12 条;缺口计数仍反映全部未核验记录。验证:73 项 File/SQLite 真实 HTTP、权限、修订恢复及 native ingress 回归,12 项 TS lifecycle 测试,control-plane 类型检查、Ruff、前端构建、双语 RFC diff 检查均通过。测试覆盖冲突身份读回、正文/操作拒绝、来源与关闭时授权变化、后续交办、原证明恢复、13 条冲突的展示上限和分页快照一致性。初轮发现测试辅助路径及不支持的查询参数,已修正测试后重跑通过。公共边界扫描通过,仅报告既有非字面量 credential 引用提示;截图另经人工检查。
这是一项可诊断性修复。历史缺失证明的恢复、已安装宿主采用和整段历史读取性能仍需分别验收。此 PR 未做安装或合并,CI 结果以当前 head 为准。
视觉证据来自真实 Ego Lite、打包 Chat 前端及隔离 SQLite/Chat/Inbox:43 条合成委派、2 位接收方、长正文与混合状态;所有 POST 均被 fixture 拒绝。已验证桌面、390px 触控、键盘/Escape/焦点、更多记录、断连重试、来源恢复及可滚动的 12 条诊断。正常 finish 只关闭本次受管页面。
测试代码为
5a0049189b8cd5148550b3b0896531ad60029e39,基线为5d7f0a61b0b79876801c05e1d26352687f270794。前后图均使用同一候选后端;前图仅使用基线前端,不能作为后端性能或已安装 App 的对照。默认界面(1716×995):
窄屏触控(390×844):