Skip to content

fix(replan): adapt review cadence from settled stride feedback - #7874

Merged
loopx-agent merged 2 commits into
mainfrom
codex/stride-inline-cadence-20261102-0554
Nov 2, 2026
Merged

loopx-agent merged 2 commits into
mainfrom
codex/stride-inline-cadence-20261102-0554

Conversation

@loopx-agent

@loopx-agent loopx-agent commented Nov 2, 2026 •

Copy link
Copy Markdown
Collaborator

启用 Stride 时,复盘提示包含重复说明,而已结算的策略反馈没有调整后续周期。本 PR 保留 inline 问题、完整 minimal_example 和现有证据校验,并把已结算决定接到现有 periodic review owner。

  • 只在当前 Agent 最近自主 ACK 本身选取已结算 fresh decision。较晚的非 ACK 行即使复用旧 Turn id,也不能越过新 ACK 复活旧决定;neutral ACK 保留窗口截断但不提供反馈。普通工作携带的旧 Vision、未结算记录、peer 和历史 v1 不提供反馈。
  • grow + supported_progress + evidence-linked previous goal_gain=improved 使用配置基准的 1.5 倍;verify 或 uncertainty/gap/failure 使用 0.5 倍;switch 优先保留基准。向上取整、至少 1 Turn、读取不连乘。配置基准、off、旧计数方式、stall、权限及每 Turn 结算保持既有行为。
  • 复用 TypeScript history/settlement owner;Python 只运输当前策略配置。已有 strideReviewMismatch 的后续证据、声明工作和 Explore 来源校验保持原样。收益仍是来源经过校验的 Agent 声明,不能据此认证实际收益。
  • 同一合成输入调用真实 strideControlContract,pretty JSON 从 9,324B 降至 7,377B(约 20.9%)。这是提示组件输出量;未测得完整成本或模型行为收益。为保留验收和恢复语义,没有把近似字符目标当作删减约束的硬预算。

验证:当前 head f8fc62102 的 focused TS 129 项通过,真实 File/SQLite CLI verify/switch、来源改变及后续工作路径 8 项通过。新增回归先在修复前复现“已结算 verify A → 新 switch ACK B → 无 ACK/无 Vision 的旧 Turn neutral 别名 → 提前触发周期1”,随后在两种 provider 的真实结算来源上通过;仅构造投影请求,未修改其权威历史或收据。TypeScript typecheck、Ruff、RFC 双语 staged 检查、语义增量 advisory 及 standard premerge(14 项及6项直接检查)通过。此前 history/provider/transport/observation 76 项通过、全 TS 5,862 passed / 77 skipped 是前一 head 的验证,不声称本次重跑。没有查询或等待 CI。

保留的验证缺口:扩展 comparison CLI suite 最初在 base e9eda527a 和 head 都有 6 个 KeyError: should_run;受控 actor 现显式请求 full decision,避免继承 reader 输出默认值。该 suite 随后为 5 passed / 1 failed:File/manual-measurement 的“旧 best 必须位于默认页之外”断言不成立。没有改写该断言或把它算作通过,排序原因仍待确认,合并资格未建立。

现有 Capability Center 的 Goal review and stride 设置继续使用同一配置和后端;没有新增开关、版本或 UI。真实 CLI 设置与复盘 readback 已验证,浏览器设置交互未重跑。冻结 worker、运行中的实验、安装版本均未改动。相关小重构复用共享 lane 选择和 canonical neutral 集合;窗口、stall 与 off 行为保持既有边界。其余重构不在此切片。

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Request changes conclusion (author-owned PR; GitHub blocks formal self-review)

Reviewer: model_agent; gpt-6.1-sol; OpenAI; runtime_reported; reasoning_effort=max.

动机

[P2] 请避免 neutral 历史行借旧 Turn id 越过更新的 ACK。 阻塞位置:loopx/control_plane/work_items/replan_history.ts:219–221。本结论绑定 af77049a328f3a6aef1e4bf805ec6e462c2a24e9,base e9eda527afd5fcb262ee7c199e1822b1a936cc24。

启用 Stride、依赖周期复盘安排后续工作的 Agent 与维护者。过去启用策略后仍按配置周期复盘;本 PR 让已结算的复盘决策调整下一周期,同时保留同包的问题与最小示例。预期结果是让下一次复盘节奏反映已有决策,而不是不断增加规划开销或把收益声明当成独立认证。当前 neutral 历史行可复活较旧反馈;真实模型采用、长期效果和完整成本收益仍未资格验证。本 PR 不授权实验、安装、合并或冻结 worker 升级,也不改变 stall、quota 与逐 Turn 结算。

