Skip to content

fix(scheduler): keep admission observations inline - #7843

Merged
huangruiteng merged 3 commits into
mainfrom
codex/scheduler-observer-context-20261101
Nov 1, 2026
Merged

huangruiteng merged 3 commits into
mainfrom
codex/scheduler-observer-context-20261101

Conversation

@loopx-agent

@loopx-agent loopx-agent commented Nov 1, 2026 •

Copy link
Copy Markdown
Collaborator

问题与结果

当原生 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、新配置或权限变化。

验证与边界

  • 合成 File/SQLite 真实 CLI 回归覆盖 context on/off:观察返回可解析的当前决策,不创建 native capture、不消费 quota;原环境不变,随后 native wake 仍能捕获自己的确切 Turn,只有一次 heartbeat receipt、零 spend。
  • 原实现的 on 两例失败、off 两例通过;修复后四例通过。测试通过现有 SessionStart owner 初始化合成 native session,不代表真实模型保留或理解。
  • scheduler、replan retry、机器配置、checkpoint 与上述回归合计 167 passed / 28 skipped;跳过项均需显式开启 native/controller 集成,未计作通过。
  • 最终 head 的 Ruff、diff 检查、RFC bilingual staged 检查及 standard premerge 通过(4 direct + compile + 10 catalog)。benchmark-sensitive manual hold 仍保留;这不是 merge readiness 或 merge 授权。
  • 最终 head 的真实 Linux native source → ordinary/stride receiver → 自动 full recapture → 下一 receiver 实际工作 → core Goal,context on/off 两套完整通过,source 均在本次新建,未复用旧 source 的通过状态。on 保留 full/delta 读取及 fresh receiver 首读 full 断言。
  • 八种真实 Linux native worker 配置在固定源码、native 0.162.1、UID 与原 30 秒 observer / 60 秒 native 上限下 8 passed(341.49 秒),覆盖 File/SQLite、显式 off、默认 on 与 transport-unavailable fallback。使用同一公开源码归档,将 source/dependencies/Node 放在容器本地文件系统。此前共享目录组合的 6 passed / 2 timeout 仍保留;同期负载也发生变化,未据此声明已隔离 IO/CPU 原因、修复通用延迟或取得科研收益。

范围是现有后台 scheduler 的观察到 wake 交接;不新增或修改前端操作、配置入口或视觉布局。更大的错误诊断展示改动暂缓,本修复直接消除已复现的入口失败。未据此声明长期效率或任务成果提升。

最终资格夹具修正(head 0cf1c9326512df5786c41b7781952fcd220365eb)

真实 Linux 原生组合验证暴露了资格夹具中的两类错误,原失败记录均保留:

  • 工具进程合法 yield 后,既有 native worker 测试提前读取尚未写完的 guard;采用现有 native_process_continuation 跟随当前可见进程。源 checkpoint 的严格请求计数同时计入已识别的等待请求,仍要求原语义请求基数、逐次有效候选与验证、六个确切工作 Turn、一次结算及原 replan/机会断言。
  • Stride 接收测试把最终状态读取声明成新的工作 Turn,却未执行或结算它,随后再捕获被正确拒绝。改成显式内联、无工作 Turn 的观察,并断言没有 owed closeout;真正的原生工作、fresh replan、完整捕获与更晚接收端仍必须逐项通过。

未提高超时、跳过失败项、改评分/机会/策略或使用活动 Goal 作测试。原生模型调用只通过合成 loopback provider;工程资格、真实模型采用和科研收益仍分别记录。最终 head 的联合捕获与八种原生 worker 组合资格均已通过。独立 exact-head review 已发布代码批准结论;实验授权、实际部署回读、长期收益及 merge holds 分别保留。

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 loopx-agent left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 保留这一界限,没有把合成验证升级为完整研究资格。

关键代码讲解

  1. scripts/external_scheduler_worker.py:656 的 build_should_run_command 只新增观察专用 --context-delivery off;同文件 :762 的实际调用和 :111 的 parse_tick 继续处理拒绝、terminal、重试。:561 的 _run_wake 及 :924 调用没有接收这个 off 覆盖。
  2. test_context_machine_configuration.py 的 response 与 test_native_checkpoint_handoff.py 的回调先用既有 helper 处理 yielded command,再读取原 guard 文件。2、13/15/17 的普通请求基数保留,只加实际只读 continuation 次数;没有调大运行时 timeout 或改变成功、候选、source/receipt oracle。
  3. 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.

@huangruiteng
huangruiteng merged commit 9cc63c2 into main Nov 1, 2026
17 of 31 checks passed
@huangruiteng
huangruiteng deleted the codex/scheduler-observer-context-20261101 branch November 1, 2026 20:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants