Repository navigation
Persist user corrections to success criteria before dependent work - #8199
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-astra; OpenAI; declaration_source=runtime_reported; reasoning_effort=ultra
动机 / Motivation
用户纠正长期任务的成功标准时,执行 Agent 和后续接手者需要看到同一份已更新的验收依据。 原来可以只在聊天或 Vision 中承认纠偏,下一轮仍读取旧验收;现在明确要求在依赖该解释的工作之前通过已有验收入口写入并读回,再校准相关工作。 同一 Goal 和原始目标保留,新增的纠偏要求与原要求、来源和 Todo 关联一起进入下一轮;重复操作返回原结果,读取本身不会再次写入。 本次不新增自动纠偏分类器、需求退役协议、强制重规划或独立验收资格,也不把模型是否遵循指引当作已验证结果。
检查的是完整提交 b6d97415d35c33b4b50149d2c42cc0d5b11f3a04,基线为 5a58635028fbef1316dc66531daf5fdb655e9b13。我先核对了原有契约 skills/loopx-project/references/outcome-refinement.md:Current operating objective、Reuse context and batch changes、Continue and recover。这三个已有约束分别要求目的变更走自己的所有者、累计要求保留并批量维护、恢复沿用操作身份及当前上下文。该 PR 把纠偏动作接回这些已有规则,没有把新文案当作新授权。
改动思路 / Approach
保留现有 TypeScript 验收与状态所有者,统一完整/渐进指令的维护尾段;Python 对话适配器只投递同一义务,不另建纠偏分类器或验收状态机。 本 PR 交付纠偏到既有验收写入、读回及下一轮上下文的完整工作流;通用 requirement 退役与真实模型采用率不在此切片内。 原来只改 Vision 可以改变工作路线,却不能改变下一轮读取的验收;现在先持久化成功标准,再调整受影响的工作。完整与渐进模式仍保留各自的读取前缀,避免为了合并字符串而丢掉按需读取来源的条件。普通进展没有改变标准时不增加写入,也不新增确认轮次。
具体改动 / Changes
关键代码讲解
OUTCOME_MAINTENANCE_GUIDANCE让两个投递模式共享维护义务:直接用户纠偏先写匹配 outcome 并完整读回;仅在整体目的变化时走 objective owner。权限、停止条件、保留要求、fresh guard 和独立检查的边界都还在。GUIDANCE在已启用的原生会话中表达同样顺序,同时仍明确工具、引用、heartbeat 和 peer 内容不是新的用户授权。它是模型执行指引,没有自动把一句自然语言变成状态写入。Direct corrections to success criteria交代了关键反例:当前 additive refine 不能退役旧要求,真实冲突必须交还对应所有者;不能追加互相矛盾的要求后宣称二者都满足。run_json_cli_result与已有同类 helper 一样关闭模型导航包装,测试仍拿到原始 JSON、错误与返回码,显式 argv 可以选择另一投递方式。这不更改用户运行时的默认配置。
我独立执行了 File/SQLite 的验收集成测试 35 passed、原生会话与丢回复恢复 49 passed、共享/渐进 TS 测试 33 passed。另用不可变基线和当前真实投影函数做成对比较:没有 outcomes、不执行、待选择、结算阶段四条路径输出相同;适用路径的读取次数不变且重复投影幂等。新增义务在基线确实不存在,当前两个导出都存在;旧的独立检查、原 Goal、fresh guard 和不变则不写义务仍保留。每份适用指引增加 415 UTF-8 bytes,没有借压缩删掉条件。
对主干的风险 / Risks
风险集中于模型如何解释较强的执行顺序:如果把普通进展当作纠偏,可能出现不必要的验收写入。因此不能只依赖导出同一个字符串的测试;本次额外核对了独立字面义务、四条不适用分支、真实重复操作和来源边界。实际 API、provider revision、操作身份、独立检查与目标权限都未改。现有 quick premerge 的精确提交结果里,直接检查和三个 canary 均通过;较早运行曾被并发 tracked edit 检查拒绝,稳定提交后的重跑通过,未把那次失败改写成成功。按本次契约没有查询或等待远端 CI。
我的整体评价 / Verdict
APPROVE,没有发现需要阻断的缺陷。改动修补了正确 API 与实际 Agent 工作流之间的缺口,且没有为一条纠偏引入平行状态机。本次检查的 interaction_contract.ts、chat_loopx_mode.py 与两个工作流 skill 改变 Agent 指令及已有 CLI 使用顺序,不改变网页布局或新的用户控件,因此不适用截图验收。 未验证真实模型是否会自发采用新指令;未声称产生实验分数收益。 真实模型采用率需要后续连续轨迹评估;本评审不等于主干合并授权。
English verdict: APPROVE the exact head b6d9741. The existing acceptance owner now has a consistent correction-before-dependent-work workflow, with real File/SQLite readback and negative-path evidence. Autonomous model adoption and sustained outcome gains remain unverified; merge authorization is separate.
A direct user correction to what counts as success could remain only in chat or a Vision update. The self-repair workflow previously routed acceptance changes and execution-route gaps through the same Vision step, even though Vision does not update canonical requirements.
This change directs the existing outcome-refinement owner to retain the corrected criterion and read back its result before dependent work. Shared full/progressive context, native conversation guidance and installed workflow skills distinguish acceptance changes from a change in the Goal's overall purpose. Unaffected requirements, authorization and stops remain; unchanged work needs no extra write. Conflicting persisted requirements still require explicit reconciliation through their owner—the additive API does not gain supersession semantics.
The shared full/progressive guidance tail removes duplication. The raw-JSON CLI test helper also selects the same machine transport as its sibling, preventing a model navigation wrapper from replacing the projection consumed by integration tests.
Validation on
b6d97415d35c33b4b50149d2c42cc0d5b11f3a04: 116 Python integration/native conversation tests, 33 TypeScript interaction/progressive tests, and 15 repair-pattern tests passed. The integration journey uses actual File/SQLite authority, CLI correction, exact retry, complete readback and next-Turn context without replacing the objective; unchanged inspection remains read-only. All quick premerge direct checks and three selected canaries passed. Workflow installation/readback also confirmed the two changed skills and matching source revision, with other managed skills unchanged.The scripted actor establishes persistence and projection, not spontaneous future model compliance. No new classifier, acceptance switch, authorization flow or runtime state schema is introduced. The guidance grows by 415 UTF-8 bytes in each full/progressive view to distinguish acceptance persistence from route maintenance; it introduces no unconditional per-Turn tool call. The earlier validation attempt correctly detected an in-flight tracked edit; the unchanged committed-head rerun passed.