Repository navigation
fix(scheduler): keep admission observations inline - #7843
Conversation
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>
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)
APPROVE:未发现当前修复的阻塞性问题。结论绑定 #78430cf1c93,覆盖完整五文件 diff;完整 Linux joined qualification、质量回执和合并权限仍分别保留。
动机 / Motivation
使用外层 shell scheduler 的操作者,在原生上下文开启后可能遇到进程仍活着、实际工作一直没有启动的情况。原观察继承 on,却需要直接解析 raw 决策,因而在 wake 前失败;现在只让观察请求显式 off,工作进程继续保留原 on/off 和自己的 Turn。本次还修正验证夹具:等待合法的异步工具完成,并避免把一次结果审计制造成新的未结算工作。范围是已有观察到 wake 交接和原有 oracle 的可靠执行,不声称真实模型理解、研究质量或完整实验资格已经通过。
改动思路 / Approach
继续复用 build_should_run_command,而不是修改机器开关、父环境或添加另一套导航解析器。parse_tick 仍消费 quota 的原权限判断,_run_wake 仍按原环境启动。新 head 相对 7a5 只改测试,唯一运行时 blob 9a7e3a125c8eeb0cbd2fe0a48e7587b333316eb1 完全相同,因此前次真实 worker 对照只在这个明确的不变条件下复用,不继承旧批准;此前没有发布旧头的批准。
决定保留这个边界:raw 参数属于机器观察,工作身份和结算属于真正的 wake。夹具复用已有 native_process_continuation 等待工具,额外次数只来自最新输出中可识别的 session,并且发送空 chars 的 write_stdin;普通工作与六次候选、逐 Turn 结算、checkpoint、Stride 和 source fence 断言仍保留。当前 PR 交付现有 scheduler 修复及这两个夹具边界,不新增权限、配置或评价标准。
具体改动 / Changes
spec_ref=docs/reference/required-work-context.md; docs/reference/research-checkpoint.md,spec_revision=afb15e601ca0538d1374f98c6b5e1a51b8bd8bee。Machine default:机器观察显式请求 raw 输出,保留调用身份,不改变交互 Agent 的偏好;本 head 已实现。Disable and qualification:机械/隔离验证与真实模型、长期可靠性及净收益分开;本 review 保留这一界限,没有把合成验证升级为完整研究资格。
关键代码讲解
- scripts/external_scheduler_worker.py:656 的 build_should_run_command 只新增观察专用 --context-delivery off;同文件 :762 的实际调用和 :111 的 parse_tick 继续处理拒绝、terminal、重试。:561 的 _run_wake 及 :924 调用没有接收这个 off 覆盖。
- test_context_machine_configuration.py 的 response 与 test_native_checkpoint_handoff.py 的回调先用既有 helper 处理 yielded command,再读取原 guard 文件。2、13/15/17 的普通请求基数保留,只加实际只读 continuation 次数;没有调大运行时 timeout 或改变成功、候选、source/receipt oracle。
- test_checkpoint_joint_receiver.py 的 final audit 去掉人为 joint-next-audit 工作 Turn,显式 off 并新增无 closeout_required 的断言。它仍在真实 larger-work 写回和 spend 之后执行,不替代那些结算。
五文件 +110/-9:运行时四行(含两行注释),其余是四个测试文件。独立原 worker main/CLI/child 的 File/SQLite × on/off 同脚本对照:base afb15e6 的 on 两例 exit2且不 wake、off 两例通过;7a5 四例通过,child mode 不变、每个工作一条 heartbeat receipt、零 spend。当前生产树/依赖与该证据逐项对照后复用。
新增独立反例:同一 SQLite 输入中,旧 audit 带工作 Turn 会产生 owed receipt,下一真实 Turn 进入 unsettled_host_turn_recovery;新 audit 不带 Turn 时不产生欠账,下一工作正常准入,均零 spend。另五个 helper 输入覆盖真实/包装 yield、最新完成结果不能借旧 session、普通请求和坏 session 不能折算为 continuation。
对主干的风险 / Risks
最强反例是把多余 ordinary 请求都算成 continuation,或为修复观察把工作上下文关闭。当前源码只对 helper 实际识别出的最新 session 做空输入等待;真实 native 八例覆盖 File/SQLite、显式 off、默认 on 和 transport-unavailable fallback,全部通过。运行使用 macOS 上 Codex CLI 0.166.0-alpha.5.1、隔离配置与 loopback 合成推理,未调用付费模型,也不证明模型理解或 Linux 全组合。
额外用同一 private harness 给原 guard 添加两秒合成延迟并让首个工具一秒 yield:旧 7a5 的同一 fallback 例提前读文件,FileNotFoundError;当前 head 经过一次只读 continuation 后通过,原 60 秒 deadline、同 Turn、单 receipt、零 spend 断言均保留。脚本 SHA-256:680327d8c91c2da002431720939f793886d00b898fbba189fd534f45b5a81da4。不是通过放宽 timeout 或改写原失败得到成功。
语义与 CI 对齐
PASS:六个 owning 模块 167 passed / 28 skipped;其中八个 native 例另行显式运行 8 passed,强制 yield 的同条件新头 1 passed。其余 controller/fresh guest 场景没有执行,不算通过。standard premerge 五项 direct(含 compile)和十项 catalog 检查通过,但整体 exit1:独立工作区 CQR 为 stale,另有 benchmark-sensitive maintainer-review hold,均未清除。CI 未查询、轮询或等待,不是 APPROVE 的前提。
作者最新报告当前 0cf 的 Linux native 八例为六过、两例在外层 observer 的 30 秒上限超时;其 Linux joined on/off 完整链已报告通过,但这里没有独立复跑。两项 timeout 尚未做同环境 base/head 归因,没有标成基础设施问题或通过。历史 fallback/cleanup、Stride recapture 和 off 请求计数失败同样保留。本次独立证明的是参数、原工作身份、只读等待与 audit 这几个受改动不变量;完整 Linux 稳定性、研究得分与长期成本仍由原资格流程验证。本 PR 不改评分、原 source fence、预算、tag、发布或作业授权。
我的整体评价 / Verdict
long_horizon=improved:已复现的 wake 前失败得到修复,结果审计也不会再凭空产生新的未结算工作;ordinary 工作和实际后续结算义务保留。user_experience=improved:已有设置下可继续工作,无需关闭机器 native 设置或新增确认。visual_review=not_applicable:检查的是 scheduler argv、benchmark worker 和测试回读,未改变渲染界面;unverified_scope=真实模型采用、完整 Linux joined qualification、持续效果和净成本。
代码与问题规模相称,复用既有 owner/helper;无新共享 vocabulary 或重复状态。没有阻塞性发现。完整 native 资格、精确 CQR/maintainer hold 与合并授权继续独立判断;本结论不是合并或实验重启许可。
English verdict: APPROVE this exact-head observer and fixture repair; full qualification and merge holds remain separate.
问题与结果
当原生 context delivery 默认开启时,外层 shell scheduler 的
quota should-run观察可能尝试创建 native capture。观察没有模型工作 Turn,因而在真正的 wake 之前失败;进程仍存活,却只反复报告 tick error。本改动仅为 scheduler 自己消费的观察请求显式选择
--context-delivery off。真实 wake 继续使用原环境和已配置的 context delivery,并保留自己的 Turn、capture、admission 与 settlement。复用现有 CLI 和 scheduler owner,没有全局 opt-out、新配置或权限变化。验证与边界
范围是现有后台 scheduler 的观察到 wake 交接;不新增或修改前端操作、配置入口或视觉布局。更大的错误诊断展示改动暂缓,本修复直接消除已复现的入口失败。未据此声明长期效率或任务成果提升。
最终资格夹具修正(head
0cf1c9326512df5786c41b7781952fcd220365eb)真实 Linux 原生组合验证暴露了资格夹具中的两类错误,原失败记录均保留:
native_process_continuation跟随当前可见进程。源 checkpoint 的严格请求计数同时计入已识别的等待请求,仍要求原语义请求基数、逐次有效候选与验证、六个确切工作 Turn、一次结算及原 replan/机会断言。未提高超时、跳过失败项、改评分/机会/策略或使用活动 Goal 作测试。原生模型调用只通过合成 loopback provider;工程资格、真实模型采用和科研收益仍分别记录。最终 head 的联合捕获与八种原生 worker 组合资格均已通过。独立 exact-head review 已发布代码批准结论;实验授权、实际部署回读、长期收益及 merge holds 分别保留。