Skip to content

fix(quota): keep proven automatic wait frontiers quiet - #7689

Merged
huangruiteng merged 1 commit into
mainfrom
codex/blocked-wait-contract-20261030
Oct 29, 2026
Merged

huangruiteng merged 1 commit into
mainfrom
codex/blocked-wait-contract-20261030

Conversation

@loopx-agent

Copy link
Copy Markdown
Collaborator

Goal And Delivered Outcome

多个 Todo 都有已核验的未到期恢复条件时,原等待规则只认可单个后继,因而要求无任务绑定的心跳执行 monitor-poll;该命令随后正确拒绝缺少绑定的回执。可选 user_action 又可能把已有等待误当成空 Agent lane。

本修复在既有 TypeScript wait owner 中先校验全部 canonical witness,再生成只读 pending_resume_count;仅完整覆盖当前等待集时走安静等待。纯时钟集合按最早期限复查,交互适配层复用现有 scoped notice-only 分类。真实用户门槛、未知依赖、Turn 绑定、Monitor identity 和记账规则保留。

Author Declaration

  • Written by: model_agent · OpenAI Codex.

Implemented against

Specification: docs/reference/protocols/goal-vision-replan-contract-v0.md, “Exact blocked-successor wait”, baseline 5c2ed9f6f2cf8a9bdc952f1c8dfceae92e062b0b;本 PR 补齐多来源只读证明,更新同一协议和双语 TS 迁移检查点。

Criterion Disposition Owner / validation
所有因果工作有等待见证,展示截断不能代替完整来源 implemented vision_wait_coverage.ts;7 个来源、5 行展示的反例与完整计数
有明确 pending 证据的未绑定等待不执行或扣费 implemented File/SQLite 真实 CLI 首次与原 Turn 重放,原状态与 run 分类核验
可选提醒不覆盖已验证等待,真实 gate 仍生效 implemented 真实 CLI optional notice / user gate 用例
到期、独立工作和已有 Monitor 绑定正常处理 implemented 既有 dated-wait、scheduler、resume 和 monitor transaction 用例

Scope And Continuation

源码修复和作者验证已完成;本机安装采用及长期 Host 行为尚未据此宣称通过。无存储迁移、权限扩大、历史回执改写、模型调用、UI 或新配置。共同自动恢复条件检查从交互层移回 wait owner,两个消费者复用同一函数。

pending_resume_count 是现有 goal_vision_wait_state_v0 的只读投影字段,非新生命周期或执行授权。旧单来源格式继续可读;显式错误计数、缺少完整多来源证明及不支持的来源继续保留监督。

Validation

  • Tested revision: fa6d16d323620437e6dcd0bd200c0d89c32d69c0
  • Run state: finished
  • Input classes: synthetic, public_fixture
Check kind Result Public-safe evidence / limitation
regression_parity passed 同输入 File/SQLite × optional notice 的 4 项真实 CLI 用例:基线 4 fail → 修复 4 pass
real_entrypoint / real_backend passed test_dated_vision_wait_cli.py、test_goal_vision_blocked_successor.py、test_scheduler_interaction_arbitration.py 共 115 pass;独立临时 runtime 与真实 File/SQLite
unit passed interaction、vision wait、resume、Monitor commit 六个 TS 模块,77 pass;覆盖缺失来源、错误计数、异主、已有 binding 及 replay
static passed 完整 typecheck:control-plane;声明的 mypy 17 个文件;变更 Python 的 Ruff;双语 RFC 检查及 diff hygiene
static passed 10 个变更文件公私边界扫描,0 errors / 0 warnings;精确 diff change-quality receipt 为 pass
integration passed 标准 premerge:6 项直接检查及 19 项选定检查通过,无失败、跳过或 manual hold

未运行付费模型、整版发布资格或生产安装替换。没有修改 provider 事务、存储路由或兼容迁移,因此本次未启动存储三臂迁移演练;此处不宣称该资格。

Frontend / Visual Evidence

  • UI impact: none;现有 quota / interaction / scheduler 消费者继续使用同一入口,无新增界面。

Type of Change

  • Bug fix
  • Documentation update
  • Test update

LoopX Area

  • Control plane (goals, todos, quota, scheduler, registry, runtime)

Technical Direction

S7 scheduling / S10 recovery;沿现有 TS migration 与 exact blocked-successor wait owner 修复,无新调度器或第二套 authority。

Boundary Checklist

  • Diff、正文和证据不含私有状态、凭据、原始轨迹、内部链接或本机路径。
  • 未复制 maintainer-owned benchmark 工作。
  • 范围限定为多自动等待契约缺陷。
  • 双语 RFC 两份同改,staged 与 committed 检查通过。
  • UI impact 为 none。
  • 提交含 DCO Signed-off-by。

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)

动机 / Motivation

使用 quota/status 驱动长程任务的 Agent 与调度器。 同一任务集中的多个后继都未到恢复时间时,旧版本仍要求无绑定心跳提交等待观察;新版本确认全部来源后允许静默,避免随后遭遇绑定身份拒绝。 七个有有效未来恢复时间的任务,首轮及同 Turn 重放均保持静默,不生成轮询或扣费记录,原任务状态字节保持不变。 本 PR 不改写历史回执、不放宽 Monitor 绑定、不替代安装验收或整版发布资格。 源码已验证;维护者授权合并、正常安装采用及当前 Host 读回仍待完成。

改动思路 / Approach

这里的“等待见证”是能对应到原任务的当前恢复来源。原有 Todo 恢复规则已判断时间、依赖状态和 Monitor 世代;既有 Goal wait owner 已拿到完整因果集合,因此应由它在展示压缩前逐项求证,再让交互层消费结果。复用 Todo 恢复规则和现有 wait owner,在来源压缩前计算完整证明,比新增等待状态、另一套轮询命令或放松回执绑定更小且可回退。 当前 PR 交付多自动等待的只读证明、交互消费与回归覆盖;存储、执行权限和安装版本不变。

新增计数是每次来源读取时重新计算的投影,没有独立写入口、持久化状态或新轮询者。纯时钟集合选最早恢复时间;含依赖的集合继续定期复查来源。可选提醒复用现有 scoped User action 分类,不会获得真实 gate 的阻断权。

输入 基线 本 head
7 个未来等待,提醒开/关,File/SQLite 4 项均要求执行,违反静默 oracle 4 项 PASS,原 Turn 重放安静且不扣费
单等待、到期、独立工作、真实 gate、Monitor 绑定 13 项既有行为 PASS 保留同一行为
7 个来源只展示 5 个;末项来源缺失 不能仅凭展示推断全集 完整来源计数;缺失时保留监督

具体改动 / Changes

精确评审版本 fa6d16d323620437e6dcd0bd200c0d89c32d69c0;10 个文件 +231/-39,涉及 3 个生产文件、3 个测试文件和 4 个文档文件。公共协议使用本次变更前的 docs/reference/protocols/goal-vision-replan-contract-v0.md,不可变规范版本 5c2ed9f6f2cf8a9bdc952f1c8dfceae92e062b0b。以下编号仅用于本次对照,不是新需求:

  • BW-COVERAGE:每条因果义务都要有见证;完整集合与 completed-reference 反例已验证。
  • BW-PENDING:原规范的单来源正面证明保留;本次依据复现缺陷明确扩展为全部见证均已证明的多来源集合。
  • BW-FENCES:静默不授予交付或扣费;真实 gate、未知来源、已绑定 Turn 和独立工作仍走原分支。
  • BW-RECOVERY:到期时恢复普通 resume 路由,原 vision 和任务保持可审计。
  • BW-PROJECTION:来源先于展示裁剪;投影不是新的生命周期,重读时重新计算。

关键代码讲解

  1. pendingAutomaticResumeCondition 接收单个当前任务,复用恢复 owner 检查开放状态、当前/未认领归属和支持的恢复条件。Monitor 还需有效调度与过期证明。无法证明返回空,不凭文本猜测。
  2. waitStatePayload 对完整见证集合计算 pending_resume_count,之后才限制展示为 5 项。只有全部通过时才重选最早纯时钟或依赖复查来源;未知项不会被裁剪隐藏。
  3. pendingAutomaticSuccessor 先保留原 Turn 绑定和待选择动作栅栏,再比较正整数全集计数。旧单来源省略计数仍可读,显式矛盾计数和缺少多来源证明均不能静默。
  4. user_channel_action_required 仅在 scoped User 集合全是非阻断提醒、且完整自动等待已验证时避免错误的“空 Agent lane”判断。现有真实 gate 分类继续有效。

Python 只组合现有来源与交互结果;业务判断仍由同一个 TS owner 持有。协议、双语 TS 迁移检查点和自修复模式说明了新计数、兼容边界与不可执行无绑定 poll 的恢复方式。

对主干的风险 / Risks

主要风险是只检查展示行而错误地宣称所有工作都在等待,继而隐藏一个真实可运行任务或门槛。此处验证完整来源,消费者要求完整计数、同 Agent 且无结算绑定;末项未知、错误计数、异主、已有绑定和真实 gate 均有反例。实际 CLI 仍拒绝无绑定或错误 Turn/Agent 的 Monitor poll,没有借修复放松身份约束。

本次是已有路径的默认行为修复,没有 opt-in/default-off 声称。pending_resume_count 只扩展既有只读协议,不代表新的 Actor 生命周期或执行权限。未知旧多来源格式继续受监督,旧单来源格式通过正面证明保留兼容;没有新增持久化迁移。两次以上重复实现同一规则的成本通过共享 helper 已消除,进一步新建 scheduler/state store 没有必要。

语义与 CI 对齐

PASS:115 项 Python、77 项 TS、完整 control-plane typecheck、声明的 mypy/Ruff、双语 RFC、10 文件公私边界扫描、有效 change-quality receipt,以及 25 项标准预合并检查。另以真实 File/SQLite CLI 补查 6 类投影反例,两组 provider 测试 PASS。无当前失败、跳过或 manual hold;按 managed policy 未查询或等待 CI。

历史基线的 4 项 FAIL 是本次复现。追加基线归档最初遗漏 scheduler 脚本导致 2 项导入失败,恢复同一基线依赖后原两项 PASS;私有反例驱动的导入准备错误也已保留并修复。completed-reference 会正确绑定重规划义务,因此删除了驱动中错误的“一切都必须无绑定”假设,改为断言该真实分支;未改生产代码或放松静默条件。单元测试、hash 和预合并绿灯不能替代安装采用或长期行为验收。

我的整体评价 / Verdict

这是有实际 CLI 入口和可回退边界的 justified_increment:复现的多等待契约矛盾已在源码消除,原任务和记账约束保持。long_horizon 判断为 preserved:原工作与恢复条件保留,尚未据此量化长期收益;user_experience 为 improved:去掉已验证等待中的不可提交观察和错误 User 门槛。本次只改 quota/interaction 的机器输出和恢复判断,没有新增或修改界面。 未做前端视觉验收,也未声称生产安装已采用。

变更规模与反复唤醒时的错误义务相称;当前没有阻断性发现。语义处置是扩展既有 goal_vision_wait_state_v0 的只读计数、复用既有恢复词汇,未创建第二个决策或权限 owner。完整来源和绑定反例支持这项默认变化;合并授权与安装读回继续作为独立边界。此作者自审是 COMMENTED approval conclusion,不是 GitHub 的另一账号批准,也不授予 merge/admin bypass 权限。

English verdict: APPROVE exact head fa6d16d. The complete pending frontier is qualified before compaction; existing gates and settlement fences remain effective. Merge authorization and installed adoption remain separate.

@huangruiteng
huangruiteng merged commit d002454 into main Oct 29, 2026
15 of 34 checks passed
@huangruiteng
huangruiteng deleted the codex/blocked-wait-contract-20261030 branch October 29, 2026 17:09
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