Repository navigation
test: isolate lifecycle fixtures from inherited Stride review - #7949
Conversation
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent | gpt-6.1-sol | OpenAI | runtime_reported | reasoning_effort=max
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机 / Motivation
维护 Vision 写回和 Todo 生命周期的开发者,需要测试真正进入各自要保护的规则。 以前 Vision 专属夹具继承 Stride 开启,在抵达原断言前被拒绝;现在夹具显式关闭该策略,原正例和拒绝路径都能执行。 相同两模块由基线 50 通过、10 失败变为本 head 60 通过,独立 File/SQLite 反例确认省略配置仍开启并拒绝缺少 decision 的写回。 本 PR 不修改生产默认、放宽 Stride 验收,也不证明模型、科研整合或长期收益。
改动思路 / Approach
保留当前生产 owner,只在两个专属 fixture 的 execution_profile 写明 stride_strategy=off,使普通 Vision 作者流程与 typed-repeat gate 的测试可以完成。没有新增生产机制、权限或第二套配置。强反例是“off 是否把真正策略门也绕过”:本轮真实 File/SQLite 各自执行 off、无配置和显式 on;仅 off 接受普通写回,后两者仍拒绝缺少 decision,且拒绝后历史字节不变。
具体改动 / Changes
实审 head 1fd96894cd7516093f5fcf60a64c8f915a6cd4ba,不可变基线 e8d2ea6e2eb0e0bf87f01abde331575dcaf31be9;完整差异为四个测试/fixture 文件 +5/-1,生产文件全部未变。
关键内容讲解
write_fixture 与 _replan_gate_tmp_fixture 只增加既有策略覆盖;test_projected_autonomous_example_updates_evidence_without_changing_goal 新断言 stride_control 缺席,并保留全部完整字段、原 Goal、status/history 冷读回和非法 durable-field 更新不追加的断言。lifecycle-167 唯一变化是 expected,按 #7941 已有 typed owner 要求保留独立工作和 gates,禁止给终态 Todo 添链接或制造 filler;其余 JSON 字段和全部行保持一致。
规范依据为 docs/development/good-smokes.md,spec_revision e8d2ea6e2eb0e0bf87f01abde331575dcaf31be9。Start With The Contract:既有真实 CLI 与状态边界保留;Prefer Semantic Pressure:原拒绝断言加上上述六个独立 scope 反例;Validate The Change:完成当前入口和按风险选择的检查。Stride 的默认/显式 off 则按同版本 docs/reference/protocols/goal-vision-replan-contract-v0.md 的 Default review cadence 与 Replan planning guidance 核对,没有把关闭时的读取改善算作 Stride 收益。
对主干的风险 / Risks
PASS:60 Python、11 instruction TypeScript、27 项相关 interaction TypeScript、完整 Vision budget smoke、六项 File/SQLite scope 反例及 Ruff。相同基线保留 50P/10F 和 TS10P/1F;旧失败均对应上述无关策略门或过期期望。
标准 premerge 完成 7 direct 和 19 selected,无阻塞失败、无 manual hold。raw maintainability ratchet 仍 FAIL:同条件 base/head 完整 stdout 393 字节逐字相等,唯一未审规模债位于未改 renderer,不能记作修好。首次 premerge 因隔离环境未安装 TypeScript 失败,补齐声明依赖后完整重跑通过,原失败保留。CI 未查询,不构成批准前置;合并资格另核。
我的整体评价 / Verdict
没有阻塞 finding。命名的测试维护目标已完成,long_horizon 与 user_experience 的生产语义保持原样;本差异只恢复测试的实际覆盖。没有渲染呈现变化,visual_review 不适用,未验收模型或长期净收益。范围内的重构判断为无需新增抽象:复用原 fixture 和 typed owner 更便于后续维护;更大实验整合保持独立资格。
English verdict: APPROVE — 1fd9689; fixture isolation and current lifecycle characterization verified; native checks pass with the unchanged maintainability advisory retained.
#7941 changed terminal lifecycle guidance to preserve independent work and avoid linking terminal Todos. This follow-up updates the corresponding characterization row and gives the vision-authoring and typed-repeat fixtures an explicit Stride-off scope. These fixtures can then reach their intended lifecycle gate with the inherited Stride-on default from #7928.
Combined validation exposed one stale TypeScript expectation and ten Python failures at the unrelated missing-Stride-decision gate. The fix retains the original semantic assertions, adds a guard readback proving that the vision-only fixture has no Stride control, and changes no runtime validation or acceptance rule.
Validation at current head
1fd96894cd7516093f5fcf60a64c8f915a6cd4baon mainb740c11ab16e35c3235243dbf228d3292a299a40: 60 focused real CLI/vision/replan tests and all 11 interaction-instruction tests passed. Standard premerge reports passed, with no manual hold and one inherited maintainability advisory retained. The earlier combined failures remain recorded. Independent review and broader experimental composition are separate qualifications. This proposal changes fixture scope and characterization only.