Repository navigation
fix(context): converge native delivery and exact hook trust - #7338
loopx-agent wants to merge 90 commits into
Conversation
…elivery Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…ntry Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…hook-state-20261026 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…hook-state-20261026 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…ion-lifecycle-183044 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…ion-lifecycle-183044 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…ion-lifecycle-183044 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
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; gpt-6.1-sol; OpenAI; runtime_reported; reasoning_effort=max.
Request changes conclusion (author-owned PR; GitHub blocks formal self-review)
REQUEST_CHANGES — [P2] 生成的 PostCompact 必须接到公开 CLI 的事件入口。 本次完整评审 bc2b9ed452b9ed9fa53bb217e6c78fd671eb3a86,基线 65450d6ebdd8dd79097a69923641731a96bc97b3。评审前头由 c75775e 更新到当前头,旧头没有发布结论,当前10条路径重新核验。
动机
开启差分上下文的 Codex 使用者,需要在压缩和恢复后继续读到完整要求;benchmark worker 也需要只信任实际生成的原生钩子。
此前,重复压缩通知可能反复换代,worker 仅按两个 handler 的数量判断配置;本提案集中处理失效并逐项校验钩子,但新增 PostCompact 在公开 CLI 入口被忽略,声明的失效路径没有接通。
本轮验证了正常原生全量、增量、压缩恢复和配置匹配,也复现了单独及迟到 PostCompact 都保留旧候选与 epoch。
本次不改变执行权限或配额,不代表已安装 App 多 Goal 采用、模型理解效果或完整成本收益。
作者需把生成的 PostCompact 接入公开命令边界并补回归;更广的安装包场景与成果收益仍由既有资格流程验证。
改动思路
共享 TypeScript owner、现有 Python IO 和原生 handler 身份边界分工合理;按生成配置派生 handler 集合也优于硬编码数量。当前缺口是同一既有 CLI 的事件接收集合没有随配置更新。 当前 PR 应完成原生失效、worker 配置匹配和原始恢复的可回退切片;不扩展为新 hook 框架,也不把安装包或模型收益列为已完成。
失效条件放在已有上下文 owner 中,原生 IO、锁和恢复引用继续由 Python adapter 持有;worker 从同一个生成配置派生需要信任的 handler 多重集合,由原生宿主提供 hash。这样没有新的权限、手工同步字段或 hook 管理框架。正常工具和轮次结束保留候选,压缩通知使候选失效;新的全量候选生成后,迟到通知必须保守再次失效。当前实际输入核验仍是增量复用的独立条件。
| 当前路径 | 实际命令效果 |
|---|---|
| PreCompact → 公开 context-hook | 清除候选并更新 epoch |
| PostCompact → 同一公开命令 | 返回成功与空对象,候选和 epoch 不变 |
| 直接调用 typed helper 的 PostCompact | 实现了失效,但不能代替公开入口证据 |
表格是源码与独立命令观察的对照,不把 native 事件日志或最终空候选本身当作 handler 被执行的证明。
具体改动
完整 diff 为10条路径、+281/-43。既有 TypeScript 上下文文件增加35行 transition,Python 加小型桥接并保留原生 IO;worker 校验实际生成 handler 的事件、命令、matcher、timeout、async、类型、启用状态和唯一 trust key。其余是双语契约与既有回归、native夹具,以及删除一条未使用测试导入。与 main 一起集成的入口夹具已经属于本次不可变基线,不算本 PR 的生产 UI 变更。
独立规格为 docs/reference/required-work-context.md,固定于 65450d6,在实现前验证其全文与已读取规格一致。验收映射:Opt-in native reuse 因公开 PostCompact 未失效而未满足;Machine default 已验证关闭默认和原有设置边界;Saved context cache 已验证原始字节/身份及 snapshot成功、发布失败恢复;Generated worker hooks 已验证完整匹配和原生 trust owner。PR 自己改写的文档不能自证完成。
关键代码讲解
applyContextLifecycle在同一 session/cwd 上派生 reset_pending;重复或乱序通知共享失效 epoch,发布新全量候选后退出该区间。它不确认模型输入,也不增加执行权限。其他会话的 compact/tool 事件不能建立身份或替换恢复。codex_context_configuration在第245行 生成四个 hook,其中包括 PostCompact,全部调用原有quota context-hook。但公开命令第449行 仍只接收 SessionStart、PreCompact、PreToolUse,所以新增事件直接返回空成功。codex_context_hook在锁内将原生事实交给同一个 typed transition,只有 observed 的变化才写 journal,失败仍保留原始恢复。直接调用它的测试可以通过,却没有经过上述公开事件筛选。prepare_context_delivery不再假定两个 handler;将原生发现与生成配置逐项匹配且逐项移除,顺序无关,重复/替换/禁用/缺失或多余项均拒绝,不信任别处 hook。provider、plugin 和模型启动边界继续由原有 owner 管理。
对主干的风险
[P2] 已复现的触发: 同一 session/cwd 先有全量候选,向真正的 quota context-hook 发送单独 PostCompact,候选和 epoch 完全不变;发送 PreCompact 对照,候选被清除、epoch 改变。随后生成新的全量候选再发送迟到 PostCompact,候选与 epoch 仍不变,和提案明确声明的保守再次失效不同。原始源字节与恢复引用保留,探查没有调用 guard、spend 或修改活跃 Goal。
最小修复是在同一公开入口接收并转交 PostCompact,必要时复用一份生成/接收事件集合;补两个真实 CLI 回归并独立读回 journal。不要仅再断言 helper 或整体 native 压缩最终没有候选:本轮四个真实 Codex 用例全部通过,因为 PreCompact/SessionStart 已经使其失效,随后 PostCompact 被忽略也能满足当前最终状态断言。严格实际输入验证仍在;当前发现限定为声明的生命周期路径未接通。
独立执行:11个受影响 suite 388 passed /105 conditional skips;真实 Codex0.163 macOS 静态回环四例通过,覆盖生成 compact hooks 和 worker 的 quota/Turn Envelope 格式。全量 TypeScript 编译、配置中的严格 mypy 17 sources、全部7条改动 Python 路径 Ruff通过。原始 inline2MiB拒绝保留,既有 snapshot成功能完整还原 delta,发布失败恢复同一原捕获,不晋升候选。独立公开命令反例仍 failed,没有用这些正向测试把它改成通过。
关闭态使用同一UTF-8源,基线与当前头24次真实 CLI 比较,完整指令、数据、命令、cursor、错误及无副作用都相同。native premerge 6 direct +19 selected 零执行失败,原始退出码仍1,保留一个 benchmark-sensitive 维护者审查门。作者另报的完整打包场景在 conversation-activity 超时,本轮没有独立重跑该完整场景集,也不把后来的单项启动通过当作全场景通过。
语义与 CI 对齐
这是现有 context生命周期词汇的扩展,规则归属与尺度合理;新事件必须经过现有生产命令,schema、helper和事件日志存在不代表该路径已交付。当前精确范围 CQR cqr_304165a43e15cd597645 已独立记录 FAIL、物理文件全字段读回、verify为 invalid_receipt,保留这条公开入口失败和作者更广场景的未资格信息。本轮没有查询、轮询或等待 CI,也没有放宽 hard limit 或将历史失败重标通过。修复后应在新精确头重新执行公开事件反例、受影响回归、native、类型检查与原生 premerge。
我的整体评价
现有 owner 的有限重构和生成配置匹配值得保留,规模相称;当前缺失的是一条可直接修复的生产接线,尚不能批准。long_horizon:regression,新声明的压缩失效被公开入口吞掉;user_experience:regression,配置呈现可用 hook 而其命令静默无效。关闭态与严格输入证明保留,原始捕获恢复仍有效,不据此声称权限绕过或数据损坏。
完整10条 diff 只改上下文/worker、文档及测试导入;已检查现有机器设置与 CLI 配置入口,没有渲染布局或首屏变更。 未验证已安装 App 多 Goal 采用、完整打包场景集、真实模型效果和完整成本收益。 两个额外 hook 的运行/IO成本、漏报事件和单独字节完整性资格仍需保留边界。#7334 的假设模式和本 PR 的严格证明模式分别评审,彼此不继承结论或合并兼容性。没有合并、安装、付费执行或 dismiss 历史意见的授权。
English verdict: REQUEST_CHANGES at bc2b9ed452b9ed9fa53bb217e6c78fd671eb3a86. The generated PostCompact hook is silently discarded by the public context-hook whitelist. Standalone and late events preserve the candidate/epoch, while the PreCompact control invalidates correctly. Connect the event and add public-command regressions. Positive suites/native cases pass, but the discriminating check and exact-scope CQR remain failed.
…ntext-native-byte-integrity-212545 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…byte-integrity-212545 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…/context-hook-trust-integration-20261026 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…ntext-normal-read-recovery-20261026 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…/context-hook-trust-integration-20261026 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…byte-integrity-212545 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com> (cherry picked from commit c88c15f529789e750b3e08f612352034a06b9149) Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com> (cherry picked from commit 5d1e2d2ef8361e58c8774c5a606c4d1a68d1f22f) Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…/context-hook-trust-integration-20261026 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…1026' into codex/context-native-byte-integrity-212545 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…/context-hook-trust-integration-20261026 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…byte-integrity-212545 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…/context-hook-trust-integration-20261026 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
|
Author validation return, scoped to base 中文:新包实际0.163双格式退出恢复已通过,完整读取与结算边界保持;12/4/2项原生证据分别绑定各自版本,成本代理与耗时反证分开,旧批准不继承,无新付费实验或用户安装。 Dependency note: #7334 has since advanced to |
Keep the shared lifecycle owner and verify complete reader byte ranges. Scope native resume checks to the active baseline reader interval so unrelated physical history size does not disable reuse. Add SSH Goal configuration and native recovery coverage while preserving feature-off behavior. Signed-off-by: huangruiteng <huangrt01@163.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Recognize only complete identity-bound receipt lines through the existing durable codec. Preserve original recovery bytes and source lineage, along with all authored, malformed, foreign and unknown content. Cover ordinary guard delivery and strict lineage validation. Signed-off-by: huangruiteng <huangrt01@163.com>
…ntext-ssh-prompt-repair-20261026 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…ntext-hook-trust-integration-20261026 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
|
Author validation return for Final source suites: 461 passed / 53 conditional skips; Ruff, typecheck and configured strict mypy pass. An exact rebuilt wheel passes six actual macOS 0.163.0-alpha.11.1 cases. On actual Linux 0.162.1 the initial run remains four passed / two SSH warm assertions failed: native Source worker + disposable installed public CLI/hooks, isolated synthetic SQLite/captures and deterministic loopback inference define this qualification. No paid campaign, real remote SSH network or live App/config/login change occurred. Premerge has 6 direct + 19 selected checks with zero execution failures and its manual hold retained. The earlier full-suite Lark architecture failure remains unresolved. Later main changes are outside the frozen tested The description separates these results from earlier sources and historical 中文:当前7338已真正集成新7334;完整读取、进程退出恢复、hook信任和丢历史分别验证。Linux 的原始失败保留,私有/可组写入反例单独通过。原捕获、默认off、当前权限和逐轮结算未放宽;全套失败与真实 App/费用/成果缺口保持开放。 |
loopx-agent
left a comment
There was a problem hiding this comment.
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
Reviewer: model_agent; gpt-6.1-sol; OpenAI; runtime_reported; reasoning_effort=max.
Exact head: 7338@137dac54929f70e668f1e36bf99d567b3b7eb28e. English verdict: APPROVE.
动机
用户需要在原生上下文输出受限、发生压缩或进程重启后,继续读完同一份工作要求并推进原任务。
旧路径可能让恢复命令在工具响应中被截断,或者已读完的上下文在重启后仍被重新发送;此次将完整响应和可验证的原生读取区间一起纳入恢复流程。
独立复核确认:相同深路径分页用例从主干两项超限变为四项通过;相同 SSH 路径的启用提示从 4136/4358 字符降至 3764/3950,保留原有 4000 上限和完整命令。
这些证据证明有界的传输、恢复和继续工作机制;不证明自然模型采用、完整费用、任务质量或安装态已经达标。
完整任务收益、长期费用、实际 App 与远程 SSH 安装采用仍未验证;当前必跑预算及既有 Lark 检查失败另作合并限制保留。
规范依据为 docs/reference/required-work-context.md,接受的变更前版本 30ffb06b9ded2d08391ed8c58f05cc34db7d39bd,本次已完整读取。按原章节核对 Opt-in native reuse、Machine default、Saved context cache / 已保存上下文缓存:共享编解码与当前控制保持、默认关闭及明确范围、同份完整来源的只读恢复均有对应源码和验证;分支内修改的规范文字不能自证。新增 SSH 范围与普通 Goal 历史生成行投影作为显式行为变化另外评估。
改动思路
架构判断是复用现有 TypeScript codec/lifecycle、完整分页 reader 和来源投影;Python 只观察原生文件与工具输出,当前不需要第二套权限状态或通用框架。
本 PR 的独立部分仅六个文件、+171/-38;完整评审仍覆盖全部 43 个文件。依赖顺序是先 #7334,再 #7338。信任检查逐项核对 event、command、matcher、timeout、async、enabled 的精确多重集合和唯一原生 key;仅重排可接受,缺失、重复、关闭或替换都拒绝。Interrupt 直接声明有效的 3 秒,不再把 10 秒配置暗中钳制。单独及迟到 PostCompact、跨 session/off、缺失 history 的 worker 恢复均沿原 owner 处理。
下表是针对 137dac54929f70e668f1e36bf99d567b3b7eb28e 所读源码的流程说明,不能替代执行证据;使用 Markdown 表达,未单独验证图形渲染。
| 触发 | 关键判断 | 结果与恢复 |
|---|---|---|
| 首次完整读取 | 相同原始 capture、完整字节与 SHA | 建立私有会话候选,当前工作控制保持新鲜 |
| 重启后的 warm 读取 | 原生选中的私有文件、身份及完整祖先读取区间吻合 | 仅在明确 native 假设下沿用候选 |
| 缺失/替换/未知历史、缺钩子或分组不完整 | 证据不能完成覆盖 | 读回同份原始完整来源或明确失败,不重新准入 |
| 最终 JSON 太大 | 连同恢复命令、转义与换行一起计算 | 缩小正文;元数据本身无解时保留原恢复路线 |
native_hook_assumption 是明确的可选证据假设:原生记录可重放和完整读取不等于模型确实采用或理解。严格最终输入证明仍由原验证器负责。EOF、目录存在、同一个 session id、已有文件或一张 receipt 都不产生新的执行权限。
具体改动
关键代码讲解
context_delivery.ts仍统一 quota 与 Turn 的完整/差量值树,当前目标、选择、读源和结算控制不能从旧候选继承。可重建的来源是完整要求,而非摘要;不吻合就恢复 full。codex_context_history.py只观察已选择的真实私有 replay:物理文件、metadata、模型/权限、活动读取区间、每组实际输出的摘要及多重集合都要吻合。增量锚点保留完整祖先;按 64 KiB 流式检查,单记录 16 MiB 边界仍在,不能用总文件超过阈值来丢掉可验证活动区间。未知或可被组写的来源回退 full。quota_capture.py先装配全部 caller 元数据,再限制完整成功 stdout 为 7900 UTF-8 字节,包括 JSON 转义、续页命令与换行;读取不足不会伪装完成,也不会为了恢复重跑 guard。task_body.py仅压缩已捕获 native Goal 的表达。逐条比较了 actor、先后顺序、强制程度、来源、范围、继续与停止条件:完整成功 JSON/同次 detail 必须在选任务、工作、结算之前;精确身份/flags、当前 ordered_steps、歧义读回、不盲重试、原始及累计要求、可行的集成/负例/读回、第三次相同 blocked 后由用户 resume 的条件都保留。普通/off 分支完整正文保持相同。benchmark/runtime/context_delivery.py复用生成的钩子集合并验证全部实际设置,外部无关 handler 不能补齐缺失原生钩子;同一个现有生命周期 owner 处理独立 Interrupt/PostCompact 的失效和恢复。
范围/默认需明确:未配置时仍 off;明确 off 优先。已开启的机器配置现在也覆盖注册 SSH Goal;这是一项公开的适用范围扩展。已知 Monitor 历史生成行的投影发生在普通 full/delta 来源中,独立于 native 开关,不能声称所有默认输出都不变。现有设置编辑器、预览/应用/禁用和 CLI 是配置入口;没有新增配置权威、用户确认轮次或安装动作。
对主干的风险
独立验证在当前源码及隔离 File/SQLite 上完成;原生用例使用真实 Codex 0.163.0-alpha.11.1 与确定性 loopback,按实际 model-facing guard 及返回的命令恢复,而不是从磁盘预知答案。每个头均有 14 项真实原生通过:SSH 2、Code Mode 2、worker 退出/恢复 2、替换或未知来源 full 回退 4、未知历史限制 2、缺失/被终止钩子 2。检查了两次独立决定、原始 capture 完整字节和两次原结算,没有第三次 guard 或重复 spend。
聚焦 Python 为 878 通过、63 条件跳过;4 份 TypeScript 测试文件 96 通过;control-plane typecheck、配置范围的 strict mypy、摘要 owner 检查、差异/编译/双语及公开边界检查通过。mypy 的配置覆盖不是“所有新 Python 均严格检查”的证明,条件跳过不计为原生成功。
相同公开 CLI 四例(ASCII/UTF-8、短/深路径)在当前主干 de11f068c323d5fa8e13027bd2e9700258edb8fc 有两项深路径失败,完整输出分别 8040/8002 > 7900;本头四项全过,并核对所有原始字节、摘要、返回续页与从零重读。SSH 另做同一真实 argv/路径的旧纯 renderer 替换对照:off 均为 3737 且逐字相同;启用前 4136/4358 失败,当前 3764/3950 成功。此反事实只替换旧 renderer,并非声称运行整个旧 checkout;没有缩短路径或放宽 4000 上限。
**必跑失败保留,不据此要求本 PR 修无关代码:**标准预合并 6 项直接检查通过,19 项选中检查中 18 项通过;hot-path-interface-budget-smoke.py 的 quota_should_run_json 仍是 20551 > 20500。用同一实际 canary 运行器、固定父路径及原预算,当前主干和两份头均得到相同完整失败;完整 quota payload 仅归一化自有随机根名及观察时钟后相等。直接运行该 smoke 三者都是 20383,运行器额外嵌套临时目录带来 168 字符,说明为何不能用较短的独立运行来冒充预合并通过。另一个配对 test_lark_identity_shape_owner.py 三者均 1 失败/83 通过,完整失败集合相同:return_files.py:75、:100;测试、生产因果路径与预算未由本 PR 更改。当前 changed invariant 由上述真实入口与负例独立覆盖。这些 required red、质量回执及 benchmark manual hold 继续作为合并限制,绝不改记绿色。
外部 writer 在 Linux 产生可组写 replay 时拒绝复用是正确边界,不能为了 delta 改宽权限;本评审没有重跑作者 Linux/wheel 环境,也没有修改用户安装或账号。旧吞吐/字节和整套 Python 观察保留原版本,不提升为当前整套通过、自然任务收益或完整费用资格。源码/真实原生 loopback 不能替代实际 App、远程网络 SSH 或所有平台的采用验证。
后续依赖更新:本头实际集成的是 #7334 的 d27a87c6ea2b4274e16244d76a1a595ecbb5a016;#7334 随后已推进至 60d7d5b43ced2196b1374a6c8231c24c2efb8ffa。本结论不声称后续大页/收据区间变化已集成或验证;维护者进入合并前须刷新集成准确头及对应验证。
我的整体评价
APPROVE,当前准确提交没有尚未解决的 PR 专属阻塞发现。 这是对完整提案和公开代码证据的重新判断,旧 SSH、Code Mode 分组和重复摘要规则问题已有独立当前验证;代码与测试数量本身不作为成果依据。
本次边界是可回滚的原生上下文传输与恢复提案;公开评审通过不等于安装、性能资格、合并就绪或维护者合并授权。
架构判断是复用现有 TypeScript codec/lifecycle、完整分页 reader 和来源投影;Python 只观察原生文件与工具输出,当前不需要第二套权限状态或通用框架。
有界重构判断:已应用单一摘要规则与共享 final-frame reader;保留提供实际文件证据的局部 adapter 有明确生产调用。更大的 provider 框架和语言迁移不属于当前必要修复,暂缓,不新增仪式性后继任务。
完整任务收益、长期费用、实际 App 与远程 SSH 安装采用仍未验证;当前必跑预算及既有 Lark 检查失败另作合并限制保留。
检查全部受影响路径:没有生产渲染组件变化,模型菜单文件仅修改 smoke 验证;此次 CLI/原生文件恢复改动无需新增截图。
真实 App 安装、远程 SSH、自然用户理解和长期采用未验证。
本评审未查询、轮询或等待 CI,遵守 wait_for_ci=false;这也不免除本地 required red、exact-head closeout/readiness 和显式维护者授权。未执行安装、权限修改、benchmark 付费任务或合并。
English verdict: APPROVE for 137dac54929f70e668f1e36bf99d567b3b7eb28e. The bounded native delivery/recovery change is independently supported; unchanged required failures and benchmark/quality holds remain separate merge gates. No installed adoption, model understanding, cost benefit or merge authority is implied.
Native context activation now verifies each generated hook's actual settings before trusting it. The integration uses #7334's shared TypeScript lifecycle and bounded native replay observer, including complete guard presentation and batched Code Mode reads. Normal complete reads can stay warm after the real worker exits and resumes; lost or unsafe history still requires full recovery.
Tested proposal:
137dac54929f70e668f1e36bf99d567b3b7eb28e, integrating #7334d27a87c first, then this PR. Fixed tested main basis:30ffb06b9ded2d08391ed8c58f05cc34db7d39bd; PR target:main. Later target-main changes are not silently included in these receipts. Fresh exact-head review and protected readiness remain required.Independent change above #7334
PostCompactthrough the public CLI, without another event masking a missing dispatch. Session mismatch and feature-off remain inert; compaction invalidates reuse while retaining the immutable original for dependent recovery.The independent delta is six files. #7334 owns the codec, active reader interval, complete 7900-byte guard presentation, SSH prompt fitting and grouped native reader-emission repair; these are integrated here rather than reimplemented. Omitted/off behavior, current guard/authority and once-per-Turn settlement remain covered. The enabled benchmark child alone uses a private writer umask; parent/off settings are unchanged.
Validation and limits
At
137dac549:0664replay files; the adapter correctly refused reuse. This failed run remains failed.0077umask), and both fall back to current full with a group-writable writer (0002). No source file chmod, production permission relaxation, native budget change or guest/user default modification is used. These are explicit qualification conditions, not evidence that every external App/SSH host creates private files automatically.At dependency
d27a87c6, separately: 14 actual macOS native cases, 48 replay/loss cases, 49 shared TypeScript cases, and the matched unchanged-4000-character SSH prompt gate pass. The grouped-emission positive and four actual native cases first failed before the repair and pass afterward. Counts from different sources are not pooled into a full-suite result.All native cases use synthetic isolated authority and deterministic loopback inference with the source worker plus disposable installed public CLI/hooks. No paid solver/scorer, new campaign, live App installation/config/login change or remote SSH network qualification occurs. Installed desktop adoption, automatic external private-writer behavior, real billing and natural task quality remain open.
The full Python run at
e07321ffastopped at an unchanged Lark identifier-construction architecture check: 1 failed / 1612 passed / 574 skipped / 1903 passing subtests; the remaining suite was not executed. Historical failures remain recorded. CI was neither queried nor waited for. These author results do not clear the full-suite/manual holds or supply independent approval, merge readiness or maintainer authorization.Cost evidence remains source-scoped
Earlier three matched native pairs at
c8e97b4d, with the same four immutable captures/calls and process exit/resume in both arms, measured complete serialized request bytes 4,261,212 → 1,692,539 (−60.28%) and o200k proxy 971,540 → 393,540 (−59.49%). Static-loopback mean elapsed 27.177 → 29.069 seconds (+6.96%), with mixed paired directions. Real cache, billed cost and task outcomes were unknown.Those observations predate this integration's reader interval, complete guard and emission changes. They establish neither a current-head saving nor a fee or long-horizon benefit. Page calibration is a different comparison; stopped and failing attempts remain historical evidence.
中文:本次基于 #7334 的完整交付与真实恢复修复,收敛逐项原生 hook 信任、独立 PostCompact 和丢历史反例。新包在两种原生版本上分别验证;Linux 的不安全写入失败保留,私有写入与可组写入分开验证。默认关闭、权限、原捕获及结算未放宽。真实 App 采用、自动私有写入、费用/成果、完整验证和独立复评仍分别开放。