改动思路

派生周期放在现有 TS history/settlement owner 内是合适的;无需新增 timer、持久化倍率或 Python 决策副本。当前 PR 应保留这个可选反馈切片,并在同一 owner 修好 neutral/ACK 时序;不应扩大成调度器重构或新策略框架。我比较了保持现状、只压缩文字和新增调度/状态层;现有 owner 内派生是适当的小切片,但“来源确为已结算”还不足以证明它在当前 ACK 窗口内。

先读的规范是 docs/reference/protocols/goal-vision-replan-contract-v0.md 的 Replan ACK freshness、Structured stride control,以及 docs/architecture/rfcs/hierarchical-agent-stride-control-v0.md 的 7.6;采用修改前的不可变版本 e9eda527afd5fcb262ee7c199e1822b1a936cc24。ACK 覆盖/neutral 不制造新工作及默认关闭边界是独立判据,没有用本 PR 新改的规范自证正确。

具体改动

projectSettledReplanHistory 从实际 should-run/writeback/spend 来源选择 fresh v2 决策,避免仅使用携带的旧 Vision;effective_turn_cadence_context 仅传递配置。periodicThreshold 按配置基准计算,switch 优先、不连乘与 ceil 都有正向证据。strideReviewMismatch 保留后续引用和 declared-work 核验,goal_gain=improved 仍只是有来源的 Agent 声明。

问题发生在 periodicThreshold 的历史行与 canonical map 结合处:先按任一行的 [agent, turn] 取决定并返回,之后才检查 ACK;它没有像 historyWindow 那样排除 neutral 行。

可复现顺序:已结算 verify A → 较新 switch ACK B → 一条复用 A Turn id 的 replan_noop 或 repair_noop。在真实 File/SQLite 已结算来源之上,经生产 Python codec→TypeScript settlement projection 作受控历史反例,配置周期2正常为2,加入不含 ACK、也不含 Vision 的旧 Turn neutral行后,head变1,base仍2;off与peer对照均2。两种 neutral 在两个 provider 均复现。这里没有改活跃 Goal/收据,也没有声称当前 CLI replay 必然追加这类行;既有 replay 的 no-append 正向测试仍保留。

先排除不承载新决策的 neutral 行,并把反馈的时序绑定到真实已接受 writeback/ACK;保留 ACK-inclusive,不能仅凭任一行的旧 Turn id 提前返回。请把这个顺序加入 source-backed 回归,并保留正常 ACK-inclusive、v1/unsettled/peer/off 与 stall 对照。

对主干的风险

当前改变局限于 enabled receipt-backed cadence,但较新的路线决定可能被旧反馈覆盖,导致提前或推迟复盘、增加控制成本并重新采用已被覆盖的信息。默认 off 的 native 对照保持2;未发现新增执行权限、额外扣槽或冻结 worker 变更。共享 historyLane 是有用收敛,下一步应收敛两条读取路径的 neutral/ACK 语义。

本次203项TS通过;Python完整运行50通过、2项 manual-measurement 默认页断言失败;due-stride的8个真实File/SQLite用例在通过集合中。标准premerge14项和5个direct checks、typecheck、Ruff通过。另有独立native历史反例失败,不能被这些绿色检查覆盖。

扩展comparison的旧断言也完整保留:原base actor继承context reader时得到KeyError;同源actor和fixture显式off后,base为1通过/1个SQLite同断言失败,head为2通过,原head完整跑次的File/SQLite两红仍不改判。排序/时序的完整因果未查清,不能把最新绿当稳定性证明。没有改断言、预算或冻结标准。

我的整体评价

本次 REQUEST_CHANGES 来自已复现的 neutral/ACK 回归,不是 CI 证据未知。远端CI未查询、轮询或等待;未知原因保持未知。修好当前owner内这个边界后,再按新head复核,不能继承旧结论。

压缩部分按 actor、触发条件、顺序、语气、来源、范围、continuation/stop 逐条审读:同包仍有问题、完整minimal_example以及实际存在的 explore_basis.rule 页坐标/source replay说明;没有把字段不变当作文字等价的证据。作者9324→7377B属于其合成组件对照,本次未把该数字升级为全包/模型/完整成本收益。当前无渲染改动,不需新增截图;模型是否采用指导及长期净益仍未验证。建议保持现有架构,只做上述有反例约束的局部修复。

English verdict: REQUEST_CHANGES — a late neutral observation can revive an older settled stride decision across a newer ACK and change the current cadence.

for (const run of request.runs) {
if (run.agent && run.agent !== lane) continue;
const decision = run.agent === lane && run.turn
? decisions.get(JSON.stringify([lane, run.turn])) : undefined;

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] neutral 行不能借旧 Turn id 复活较早的 stride feedback

这里先按任一历史行的 [agent, turn] 查 canonical 决定,再在后面检查 ACK;neutral 行并未像 historyWindow 那样被排除。受控顺序为已结算 verify A → 新 switch ACK B → 复用 A Turn id、无 ACK/无 Vision 的 replan_noop 或 repair_noop。经生产 Python codec/TS settlement projection 读取同一真实 File/SQLite 结算来源,base 的配置周期2保持2,head却变1;off与peer仍2。两provider×两neutral都复现。该反例不声称当前CLI replay会追加行,也没有修改活跃状态/收据。请排除非新决定的neutral观察,并按实际writeback/ACK时序选择反馈,保留ACK-inclusive;增加这个顺序的source-backed回归。

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

已在 f8fc621022a285cb8ee152647932161c3ff90e56 修复:先定位当前 lane 的最新 ACK,再仅对该 ACK 选择已结算反馈;较晚的 non-ACK/neutral 观察不能借旧 Turn 越过它。canonical neutral 集合由 lane/window/feedback 共用,neutral ACK 仍截断窗口而不提供反馈。新增纯 TS 反例在修复前失败,真实 File CLI 同序列也先复现阈值1错误;修复后 focused TS129、真实 File/SQLite8、typecheck/Ruff、premerge14及6项直接检查通过。既有 comparison 分页断言缺口保留,未算作通过;未查询 CI。请按新 exact head 复审,当前仍不主张合并资格。

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approval conclusion (author-owned PR; GitHub blocks formal self-approval)

Reviewer: model_agent; gpt-6.1-sol; OpenAI; runtime_reported; reasoning_effort=max.

动机 / Motivation

启用 Stride、需要决定何时复盘后续工作的 Agent 和维护者。
例如已结算 verify 后更早检查不确定性,或在有后续收益证据的 grow 后延长下一段工作;过去始终使用配置周期。
当前实现从已结算 fresh decision 派生下一周期,且旧 Turn 的普通或 neutral 行无法越过最新 ACK 复活旧反馈。
本切片不认证 Agent 的收益声明,不改变权限、逐 Turn 结算、冻结 worker,也不宣称模型采用或长期净收益。
真实模型是否采用指导及完整成本收益仍未验证;既有分页断言和合并资格另列。

本结论绑定 f8fc621022a285cb8ee152647932161c3ff90e56,不可变 base e9eda527afd5fcb262ee7c199e1822b1a936cc24。没有发现当前阻塞问题;上轮 neutral/ACK 问题已经用同一真实来源反例复核,不能把旧 head 的拒绝结论直接沿用。

改动思路 / Approach

现有 history/settlement owner 已掌握配置、原始回执和 ACK,可在此派生下一周期;无需第二个 timer、策略数据库或 Python 决策副本。 当前 PR 保留可选的反馈派生与同包指导压缩,修复最新 ACK 窗口内的选择;更大的调度重构和模型收益资格不属于本切片。
先定位当前 Agent 的最新 ACK,再仅从这个 ACK 的已结算 fresh v2 写回取反馈。较晚 non-ACK 行即使复用旧 Turn,也不能成为新决定;neutral ACK 截断窗口但不提供反馈。这个修复使窗口与反馈选择共享同一 lane 和 canonical neutral 集合,是适当的同域收敛。

配置仍是基准,读取不连乘。switch 优先保留基准;verify 或明确不确定/差距/失败依据取一半并向上取整;有来源的 supported grow 与 improved 声明取1.5倍。来源校验不认证 Agent 的判断,更不证明这些倍率最优。保持现状会丢失已有反馈;另建 timer 或策略数据库则增加重复 owner,均不优于此边界。

具体改动 / Changes

完整审查11个路径、+268/-61:4个生产路径、4个测试/fixture和3份文档;其中生产+91/-48。另核对 af77→本 head 的修复,不只看旧 finding。双语说明同步披露可选 cadence 行为,配置基准未被重写。

关键代码讲解

  • periodicThreshold(replan_history.ts:212)在最新 lane ACK 才查 canonical map,ACK-inclusive、neutral cutoff 和 switch 优先均有反例覆盖。
  • projectSettledReplanHistory(replan_history_settlement.ts:16)复用实际 should-run/writeback/spend 资格,只接受已结算且带 accepted fresh Vision ACK 的 v2;ordinary work 携带的旧 Vision、peer、unsettled 和 v1 不提供新反馈。
  • strideControlContract(stride_policy.ts:364)仍同包交付三轴问题、完整 minimal_example、previous_review 和 Explore 来源规则;只压缩重复说明。逐条比较 actor、trigger、顺序、必须/建议、来源、范围和 continuation/stop,未从字段相同推断语义等价。遗漏结果仍通过实际存在的 explore_basis.rule 找到 global 页坐标、保留 basis revision 并做 source replay。
  • effective_turn_cadence_context(replan_history_codec.py:31)只运输已解析策略和原配置数量;Python 没有再实现倍率规则。已有 Goal/device 编辑入口继续复用,不新增开关或同步步骤。

先读的规范为 docs/reference/protocols/goal-vision-replan-contract-v0.md,spec_revision e9eda527afd5fcb262ee7c199e1822b1a936cc24;并读同版 docs/architecture/rfcs/hierarchical-agent-stride-control-v0.md 的 7.6。Replan ACK freshness:lane/neutral/最新 ACK 边界 implemented;Structured stride control:fresh source、其他出口不可绕过和 off/v1 边界 implemented;7.6:决定、执行、信息和收益分离及原权限/完整成本边界保留。新倍率是本 PR 明确披露的可选扩展,未用修改后的文档自证旧行为。

对主干的风险 / Risks

复跑原独立生产-codec反例,读取同一组真实 File/SQLite 已结算来源:verify A→更新的 switch ACK B→复用 A Turn 的无 ACK/无 Vision neutral 行。历史 af77 错误为1;当前 f8 保持2,off和peer也为2。当前实际 CLI 用例进一步覆盖 B 后只有一个工作 Turn 时不提前到期。这里只改变受控投影请求,没有修改活动 Goal 或其收据,也未宣称生产 replay 会追加这种行。

本地验证 实际结果
两份完整 Python 模块,含8个真实 provider/action/context-change旅程 42 passed
四份完整 TS suite / TypeScript typecheck 84 passed / PASS
Standard premerge 4 direct、Python compile、14 selected全部通过
完整 comparison module,同源actor显式full decision head 5 passed / 1 failed;base 3 passed / 3 failed

语义与 CI 对齐

comparison 当前失败是 [writeback-result-file] 的“旧 best 必须在默认页外”断言;同参用例在不可变 base 也失败,均因 wide-result-0 已在三条默认结果内。两边所有相关 captured guard 都尚无 previous decision,新反馈因此保持配置基准1;comparison/paging owner与断言未改。只归一化临时路径和生成的 retained-fixture id,不抹掉选择或失败。这个当前红项可归为 pre-existing unrelated;其完整排序成因未称已修,历史 manual 失败与本次所有跑次均保留。其他当前通过用例独立覆盖 source/citation拒绝、回放及显式展开,不能把失败计作通过。

启用策略后的 next-count 是有意行为变化;默认 off、legacy计数、stall、权限、逐 Turn 结算和冻结 worker 保持原边界。没有从“无新状态”推断隔离,实际检查了 disabled/peer/source及新 ACK 选择。未查询、轮询、调度或等待 CI;未知 CI 及其原因均未被冒充已归因的本地失败。作者129项及此前203项TS不算本次重跑,9324→7377B也只是作者组件测量,不能升级为完整成本或模型收益。

我的整体评价 / Verdict

APPROVE 当前 exact head。long_horizon 的原工作/恢复/结算边界保留;局部反馈闭环和用户无需手工改周期的结果已有真实 CLI 证据,但净效率和模型决策质量仍未知。现有 history/settlement owner 已掌握配置、原始回执和 ACK,可在此派生下一周期;无需第二个 timer、策略数据库或 Python 决策副本。 当前 PR 保留可选的反馈派生与同包指导压缩,修复最新 ACK 窗口内的选择;更大的调度重构和模型收益资格不属于本切片。

检查现有 CLI/配置后端和策略包;完整 diff 未改变渲染页面、布局或编辑器交互,不需要新增截图。浏览器设置交互未重跑;真实模型采用、冻结实验接续和完整长期成本收益未验证。现有 v1/持久历史兼容应保留;本次小重构已共享 lane/neutral,较大框架重构没有必要。原分页失败保留为独立限制;批准不表示合并资格、安装或实验完成。旧 review/讨论保留,未 dismiss/resolve 或合并。

English verdict: APPROVE f8fc621 — the latest-ACK selection fixes stale neutral feedback; current decisive local evidence covers cadence, source and off-path invariants. Existing unrelated pagination assertions remain disclosed, and CI was not required.

@loopx-agent
loopx-agent merged commit 6e947c7 into main Nov 2, 2026
30 of 41 checks passed
@loopx-agent
loopx-agent deleted the codex/stride-inline-cadence-20261102-0554 branch November 2, 2026 13:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant