Repository navigation
feat(planning): keep Goal context current with independent Agent adoption - #6987
Conversation
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; model=gpt-6.1-sol; provider=OpenAI; declaration_source=runtime_reported; reasoning_effort=max
动机
REQUEST_CHANGES — 两项现有契约测试因新默认值而回归,均已独立确认基线通过、当前提交失败。 默认 Goal 可见性的方向和现有 owner 的复用合理;阻塞项是尚未同步的测试契约,修复时应保留严格读回和既有等待/隐私断言。
- [P2] 同步机器配置目录的默认模板测试。
default_replan_cadence_configuration新字段 使无配置机器的模板多出planning_horizon_goal: true;tests/test_chat_machine_configuration_api.py::test_inspection_lists_registered_namespaces_without_local_refs仍断言旧字典。相同用例在98709770d80e9c332f3c07d2b545226a6dd17521通过、当前 head 失败;配置/API 组合结果是55通过、1失败。请更新既有预期,保留 namespace 列表及无本地引用断言,并重跑组合套件。 - [P2] 让既有 planned-phase fixture 满足新的严格读回。
_prepare_phase的 boolean 读回 现在正确地拒绝缺失或非 boolean 的开关,但benchmark/tests/test_task_entry.py::test_planned_phase_preserves_waits_and_does_not_prewrite_a_todo的旧 mock 只返回 cadence。该用例也在基线通过、当前 head 抛出planning_horizon_goal readback mismatch,未走到它要保护的等待/不预写 Todo 断言。请补上已解析的true;不要删掉严格类型/相等检查或原用例断言。
持续交付一个 Goal 的 Agent 应在选择工作前看到原目标、全部已登记要求和有界工作全貌,不必要求用户另外开启基础上下文。 例如交付物要求保留引言并补齐附录,已有验证任务仍然 OPEN,任务之间没有登记依赖:以前普通选择可以省略整个 Goal 视野,专用复盘又会丢失默认验收或只剩检查摘要;现在默认展示原目标、完整验收与最多五项工作,遗漏数量和完整读取入口仍保留。
当前源码已验证默认目标送达、完整验收连续性、显式关闭、稀疏继承和严格配置读回;但两项与新默认值直接相关的现有测试在基线通过、当前提交失败,故本次不予批准。 本次不声称真实模型已采用建议、提高任务质量或降低完整成本,也不执行模型实验、合并或本机升级。 真实模型对后续工作与结果的采用、可比任务收益和完整成本仍待独立验收;当前两项测试回归必须在本 PR 修复。
改动思路
默认目标可见性复用既有 Goal 与验收 owner,开关复用既有复盘配置和编辑器;同一 TS 投影保留工作完整性与签名依据。把默认、稀疏继承、关闭和 runner 读回一起交付,比要求用户补配置或另建平行状态更符合原任务。
本 PR 的可交付边界是源码及打包设置页中的默认 Goal 上下文连续性,实际模型采用与长程效果留给既有目标精化研究验收;这不豁免本次已复现的测试回归,也不将源码通过等同于安装态交付。
这个取舍不是“多放几个字段就一定更有效”。原始要求与验收是选择有用工作的必要上下文,但保留完整信息会增加每轮输入;展示五项也不代表只有五项工作。当前实现沿既有有界投影保留遗漏数量、完整读取路线与原验收来源,再引用同一包中已经存在的相同内容。与不改相比,它修复了可复现的信息缺失;与要求用户配置开关、重新复制需求或建立另一份规划状态相比,它少了一份人工准备和同步负担。普通交付不新增必答问题、确认或配置轮次。高级关闭只服务于回滚和对照,仍使用既有、必要的 revision 预览/应用边界。
| 入口 | 原行为 | 当前意图与独立验证 |
|---|---|---|
| 普通 flat/single 工作选择 | 默认不提供原 Goal 视野 | 默认原目标、当前验收、最多五项工作;不改变选择和 admission |
| 专用复盘 | 默认验收遗漏,配置检查只留摘要 | 完整当前公开验收,根目标来源单独保留 |
| 机器/Goal 设置 | 显式值和继承容易被显示默认混淆 | 只改步幅不固定 horizon/count;显式 false/true 保存并读回 |
| LoopX runner | 省略参数没有明确记录实际 treatment | 先解析 boolean,再配置、严格读回和记录;plain 与历史记录保留边界 |
这是源码行为说明表,不是模型采用或科学效果证据。
具体改动
完整评审 535bce71a709b712e815522e3afd279bf93dc219 的42文件、+724/-100及两张公开合成设置图。较早12文件 head 的评审草案没有发布;这次从原问题重新评估默认、UI、runner 和成本,不把此前结论继承为批准。独立规范先读 docs/architecture/rfcs/goal-outcome-refinement-v0.md 与 docs/reference/protocols/quota-planning-horizon-v0.md 在 98709770d80e9c332f3c07d2b545226a6dd17521 的已有内容。旧协议的关闭默认被本次维护者方向明确改变;PR 新写的说明只是变更披露,不能自己证明后续模型效果。
- State, reads and recovery:implemented。6 exact-head real CLI probes paired with immutable base; frozen horizon baseline2fails and current native tests pass
- Simplify the default path:implemented。Real revision-checked HTTP/UI machine false, Goal sparse/explicit boolean, reload readback
- Open-ended research and no premature stop:implemented。All retained clauses byte-preserved in six pairs; native correction/restart/replay/original open work tests
- Cost and bounded refactoring:implemented。96base/96head retained receipts,14review signals; quota20805→23745, small plan8077→9370
- Decisive acceptance 3:implemented。Current260Python/110TS and actual source probes; no source read mutation
- Decisive acceptance 8:implemented。Unchanged new native test revalidated at current head; original Todo stays OPEN; verification remains separate
- Product journey and delivery slice:implemented。Built current UI, real isolated backend, sparse inheritance/advanced checkbox/reload; synthetic directory boundary disclosed
- Installed model and comparative utility:deferred。No model jobs; source/control-path qualification only
关键代码与调用关系:
goal_context_facts直接保留已有验收 owner 的完整公开投影,替换七字段白名单。它不给验收重新下结论;根目标仍只来自 active state/registry,局部 outcome objective 不能补造丢失的根目标。实际 File/SQLite 对照中,读取前后 canonical 验收相同,原 OPEN 工作和触发类型不变。_planning_projections通过共享默认值给既有 TS builder 传 Goal facts;flat/single 不再被“没有依赖/阻塞”排除。显式 false 走原关闭路径,测试用禁止 Goal source 读取的 sentinel 验证隔离。既有排序、选择、claim、cadence、等待、停止、配额和结算 owner 没有转移。turnActionProjection只把相同 selected text 或已在包内的相同验收换成精确引用。验收 revision/scope/内容不一致或 source 缺失时仍内联;其他工作和 completeness 保留。work_context参与签名,改变被引用来源会改变签名;原输入未被就地改写。因此这不是以 display cap 推断状态、用散列摘要代替内容,或删除信息来满足大小门。goalReplanCadenceWriteValue区分编辑器展示的有效值与用户是否明确覆盖。共享配置 resolver 处理机器值、稀疏 Goal 和原子 cadence;明确 false 不被默认 true 覆盖。高级区域使用原字段和同一 API,没有另建设置权威。BenchmarkCodex的实际配置读回 与 SForge 使用同一既有默认,要求返回值是 boolean 且与本次 treatment 相等。新 worker/checkpoint 恢复都记录已解析值;显式 false 仍有效,旧 receipt 不反向改写。这里是有后果的执行前义务,不能称为可忽略建议;新复盘文字则只是指导,typed authority 仍由原 owner 执行。
普通任务的独立预期是:用户已给过的原意图无需再问,Agent 先看到完整目标与可继续的工作,再在原授权和预算内行动。设置不是这个普通任务的新前置步骤。独立浏览器验证采用当前打包 bundle 和真实 revision-checked HTTP 配置后端,仅工作区发现数据为合成 fixture。实际验证了机器关闭、Goal 只改步幅时保持继承、显式开关保存与刷新读回、390px 窄屏和键盘到达高级开关。写入后故意令一次读取返回503,编辑器隐藏旧值;重试读回已提交的 false,apply 次数不增加。截图只用于核对呈现,持久化和不重复写入由独立 HTTP 记录证明;没有据此声称生产工作区排序、新鲜度或安装态采用。
对主干的风险
两项阻塞都由相同输入的基线/当前 head 对照确认,不能归为外部环境,也不能用较窄的绿色 canary 覆盖掉。最小修复只需要同步测试 fixture/预期,保留当前严格语义;修复后需要在新的 exact head 重跑完整配置/API 及三模块 adapter 套件,不能只重跑两条断言就宣布所有验证通过。
其余本轮验证:260项规划/复盘/输出 Python 测试、110项相关 TS 测试通过。六种当前源 CLI case(File/SQLite × 无 outcome/默认 outcome/配置检查)与不可变基线配对,当前完整验收等于 canonical owner,根目标 missing 保持显式,原 Todo 和 typed-progress trigger 不变,所有原指导语逐字保留;新指导语增加213个 ASCII 字节。两要求样例的紧凑验收 JSON 从 null/319字节变成1170/1776字节,新增成本不能只用指导语增量代表。完整指导语仍保留原优先级、权限、成本、继续和停止条款;平坦指标既不证明进展,也不证明耗尽,没有强制评测或换任务。
把当前默认 preselection 原生测试冻结在基线,File/SQLite 两类均因缺少 horizon 失败;当前相关用例通过。完整验收的四类原生反例也已在基线失败,当前重验通过;相关 codec、指导语和原生用例的 blob 与较早已审内容完全相同,已做失效检查。原生用例实际经过独立 checker、脚本化修正、effect runtime 重启、原 checkpoint 重放和一次结算,随后原工作仍 OPEN。脚本完成产物不等于真实模型采纳,ACK 也不等于验收完成。
Harbor 0.20.0 和实际保留的 SForge provider 依赖已加载,三模块 adapter 测试首次为461通过、6失败。五项失败是测试模块导入路径缺少 tests/control_plane,补齐同一 fixture 路径后五项全部通过;保留原错误记录,没有改变产品或删断言。剩余一项正是上述 planned-phase 回归。因此当前独立资格是466个不同 case 通过、1个未修复回归;其中八项真实 configure-goal 的 runner 持久化用例已通过。这些是合成执行/真实配置 IO,没有发起模型、容器或计分实验。
语义与本地验证对齐
独立保留了相同96行 base/head 输出收据,零失败、14项需要人工判读的一次迁移信号,均对应已披露的 Goal horizon、签名 coverage 或完整指导语变化。小型 Turn plan JSON 为8,077→9,370字符;多 Agent quota 为20,805→23,745。只将该 quota 绝对门23,000→24,000和既有 horizon 首次迁移 compact allowance 2,800→3,000;其他普通门和8KiB envelope 警告保留。完整信息确实更贵;相同 source 的引用只消除可证明的重复,没有把其他工作项删掉。后续同 schema 再增长仍受普通门约束。
Dashboard build、配置投影 smoke、修改 Python 的 Ruff、配置限定17源文件 mypy 和完整 control-plane TS typecheck 通过。标准预合并6项直接检查及19项选中 canary/边界检查均通过,含双语 RFC、语义词汇、输出 budget 和公开边界扫描;premerge 整体 exit1 的原因是 benchmark_sensitive 人工 review hold,不是这些检查失败。那也不抵消本轮另外发现的两项必修测试回归。没有读取、轮询或等待远端 CI,没有声称全仓 Python import 图无错误。
我的整体评价
对 535bce71a709b712e815522e3afd279bf93dc219 的结论为 REQUEST_CHANGES。两项问题都在当前提交引入,修复路径清楚:机器配置目录模板补上默认 true;planned-phase mock 返回真实已解析的 boolean,并保留其等待/不预写 Todo 保护。无需削弱生产读回、扩大重构、另开配置 owner 或把这两项列成后续任务。
默认目标可见性复用既有 Goal 与验收 owner,开关复用既有复盘配置和编辑器;同一 TS 投影保留工作完整性与签名依据。把默认、稀疏继承、关闭和 runner 读回一起交付,比要求用户补配置或另建平行状态更符合原任务。 本 PR 的可交付边界是源码及打包设置页中的默认 Goal 上下文连续性,实际模型采用与长程效果留给既有目标精化研究验收;这不豁免本次已复现的测试回归,也不将源码通过等同于安装态交付。
长程维度是有依据的成本取舍:原目标与当前要求能进入真实入口,原任务、权限和停止规则得到保留,输入成本已同负载测量;源码连续性和脚本化回路仍不能证明真实模型更会做事。用户体验维度保留既有意图与授权,普通工作零新增必答轮次,必要的可选设置仍有真实纠错和读回。最有价值的同域简化已经通过复用验收投影、既有配置 owner 及精确 source 引用完成;不需要另建抽象。修复回归后再针对新 head 判定批准,合并权限与本机升级另循既有边界。
English verdict: REQUEST_CHANGES — 535bce7. Two existing tests pass the immutable base and fail this head: the machine namespace template omits the intentional true default, and the planned-phase mock omits the newly required boolean readback. Update those fixtures while preserving strict readback, privacy and wait/no-Todo assertions. Default/source/signature paths,260 Python tests,110 TS tests,466 distinct adapter cases,real configuration/UI recovery and96 matched output rows otherwise qualify this bounded source increment. Added context costs are measured; model adoption and long-horizon utility remain unverified.
535bce7 to
6217d34
Compare
Signed-off-by: huangruiteng <huangrt01@163.com>
Signed-off-by: huangruiteng <huangrt01@163.com>
Signed-off-by: huangruiteng <huangrt01@163.com>
Signed-off-by: huangruiteng <huangrt01@163.com>
Signed-off-by: huangruiteng <huangrt01@163.com>
…loop Signed-off-by: huangruiteng <huangrt01@163.com>
Signed-off-by: huangruiteng <huangrt01@163.com>
Signed-off-by: huangruiteng <huangrt01@163.com>
Signed-off-by: huangruiteng <huangrt01@163.com>
Signed-off-by: huangruiteng <huangrt01@163.com>
6217d34 to
21537b5
Compare
Signed-off-by: huangruiteng <huangrt01@163.com>
Signed-off-by: huangruiteng <huangrt01@163.com>
Signed-off-by: huangruiteng <huangrt01@163.com>
Signed-off-by: huangruiteng <huangrt01@163.com>
huangruiteng
left a comment
There was a problem hiding this comment.
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
Reviewer: model_agent · self_reported · GPT-5 · OpenAI
动机
持续交付同一 Goal 的 Agent 和负责审阅方向的 Goal owner 在恢复、切换任务或修正方向时会遇到该问题。以前平面 backlog 或单一 Todo 可能省略原 Goal 和验收,旧目标文字也可能继续被当作当前方向;现在默认带入有界 Goal 视野,并把方向修正变成 owner 应用、Agent 分别确认的版本化流程。当前提交让普通规划看到原目标与完整验收,让过期方向经可追溯 revision 生效,并阻止未确认新版本的 Agent 领取新执行,同时保留既有 lease 续租、释放和 Turn 恢复。
这解决的不是单纯“文案过期”。如果 Agent 看不到原承诺与当前验收,就会在多个 Turn 里持续选择局部最优工作;如果只有最新文件字节而没有语义确认,owner 也无法区分“现有目标仍有效”与“旧文字已误导后续执行”。本 PR 把方向变化放进既有 Goal authority,让 owner 审阅并应用,让每个 peer 根据自己的当前工作独立确认,不引入全员同步屏障。
本 PR 不授权改变根承诺、权限、验收、预算或停止条件,也不声称真实模型一定会识别语义过期、安装态已经采用或 benchmark 分数会提升。真实模型的语义遵循、已安装 host 的采用和匹配 benchmark 收益仍需后续运行时与结果资格验收。
提交前没有一份独立接受的书面规范定义 goal objective revision、peer adoption 与执行准入门;本 PR 同时新增 RFC 文本,因此这里只把它当作变更披露,不反向用它证明自己的验收。
改动思路
核心取舍是扩展现有 Goal acceptance owner,而不是新增 child Goal、Markdown 文档或第二套调度器。共享决定与 CAS 保留在既有 TypeScript Goal/authority owner 中,Python 仅承载 CLI/host IO 与持久化 proposal;同一 acceptance transaction 和 lifecycle 复用,而不是建立第二套目标权威。
以下流程是对 2af6b3d0a02f7a8b051026b3a49fc23b54bbe44b 源码的说明,不代替执行证据:
Agent/host prepares revision
|
v
existing goal.update proposal + retry checkpoint
|
owner reviews and applies
|
v
canonical Goal authority: digest-linked objective revision
|
+--> current planning/Turn projection
|
+--> each Agent reviews own work and adopts
|
v
new claim / lease acquire may proceed
Old active lease / settle / renew / release remain available.
默认 Goal 工作视野复用既有 planning horizon 和 machine/Goal 配置。平面或单一 Todo 不再因为“没有依赖/阻塞”而丢失原目标;投影最多展示五项工作并保留遗漏数量与完整读取路线。Turn envelope 只把与已签名 action 完全相同的选中工作文字,或与 work_context.sources 完全相同的 acceptance 替换成引用;来源不一致时保留完整内联证据,不靠摘要假装完整。
objective revision 被限制在既有 Goal commitments 内。历史是连续的 digest 链;revision 需要可信 owner 应用,adoption 必须由注册 Agent 为自己的当前未完成工作记录。已采用的 peer 可继续,未采用的 peer 只在新执行前被拦截;已有 lease 的续租、释放和旧 Turn 恢复不被新 gate 切断。
关键代码讲解
goal_objective.ts是 revision、adoption 与执行 guard 的唯一 typed owner。它校验连续 revision、digest、exact Goal lifetime、registered Agent 和 own-work digest;goalObjectiveWorkGuard返回可执行的 inspect remediation。最后的e8c8907bf2把 bare SHA-256 matcher 改为复用content_digest.ts,避免新 state 再复制一份协议知识。acceptance_authority.ts的updateGoalObjective把 revision/adoption 放进既有 Goal acceptance transaction。owner 与 Agent actor 分开授权;reviewed prospective digest 让无关 peer/work 写不必触发重复 owner 审阅;真正变化仍由 provider CAS 拒绝。goal_objective_actions.py复用ChatActionService,goal.updateproposal 与 checkpoint。它只做 host/CLI/proposal IO;相同 pending objective 复用一条 proposal,丢失回复重试原 operation,不另造 Python 决策源。turn_envelope.ts在完整 Goal/工作上下文上做精确引用。选中文字必须完全相同;acceptance 必须 canonical 相同,否则仍内联;其他工作项、完整性和签名来源不删除。goal-objective-settings.tsx提供 owner journey:审阅 Agent proposal 或直接输入、显示当前文本/原目标/原因/peer 状态、apply 后刷新读回,并在 stale basis 时要求重新审阅。它不代替 peer adoption,也不代表验收通过。
本次重审把上一轮的旧结论和新 head 分开核对。旧 review 的两个 P2 已修:机器 namespace 模板包含默认 true,Harbor planned-phase mock 返回已解析 boolean。最终 head 又处理了三个收口问题:复用 canonical digest matcher;在 Windows/CRLF 下识别完整 objective maintenance + open-work review 指引,同时给完整双段迁移一次性 512 字符 allowance 并保留 partial-text 失败;把 dashboard 陈旧断言改为验证 source label 优先、display name 回退。
具体改动
- 默认规划上下文:applicable planning horizon 默认携带原 Goal、完整当前验收和最多五项工作,保留 omission count、完整读取入口、machine/Goal sparse inheritance 和显式 false。EdgeBench/Harbor 在配置和读回时解析并记录同一 boolean;历史 receipt 不被改写。
- Objective revision:新增
goal_objective_revision_v0,保存 original objective、连续 revision/reason/source_ref/digest、registered roster 和 adoption。相同或仅空白差异的 objective 被拒绝;此前没有自动 revision,也没有从文件年龄推断新鲜度。 - 独立 peer adoption:Agent 必须用 current revision、digest、自己的 work_digest 和 review_summary 记录 adoption。竞争写走 CAS;旧 adoption 不能确认新 revision;重复有效 adoption 返回 no-change;peer/work 变化不会使已 current adoption 失效。
- 执行准入:Task lease acquire 和新 Todo claim 在 apply 分支检查 adoption;未采用者收到 typed guard。旧 Turn settlement、lease renewal/release 与既有恢复路径不受影响,因此不是 mid-Turn 中断。
- 投影与成本:replan core goal 和 regular work context 共用完整 acceptance owner readback;Turn envelope 只复用 exact inline 来源。公开匹配 fixture 从 8,077 增至 9,370 个 Turn-plan 字符,从 20,805 增至 23,745 个 multi-Agent quota 字符;这是测量得到的输入成本,不是 token、延迟或质量收益。
- Owner/Developer journey:dashboard 新增 Current objective and revisions,CLI/native tool 暴露 prepare/apply/adopt route,
loopx-projectskill 更新操作说明;公开 RFC、协议和截图披露默认值、opt-out、恢复与未验证边界。 - 验证范围:本轮最终 head 的 61 条聚焦 TS 测试通过;隔离真实 File/SQLite/PostgreSQL 套件 485 passed、0 skipped;聚焦 Python objective/open-outcome/output 组合通过;dashboard contract 4/4、Ruff 和
git diff --check通过。完整 premerge 选择检查通过,除benchmark_sensitive人工 hold 外没有检查失败。
Change-quality receipt 为 cqr_abc83be1f42d49735118,fingerprint 为 abc83be1f42d4973511843640db16e514cf7387a2e5d56eb09f477e8f6636981。该 receipt 证明声明的 exact scope 与证据形状一致,不证明真实模型语义或 benchmark 效用。
对主干的风险
最强回归场景不是“新字段解析失败”,而是新准入规则过度扩张:一个 peer 正在持 lease 或恢复旧 Turn,另一个 peer 推进 objective 后被错误要求重新 adoption;或者一个新增 Agent 继承了旧版本状态。当前实现把 gate 限定在 new claim/lease apply,已有恢复、renew、release 留在原路径;新增 Agent 因缺少 adoption digest 会被要求自行审阅,不会因未参加旧 revision 而获得隐式认可。
第二个风险是 Agent-consumed prose 被为了省字节而悄悄删掉。最终 head 没有通过缩短文字解决 Windows 预算问题,而是先识别被平台规范化的完整两段文本,再只给该次完整迁移 512 字符 allowance。现有 partial clause 负向测试仍失败,升级基线、缺 clause 或普通后续增长仍受原规则约束。
第三个风险是共享合同的重复权威。goal_objective.ts 只扩展既有 Goal authority,并复用 acceptance work digest、lifecycle、transaction、receipt 与 canonical digest owner;Python 不决定 revision/adoption。最后一次 review 发现的 bare SHA matcher 重复已删除,consumer pin 也已更新。
验证仍有明确缺口:没有在最终 head 重跑整个 control-plane TS 全量;此前首轮 5235 条中唯一失败是新 digest consumer pin,修复后针对 owner 的 21 条测试和本轮相关 61 条测试通过。这里不把“聚焦测试已绿”写成“全量已绿”。可选 Harbor/model fixture 的 272 个 skip 也没有被当成通过;本 PR 没有启动 benchmark job,benchmark_sensitive 必须继续作为独立人工审查 hold,不是测试失败。
最需要后续观察的是真实模型能否稳定识别 stale objective、已安装 host 是否采用这条路径,以及匹配任务上的实际收益。脚本化 native 调用、真实 provider 和真实 backend 能证明合同与入口可工作,不能证明模型理解或比较质量。
我的整体评价
APPROVE — 2af6b3d。没有剩余的 blocking finding。
本 PR 只交付默认 Goal 工作视野、owner 应用的 objective revision、peer 独立 adoption 与新执行准入门;模型遵循、已安装 host 采用和 benchmark 收益留给既有资格验收。这个边界是完整可审阅的:owner 有真实 UI/CLI/native apply 路径,Agent 有独立 adoption 和恢复路径,provider 有竞争写/重启证据,普通链路保留显式关闭与历史契约。
设计上最关键的改进是删掉了“只靠最新文字/自报进度推断方向已同步”的隐含假设,同时没有把 objective revision 升级成无审查的 root amendment。持有旧工作的人不会被强制中断;没有确认新方向的人不能悄悄领取新工作;peer 之间也不需要全员同时确认。这个状态边界清楚、可回滚,并且比额外 child Goal 或人工复制目标更接近现有 LoopX owner。
旧 review 的两个 P2 和本轮发现的三处收口问题均已在 exact head 修复。由于账号就是 PR 作者,GitHub 会拒绝 formal self-approval;该结论以 author-owned COMMENTED review 记录,仍需随后单独通过 merge readiness 和已授权的 admin merge 路径。
English verdict: APPROVE - 2af6b3d. No blocking finding remains. The exact head now reuses the canonical Goal/authority boundary, preserves old recovery, validates per-Agent adoption and default planning context across real File/SQLite/PostgreSQL providers, and fixes the prior digest, Windows guidance and dashboard contract findings; live-model adoption and a fresh full TS run remain explicitly unverified, while benchmark_sensitive stays a separate manual hold.
Resolved on 2af6b3d. The machine configuration template now includes planning_horizon_goal=true and the focused configuration/API suite passed 27/27. The planned-phase fixture now returns the resolved boolean while retaining strict readback and its wait/no-previous-Todo assertions; the corrected adapter/shared runtime path passed 95 collected cases with optional environment skips, and the shared runtime module passed 88/88. Exact-head approval review 5597949904 remains on the unchanged head. Discussion is retained.
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; model=gpt-6.1-sol; provider=OpenAI; declaration_source=runtime_reported; reasoning_effort=max
动机
REQUEST_CHANGES — 合并后审计:当前 head 仍有一处会丢失既有验收指引的 P2。 本结论针对 6987@2af6b3d0a02f7a8b051026b3a49fc23b54bbe44b,PR 已合并;需要后续修复,并非声称还能阻止已经发生的合并。
[P2] 合并同一读取命令的指引,保留原有验收义务。 interactionRequiredReads 先用相同的 goal-acceptance inspect 命令添加 objective adoption 指引,再添加原有验收指引;add() 按命令去重,因此第二段始终被丢弃。触发条件是 Goal 已有 goal_objective,并有累计 outcome 或 configured checks;即使该 Agent 已采用当前目标,此条件仍成立。
相同四组输入经过公开 TS 投影入口:基线 a590609a357f7cde17289b5ceba9f85a9fcb46cc 全部保留验收指引;最终 head 仅在 goal_objective_present=true 时丢失它。Outcome 分支失去切换工作/声明完成前核对未满足要求、自查与独立检查的区别、要求变化后取得新 guard;checks 分支失去读取完整 non-goals/criteria/scope/revision 及检查变化后重新获取 guard。真实隔离 File Goal 的 CLI quota should-run 也把这段有损指引投影进 inline work_context.sources。验收数据仍在,问题是给 Agent 的行为要求被替换,不能以“命令和字段都保留”证明语义等价。
持续推进同一 Goal 的 Agent 和审阅方向的 owner,需要在任务切换、恢复和方向修正后继续看到当前目标及全部累计验收要求。以前平铺工作可能缺少 Goal 视野,旧目标文字也可能继续误导后续工作;本次新增版本化目标、owner 应用和逐 Agent 采用,使方向变化有可读回的依据。默认视野和实际修订链路已经验证,但新增读取指引不应覆盖原有验收义务。
本次验证了真实 owner 应用、Agent 独立采用、在途恢复与新执行围栏;仍需修复上述指引合并回归。模型能否稳定识别语义过期、安装态采用和可比任务收益不由脚本测试证明,也没有启动模型或 benchmark 作业。
改动思路
把当前执行目标放在既有 Goal authority,比只修改展示文字或另建 child Goal 更符合本问题。准备提案只记录待审请求;owner 应用后才产生 canonical revision;每位 Agent 对自己的工作完成对账并采用精确版本,才可领取新执行。已有 lease 的恢复、续租、释放保留,已采用的 peer 无需等全员确认。
默认 Goal 视野复用现有配置和投影。它展示最多五项工作及遗漏数量/完整读取入口;TurnEnvelope 仅引用同包中已经存在且完全相同的文字或验收,内容不一致则继续内联。与维持旧行为相比,这修复可见性缺口;与要求用户重复输入已知目标或维护另一份状态相比,准备、应用与采用都有既有 owner 和真实入口。
| 场景 | 当前行为 | 判断 |
|---|---|---|
| 无目标修订 | 保留既有验收读取指引 | 正常 |
| owner 应用修订 | 当前目标及 peer 状态可读回 | 已验证 |
| 一个 peer 采用 | 自己可继续,其他 peer 仍待采用 | 已验证 |
| 修订与验收同时存在 | 命令去重覆盖验收指引 | 必须修复 |
修复应在现有读取 owner 内合并 reason,或先组合完整指引再去重;只保留一条 inspect 命令,不增加另一套读取/状态 authority。为 revised/unrevised × outcomes/checks 添加保留条款断言,并核对 inline context 与 TurnEnvelope,不用额外确认或强制全员等待解决此问题。
具体改动
原始承诺、权限、验收、预算和停止条件仍由既有 owner 管理;本次 operating objective 不等同于改写根承诺。goal_objective_revision_v0 是新增共享合同,revision/adoption 语义放在 TS,Python 只负责 CLI、宿主和 proposal IO。对新增状态的接受依据是实际调用、CAS/回执和恢复证据,不是新增 RFC 自证。
规范依据为提交前的 docs/architecture/rfcs/goal-outcome-refinement-v0.md,固定在 a590609a357f7cde17289b5ceba9f85a9fcb46cc。逐项对照:Ordinary user messages 的累计要求与切换工作前对账义务在上述分支未完整保留;State, reads and recovery 的原状态/回执/来源连续性通过;Open-ended research and no premature stop 的根承诺、预算和停止权限保持;Cost and bounded refactoring 有匹配输出与有界增长证据;Product journey and delivery slice 有打包界面和真实后端读回。新修订 RFC 是披露,不能反向作为独立既有验收依据。
updateGoalObjective复用 Goal 事务、exact lifetime、CAS 和原操作回执。预览摘要允许无关工作/peer 写入,不允许目标依据变化后复用旧审阅。goalObjectiveWorkGuard与 adoption owner 区分新执行和在途恢复;采用只属于该 Agent,旧 adoption 重放不能确认新版本。GoalObjectiveSettings展示待审提案、当前/原始目标和 peer 采用状态;读取失败禁用写入,重新读取恢复。interactionRequiredReads是本次回归的 owner:去重必须保留所有适用的行为要求。
重审覆盖当前 base→head 的 81 个文件;先前 8cbc head 的 79 文件审阅与最后六文件增量分别核对。此前两个测试问题已修:配置模板包含默认 true;Harbor mock 返回真实解析的布尔值,严格读回和既有隐私/等待断言保留。最终增量还复用 digest matcher、保留 CRLF 下的完整指引并修正 source-label 测试;这些改动没有触及本次 P2 的分支。
验证结果分开记录:前一审阅 head 的 Python 291、benchmark 适配器 467、File/SQLite 新 lease 场景 2、输出 96 对 96 行均通过;最终 head 重新执行聚焦 Python 173、TS 98 和 workspace contract,均通过。最终 head 的真实隔离 PostgreSQL 完整套件为 367 通过、零跳过,首轮曾有大型读取超时,独立复测与完整重跑通过;不把失败历史删掉或把重复执行累加成独立案例。CI 未查询/等待。
打包 UI 使用 8cbc 的真实 File 后端和合成工作区目录,验证 Agent 提案→owner 应用→CLI 单 peer 采用→页面读回、重复采用不写 provider、503 后禁用输入与恢复;390px 无横向溢出,桌面/窄屏已看图。最终六文件增量未改变该 UI、路由、应用或采用决策,故复用这部分证据;不声称安装态或真实模型已采用。周边存储/任务策略卡片由合成目录限定,未作完整工作区资格声明。
对主干的风险
最强反例是局部修订流程和全部既有测试都通过,但采用新目标后的日常 Agent 上下文反而少了原有验收义务。当前四组对照和真实 CLI 来源已经复现这一点,最终 head 的相同探针仍失败。它不直接修改验收数据或授予完成权限,却会削弱长程任务中“先对账再切换/收口”的执行指引,且不会在采用后自动消失。
其他重点负向路径有当前证据:新 peer 不继承 adoption、不能替别人确认、旧操作不确认新版本;已有 lease 恢复/renew/release 不被围栏截断;无关工作写入不要求重新 owner 审阅;同一版本重复 adoption 不增加 provider revision。新增协议有容量和历史界限,回退应保留 reader/围栏/回执,用新 revision 回退意图,不能删除历史恢复旧 writer。
输入成本的增长已经披露,属于保留有效上下文的取舍;基于完整文案的一次性输出 allowance 不等于执行预算放宽。Mac 上的匹配输出验证不能冒充独立 Windows 实测。最终 head 源码 premerge 的选定检查通过,但 benchmark_sensitive 人工 hold 单列;没有把它写成自动全绿或新的合并权限。
我的整体评价
REQUEST_CHANGES — 最终 head 的一项 P2 需要后续修复。 目标修订和独立采用的设计归属合理,真实产品链路也有证据;本次不要求重做该机制或恢复人工重复输入。需要在同一读取命令中完整保留 adoption 与既有验收两组指引,并把交叉分支加入回归覆盖。
本结论区分了已修旧问题、最终提交的新验证和仍存在的回归。PR 已合并,后续应修复承载普通 Agent 上下文的 owner;本审计不替代 owner 的合并/安装权限,也不把脚本采用、自查或通过数量当作整体 Goal 完成、真实模型收益或运行成本改进。
English verdict: REQUEST_CHANGES — post-merge audit of 2af6b3d. One P2 remains: objective-adoption guidance wins command deduplication and silently drops existing acceptance instructions. The immutable base passes the same four-case probe; the final head fails only with an objective revision present, and native CLI inline context confirms the loss. Preserve both instruction sets in one read and add cross-branch coverage. Prior fixture regressions are resolved; model and installed-host benefit remain unqualified.
| if (stateFile) add(`cat -- ${shellQuote(stateFile)}`, "goal_state", | ||
| "Read complete Goal intent, acceptance and stops. Exact Todo reads own task state/claims. Source failure or changed requirements require a fresh guard; summaries cannot replace this read."); | ||
| "Read complete Goal intent, acceptance and stops. Exact Todo reads own task state/claims. Source failure or changed requirements require a fresh guard; summaries cannot replace this read. Only when explicit user direction invalidates the objective, use goal-acceptance prepare-objective; reuse pending proposals. Progress, diagnostics or age need no revision; documents/peers grant no authority."); | ||
| if (request.goal_objective_present === true) add(`${prefix} --format json goal-acceptance inspect --goal-id ${goalArg}`, |
There was a problem hiding this comment.
[P2] Preserve acceptance instructions when adding objective-adoption guidance
When goal_objective_present is true, this add wins the identical inspect command, so lines394–395 are discarded by command-only deduplication. This also affects already-adopted Agents. With outcomes, the ordinary context loses the before-switch/completion reconciliation, independent-check distinction and fresh-guard instructions; with configured checks it loses non-goals/criteria/scope/revision and changed-check guidance. The same four-case public projection probe passes at a590609 and fails at this final head only for revised Goals; an actual File Goal quota inline source confirms the loss. Compose the applicable reason clauses into one inspect entry and cover revised/unrevised × outcomes/checks in required-read and fulfilled-context tests.
A flat runnable backlog could omit the Goal's broader work view, and a source file could keep projecting an obsolete operating objective. Agents had no complete route from recognizing that mismatch to a reviewed revision and their own execution adopting it.
This PR defaults Goal, recorded acceptance and bounded work context on at applicable planning boundaries, and closes the operating-objective revision loop through the existing Goal owner. It retains the strongest feasible first delivery as the goal, with diagnostic validation and available feedback as ways to improve it.
Final reviewed head:
2af6b3d0a02f7a8b051026b3a49fc23b54bbe44bBase:
a590609a357f7cde17289b5ceba9f85a9fcb46ccDelivered behavior
The existing S3/R4 Goal owner holds revision/adoption semantics in TypeScript; Python supplies host/CLI/proposal IO. This adds the bounded
goal_objective_revision_v0contract, not a new capability or a general root-amendment authority. The related refactor keeps revision validation/projection together and reuses the acceptance transaction, receipt and lifecycle owners. No benchmark job was launched and scoring, background evaluation cadence, quotas and stop rules are unchanged.Review refinements
e8c8907bf2reuses the canonicalBARE_SHA256_PATTERNowner in the new objective state and updates the single-owner consumer pin.09c0ac53c4recognizes the complete combined objective/open-work guidance after platform newline normalization while preserving every clause. The one-time 512-character allowance applies only to that complete reviewed transition; partial text still fails.2af6b3d0a0aligns the dashboard contract with the current source-label-first, Goal-display-name-fallback behavior.planning_horizon_goal: true, and the planned-phase Harbor fixture returns the resolved boolean while retaining strict readback and its wait/no-prewrite assertions.Validation
py_compile, maintainability ratchet, semantic inventory andgit diff --checkpassed.abc83be1f42d4973511843640db16e514cf7387a2e5d56eb09f477e8f6636981, receiptcqr_abc83be1f42d49735118.benchmark_sensitiveitem is a manual review hold, not a failed check. No remote CI was fetched, polled or waited on.The first full control-plane TS run observed 5235 tests, 5161 passed, 1 failed, 73 skipped before the new digest consumer pin was refreshed. The owner-reuse fix then passed its focused 21/21 set and was included in the final 61/61 rerun. A fresh full TS run was not performed, so this PR does not claim the entire TS suite is green.
Packaged UI with a real canonical backend covered prepare/apply/readback, two-peer state, unrelated peer writes preserving a proposal, changed objective refusing stale apply, read recovery, desktop and 390px mobile. Test data is synthetic; no live Goal was rewritten.
The ordinary maintenance hint is 208 characters including its separator and does not add a per-Turn write or polling requirement. Its exact one-time instruction transition, the newly visible diagnostic warning and the complete Windows combined transition are qualified; the actual 8 KiB performance target/warning and ordinary repeated-growth limits remain. Measured input changes are 8,077 → 9,370 Turn-plan characters and 20,805 → 23,745 multi-Agent quota characters. These are character counts, not token, latency or quality improvements.
Scripted native tool calls prove the usable invocation/effect path and execution fence. They do not prove that a live model always recognizes semantic staleness, that installed hosts have adopted this code, or that benchmark scores improve. Those remain subsequent runtime/benchmark evidence.
Packaged synthetic UI readback (the entered form text is an unsubmitted display check):
中文:默认提供有界 Goal/工作视野,并补齐“Agent 识别过期方向 → 提案 → owner 应用 → 各 Agent 独立采用 → 新执行准入”的闭环。仅必要的方向变化触发修订;普通进展和诊断反馈不触发,相同提案复用,每个版本只确认一次,不要求全员同时对齐。保留最强首次交付目标、诊断性验证手段、后台评测和原有停止边界。真实模型遵循、安装采用和提分尚未验证。