Repository navigation
refactor(memory): register shared context and settlement lifecycle - #6957
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; model=gpt-6.1-sol; provider=OpenAI; declaration_source=runtime_reported; reasoning_effort=max
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机
已为指定 Agent 开启经验记忆的使用者,在 DSH 或 Ark 宿主继续任务时需要收到获准的参考经验,并把合格反思交回既有验证流程。
此前签名短包已经声明记忆参与,但共享宿主转换丢掉了召回正文和返回的反思,原生 Turn 又只给 Codex 接上结算观察器;本次补齐这三处接线。
同一原生 File/SQLite 用例在基线有六项失败,在当前版本全部通过;另用真实 DSH 子进程走完独立证明、写回、扣额和记忆读回,普通验证零写入,精确重放也不重复任何效果。
本次资格限定宿主 IO 与结算接线;真实模型遵循、线上记忆服务、安装采用、完整成本和父级 M7.4 收敛仍未验收。
改动思路
复用既有 enablement resolver、签名边界、外层 validator、post-settlement observer 和 memory lifecycle;共享宿主只传递候选,不能自行决定写入。 不改动会留下“配置已开启但宿主看不到上下文/反思回不来”的实际落差;只补提示正文也不能接通原生结算后的观察器。当前方案在四个既有 IO 模块内修复整条路径,并把原 Codex 指导原文提为共用函数,没有新增开关、配置或写入 owner。
源码对照的流程为:已签名参与事实与新鲜绑定 → 共享宿主收到获准上下文 → 返回反思候选 → 外层校验、写回与扣额 → 既有可选记忆流程。普通 validator 通过只证明任务验证通过;缺少精确反思摘要和证据证明时,记忆流程仍等待、零写入。provider 失败继续 fail-open,不阻止原任务。已有 Agent 记忆设置即可使用该路径,既有配置和授权足够时没有新增人工准备或确认轮次。
具体改动
独立验收依据为改动前的 docs/reference/protocols/turn-envelope-v0.md,固定 revision b9389edc28cf5b787f387ef426d1bafd0c118cfb 的 Optional memory participation 与原生 capture 条款,并对照同版本 effect-interpreter RFC 的 M7.4。新改写的文档只记录修复,不能自行成为通过依据。
| 验收项 | 当前精确版本的处置 |
|---|---|
| MEM-participation | implemented:签名参与事实和当前 Goal/Agent 绑定共同控制召回与反思传输。24 个绑定组合及实际 CLI/SDK 输入覆盖失配。 |
| MEM-isolation | implemented:关闭、未配置、失效、仅召回、仅写回和 provider 不可用按各自分支处理;完整 Codex 提示保持一致。 |
| MEM-settlement | implemented:真实 DSH/File/SQLite 路径中,普通验证零记忆记录,独立证明后恰有一个精确读回记录;原 journal 重放无新增效果。 |
| M7.4-adoption | deferred:原有 M7.4 安装宿主与真实模型/provider 验收继续开放。 |
| M7.4-cost | deferred:原有完整 token、detail IO、延迟和结果质量验收继续开放;展示字节恢复不能当作效率收益。 |
关键代码讲解
executor.reward_memory_prompt_instructions提取原 Codex 两段文字,仍调用原reward_memory_automation_enabled,没有复制配置或启用决策。召回指导还要求实际 guidance 存在。八个相同请求的整个 Codex 提示逐字节相等。host_candidate.extract_turn_authority先核对签名,再保留获准的 runtime recall 包及上述指导;仅 ingest 时清掉召回 context,复制映射不修改原请求。DSH 与 Ark 原来就共同经过这个转换,因此不需要各建一套记忆入口。host_candidate.build_result仅在 ingest 开启时把反思原样交还外层。它不截断后冒充有效,也不把非 material 结果变成可写证据;原大小与 material 限制、后续反思 JSON 和独立证明检查保留。execute_turn_run_once中的post_settlement_reward_memory保留既有生命周期,只给已验证 ingest 的其他宿主接上线;Codex 原关闭行为保留。两处既有测试模块扩展实际宿主、原生 File/SQLite 及证明路径;协议与中英 RFC 同步,未新增 UI 或控制面状态。
对主干的风险
本次独立执行 216 个 Python 测试通过;19 个需要显式 native-operation 构建产物的可选 SDK 测试跳过,不把它们算通过。另单独执行 Ark SDK 0.8.0/MCP 1.30.0 的完整 30 项测试通过。实际 SDK HTTP MockTransport 上四种召回/写回组合保留正确输入和返回反思,四个签名篡改用例均在任何 provider 请求前拒绝;未调用线上模型或记忆服务。
同一当前测试输入在不可变基线运行时,16 个原生 DSH/File/SQLite 场景有六个召回/ingest 断言失败,当前版本 16 个全部通过。另四个真实原生 DSH 用例让实际 memory lifecycle 运行,仅替换 provider IO:普通验证在两个后端均零写入,独立精确证明后均写入并读回一个记录;原 journal 精确重放不再次启动宿主、不写状态、不扣额、不重复写 provider。这也避免把一个声称“activated”的 callback mock 当作写入证据。
关闭状态的共享完整提示与结果保持字节一致;八种完整 Codex 提示也都一致。启用分支因恢复完整内容增长约 410–1751 UTF-8 字节,依输入有无 guidance 而异;没有修改预算或宣称模型收益。初次私有验证的测试路径、可选包 PYTHONPATH 及错误重放入口问题分别留痕,修正后重新执行,不归为产品失败。
语义与 CI 对齐
沿用既有 typed participation、结果类型和记忆生命周期,没有新增共享词汇或 prose 分类规则。当前源码 premerge 的六项 direct 与十七项选中检查、Ruff 均通过;此处不查询、轮询或等待 CI。必需的 frontend contract 在独立基线与当前版本均 exit 7,同一条 registered Goal display-name 断言失败,测试文件未变,只有 source root 归一后的 stderr 完全相同。因此该失败归于既有基线,但其 required/CQR 合并限制仍保留,本评审没有豁免。
我的整体评价
当前整个 PR 是 justified_increment:完整修复一个可独立回滚的宿主 IO 切片,父级 M7.4 的剩余验收保留。long_horizon 判断 preserved,原 capture、绑定、验证、结算和精确重放规则保留;user_experience 判断 improved,既有启用操作终于能送达现有宿主,没有新增人工轮次。尚未验证真实模型采用与长期净收益。
实现复用现有 owner,并已用共用原文函数完成同域简化;没有必要为这次修复增加新的 provider 流程或通用 executor。对 815183ee93da6ae436385cdccfded0013179c0e3 未发现阻塞源码问题,结论 APPROVE;这是代码结论,既有前端质量限制、平台批准与合并权限仍独立。没有执行合并、安装或线上记忆写入。
English verdict: APPROVE. Reviewed 815183ee93da6ae436385cdccfded0013179c0e3 against immutable base b9389edc28cf5b787f387ef426d1bafd0c118cfb. The bounded shared-host IO repair preserves opt-in binding, disabled behavior and independently attested post-settlement ingestion. Native File/SQLite, original-journal replay and actual Ark SDK wire checks pass; live-model/provider adoption is unqualified. The unchanged required frontend/CQR hold remains, and this review grants no merge authority.
|
Reviewer: model_agent; gpt-6.1-sol; OpenAI; runtime_reported; reasoning_effort=max [P2] 为新接入的 DSH/generic-cli ingest 同步现有覆盖状态 针对 触发条件:当前 Goal/Agent 的新鲜绑定已核验开启 该 owner 明确表示“actual host lifecycle wiring”,其结果经 experiment、configuration、配置目录、status 和 Markdown renderer 对外读回。操作者因此会看到“未覆盖”,同一源码宿主却已经会在结算后尝试自动写入。这是本次实际接线与既有状态投影的冲突,不是关闭的 Agent 被越权启用,也不要求宣称安装态或真实 provider/模型已获资格。 独立证据:当前225项核心测试、27项 SDK 测试和11项生命周期测试通过;原生 DSH File/SQLite callback 用例以及额外2项原生 generic-cli File/SQLite 用例验证了独立验收、writeback、spend 先于观察者。与此同时,4份新鲜启用的原生绑定包都仍携带两个 最小修复:同步现有 English finding: P2 — synchronize lifecycle coverage with the newly wired non-Codex ingest callbacks. DSH/generic-cli now invoke the existing observer after validated durable settlement, while the production capability/status projection still reports |
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 conclusion (author-owned PR; GitHub blocks formal self-review)
此评审更正同一 exact head 的先前批准 5590667619。上一份评审遗漏了现有覆盖状态;新线索见 6300004413,本次已独立复现。保留旧记录和验证证据,不继承批准。
动机
已为指定 Agent 开启经验记忆的使用者,在 DSH 或 Ark 宿主继续任务时需要收到获准的参考经验,并把合格反思交回既有验证流程。
此前签名短包已经声明记忆参与,但共享宿主转换丢掉了召回正文和返回的反思,原生 Turn 又只给 Codex 接上结算观察器;本次补齐这三处接线。
原生宿主传输与结算的既有证据仍成立,但当前独立读回发现配置与状态把已接入的 DSH/generic-cli 自动写入继续标为未覆盖;这部分尚未完成。
本次资格限定宿主 IO 与结算接线;真实模型遵循、线上记忆服务、安装采用、完整成本和父级 M7.4 收敛仍未验收。
先同步现有覆盖状态并补真实调用后的读回断言;真实模型、线上 provider、安装采用和 M7.4 完整成本仍另行验收。
改动思路
复用既有 enablement resolver、签名边界、外层 validator、post-settlement observer 和 memory lifecycle;共享宿主只传递候选,不能自行决定写入。 不改动会留下“配置已开启但宿主看不到上下文/反思回不来”的实际落差;只补提示正文也不能接通原生结算后的观察器。当前方案在四个既有 IO 模块内修复整条路径,并把原 Codex 指导原文提为共用函数,没有新增开关、配置或写入 owner。
源码对照的流程为:已签名参与事实与新鲜绑定 → 共享宿主收到获准上下文 → 返回反思候选 → 外层校验、写回与扣额 → 既有可选记忆流程。普通 validator 通过只证明任务验证通过;缺少精确反思摘要和证据证明时,记忆流程仍等待、零写入。provider 失败继续 fail-open,不阻止原任务。已有 Agent 记忆设置即可使用该路径,既有配置和授权足够时没有新增人工准备或确认轮次。
具体改动
独立验收依据为改动前的 docs/reference/protocols/turn-envelope-v0.md,固定 revision b9389edc28cf5b787f387ef426d1bafd0c118cfb 的 Optional memory participation 与原生 capture 条款,并对照同版本 effect-interpreter RFC 的 M7.4。新改写的文档只记录修复,不能自行成为通过依据。
| 验收项 | 当前精确版本的处置 |
|---|---|
| MEM-participation | implemented:签名参与事实和当前 Goal/Agent 绑定共同控制召回与反思传输。24 个绑定组合及实际 CLI/SDK 输入覆盖失配。 |
| MEM-isolation | implemented:关闭、未配置、失效、仅召回、仅写回和 provider 不可用按各自分支处理;完整 Codex 提示保持一致。 |
| MEM-settlement | implemented:真实 DSH/File/SQLite 路径中,普通验证零记忆记录,独立证明后恰有一个精确读回记录;原 journal 重放无新增效果。 |
| M7.4-adoption | deferred:原有 M7.4 安装宿主与真实模型/provider 验收继续开放。 |
| M7.4-cost | deferred:原有完整 token、detail IO、延迟和结果质量验收继续开放;展示字节恢复不能当作效率收益。 |
| MEM-observable-coverage | not_met:既有 owner 声明投影 actual host lifecycle wiring,但两个新增接线宿主仍显示未覆盖。需同步原 owner 和真实调用后的读回断言。 |
[P2] 新回调与既有覆盖状态相互矛盾
新增分支 已对新鲜核验开启 ingest 的其他宿主传入结算后观察器;既有覆盖 owner 仍将 dsh_turn 与 generic_cli_turn 的 automatic_ingest 写成 uncovered。此前未接线时该状态正确;本 PR 接通后,同一信息经 experiment、configuration、配置目录、status 和 Markdown 原样展示,操作者会看到与实际接线相反的边界。
本次重新执行生产 coverage/configuration/experiment/Markdown 函数,先核对四个文件与 exact head 的 Git blob 全部相同;各读回均保留上述 uncovered 值。此前同一 exact head 的原生 DSH/File/SQLite 实际 lifecycle 证据已验证回调可以走到精确证明后的 provider IO;只有 provider IO 为合成实现。二者共同证明矛盾,不能靠组件彼此输出一致或全套传输绿测消除。这里没有新执行线上模型或 provider,也没有声称关闭 Agent 被启用。
最小修复是同步原 reward_memory_host_coverage(),并在现有原生回调用例中断言有效 coverage、configuration、status/Markdown;保留关闭状态、Agent scope 与未接入 Lark 的边界。无需新 capability、重复 writer 或额外 UI。MEM-observable-coverage 是这里对既有 callable 合同的映射标签,非新增 RFC 义务。
关键代码讲解
executor.reward_memory_prompt_instructions提取原 Codex 两段文字,仍调用原reward_memory_automation_enabled,没有复制配置或启用决策。召回指导还要求实际 guidance 存在。八个相同请求的整个 Codex 提示逐字节相等。host_candidate.extract_turn_authority先核对签名,再保留获准的 runtime recall 包及上述指导;仅 ingest 时清掉召回 context,复制映射不修改原请求。DSH 与 Ark 原来就共同经过这个转换,因此不需要各建一套记忆入口。host_candidate.build_result仅在 ingest 开启时把反思原样交还外层。它不截断后冒充有效,也不把非 material 结果变成可写证据;原大小与 material 限制、后续反思 JSON 和独立证明检查保留。execute_turn_run_once中的post_settlement_reward_memory保留既有生命周期,只给已验证 ingest 的其他宿主接上线;Codex 原关闭行为保留。两处既有测试模块扩展实际宿主、原生 File/SQLite 及证明路径;协议与中英 RFC 同步,未新增 UI 或控制面状态。
对主干的风险
下述运行时、SDK、基线对照和 premerge 数字均来自前一轮同一 exact head 的独立记录,本次已核对源版本、fixture 和证据 SHA 后复用,未把它们冒称为重新执行。本轮新增执行是上述生产投影与读回复现。
此前已在相同 exact head 独立执行的 216 个 Python 测试通过;19 个需要显式 native-operation 构建产物的可选 SDK 测试跳过,不把它们算通过。另单独执行 Ark SDK 0.8.0/MCP 1.30.0 的完整 30 项测试通过。实际 SDK HTTP MockTransport 上四种召回/写回组合保留正确输入和返回反思,四个签名篡改用例均在任何 provider 请求前拒绝;未调用线上模型或记忆服务。
同一当前测试输入在不可变基线运行时,16 个原生 DSH/File/SQLite 场景有六个召回/ingest 断言失败,当前版本 16 个全部通过。另四个真实原生 DSH 用例让实际 memory lifecycle 运行,仅替换 provider IO:普通验证在两个后端均零写入,独立精确证明后均写入并读回一个记录;原 journal 精确重放不再次启动宿主、不写状态、不扣额、不重复写 provider。这也避免把一个声称“activated”的 callback mock 当作写入证据。
关闭状态的共享完整提示与结果保持字节一致;八种完整 Codex 提示也都一致。启用分支因恢复完整内容增长约 410–1751 UTF-8 字节,依输入有无 guidance 而异;没有修改预算或宣称模型收益。初次私有验证的测试路径、可选包 PYTHONPATH 及错误重放入口问题分别留痕,修正后重新执行,不归为产品失败。
语义与 CI 对齐
沿用既有 typed participation、结果类型和记忆生命周期,没有新增共享词汇或 prose 分类规则。但现有 host_coverage 对“actual host lifecycle wiring”的义务已被本次新接线破坏,故 semantic_alignment=violated;需修复上述 owner 并重跑读回,不能只接受绿色传输测试。当前源码 premerge 的六项 direct 与十七项选中检查、Ruff 均通过;此处不查询、轮询或等待 CI。必需的 frontend contract 在独立基线与当前版本均 exit 7,同一条 registered Goal display-name 断言失败,测试文件未变,只有 source root 归一后的 stderr 完全相同。因此该失败归于既有基线,但其 required/CQR 合并限制仍保留,本评审没有豁免。
我的整体评价
当前整个 PR 是 justified_increment:完整修复一个可独立回滚的宿主 IO 切片,父级 M7.4 的剩余验收保留。long_horizon 判断 preserved,原 capture、绑定、验证、结算和精确重放规则保留;user_experience 判断 regression:传输恢复仍有价值,但覆盖状态误导了操作者;没有新增人工轮次并不能抵消错误读回。尚未验证真实模型采用与长期净收益。
实现复用现有 owner,并已用共用原文函数完成同域简化;没有必要为这次修复增加新的 provider 流程或通用 executor。对 815183ee93da6ae436385cdccfded0013179c0e3 现有一个已复现的 P2,结论 REQUEST_CHANGES。前一份 APPROVE 未覆盖这一状态投影,我撤回其“无阻塞问题”的代码判断;历史记录保留。既有前端质量限制、平台批准与合并权限仍独立。没有执行合并、安装或线上记忆写入。
English verdict: REQUEST_CHANGES — 815183e. This fresh audit corrects review5590667619 after independently confirming the new non-Codex post-settlement callbacks contradict the existing host_coverage/configuration/status/Markdown projection, which still reports automatic_ingest=uncovered. Synchronize that existing owner and assert caller readback. Prior same-head native/SDK/attestation/replay evidence remains valid and is explicitly reused, with optional19 skips and required frontend/CQR holds preserved. No live model/provider call, merge or install occurred.
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; model=gpt-6.1-sol; provider=OpenAI; declaration_source=runtime_reported; reasoning_effort=max
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机
已为指定 Agent 开启经验记忆的使用者,在 DSH、Ark 或通用宿主继续原任务时,需要收到获准的参考经验,并把有证据的反思交回验证流程。
此前共享宿主转换会丢掉已获准的召回内容和返回反思,非 Codex 的原生 Turn 又没有接上结算后观察器;修复后,同一份已核验配置能沿原任务入口到达这些宿主。
本次真实 File/SQLite 调用验证了内容送达、独立证明后的精确记忆读回和无重复效果的重放;普通验证仍零记忆写入,配置与状态也如实显示实际接线。
本次交付宿主传输、既有结算接线和覆盖状态修复,不证明真实模型遵循、线上记忆服务、安装采用、任务收益或完整成本。
父级 M7.4 的安装态宿主采用、完整上下文成本与效果比较仍由原收敛工作验收,不能以这次源码修复替代。
改动思路
沿用既有参与判定、签名、外层验证和结算 owner;共享适配层只传递候选,覆盖表只描述源码接线,既不启用 Agent 也不授予新权限。
本次边界是共享宿主实际 IO、原生结算观察器及其既有消费者读回;保留原 M7.4 后续验收,不新增配置系统、状态 owner 或人工确认轮次。
完整链路仍是已核验的 Goal/Agent 参与事实、当前绑定、宿主输入、候选结果、独立任务验证、状态写回与扣额,最后才是可选记忆观察器。仅调配置不能找回适配层丢弃的内容;另写一套记忆写入流程则会重复权限与去重规则。这里把原 Codex 的两段提示提取一次,原样供共享宿主使用,实际变化集中在三个已有传输断点和一份覆盖清单。
| 输入 | 新版本可观察结果 |
|---|---|
| 未配置、关闭、绑定过期或未获准的同 Goal Agent | 不收到记忆正文、相关指令或结果要求;原任务照常继续 |
| 开启召回且确有内容 | 共享宿主收到同一份私有参考,仍无新行动权限 |
| 开启写回,但只有普通任务验证通过 | 原任务可结算,记忆等待独立证明,provider 写入为零 |
| 精确反思摘要与证据由独立验证器证明,随后完成结算 | 既有生命周期写入一条并精确读回;原 Turn 重放不重复效果 |
具体改动
以 docs/reference/protocols/turn-envelope-v0.md 在 b9389edc28cf5b787f387ef426d1bafd0c118cfb 的已接受内容为基准,评审整个 a731839a474b754d429b7fe59b57af46b39e21c2;原生 Git 合并基线为 6da69b1a4e67782f1d2049fc803b07dd40a1a506。文档本次新增说明没有被用来反向证明实现正确。额外逐项核对了前一轮 P2,没有继承先前的批准或拒绝结论。
- Optional memory participation:已实现。原签名事实与新鲜绑定共同控制召回/反思,关闭、失效、缺失与另一 Agent 均不能靠携带旧内容启用;外层类型、长度、材料结果和独立证明规则保留。
- Native Turn Host capture:已保留。原上下文捕获、任务验证、状态写回、扣额和精确重放仍由既有 owner 负责,宿主传输没有另建准入或结算器。
- reward_memory_host_coverage:已修复既有 P2。DSH 的召回及 DSH/generic-cli 的结算后写回状态,经实际调用后的 experiment、configuration、status 和 Markdown 读回一致且符合接线;Lark 仍未接入写回。这里描述源码能力,不等于 Agent 已开启或线上 provider 已验证。
- M7.4:继续 deferred。原
docs/architecture/rfcs/agent-loop-effect-interpreter-v0.md的宿主安装采用、完整上下文成本和有效任务成果验收保留,没有把当前接线修复标作父级收敛完成。
关键代码讲解
reward_memory_prompt_instructions抽出原 Codex 两段文字,按既有操作级门禁生成;八组基线/新版本对照中,完整 Codex 请求和提示词逐字相同。共享宿主新增内容也保留参考非权威、不可用自己的摘要作证据、旧版反思仅供审计及精确独立证明等全部条件。extract_turn_authority先核对原签名和边界,再携带获准的运行时记忆。仅开启写回时正文为空;修改签名所覆盖的参与事实会在调用 provider 前被拒绝。build_result在获准写回时保留候选反思原值,交外层验证;不会截短错误对象以制造合法结果。关闭时忽略旧宿主多返回的字段,超长、错误类型或等待结果不能绕过原验证。execute_turn_run_once让新鲜核验开启写回的其他宿主选中同一个结算后观察器。独立证明、原状态写回和扣额顺序未变;本次直接运行真实 DSH/generic 子进程和 File/SQLite,非只用回调替身作证明。reward_memory_host_coverage修正三个覆盖值并明确其来源。其余改动是两处原生测试和三份协议/双语 RFC 说明:合计十个文件,生产代码增加40行、删除15行,没有新服务、配置 owner 或共享状态格式。
现有产品入口仍是能力中心的“记忆与资料/经验学习”和指定 Agent 的配置、验证与读回;已检查它的实际编辑器及作用范围处理。当前修复服务原任务执行,不要求用户重新填写已有 Goal、Agent、配置或增加确认。该界面没有可视变化,本次没有借截图宣称其安装采用已经合格。
对主干的风险
最强回归风险是关掉记忆仍收到指令,或传输修好了但没有真正选中原生观察器,再或者记忆在独立证明之前写入。当前211项宿主/Turn 测试、74项既有记忆生命周期测试、30项 Ark 适配器测试通过;其中48组真实宿主/后端/模式调用还核对了所有现有覆盖消费者。本次另外运行八组完整基线/新版本提示对照、五项实际解析绑定的同 Goal/新 Agent/越界/恢复控制,以及八个独立的 DSH/generic、File/SQLite、普通/精确证明的生命周期案例。后者只有证明组写入一条并精确读回,所有原 Turn 重放都没有新增宿主、状态、扣额或 provider 效果。
Ark 使用真实 AsyncArk SDK 与 MockTransport 验证四种开关组合和四次签名破坏控制,网络和宿主回答为合成,未调用线上模型;File/SQLite 的准入、捕获、独立验证、结算和记忆生命周期均是生产代码。来源修复并不能证明模型会善用经验,也不能证明云端 provider 的线上表现。已有观察器收据保留历史 codex_cli_turn_post_settlement 标识,它不是当前实际模型或宿主来源的证明,不能拿该标签做主体归因。
语义与 CI 对齐
当前标准预合并的六项直接检查、17项 catalog/risk/public-boundary 检查及 RFC 双语门通过;本次不读取远端 CI。必需的前端契约检查仍在未改动的显示名称断言失败:基线与当前完整错误只归一化源码根路径后逐字一致,相关测试和产品文件也相同。全量类型检查的七项 TS18047 失败保留本轮基线证据;本 PR 没有任何 TypeScript、编译配置或依赖输入变化,因此明确复用该失败归因,未冒称在当前提交重新跑出通过。它们继续是仓库严格质量门的限制,不降为 optional,也不要求当前 PR 顺便改动无关代码。
通用控制面没有新增领域专用义务或 prose 判定;沿用既有参与和结果词汇。关闭状态的运行时任务、提示与效果隔离,覆盖清单则有明确的预期差异:即使某 Agent 关闭,也应如实展示源码已连接的宿主,不能把该描述误读为自动启用。旧 provider、失效配置和错误证明仍由原 owner 处理,反思参考与机器强制验证没有混称。
我的整体评价
对 a731839a474b754d429b7fe59b57af46b39e21c2 的完整源码评审结论为 APPROVE。前轮“新回调已连接但覆盖仍显示 uncovered”的 P2,现由同一覆盖 owner 和真实原生消费者读回证明确已修复;历史评审与讨论保留,不以提交年代或绿色测试替代逐项核对。
长程维度为 preserved:原捕获、可恢复结算、一次扣额和反思去重仍成立,重复执行不会重复效果;用户体验维度为 improved:已有意图与作用范围沿原任务入口送达,不新增必答问题,状态也准确反映实际接线。沿用既有参与判定、签名、外层验证和结算 owner;共享适配层只传递候选,覆盖表只描述源码接线,既不启用 Agent 也不授予新权限。 本次边界是共享宿主实际 IO、原生结算观察器及其既有消费者读回;保留原 M7.4 后续验收,不新增配置系统、状态 owner 或人工确认轮次。
代码量与问题相称,共享提示是已完成的有限简化;没有足够理由引入额外框架或迁移权限决策。源码批准与严格质量、GitHub 平台批准、合并授权及安装验收分别成立;前端和全树类型失败仍红,未在此合并、升级或运行线上模型。完整 token/延迟/任务质量、安装态采用和 M7.4 后续资格保持未验收。
English verdict: APPROVE — a731839. The shared-host transport, native post-settlement selection and existing coverage consumers now agree. 211 current host/driver tests, 74 lifecycle tests and 30 adapter tests passed, plus eight real File/SQLite lifecycle/replay controls, complete prompt pairs and actual SDK mock-wire checks. The prior P2 is independently verified resolved. Pre-existing required frontend/typecheck failures retain a separate strict quality hold. No live-model/provider, merge, install or parent M7.4 acceptance is claimed.
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; model=GPT-6 family; provider=OpenAI; declaration_source=self_reported; reasoning_effort=effort_unavailable
Request changes conclusion (author-owned PR; GitHub blocks formal self-review)
REQUEST_CHANGES — P2:按本轮明确的产品方向,把能力业务接入收敛到共享生命周期;不要继续把原生 Turn 和宿主适配器作为记忆能力的接线清单。 这是新的设计修订要求。此前覆盖状态 P2 在当前版本已修复,不重新报告,也不把已有局部验证改写为失败。当前账号为 PR 作者,因此此记录为 COMMENTED 的请求修改结论,不是 GitHub 正式阻断式 review。
动机
已开启经验记忆的使用者,需要在不同 LoopX 执行路径中得到一致的召回与合格反思写回。
原来共享宿主会丢失已授权的记忆内容;当前补丁恢复了 DSH/通用宿主的传输和原生 Turn 回调。
本次要求的可观察结果是同一份能力配置经共享生命周期生效,宿主只适配输入输出,不再逐个入口识别记忆业务。
这里不要求新建记忆服务,也不以线上模型收益或整个 M7.4 完成为本 PR 前提。
改动思路
保留已经修好的传输、签名、验证和状态读回,调整接入位置即可。当前 PostSettlement 已是可复用边界,不能把它误说成没有公共机制;原提示原文也已提取为共用函数。但回调选择仍由原生 CLI 的记忆专用分支决定,通用候选转换还要显式识别召回和反思字段,尚未形成能力贡献由共享生命周期消费的路径。
要求本 PR 收敛能力注册、贡献传递和结算后分发,保留既有记忆写入 owner;各宿主仅做协议与 IO 适配。 这是当前修订边界,不是另建通用框架。TurnStartHookRegistration 可承载受限观察/上下文贡献;PostWritebackHookRegistration 明确 effect-free、写权限为空,不能直接塞入 provider 写入。写入仍须经过独立反思证明、可记账结算及现有 ingest owner。共享分发不自动授予能力,也不改变默认关闭。
具体改动
完整核对当前十文件 diff:五个生产模块、两个测试模块、协议及中英 RFC。基准规范是 Optional memory participation,spec_revision=b9389edc28cf5b787f387ef426d1bafd0c118cfb;本次新写的文档不能反向成为独立验收依据。
- Optional memory participation:当前局部路径保留签名与新鲜 Goal/Agent 绑定,运行测试覆盖关闭、失效、仅召回、仅写回和字段拒绝。不能从该结果推导所有产品路径已采用。
- Native Turn Host capture:本次没有要求改变原捕获、原 journal 身份或结算顺序;共享接入修订后仍需保留这些边界。
- 既有覆盖读回:当前 DSH/generic-cli 正确显示已接线;Lark 的未接入状态仍如实保留。此前 uncovered 的 P2 已解决。
- M7.4 的安装采用、完整成本和模型效果仍未验收;它们不被伪装成本轮新增缺陷。
关键代码讲解
execute_turn_run_once根据 Codex 宿主或记忆 ingest 开关选择专用回调。P2 触发点是能力需要扩展至另一条执行入口时,还必须检查该入口是否再次接了这个分支;当前测试全绿也不能消除这种维护依赖。最小修订是由共享注册/分发层选择既有 observer,CLI 只消费分发结果。extract_turn_authority和build_result目前直接处理记忆专用字段。保留其签名和边界验证,改为传递获准的能力贡献与候选结果;不要复制启用策略或反思 validator。reward_memory_prompt_instructions复用原提示条款是有效简化,应保留其参考非权威、精确独立证明及失败隔离条件。reward_memory_host_coverage的修复也应保留,不退回旧状态。
对主干的风险
本轮在精确 head 独立运行 tests/control_plane/test_reward_memory_host_isolation.py,91 passed,包括实际 File/SQLite CLI、三个宿主、关闭与失效配置、召回/写回组合和配置/status/Markdown 读回;网络 provider 使用合成 fixture。它证明当前切片的行为,不能证明共享注册、安装态 heartbeat/App/Lark 接入或真实服务表现。本轮没有重跑此前全部 SDK、wheel、完整生命周期和 baseline/head 提示对照,相关历史评审记录保留,未作为本轮新执行证据。
修订应增加同一配置跨相关真实入口的对照:默认关闭、仅 recall、仅 ingest、失效绑定、同 Goal 另一 Agent、provider 失败、Stop 与重放;核验实际上下文、结果、结算与 provider 最终效果。普通 validator 成功仍应零记忆写入;合法独立证明之后才允许一次写入。额外注册有一次开发维护成本,provider 调用、token 和延迟不会因用了 hook 自动消失,完整净收益仍需测量。
语义与 CI 对齐
现有参与、反思证明和结算词汇应复用。本轮要求迁移接入点,不宣称旧协议已经要求所有宿主同批完工。当前远程检查有失败/待完成项,仅作为未归因诊断,不把它们当作本轮设计发现的证据,也未等待 CI 或豁免必要检查。
我的整体评价
按本轮共享生命周期的交付要求,当前版本仍需修改;architecture_assessment=simplify_now。最小修订是复用既有 hook/结算分发和记忆 owner,移走命令及宿主中的业务接线责任,同时保留当前已验证的修复。
长程与用户体验的全路径一致性仍为 not_yet_proven:当前原生路径可以工作,但另一执行路径不能只凭同一个开关推定已接入。该判断是本轮明确方向下的设计验收,不声称已经观察到越权或重复写入事故。修改后运行本模块及 tests/test_loopx_turn_driver.py、相关真实入口与一次写入/重放控制,再审新 head。结论不授予合并或安装权限。
English verdict: REQUEST_CHANGES — a731839. The new requested boundary is shared capability lifecycle integration, rather than memory-specific dispatch in the native CLI and generic host conversion. Reuse the existing registration and post-settlement owners; keep effect-free hooks effect-free and preserve opt-in binding, independent attestation and exactly-once ingestion.91 current isolation/real-CLI cases pass. The prior coverage P2 is resolved; cross-entrypoint adoption and full regression qualification remain unverified.
|
This pull request has merge conflicts with Choose the remote for the base repository, not an out-of-date fork. git fetch upstream
git rebase upstream/main
# Resolve each conflict, git add the resolved files, then git rebase --continue.
git push --force-with-lease origin HEADFor a same-repository clone whose Keep the DCO |
…y-context-20261020 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com> # Conflicts: # loopx/control_plane/turn_driver/host_candidate.py
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>
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.
Reviewer: model_agent; model=gpt-6.1-sol; provider=OpenAI; declaration_source=runtime_reported; reasoning_effort=max
Request changes conclusion (author-owned PR; GitHub blocks formal self-review)
对 2111d897dc5e6d036039f684ecf4d5b1f168573e 请求修改:一条 P2,旧日志恢复丢失已独立验证的反思字段。最新 head 的同名模块对与 status 输出问题已通过独立检查,不作为当前 blocker。旧版本4199的草稿审阅未发布;本结论重新核对了全部当前 PR 与最后两次作者修复。
动机
已启用经验记忆、使用 Codex CLI、DSH 或 generic-cli 执行持续任务的使用者会遇到这条路径。
例如一个任务先读取过去经验,完成工作并通过独立验证,再将本次经验保存供后续使用。旧实现的提示和结果字段主要绑定 Codex;本次让三个原生宿主使用同一注册与结算入口,但升级后恢复旧执行日志时会丢失已经验证的反思内容。
已验证的改善是三个原生入口可以传递注册的上下文,并在原有工作写回和额度结算后调用原记忆 owner;已复现的缺陷是旧日志恢复会留下验证摘要,却删除它所验证的反思字段。
这次没有开启实际账号的记忆开关,没有执行模型或外部记忆写入,也不验收安装态 App/Lark 的完整采用、模型收益或全成本。
当前版本仍须保留旧日志的已验证结果;安装态、多宿主实际采用及长期效果继续属于既有 M7.4 验收。
改动思路
能力层持有记忆业务规则,控制平面校验通用贡献与结算时序,Python IO 已收回既有 hook owner,归属方向与有界成本合理;旧日志结果读取兼容性仍须在这个改动内保留。
本 PR 的当前边界应是三个原生 CLI 宿主共用上下文与结算生命周期,同时保持关闭路径、旧日志恢复和原 owner 的独立证明;不以此声明整个 M7.4 或真实记忆收益完成。
不修改会继续保留 Codex 专属分支;只改 coverage 文字不能让其它原生宿主获得上下文。能力层提供生产者、通用 hook owner 传输、TS owner 校验、宿主只处理协议格式,方向有实际调用者。原有 PostWriteback 保持无业务副作用,provider IO 仍在业务结算之后进入原 PostSettlement owner,避免把一个通用通知阶段变成另一套业务效果权威。
最新 b62be02 将五个 Python IO 函数移入既有 capability_hooks.py,删除平行模块。我独立比对 AST,除 _source 私有函数名改为 _turn_context_source 外五个函数等价;当前43/43检查也通过。2111只冻结一个现有测试中派生 Todo 读回的观察时钟,完整 Todo 相等、等待/恢复及一次工作/额度断言保留,未修改产品时钟。这次移动解决了结构成本;新增时钟固定并未消除本轮仍复现的派生时间戳波动,不能据此推断缓存结果升级兼容。
最小剩余修复是在原缓存读取路径保留已准入反思与独立证明,继续使用原 ingest 去重 owner;不能通过重启 Host、重新 recall 或重复工作/额度补救。用户的意图与原授权已在日志里,不应增加重新配置、重填内容或再确认一轮。
| 触发状态 | 不可变基线 | 当前版本 |
|---|---|---|
| 未配置、关闭、其它 Agent/Goal、失效绑定 | 无记忆上下文/反思字段 | 完整请求、提示、schema 和共享投影一致 |
| 正确启用的三个原生宿主 | 主要由 Codex 特定路径承载 | 共用注册与结算,独立原生测试通过 |
| 当前版本自产日志在 provider 丢回复后恢复 | 原 owner 持有去重 | 新日志用例通过,终态字节不改写、不重复效果 |
| 升级前已验证但尚未结算的原日志恢复 | 保留反思与证明摘要 | 反思被删除,证明摘要仍在,Turn 可 committed |
这是源码和执行对照表;没有把数据传输等同于模型采用或学习收益。
具体改动
独立规范为改动前 docs/reference/protocols/turn-envelope-v0.md,固定 revision 21322fb1f1171c0bf7fdb9cb1112b66a1dd0dcf8,并对照同一基线的 docs/architecture/rfcs/agent-loop-effect-interpreter-v0.md 和本 PR 既有完整审阅线程。两份规范在初读973914与当前21322 merge base 的 blob 完全相同;改动后的协议文字不能自证兼容。以下是既有条款的评审映射标签,不是新义务。
| 条款映射 | 当前处置 |
|---|---|
| TE-native-capture:恢复原决策、日志与缓存结果,不另启 Host | not_met:没有另启 Host,但原已验证反思字段被删除。 |
| TE-signed-boundary:保留范围、审批、能力、守卫和停止事实,提示不授予权限 | implemented:原边界抽取保留,TS 限定保留键、大小、来源与读回绑定;hash 是一致性约束,不是凭证。 |
| TE-memory-participation:匹配已验证 Goal/Agent 与操作开关,失效/关闭不激活 | implemented:十种完整 base/head 传输对照与 native负例通过,发现/可用本身不激活。 |
| TE-independent-ingest:独立验收、写回、额度后进入原 ingest owner | implemented:新自产日志的原生 File/SQLite 路径、独立 digest、原 owner 与丢回复去重通过;外部 IO 为 fixture。 |
| M7.4-installed-benefit:安装态跨宿主采用、真实效果与完整成本另验收 | deferred:既有 RFC 继续持有,该范围未被当前模块或测试数量关闭。 |
attach_turn_context 在新 turn/quota 入口组合能力注册。记忆开关、提示、反思描述与 provider 规则位于 reward_memory/turn_hooks.py。既有 capability_hooks Python dispatcher 在 provider IO 前拒绝无效或重叠注册;TS validateTurnContextContribution 校验最多8个字段、保留核心键、字段/指令/结果大小,以及签名源与读回绑定;project_turn_context 使用前复核,失效的可选贡献 fail open。Codex 与共享 candidate 传递同一贡献,不从另一个 Agent 的可用配置获得权限。
configured_post_settlement 将三种原生宿主交给原配置 ingest owner。每个 hook 保存完成/不确定回执;完成项跳过,不确定 IO 向原 owner 求证,unknown 不伪装成零写入。recover_post_settlement 对已 committed 日志只投影当前 owner 回执,保持原终态字节,不调用工作写回、额度或调度效果。前次 DSH coverage 文案问题在当前源码连接与 native读回中已解决;a731提出的共享能力生命周期也由整个当前 PR 重审,没有继承旧 approval。
[P2] 保留旧日志已准入的反思字段
位置:loopx/control_plane/turn_driver/executor.py:366。新的 optional_fields 只来自 project_turn_context(plan) 的注册贡献。原 --resume-turn-key 分支加载原 plan,不会重新运行 attach_turn_context;升级前合法 plan 只有已验证的 recall/参与事实,没有新贡献 annotation。缓存结果重走 validate_loopx_turn_host_result(from_journal=True) 时,历史反思字段虽仍可被接受,却不再进入 normalized result,随后写回 journal。
本轮分别在当前不可变基线21322与当前精确2111版本执行实际 journal loader、Turn driver 和 TS 恢复/结算 owner:先由基线生成含 eligible 反思与独立验证 digest 的日志,在独立验收完成、业务写回前注入进程中断,保留原 seed,再复制到两个隔离 runtime,以相同 absent prepared-effect 读回恢复。两边均 committed、零次 Host、各一次工作写回和额度结算;基线保留原反思和证明,当前版本的 journal/post-settlement 输入中反思为空,原 plan 和独立证明却完全相同。旧4199与973914的独立对照也曾复现相同结果,不是沿用那次结论来认证新 head。
这会使原 ingest owner 无法使用已独立验收的经验;工作 committed 不能证明学习结果恢复。测试的 validator 和工作/额度 IO 为合成 fixture,调用的是实际恢复和结算边界,没有外部 provider 或真实 Goal 写入。请保留原日志结果的有界兼容读取与独立证明绑定,避免激活新旧式请求;补一个旧 producer 保存、新 reader 恢复的回归,断言原字段、digest、身份、零 Host 和一次效果。当前自产新记忆日志用例仍不能覆盖升级输入。
对主干的风险
当前2111独立执行五个 Python 模块:370 passed、1 failed;新增 TS 模块 15 passed。236项本次改变的原生记忆路径全部通过,另135项 wait/settlement中134项通过、1项失败。涵盖三个原生 CLI × File/SQLite 的真实配置、宿主结果、独立验证、工作/额度结算及原 memory owner。模型和外部 provider IO 为隔离 fixture,不是实际账号、安装态或长期学习收益证明。十种同一 frozen plan 的完整生产请求/提示/schema/共享投影对照没有归一化或删字段;关闭、未配置、跨身份与失效绑定均保持基线值,启用共享宿主的变化是有意扩展。
当前标准 native premerge 的6项直接检查与19项选中检查全部通过,没有失败、skip或汇总警告,包含原 semantic43/43、CLI输出、双语RFC、调度路径、维护上限与公共边界。旧4199的44/43失败由实际删除平行模块解决,未改变门槛;其默认较新main比较38/32和独立旧merge-base96/96通过仍作为历史保留,当前集成基线上的原输出检查已重新通过。
另独立运行源 CI 的根目录模块预算,当前基线与当前head均1 failed、5 passed,147/145,相同 workflow_skill_install.py、worker_bridge.py。本 PR 不增根模块,这是已有的独立资格限制,不把它当作本 PR 回归,也不要求修改无关代码。作者记录的 CQR/root hold 保留;本轮选中premerge通过不能替代未通过的其它必需资格。
本轮唯一 Python 失败为 test_committed_progress_before_wait_recovers_only_original_spend[monitor_changed-False-file] 最后的完整 Todo 相等断言。通过只读 pytest 观察器捕获原测试局部值,当前基线和当前 head 都只在 /0/resume_condition/evaluated_at 跨一秒不同,其它字段及此前一次结算/错误身份/恢复断言均通过。当前单项一过一败,基线同项也失败,说明作者新增的 Python 时钟固定未消除该既有波动;本轮保留370/1与完整小样本,不把偶然重跑通过当修复,也不将此当作本 PR 新回归。
作者报告的5182项全量TS、84项隔离wheel和小样本成本数据已读,但本轮没有独立重跑,不能冒充自己的证据;历史NoKV90超时的原因仍未知。本文使用当前源码、当前本地原生检查和跨版本对照判断,不宣称历史偶发原因被修复,也不把协议 token、hash、provider可读或receipt数量当作实际收益。没有查询/等待远端CI,没有执行模型、真实provider写入、安装、审批或合并。
关闭时省略原无条件 disabled optional callback,因此少一份可选 post-settlement 诊断回执;作者已披露这个非业务投影差异,既有 app/CLI renderer 未发现消费该回执。工作、额度、调度与权限 owner 保留。现有 dashboard 记忆用途、按 Agent 配置与 unavailable/stale helper 已检查,无组件或新设置变化;无需以截图代替未发生的可视变更,安装态 App/Lark 仍按既有验收推进。
我的整体评价
REQUEST_CHANGES,精确版本 2111d897dc5e6d036039f684ecf4d5b1f168573e;当前是有价值的 bounded increment,剩余一条已复现的缓存恢复缺陷。能力层持有记忆业务规则,控制平面校验通用贡献与结算时序,Python IO 已收回既有 hook owner,归属方向与有界成本合理;旧日志结果读取兼容性仍须在这个改动内保留。
本 PR 的当前边界应是三个原生 CLI 宿主共用上下文与结算生命周期,同时保持关闭路径、旧日志恢复和原 owner 的独立证明;不以此声明整个 M7.4 或真实记忆收益完成。
共享 native 路径及能力 owner 有真实调用和负例证据,最新收回 IO 也已独立验证。范围不必膨胀到整个 M7.4、额外用户交互或新的恢复框架;应在这一 PR 内保留旧日志已验证结果。修复后再核对真实跨版本恢复和当前所需检查。关闭路径与原效果 authority 继续保留,实际安装采用、模型效果、完整成本及合并授权分别判断。
English verdict: REQUEST_CHANGES — 2111d897dc5e6d036039f684ecf4d5b1f168573e against immutable merge base 21322fb1f1171c0bf7fdb9cb1112b66a1dd0dcf8. One P2: legacy cached journals lose the admitted reflection when result descriptors come only from new contributions; the original independent attestation remains and the Turn can commit. The actual old-producer/new-reader comparison reproduces this at the current revisions with no Host relaunch or duplicate work/debit. Current Python run is 370 passed/1 failed;15 TS and6 direct/19 selected premerge checks pass. The sole wait failure is independently reproduced on current base/head with only the derived evaluated_at timestamp differing, and remains a separate pre-existing instability. The twin43/43 and status-output repairs are independently confirmed and are no longer blockers. Root147/145 fails identically on base/head and remains a separate qualification hold. Installed adoption, real provider/model benefit, complete cost and merge authority remain unqualified.
…rn-host-memory-context-20261020 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.
Reviewer: model_agent; model=gpt-6.1-sol; provider=OpenAI; declaration_source=runtime_reported; reasoning_effort=max
Request changes conclusion (author-owned PR; GitHub blocks formal self-review)
重新审查当前完整提交 9bfc838374db20452f2b10aeb24bf477fca93322,基线 5bf58c1ca3d21919b15c662bc705c3e069bfb496。一条 P2:旧执行日志恢复时丢失已经独立验证的反思。本结论不继承旧 head 的批准或失败;当前版本另做跨版本恢复、完整传输对照和原生检查。
动机
已启用经验记忆、使用 Codex CLI、DSH 或 generic-cli 执行持续任务的使用者会遇到这条路径。
例如一个任务先读取过去经验,完成工作并通过独立验证,再将本次经验保存供后续使用。旧实现的提示和结果字段主要绑定 Codex;本次让三个原生宿主使用同一注册与结算入口,但升级后恢复旧执行日志时会丢失已经验证的反思内容。
已验证的改善是三个原生入口可以传递注册的上下文,并在原有工作写回和额度结算后调用原记忆 owner;已复现的缺陷是旧日志恢复会留下验证摘要,却删除它所验证的反思字段。
这次没有开启实际账号的记忆开关,没有执行模型或外部记忆写入,也不验收安装态 App/Lark 的完整采用、模型收益或全成本。
当前版本仍须保留旧日志的已验证结果;安装态、多宿主实际采用及长期效果继续属于既有 M7.4 验收。
改动思路
能力层持有记忆业务规则,控制平面校验通用贡献与结算时序,Python IO 已收回既有 hook owner,归属方向与有界成本合理;旧日志结果读取兼容性仍须在这个改动内保留。
本 PR 的当前边界应是三个原生 CLI 宿主共用上下文与结算生命周期,同时保持关闭路径、旧日志恢复和原 owner 的独立证明;不以此声明整个 M7.4 或真实记忆收益完成。
原生 CLI 在选择工作后组合能力注册,TS owner 校验来源、保留字段和大小,Python 既有 hook dispatcher 承载 IO。宿主只负责协议格式;原工作写回和额度结算之后,再进入可选的原 memory ingest owner。PostWriteback 保持无业务效果,可选 provider 失败不获得工作、额度或调度权威。
相比不修改,三个宿主共用路径能去掉 Codex 特定分支;只改 coverage 文字不能交付该行为。五个 IO 函数已移入既有 owner、平行模块已删除,之前的43/43语义上限与输出检查继续通过。现在需要的是原缓存读取路径的有限兼容修复,无需再添加恢复框架、用户配置或确认步骤。
| 情况 | 不可变基线 | 当前提交 |
|---|---|---|
| 关闭、未配置、跨 Goal/Agent、绑定失效 | 不出现记忆内容或反思字段 | 完整请求、提示、schema、共享投影相等 |
| 新创建且正确启用的原生 Turn | 主要为 Codex 特定入口 | 共用注册与结算,当前原生用例通过 |
| 原版本已验收、尚未结算的缓存日志 | 保留反思及其独立证明 | 反思丢失,证明摘要保留,Turn仍可提交 |
此表是源码和执行对照,不代表模型已采用经验或取得收益。
具体改动
独立规范:docs/reference/protocols/turn-envelope-v0.md,spec_revision 5bf58c1ca3d21919b15c662bc705c3e069bfb496,并对照同基线的 docs/architecture/rfcs/agent-loop-effect-interpreter-v0.md。已核对它们与此前已读21322基线的 blob 完全相同;本 PR 新增的协议文字不作为自证依据。
| 既有条款映射 | 当前处置 |
|---|---|
| TE-native-capture | not_met:原日志、身份和无新 Host 保留,但已准入的反思内容被丢弃。 |
| TE-signed-boundary | implemented:原签名、范围、能力、守卫及停止事实保留,通用贡献不增加权限。 |
| TE-memory-participation | implemented:同一原始 plan 的十种对照及原生负例验证匹配开关、身份和绑定。 |
| TE-independent-ingest | implemented:新日志路径沿独立验收、写回、额度进入原 ingest 去重 owner;外部 IO 是 fixture。 |
| M7.4-installed-benefit | deferred:沿既有 RFC 验收安装采用、模型收益和完整成本,本 PR 不关闭父项。 |
关键代码讲解
memory_settlement_registration:能力持有参与条件、反思要求和原 ingest 调用,通用生命周期不解释记忆业务规则。validateTurnContextContribution:校验贡献的有界字段、指令、来源和读回绑定;失效的可选贡献不能提供授权。validate_loopx_turn_host_result:新鲜和缓存结果共用规范化;第366行只从新贡献提取 optional descriptors,是下面旧缓存丢失的触发点。registered_post_settlement与recover_post_settlement:保留各 hook 的已完成或不确定回执,恢复向原 owner 求证,不重做工作和额度,也不改写原 committed 日志。
当前完整差异24文件、+1246/-193;从上次2111到9bfc,23份 PR 文件 blob 未变,唯一变化是 bootstrap 测试的旧预算断言4800改为5400。新增主干集成仅四份已独立审查的内容交付文档/目录文件。原 memory 调用者、语义 owner、等待/结算与规范均逐项失效检查,复用证据保留原 revision。
对主干的风险
[P2] 保留旧日志已准入的反思字段。 沿用原问题线程,本次在新提交重新复现,避免另开重复线程。 位置 loopx/control_plane/turn_driver/executor.py:366。--resume-turn-key 加载的是原 plan,不重新运行 attach;升级前合法 plan 没有新贡献 annotation。缓存结果进入 validate_loopx_turn_host_result(from_journal=True) 时 optional_fields 为空;旧反思虽可被接受,却从 normalized result 被删除,随后进入持久日志和 post-settlement 输入。
我在当前不可变基线5bf58产生含 eligible 反思及独立验证 digest 的实际日志,在独立验收后、业务写回前注入中断,再复制同一 seed,分别由5bf58和9bfc的原 journal loader、Turn driver及TS结算 owner 恢复。两边均 committed,零 Host 调用、各一次业务写回和额度;原 plan 与原独立证明相同。基线保留反思,当前 journal和callback中反思为空、digest仍在。这证明的是旧 producer/new reader 的缺陷;新版本自己创建的绿色恢复日志不能覆盖该输入。
最小修复:只为原已准入的缓存结果保留有界字段及其独立证明绑定,继续使用原 ingest owner;不重新激活新鲜旧式请求,不重启 Host、recall 或重复工作/额度。补跨版本回归,断言原字段、digest、身份、零 Host、一次效果。fixture 的 validator和效果IO为合成观察器,实际调用生产恢复边界,未触碰活动Goal或外部provider。
当前独立验证:324项Python通过,包含236项原生memory及88项bootstrap;15项TS通过;6项直接与19项选中premerge全部通过,零失败、skip或汇总警告。十种冻结 plan 的完整请求/提示/schema/共享投影对照没有删字段或归一化;五种关闭/错配状态完全相等,启用共享宿主的差异是有意扩展。File/SQLite authority与原业务owner真实,模型和外部记忆IO为协议fixture。
预算断言修复也有独立基线证据:5bf58原测试实际返回5400,却断言4800;9bfc相关88项通过,未改变产品上限或指令。根模块检查则在当前基线与当前head均 1 failed、5 passed,147/145,同一模块集合与失败详情;本 PR 没有新增根模块。该独立资格限制和既有#7000承接保留,不归为本 PR 引入,也不豁免门槛。
上次2111的370通过/1失败仅作历史证据保留:当前基线和旧head的 wait 读回均只在派生 evaluated_at 跨秒不同。相关源码未变,本次没有重跑该整套或声称修复。作者报告84项wheel、5182项TS和成本观测已读,不冒充本轮独立执行;其旧head设置按钮超时原因仍未知。未查询、等待远端CI,未进行安装、模型执行、provider写入、审批或合并。
语义与 CI 对齐
本次复用原能力/Turn词汇,并新增能力内部通用贡献契约;业务规则仍由能力持有,提示是指导,不能创建额外义务。当前语义43/43和输出检查通过,旧模块重复问题已解除。现存P2是已发布缓存结果的兼容义务,与根模块资格分别处理;不降低任何限制来换通过。
我的整体评价
REQUEST_CHANGES,精确提交 9bfc838374db20452f2b10aeb24bf477fca93322。这是有用的 justified_increment,但 long_horizon=regression、user_experience=regression:持续任务在升级恢复时丢失已验收的经验,用户不能从 committed 状态得知内容丢失。无需重新配置、重填或增加确认;应修复原缓存 reader。
能力层持有记忆业务规则,控制平面校验通用贡献与结算时序,Python IO 已收回既有 hook owner,归属方向与有界成本合理;旧日志结果读取兼容性仍须在这个改动内保留。
本 PR 的当前边界应是三个原生 CLI 宿主共用上下文与结算生命周期,同时保持关闭路径、旧日志恢复和原 owner 的独立证明;不以此声明整个 M7.4 或真实记忆收益完成。
当前三宿主原生路径、关闭隔离与 owner 归属有独立证据,结构修复保留;原日志内容恢复仍缺失。修复后重验实际旧 producer/new reader 与必需检查。安装态采用、模型效果、完整成本、资格与合并授权继续分别判断,不由通过的测试数或提交状态替代。
English verdict: REQUEST_CHANGES — 9bfc838374db20452f2b10aeb24bf477fca93322 against 5bf58c1ca3d21919b15c662bc705c3e069bfb496. One reproduced P2: cached recovery of a valid old-producer journal drops its independently validated reflection while retaining the original attestation and committing once, without a Host relaunch. Preserve bounded legacy-result decoding and its original proof; add a cross-version regression. Current324Python,15TS and6direct/19selected native premerge checks pass. Root147/145 fails identically at current base/head and remains a separate qualification hold. Prior wait instability, author wheel/cost results, installed adoption and real model benefit retain their source/qualification limits.
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.
Reviewer: model_agent; model=gpt-6.1-sol; provider=OpenAI; declaration_source=runtime_reported; reasoning_effort=max
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
对完整 PR 4de2e5bb299b38d161910a85c4ed24e55b38f41d 的代码结论为 APPROVE。旧日志丢失反思的 P2 已用同一旧生产者输入,在当前源码和隔离安装包分别验证修复;原根模块预算和现有质量资格限制仍保留。
动机
已启用经验记忆、使用 Codex CLI、DSH 或 generic-cli 执行持续任务的使用者会遇到这条路径。 例如一个回合完成工作并通过独立验证,程序在写回前中断;升级后继续原执行日志,应保留已验证的反思和原计划,再完成一次结算。此前注册式读取器会删除旧日志的反思;当前版本恢复该内容,同时不重新调用 Host 或 validator。
独立验证已确认:同一旧生产者日志在源码和隔离安装包中都保留完整结果、原独立证明和原计划,工作写回及扣额各一次,终态重放保持原字节。新 Host 仍通过注册上下文接线,关闭及错身份路径保持隔离。 这次没有新增记忆启用操作或执行真实模型、线上记忆写入;安装态 App/Lark 采用、真实模型收益与完整成本仍按既有工作验收。 原根模块预算和已有质量资格限制仍保留;安装态、多宿主实际采用及模型/完整成本证据继续属于既有 M7.4 验收。
这解决的是已有持续任务在升级与恢复时保留经验材料,以及多个原生宿主重复接线的问题。保存反思不等于已证明经验被模型采用;当前有用增量是完整材料能交给原有独立证明与结算后的记忆 owner。已核对管理入口提供的经验建议,采用其中“先判断真实用户结果与恢复路径”的做法,并保留本次内部前置切片的明确边界。
本次先读不可变规范 docs/reference/protocols/turn-envelope-v0.md,规范修订 5bf58c1ca3d21919b15c662bc705c3e069bfb496,重点是 Native Turn Host capture、Execution boundary retention 和 Optional memory participation;同时对照 docs/architecture/rfcs/agent-loop-effect-interpreter-v0.md 的 M7.4 三项收敛验收。PR 内新增的规范文字作为待审修改,不作为自己的独立验收依据。
改动思路
能力层提供有界的可选上下文、提示和结果字段;既有 TypeScript owner 检查来源、身份及受保护字段;宿主消费同一贡献。独立 validator、工作写回和额度结算之后,原记忆 owner 再判断是否允许 ingest。Python 保留现有宿主和 provider IO,不另建执行器或状态 authority。
| 情形 | 原路径/前轮问题 | 当前精确 head |
|---|---|---|
| 新的已启用原生回合 | Codex 特定接线,共享宿主需要重复理解记忆字段 | 三个宿主消费同一注册贡献,原独证与结算 owner 保留 |
| 已验证旧日志恢复 | 9bfc 的新描述符查询会丢反思、留下独证 |
仅旧缓存沿原有 2,400 字符解码保留完整结果;不重启 Host 或 validator |
| 关闭、错 Goal/Agent 或失效绑定 | 不应出现记忆输入或新执行权限 | 完整请求、提示、schema 和共享投影与基线相同 |
| 已提交日志重放 | 应只读回原效果 | 两次实际重放均未重做业务效果,原日志字节不变 |
保留原先每个宿主的业务分支,不能满足共享生命周期要求;只修改覆盖文字也无法接通调用方。复用现有注册、TS 校验及结算后分发,是有真实调用者的较小方案。旧缓存兼容由真实保存的输入证明有必要,只保留这一有界 reader,避免复活所有旧的新请求形态。参与事实函数收回既有 core 投影 owner,AST 与移动前完全相同,能力组合和缓存解码复用它,不复制 provider 策略。
具体改动
完整差异为 24 文件、+1435/-195:13 个运行时路径、4 个公开文档、7 个测试或夹具路径。从上一轮 9bfc 到当前 head,7 个路径变化已逐项读取,另 17 个 blob 相同;没有继承旧批准。最新取得的主干为 f1825005778652e6b54b1643be1d3db16f251eb9,共享 handler 文件的重叠只有独立的 Explore 指标注册,未改记忆 owner;本次执行证据仍准确绑定本 PR head。
关键代码讲解
capabilities/turn_context.py:20的attach_turn_context与reward_memory/turn_hooks.py复用既有能力注册入口,接入原生 Turn、执行性 quota/heartbeat 和原有分阶段结算调用方。三个 CLI 适配器和 Codex/共享 Host 传递统一的贡献,provider 接线留在能力层。turn_driver/capability_context.ts:51的validateTurnContextContribution校验有界 context、instructions、result fields 与原签名/来源读回;Goal、Agent、authority 或贡献内容变化会丢弃该可选贡献。既有effect_runtime_handlers.ts注册调用,不允许贡献覆盖工作、权限或独立验证字段。turn_driver/executor.py:358的validate_loopx_turn_host_result仅在from_journal=True、原 plan 没有新 annotation 且原 ingest 参与事实有效时,保留旧reward_memory_reflection_json描述符。显式空/失效注册不降级到旧路径;新 Host 仍要求注册上下文,字段长度、类型及 material-result 限制保留。control_plane/reward_memory.py:9的reward_memory_automation_enabled是从能力层移回既有投影模块的同一纯函数。精确布尔值、匹配的 Goal/Agent 与 verified readback 仍是条件;源代码 AST 相同,没有新增配置启用或 provider 授权规则。reward_memory/turn_hooks.py:94的memory_settlement_registration复用原 configured ingest/sidecar owner。post_settlement.py:25的registered_post_settlement保留每个 hook 的收据和失败恢复;:157的recover_post_settlement返回当前 owner 的核对结果。post_writeback保持无副作用,工作、额度和调度仍归原宿主控制器。
规范映射如下,各项均对照上述不可变修订:
| 验收项 | 当前判断 |
|---|---|
TE-native-capture |
原旧生产者日志的完整结果、原计划与独证,在源码和 wheel 恢复后相等;不重新调用 Host/validator |
TE-signed-boundary |
原范围、身份、签名、保留字段及拒绝条件由既有 TS/宿主 owner 保留 |
TE-memory-participation |
关闭、错身份、失效来源及新 Host 不继承旧输入的控制通过 |
TE-independent-ingest |
原 validator/独证、工作写回/扣额和 configured ingest/sidecar 顺序保留 |
M7.4-installed-benefit |
继续由现有 M7.4 验收安装态采用、真实模型结果和完整成本,本 PR 不关闭它 |
当前独立执行 332 项原生/bootstrap Python +45 项原 ingest/quota/词汇 owner 检查、15 项 TS、完整 control-plane typecheck 均通过。标准原生 premerge 的 6 项直接、19 项选中检查 通过,零失败及聚合警告,包含双语 RFC、语义、体积、maintainability 和公开边界检查。原 bootstrap 断言修订沿既有模式预算,未增加产品预算或豁免。
对主干的风险
最强反例仍是“当前源码自建的日志通过,但真实旧生产者日志恢复失败”。本轮复用实际 5bf58c1ca3d21919b15c662bc705c3e069bfb496 producer 在独立验证后中断的同一原件;9bfc 丢字段的历史失败保留。当前源码及非 editable wheel 均保留整个 typed result、原 task validation 和原 plan,Host/validator 调用为零,工作写回和扣额各一次;两次终态重放没有新增效果或改写原字节。该兼容探针的业务/provider callbacks 为隔离夹具,未冒称实际线上记忆写入。
新鲜输入另用同一冻结计划核对十组模式与身份:当前全部对象与 9bfc 相同;五组关闭/不匹配的完整请求、schema、Codex/共享提示及 authority 对象与基线相等,未删除字段或归一化取得通过。当前原生测试覆盖三宿主、File/SQLite、绑定失效、长度/类型错误、独立证明及可选效果恢复。缺失或无效证明仍由原 ingest owner 拒绝,恢复出的内容本身不授写入权限。
隔离 wheel 的 13 个改动产品 Python/TS 文件与源码逐字节一致,实际加载 212 个产品模块,零源码逃逸;同一旧日志和新 Host 不激活旧 schema 的控制通过。Chat bundle 按该修订重新构建并通过校验,保留既有 Vite chunk 警告。该检查资格只覆盖明确执行的 package/SDK 路径,不代替安装态 App/Lark 或真实模型采用。
语义与 CI 对齐
关闭时普通工作的输入、schema、权限和效果保持;一个已披露的诊断变化是:没有启用 hook 时,省略原来无条件产生的 disabled 可选回调收据,core 结算不变。新注册结构、结果描述符和每 hook 收据是既有生命周期的有界扩展,记忆建议仍是私有、非权威的上下文;机器执行的是来源、形状、独立证明与结算约束,不把建议写成新的任务义务。
当前必需根模块检查仍是 1 败 5 过、147/145,同一基线已失败,模块集合与两个 offender 相同;本 PR 没有新增根模块。既有 #7000 承接修复,该失败没有被当作通过。公开作者记录的当前质量回执仍为 failed/invalid;较早 9bfc/2111 的 settings-browser 超时、wait 时钟波动及其他未归因观察保留原范围,当前 native/package 检查覆盖各自明确的路径,不冒称修复它们。按本次受管策略未查询、轮询或等待远端 CI。
没有 UI 组件、布局、导航或设置编辑器差异;既有 memory configuration/status 消费者仍被复用,Lark 未接入边界保留。源码接线、测试结果、一次收据或这个批准,都不能单独证明长期记忆有用或完整成本下降。
我的整体评价
这是 justified_increment。long_horizon=preserved:已有持续任务的已验证结果和恢复承诺保持,已提交重放不重复效果;user_experience=improved:三个原生入口共用现有意图与配置,旧日志恢复无需新的确认、复制、重新提交或重跑模型。实际模型、受众及长期效率收益继续未验收。
本 PR 的可验收边界是三个原生宿主共用能力上下文和结算生命周期,并保留原日志恢复、独立证明及关闭隔离;父级 M7.4 的其余验收继续开放。
复用既有 owner、删除宿主特定分支、收回重复 IO 以及 AST 等价参与事实归并,是已完成的同域简化;新增通用执行器或权限 owner 没有必要。旧覆盖投影、共享 hook 归属和缓存恢复三类历史意见已按当前源及独立证据重新核对。结论 APPROVE;原根预算、质量与平台限制及维护者合并授权仍是分别成立的条件。
English verdict: APPROVE — 4de2e5bb299b38d161910a85c4ed24e55b38f41d against immutable base 5bf58c1ca3d21919b15c662bc705c3e069bfb496. The whole native shared-lifecycle increment is justified, and the prior cached-reflection P2 is independently repaired with the same real old-producer journal on current source and a non-editable wheel. Complete original result/proof/plan, no Host or validator rerun, once-only work/debit and immutable terminal replay are verified.377Python,15TS,full typecheck and native premerge6+19 pass. The base-equivalent root147/145 and existing quality/qualification holds remain; installed adoption, live-model benefit and full costs are unqualified.
songoow
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; model=GPT-6; provider=OpenAI; declaration_source=self_reported
Review: REQUEST_CHANGES
审查版本:4de2e5bb299b38d161910a85c4ed24e55b38f41d,不可变对照基线:5bf58c1ca3d21919b15c662bc705c3e069bfb496。发现一个独立复现的 P2:合法召回结果在重复装入新的有界贡献后超过 64 KiB,连带丢弃已核验的参与事实、反思输出字段及结算后 ingest。普通 Turn 仍成功并消耗一个额度,因此这不是只有测试夹具能观察的异常。
动机
已开启经验记忆、用 Codex CLI、DSH 或 generic CLI 执行持续任务的使用者会遇到这项变化。例如一次任务产生已验证的反思,下一次回合应读取相关经验并在独立验证后保存新的经验;升级恢复时也应保留原结果与证据。本 PR 把三个原生宿主接入同一可选上下文和结算后回调;普通大小的输入与恢复路径已通过独立测试,但合法的较大召回结果会同时关闭召回和本来已启用的反思入库。
本次不把源码接线当作安装态 App/Lark、真实模型收益或长期完整成本的验收。安装态采用、模型是否实际采用经验以及完整成本仍属于既有 M7.4 验收。这里的反思是宿主输出的经验候选,仍需独立 validator 对精确内容及证据作证明,业务写回和额度结算完成后才交给原记忆 owner;统一生命周期不能把这个独立授权/验证关系变成可选召回内容大小的附带结果。
改动思路
新的能力组合从 turn.py 和 quota/heartbeat 入口调用 attach_turn_context;Python 负责实际 provider IO,TypeScript 校验贡献大小、保留字段与原 governing/source readback。Codex 和共享 DSH/generic 适配器消费通用投影,既有独立验证、业务写回、额度与 provider 去重 owner 保持不变。PostSettlement 是结算后的可选效果;无效果的 post_writeback 不能替代它。
注册、边界校验和宿主格式分工基本合理,当前缺陷应在记忆贡献的有界载体与参与事实归属处修复,无须新增 executor、权限 owner 或全局预算豁免。本 PR 的边界是三个原生宿主共享 memory context/settlement 并维持持久日志恢复;有效绑定及独立 ingest 不能被可选 recall 内容的体积失败抹除。
本次大小反例的路径如下,表中是同一合成输入通过真实原生 CLI 的观察,provider 与 Host 回复是隔离夹具,File/SQLite authority、配置校验、适配器、独立验证和结算均执行生产代码。
| 同一输入 | 基线 5bf58c1 | 当前 4de2e5b |
|---|---|---|
| recall owner 验收并返回的经验 | applied,4 条 | applied,4 条 |
| Host 实际收到的经验 | 4 条 | 0 条 |
| 已启用的反思输出 schema 字段 | 保留 | 丢失 |
| 结算后 callback / journal 反思 | 保留 | 均丢失 |
| CLI 与业务结算 | exit 0 / committed / 扣额一次 | exit 0 / committed / 扣额一次 |
具体改动
全量差异为 24 文件、+1435/-195:13 个产品路径、4 个文档、7 个测试/夹具路径。新增通用注册/分发和 TS decoder,替换原 Codex 专属接线,更新宿主覆盖状态、旧缓存解码与终态回调恢复;对应协议与中英文 RFC 同步说明了范围。新结构有实际原生调用者,旧 journal 兼容也有真实持久化对象需要保留,并非仅为潜在未来宿主设计。
关键代码讲解
memory_context_result,turn_hooks.py:37-60分别计算 recall/ingest 的参与事实,但把完整 recall 同时写进readback与context_fields。该重复是本次 P2 的直接入口;两份内容与绑定事实一起过同一个硬预算。dispatch_turn_context_hooks,capability_hooks.py:207-255先执行 producer,再调用 TS 校验,只有成功后才保留 readback。validateTurnContextContribution在capability_context.ts:54检查整个对象;拒绝后只留下context_hook_failed,原绑定事实也随之丢失。后续memory_settlement_registration:101-102因缺少该 readback 返回 None。validate_loopx_turn_host_result,executor.py:358-378为没有新 annotation 的旧缓存保留既有 2,400 字符反思 decoder,但仅允许from_journal且原参与事实有效的结果;显式空/失效贡献不降级,新 Host 不能靠旧 recall 对象激活 schema。原参与事实函数归回control_plane/reward_memory.py,没有复制 provider 配置决策。registered_post_settlement/recover_post_settlement,post_settlement.py:25,157保留逐 hook 回执、跳过已完成同伴,并把终态不确定效果交回原 provider owner 对账。恢复结果另以post_settlement_recovery返回;原业务 journal/receipt 不被回写,Host、validator、业务写回与额度不会因此重跑。
规范基准是 docs/reference/protocols/turn-envelope-v0.md,修订 5bf58c1ca3d21919b15c662bc705c3e069bfb496;本 PR 自己新增的协议文字没有被用作独立验收依据。按原有章节映射:Native Turn Host capture 的原捕获/恢复路线继续使用;Execution boundary retention 的既有 authority 保留,由 TS 保留字段拒绝和来源变化负例覆盖;Optional memory participation 要求 enabled ingest 保留反思字段及原独证/结算规则,本次大小输入没有满足该项。父 RFC 的 installed-host/model/cost 目标仍开放。
对主干的风险
[P2] 不要让召回体积上限连带关闭已启用的 ingest。 独立 fixture 通过生产 normalize_procedural_experience 和 recall owner 验收四条经验;每条经验 8,115 字节,各文本字段不超过 490 字符、列表不超过 5 项,处于既有 owner 的合法范围。新 memory_context_result 的重复载体为 83,380 字节,超过注册的 65,536 字节上限。TS 拒绝后,新路径不仅没有召回内容,也没有新的反思字段和 ingest callback。因为绑定事实也被丢弃,旧/自定义 Host 即便返回反思也会被按 disabled 路径忽略。
同一附加探针已在不可变基线和当前 head 的真实 turn run-once 上分别执行,File 与 SQLite 结果相同:基线收到四条经验、保留反思 schema/日志/回调;当前 head 丢失这四项,仍正常 committed 并扣额。探针的反思回复是 no_evidence,验证的是参与事实、字段和回调路径丢失,没有声称本次应写入一条 provider 记录。普通 provider 不可用时的降级应保留独立 ingest 的能力;本次失败发生在 provider 已成功、绑定仍有效时。新的失败细节只留在 plan 的 hook failure,不能据成功结算推断记忆参与有效。
最小修复建议:让有界的 verified binding/参与事实及独立 ingest 注册不依赖可丢弃的召回正文;同时消除两份完整 recall 的可推导重复,或由现有记忆 owner 定义明确的有界 projection/降级。保留现有硬预算,不能用整体加大上限掩盖耦合。回归测试应从真实启用配置出发,用合法大记录穿过 provider→native Host→独立 validator→settlement,断言 recall 降级不取消已启用的 reflection schema/ingest;再加普通小结果和关闭控制。
独立运行的现有 focused Python checks 是 132 passed,112 deselected,包含三个原生宿主×File/SQLite 的开关/失效绑定矩阵、缓存有界解码、结算后独证与 owner 丢回复恢复;turn_capability_context.test.ts 直接执行 15 passed。上述套件通过后,附加大小反例仍可复现,说明现有小 fixture 没有覆盖这个边界。没有把 PR 作者自报的 wheel、真实 PostgreSQL、旧 producer journal 实物重放当作本轮亲自执行。
语义与 CI 对齐
记忆建议仍是 advisory,不授予工作、quota 或其他 capability 权限;新增 source digest/保留字段校验是机器约束。已有布尔参与事实、原独立验证和回执语义被复用,局部注册及回执聚合没有引入第二份 scheduler/todo 权限。默认关闭与错 Goal/Agent 的当前原生测试通过;本次 P2 是已开启路径的未披露行为变化。
本轮初次 sandbox 运行遭本地 TypeScript runtime socket 权限拒绝;相同测试在具备本地运行权限的隔离环境随后全过,此项属于运行环境而非代码失败。本轮已读取当前 CI:kernel-static-checks 的 147/145 根模块预算,在同一 Python 环境对不可变 base/head 执行 python -m pytest -q tests/architecture/test_top_level_module_budget.py 均为 1 failed、5 passed;测试、预算 fixture 和被统计的 147 个模块名完全相同,因此不要求本 PR 修复这项既有问题。Release build 当前仍在 steward-group-trigger.mjs:39 等待设置按钮时超时;本轮没有对本 PR 的该浏览器失败完成独立基线归因。真实 PostgreSQL CI 为 success,这是读取的 CI 证据,不是本地重跑。required qualification 仍未通过。
三 PR 的本地组合验证中,#6957 与 #7023 在 codex_cli.py 和 executor.py 出现两处文本冲突;保留双方通用 memory result descriptor 和 progress_observation_json decoder 后,source、todoless、capability lifecycle 与 acceptance-context 四个套件共 57 passed、4 failed;四个失败均因 #6978 搬迁 witness 后的旧相等断言失败,已单独反馈给 #6978。这是本地组合树的相互作用检查,不能代替未来实际重基 head 的资格验证。source witness 在 envelope 构建阶段产生、context 随后绑定,已跑核心场景未发现相互覆盖。
我的整体评价
这是一个方向合理的 justified_increment:共享现有 owner 比继续复制三个宿主的 memory 判断更合适;旧持久日志兼容和 per-hook 重试都有明确消费者。当前整体结论仍为 REQUEST_CHANGES,依据是独立复现的 P2,既有批准与历史修复不能覆盖这个当前反例。
long_horizon=regression:一次合法召回结果达到该大小时,经验会从当前 Host 上下文缺失,并一并关闭本回合的反思输出字段及 ingest 回调;既有 durable 经验没有被删除。user_experience=regression:使用者已完成有效启用,业务仍显示成功却失去所启用的记忆链路。修复应限于同域参与事实和可选正文的耦合及其真实入口回归,不要求额外用户启用步骤、不扩展为新权限系统;installed adoption、live-model benefit 和 total cost 保留其原验收范围。
English verdict: REQUEST_CHANGES — 4de2e5bb299b38d161910a85c4ed24e55b38f41d. A P2 regression is reproduced on real File and SQLite native CLI paths against immutable base 5bf58c1ca3d21919b15c662bc705c3e069bfb496: four owner-valid recalled experiences exceed the new duplicated 64 KiB contribution budget, dropping recall, the enabled reflection schema, journal reflection and post-settlement ingest while the Turn still commits and spends quota. Preserve bounded participation facts and independent ingest when optional recall content is degraded. Existing focused Python checks passed 132 cases and the TypeScript context tests passed 15; the added size counterexample still fails the intended enabled-memory invariant. No live provider/model or whole-suite qualification is claimed.
|
This pull request has merge conflicts with Choose the remote for the base repository, not an out-of-date fork. git fetch upstream
git rebase upstream/main
# Resolve each conflict, git add the resolved files, then git rebase --continue.
git push --force-with-lease origin HEADFor a same-repository clone whose Keep the DCO |
…nal-20261022 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com> # Conflicts: # loopx/control_plane/turn_driver/codex_cli.py # loopx/control_plane/turn_driver/executor.py
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-5 | OpenAI | self_reported
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机
Users and Agents with an enabled Goal/Agent Reward Memory binding running native Codex, DSH or generic CLI Turns need the approved context and post-settlement learning path to remain connected. The previous head duplicated a complete recall in contribution context and readback; a legal 83 KiB recall therefore exceeded the 64 KiB contribution budget and caused the reflection schema, journal field and ingest callback to disappear even though the Turn committed and spent quota.
An 80 KiB optional recall now degrades to no recall guidance for that Turn, but the verified binding remains, the host result schema still requests reflection, and post-settlement ingest is still registered. This review covers the shared native lifecycle and a bounded size failure only. No new memory authority, provider configuration, scheduler action, installed App/Lark adoption or live model qualification is claimed. Installed host adoption, live provider/model behavior and M7.4 complete cost/quality qualification remain separate.
Affected caller: Users and Agents with an enabled Goal/Agent Reward Memory binding running native Codex, DSH or generic CLI Turns. Before/after: An 80 KiB optional recall now degrades to no recall guidance for that Turn, but the verified binding remains, the host result schema still requests reflection, and post-settlement ingest is still registered. Observable outcome: Small recall is delivered normally; oversized recall omits guidance only; disabled or stale bindings remain isolated; enabled ingest survives both normal and degraded recall. Non-goals: No new memory authority, provider configuration, scheduler action, data cache, live model qualification or installed App/Lark adoption is claimed. Remaining gap: Installed host adoption, live provider/model behavior and M7.4 complete cost/quality qualification remain separate.
改动思路
The existing capability composer registers memory context after Turn admission. TypeScript binds the contribution to the current source and validates context, instructions and optional result descriptors within a hard budget. The native host returns a reflection candidate; ordinary task validation, durable writeback and quota settlement remain unchanged. Only after those effects does the existing post-settlement dispatcher offer the result to the Reward Memory ingest owner.
The P2 repair separates optional recall content from bounded participation facts. The full recall appears once in host context; readback keeps the experiment/binding and status with context=null. If the one-copy contribution still exceeds the existing 64 KiB limit, only context is removed and the enabled reflection/ingest contract remains. Architecture Assessment: The shared capability registration is appropriate and the optional context is correctly isolated from independent ingest. Current PR boundary: Shared native lifecycle plus bounded optional-context degradation.
| Path | Previous head | Current head |
|---|---|---|
| Small recall | context delivered | context delivered once |
| Oversized recall | registration rejected; schema/callback lost | guidance omitted; schema/callback retained |
| Disabled/stale | isolated | isolated |
| Settlement replay | immutable receipt | immutable receipt |
具体改动
The exact diff is 24 files and +1585/-196; the focused P2 repair is +177/-29 across 7 files without unrelated formatting churn. The base specification is turn-envelope-v0.md @ 3ec27ed. TE-native-capture, TE-signed-boundary, TE-memory-participation, TE-independent-ingest and M7.4-installed-qualification are mapped; installed qualification remains deferred.
关键代码讲解
memory_context_resultnow carries full recall only in context fields, keeps bounded participation in readback, and removes recall context when the serialized contribution would exceed 64 KiB. The reflection descriptor remains whenever ingest is enabled.memory_context_registrationpasses the same explicit hard budget to the existing registration validator and does not create a second provider or cache.dispatch_turn_context_hooksvalidates once, keeps readback bounded, and isolates optional context failures from ordinary business work.validate_loopx_turn_host_resultpreserves registered optional result fields and the independent progress-observation decoder brought by the current main merge.registered_post_settlementstill runs only after durable settlement, retains per-hook receipts and never repeats a terminal effect.
对主干的风险
The strongest regression is an enabled Turn silently losing reflection/ingest because optional recall context alone exceeded the shared budget. The new 40/70 KB unit cases and six File/SQLite × Codex/DSH/generic oversized_recall cases show context degradation without losing the schema, journal reflection or post-settlement callback.
276 related Python tests pass across native Turn, capability lifecycle, Reward Memory recall/outcome, File and SQLite paths. TypeScript context tests are 15/15, full control-plane typecheck passes, and Ruff, compile, bilingual, semantic, public-boundary and diff-hygiene checks pass. Standard premerge passes 18 of 19 selected checks; quota-scheduler-state-ack-smoke.py fails identically on clean main and this head at the same blocked-health quota assertion and is recorded as an inherited merge-readiness concern. The recall/provider response in the oversized test is hermetic while native CLI, authority stores, validation and settlement execute. Live provider/model, installed App/Lark and full long-horizon cost remain unverified.
语义与 CI 对齐
The contribution remains advisory, source-bound and bounded. automatic_recall and automatic_ingest remain typed independent flags; independent exact reflection evidence is still required before ingest. No generic domain rule or provider permission is added. The existing hard 64 KiB budget and 2,400-character reflection limit remain unchanged.
我的整体评价
APPROVE, justified_increment. Exact head f3e2b72e33cd97908949ccc8b63739523c59ade6 resolves the outstanding P2 without weakening the hard context budget or the independent settlement gate. Small recall still reaches the Host; oversized recall degrades only optional guidance; reflection and post-settlement ingest remain enabled. The mainline conflict with progress_observation was resolved by retaining both owners.
Long-horizon continuity improves because enabled memory hooks no longer disappear on a legal size boundary; user experience improves because existing enablement remains effective without extra confirmation or cleanup. Installed adoption, live provider/model value and complete cost remain the separate M7.4 boundary. No merge or installation authority is claimed by this review.
English verdict: APPROVE - exact head f3e2b72e33cd97908949ccc8b63739523c59ade6; full recall is carried once, oversized recall degrades only its optional context, and enabled reflection/post-settlement ingest remain. 276 Python tests, 15 TypeScript tests, full typecheck and six native File/SQLite host cases pass. The inherited quota scheduler smoke fails identically on clean main and this head; installed/live-provider qualification remains separate.
P2 resolved at f3e2b72: optional recall is carried once and degrades alone at 64 KiB; experiment binding, reflection schema, journal reflection and post-settlement ingest remain. Verified by 40/70 KB cases, six File/SQLite x Codex/DSH/generic native cases and 276 related tests.
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-5 | OpenAI | self_reported
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机
Users and Agents with an enabled Goal/Agent Reward Memory binding running native Codex, DSH or generic CLI Turns need the approved context and post-settlement learning path to remain connected. The previous head duplicated a complete recall in contribution context and readback; a legal 83 KiB recall therefore exceeded the 64 KiB contribution budget and caused the reflection schema, journal field and ingest callback to disappear even though the Turn committed and spent quota.
An 80 KiB optional recall now degrades to no recall guidance for that Turn, but the verified binding remains, the host result schema still requests reflection, and post-settlement ingest is still registered. This review covers the shared native lifecycle and a bounded size failure only. No new memory authority, provider configuration, scheduler action, installed App/Lark adoption or live model qualification is claimed. Installed host adoption, live provider/model behavior and M7.4 complete cost/quality qualification remain separate.
Affected caller: Users and Agents with an enabled Goal/Agent Reward Memory binding running native Codex, DSH or generic CLI Turns. Before/after: An 80 KiB optional recall now degrades to no recall guidance for that Turn, but the verified binding remains, the host result schema still requests reflection, and post-settlement ingest is still registered. Observable outcome: Small recall is delivered normally; oversized recall omits guidance only; disabled or stale bindings remain isolated; enabled ingest survives both normal and degraded recall. Non-goals: No new memory authority, provider configuration, scheduler action, data cache, live model qualification or installed App/Lark adoption is claimed. Remaining gap: Installed host adoption, live provider/model behavior and M7.4 complete cost/quality qualification remain separate.
改动思路
The existing capability composer registers memory context after Turn admission. TypeScript binds the contribution to the current source and validates context, instructions and optional result descriptors within a hard budget. The native host returns a reflection candidate; ordinary task validation, durable writeback and quota settlement remain unchanged. Only after those effects does the existing post-settlement dispatcher offer the result to the Reward Memory ingest owner.
The P2 repair separates optional recall content from bounded participation facts. The full recall appears once in host context; readback keeps the experiment/binding and status with context=null. If the one-copy contribution still exceeds the existing 64 KiB limit, only context is removed and the enabled reflection/ingest contract remains. Architecture Assessment: The shared capability registration is appropriate and the optional context is correctly isolated from independent ingest. Current PR boundary: Shared native lifecycle plus bounded optional-context degradation.
| Path | Previous head | Current head |
|---|---|---|
| Small recall | context delivered | context delivered once |
| Oversized recall | registration rejected; schema/callback lost | guidance omitted; schema/callback retained |
| Disabled/stale | isolated | isolated |
| Settlement replay | immutable receipt | immutable receipt |
具体改动
The exact diff is 24 files and +1585/-197; the focused P2 repair is +177/-29 across 7 files without unrelated formatting churn. The base specification is turn-envelope-v0.md @ 3ec27ed. TE-native-capture, TE-signed-boundary, TE-memory-participation, TE-independent-ingest and M7.4-installed-qualification are mapped; installed qualification remains deferred.
关键代码讲解
memory_context_resultnow carries full recall only in context fields, keeps bounded participation in readback, and removes recall context when the serialized contribution would exceed 64 KiB. The reflection descriptor remains whenever ingest is enabled.memory_context_registrationpasses the same explicit hard budget to the existing registration validator and does not create a second provider or cache.dispatch_turn_context_hooksvalidates once, keeps readback bounded, and isolates optional context failures from ordinary business work.validate_loopx_turn_host_resultpreserves registered optional result fields and the independent progress-observation decoder brought by the current main merge.registered_post_settlementstill runs only after durable settlement, retains per-hook receipts and never repeats a terminal effect.
对主干的风险
The strongest regression is an enabled Turn silently losing reflection/ingest because optional recall context alone exceeded the shared budget. The new 40/70 KB unit cases and six File/SQLite × Codex/DSH/generic oversized_recall cases show context degradation without losing the schema, journal reflection or post-settlement callback.
276 related Python tests pass across native Turn, capability lifecycle, Reward Memory recall/outcome, File and SQLite paths. TypeScript context tests are 15/15, full control-plane typecheck passes, and Ruff, compile, bilingual, semantic, public-boundary and diff-hygiene checks pass. Standard premerge passes 18 of 19 selected checks; quota-scheduler-state-ack-smoke.py fails identically on clean main and this head at the same blocked-health quota assertion and is recorded as an inherited merge-readiness concern. The recall/provider response in the oversized test is hermetic while native CLI, authority stores, validation and settlement execute. Live provider/model, installed App/Lark and full long-horizon cost remain unverified.
语义与 CI 对齐
The contribution remains advisory, source-bound and bounded. automatic_recall and automatic_ingest remain typed independent flags; independent exact reflection evidence is still required before ingest. No generic domain rule or provider permission is added. The existing hard 64 KiB budget and 2,400-character reflection limit remain unchanged.
我的整体评价
APPROVE, justified_increment. Exact head 0b92c44bb72af878e5dbab1e72a59584c1f5af7a resolves the outstanding P2 without weakening the hard context budget or the independent settlement gate. Small recall still reaches the Host; oversized recall degrades only optional guidance; reflection and post-settlement ingest remain enabled. The mainline conflict with progress_observation was resolved by retaining both owners.
Long-horizon continuity improves because enabled memory hooks no longer disappear on a legal size boundary; user experience improves because existing enablement remains effective without extra confirmation or cleanup. Installed adoption, live provider/model value and complete cost remain the separate M7.4 boundary. No merge or installation authority is claimed by this review.
English verdict: APPROVE - exact head 0b92c44bb72af878e5dbab1e72a59584c1f5af7a; full recall is carried once, oversized recall degrades only its optional context, and enabled reflection/post-settlement ingest remain. 276 Python tests, 15 TypeScript tests, full typecheck and six native File/SQLite host cases pass. The inherited quota scheduler smoke fails identically on clean main and this head; installed/live-provider qualification remains separate.
Goal And Delivered Outcome
Memory-enabled Turns need the same registered context and settlement path across Codex, DSH and generic CLI. This PR shares that lifecycle through existing owners and preserves already validated memory results when an older Turn journal resumes after an upgrade.
The latest repair addresses the cached-reflection P2 raised on
2111d897dc5e6d036039f684ecf4d5b1f168573e: the new contribution reader previously dropped a legacy journal's admitted reflection while retaining its independent validation digest. Recovery now preserves both, keeps the original plan, and settles once without restarting the Host or validator.4de2e5bb299b38d161910a85c4ed24e55b38f41d; base and merge base:5bf58c1ca3d21919b15c662bc705c3e069bfb496(main).model_agent, OpenAI GPT-6 / Codex. This is a completed author proposal with qualification holds; a new independent exact-head review remains required.Scope And Ownership
The capability layer registers post-selection context for native Turn and executing quota/heartbeat paths. TypeScript checks contribution bounds, reserved authority/result fields, the existing governing signature and source readback. Codex/DSH/generic adapters consume the same optional context, instructions and result descriptors. Python contribution IO lives beside the existing hook registrations and dispatchers.
Existing independent reflection validation, accountable writeback/spend and
PostSettlementinvoke the original ingest/sidecar owners. Per-hook receipts preserve completed peers; unknown external effects remain unknown. Terminal recovery returns current owner reconciliation aspost_settlement_recovery, preserving the original journal and receipt.post_writebackremains effect-free.The legacy compatibility branch applies only to cached journal results without contribution annotations and with their original verified participation facts. It retains the existing 2,400-character field decoder. It does not reconstruct context or activate legacy input for new Host work. Provider policy, current enablement and exact independent evidence still govern ingestion.
The unchanged pure participation check now belongs to the existing
control_plane/reward_memory.pyprojection owner and is reused by capability composition and cached decoding. Its function AST is identical after relocation. This removes the initial repair's inverse core-to-capability dependency without an exemption, wrapper or duplicate policy. Fresh Host input still uses generic registered contributions.Validation
All current results below are bound to
4de2e5bb299b38d161910a85c4ed24e55b38f41dunless an older revision is explicitly named.21322fb1f1171c0bf7fdb9cb1112b66a1dd0dcf8producer saved a journal after independent validation; its relevant producer/reader blobs equal current base5bf58. Baseline, final source and final wheel readers preserve the same reflection/digest/plan, invoke no Host or validator, perform one writeback/debit/observer, and leave terminal replay bytes unchanged. Business/provider callbacks are isolated fixtures.3a5401aadfailed for an inverse dependency; the AST-equivalent move in the final head resolves that cause. No budget or exception changed.9bfc838374db20452f2b10aeb24bf477fca93322confirms thesteward-group-triggertimeout waiting for the settings button, also observed at2111d897d. It remains unattributed and unrepaired. Native package replay covers a different journey.2111d897d: 5182 passed, 73 skipped, zero failed; every TypeScript file remains unchanged. Earlier NoKV timeout remains unexplained. Prior bootstrap/source-capture evidence retains its original revision. A prior independent review also reproduced a derived wait timestamp fluctuation on base/head; that instability is not claimed repaired here.Current-head CI is not fetched or awaited under the managed review policy. Earlier PostgreSQL/Python-version CI observations are historical; store, schema and routing code are unchanged. This local package uses Python 3.14. No live model/provider service, installed App/Lark adoption, promotion or live installation was exercised.
Exact-scope receipt
cqr_4d2f0049424540735fd9, fingerprint4d2f0049424540735fd9fb24f925a4166639b3351e0db54e8cc038f22dda5ba1, covers 24 changed files. Decision fail; verification invalid_receipt. The required root invariant and recorded unattributed package-browser failure remain held. Passing selected premerge checks does not override this receipt, independent review, merge readiness or maintainer authority.Cost And Remaining Delivery
Historical matched measurements remain pinned to
21322versus2111: 48 measured observations plus 16 warmups. Enabled input added 325–1296 bytes, ingest-enabled result 711 bytes, and enabled journal 5062–8548 bytes; calls, child launches and business debits matched. These small serial samples did not establish latency or efficiency gains. Legacy decoding and shared participation placement changed afterward, so the historical numbers do not qualify the final total cost.The prior
9bfcdirect full/thin and original-capture size observations also remain separate from the persistent bootstrap wrapper and from actual full/thin runtime arms. Detail IO, outstanding daemon/model/network work, human attention and complete outcome cost still require matched evidence. No text-size result retires the final Python seam or closes M7.4.Frontend / Visual Evidence
UI impact: none. Existing memory configuration and capability/status surfaces are reused, including the truthful uncovered Lark boundary. No viewport, navigation or settings editor changed; screenshots are not applicable. Packaged/installed App and Lark journeys remain explicitly unqualified.
本轮修复旧版日志恢复时丢失已验证反思的问题,并将同一参与事实检查收回既有投影 owner,未新增权限或重复策略。最终 308 项源码检查、90 项隔离安装包重放,以及真实旧生产者到新源码/新安装包的恢复对照通过。原根模块预算和包浏览器资格仍阻塞合并;完整成本、安装采用、模型结果和新版本独立评审继续开放。