Skip to content

fix(scheduler): preserve qualified dependency waits and scoped admission - #6883

Merged
songoow merged 1 commit into
mainfrom
codex/split-research-dependency-wait
Oct 20, 2026
Merged

songoow merged 1 commit into
mainfrom
codex/split-research-dependency-wait

Conversation

@songoow

@songoow songoow commented Oct 19, 2026 •

Copy link
Copy Markdown
Collaborator

当前落地方式(2026-10-20)

本 PR 直接面向 main;合入前置是 #6784。 去掉旧 B1 分支祖先,保留自身 24 文件增量。原实现 b74eb21b、quota owner 的复杂度修复,以及 v1/v2 契约断言兼容均已保留;没有放宽 accepted / quiet / replay / 不重复派发断言。

这是 #6838 的小 PR 落地路线;#6784 相关的 B1/A1/A2/A3 继续由 #6784 作为一个集合 PR 交付。旧拆分链完整保留在 codex/research-split-archive-20261020。只重放本 PR 自身增量,原作者、DCO 和源提交可追溯。目标为 main 不等于当前可独立合入;CI、当前 head review 与 unresolved threads 仍须满足。

当前验证与门槛

  • Python owner 回归:140 passed;实际注册的 TypeScript 测试:89 passed;control-plane typecheck、Ruff、RFC、maintainability ratchet 通过,未提高阈值。
  • 纯 main 的真实 CLI 批次:4 passed、2 failed。失败是 File/SQLite 的 accepted 后最终 quiet 路径,main 缺少 feat(goals): add persistent outcome requirements and evidence review #6784 的 no-executable-work 收口;这是明确合入依赖,保留测试阻断。
  • 加入 feat(goals): add persistent outcome requirements and evidence review #6784 + B2 + B4 + B5 后,原反馈闭环 File/SQLite 2 passed(180.96s),覆盖实际分析、原验收、quiet、replay 和不重复派发。组合 tree f924b0ba51cba5788e32febdac0c8f02d763e8c9;这不是本 PR 当前独立 head 已全绿的声明。
  • 修复 review 中 quota route 91 statements 超过 90 的问题,当前为 89;没有调整预算。

已验证本地 tree:cc952d71ad9f2ba8101cdeda11e53b64beb95a34。当前远程提交与该 tree 完全一致;CI 及 exact-head review 仍需在新 head 上完成。

当前 head:b8a837d19d650e307b56baad1f2a3778b648cabf;重放基线:5853e151d97d9129bda9dce45a92a0944dcb9565。

历史实现说明与原版本验证(原拆分链路线已由上述当前方式取代)

Goal And Delivered Outcome

已有依赖明确阻挡后继 Todo 时,worker 应持续安静观察;依赖就绪之后,执行仍须通过当前 quota、owner 和停止状态检查。本片把 #6838 的这条等待到重新准入的完整链路独立出来。

  • typed resume owner 核对 Todo、monitor generation、runtime clock、归档和到期状态,只有当前且可达的依赖能持续重查。
  • scheduler 保留安静退避;观察本身不授予执行或消费权限。
  • scoped fallback 只接受重新验证的独立 Todo,保留现有 Turn 的精确结算范围。
  • 随片交付依赖等待、反馈、过期/缺失来源、暂停/停止与实际有限执行的测试及协议说明。

Author Declaration / 实现依据

验收标准 Disposition 实现 / 验证
仅有效的明确依赖允许安静持续等待 implemented interaction contract、resume planning、scheduler arbitration
依赖就绪不越过当前 admission implemented action portfolio、action selection admission;dependency dispatch CLI
scoped fallback 与原 Turn 分别精确结算 implemented user gate lane progress、dependency feedback CLI

Scope And Continuation

这是研究恢复序列的第二片。等待条件、typed admission、Python transport 与 scheduler 投影一起交付;下一片接通当前 Host 启动见证,随后是 worker 持久恢复/UI 和证据驱动的方法比较。各 PR 以明确的前一分支为 base,组合评测使用统一集成分支。

Validation

  • Published revision: b74eb21b84eaab63509c4cbc54f04d44736b93d5.
  • Tested tree: 46947851efef8bc88360bbffcd1e5b6a7eb094ca;远端 tree 与本地已提交切片完全相等。
  • Run state: running.
  • Input classes: synthetic, public_fixture.
Check kind Result Evidence / limitation
unit passed 5 个 TS 文件:action portfolio、action selection admission、interaction contract、resume planning、scheduler arbitration
static passed 改动 Python 的 Ruff、diff whitespace、diff-scoped semantic advisory
static passed npm run -s typecheck:control-plane
real_entrypoint not_run Python 批次因并发资源争用主动中断,未完成用例,不计通过;按原命令串行补验证
real_backend not_run PostgreSQL 未运行;不会以 File / SQLite 代替其验证

Python 范围:test_dependency_dispatch_cli.py、test_dependency_feedback_cli.py、test_dependency_vision_wait_cli.py、test_goal_vision_blocked_successor.py、test_scheduler_arbitration_transport.py、test_user_gate_lane_progress.py,均在 tests/control_plane/。

命令前缀:python -m pytest -q --no-cov --maxfail=1。未放宽任何断言或超时;本次验证不包含付费模型评测。

Frontend / Visual Evidence

  • UI impact: none;无 Dashboard 布局或交互修改。
  • Before / after / first viewport: N/A.

Boundary Checklist

  • 描述只含公开源码与汇总验证,未附私有状态或原始日志。
  • 明确切片边界、源码版本及前后依赖。
  • 本片没有修改已有双语 RFC 对。
  • 提交包含 DCO sign-off。

发布、进入 main 与集成证据(2026-10-20)

  • 本片 source head:b74eb21b84eaab63509c4cbc54f04d44736b93d5;tree:46947851efef8bc88360bbffcd1e5b6a7eb094ca。当前 base 为 codex/split-research-acceptance。按原小 PR 路线,前置进入 main 后再将本片改向 main,并核对本片差异、检查和审批。
  • 新版 #6784 与 B1/A1–A3 存在组合重叠;它们的承载路线会影响后继重定基线,详见总进度。 完整顺序、评审阻塞和操作步骤。
  • 原小 PR 路线按依赖逐片进入 main;本仓库允许 merge commit,保留原提交身份通常便于后继继续比较。若采用 squash/rebase,需按旧父提交边界整理后继自身增量后再复核;改 base 本身不完成这一步。
  • 14 PR 的检查/评审快照为 2026-10-20 00:14–00:15 UTC。本片当时为 存在失败/取消;changes requested,1 个未解决讨论。后续合并资格以对应当前 head 与 main 基线的检查和审批为准。
  • 集成分支 已快进到 fe3b1f7b382e,tree 6bbf110b1cb2535975b2389558a86dff73792926。它保留原 d1dc8ebfe7ff0ce888c8e7a6b7a5051413f29af2 与最新 C3 7368ca0286d503a93e50b26ab24755a5fb429b2f 两侧祖先;真实 Git merge-tree 与 GitHub tree 一致、零冲突,仅增 A3 的两文件 Markdown 诊断修复。
  • 此集成继续使用已验证的冻结 main 45d742088a3f7896a0a008761f68d2437398bcd1。本轮观察的 main e4190c30d7f94886dddd8e06b899664df34120f9 已另有变化,进入主干前须另行更新与验证。原 d1dc8 的 supplied-candidate in_sync 收据保留历史绑定;后续正式 owner 收据见总进度,不将旧收据改标为新 main 的资格。
  • 构建及 UI 的实际运行版本仍为 d1dc8/cb8:control-plane TypeScript 50.754 秒通过,标准 Chat build 131.930 秒通过,Outcome 恢复 97.616 秒通过,独立正常首屏 41.605 秒通过,Worker readback 126.422 秒通过,research-history 功能场景 116.004 秒通过。该版本的 8 张可读截图与验证摘要 已发布;后继两文件修复不改变这些 UI 输入,截图保留真实拍摄版本。
  • 保留限制:首次 Outcome fixture 的 90 秒启动失败未抹去,后续通过使用正常缓存预热;research-history 新中文图仍需补全 CJK 字形;完整新 head Python/native/File/重放/并发矩阵、installed App 与模型/benchmark 收益未取得全面资格。摘要记录实际运行范围,原临时 raw logs 已随执行环境回收,未重建成伪收据。
  • 本轮最终对象核对确认 12 个 source heads 被保留、两文件补丁逐字节一致、UI/build 的 tracked 输入一致,以及源链 18/18 作者签署匹配。未修改的 integration owner 对已发布候选给出 preview_ready(execute=false);恢复的新 plan 仍是 never_synced,完整 CLI bootstrap 未执行,未重新签发 in_sync。

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

动机

需要等待外部依赖返回后继续原任务的使用者,以及同时保留独立工作和停止权限的操作者。

