Skip to content

fix(control-plane): bound large quota planning requests - #7616

Merged
huangruiteng merged 3 commits into
mainfrom
codex/quota-planning-references-20261029
Oct 29, 2026
Merged

huangruiteng merged 3 commits into
mainfrom
codex/quota-planning-references-20261029

Conversation

@huangruiteng

@huangruiteng huangruiteng commented Oct 29, 2026 •

Copy link
Copy Markdown
Collaborator

长期 Goal 的 Todo 历史会让 quota 读取超过 2 MiB inline RPC 上限,阻断下一步工作。本 PR 让完整读取通过既有私有快照通道完成,同时保留原规划事实和决策语义。

resume_planning 用完整规范化记录表消除 lane 间的重复正文,TS 保留唯一的诊断、选择和截止时间 owner。修复版移除了最初的字段白名单与 Python 二次恢复,避免丢失 frontier 身份、返回结果与原输入共享可变对象;后续 Vision-wait 同样复用现有通道,避免把大输入失败推迟到下一步。没有提高 2 MiB inline 或 64 MiB snapshot/响应展开上限,也没有增加用户配置、权限或持久化格式。

验证版本:eda29472f2cc69ca99161651d463415491f8ea20,基于 main 的 5d7f0a61b0b79876801c05e1d26352687f270794。

  • 真实 File/SQLite:2500 条长历史加尾部工作,完整 quota should-run 返回成功、数量与选中项正确,canonical 来源和 Goal 正文未改。不可变主干的同一用例在两个 provider 上均超限失败。
  • 9 组固定时钟的公开完整摘要与主干逐字段相等,无输出归一化;三个身份 fallback 与直接/公开入口的延迟可变对象修改回归通过。
  • quota/resume/Vision-wait/Effect runtime 首轮 186 passed、1 个 Linux-only skip;最终 resume/schema 组 37 passed;另 129 项 quota CLI、等待、恢复通过。前两组有覆盖重叠,不作为独立用例总数相加。
  • TypeScript control-plane typecheck、私有 snapshot 合同、已提交 RFC 双语检查通过。
  • 标准 premerge:6 项直接检查、19 项选中检查全部通过,零 manual hold;精确 scope 的 change-quality 回执有效。

仅改变内部读取传输,没有渲染页面变更。未声称完成安装态 App、Windows 或长期模型效果验证;按 Goal 配置没有查询或等待远端 CI。没有活动 Goal 迁移或写入。TS 迁移 RFC 的中英文 checkpoint 同步说明了交付边界。

@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; OpenAI; gpt-6.1-sol; runtime_reported; reasoning_effort=max

REQUEST_CHANGES at 7a71effae23ef03425fb06dc3947259969e16015。大历史传输修复有效,但同一传输重构引入了两处可复现的兼容/可变对象回归。

动机 / Motivation

维护长历史 Goal 的 CLI 调用者,在 quota 规划输入超过 inline RPC 上限时会遇到状态读取和后续工作受阻。

原先完整规划事实可能超过 2 MiB 而直接失败;本次改为去重重复记录,必要时使用已有私有 snapshot transport,保留全部输入。

合成大历史在旧版失败、当前 head 通过;另有两项对照显示 frontier 身份和返回对象隔离尚未保真。

本 PR 应只修传输,保留原选择、gate、依赖、时钟、来源和零业务写入边界,不承担 controller 全量迁移或长期模型收益验收。

改动思路 / Approach

复用现有私有 snapshot 和 TypeScript 规划 owner 是合适边界;Python 仅去重、编码和恢复展示 payload,不应取得第二份规划决定。

当前 PR 应交付完整规划输入的可用传输及原语义保真;最小修复是补齐实际消费者需要的身份字段,并恢复每次返回记录的深复制隔离。

新 v1 resume request 将相同规范化记录保存一次,各 lane 用整数引用它;TypeScript 恢复 lane 后仍执行原诊断和选择。Python 保留完整 compact payload,再将结果中的引用恢复为原展示内容。唯一大历史仍超出 inline 时,调用现有 same-UID、私有权限、字节数和 SHA-256 校验的 snapshot 通道。这个方案保持 2 MiB wire 和 64 MiB snapshot 限制,不新增持久缓存或状态 authority。最强反例是“恢复后的最终 JSON 看起来一样,但中途决定或对象所有权已改变”;下面两项正是沿该真实边界验证。

具体改动 / Changes

先于 diff 阅读的规格为 docs/architecture/rfcs/typescript-control-plane-migration-v0.md,spec_revision=544aa0fee5dad33e3b70496dadfb3ffd36400e13;同时核对 quota planning horizon 和 canonical snapshot pagination 的现行边界。以下标识定位已有要求,不增加新标准:

要求定位 当前 head
QP-complete-source implemented:2500 条独立历史加尾部工作通过真实 runtime;旧版同输入因 request oversized 失败。
QP-one-owner implemented:去重不是语义合并,TS 继续拥有诊断、gate、选择与完整来源判断。
QP-observable-parity not_met:兼容行丢失 frontier 身份输入;恢复对象的部分可变字段也失去原复制隔离。
QP-private-bounds implemented:复用原私有 snapshot 约束,未提高 transport 限制;既有异常和摘要校验测试通过。

关键代码讲解

  • build_referenced_todo_resume_planning_request 按完整规范化 JSON 去重,避免只按 Todo id 合并冲突事实。其白名单却只考虑 resume evaluator,遗漏了后续 frontier consumer 的 identity fallback。
  • projectTodoResumePlanning 保留 v0 调用者,并解码 v1 records/source references;越界或错误类型仍拒绝。现有 agent_scope 和历史计数读取仍调用 v0,因此这个兼容分支有实际 caller。
  • project_quota_planning 打开现有 snapshot transport,并在 TS 整体规划完成后 rehydrate。TS 的 projectTodoFrontier 已在此前计算 identity,事后补回字段无法修复该决定。
  • rehydrate_todo_resume_planning_result 的外层字典合并只作浅复制。被留在 Python 的列表仍来自原 payload,会绕过 _decode_quota_planning_wire 原有的独立记录复制。

全 diff 为七个文件、218 增加/12 删除,production 128/9、测试 90/3。两个 runtime allowlist 成员使用同一通道;没有新 CLI、安装、数据库 schema 或共享权限 owner。Python 编码器增加的维护成本主要是必须持续核对所有 TS 消费者,而非只核对 resume 文件。

对主干的风险 / Risks

[P2] 在 TS frontier 决定前保留兼容身份字段

_REFERENCE_PAYLOAD_FIELDS 丢掉 target_key、action_kind 和 title,但 quota_selection.ts 的 identity() 依次读取这些字段。对现有兼容 summary 中没有 todo_id、保留 target_key=recovery:legacy-target 的 pending 行,原 summarize_user_todos_for_quota 返回 frontier_deadline.identity=recovery:legacy-target;当前 head 返回 Synthetic work。同一固定时钟、due、来源和输入下,只有这项身份改变。最终展示行的 target_key 虽已恢复,frontier 仍是错误身份,会使后续按该身份读取/比较的截止事实偏离原目标。该反例限定为支持的兼容 summary 输入,没有声称当前 canonical Todo 缺少 id。

最小修复是按实际整条 TS consumer 链补齐 identity 所需字段,并加入无 todo_id 时 target_key、action_kind、title fallback 的 base/head 对照。不要将事后 rehydration 当作中途决定的保真证明。

[P2] 恢复返回记录与原输入的可变对象隔离

payloads.append(dict(...)) 和第 173 行的字典展开都只有浅复制。对带 required_capabilities=["shell"] 的普通 typed pending Todo,真实公开 summary 调用本身返回成功;随后给 result["resume_blocked_items"][0]["required_capabilities"] 追加合成标记,会同时修改原 source["items"][0]["required_capabilities"]。不可变 base 的同一操作不会修改来源。相同来源出现在多个结果 lane 时也会共享这类恢复字段。调用结束时一次 source == before 不能捕捉这种延迟别名,当前新增测试正好只检查字段存在。

最小修复是在每次恢复记录时深复制保留 payload,再叠加本次 TS 输出,保持原 JSON 往返产生的独立记录。回归应分别修改一个结果 lane 的列表/嵌套对象,确认来源和其它 lane 不变;同样覆盖直接 quota planning 和公开 summary 入口。

PASS:精确 head 的 quota selection、resume projection 和 Effect runtime integration 共 150 项通过、零跳过;标准 premerge 六项直接检查及十八项 catalog/risk-profile 检查通过。额外同 harness 的 base/head 各八种输入,普通选择、typed wait、capacity、冲突来源及两个 gate scope 的 JSON 相等;大历史旧失败/新通过。两种生产入口的对照均复现了以上回归,未使用 mock 填入待验证决定。没有查询或等待 CI。

UNVERIFIED:另做了 2500 条长历史加两项当前记录的完整 quota should-run 验证,File 与 SQLite 均未通过。不可变 base 在 todo.quota_planning.project 的约 4.63 MB 输入拒绝;本 head 通过该步骤后,又在 goal.vision_wait.project 的约 4.72 MB 输入拒绝。这里记录的是同一完整场景仍未恢复,不把较早一层通过写成全 CLI 成功,也不把两边都 exit 1 当作同一原因。初次诊断 harness 未传播 CLI exit code,已修正后重跑并保留旧失败;上述结果来自修正后的真实子进程。重新评审需要给出这条完整路径的可用结果,或依据原任务明确尚未交付的 Vision-wait 边界与后续 owner。

语义与 CI 对齐

v1 是同部署的内部 transport 扩展,原 v0 为实际调用者保留。新增引用 vocabulary 不授予执行权,snapshot 可用性也不是任务准入。当前问题是无意的可观察漂移,不是新政策;机械检查通过不能豁免 QP-observable-parity。修复无需改 gate、放宽预算、取消断言或引入 controller 框架。

我的整体评价 / Verdict

交付判断为 not_yet_proven,缺口限于上述保真修复。大历史恢复提供了实际价值,结构上也复用了正确 owner;long_horizon 仍有 frontier 关联回归,user_experience 的大输入可用性有所改善,但兼容读取和来源对象隔离还需修正。

本次改变内部 transport 和 CLI 读取,没有渲染页面变化,visual_review 为 not_applicable。未验证实际安装采用、长期模型行为和完整净成本收益;这些没有被当作本次有界修复的新门禁。

当前 PR 应交付完整规划输入的可用传输及原语义保真;最小修复是补齐实际消费者需要的身份字段,并恢复每次返回记录的深复制隔离。保留 v0 的现行调用者有依据,暂不需要新增兼容框架;修复后仍应审整份 PR,而非只追最后一个断言。没有执行合并、安装或活动 Goal 更改。

English verdict: REQUEST_CHANGES at 7a71eff. Large-history transport works, but real base/head comparisons reproduce lost legacy frontier identity and mutable payload aliasing; preserve both contracts before approval.

Comment thread loopx/control_plane/todos/resume_planning.py Outdated
Comment thread loopx/control_plane/todos/resume_planning.py Outdated
Signed-off-by: huangruiteng <huangrt01@163.com>
Signed-off-by: huangruiteng <huangrt01@163.com>
Signed-off-by: huangruiteng <huangrt01@163.com>
@huangruiteng
huangruiteng force-pushed the codex/quota-planning-references-20261029 branch from 7a71eff to eda2947 Compare October 29, 2026 07:15

@huangruiteng huangruiteng 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)

最终 head:eda29472f2cc69ca99161651d463415491f8ea20。无未解决的阻塞项;这份自审以 COMMENTED 发布,后续仍单独检查合并资格。

动机 / Motivation

长期维护 Goal 的用户和 Agent 在读取 quota、准备下一步工作时会遇到这个问题。同一份含 2500 条长历史和一项尾部待办的 Goal,主干读请求因超过 2 MiB 失败;修复版在 File 和 SQLite 上均能返回结果并选中尾部待办。已验证的改善是大历史下完整 quota 读取恢复可用,同时保持普通输入的完整摘要、身份和返回值隔离。本 PR 不改变任务准入、租约、预算、默认 provider 或持久化格式,也不宣称已完成安装升级及长程效果实验。

历史越多越容易卡住入口,修一次入口后又在下一层报相同超限,并没有恢复用户的实际任务。此次不仅复核原有两个评审发现,也把同一次公开读取的后续路径走完。

改动思路 / Approach

字段裁剪把对下游消费者的知识放进了传输层;改为完整记录引用并复用现有响应 codec,减少重复知识且保留同一个 TS 决策 owner。本 PR 的交付边界是 quota planning 加后续 Vision-wait 的完整读取,以及原有可观察语义保真。

Python 只编码既有规范化事实;TS 仍负责诊断、选择、gate 和截止时间。重复记录按完整 JSON 去重,不按 Todo id 合并;独立长历史超出 inline 边界后走既有私有快照。响应继续由原 v4 codec 还原,不再把保留在 Python 的列表浅合并回来。

相比只打开快照通道,完整记录表还能消除多个来源 lane 的重复正文;相比逐个补白名单字段,它避免下一位消费者再次丢输入。没有增加用户配置、权限确认或第二套业务规则。采用文字说明,未新增需要依赖渲染器理解的图。

具体改动 / Changes

本轮按原评审的四项准则复核,参考版本为 7a71effae23ef03425fb06dc3947259969e16015;独立核对的已接受规范是 docs/architecture/rfcs/typescript-control-plane-migration-v0.md 在 5d7f0a61b0b79876801c05e1d26352687f270794 的完整事实、单 TS owner 和有界响应约定。新补的中英文段落只记录交付边界,不被用作证明自身正确的 oracle。

准则 本 head 的结果
QP-complete-source implemented:完整记录进入 TS;2500 条长历史和尾部工作在 File/SQLite 的真实公开 quota 调用通过,来源未改。
QP-one-owner implemented:复用原 quota/resume/Vision-wait 决策 owner,Python 仅保留输入 codec 和传输。
QP-observable-parity implemented:三个无 id 身份 fallback、两个返回值修改隔离反例通过;9 组公开完整摘要与主干相等。
QP-private-bounds implemented:私有文件权限、摘要、字节数、symlink 和 method 限制仍验证;2 MiB/64 MiB 界限未提高。

关键代码讲解

  • build_referenced_todo_resume_planning_request 保存完整的 v0 规范化记录,source 仅改为有序引用。相同 id、不同事实不会被合并;这不是保存任意未知 Todo 字段的新承诺。
  • projectTodoResumePlanning 先严格校验版本,再校验 record 和整数索引,随后仍执行原诊断和选择。已有实际 v0 调用者保留,数组不能靠字符串转换冒充版本。
  • project_quota_planning 使用原私有快照和 v4 响应解码器。所有 payload 在 frontier 决定前就完整存在,返回的嵌套记录也不会再与原输入共享可变对象。
  • build_goal_vision_wait_state 同样复用完整记录与快照通道,避免第一层 quota 通过后又被后一层大输入阻断。

全 diff 为 11 个文件,production +78/-11、tests +189/-5、docs +18/-0。与最初 PR 相比删除了约 50 行裁剪和恢复机制;新增测试保护公开行为和失败边界,不引入新测试框架。

