Repository navigation
fix(quota): keep proven automatic wait frontiers quiet - #7689
Conversation
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)
动机 / 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:来源先于展示裁剪;投影不是新的生命周期,重读时重新计算。
关键代码讲解
pendingAutomaticResumeCondition接收单个当前任务,复用恢复 owner 检查开放状态、当前/未认领归属和支持的恢复条件。Monitor 还需有效调度与过期证明。无法证明返回空,不凭文本猜测。waitStatePayload对完整见证集合计算pending_resume_count,之后才限制展示为 5 项。只有全部通过时才重选最早纯时钟或依赖复查来源;未知项不会被裁剪隐藏。pendingAutomaticSuccessor先保留原 Turn 绑定和待选择动作栅栏,再比较正整数全集计数。旧单来源省略计数仍可读,显式矛盾计数和缺少多来源证明均不能静默。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.
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
Implemented against
Specification:
docs/reference/protocols/goal-vision-replan-contract-v0.md, “Exact blocked-successor wait”, baseline5c2ed9f6f2cf8a9bdc952f1c8dfceae92e062b0b;本 PR 补齐多来源只读证明,更新同一协议和双语 TS 迁移检查点。vision_wait_coverage.ts;7 个来源、5 行展示的反例与完整计数Scope And Continuation
源码修复和作者验证已完成;本机安装采用及长期 Host 行为尚未据此宣称通过。无存储迁移、权限扩大、历史回执改写、模型调用、UI 或新配置。共同自动恢复条件检查从交互层移回 wait owner,两个消费者复用同一函数。
pending_resume_count是现有goal_vision_wait_state_v0的只读投影字段,非新生命周期或执行授权。旧单来源格式继续可读;显式错误计数、缺少完整多来源证明及不支持的来源继续保留监督。Validation
fa6d16d323620437e6dcd0bd200c0d89c32d69c0test_dated_vision_wait_cli.py、test_goal_vision_blocked_successor.py、test_scheduler_interaction_arbitration.py共 115 pass;独立临时 runtime 与真实 File/SQLitetypecheck:control-plane;声明的 mypy 17 个文件;变更 Python 的 Ruff;双语 RFC 检查及 diff hygiene未运行付费模型、整版发布资格或生产安装替换。没有修改 provider 事务、存储路由或兼容迁移,因此本次未启动存储三臂迁移演练;此处不宣称该资格。
Frontend / Visual Evidence
Type of Change
LoopX Area
Technical Direction
S7 scheduling / S10 recovery;沿现有 TS migration 与 exact blocked-successor wait owner 修复,无新调度器或第二套 authority。
Boundary Checklist