Repository navigation
fix(checkpoint): preserve complete large artifact witnesses - #6707
Conversation
…e snapshots 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)
HEAD: 02dac70eda426242d760c5fd6940a60a9161faaf
动机
受影响的是显式保存或恢复研究检查点、且声明目录含大量文件的 CLI、Codex Host 和 benchmark 调用者。旧 probe 会生成超过普通2MiB回复上限的完整清单;服务端执行后关闭连接,调用者拿不到可验证回复,已完成的工作可能没有对应检查点。本 head 将现有 artifact 方法接入有界私有快照传输,并在实际桥接调用中显式采用。独立 Linux 的8192文件捕获、CLI校验、物化及删成员拒绝通过;macOS 本轮完整大清单捕获仍发生一次90秒请求超时,不能宣称该验收稳定通过。没有扩大普通wire或64MiB私有上限,没有缩减清单、调整评分或增加执行权限;完整大目录原生接续、长期收益和安装采用仍未获得本次认证。阻塞限于当前大清单验收失败的解释与稳定性证据;底层目录归档/绝对期限的既有后续工作继续独立验收,不要求本传输PR完成整个原生研究接续。
先读不可变规范:docs/reference/research-checkpoint.md,版本 cd148933bb0cb00232cb3cc494f898a171ffe36c,并对照同版 overall roadmap 的 S3/S5/R5 与测试预算规则;没有用本PR新写的文档为自己作证。逐项判断:complete_declared_inventory:Prepare and capture: retain all declared members and verify bytes at the receiver.(implemented);explicit_activation:Explicit operations and current destination admission: inert artifacts grant no execution.(implemented);original_identity:After uncertain response retain original identity and never backfill/retry a missed point as new capture.(implemented);current_host_validation:Testing/budget contract: account for current failed real entrypoint and distinguish functional transport from a stable deadline claim.(not_met);full_native_continuation:CLI/Host stage does not certify packaged frontend, full native continuation or research gain.(deferred)。
改动思路
架构判断是保留现有通用传输与 typed artifact owner,只增加已有封闭方法集合的成员,并由真正的 CLI/Host/benchmark 消费者显式选择。没有把 benchmark 语义放入通用控制面,也没有新增 Python 决策源。当前 PR 的可独立审查边界是完整清单和元数据的传输修复;目录复制成本、原生绝对期限及完整接续属于既有 owning 后续。这个边界合理,但本头新增的大清单验证仍有一次未解释的超时,当前不能批准。
| 触发 | 本头行为 | 仍需分开判断 |
|---|---|---|
| 完整清单或元数据超过普通wire | 原私有文件通道传完整JSON | 64MiB、digest/权限与原截止时间 |
| 普通未opt-in请求 | 原2MiB协议与不确定响应语义 | 不自动重试已经执行的capture |
| 大目录复制慢 | 原artifact owner仍负责copy/flush | 传输通过不证明期限或完整原生接续 |
具体改动
完整17路径均已检查。Python与TS仅扩展同一个既有私有快照方法集合;CLI verify、Core Host捕获/采用/原生fork、benchmark capture-after-wake/replan/refresh/worker/controller/warm恢复及联合资格脚本显式传入原transport选项。原timeout计算、retry_safe、source/native重读、writer barrier和预算没有改变。两个原fixture只显式接受并断言新kwarg;新84行测试保留独立枚举清单及缺失成员拒绝,参考文档披露传输上下界与不确定响应恢复。
关键代码讲解
_request_with_info / LOCAL_SNAPSHOT_METHODS:Existing same-UID private request/sink files, digest and64MiB guards; new eligibility is explicitly mirrored in TS.handle_research_checkpoint:The shipped verify command uses the same complete artifact transport; other explicit execution decisions remain unchanged.capture_research_checkpoint:Core Host probe/capture opts in while retaining source/native rechecks, deadline and retry_safe=False.capture_worker:Worker and controller capture/restore retain their original barrier/deadlines and adopt complete-witness transport.
对主干的风险
[P2] 先解释并稳定大清单捕获的当前验收 — tests/control_plane/test_checkpoint_artifact_transport.py:41。本轮该 capture 返回 EffectRuntimeResponseAmbiguous,完整 Effect 命令为1failed/196passed,因而后续CLI校验、物化和删成员反例在这个macOS案例中没有执行。Linux同用例2passed不能消除这个失败;同字节artifact owner的有界对照仍混合超时与接近90秒的成功,不支持把它归因为已证无关或宣称90秒稳定。传输修复本身的Linux全流程、大probe与元数据证据保留,不把本项误称为新传输逻辑的因果回归。 最小修复:按现有预算决策指南区分传输功能验证和原生绝对期限验收,解释并稳定本头当前失败的测试运行条件或测试层预算,并保留完整清单、丢成员拒绝及原失败记录。测试层预算如需调整须有明确用途和对照依据;不得扩大原生capture/封存时钟、删断言或把后续绿色样本当成稳定性证明。底层目录成本/期限继续复用既有owner,不要求本PR承包完整原生接续。
实际证据应分开读:Linux用同一新测试文件和独立临时HOME/TMP,base两项在旧allowlist拒绝,head两项通过(106.72s总时长);其中完整8192文件的probe/capture/CLI verify/materialize及删成员拒绝、超过wire的请求与read_basis都实际执行。Mac完整Effect命令为196通过/1失败;失败发生在capture,前面的完整大probe相等和另一个大元数据用例通过。261项checkpoint消费者通过、61项Docker/native前置条件跳过,17项TS artifact/private snapshot通过;跳过不作真实原生资格。
为避免把所有红项都归给PR,还核对了相同artifact owner字节:直接owner对照base超过110s被结束,head约90.27s完成;另一次并行的相同8192文件普通RPC对照base87.25s/head86.85s均成功。后者capture回复本来就小,不依赖新增snapshot选择,因此不能据此证明新传输变快或原失败已修复。这组混合观察不提供稳定90秒保证、p95或已证外部故障归因,原Mac失败继续列为unresolved。没有改原生capture/封存时钟,也没有重采失败点。
标准premerge6direct+19selected零失败,benchmark-sensitive手工评审hold保留;DCO1、全部17路径公开扫描及semantic检查通过。原普通wire和私有64MiB边界、same-UID/权限/digest/symlink拒绝由现有测试覆盖;完整source witness、source稳定性与byte integrity仍由未改的typed owner判断。当前是显式CLI/Host前置修复,读过现有前端规划后保留其尚未交付范围,不另造配置开关或声称完整产品/研究接续。
我的整体评价
REQUEST_CHANGES,原因是当前新增真实验收仍有未解释失败,不是CI未完成,也不是要求本传输PR完成所有后续目录性能或研究任务。复用原私有快照传输和原 artifact owner,是比新 wire、第二份清单或统一放大普通回复更小的修复;显式调用点也比引入额外 wrapper 更易检查。当前 PR 的可独立审查边界是完整清单和元数据的传输修复;目录复制成本、原生绝对期限及完整接续属于既有 owning 后续。这个边界合理,但本头新增的大清单验证仍有一次未解释的超时,当前不能批准。 先把功能证明与时限资格分清并补足当前失败证据,保留完整清单和现有权限/截止条件,再作当前头结论。
English verdict: REQUEST_CHANGES - HEAD 02dac70; complete large transport passes on isolated Linux, but the new macOS8192-member capture timed out at90s. Paired unchanged-owner observations do not resolve that instability; retain the failure and qualify test scope/budget without widening native deadlines.
| timeout=90, large_local_snapshot=True) | ||
| assert observed["source_witness"] == witness | ||
| unit = tmp_path / "point" | ||
| captured = effect_runtime_result("runtime.checkpoint_artifacts", { |
There was a problem hiding this comment.
[P2] 先解释并稳定大清单捕获的当前验收
本轮该 capture 返回 EffectRuntimeResponseAmbiguous,完整 Effect 命令为1failed/196passed,因而后续CLI校验、物化和删成员反例在这个macOS案例中没有执行。Linux同用例2passed不能消除这个失败;同字节artifact owner的有界对照仍混合超时与接近90秒的成功,不支持把它归因为已证无关或宣称90秒稳定。传输修复本身的Linux全流程、大probe与元数据证据保留,不把本项误称为新传输逻辑的因果回归。
最小修复:按现有预算决策指南区分传输功能验证和原生绝对期限验收,解释并稳定本头当前失败的测试运行条件或测试层预算,并保留完整清单、丢成员拒绝及原失败记录。测试层预算如需调整须有明确用途和对照依据;不得扩大原生capture/封存时钟、删断言或把后续绿色样本当成稳定性证明。底层目录成本/期限继续复用既有owner,不要求本PR承包完整原生接续。
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
|
Updated head: The requested validation boundary is addressed in the new head below. The original macOS 90-second failure remains in the review record. The large inventory regression now uses an explicit finite 240-second functional RPC allowance. The unchanged artifact copy owner and the recorded base/head measurements do not support a stable 90-second claim, and this PR makes none. The production 90-second live-capture and 30-second sealing clocks, ordinary/private transport limits, full 8,192-member assertions and missing-member rejection remain unchanged. A valid-source future-deadline control and an expired-deadline rejection additionally prove that the larger RPC wait does not override the artifact's explicit absolute deadline. No runtime error handling was changed to satisfy an assertion about internal message text. 修复仅调整新增功能回归的测试层等待量,并补“有效来源+未来截止时间可捕获/已过期截止时间必须拒绝且不发布”的对照。原失败不撤回,不宣称90秒稳定;生产时钟、清单完整性、权限与实际原生研究接续的独立验收边界全部保留。请按新head重新判断这项最小修复。 Validation: full module 3 passed on macOS / 3 passed on isolated Linux; all original complete inventory, CLI verify/materialize and delete-member checks ran. Quick premerge 6 direct + 4 selected passed, benchmark maintainer-review hold retained. |
A complete research checkpoint witness can exceed Effect's ordinary 2 MiB reply limit. Previously
runtime.checkpoint_artifactsreturned the full witness through that channel: the server closed the connection after executing the method, leaving callers with an ambiguous response and no usable complete capture.This change opts the existing artifact method into the existing bounded private local snapshot transport in both Python and TypeScript. The actual CLI, Codex Host, benchmark and qualification consumers explicitly select that transport. Ordinary non-opt-in requests retain their 2 MiB limit; private requests/replies retain the existing 64 MiB, same-user, mode, digest and physical-path guards. Artifact contents, source/native rechecks, explicit activation, retry policy, authority, scoring and production capture clocks are unchanged.
The existing typed artifact owner still owns inventory, copy/flush and verification. No new wire, Python decision owner, capability or configuration switch is added. This remains the documented CLI/Host stage; packaged frontend use, complete large native continuation and research benefit require separate acceptance.
Validation and the earlier review failure:
read_basis.02dac70eda426242d760c5fd6940a60a9161faafremains recorded in the published review. The artifact copy/flush owner is byte-identical to the base. Review observations included a base run ended after 110 seconds and other base/head runs around 87 seconds; these do not prove stable 90-second behavior or a new transport regression.The separate controller archive/deadline repair #6714 preserves its own head and acceptance. A complete 23,117-member native checkpoint/continuation remains unqualified; successful large transport does not complete that follow-up. Frozen experiments, historical capture identities and their original failures are unchanged.
Bounded refactor assessment: reuse the current mirrored eligibility sets and explicit real call sites; an additional transport wrapper would duplicate the existing owner without removing a demonstrated gap.