对主干的风险 / Risks

最强反例是“外层测试成功但中途决策已错”或“第一层恢复后下一层仍失败”。本轮先在未修复代码复现身份漂移和延迟修改来源;不可变主干的同 harness 为 5 项语义通过、2 项大历史失败,修复版保留前者并修复后者。9 组固定时钟公开摘要逐字段相等,不靠删字段或宽泛归一化消除差异;完整 source 顺序、scope、claim、空输入与冲突事实均覆盖。

PASS:quota/resume/Vision-wait/Effect runtime 首轮 186 passed、1 个现有 Linux-only skip;最终 schema 和引用合同组 37 passed;另 129 项 CLI/等待/恢复通过。最终 TS typecheck、两项私有 snapshot 测试、双语检查及标准 premerge 均通过。premerge 为 6 项直接检查加 19 项选中检查、零失败、零 manual hold,精确 scope 的质量回执有效。37 项最终用例独立覆盖最后的严格 schema 修正;没有把早先失败记录改写为通过。

保留限制:macOS 上没有执行 Linux thread-group 用例,也未验证 Windows、安装态 App 或真实模型长期效果。没有改存储事务,因此不声称重新完成 PostgreSQL authority 验证。按 Goal 配置未查询或等待 CI;这不等于远端 CI 被认定为通过。

语义与 CI 对齐

v1 是协同部署的内部传输扩展;v0 因真实调用者继续保留,政策仍只有一份。新的 method opt-in 复用现有只读方法词汇,未知方法、错误引用、文件不安全和超硬上限继续拒绝。没有放松预算、跳过当前必需本地检查或把可读快照变成任务权限。

我的整体评价 / Verdict

当前有界任务判定为 goal_achieved:大历史下可完成公开读取,原两个 correctness finding 已有反例和真实路径验证。long_horizon 的改善限定在累积状态不再卡住下一次读取;user_experience 的改善是无需新增操作、设置或确认即可继续原任务,未把它写成已证明的自主工作效果提升。

字段裁剪把对下游消费者的知识放进了传输层;改为完整记录引用并复用现有响应 codec,减少重复知识且保留同一个 TS 决策 owner。本 PR 的交付边界是 quota planning 加后续 Vision-wait 的完整读取,以及原有可观察语义保真。保留 v0 有实际 caller 和删除条件;业务规则没有双实现。完整框架或强制继续迁移其它 Python 调用者在本 PR 中不必要。

检查了 quota/Goal Vision-wait 的调用链;本次没有渲染页面改动,不以截图代替读取语义验证。未验证安装态 App、Windows 和原生窄屏;它们没有被声称为本次 UI 交付。当前无阻塞 finding;应继续保留 64 MiB 上限,并将自审结论、旧 review closeout 和最终 merge-readiness 分别记录。

English verdict: APPROVE at eda2947. Complete-record transport fixes frontier identity and mutable isolation, and real File/SQLite large-history quota reads now finish through Vision-wait. Focused, continuation, typecheck and premerge validation passed; platform and installed-runtime limits remain explicit.

@huangruiteng
huangruiteng dismissed loopx-agent’s stale review October 29, 2026 07:33

在维护者明确授权修复并自合并本 PR 的范围内,撤销已解决的旧阻塞,保留原讨论。eda29472f2cc69ca99161651d463415491f8ea20 删除字段白名单及浅恢复:三种 frontier fallback、两个延迟修改隔离回归通过;9 组完整摘要与不可变主干相等;真实 File/SQLite 的 2500 长历史 quota 调用也通过后续 Vision-wait。最终版本自审和验证记录:#7616 (review)

@huangruiteng
huangruiteng merged commit 6fad464 into main Oct 29, 2026
6 of 7 checks passed
@huangruiteng
huangruiteng deleted the codex/quota-planning-references-20261029 branch October 29, 2026 07:34
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