Repository navigation
Keep SQLite authority across the checkpoint controller smoke - #8410
loopx-agent wants to merge 1 commit into
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 · max
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
没有阻塞性发现。 最大剩余验证是独立复跑完整的 Linux external controller 与 Docker writer barrier。
动机 / Motivation
维护者在运行 checkpoint controller smoke 时,需要确认 worker 能在 replan 后捕获一次,并继续原会话。
基线先在 File 建立防止旧写者修改的 writer fence,后来才尝试切换到 SQLite,因而卡在真正的 checkpoint 流程之前。候选从一开始就使用同一 SQLite。
独立复现看到 SQLite 文件和存储身份保持,版本推进后两次 replan guard 仍只有一份回执。原 File 捕获和关闭捕获两个变体继续通过。 本轮只评审测试夹具。完整 Linux controller 测试由作者提供;研究点资格、真实推理和完整 benchmark 验收各有自己的边界。
改动思路 / Approach
原 guard 完成后,fixture 模拟同一 wake 中出现一个新的 replan。候选在创建第一个 fence 前选择 SQLite,后来沿用原 store 的版本执行 CAS。File 变体按原设置选 provider。只把初始 provider 换成 SQLite 仍会走旧的中途重新初始化。两个位置一起改,才会保留首个 fence 和回执。
provider 选择和 writer fence 是 fixture 的前置条件。后来改写测试场景时应走已经选定的 canonical store。 把修改限制在一个 native checkpoint fixture,沿用现有 provider、CAS helper、controller 验证和 writer barrier。
具体改动 / Changes
评审提交为 ebbc461cadf813bc122a19e9719c711a5b841f98。以 main 的 71190b6b4ef4e146f3bf4a10d31ce61ac42fd021 固定比较基线,本地与远端 1 个路径的改动一致。采用基线的 benchmark/README.md。 基线规范
controller-existing-store已验证首个 fence 和后续 CAS 使用同一真实 SQLite。original-guard-once已验证原 preflight 结算保留,两个后续 guard 只留下一个 replan 回执。capture-off-parity已验证原 native File 及关闭捕获变体。qualified-research-point属于独立验收,当前 fixture 仍以合成场景验证。
关键代码讲解
- 初始化只为显式 controller 变体在首个 writer fence 前选 SQLite。源码
- mid-wake
response把后续场景写入当前 provider。旧 File 变体继续用 soft_claim,controller 的合成 replan 用 hard_lease。源码 advance_canonical_fixture_authority打开已有 store,读出版本并执行 CAS。现有 callback 同时保留原 preflight 的 index 行。源码
对主干的风险 / Risks
基线在实际 File writer fence 后选择 SQLite,provider 拒绝并保留原 File store 与 preflight 回执。 同一 SQLite store identity 和文件 inode,原生 CAS 更新版本并读回 hard_lease,原 preflight 1 份回执与 1 条 spend,后续重复 guard 1 份 replan 回执。 对照运行了精确 checkout 的初始化和 mid-wake callback 语句,后端与 quota CLI 为真实实现。真实 macOS Codex CLI 0.167.0-alpha.3.2,True-files / True-off 基线与候选各两例通过;合成模型响应。
作者在同一 head 报告 Linux amd64 Codex CLI 0.162.1 的完整 True-controller,包括 Docker writer barrier 和一次捕获后继续。我本地的独立覆盖为上述 SQLite 与 native File 两条路径。快速预合并 5 项直接检查、3 项所选检查零失败,手工评审门保留。CI 未查询。
语义与 CI 对齐
hard_lease、soft_claim 与 fixture CAS 都复用既有 vocabulary。对照检查的是 authority 身份、原结算和重复请求结果,测试可持续保留。
我的整体评价 / Verdict
复现恢复了 checkpoint smoke 原本要观察的连续性。这个测试变化消除了 fixture 自己制造的换库故障,便于后续观察真实 controller 的行为。 对维护者而言,仍用原命令即可抵达原 checkpoint 验证条件,无需手动迁移 fixture。完整 Linux amd64 True-controller、Docker barrier 和受控 native interruption 为作者测试;我未独立执行整条 Linux 组合路径。未执行全矩阵或真实模型。
English verdict: APPROVE at ebbc461. The controller fixture advances its existing SQLite authority and preserves duplicate-guard behavior.
Goal And Delivered Outcome
The mid-wake checkpoint controller test starts with File authority, then tries to select SQLite after the first wake has installed the writer fence. The provider rejects that change before the test reaches checkpoint capture. Initialize the controller fixture with SQLite and use the existing fixture helper to advance the same store when the test introduces a later review.
main.Author Declaration
Scope And Continuation
Complete within the test fixture. The other test variants keep File authority and use the same existing helper for the later fixture update. Runtime code, checkpoint policy, and provider selection are outside this change.
Validation
ebbc461cadf813bc122a19e9719c711a5b841f98.real_entrypointpassedtest_actual_worker_handles_midwake_replan_and_duplicate_without_guard_replay[True-controller]on Linux amd64 with Codex CLI 0.162.1, the Docker writer barrier and the native context delivery path. The test checks one capture and continuation after a duplicate guard.real_backendpassedregression_paritypassedstaticpassedgit diff --checkand DCO trailer.Frontend / Visual Evidence
Type of Change
LoopX Area
Shared-authority RFC fixture impact
N/A. The change uses the existing fixture API and leaves the authority contract unchanged.
Boundary Checklist