例如,任务 A 正在等待已登记的反馈,任务 B 可以独立完成:旧流程可能不断唤醒 A,或者用已就绪状态绕过当前暂停;当前改动让 A 按明确条件等待,并仅允许当前准入的 B 继续。

真实隔离 CLI 和受控 Host 验证了等待、重启、反馈采用、原任务恢复与一次结果交付;未知或过期依赖仍受监督,Stop、健康和配额继续约束执行。

本片处理单个精确依赖的等待与当前 scoped admission;不宣称所有并行等待都可静默,不新增 worker 分布式去重,也不授权付费模型、合并或提供方评测。

当前 quota 路由新增复杂度门失败必须修复;父分支已有的 builder 失败单独保留,最终发送时的 Host 重查和 worker 本地尝试日志由现有后续层承担。

独立核对后,这个有界增量值得保留。反复唤醒、人工重建要求和丢失原始任务会随会话累积成本;仅加强提示词不能替代当前来源与 typed owner 的约束。接受分层交付,但每片必须在其真实基线和实际消费者上成立,不能继承组合头的通过结论。

改动思路

等待关系来自原 Todo 与当前来源,准入仍归既有 TypeScript 选择和交互 owner;Python 只组装实时事实与提示,不另建等待或用户权限权威。

本 PR 的独立边界是已知单一依赖的安静等待、原工作恢复与精确 scoped 准入;当前需修复本片 quota 路由复杂度,后续 Host 与 worker 层继续承担各自效果边界。

触发条件 当前头的决定 仍保留的边界
精确依赖确实仍在等待 等待到明确来源条件或到期 来源未知、过期或无 schedule 仍监督
依赖返回或独立工作就绪 重查当前精确准入后才继续 就绪不替代 Stop、健康、配额和原 receipt

表格是依据当前源码的控制流解释,不是执行证据。它把原要求、当前来源与最终效果的责任分开;有限证据、观察记录和调度提示都不增添执行或完成权限。没有新增独立调度器或泛化框架。原有 CLI 的正常任务可以复用已知信息和既有授权,不新增确认轮次;UI 未在本片改变,不声称本次重测了分发或后续界面。

具体改动

评审目标:#6883@b74eb21b84eaab63509c4cbc54f04d44736b93d5;实际 merge base:bdee6973fc0cc256efb1abf55513393af3460877。本次是这片整个 base-to-head diff 的独立首评;实际目标为 codex/split-research-acceptance,未把这片当作直接基于 main 的改动。共 24 个文件,+1290/-36;生产、文档和验证分别核对,未修改待评审源码。

独立规范:https://github.com/loopx-project/loopx/blob/bdee6973fc0cc256efb1abf55513393af3460877/docs/reference/protocols/goal-vision-replan-contract-v0.md,spec_revision=bdee6973fc0cc256efb1abf55513393af3460877。逐项按改动前文本映射:Ownership Boundary;Exact blocked-successor wait;Replan ACK freshness;Acceptance;History-trigger ownership and retry semantics。这些条目的原始要求经所列实际 CLI、旧状态升级或依赖恢复证据核对;本片重写的说明作为待评审变更,不反过来充当验收来源。长程效果只认本地有界连续工作与产物,没有声称真实模型或完整父路线已经达成。

本次原样运行选中的 6 个 Python 文件,106 项全过;5 个 TypeScript 文件共 89 项全过,控制面 typecheck 通过。真实隔离 File/SQLite CLI 与受控 Host 覆盖已知等待的 100 次轮询、重启后再 100 次轮询,真实 source 返回后的原任务恢复与有限分析结果,以及未知、过期、缺失 schedule、不可用 provider、Stop 与独立任务。受控 Host 执行的是有可核对产物的有限计算,不把 mock 返回值当成真实模型收益。

结构化 ratchet 的父基线已有 builder 91 条语句失败;当前头的这个 finding id、指标和源码字节完全相同,归为继承失败并单独保留。本片新增 route 的 91 条语句失败有独立稳定身份,不能用“父分支本来红”掩盖。行为用例通过说明边界有效,不能代替当前质量门。

两侧普通无 opt-in 的 plan/history 均 exit 0,语义一致;显式未注册测试 agent 的 guard 两侧均拒绝,这只证明负例一致,不能作为正常准入覆盖。比较只排除逐项列明的观察时间、source age 和 rollout id/time,没有忽略授权、额度、来源或状态字段。原生 premerge 的 6 项直接检查通过,19 项选中检查全部执行,仅 maintainability catalog 项失败;diff hygiene、双语 RFC、编译及公开边界检查通过。未查询、轮询或等待 GitHub CI。

对主干的风险

  1. [P2] 把 scoped admission 分支整合进现有路由/准入 helper,或用现有机制提出有证据、带指标和退出条件的例外;保留当前健康、配额、Stop、原 receipt 与独立工作优先级,不通过删决策语义或全局抬限消除失败。

    loopx/control_plane/quota/should_run_packet.py:1139:_resolve_quota_should_run_route grows89->91 statements and48->52 decision points, adding a new unreviewed failure over unchanged90 limit. Parent already has builder91; its identity/metrics/file bytes are unchanged and it is not attributed to this PR.

最小修复应保持现有 typed owner、原任务/Turn/receipt 和当前来源的边界。复杂度失败可以通过同域、可逆的现有 helper 整理,或按现有机制提出带测量、指标与退出条件的合理例外;不能删除决策条款、缩小扫描范围或全局抬限。测试失败同样要修其实际拥有关系,保留独立语义覆盖,不能仅删断言来使计数变绿。

本片的 quiet-wait 正面证据限于单个精确、已知、未过期的 unbound 依赖;多个等待未自动推为可静默,也不把 bound Turn 改绑。原选择、原来源修复和 Stop 始终有自己的 owner。

隔离验证使用本地 File/SQLite 与受控实际进程;未调用付费模型或运行评测提交。真实 PostgreSQL、已安装分发、原生 provider 全阶段和真实模型长期收益未在本次资格中验证;本片没有修改它们的存储实现或宣称其验收完成。

我的整体评价

REQUEST_CHANGES。问题和 owner 选择成立,有真实 CLI 连续性与恢复证据,属于可保留的有界增量;当前列出的新增失败仍阻止这一个精确头通过评审。本片仅就新增 quota 路由复杂度提出修改要求;父分支 builder 红项单列,未把它重复算成本片回归。 已有后续 Host/worker 层继续承担其原有效果边界,无需为本次评审另造里程碑或要求完成整个父路线。

English verdict: REQUEST_CHANGES at b74eb21b84eaab63509c4cbc54f04d44736b93d5. All 106 Python and 89 TypeScript cases and typecheck pass. This slice nevertheless introduces a new 91/90-statement quota-route ratchet failure; the unchanged inherited builder failure is attributed separately. Preserve the validated semantics and repair the smallest owning boundary. No approval or merge authority is implied.

Reviewer: actor_kind=model_agent; model=gpt-6.1-sol; provider=OpenAI; runtime_reported; reasoning_effort=max

should_run=should_run,
normal_delivery_allowed=normal_delivery_allowed,
)
if (prepared.action_selection_qualification or {}).get("state") == "qualified":

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

[P2] 把 scoped admission 分支整合进现有路由/准入 helper,或用现有机制提出有证据、带指标和退出条件的例外;保留当前健康、配额、Stop、原 receipt 与独立工作优先级,不通过删决策语义或全局抬限消除失败。

Observed: _resolve_quota_should_run_route grows89->91 statements and48->52 decision points, adding a new unreviewed failure over unchanged90 limit. Parent already has builder91; its identity/metrics/file bytes are unchanged and it is not attributed to this PR.

Validation: Actualbasebdee697 ratchet has builder only; headb74eb21 adds route91/90. Independent106Python+89TS pass, typecheck passes,6direct passed/19selected all executed with1catalog ratchet failure.

Rebuild PR #6883 from its own B2 changes on main 5853e15, removing
the unrelated historical split ancestry. Preserve durable waits and scoped
dispatch; keep the quota route owner below the existing statement limit.
Verify configured acceptance across v1/v2 without weakening accepted,
quiet, replay, or no-duplicate-dispatch assertions.

This PR requires foundation #6784 before merge. The pure-main real
feedback test intentionally remains a dependency gate; File and SQLite
both pass in the foundation+B2+B4+B5 qualification tree.

Original source: b74eb21
Original author: song <liusongstep@gmail.com>
Validated local source: ef657dd9f975a965582b45c3b824f5110767cec7
Validated tree: cc952d7
Original history: codex/research-split-archive-20261020

Signed-off-by: song <liusongstep@gmail.com>
Signed-off-by: Codex <codex@openai.com>

@songoow songoow 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; OpenAI GPT-6 Astra; provider OpenAI; self_reported.

动机

这项改动面向“原任务仍有明确依赖、使用者希望等结果回来后继续”的执行场景。例如,任务 A 等待另一个 Todo 完成或某个 Monitor 返回新结果,任务 B 则可以独立推进。旧路径可能在依赖仍未变化时反复要求 A 观察、重规划,或在达到未变化轮询次数后退出;另一方面,依赖变成 ready 也不能代替当前的 Stop、健康、配额和用户 gate 检查。

当前实现为具有完整证据的单一依赖保留低频来源重查,并把独立 fallback 的准入限制在同一个、当前已获准的 Todo 上。等待本身不派发模型工作、不提供 spend 权限;来源变化后仍回到既有准入链。它没有把自然语言中的“等一会儿”识别成新承诺,也没有要求用户额外确认已经登记的依赖。

本次评审绑定 6883@b8a837d19d650e307b56baad1f2a3778b648cabf,实际 merge base 为当前 main 5853e151d97d9129bda9dce45a92a0944dcb9565。当前 PR 已从旧拆分链重放为自身的 24 文件增量;作者明确声明仍以 #6784 为合入前置。下面分别判断这份源码、旧 review 的修复和剩余依赖,不把旧分支或组合 tree 的通过记录当作本 head 的完整闭环验证。

改动思路

我按“canonical Todo 来源 → resume 条件 → vision wait 读模型 → typed interaction/arbitration → scheduler hint → 既有 worker 重查/唤醒”的链路追踪了等待行为,也按“当前候选 → scoped qualification → 最终 selected-work admission → 原 receipt/结算”检查了恢复执行的边界。前者回答是否有充分理由继续安静等待,后者回答这一回合此刻是否真的允许执行,两者没有合并成一个 ready 布尔值。

等待证明沿用 resumeConditionHasKnownPendingTarget,来源仍是当前 Todo 和已登记 generation;Monitor 是否可到达下一次观察还复用了现有时间解析与 monitorIsActive 规则。Python 保留投影所需的来源字段,TypeScript 决定是否可以减轻监督,Python scheduler 把该决定翻译成现有 cadence。没有新增另一个持久化 wait 状态、独立调度器或用户权限来源。

源码对应的边界如下;这是控制流解释,不是本次执行结果:

当前条件 新路径的处理 仍由原有 owner 承担的限制
单一 exact successor、来源明确且仍 pending、无绑定结算义务 保留安静的来源重查,取消这一类等待的未变化次数上限 原 Goal/Agent/Todo 关系、来源失效和新的准入仍须复核
Monitor 缺失、过期、无可用 schedule、generation 证明不全,或已有 Turn binding 不获得新的无限等待例外 继续原有监督、观察、修复或结算路径
来源就绪或出现独立工作 重新进入当前选项与准入判断 Stop、compute=0、其他 hard lane、当前 channel 权限和原 receipt 不被 ready 覆盖
用户 gate 外存在已证明独立的 fallback 仅允许精确匹配该 fallback 的待绑定选择 normal_delivery_allowed 仍关闭,受 gate 保护的其他工作没有随之放行

当前 PR 的合理边界是这两个相接的运行规则及其来源传输;完整 acceptance 后的空工作收口仍依赖已声明的 foundation,发送前的 Host 再检查和 worker 持久恢复也应保留各自 owner。不能用本片的安静等待,替代更后面的效果边界。

具体改动

检查覆盖全部 24 个变化路径:12 个生产文件合计 +166/-44,11 个测试文件合计 +1120/-3,一份协议增加 23 行。生产增量集中在证明字段传输、typed admission 和 scheduler 展示,主要新增代码量来自三个真实 CLI/worker 场景测试。还检查了未变化的 should_run_prepare、interaction Python 调用方、runtime handler 注册、receipt precedence,以及 scripts/external_scheduler_worker.py 对 cadence/limit/Stop 的消费。

关键代码讲解

  1. build_goal_vision_wait_state:继续要求普通 acceptance gap 的全部 causal Todo 有对应等待证据,并且没有其他可选 advancement;新增传递 successor 的 resume_monitor_generation。同文件的压缩函数保留目标 due time、baseline,以及明确为 null 的 archive/expiry 信息。上游 resume evaluator 先从实际来源生成这些字段,因此“已知没有 expiry”和“压缩后缺少证据”不会混成同一件事。projectTodoResumePlanning 只把符合已有 pending-target 规则的 Monitor 依赖纳入 successor wait。

  2. projectSchedulerArbitration:只有 interaction 一致、无需执行/通知/spend、effective action 与等待 disposition 对齐时,才允许 pendingAutomaticSuccessor 生成新的 pending 标记。后者限定当前 agent、当前或未领取的 successor、一个等待项,并排除 settlement identity 和 pending action selection。todo_done 必须是明确且未归档的支持类型;monitor_changed 还需要同一个 Monitor、匹配 baseline、未前进 generation、runtime clock、可解析 due/expiry,且在观察时点和 due 时点均未过期。缺字段或解析失败不会降低监督要求。

  3. build_scheduler_hint:新增标记只影响相应 wait 分支的未变化次数上限,普通 agent-scope wait 仍保持有限监督;已知依赖按 10/20/30/60 分钟退避,Monitor 等待继续使用现有 schedule cadence 约束。Stop 和 compute=0 的 stop_until_explicit_resume 在这些分支之前返回,active work 也在此前处理。Python codec 要求该标记是真正的 boolean,旧投影省略字段时默认 false。实际 external worker 会解析 null limit,并在每次 tick 重新调用原 quota CLI;不会把这个标记本身当作 wake 权限。

  4. _resolve_agent_lane_delivery_route:把 route 和当前 should_run 一起返回,其唯一生产调用点已按 tuple 接收,所有返回分支一致。只有 typed qualification 已为 qualified 才打开该精确选择的执行值,仍保留 workspace/boundary 处理。它委托 qualifyActionSelection 判断 scoped 例外:请求 Todo 等于已证明独立的 fallback、quota state 为 operator_gate、Goal 健康、且唯一 preemption 是 delivery_not_allowed。receipt、control repair、due monitor 等其他 hard lane 不能借此通过。随后 frontier 的 ready 分支也要求当前 should_run 和适用的健康/eligible 条件,避免仅凭依赖已满足复活被拒绝的执行。

  5. currentActionSelectionAdmission:最终 pending scoped delivery 同时要求 qualified request、selected Todo 与 fallback 身份一致,safe_bypass_allowed=true 且 kind 恰为 scoped_user_gate_fallback,并要求当前 agent channel 的 must_attempt 和 delivery_allowed。外层仍检查 ok、should_run 以及请求/选择身份。Python action_selection_context 只补送这项判断真正使用的 kind 和 fallback Todo id,没有在传输层另行计算权限。

独立协议依据是改动前的 Exact blocked-successor wait,spec revision 为 5853e151d97d9129bda9dce45a92a0944dcb9565。既有要求包括:精确 causal coverage、不让一个路由的 wait 遮住另一项未覆盖要求、不把读模型写成生命周期事实、来源 ready 后恢复原路由、Todo 完成不自动等于 Goal acceptance 结束。当前新增文字是在这个基础上明确“何时允许超过原轮询次数”的窄例外,而不是宣称任意依赖都足以无限等待。

对主干的风险

旧 review 的具体 P2 已在当前源码中处理。 原讨论 针对旧头 b74eb21b84eaab63509c4cbc54f04d44736b93d5 的 _resolve_quota_should_run_route 新增 91/90 statements。此次将资格对应的布尔回传放入既有 route helper,没有提高预算。使用仓库未修改的 _FunctionMetrics 定义进行仅解析源码的 AST 复计,结果如下:

函数 当前 main statements / decision points 当前 PR head statements / decision points
_resolve_quota_should_run_route 89 / 48 89 / 50
_resolve_agent_lane_delivery_route 50 / 46 54 / 50

当前仓库对应上限仍是 90 statements、60 decision points。这项静态复计足以说明旧讨论的 91/90 身份没有继续存在于当前 route;它不是整棵树 maintainability gate、premerge 或测试通过的声明。我没有自动关闭旧讨论,也没有把旧 review 的 106 Python/89 TS 执行记录移植到新基线。

最值得防范的行为风险是:把未知/不可达来源误当成可靠 pending,从而让 worker 永久静默;或者把一个独立 Todo 的授权扩张到所有 gate 内工作。当前源码分别通过正向来源证明、单一等待范围、generation/clock/expiry、当前硬限制及两次精确选择判断限制这两条路径。等待期间来源被删除、监控过期、出现独立工作或 Goal 被 Stop,必须在新的 quota 读回中重新决定,不能沿用上一轮 pending 标记当作永久授权。

新增测试设计覆盖了这些主要方向:缺失来源和 provider 不可用不唤醒;未知依赖保持原三次监督;Monitor 过期、due 晚于 expiry 或缺少 schedule 不获得无限等待;来源实际变化后选择原 successor 或先选择到期 Monitor;轮询与重启不改变 canonical Todo/provider revision;用户 gate、compute=0、Stop、受保护 Monitor 与独立 fallback 的区别;原反馈身份、原验收、receipt、replay 和单次结果交付。有限分析 Host 使用确定性计算替代模型,并检查真实产物,因此其设计可以检查执行链,但不能证明真实模型理解、通用研究质量或分布式去重。

