Repository navigation
feat(planning): opt in to shared Goal context in the planning horizon - #6654
Conversation
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
left a comment
There was a problem hiding this comment.
Request changes conclusion (author-owned PR; GitHub blocks formal self-review)
Reviewer: model_agent; model=gpt-6.1-sol; provider=OpenAI; reasoning_effort=max; declaration_source=runtime_reported.
Exact head: 57e909e694b66e34784241839a350bad6d763531; reviewed base: 488e4438e0e51eca023ac3f5e690603120851b0c.
动机
受影响的是让 Agent 连续处理同一个 Goal、但每轮只能看到局部任务的使用者。此前普通规划包可能不带原始目标,Agent 必须另外找回完整要求,长期执行时容易把眼前任务误当成整个目标。本 PR 将原目标随当前规划一起提供,并给出完整源文的读取命令,减少反复补充背景的操作。
当前独立验证支持这个改善:原目标的末尾约束、修订后的目标、缺失状态与注册信息回退都能正确读回,任务选择和执行权限保持原来的 owner。它没有证明 Agent 一定会理解或采用这些上下文,也没有关闭更大的长期任务验收。
剩余缺口是新增 CLI 投影尚未满足现有差分预算;模型采用、安装后的实际行为和持续验收仍未证明。
[P2] 新的默认投影超过现有 CLI 差分预算,需在同一变更中作出有证据的预算决策。 对真实基线和本头执行完全相同的 96 行公开 fixture,surface/quota_should_run/multi_agent/json 的 compact_payload_chars 从 18,187 增至 21,127,增长 2,940;现有首次引入 horizon 的迁移 allowance 为 2,800,超出 140。其他 95 行通过。这是本 PR 引入的当前失败,不能用选择器未选中该检查或功能测试全绿代替处理。
最低修复是检查现有 projectQuotaPlanningHorizon 输出中真正可派生的重复信息,并保留完整目标、来源、读取命令和签名覆盖;若这些新增语义值得保留,就在现有 CLI budget owner 中提交有消费者价值、兼容成本及余量依据的窄范围迁移预算调整。不要截断目标要求、删除决策条件或全局放宽后续预算。复跑 examples/control_plane/cli-output-budget-regression-smoke.py,保留这次原始失败,并确认完整矩阵和普通后续差分约束仍有效。
改动思路
评审先读取了修改前的 docs/reference/protocols/quota-planning-horizon-v0.md,版本固定为 488e4438e0e51eca023ac3f5e690603120851b0c。逐项判断如下:Ownership 仍复用 canonical Goal 与既有规划 owner;Bounds And Ordering 的候选范围及次序保留;Effect Program Boundary 的选择、签名和结算权限未被上下文替代;Acceptance Checks 的原有正反例与当前新增目标路径已执行。让普通有效 Goal 也携带 horizon 是本次有意的默认变化,不能仅用修改后的说明为其自证;原有成本约束仍需上述预算修复。
| 场景 | 基线 | 当前头 |
|---|---|---|
| 当前 Goal 有完整原目标 | 普通规划可能没有 core_goal |
原文与来源进入规划包 |
| 本地目标修订 | 需要额外查找原目标 | 下一次真实 CLI 读取新文本 |
| 本地目标缺失 | 不应以当前任务补造目标 | 注册目标回退,仍缺失则显式标记 |
| 执行或结算 | canonical owner 决定 | 同一 owner 决定,目标文本不授予新权限 |
Python 继续承担文件/注册信息读取,TypeScript 复用 projectCoreGoal 决定投影语义;没有新增平行目标存储。既有前端目标编辑和 CLI 是输入来源,这里修复的是 Agent 已有规划交互,不引入另一个配置界面或人工确认轮次。表格仅解释源码路径,执行证据来自独立命令。
具体改动
本次完整读取 10 个路径、169 行新增和 13 行删除:规划入口、Python/TS 适配、核心目标投影、协议说明,以及 Python/TS 回归测试。未将测试数或文档声明当作完成证据。
关键代码讲解
goal_context_facts(loopx/control_plane/work_items/replan_context_codec.py)从已注册的同一 Goal 读事实,保留原始文本;shlex.quote生成完整读取命令,带空格、单引号及 shell 形状的路径也不会执行路径内容。projectCoreGoal(loopx/control_plane/work_items/replan_context.ts)是共同的类型化 owner,保持本地原目标优先、注册目标回退和显式缺失;复用后避免普通规划与 replan 各自决定来源优先级。build_quota_planning_packet(loopx/control_plane/work_items/action_portfolio.py)将事实传入既有 TypeScript 规划路径;projectQuotaPlanningHorizon(planning_horizon.ts)把原目标放在候选规划之前,而没有将其变成动作或权限。should_run_packet.py传递当前 source status;相关 Python 与 TS 测试验证普通 Goal、新源修订和既有 horizon 边界。协议说明明确新增默认字段及完整源文读取的含义。
正常路径通过真实 CLI、File/SQLite canonical store、单任务与多任务四组 fixture:40 项检查全部通过;同脚本在真实基线为 12 通过、28 个预期反例失败,明确击中旧缺口。独立普通 wheel 的 1,765 个产品成员与本头逐字节一致,非 editable 安装后同 40 项检查通过,产品导入实际来自 wheel 的 site-packages。
负例包含完整文本尾部、无目标时不借用叶子任务或 vision、另一个 Goal 的文本排除、修订后权限不变、带特殊字符路径完整读取,以及公开输出拒绝私密形状文本。权限比较使用相同 admission 阶段:最初跨首次准入状态比较的失败已保留为无效因果对照,改为先读取未修改源的稳定对照后再修订 Goal,未放宽断言。
对主干的风险
49 项目标/replan Python 测试、55 项相邻选择与结算 Python 测试,以及 80 项 TS 测试通过;直接 TypeScript 编译、Ruff、语义 advisory 后的全树检查通过。普通包首次构建的旧 Chat bundle、安装测试依赖和测试 namespace 问题属于验证环境准备,保留失败记录;重建同头 bundle、补齐隔离依赖后才取得 wheel 读回,没有改产品源码。
loopx canary premerge --from-git-diff 的 5 项直接检查和 19 项选中检查均执行;无本次运行检查失败,但质量 receipt 已过期,不能称为整体合并资格通过。独立补跑的 CLI 差分预算失败仍是当前阻塞。既有 DSH 维护性债务在真实基线/本头身份与指标一致,且本 PR 不修改其因果路径,不算本 PR 新缺陷。按当前评审策略未查询、轮询或等待 CI。
新增 core_goal/可选 read_action 扩展既有协议投影,状态词汇复用已有 owner,无 substring 分类器。正文没有压缩任务义务;候选次序、来源、拒绝、后续工作和一次结算仍由原有契约约束。完整目标可能增加上下文成本,这正是差分预算需要明确权衡的原因。模型采用、已安装桌面行为与持续运行收益未在这些检查中证明。
我的整体评价
这是有独立价值的完整修复切片:普通规划终于能拿到真实原目标,且源码和普通 wheel 的行为一致。当前结论是 REQUEST_CHANGES,只要求解决本 PR 引入的 CLI 预算失败;不要求截短目标、做无关 DSH 清理或另起协议。
未来改动的维护性检查已做:共同 projectCoreGoal owner 的复用合理,剩余最有价值的整理是围绕同一投影和预算作窄范围处理,不需要额外架构层。更大长期验收、上下文实际采用与合并资格分别保持原来的证据边界。修复后应在新的精确头重新核验完整文本、选择/权限不变和同一差分矩阵。
English verdict: REQUEST_CHANGES — head 57e909e correctly restores full Goal context across source and ordinary wheel (40 independent checks each), but the exact-base 96-row CLI comparison introduces a compact-payload growth of 2,940 against the existing 2,800 migration allowance. Make an evidence-backed, narrowly owned budget decision without dropping decision semantics; retained quality/merge holds and unchanged baseline debt remain separate.
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
|
Updated at The public PR description now covers CLI and packaged settings operation, inherited configuration, benchmark restore/readback and receipt fidelity, 269 Python and 107 provider-adapter checks, TypeScript tests and packaged HTTP-backed browser validation. The old default-on head and its failing budget measurement remain historical evidence. Please re-review this exact head, especially default-off isolation and optional configuration compatibility. Research benefit and installed adoption remain unverified; existing baseline DSH maintainability and test-file E702 findings are disclosed. |
loopx-agent
left a comment
There was a problem hiding this comment.
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
Reviewer: model_agent; model=gpt-6.1-sol; provider=OpenAI; declaration_source=runtime_reported; reasoning_effort=max.
完整精确头评审:#6654,head ee0e20d0da7e83db5dbd3636a26fd20926114689,base 488e4438e0e51eca023ac3f5e690603120851b0c。未发现当前阻塞问题,结论为 APPROVE。本记录采用作者账号的 COMMENTED 评审形式。
动机
受影响的是连续处理同一个 Goal、希望在选择下一项工作前再次看到完整原目标的 Agent 使用者。
此前普通规划可能只有局部任务,原目标要另外找回;本 PR 让明确开启选项的调用者直接得到完整原目标、验收要求和源文读取命令,关闭时保持原来的普通规划路径。
当前验证确认,选项可经现有设置页或 CLI 开启、关闭和清除;开启后目标末尾约束、目标修订、注册信息回退和缺失状态都能读回,任务选择与执行权限没有转移。
这个切片不证明模型已经采用这些信息,不使默认关闭的普通路径自动获得原目标,也不完成整个长期任务或授予实验、合并权限。
剩余验收是实际模型是否利用目标改善持续工作,以及具体研究集成在其部署环境中的联合资格;这些不能由上下文存在、单个 wheel 或本次测试替代。
改动思路
完整目标由现有 TypeScript projectCoreGoal 统一投影,Python 只读取源事实;显式开关复用现有配置和 UI,因此不需要第二个 Goal 状态源或新的控制面。
本 PR 的可交付边界是可选择启用、可读回和可撤销的 Goal 规划上下文,连同实际配置入口、运行时参数透传和失败拒绝;它是有用的完整增量,尚非模型效果结论。
最小可行方案应同时解决信息缺失与可控成本:在原来“读取 Goal 源事实 → TypeScript 投影 → 普通规划消费”的链上增加显式选择,配置仍使用既有 Goal 复盘与步幅入口。只加序列化字段会留下真实入口和撤销路径;另建 Goal 副本会带来更新冲突;强制全部调用者开启又会改变普通包成本。当前方案保留了这些边界,配置准备可由已有授权的 Agent 完成,无需每轮重新问使用者。
下表是当前源码所表达的调用关系,属于说明,不替代执行证据:
| 调用条件 | 普通规划 | 复盘与权限 |
|---|---|---|
| 开关缺省或 false | 沿用既有条件化 horizon,不新增 Goal 源读取 | 既有复盘独立读取 Goal;任务选择、执行与结算 owner 保持 |
| 显式 true | 同一 Goal 的完整原目标、验收、来源和读取命令进入 horizon | 不自动开启 stride、Explore、TurnEnvelope 或实验 |
| 清除 Goal 覆盖 | 恢复适用的原有设备默认/Goal 优先级 | 显式复盘周期的既有整组覆盖语义保留 |
具体改动
- 共同源与投影。
goal_context_facts负责读取源事实和引用安全的完整读取命令;projectCoreGoal保持 TypeScript 的来源优先级与缺失状态;projectQuotaPlanningHorizon在开关允许时复用它。完整 Objective 的末尾限制得到保留,没有改用局部 Todo 或 Agent vision,也没有新增平行 Python 决策源。 - 配置与实际用户入口。 execution profile、configure-goal 的开启/关闭/清除参数、机器 v2 可选字段、Goal 配置 API、能力编辑器及中英文文案共同完成可发现、修改、生效与读回。既有 v0/v1 周期单位、显式 Goal 周期与设备默认的优先级继续有效。实际打包前端可开启、关闭、恢复沿用默认;HTTP 503 时呈现明确错误和 Retry,重试后恢复真实状态。工作区发现采用合成夹具,配置预览、revision 校验和写入使用真实生产 handler 与一次性存储;不把这一夹具说成全局已安装应用验证。
- 运行时与证据透传。 Harbor 的
BenchmarkCodex、SForge、EdgeBench CLI/worker/导出将 None、false、true 的显式意图传递到有效配置读回,并拒绝不支持的模式、非法类型或恢复后的设置不一致。缺省值不会悄悄继承为一次不同的 treatment。本轮 provider 测试使用真实依赖版本,模型、容器执行由测试边界替代,没有启动研究任务。 - 验收与维护性。 以变更前的 docs/reference/protocols/quota-planning-horizon-v0.md,完整修订
488e4438e0e51eca023ac3f5e690603120851b0c为依据,逐项映射 Ownership、Bounds And Ordering、Effect Program Boundary、Acceptance Checks。独立 CLI 验证覆盖 File/SQLite、一个与三个任务、长目标、源文修订、回退、缺失、无关 Goal、带 shell 字符的路径、签名上下文和公开边界拒绝。当前源码 40/40、普通非 editable wheel 40/40 通过,基线同夹具 12 通过、28 个目标缺失反例;另一个默认关闭对照当前 16/16、基线 14/16,两项差异仅为新增显式开启目标。wheel 中核对的 1743 个源码/资产文件与构建源一致,导入路径位于隔离 site-packages。
本轮还执行了 288 项相关 Python、258 项 provider Python、47 项 TypeScript 测试、配置前端构建、语义 advisory 后的完整语义检查、32 文件公开边界检查及原样的 96 行 CLI 差分矩阵。浏览器在 1440 与 390 宽度验证键盘操作、中英文、真实生效读回和失败恢复,未发现页面横向溢出。上轮 57e909 的预算失败保留为历史记录;当前完整 ee0e20 矩阵通过,没有增加预算或删减完整目标来使检查变绿。
对主干的风险
主要风险是调用者混淆可用性与启用、稀疏 Goal 覆盖与显式周期整组覆盖,以及把恢复后的配置收据误当研究 treatment 已合格。当前开关是严格 boolean,普通路径的 False/缺省、源修订后仍关闭、同 Goal 范围、开启后选择/权限不变都有实际反例验证;现有配置 API 与导出测试覆盖非法值、冲突 revision 和运行时不一致。清除覆盖和读取失败后的恢复路径也已经执行。
需要特别说明一个共享变化:replan 原本就读取 Goal,本 PR 为共同投影增加了 read_action。这是一项独立、增量的完整源读取入口;此处不声称关闭状态下整个 replan 包逐字节相同。普通 horizon 的 Goal 注入与额外源读取仍受显式开关控制,既有指令顺序、权限、选择和结算要求没有被缩短或替换。
本地验证仍有两个独立的旧红项:完整 maintainability ratchet 在同一 DSH 函数上报告 93 statements / 51 decisions,阈值 90/60;精确 base/head 的失败身份、指标、函数 AST 与文件字节一致。全部变更 Python 的 Ruff 也在同一旧测试的 172、176、178 行保留 5 个相同 E702,代码、位置和信息一致;变更的生产 Python Ruff 通过。它们没有由本 PR 引入或扩大,当前目标和配置不变量另有通过证据。原生 canary 的 5 个直接检查和 19 个执行检查通过,但质量回执已过期,benchmark 人工门槛仍在;这些合并门槛保持未通过。
本轮验证未覆盖真实付费模型采用、所有部署平台的联合研究运行或实际研究收益。实际模型、既有预算中的持续工作与下一次源码集成,仍须按各自当前准入和验收处理,不能从这个 PR 的批准推导实验或合并权限。
我的整体评价
完整目标由现有 TypeScript projectCoreGoal 统一投影,Python 只读取源事实;显式开关复用现有配置和 UI,因此不需要第二个 Goal 状态源或新的控制面。
本 PR 的可交付边界是可选择启用、可读回和可撤销的 Goal 规划上下文,连同实际配置入口、运行时参数透传和失败拒绝;它是有用的完整增量,尚非模型效果结论。
当前源码完整实现了这个可撤销的增量,独立正反例、普通 wheel 和打包配置旅程足以支持批准。邻接重构复核已落实为共同 TypeScript 目标投影与既有配置 owner 的复用;稀疏 JSON 沿用 stride 的行为符合独立开关的现有 writer 语义,没有据此另造整组替换要求或通用框架。保留旧验证债务、质量资格和 benchmark 人工合并门槛,后续按其 owner 处理。
这次批准只针对 ee0e20d0da7e83db5dbd3636a26fd20926114689。旧评审的发现已经按当前代码逐项重验,旧 review 的状态与原始 GitHub reviewDecision 仍需在批准收尾时分别读回;本结论不授予 dismiss、resolve 或 merge 权限。
English verdict: APPROVE — ee0e20d0da7e83db5dbd3636a26fd20926114689. The explicit default-off Goal anchor, shared typed projection, real configuration journey and provider readback are verified at this head, including native base/head counterexamples and a normal installed wheel. Current CLI budgets pass unchanged. Identical pre-existing DSH/Ruff debt, stale quality qualification and benchmark/merge authority remain separate holds; model adoption and scientific benefit are unproven.
Problem and behavior
Before work selection, the planning horizon can expose a local Todo chain without the original Goal that replan already reads. Add an explicit, default-off Goal lens using that same source reader and TypeScript
projectCoreGoalprojection. When enabled, preserve the complete objective, trailing constraints, source provenance, missing/fallback states, acceptance scope and source-read action, including for a single Todo or flat backlog. A later source correction is visible on the next eligible planning read.When omitted or disabled, preserve the existing horizon condition and skip the extra Goal-document read. Existing replan Goal context remains independent. This setting does not enable stride, Explore, TurnEnvelope, work selection, execution permission or quota spending. Receipt-bound replay and admission rules remain unchanged.
Operation and ownership
configure-goal --goal-id example --execution-planning-horizon-goal --execute; disable with--no-execution-planning-horizon-goal. Read back throughconfigure-goaland the next applicablequota should-runpacket.--planning-horizon-goal/--no-planning-horizon-goal. The runner applies and verifies the shared Goal value before work, including restored Goals, and records explicit values in runtime/worker receipts. An omitted switch encountering an enabled donor fails readback rather than silently changing treatment. Export rejects mismatched or malformed settings; historical absence stays absent.The optional boolean extends the existing v2 review configuration without changing old stored values or defaults. Python remains configuration/source/host transport; the existing typed planning and replan owners retain decision semantics. The related refactor shares one Goal projection rather than copying Goal state or adding a parallel capability.
Validation
Research benefit, installed App adoption and an actual checkpoint on/off scoring experiment remain unverified. Independent exact-head review and merge readiness are required; no benchmark jobs were launched by this change.