Repository navigation
test: qualify managed calendar Task lifecycle across restarts - #7706
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.1-sol; OpenAI; runtime_reported; reasoning_effort=max.
Request changes conclusion (author-owned PR; GitHub blocks formal self-review)
P2:标准预合并词汇检查在 120.265s 超时且尚未归因,当前不能批准。没有据此声称生命周期实现存在已复现的代码缺陷。
动机 / Motivation
维护 managed Session 定时任务的开发者和验收者。同一任务先改时刻、暂停、重启再到期,原来只能拼接分散测试并手动重建环境;现在保留同一来源、会话和旧结果,连续检查后续窗口。
已观察到 File/SQLite 各两个真实到期窗口、重启后原结果不变、取消后不再新增执行;连续原生测试另覆盖三窗和撤权负例。不修改生产 runtime,不证明完整表单、自然语言配置、OS 进程重启或生产日报原路送达。普通表单与自然语言路径仍未闭,本 PR 的标准预合并检查资格也尚未成立。
改动思路 / Approach
沿用原有 Task、会话、日历窗口和正常唤醒服务,测试把过去分散的步骤放进同一条连续轨迹。浏览器 fixture 在停止原唤醒服务并等待原工作后,关闭旧控制器,使用原物理存储重建正常控制器与传输;恢复时仍由原 Task 执行入口决定是否开工。没有增加第二个调度器、状态 authority 或模型消费者。相较另建演示脚本,这条路径更小且能保留需要验证的原身份与历史。
具体改动 / Changes
规范依据是 docs/product/periodic-reports.md,固定 revision a36e01c32b0a290a96466c766629a0b01850f823。以下标签用于映射原文未编号的条款,不新增产品义务。
| 条款 | 本头结论 | 证据 |
|---|---|---|
| CAL-SOURCE | implemented | 完整 source Task 经原 preview/apply;改停与后续窗口保留原 Session。 |
| CAL-OWNER | implemented | 原 wake owner 停止后重建,原消息前缀不变;每后端两次实际到期仅两次模型调用。 |
| CAL-BOUNDARY | implemented | 文档明确同进程重建、合成模型和现有表单缺口,不扩展为生产送达资格。 |
关键代码讲解
tests/test_managed_session_calendar_tasks.py:551 的 test_same_calendar_task_lifecycle_retains_results_and_rejects_late_dispatch 复用正常配置、日历和 Turn 入口。先冻结第三个窗口,再撤销该隔离 fixture 的注册并尝试迟到提交,核对零新增副作用,恢复后仍使用同一待执行 Task。三个独立窗口各有一条原结果。
examples/personal-workspace-browser/steward_report_fixture.py:164 的 main 只处理隔离目录里的重启 token。缺少 stop 或仍有原工作时记为拒绝,同 token 在条件随后改变时也不执行;有效重启关闭旧控制器,重用原 store root,再比较身份、全文和模型/传输计数。文档新增的是这个控制的使用边界。最终 diff 为测试、既有 fixture 和文档,没有生产源码或生成资源。已有独立执行/撤权/重启测试和近期 20 个同作者 PR已对照,未发现同形的连续生命周期烟测;因此保留单一组合用例,不拆成更多脚本。
对主干的风险 / Risks
PASS:File/SQLite 连续原生用例串行 2 例,80.50s,保留原 15s 等待限制;打包页面经原 HTTP 配置、原 worker 与真实 File/SQLite 存储,各完成两个自然到期窗口,桌面和 390px 原结果可读,取消后无新增执行。SQLite 另实际验证运行唤醒服务时重启被拒,停止后原拒绝 token 不会偷偷执行。早期测试身份/模拟时钟错误已修,重叠运行的等待超时仍保留,未冒称并行稳定性通过。
FAIL / UNVERIFIED:标准预合并的 11 项 smoke 中 10 项通过,5 项直接检查通过;examples/semantic-vocabulary-drift-smoke.py 在 120.265s 超时、无输出。未做不可变 base/head 的受控归因,不能仅凭未改生产文件就说它无关。最小修复是恢复原限额下的检查,或证明相同基线失败与本差异的因果隔离,再重新判断;不能调高 timeout 或跳过检查。最终文档仅删去重复段落,执行源码与上述运行一致;最终提交的 RFC 双语与 diff 检查也通过。Goal 设置 wait_for_ci=false,未查询或等待远端 CI。
仍未单独执行“已停 wake 但模型工作尚在运行”的 fixture 拒绝分支;代码中的 active-turn/done-event 防护不能冒充该分支的运行证据。重启局限于一个隔离 OS 进程内的控制器重建。原产品表单/NL和真实日报送达不在这一增量内,已知缺口留在原工作中。
我的整体评价 / Verdict
交付判断为 justified_increment:组合验证对 long_horizon 有覆盖增益,用户产品路径保持 preserved,没有因本 PR 增加输入、确认或导航。没有生产兼容分支或新协议要保留,现有 fixture 内的局部控制比另建执行器合适;已去除重复文档。渲染路径没有修改,原页面读回仅用于已有结果的验收,不能声称新增界面能力。普通表单、自然语言和生产报告体验仍在原有产品工作中验收。
但当前必需检查尚未归因,必须 REQUEST_CHANGES;在受控归因或原检查恢复之前不自合并。需要的是精确验证资格,而不是把缺证补写为绿色。评审对象为 5d21b021efb9aac61aac897ae9645a942bcc3d58,远端完整正文和差异已读回一致;此结论不关闭父级完整旅程,也不证明实际业务已回复。
English verdict: REQUEST_CHANGES — 5d21b02; lifecycle coverage is useful, but the required 120s vocabulary check is unresolved. Preserve the failed gate and obtain controlled attribution before approval.
Goal And Delivered Outcome
main. This increment continues the managed Session calendar Task contract; it does not close the parent product journey.Author Declaration
docs/product/periodic-reports.mdata36e01c32b0a290a96466c766629a0b01850f823, existing managed calendar Task HTTP contract and packaged fixture boundary; the continuous lifecycle validation request in this PR.test_same_calendar_task_lifecycle_retains_results_and_rejects_late_dispatchsteward_report_fixture.py:mainScope And Continuation
Validation
pytest -q tests/test_managed_session_calendar_tasks.py -k same_calendar_task_lifecycle— File/SQLite 2 passed, 80.50s, existing 15s waits retained. Initial fixture identity/clock mistakes were corrected; parallel timing misses are not claimed as product failures.examples/semantic-vocabulary-drift-smoke.pyexceeded the unchanged 120s limit. Causality is unverified; merge remains held. The other 10 selected smokes and all 5 direct checks passed. The final docs-only cleanup removed a paragraph already covered by the unchanged contract; executable source is identical to the tested source.Frontend / Visual Evidence
Type of Change
LoopX Area
Shared-authority RFC fixture impact
N/A — no migration or promotion claim; File/SQLite checks retain the existing authority.
Boundary Checklist