本次是源码和测试设计审查,没有独立执行上述测试、CI、runtime 探针或完整门禁。 另一个必须保留的交付边界是作者已披露:独立 main 上的反馈闭环在 acceptance 后最终 quiet 路径仍缺少 #6784 的 no-executable-work 收口;组合 foundation+B2+B4+B5 的通过记录不是当前单独 head 的通过。这个既定依赖不能被新的源码意见抹掉,也不应被重新包装成一次未定位的新代码回归。合入前需沿已声明路线完成 foundation,并对实际组合后的 head 复核该路径。

我的整体评价

COMMENT:当前完整 diff 与生产调用链检查中,未发现新的、足以请求修改的确定代码 blocker。 旧 quota route 复杂度问题已有可独立核对的源码修复,仍保留健康、配额、Stop、原 receipt 和 scoped fallback 的精确边界。新增机制沿用现有 resume、interaction、scheduler 和 admission owner;没有为了让局部测试看起来通过而修改阈值、删除 quiet/replay 的关键断言或另建等待权威。

对用户的局部改善是让有可靠来源的依赖持续安静等待,并在来源返回时保留原任务及原接受条件;这减少无意义唤醒或人工重建任务的机会。其长期成立仍依赖来源可达性、后续准入和原结算路径,不能从新字段或测试数量推导出长期任务成功率。更大的等待/恢复/验收闭环继续受 #6784 及后续层的明确交付边界约束。

本意见按委托优先基于代码发表,CI 不作为前置或 blocker,也不代表当前 PR 已具备独立合入资格。若后续变更 exact-wait 范围、Monitor 时间/代际证明、scoped qualification、Stop 优先级或 foundation 组合基线,应针对这些真实入口重新审查;当前没有需要新增的 inline finding。

English verdict: COMMENT — source review completed for #6883 at b8a837d against main 5853e15. No new blocking code finding was identified. The previous 91/90-statement route finding is addressed in the current source: a static AST-only count gives 89 statements for the route and 54 for its existing helper, with unchanged limits. All 24 changed paths, relevant production callers and test designs were inspected. No tests, CI or product runtime probes were executed for this review. The declared #6784 foundation dependency and acceptance-to-quiet integration boundary remain; prior or combined-tree passes are not claimed as current-head qualification.

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator

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; provider OpenAI; runtime_reported; reasoning_effort=max.

动机

等待另一项任务或监控结果的 Agent,以及希望它自动继续的使用者。 同一任务等待已登记的前置结果时,旧路径反复监督并可能停止;新路径保留低频来源重查,结果返回后再检查执行资格。 已证明的单一依赖能够安静等待,来源变化后仍通过原有健康、配额、用户 gate 和原回执限制恢复。 验收后的空工作收口仍依赖 #6784;组合分支的通过不等于当前独立 head 的通过。 不承诺真实模型质量、所有平台、安装资格或整个研究 Goal 完成。

本轮绑定 6883@b8a837d19d650e307b56baad1f2a3778b648cabf,实际基线为 5853e151d97d9129bda9dce45a92a0944dcb9565。完整提案是可靠依赖等待及其恢复准入,不能用旧 stacked 分支、组合 tree 或另一份只读源码意见替代当前 head 的执行验证。

改动思路

复用现有来源证明、准入和调度 owner,避免另建等待状态或把统一次数上限放宽到未知来源。 本 PR 交付可靠依赖的等待与重新准入;空工作验收收口留在已声明的 #6784 owner。 来源事实由 Todo 与 resume evaluator 产生,在展示裁剪前完成因果覆盖;TypeScript 决定是否有充分依据减轻监督,Python 只传输事实并将 arbitration 翻译成原有 scheduler hint。依赖 ready 与此刻获准执行是两个判断,当前 Stop、健康、compute、用户 gate、workspace guard 和原 Turn 绑定均保留。

下面是此 head 的控制流说明,表格不是执行凭证:

当前情况 应有结果
单一、当前或未领取、来源明确且 pending、尚无结算绑定 安静重查来源;不派发工作或扣额
未知/不可达/过期/没有 schedule 的来源 原观察或修复规则继续负责
来源变化、新独立工作、Stop 或配额变化 重新消费当前准入;不沿用旧 pending 标记

具体改动

全量 diff 为 24 文件 +1309/-47:生产 +166/-44,测试 +1120/-3,协议 +23。只读计划、既有 worker、quota prepare 与最终 selection 的未改调用方也已追踪。三个新 CLI 场景覆盖真实来源、等待持久恢复和有限反馈产物;没有新持久化等待状态或手工同步字段。

关键代码讲解

  • pendingAutomaticSuccessor 要求 exact 单一等待、当前 agent/claim、正向 resume 证明及无 settlement/pending selection;Monitor 还要有 runtime clock、可达 due/expiry 与有效 archive 信息。
  • qualifyActionSelection 和 currentActionSelectionAdmission 仅允许同一个已证明独立 fallback 在 operator gate 外执行;根 permission、其他 Todo 或 ready 标记都不能借来放行。
  • _resolve_agent_lane_delivery_route 在原 helper 中一起返回 route/should_run,保留 workspace guard;build_scheduler_hint 只对正向 pending arbitration 取消原次数上限,仍按来源 cadence 退避。

独立 spec_ref 为 docs/reference/protocols/goal-vision-replan-contract-v0.md,spec_revision 为 5853e151d97d9129bda9dce45a92a0944dcb9565,读取的是改动前文本。criterion_id Exact blocked-successor wait:已实现精确覆盖、正向来源和独立工作优先;State Machine:已实现等待不授予执行/结算权与 fresh routing;History-trigger ownership and retry semantics:200 次来源重查/重启不改 canonical state、不派发或扣额,反馈保持原身份;Acceptance:当前独立 head 的最终空工作 quiet 尚依赖 #6784,作为明确 deferred 集成边界保留。

对主干的风险

未发现新的 blocking code finding。最大风险是把未知来源当成可无限等待,或将一个 fallback 的权限扩大。本轮真实 File/SQLite CLI 使用相同 canonical 输入对照 actual base/head:普通工作和无 schedule Monitor 的完整诊断与准入一致;已知 pending Todo 从 must_attempt=true、三次停止变为 must_attempt=false、安静来源重查。另加 40 个 peer Todo 后共 42 行,精确因果等待不变;新当前 Agent 独立工作、Stop/resume、provider 失效恢复与错误 fallback 由已执行的 CLI/TS 反例覆盖。

语义与 CI 对齐

六个改动 pytest 文件的测试为 104 passed、2 failed;两处失败都在反馈已完成并通过 scoped acceptance 后,最后 should_run=false 的断言。为归因而复用同一个不可变 post-state 分别执行 main/head 公共 quota CLI,二者均无 selected Todo,却返回相同 normal_run/must_attempt=true 及完整 primary diagnostic,canonical provider revision 不变。该路径没有待判的 exact successor,缺失的是已声明 #6784 的空工作收口;这不是把失败计数相同当成证明,也没有删除断言或宣称当前单独 head 完整闭环通过。

五个改动 TS 文件 89 passed,typecheck 通过;当前原生 premerge 的 6 个 direct 与 19 个 selected checks 全通过,包括未提高预算的维护性/语义门。上次 91/90 route finding 已由原 helper 返回调整消除,旧执行结论没有继承。按当前规则未查询或等待 GitHub CI。模拟 sleep 和确定性分析只能验证边界与产物,不能证明真实模型理解或所有安装平台。

我的整体评价

APPROVE 当前有用且可回滚的等待/重新准入增量;#6784 集成与最终空工作收口仍是独立合入限制。 long_horizon:improved,可靠依赖保留自动继续;user_experience:improved,已有意图和授权下不增加确认轮次。机制沿用现有 vocabulary/typed owner,pending_dependency_wait 是派生投影;无新权限来源、重复状态或平行 request 版本。源码体量与真实故障范围相称,局部整理已把 quota 资格回传留在现有 helper。后续 actual integrated head 必须重新验证 acceptance→quiet,不把这次批准当成合并、升级或整个 Goal 完成的授权。

English verdict: APPROVE at b8a837d19d650e307b56baad1f2a3778b648cabf for the bounded dependency-wait and fresh-admission increment. Independent File/SQLite baseline/head probes and current local validation support the changed invariant. The accepted-empty closeout failure is independently identical at the actual base and head and remains with the declared #6784 foundation dependency; integrated-head qualification and merge authority are separate.

@songoow
songoow merged commit dc1958a into main Oct 20, 2026
34 of 70 checks passed
@songoow
songoow deleted the codex/split-research-dependency-wait branch October 20, 2026 10:44
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