Repository navigation
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>
…it-20261012' into codex/remove-legacy-markdown-callers-20261012 Signed-off-by: Duang777 <duangjl007@gmail.com>
Signed-off-by: Duang777 <duangjl007@gmail.com>
…-markdown-callers-20261012 Signed-off-by: Duang777 <duangjl007@gmail.com> # Conflicts: # docs/reference/authority-observation-retirement.md # docs/reference/canonical-todo-completion-update.md # docs/reference/local-authority-provider-selection.md # examples/shared-goal-authority-e2e/installed.py # loopx/cli_commands/coordination_shadow.py # loopx/control_plane/coordination/local_authority_runtime.ts # loopx/control_plane/coordination/todo_terminal_lifecycle.ts # loopx/control_plane/todos/legacy_mutation.py # tests/control_plane/test_backup_registered_source_retention.py # tests/control_plane/test_canonical_todo_writer_isolation.py # tests/control_plane/test_canonical_update_dispatch.py # tests/control_plane/test_cold_source_import_cli.py # tests/control_plane/test_shadow_fence_caller_parity_e2e.py # tests/control_plane/test_shadow_observable_e2e.py # tests/control_plane/test_todo_decision_scope_lifecycle.py # tests/control_plane_ts/legacy_writer_fence_caller_parity_support.ts
Signed-off-by: Duang777 <duangjl007@gmail.com>
…-markdown-callers-20261012 Signed-off-by: Duang777 <duangjl007@gmail.com>
Signed-off-by: Duang777 <duangjl007@gmail.com>
Signed-off-by: Duang777 <duangjl007@gmail.com>
Signed-off-by: Duang777 <duangjl007@gmail.com>
Signed-off-by: Duang777 <duangjl007@gmail.com>
Signed-off-by: Duang777 <duangjl007@gmail.com>
Signed-off-by: Duang777 <duangjl007@gmail.com>
Signed-off-by: Duang777 <duangjl007@gmail.com>
Signed-off-by: Duang777 <duangjl007@gmail.com>
Signed-off-by: Duang777 <duangjl007@gmail.com>
Signed-off-by: Duang777 <duangjl007@gmail.com>
Signed-off-by: Duang777 <duangjl007@gmail.com>
Signed-off-by: Duang777 <duangjl007@gmail.com>
Retire the stale legacy writer exception, keep existing Markdown bootstrap fail-closed, and split canonical registration and update decisions to satisfy the maintainability gates. Signed-off-by: Duang777 <duangjl007@gmail.com>
Use the shared canonical Explore fixture once and remove the last test that required public Todo and lease writes to fall back to Markdown. Signed-off-by: Duang777 <duangjl007@gmail.com>
Seed long-chain and archived-dependency scenarios from one canonical source snapshot before exercising public Todo mutations. Signed-off-by: Duang777 <duangjl007@gmail.com>
Signed-off-by: Duang777 <duangjl007@gmail.com>
Signed-off-by: Duang777 <duangjl007@gmail.com>
Signed-off-by: Duang777 <duangjl007@gmail.com>
Signed-off-by: Duang777 <duangjl007@gmail.com>
Signed-off-by: Duang777 <duangjl007@gmail.com>
Signed-off-by: song <liusongstep@gmail.com>
Adopt the updated contributor branch without changing its runtime behavior. Keep the two-file Explore and status fixture migration as the remaining supplement. 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; reasoning_effort=xhigh; declaration_source=runtime_reported.
Exact head: 05e143c9d022beaf7d0f6e00855ded98564d7c96. REQUEST_CHANGES — one public-entry lease recovery regression and two validation regressions. The earlier 4aa head changed before publication, so its draft was not posted. This result reviews the updated head and integration delta; the Monitor counterexample is now resolved, while public lease recovery remains broken. No review dismissal or merge action is requested by this review.
[P1] Route retained renew/transfer receipts to recovery from the public adapter. execute_native_task_lease_lifecycle:469–470 unconditionally chooses the canonical lifecycle for renew and transfer. Consequently the original 1.x receipt never reaches ordinaryOperation, although that TypeScript owner deliberately retains exact prepared/committed recovery. Restoring the PR's fixed retained_lease_receipts_1x.json renew and transfer records, then invoking the ordinary CLI with the original owner/key/version/TTL: base returns exit 0 and idempotent=true, current head returns exit 1 and canonical_authority_required. Lease, receipt, source and registry bytes remain unchanged in all four calls. This neither renews a lease now nor grants current execution. Minimum repair: let the existing typed routing/receipt owner distinguish original source-operation recovery from a fresh canonical mutation; do not recreate a Python decision owner or re-enable source renewal. Extend test_task_lease.py or test_task_lease_argument_recovery.py with these fixed artifacts through the public CLI, including prepared/committed, changed intent and later-generation negatives. The existing native retained-receipt tests pass while missing this route.
[P2] Make the architecture test import its fixture independently of collection order. The new bare import at test_settlement_receipt_source_boundaries.py:277 finds a helper located under tests/control_plane only if something else has placed that directory on sys.path. A normal focused run fails with ModuleNotFoundError: canonical_authority_fixture; the identical base test passes. Explicitly adding that directory to PYTHONPATH makes the head test pass, which isolates the import problem but is not a repair. Use the repository's shared test-fixture import/placement convention so uv run --extra test python -m pytest -q tests/architecture/test_settlement_receipt_source_boundaries.py::test_native_lease_permission_denial_is_a_real_source_without_a_write works on its own, then rerun the architecture selection.
[P2] Requalify storage-migration lease safeguards under a supported execution policy. The new shared handoff_mode_retired gate is correct for fresh legacy execution, but test_chat_goal_storage.py still initializes its live lease fixtures with handoff_mode="legacy". Four File/SQLite cases now fail at lease acquisition, before testing the active/expired-unreleased lease hold or a lease admitted after preview. The identical four base cases pass. These are not evidence that migration now bypasses a lease; they are missing current-head qualification of that safeguard. Set up the current-execution cases through a supported soft/hard policy, preserve the original migration refusal/stale-preview/after-release assertions, and keep legacy refusal as a separate negative. Rerun uv run --extra test python -m pytest -q tests/control_plane/test_chat_goal_storage.py; do not restore legacy execution or delete the lease assertions to make it pass.
动机
升级已有 Goal 的维护者和自动化 Agent,需要停止旧格式的新写入,同时找回升级前已经完成、只是没有收到确认的操作。否则升级会把原本可以一次恢复的工作变成迁移前的阻塞,还可能诱使调用方另建操作或错误重复执行。
本 PR 拟把普通任务、租约、Monitor 和团队计划写入收敛到 canonical authority,即由选定存储和同一事务规则保存的权威状态;Markdown 保留为展示、审核导入和历史恢复来源。实际验证表明,新 canonical 写入、审核导入和独立历史读回可用,但租约原操作的公开恢复入口仍先被新准入挡住,尚未实现完整的退役切片。
本轮不要求完成父级 D2/D3、所有 Host/Lark 或生产历史组合,也不评判模型实际收益、发布准入或合并授权。当前交付缺口是公开入口仍须保留原身份恢复,然后才拒绝真正的新工作。
改动思路
正常写入和当前执行继续归既有 TypeScript authority、ownership policy、terminal、lease 与 Monitor transaction;Python 负责来源见证、传输及持久化历史 IO。历史原回执是已经发生的事实,不能变成新授权,也不能被新写入门槛一概挡住。
架构判断:复用既有 typed transaction 和历史 receipt owner,删除重复 writer 的方向合理;最小修复应移动原操作恢复与新准入的顺序,而非恢复整条 Markdown writer。当前 PR 边界是 2.0 普通 writer/capture 退出及可用的导入和原操作恢复;安装采用、持续容量与发布仍属于原验收。 不需要新增状态机、设置开关或平行 Python eligibility owner。
下表是当前源码及实际反例的分支说明,未使用未验证的 Mermaid 渲染:
| 触发 | 应有处理 | 当前 head 的证据 |
|---|---|---|
| 未迁移 Goal 的全新业务操作 | 副作用前拒绝,指向备份和审核导入 | cutoff 路径和安装包拒绝检查覆盖 |
| 已提交的旧 Monitor / lease 原操作 | 先验证原身份,返回或结算原结果;不重复业务写入 | Monitor 已恢复;公开 lease renew/transfer 仍被提前 canonical 路由阻断 |
| canonical 新工作 | 当前 provider、policy、CAS 与执行证明共同判断 | 真实 File/SQLite/PostgreSQL 隔离验证通过 |
| 已选 provider 丢失 | 明确拒绝,不从旧 Markdown 授权 | 现有 fail-closed owner 必须保留 |
具体改动
先读不可变 common-base 369eda5f71a41062636c825b4d9b60f1ecbaf28c 的 docs/reference/local-authority-provider-selection.md,以及整体路线图 S2/S7/S10 的原操作恢复、无重复扣额和真实 backend 要求;不拿本 PR 对规范的“已完成”改写证明自己。完整 Git inventory 为 397 路径,+14,646/-33,219;GitHub 元数据的旧 base snapshot 和首屏 100 文件不是完整差异。旧 4aa 到当前提交共 92 路径变化;扣除已在新 main 的内容,38 个路径影响当前提案。当前 397 路径有 311 对 base/head blob 与上一轮相同,86 对重新失效分析;这不继承批准。本轮沿正常 producer、caller、typed transaction、retained recovery 和 packaged readback 追踪关键控制流;不声称逐行重新验完所有被删除的历史测试或所有平台。
关键代码讲解
requireCanonicalBusinessWrite:在原 maintenance lock 内要求有效 canonical fence,显式业务操作复用原事务入口;不可通过 provider 丢失或 preview 恢复旧 writer。write_monitor_poll_todo_state:新提交先检查已选 provider,再恢复旧业务回执;无原 quota 事务的新工作在锁内拒绝。损坏展示时 v4 只读原 canonical receipt,找不到不能进入规划,且不改变原业务 hash。execute_native_task_lease_lifecycle:release 仍区分 source/canonical,renew/transfer 却无条件采用 canonical schema。底层 retained recovery 正确也不能补偿 adapter 送错入口。apply_team_plan:原 source/registry 锁内先核验选定 provider,再读匹配旧回执,最后才对新工作要求 canonical;可复用其“恢复与新工作分开”的边界,不能简单复制一套规则。retiredHandoffModeRejection:统一拒绝 legacy 当前执行;历史 decode、精确 release 与原 receipt 不授予新的执行。这与恢复已发生操作是不同义务。
规范映射(下列名称使用原文表格行/标题,无虚构编号):
- Fresh Todo, team-plan or Monitor mutation; new execution grant, renewal or ownership transfer:implemented;canonical business-write guard、普通 mutation/lease adapter 和实际 provider 检查覆盖新工作截止。
- Original lease release or close of its existing execution fence, including an expired active lease:implemented in the exercised retained owner;native release/CAS/generation 和 lost-close 控制通过,未外推到所有历史组合。
- Original business receipt replay:not_met;公开 lease renew/transfer 反例;Monitor 在新提交已修复。修复顺序和 routing,并补实际 CLI 负例;保留 changed-intent/provider-loss 拒绝。
- Prepared or committed shadow work:retained owner remains;当前 review 不穷尽全部历史对账组合,剩余资格按既有 retirement cadence 保留,不能以一次 business replay 证明 drain 全部完成。
- Explicit import, supported backup/format recovery and Markdown display:bounded implementation verified;普通 wheel 六阶段与真实 packaged settings 的审核导入、reload 和原回执读回覆盖本次路径,完整状态恢复仍未宣称合格。
- Proposed compatibility cutoff and release sequence:2.0.0a1 候选明确承载 breaking cutoff;D2/D3、全 Host、自然 cohort、平台与正式发布保留在既有验收,不由删除量或本轮测试结清。
对主干的风险
最强风险来自“底层恢复测试全绿,但真实入口先拒绝”的组合。最终提交的 lease 反例使用固定 1.x artifact,通过当前 head 与新 common-base 的正常 CLI 对照,原记录不被改写。它没有证明数据丢失或重复扣额;证明的是升级后恢复路径回归。Monitor 的旧反例已在最终提交实际复测:基线生成业务提交后、quota 前的中断现场,恢复前冻结同一合成目录,当前 head 和新基线都成功结算原事务,源与 registry 不变,未创建 provider;旧 4aa 的拒绝不作为新 head 的 finding。复测必须同时覆盖相反方向:fresh source work、改 intent、错误 owner/key/version、后代 lease、损坏 receipt、选定 provider 不可用仍须拒绝。
最终提交重新执行了 14 个互相隔离的 TypeScript/provider 测试套件,共 911 passed、0 failed、0 skipped,包括真实 PostgreSQL 16.15、File/SQLite conformance、service、lease、Monitor、team-plan 和 retained receipt;每套使用独立合成数据库。首次本轮 PG 启动探测误把仅 Unix socket 的临时初始化服务当作 TCP 服务,导致建库前失败;保留该记录,改为 TCP readiness 后重跑,未改产品或断言。原 4aa 轮次的并发共享数据库 schema 冲突也保留为旧 harness 失败,不计入最终提交通过数。当前普通 wheel 在 checkout 外的干净环境完成 6 个必需阶段,正常 packaged build/资源核验通过。
当前七个 Python 关键套件为 277 passed、4 failed;四项均为上面的 storage-migration fixture 失败,不能作为租约迁移安全已经合格。focused architecture test 单独运行仍失败。旧 4aa 的 109 个 changed control-plane 文件广集为 2010 passed、6 failed、4 skipped,仅作为绑定旧源码的补充证据:其中四项 fixture 失败在最终提交已重现;另两项 gitless 测试因 reviewer 临时目录位于 Git 树内而在 base/head 同红,移到 Git 树外后旧 head 两项通过。四个 skip 分别为两项委派 Node 验证、缺少 NoKV 环境、该 Python 运行未提供 PG URL;独立真实 PG 验证不改写这些 skip。未宣称最终提交跑过这份全量 Python 广集。
实际 packaged settings 的浏览器证据来自旧 4aa:真实 cold source/SQLite,backup→preview→reload 原 preview→明确确认→import→当前 policy/store→reload 原 receipt;保留当前与归档两条完整记录,无水平溢出。最终 head 对这条 journey 的 backend、cold-import typed owner 和三个 settings 组件逐 blob 相同,因此仅复用这个有界证据;最终构建和 wheel 已重跑,未声称重新浏览过最终 head、安装版 Desktop、Lark 或全部平台。
语义 advisory 在完整检查前执行;postgresql_v0 复用已有 provider vocabulary,新的业务操作映射与 policy 拒绝留在 typed owner。配置 mypy 19 文件、control-plane TSC、Ruff 和 diff 检查通过。最终 common-base 到 head 共 108 commits:87 个非 merge commit 都有 DCO trailer;21 个 merge commit 中两项 GitHub merge 没有 trailer,因此不声称全部 commit 或远端 DCO check 通过。canary 5 direct + 19 selected/executed 的执行检查失败为 0,但整体 exit 1(1 项 quality-policy failure):缺少当前范围的 CQR receipt 与 benchmark-sensitive manual hold 仍阻止 ready,没有改回执或申请豁免。没有获取、轮询或等待远端 CI。
语义与 CI 对齐
当前未满足的是变更前已经接受的 Original business receipt replay 在公开 lease adapter 的路由。新提交修复了 Monitor 原恢复和相应测试预期,并增加 registration/team-plan 缺失展示恢复、User action 执行拒绝与精确 release 后行政编辑;这些增量分别在原 owner 评判,不能替代 lease CLI 原回执反例。规范重写、底层单测、作者验证或另一份批准都不能替代实际入口反例。最小修复沿原 receipt/transaction owner 完成,再运行上述 CLI recovery、writer isolation 和 fresh-work/refusal 控制;保留独立 CQR/manual hold。delegation_result_use.ts 另把读依赖预算从 15 提到 30 秒,而现有 local-delegation 文档仍写 15 秒;本轮没有取得同负载预算调整证据,未将阈值增加当作等价性或性能通过证明。
我的整体评价
REQUEST_CHANGES。 长期持续工作和用户体验均为 regression:普通 canonical 路径和审核导入有实际价值,但升级时已完成操作不能经原入口继续恢复,给用户增加了本不应必要的迁移阻塞。最小修复是恢复先于 fresh admission,并修好 focused architecture test 的 fixture 依赖及 storage-migration 的现行执行策略样本;重新评审应重放实际入口和相反方向的拒绝。
整批删除重复 writer 的方向有正当原验收依据,保留的历史 codec/receipt 是持久化义务而非新执行策略。前瞻重构检查认可同一 typed policy 和 transaction owner,修复应局部复用,不新增框架;未验证的完整历史/平台采用和 30 秒预算取舍继续明确保留。当前是强制 2.0 行为变更,不是 default-off;旧 disabled creation 偏好不被静默启用,安装、发现或历史 receipt 也不授予执行权。机器拒绝不是“建议”。当前 lease 回归与两项验证缺口使代码提案尚不能批准,更不构成 merge-ready、合并授权或发布资格。
English verdict: REQUEST_CHANGES — At 05e143c, actual public lease renew/transfer CLI retries reject valid pre-cutoff operations before their retained receipt recovery. The same frozen cases recover on the immutable base without changing business state. Repair routing/order, the isolated architecture-test import and current-policy storage-migration fixtures; passing provider, native and wheel checks do not cover these public-entry regressions. Existing quality/manual and rollout qualifications remain separate.
songoow
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; GPT-6; OpenAI; self_reported.
动机
当前 head 05e143c9d022beaf7d0f6e00855ded98564d7c96 未发现剩余阻断性实现问题,结论为 APPROVE;此前发现的四类实现缺口已修复。升级到 2.0 候选的维护者和执行 Agent,需要继续已有任务、重试原操作并处理用户事项。
已提交的 Monitor、项目注册和 team plan 遇到重试或展示文件丢失时,原实现会拒绝合法恢复或重建空模板;修复后从原回执和当前 canonical 状态恢复,并保留后来工作。
普通新写入继续要求 canonical authority;原操作可稳定恢复,User action 不再取得执行租约,绑定人的行政编辑和完成路径可用。
本次评审不宣布发布、不关闭 D2/D3 长期运行、真实模型/Host、NoKV 服务部署或已安装 App 升级验收,也不授予合并权限。
本次重新检查完整 base→head 397 个路径(+14,646/-33,219),并分别审查 4aaec2d4b 之后的修复。上轮冲突处理和测试通过没有被沿用为实现正确的证明。独立依据为 docs/reference/local-authority-provider-selection.md,spec_revision=19c725e3fbf587b0d857863cd319e08ad0efe70c;另核对 docs/reference/canonical-todo-completion-update.md 在 369eda5f71a41062636c825b4d9b60f1ecbaf28c 中已有的“User actions cannot acquire execution leases”约束,未用修订后的文档反向证明实现。
改动思路
复用现有 typed 回执、租约和初始化 owner,Python 只运输来源与投影;这能修复真实重试和用户操作,而不恢复双写或新增平行规则。
本 PR 交付 normal-writer 退役与受支持原操作恢复的可用实现;长期 provider、Host 与发布默认资格仍由原验收边界承担。
最强反对理由是:一次调用能成功,并不保证之后的重试、丢响应、展示损坏和已有租约恢复仍可继续。实测反例验证了这一风险,修复落在原 owner 和实际 caller 上。恢复旧 writer 会重新引入双写;只修改测试会保留真实故障;全面重写 Python 则扩大了无关成本。当前方案保留有用途的历史 reader、锁、IO 和投影,语义与效果仍由 typed owner 负责。
| 实际触发 | 旧候选的失败 | 当前行为 |
|---|---|---|
| 1.x Monitor 已有业务回执、原 quota 事务待结算 | 新写入 gate 提前拒绝原重试 | 核验原身份后结算一次;无回执、改意图和 provider 丢失仍拒绝 |
| canonical Monitor 展示不可解码 | legacy reader 抢在 native receipt 前失败 | v4 只读原回执,无原回执在 planner/commit 前停止;旧 runtime 拒绝 v4 |
| User action 绑定 A,B 申请 lease | B 获得租约后阻断 A 的行政完成 | 所有 User action 执行租约拒绝;原历史 lease 可精确释放,再由绑定 actor 行政操作 |
| 项目注册或 team plan 已提交,之后有新 Todo/展示丢失 | 拒绝原操作或重建空模板 | 原回执恢复、保留后来状态;缺展示从当前 canonical 投影恢复;坏字节不覆盖 |
具体改动
关键代码与真实 caller:
executeCoordinationMonitorPoll:Recover exact original observation before fresh planning。v4 returns only an existing validated receipt; missing receipt refuses before effects.leaseExecutionTargetRejection:Keep administrative User actions outside execution。User action acquire/renew/transfer/current proof/inspect share one rejection; exact release is preserved.initialize_goal_storage_target:Transport frozen creation intent to the typed owner。Source callback runs only when typed preflight requests unfinished creation; completed receipt does not read display.register_project_goal:Idempotent public project registration。Matching registry intent replays its creation; later work stays and missing display uses current canonical projection.apply_team_plan:Reviewed batch caller and original recovery。Original receipt survives missing/undecodable display; fresh source still must be readable.
Monitor v4 是现有 RPC 的 receipt-only 变体,不是通用新观察版本:复用同一 normalized business hash/receipt codec,receipt_only 不进入业务身份;没有原回执就在 source/planner/commit 前拒绝。v0–v3 行为保留,旧 dispatcher 对 v4 的拒绝已实测。原 guard 不属于历史业务 hash,跨 schema 的原回执返回仅是历史读取,不授予新的执行权。
创建 helper 的校验 callback 只在 typed preflight 要求 source capture 时运行,并将已验证字节绑定到后续 capture digest;completed receipt 不依赖展示。注册记录/原请求/route 不符仍失败,缺 provider 不会重建空 authority。team plan 仍核验 actor、proposal 和 reviewed basis;新计划缺可信 source 拒绝。User action 的 task_class 从完整 canonical Todo 传到共享 eligibility,当前 proof/inspection 与 acquire/renew/transfer 一致;释放后也不能靠旧 proof 获得行政例外。
接受规范映射(保留原条款标题):
- Fresh Todo, team-plan or Monitor mutation; new execution grant, renewal or ownership transfer:Fresh mutation requires canonical authority; historical recovery cannot mint new execution. 已由
loopx/control_plane/coordination/local_authority_write.ts与 installed authority refusal and canonical mutation 验证;发布/长期资格保持独立。 - Original business receipt replay:Validate the original identity and return its result before new-work admission. 已由
loopx/control_plane/coordination/todo_monitor_poll.ts与 retained_monitor_receipts_1x.json and ordinary CLI recovery 验证;发布/长期资格保持独立。 - Original lease release or close of its existing execution fence, including an expired active lease:Retain exact original release and close, including expired active leases. 已由
loopx/control_plane/work_items/task_lease_lifecycle.ts与 retained lease receipts plus File/SQLite release and PG conformance 验证;发布/长期资格保持独立。 - Explicit import, supported backup/format recovery and Markdown display:Retain explicit import, supported recovery and permanent Markdown display. 已由
loopx/control_plane/projects/registry.py; loopx/control_plane/work_items/team_plan_adapter.py与 project registration, team-plan and packaged goal-storage recovery 验证;发布/长期资格保持独立。 - Proposed compatibility cutoff and release sequence:Keep the incompatible cutoff in the 2.0 candidate, with release qualification separate. 已由
pyproject.toml; loopx/__init__.py与 normal wheel and external install runtime/metadata 2.0.0a1 验证;发布/长期资格保持独立。
验证:Full TS 4690 passed / 0 failed / 43 PG-gated skips; independent PostgreSQL 16.14 store 365, service 11, team/inspection 31, remaining gated files 40 passed with zero skips. Project CLI 73; Monitor 43; bound User/lease CLI and shared owner regressions; five packaged journeys; final normal wheel and installed authority 6/6 passed.
Python 项目注册 73 例通过;Monitor 最终 43 个新进程用例覆盖旧失败路径;team-plan、User action/lease、导入 completion 和历史 release 均有真实 File/SQLite caller 与反例。完整 TS 运行的 43 个 PG gate skips 没有改写成 passes;独立实库运行另行给出 365/11/31/40 的结果,最终实库均零跳过。包内 Monitor Python 源字节与最终提交一致;最终 wheel SHA256=1b9712c1aad0d80c61aa910af551373c4d5b7a5523d47a9631f1fc1a987ca3c7,checkout 外版本和 Chat HTTP 资产读回通过。
对主干的风险
2.0 停止普通旧 Markdown 写入是明确的不兼容变更;未迁移 Goal 必须走审阅导入,旧配置 false 不能被静默启用。该约束是机器强制 gate,不是建议。历史 source、receipt 或释放操作不能被解释成新执行许可;选定 provider 不可用必须停止。无回执、坏回执、错误 actor/意图/proof、stale revision、后续工作和损坏展示均有对应负例,scope 逃逸与过度拦截两个方向都检查。
扩展 Monitor 回归曾出现 5 个失败:移动 gate 后异常被外层捕获、丢失原类型/结构化字段,以及“provider 不可用”夹具实际未迁移。实现和夹具按原合同修复,五条失败路径在新进程中转绿,没有称作基础设施或基线失败。最后 Python 拒绝类型修复没有改变 TS/frontend;此前五条 packaged 旅程不调用该未迁移 Monitor 路径,明确复用,并重新构建/安装最终 wheel。
公开边界扫描通过;历史 fixture 是最小 synthetic 1.x 产物,只参数化根路径及其绑定指纹,不含真实路径、凭据或活跃 Goal。源码已逐项归入 runtime、文档、耐久回归;生成日志和 uv.lock 未提交。CI 当前尚有 pending,独立证据覆盖代码判断,但合并资格仍应单独检查,不能把该评审当作发布、升级或 admin bypass 授权。
我的整体评价
复用现有 typed 回执、租约和初始化 owner,Python 只运输来源与投影;这能修复真实重试和用户操作,而不恢复双写或新增平行规则。
本 PR 交付 normal-writer 退役与受支持原操作恢复的可用实现;长期 provider、Host 与发布默认资格仍由原验收边界承担。
这次实现方向合理,且已补齐四类会使普通用户卡住的缺口。未来维护的重点仍是原 receipt 与 fresh admission、执行租约与行政 User action、canonical head 与展示的三组边界。已应用的同边界 refactor 是共享 eligibility、删除重复 Monitor 预检、复用创建 preflight 与 projection owner;没有为此次修复引入新的存储、配置开关或恢复框架。保留历史格式有真实恢复 caller,删除生产 writer 不等于删除历史义务。
当前提案可以进入后续 CI/维护者合并资格判断;长期运行、已安装采用和真实模型效果仍未验收。没有剩余已复现的阻断性实现问题,也没有以绿色测试、净删除行数或旧 approval 代替这一判断。
English verdict: APPROVE - 05e143c: canonical-only fresh mutations retain original recovery; User actions cannot gain execution leases; registration and team-plan retries preserve later work and display boundaries. Full TS, real PostgreSQL, packaged journeys and final installed-wheel qualification passed with the stated skip/CI/adoption limits. No merge or release authorization.
Withdrawing my approval after receiving a new same-head review with an actionable public lease renew/transfer recovery counterexample and isolated validation failures. These findings are being independently reproduced and repaired. The earlier validation remains recorded, but it does not cover the missed public adapter route. Discussion and the other review remain intact; a new exact-head review will follow the integrated fix.
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; gpt-6.1-sol; OpenAI; runtime_reported; reasoning_effort=xhigh.
动机
升级旧 Goal 的维护者需要恢复已经完成的原操作,同时保证旧回执、旧租约和提醒事项不会重新授予执行权限。
例如操作已经完成,但展示文件丢失或后续任务发生变化;旧入口可能先要求新的迁移或执行权限,拿不到原结果。新候选先验证原回执并恢复原结果,保留后来工作;User action 提醒只能按绑定身份修改说明,不能领新执行租约。
原回执、注册重放和提醒租约的新边界通过真实 File/SQLite 反例及当前包验证。不过完整 Python 验证发现四个 Chat 存储迁移测试仍在 legacy 模式申请新租约,提前失败,未到达原本需要验证的安全断言。
评审完整2.0候选 retirement 提案;不宣称发布、生产迁移、全部历史组合、D2/D3、自然使用 cohort、Windows、全部 App/Lark、Host 模型采用或长期成本验收完成。
绑定 6396@05e143c9d022beaf7d0f6e00855ded98564d7c96,common-base 为 369eda5f71a41062636c825b4d9b60f1ecbaf28c。阻塞发现 [P2] Chat 存储迁移的 lease/race fixture 尚未适配退役模式(tests/control_plane/test_chat_goal_storage.py:42)。真实请求在 lease acquire 返回 handoff_mode_retired,早于“活跃租约拒绝迁移”和“预览后新增租约要求新预览”断言;每组 File/SQLite 各一项,共四项。主干不可变 base 同样四项通过。这不是已发现生产权限绕过,也不能作为无关历史红灯忽略。
把 Chat Goal-storage 的 lease/race fixture 显式置于受支持的当前执行模式,保留独立的 legacy 新执行拒绝测试;重新验证两种 provider 上“活跃租约阻止迁移”和“预览后新增租约要求新预览”,不得放宽 legacy 退役规则或删除原断言。
改动思路
复用现有 TypeScript policy、terminal、lease 和 provider transaction;删除重复 Python mutation owner,保留历史 decode、精确释放和原回执 reader。新增恢复约束放回既有 owner,App 复用原 preview/apply/readback。 完整候选按当前主干重新整审;原操作恢复与禁止新执行的两侧都要成立,当前尚缺 Chat 存储迁移安全测试的模式适配。
本次整合后有397路径 +14646/-33219;359对 base/head 源码与之前完整 source audit 相同,38对发生变化,已重新阅读并使受影响消费者的证据失效重验。没有沿用4aa旧批准,也没有把主干合入内容算作新的 PR 功能。先前人类撤销的理由是整合基线变化;现在确有新头和 common-base,所以重新做完整评审,而不是同头反复批准。
恢复分支的顺序是:选定 provider 可用 → 原身份回执查询 → 有回执则返回原结果;当展示文件不可读时,v4 request 只允许查原回执,缺失便停止,不能规划新业务。新执行仍经过当前 actor/policy/lease/CAS。提醒事项的历史租约可由原 holder 精确释放,之后绑定 agent 仅修改说明/证据;它不能从历史或新 acquire 获得执行权。文字描述为 source-derived 路径说明,并非执行证明。
最强的反对理由是“删除了旧 writer 就算所有调用者完成迁移”。当前四项 Chat 测试表明消费者收尾仍有遗漏,需要有界适配现有 fixture,而不是扩大框架或恢复 legacy 执行。
具体改动
依据 docs/reference/local-authority-provider-selection.md 在 19c725e3fbf587b0d857863cd319e08ad0efe70c 的已接受文本,逐条判断:Retirement boundaries before changing the release default 为 not_met——普通 legacy writer/proof 的退役及原回执恢复已验证,但两组实际 Chat 存储迁移安全验收未到达目标断言,修复如上。Proposed compatibility cutoff and release sequence 为 implemented——明确2.0.0a1候选不兼容切换,保留 provider/fence/原身份和历史恢复;安装或回读旧结果不等于迁移、发布默认或新执行授权。
整案删除普通 Markdown mutation 分派、重复 Python lease/CAS/owner 链和未使用 governance;保留历史 decode、source witness、精确 cleanup。新 delta 补齐 monitor receipt-first、User action 非执行、completed registration 原结果重放,以及 team-plan 缺失/坏展示恢复。注册仅在 typed creation owner 要求 unfinished source capture 时校验原始创建内容;已完成回执不能被后写误判为冲突,缺展示从当前 canonical Todos 投影,不用空初始模板重建。不可读已有文件不被覆盖。
关键代码讲解
executeCoordinationMonitorPoll:保持原 wire identity/hash,先 receipt.read;receipt_only 缺回执在 observe/plan/commit 前拒绝。v4 扩展现有 request 词表,使旧 runtime 不能忽略新限制;它不是新持久权限状态。leaseExecutionTargetRejection:同一 typed predicate 约束 acquire、renew、transfer、proof 与 inspection;User action 不能执行,原 holder 的精确 release 单独保留,行政 metadata 编辑须满足绑定身份/provider CAS 且不能携带执行 proof。- 注册恢复 owner:validation callback 只在 typed owner 请求源捕获时读取;SHA 对照防止校验期间源变化。完成后的原回执重放不重新认证初始空状态,当前后写保留。
- 遗漏的 fixture:canonical projection 仍显式 legacy,两个后续测试申请新 lease 时先被正确退役策略拒绝;因此没有测到原迁移 guard。只换当前模式的私有诊断副本四项通过,保留全部原安全断言;这定位了最小修复,不代表 tracked head 已修复。
对主干的风险
本轮27个 Python 模块 620 passed /4 failed,四个失败均为上述 fixture/admission。同样四项在不可变 main base 4 passed;私有副本仅把 fixture 的 state/projection 从 legacy 改 hard_lease 后 4 passed,生产代码未变。不能删除失败测试、恢复旧 grant 或把诊断成功写成 head 全绿。单独 User action 六项和 split-root 八项也通过。
当前21个 typed suite 1104 passed /3 skipped;随后在隔离真实 PostgreSQL16.2 四个独立数据库分别通过 store365、service2、teamplan16、inspection15(无跳过),覆盖起初三个 PG skip;去重为 1490个 typed case,未把 skip 先算成功或重复计算 inspection。数据库为一次性合成数据,已停止服务器,没有改动活动 Goal。新回归原样放到不可变4aa,注册四项、提醒租约四项和原1.x monitor 一项共九项预期失败,当前对应全部通过;它们能辨别新边界,不仅复制当前输出。
当前 wheel 在 checkout 外独立环境六段资格化通过;实际安装 wheel 的重新规划、User action、Goal 创建、能力范围四个 Chromium 场景通过,场景仍是合成 fixture,不证明生产 freshness、模型采用或自然使用。源码风险 canary 的5直接/19选定检查均过,但总 gate 是 quality_stale_receipt,另有 benchmark_sensitive 人工合并限制;二者保留,不伪称 canary 总绿。DCO 贡献提交检查和公开边界扫描通过,两枚无 trailer merge 按现行规则逐个核对 GitHub exact SHA/parents/web-flow 的 valid 签名豁免。语义 advisory 在 full semantic 前执行;新增 v4 字面量也人工追踪,空 advisory 不作为语义证明。
旧4aa的702Python/1482typed、历史失败和旧安装证据仅保留为已注明 revision 的历史,不计作本轮通过。新源配对允许复用未变的源码分析,不允许继承旧结论。未查询、轮询或等待 GitHub CI,未合并、dismiss review、升级或调整权限。
我的整体评价
REQUEST_CHANGES,唯一阻塞是当前四项 Chat 迁移测试未适配支持的模式,导致该真实消费者的安全路径尚未资格化。新增原回执恢复、后写保留和 User action 不能执行的方向成立;long_horizon 为 improved,user_experience 在这两个迁移安全旅程为 not_yet_proven。修复现有 fixture、保留 legacy 拒绝负例并重跑即可,不要求无关全历史 cohort 或全量发布验证。
Future-facing pass 已应用:当前执行资格共享 typed predicate,原回执查询留在现有事务 owner,Python 只保留 IO/传输,不增加第二个事实源。v4 是现有监控请求词表扩展,属于 fail-closed 兼容成本;历史持久回执继续可读,不等于保留每个旧普通 writer。默认是明确披露的2.0候选切换,未伪装 opt-in;迁移/拒绝是机器义务,文档指南不授予权限。CQR、人工合并限制、长期/发布与所有原开放验收保持独立。
English verdict: REQUEST_CHANGES — the new original-receipt and non-executable User-action boundaries are well supported, but four current Chat storage-migration tests fail before their active-lease/race assertions because the fixture still requests new execution under retired legacy policy. The immutable main control passes; a current-mode-only diagnostic also passes without weakening assertions. Adapt the existing consumer fixture and retain the legacy refusal coverage before approval.
Signed-off-by: song <liusongstep@gmail.com>
…afeguards Signed-off-by: song <liusongstep@gmail.com>
Signed-off-by: song <liusongstep@gmail.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=xhigh.
动机
升级旧 Goal 的维护者需要恢复已经完成的原操作,同时保证旧回执、旧租约和提醒事项不会重新授予执行权限。
例如旧租约的续期或转交已经生效,但客户端没拿到结果。此前公开入口先按新执行规则拒绝,无法读回原操作。现在先按已记录的存储归属进入原生生命周期 owner,仅允许匹配原身份和已落地效果的回执恢复;改变参数仍是新操作。
prepared 和 committed 两种历史回执,在当前公开 CLI 及新建 wheel 安装环境中都能重复返回原结果,原 lease、registry 和 Markdown 字节不变;错误身份、新效果和 provider 丢失仍拒绝。原 Chat 存储迁移测试也在当前支持模式下真正到达租约保护断言。
这是完整 2.0 退役候选的代码评审,不宣称发布、生产迁移、所有历史格式、D2/D3、自然使用 cohort、Windows、真实模型采用或长期成本验收完成。
本评审绑定完整 6396@ffc2741735d8a511da06ff9ef1f9d302038a466c,对照 369eda5f71a41062636c825b4d9b60f1ecbaf28c,共397路径 +14832/-33222。390组 base/head blob pair 与上次 05e143c9d022beaf7d0f6e00855ded98564d7c96 相同,7组改变;复用的是有失效检查的源码及入口证据,没有继承旧 verdict。此前公开租约恢复、架构 fixture 导入和 Chat 迁移测试的阻塞,均在当前提交重新核对。当前没有发现代码阻塞项;这不消除独立的人工合并门槛。
改动思路
复用现有 TypeScript policy、terminal、lease 和 provider transaction;删除重复 Python mutation owner,保留历史 decode、精确释放和原回执 reader。Python 选择已记录的 authority route,原生 owner 判定恢复资格,App 复用既有 preview/apply/readback。 完整评审当前 2.0 候选的正常旧写路径退役、原操作恢复和既有用户入口适配;不把候选评审当成发布、迁移或父级长期验收完成。
维护者遇到的是一次操作完成后不确定结果,而不是请求新的执行权。最短合法路径应是用已知的原 owner/key/version 再调用原入口,拿到原结果;不能要求先创建新租约、删旧记录或重新迁移来恢复已经发生的事。反过来,改 TTL、receiver、key、epoch 或补充 claim transfer 都不能冒充“重试”。
以下表格是当前源码的边界说明,不作为执行证据:
| 已有事实 | 路由和判断 | 允许的结果 |
|---|---|---|
| 已记录 canonical provider | 保持原 provider,即使暂时离线 | 原生 owner 决定;离线不能回退到旧来源 |
| 未迁移来源,有匹配原回执与已落地 lease | 保留的原生历史 owner 检查 identity、效果与代际 | 仅恢复原结果,prepared 可补齐 committed |
| 原回执缺失、未落地或 intent 改变 | 原生 owner 拒绝 fresh work | 不增发续期、转交或执行权 |
| 原 expired active lease 需要释放 | 仍按原 owner/key/version 和 fence 清理 | 允许精确 settlement;未释放不能被迁移忽略 |
最强反对理由是将一次大范围删除当成完成,忽略仍在运行的 App/CLI/monitor/lease 调用方。当前验证沿实际公开 parser 和安装后的 wheel 走到原生 owner;Chat fixture 也必须在支持的模式下到达原来的 race/active-lease 断言。它没有通过放宽 legacy 退役、删除失败断言或新增 Python 业务判定来换取绿灯。
具体改动
独立依据是 docs/reference/local-authority-provider-selection.md 在 19c725e3fbf587b0d857863cd319e08ad0efe70c 的既有要求,特别是其退役表、原操作恢复和现有 App 存储切换边界:
- Selection contract — implemented:local_authority.py / task_lease_acquire_adapter.py;当前执行证据及其边界见下方风险段。
- Failure and compatibility rules — implemented:typed receipt/lifecycle/monitor/source owners;当前执行证据及其边界见下方风险段。
- Retirement boundaries before changing the release default — implemented:deleted legacy writers, concrete typed owners and retained recovery readers;当前执行证据及其边界见下方风险段。
- Proposed compatibility cutoff and release sequence — implemented:2.0 version/docs / handoff policy / Chat current-mode fixtures;当前执行证据及其边界见下方风险段。
- Existing canonical Goal storage in the App — implemented:Chat storage preview/apply and existing App setting;当前执行证据及其边界见下方风险段。
- Original business receipt replay — implemented:retained native ordinaryOperation; canonical receipt; fixed public lifecycle CLI;当前执行证据及其边界见下方风险段。
关键代码讲解
run_native_task_lease_lifecycle的路由:renew/transfer/release 根据已记录的 promotion 决定 canonical 或 retained-source 路由,不先用 fresh-work policy 把历史入口堵住。Python 没有自己判断回执是否可恢复,也不复制 lease eligibility;错误仍经现有公开 envelope 映射。promoted Goal 的 provider 丢失仍进入 canonical 路径拒绝,不能重新创建旧来源权威。- 原生 canonical lifecycle 与保留的 source lifecycle:先识别原操作身份,再验证其 recorded result;历史读取不等于当前 proof。source 的 ordinaryOperation 仅恢复已经落地且身份相同的 prepared/committed 结果,未落地新效果仍拒绝。release 保留原 owner/key/version/epoch/fence,过期 active lease 仍阻止导入,不能删记录绕过迁移。
- 公开 CLI 的固定历史用例:从固定1.x artifact 复原输入,不调用已退役 writer 来制造“历史”。四组 renew/transfer ×prepared/committed 经过 parser、Python adapter 和 native owner,每组重复,核对 registry/Markdown/lease 字节;负例分别改 TTL、owner/key/version、receiver、claim transfer、代际、回执和实际效果。
- 其余候选仍由既有 typed owner 管:普通 legacy Todo/monitor/teamplan 写实现与 dispatch 一起退出;canonical policy、lease proof/inspection、terminal、User action 行政修改、原 monitor/registration/teamplan 回执和 source import/history/readback 保留清晰职责。
receipt_only是收窄既有 monitor request 的临时意图,不是另一个持久授权字段;无法读展示文件不能推断 canonical 工作不存在。
本次7组改动还包括架构测试使用 qualified fixture import,Chat storage lease fixture 显式选择当前 hard_lease,并保留 legacy 新执行拒绝用例;migration guard 在租约仍 active 时一直阻止,精确 release 后才继续。delegation result-use 的资格等待恢复 15秒,相应测试在14/16秒两侧区分;没有沿用此前未经证实的30秒扩大。新增的 provider postgresql_v0 词汇投影复用现有 typed store id,不在 Python 新建业务 authority。
对主干的风险
当前受影响 161 Python 全通过、0 skip,包含公开租约恢复、完整架构 receipt/source 边界、Chat storage 正负与 race、lease 和 delegation deadline。焦点 14 TypeScript 全通过;更广21文件 1104 pass、3 PostgreSQL skip,另用真实 PostgreSQL 16.14、每个 suite 独立数据库执行 store/service/teamplan/lease inspection,398 pass、0 skip,覆盖原先依赖真实服务的路径。两组数字分别报告,未混作不重叠用例总数。类型、正常前端 build、wheel、252个现存 Python 候选路径 Ruff、DCO、diff/public-private 扫描、先 advisory 后 full semantic 均通过。
回归敏感性在真实公开入口验证:同四个新 oracle 放到不可变旧 05e143c9d022beaf7d0f6e00855ded98564d7c96,全部被 canonical_authority_required 挡住;当前提交四组通过。又构建当前正常 wheel,在 checkout 外新建隔离 Python 3.11.17 安装环境,通过 -I -m loopx.cli 执行这四种固定历史状态,每种两次,8次 replay 全通过,原 lease/registry/Markdown 字节不变,未创建 canonical authority。prepared 只补齐同一原 receipt 的 committed 状态。改变意图、缺回执、prepared 无实际效果、later generation、wrong receiver 和 selected-provider loss 的当前源入口负例均保持拒绝。
正常 wheel 的 6阶段 installed E2E 也通过,覆盖外部安装资源、File 创建/直接操作、lease、原结果重试及 legacy bootstrap 拒绝。既有 App 创建/存储迁移/错误恢复四组安装浏览器证据的 frontend/API/依赖和调用方已按390组不变矩阵重新检查,当前 bundle 与 wheel 重新构建;本轮没有把旧截图称为当前新视觉执行,也没有调用付费模型证明采用。前一轮 Chat 的4个早期 fixture 失败保持在历史记录;当前已修改 fixture 的完整 suite 真正到达原迁移保护,不用私有诊断改动代替仓库修复。
canary 5 direct +19 selected 均通过,0执行失败,但总体仍是 manual_review_required:benchmark-sensitive 路径要求明确维护者审查,自合并验证因此不成立。它不是测试失败,也不能被测试绿灯绕过;本轮不查询、轮询或等待远端 CI。初次 PostgreSQL harness 把不同 incarnation 的测试文件放进同一 DB,被 identity fence 正确拒绝;改为每文件独立 DB 后才采用上述通过结果。原始失败保留,未改产品、阈值或活动 Goal 数据。
我的整体评价
APPROVE 当前完整 exact head,是 justified_increment。long_horizon 改善在于中断后能恢复原结果,同时不把历史当成新执行;user_experience 改善在于原 CLI 与已有 App preview/apply/readback 保持可操作,迁移 race 和不可用状态有明确恢复路径。它不是“整个2.0已经发布或长期资格化”的结论,原 release、平台和自然运行验收仍保留。
Future-facing pass 已应用:删除普通旧写 owner,复用 typed policy、receipt、lease 和 provider transaction;当前 Python adapter 只选择 recorded authority,不复制原生恢复规则。历史 receipt/lease 格式有实际持久消费者,保留 reader 合理,但不构成保留所有旧 writer/输入授权的理由。没有必要增加新 recovery framework 或同步标志;边界清楚、可独立回退。当前 approval 与人工 benchmark gate、exact-head merge readiness、发布/迁移授权分开处理,本轮不执行 merge、升级或其他 Agent 的配置变更。
English verdict: APPROVE — the public lease adapter now routes by recorded authority so the native owner can recover only the original historical effect. Four old-head CLI counterexamples fail; all current cases and eight isolated installed-wheel replays pass with unchanged source/lease bytes. Current Chat migration guards and the15-second deadline are qualified. The19 canaries pass, while the benchmark-sensitive maintainer gate remains; release and sustained-use acceptance are not claimed.
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
fix: qualify canonical status reads and repair canary selection
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.
动机
升级到 2.0 候选的维护者,以及通过 CLI、Monitor、team-plan 和 App 继续处理任务的调用者。
旧操作已生效但响应丢失,或展示文件损坏后,调用者应能恢复原结果;同时旧租约和回执不能成为新执行权。当前实现将原回执恢复与新操作准入分开,保留后来写入。
当前包可恢复固定 1.x 续期与转交回执、拒绝改意图重放,并通过真实 canonical 创建、操作和独立读回;App 的绑定 User action 可完成或撤回,其他 actor 被拒绝。
不宣称 2.0 已发布、生产迁移已完成、所有历史格式或 Host/平台均已验收;D2/D3、自然使用和维护者合并授权仍独立。
当前代码提案可以进入合并决策;完整发布、安装态 Host/cohort、长期 provider 资格和明确合并授权仍未完成。
本评审覆盖完整 6396@5d29213d3ac9f12d0c61bc509ed296cbdfd149ea,对照 common-base 369eda5f71a41062636c825b4d9b60f1ecbaf28c,共 403 路径,+14,991/-33,260。当前头与已整合补缺的 e3db550e39fc00748a11ef8443fe22168b9b25b0 文件树相同。353 组 base/head blob pair 与此前完整源码审计相同;50 组变化已重新追踪到消费者和验证,复用证据保留原 revision,没有继承旧批准。
改动思路
普通写入、执行资格和回执事务归于已有 TypeScript owner;Python 保留实际需要的 IO 与路由,历史恢复不再拥有普通写入能力。
本 PR 是完整 caller-family 的 2.0 退役代码提案;发布默认、完整历史支持和长期采用仍由原验收边界负责。
正常 Todo/claim、bootstrap、team-plan、Monitor 和租约的新操作进入选定 provider 的同一事务规则。未迁移来源在副作用前拒绝并提示审核导入;现有 canonical File 不被强制改成 SQLite。旧 legacy 输入只用于历史解码、精确释放和原操作恢复,当前执行只有 soft_claim、hard_lease。已经选择但不可用的 provider 必须报错,不能回退到 Markdown。
最容易漏掉的分支是公开 adapter:底层支持原回执,外层却提前要求新的执行权限。当前租约路由按已记录 authority 选择原生 owner;原 owner 校验原 identity、digest、代际和实际效果后返回原结果。prepared 仅能补齐已经落地的同一操作,改 TTL、receiver、key 或版本仍拒绝。删除旧 writer 与保留这条恢复路径共同构成有用的退役切片。
具体改动
独立规范依据为 docs/reference/local-authority-provider-selection.md,固定 revision 19c725e3fbf587b0d857863cd319e08ad0efe70c。本 PR 对文档的验收叙述不能反过来证明实现。按原表格行和章节名称核对:
| 原约定 | 当前提案判断与证据边界 |
|---|---|
| Fresh Todo, team-plan or Monitor mutation; new execution grant, renewal or ownership transfer | implemented:普通源 writer/dispatch 一起退出;当前 canonical 创建、修改和拒绝旧源路径经真实 CLI、安装包及 provider 事务验证。 |
| Original lease release or close of its existing execution fence, including an expired active lease | implemented:原 holder/key/version/generation/fence 校验与精确释放保留;过期但未释放的租约仍能阻止迁移。 |
| Original business receipt replay | implemented:公开 renew/transfer、Monitor、注册和 team-plan 恢复原结果;错误身份、改意图、后代状态和 provider 丢失仍拒绝。 |
| Prepared or committed shadow work | retained:停止普通 producer,保留实际在用的原回执、outbox、cursor 对账 owner;有界恢复证据不等于全部历史组合或持续资格完成。 |
| Explicit import, supported backup/format recovery and Markdown display | bounded implementation verified:审核导入、source witness、原历史读回和永久文档投影保留;缺 provider 不新建空权威,退出不丢后来写入。完整历史支持矩阵仍独立。 |
| Proposed compatibility cutoff and release sequence | implemented as proposal:package/runtime 对齐 2.0.0a1,明确 breaking cutoff;安装、provider 切换、policy 升级和正式发布分别判断。 |
关键实现:
retiredHandoffModeRejection用明确的现有 policy 值统一限制当前执行;没有从描述文字推断授权。历史 reader 和 release 不被当成新的 grant。ordinaryOperation先核对原回执与实际 lease,返回匹配结果,再拒绝 fresh source renew/transfer;Python 仅选择 recorded authority 路由,没有复制恢复判定。executeCoordinationMonitorPoll保持原业务 hash,先查原 receipt。v4 的receipt_only缺回执就在 observe/plan/commit 前停止,旧 runtime 无法忽略新限制后继续执行。leaseExecutionTargetRejection复用既有task_class,使提醒事项不能 acquire/renew/transfer 或获得当前 proof;绑定 actor 的行政操作另经当前 provider/CAS 校验。packaged App 已实际完成及撤回,外来 actor 被拒绝。- 注册源验证 只在 typed creation owner 仍需源捕获时执行;已完成原回执重放不会重验初始空模板。缺展示时投影当前 canonical 数据,保留后来工作;不可读的现有文件不会被直接覆盖。
整案还迁移实际消费者和有意义的安全测试,删除普通 Markdown mutation、source capture producer、重复 Python ownership/CAS 和无调用者的 governance。保留的 codec、lock、精确 cleanup、backup/import、history/readback 仍有持久记录或公开恢复消费者,不能只因代码旧就删除。CLI、MCP、Turn、受支持 Lark adapter 和既有 App 设置/操作复用相同 owner;模拟 IM 不当作真实 Lark/Host 采用。
此前阻塞逐项核销:注册包装层参数已正确转发;team-plan 原回执顺序已修正;导入完成记录通过普通 Python producer 只补缺失 continuation,保留原时间/identity/evidence;版本 metadata 已对齐;consumer absence fixture 已局部修复;公开租约恢复及独立架构 fixture import 已修复;Chat migration fixtures 在支持的 hard_lease 下真正到达原 active-lease/race 断言,并保留 legacy 拒绝。此前无依据的 delegation 等待扩大已恢复为 15 秒,14/16 秒两侧仍有验证。最近补缺还把 canary 的失效旧脚本目标换成既有 run-history 检查,默认三项选择不变,完整选择只更正第四项及说明,没有新增重复 smoke。
对主干的风险
本次两个互不重叠 Python 集合 424 passed、0 skipped,覆盖公开 lease recovery、Monitor、team-plan、注册、Chat storage、replan、canonical grant、原生规划修改、split-root、架构边界和 delegation deadline。另对原 imported-completion 公共 producer 的 File/SQLite × plain/validated 4 项通过,合计本次 428 passed、0 skipped;原 key/time/claim/evidence 保留,仅补缺失 continuation,随后重放和合法 closeout 可用。焦点 typed 检查 86 passed、3 skipped、0 failed;三个 skip 是需要真实 PostgreSQL 的路径,不算通过。
真实 PostgreSQL 16.15 的 store/inspection 共 380 passed、0 skipped 证据来自 60186f44396b66a31d7dfc6f403d0c4eb523b087 的隔离数据库和一次性 server。到当前头只改变四个 smoke/planner 路径,authority owner、测试、fixtures、包依赖均未变,所以只在这个范围复用。没有把它称为当前重新跑过的数据库验证,也没有改动活动 Goal。
当前正常 wheel 的 六个必需 installed E2E 阶段通过,fail/pending/unverified 均为 0。同一 wheel 在 checkout 外全新非 editable Python 3.14.8 环境,经 -I -m loopx.cli 执行固定 1.x renew/transfer × prepared/committed 四组,各重放两次;8 次恢复成功,改变 TTL 拒绝,registry/Markdown/lease 业务字节不变,未创建 canonical authority。prepared 只结清同一原 receipt。最初私有探针在业务断言全部通过后,清理时撞上 Node 退出写缓存的竞态;改用既有等待进程退出接口后完整复验通过,产品和 oracle 未改。
当前 packaged attention-user-action 场景通过真实 HTTP/ChatActionService/File 后端验证 preview/apply/readback、完成、撤回和错误 actor;无关 API 使用合成 fixture。此场景的 API 是当前源码后端,wheel 独立验证另行报告。较早的 storage import/create 等 packaged 场景仅在 frontend/API/dependency 源配对仍相同时复用,未将旧截图或合成场景称为安装版 Desktop、模型采用或生产迁移。
Control-plane typecheck、先 diff advisory 后完整 semantic 均通过;新增 postgresql_v0 复用已有 provider vocabulary,Monitor v4 是现有请求协议扩展,人工核对探针未覆盖的字面量。语义清单仍列出的长期 producer/formal coverage 不被本次合格抹去。普通新操作退役是明确的 2.0 默认行为改变;canonical_creation=false 仍解码为 false 并拒绝新创建,不能静默改成启用。迁移指引是建议,准入拒绝是机器义务。
对完整403路径实际运行风险 canary:5项 direct、19项 selected/executed 全部通过,命令失败为0。整体仍 exit 1 / quality_receipt_missing:缺少本完整范围的 CQR receipt,另有 benchmark_sensitive 维护者审查限制。原六文件补缺的 canary 通过不能覆盖或豁免这个完整范围门槛;本评审不把整体 gate 称为绿灯,也不以代码批准代替合并资格。
此前 broad Python/public smoke 的失败记录保留;相关 Chat fixture、handoff/global-manager stale expectation 与 canary 目标已修复,并由当前测试、真实 CLI 和相反方向 mutation 区分。没有宣称当前完整全仓 suite 或远端 CI 全绿;本 Goal 要求不查询、轮询或等待 CI。Git 试合并无冲突只证明文本可集成,不能替代合并后的运行验证。当前 branch 状态、CQR/人工限制和合并前 readiness 继续由原门处理。
我的整体评价
APPROVE 当前完整提交,problem_context=justified_increment。long_horizon 与 user_experience 的改善有实际入口支持:原操作可以恢复、后来工作保留,当前执行权继续由唯一 typed owner 判断,提醒事项仍能经已有 App 完成行政操作。没有发现未解决的代码阻塞项。
Future-facing pass 已应用:删除重复决策与无正常 caller 的旧 writer,保留有真实历史消费者的恢复 IO,复用 typed policy/receipt/provider transaction。下一次 policy 或 recovery 变化可以定位在已有 owner,无须再造 recovery framework、配置开关或第二份 Python 状态机。净删除 18,269 行降低了维护成本;这个判断依据是调用链和恢复验证,删除量本身不代表正确。
本批准保留原讨论、未完成发布/平台/自然 cohort/D2/D3 验收与明确维护者合并门;不执行 merge、升级或其它 Agent 的状态变更。
English verdict: APPROVE — 6396@5d29213d3ac9f12d0c61bc509ed296cbdfd149ea retires normal legacy writers while preserving original-operation recovery and current canonical callers. Public and isolated installed-wheel retries, refusal controls and real packaged User-action paths pass. Earlier entrypoint and fixture blockers are resolved; PostgreSQL evidence is reused only for unchanged owners. Release, sustained adoption and merge authority remain separate.
|
同一提交 补齐回执后,重新执行完整 PR 的 canary:5 项 direct、19 项 selected/executed 全过,0 命令失败、0 quality-receipt failure。整体为 当前原生 exact-head merge-readiness 返回 |
|
RFC 对照与主干组合验证,绑定 完整 exact-head 评审的代码结论仍有效。本次补充整体交付判断和新增主干的集成证据,没有修改该提交,也没有重复提交一个评审票。 对照本次读取的主干
因此,这个提案有清晰的合并价值:按目录划分,产品路径净减 5,902 行,测试/示例/测试支持路径净减 12,541 行。真正的收益是减少正常写入与决策 owner,同时保留受支持的恢复行为;总删除量不能代替这个判断。它可以作为 2.0 源码退役阶段评估,不应被描述为正式 2.0 发布或完整 R5/D2/D3 完成。 新增主干组合验证:相对共同基线 尚有三项非阻塞 refine,建议随下一次相关收口一起做:
后续优先级建议:先完成一个准确安装版本上的 CLI/App/Host 升级、原操作恢复和保留新写入的回退旅程;在支持范围内开展可逆实际使用,并完成现有 R1/R2 的两轮依赖产物、纠偏和返回验收;并行沿原 D2 计划补持续负载、增长和恢复证据。已有 SQLite 默认/创建 owner 和迁移实现应直接复用,正式发布默认仍单独决策。历史 codec、精确释放和原 receipt reader 的退出应由各自支持窗口决定。 当前代码 approval、完整 CQR、benchmark-sensitive 维护者人工限制和将来真正合并前的 freshness/readiness 各自保留。本次没有合并、发布或切换任何现有 Goal。 |
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…oints Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
|
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 |
…ements-20261015 refactor(authority): reconcile retirement checkpoints and target types
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.
动机
升级到 2.0 候选的维护者,以及通过 CLI、Monitor、team-plan 和 App 继续处理任务的调用者。
旧操作已生效但响应丢失,或展示文件损坏后,调用者应能恢复原结果;同时旧租约和回执不能成为新执行权。当前实现将原回执恢复与新操作准入分开,保留后来写入。
当前包可恢复固定 1.x 续期与转交回执、拒绝改意图重放,并通过真实 canonical 创建、操作和独立读回;App 的绑定 User action 可完成或撤回,其他 actor 被拒绝。
不宣称 2.0 已发布、生产迁移已完成、所有历史格式或 Host/平台均已验收;D2/D3、自然使用和维护者合并授权仍独立。
本次对整个 6396@8484a217c8afcd0c252cb988d78b4e476763a66a 重新判断,同时检查新主干集成。最新 main 的优先级与 Monitor 改动尚未与候选组合;六处冲突和受影响恢复/负例需要先完成同步与验证。
当前改动有明确退役价值,但需先完成这个同步修复包,再判断是否可进入主干。原 C1 已承接后续,不把整个 R5、自然采用或正式 D2 强加为有界代码提案的前置。
改动思路
普通写入与当前执行资格继续归既有 typed owner;历史回执、精确 release 和有备份的 import/recovery 保留。fork 补缺 #4 的双值目标类型和 EN/ZH checkpoint 已进入本 head,当前 type-only 输出与前任相同。历史 HandoffMode 仍识别三值,不从历史回执创造新执行权。
新问题来自组合边界:我独立读取的 main 是 7c1f12a47c75a39cb37514e26b3570f3ef22f3f3,较此前合格的 2abf983157f71153b7bc910a67aa8f7753fe9d9b 又改变了 canonical 新建默认 P1、显式/继承优先级、Monitor successor priority 及相应恢复验证。处理删除/修改冲突时,要把仍有价值的规则留在 canonical TS owner,保持旧 writer 删除。简单恢复主干旧实现或整段采用候选都不足以证明这个结果。
当前 PR 边界仍是完整2.0退役提案;新增修复边界是一次有明确两父版本的 main 同步及真实组合验证。复用现有 priority、Monitor、receipt 和 provider owner,无需新框架、并行 Python 决策或另一个默认设置。
具体改动
规范仍以 docs/reference/local-authority-provider-selection.md 的固定 revision 19c725e3fbf587b0d857863cd319e08ad0efe70c 为准,当前 PR 修改后的验收叙述不能自行证明实现。原约定逐项保留:
| 原规范条目 | 当前判断与范围 |
|---|---|
| Fresh Todo, team-plan or Monitor mutation; new execution grant, renewal or ownership transfer | 源码退役/恢复边界的既有证据按原 source 复用;新 main 组合尚未验证。 |
| Original lease release or close of its existing execution fence, including an expired active lease | 源码退役/恢复边界的既有证据按原 source 复用;新 main 组合尚未验证。 |
| Original business receipt replay | 源码退役/恢复边界的既有证据按原 source 复用;新 main 组合尚未验证。 |
| Prepared or committed shadow work | 源码退役/恢复边界的既有证据按原 source 复用;新 main 组合尚未验证。 |
| Explicit import, supported backup/format recovery and Markdown display | 源码退役/恢复边界的既有证据按原 source 复用;新 main 组合尚未验证。 |
| Proposed compatibility cutoff and release sequence | 源码退役/恢复边界的既有证据按原 source 复用;新 main 组合尚未验证。 |
整个 PR 为408路径,+15093/-33279。400组 common-base/head blob pair 与已审前任5d完全相同;8组变化为四个类型/注释调用点和四份双语文档,已独立逐项复核。普通 writer/capture/private dispatch 删除、原1.x Monitor/lease/team-plan恢复、User action行政操作与selected-provider拒绝回退仍是核心交付,前任的源码、正常安装包和真实backend结果仅用于未改变的owner,不改写测试revision。
P1:当前 main 同步存在6处实际冲突,须在合并前解决并验证组合语义。 git merge-tree --write-tree 8484a217c8afcd0c252cb988d78b4e476763a66a 7c1f12a47c75a39cb37514e26b3570f3ef22f3f3 返回1;冲突路径为:
apps/presentation/dashboard/src/data/chat.ts:合并现有导入与共享 ExecutionHandoffMode,保留两侧当前消费者。loopx/control_plane/todos/mutation_api.py:main的新legacy默认优先级准备位于候选已删fallback;保留canonicaltodo_create.ts/priority.ts的新建P1规则和原receipt-first顺序,不能恢复普通Markdown writer。loopx/control_plane/scheduler/legacy_monitor_poll.py:候选删除、main修改。普通旧writer仍应退出;新的合法priority与receipt验证应由当前typed Monitor owner接续。tests/control_plane/test_monitor_poll_transaction_recovery.py:保留候选固定历史receipt/无重复副作用边界,并吸收main的priority及有界shadow catchup义务;只选一侧会丢掉另一侧已知验收。tests/control_plane/test_todo_mutation_authority.py:组合canonical/actor边界和新的默认P1预期,不删除合法的负例。tests/test_todo_write_serialization.py:已退役普通writer的旧实现专属测试保持删除;仍有效的优先级和并发不变量应落到canonical现有测试,而非恢复旧IO。
最低修复是向Duang原分支提交一个完整同步补充,保留当前P1、显式优先级、前任继承以及旧Monitor请求在省略新增字段时的原hash/receipt。相同输入重放必须返回原结果,不因补新字段重做业务写入;changed intent/provider loss和fresh legacy执行仍拒绝。真实File/SQLite CLI、受影响真实PG以及packaged前端应针对修复后的组合tree验证,再做当前head的整PR CQR/canary和评审。
对主干的风险
旧结果仍有价值但不覆盖新组合。此前5d的428 Python、typed及正常wheel六阶段、固定1.x租约重放/真实App owner证据保留原revision;相关真实PG owner未变的部分继续按原来源使用。补缺6683/当前8484同tree上的93 Python、22 typed、类型擦除JS相同、生产bundle、4+4配对CLI及故意删hard_lease时两臂失败的敏感性也保留,重叠不求和。这些不能声称7c组合已通过。
本轮实际执行的是最新两头对账、全408路径/blob复用失效检查、三方merge-tree及冲突/新owner语义追踪;组合返回1,未得到可运行的完整source。408路径质量包已准备,未把旧403路径或补充8路径receipt称为本head整PR pass。没有拉取、轮询或等待CI,符合当前 review packet;CI状态不作为本次理由。
最强风险是机械解冲突造成新canonical规则丢失或旧writer复活;修复后的实际CLI与provider独立读回才能排除。原回执/有界drain、错误诊断/无新grant和后写保护均应保留。正式1.x发布顺序、benchmark-sensitive人工限制、安装采用/Host与持续D2/default资格仍各自独立,本次没有合并或迁移活跃Goal。
我的整体评价
REQUEST_CHANGES,当前需要一个有界main同步和语义验证包。2.0退役、历史恢复和已吸收的类型/文档补缺继续有价值,当前阻塞已经具体落到六个路径与新的canonical priority/Monitor义务,不再安排重复writer删除。修复不需要推翻架构或改语言;把新增主干语义接到现有owner并验证即可。
原有代码结论和旧版本组合证据按来源保留,新head的批准不能从前任推导。请在同步补充后按准确head/base重新审查与readiness;正式1.4.2发布前仍不合并本PR。后续真实采用、Goal lifetime和长期存储资格由既有验收继续承担。
English verdict: REQUEST_CHANGES — head 8484a217c8afcd0c252cb988d78b4e476763a66a. Reproduce six conflicts against main 7c1f12a47c75a39cb37514e26b3570f3ef22f3f3. Preserve canonical fresh/default/inherited priority, original Monitor receipt/hash semantics and bounded recovery while keeping legacy writers retired; qualify the actual combined tree before new approval. Prior source-qualified evidence remains useful but does not certify this integration.
Goal And Delivered Outcome
Retire normal Markdown mutation writers for the 2.0 candidate while preserving canonical File/SQLite/PostgreSQL operations, reviewed import, historical original-operation recovery, and usable CLI/App callers. Markdown remains a projection and supported import/recovery source.
This proposal also repairs five implementation gaps found through real caller counterexamples: original Monitor retries were blocked by fresh-work admission; public retained lease renew/transfer retries were forced into canonical admission; User actions could acquire execution leases that blocked their bound actor; completed project registration compared later work with its empty creation template; and committed team plans could not replay without their Markdown display.
The resulting behavior is:
Author Declaration
Agent-assisted implementation and review follow-ups preserve the contributor's original branch history. Every new commit uses a DCO sign-off. No merge or release is performed by this update.
Specification And Scope
The independent acceptance basis is
docs/reference/local-authority-provider-selection.mdat19c725e3fbf587b0d857863cd319e08ad0efe70c, including original business-receipt replay before fresh admission and the separate 2.0 compatibility cutoff. The existing User-action prohibition is also explicit indocs/reference/canonical-todo-completion-update.mdat369eda5f71a41062636c825b4d9b60f1ecbaf28c.4aaec2d4b, succeeds through repaired ordinary CLI; no duplicate observation or business write2.0.0a1This is a reviewable 2.0 implementation proposal. Release-default adoption, installed App upgrades, live model/Host use, NoKV service deployment, and sustained D2/D3 qualification remain outside this acceptance; they are not inferred from local test counts.
Validation: Source And Evidence Boundaries
Current proposed head:
8484a217c8afcd0c252cb988d78b4e476763a66a, after fork supplement #4. Its tree is identical to the tested supplement head6683c746e2a18a2d609a1e0152a4360431e4db4d. The last approving whole-PR review below is for predecessor5d29213d3. The current-head review requests integration repair against main7c1f12a47c75a39cb37514e26b3570f3ef22f3f3: a reproducible merge-tree has six conflicts across frontend imports, Todo priority and Monitor/recovery. This combination is not qualified and current merge readiness is held.Synthetic fixtures and isolated disposable runtimes were used; no active Goal,
live lease, paid model or benchmark job was used. Runs overlap and are not summed.
ffc2741735d8a511da06ff9ef1f9d302038a466c; earlier full TS run05e143c9d; wheel SHA256530c99dd61ed92cea989a83c80d7b2ea40c28f2201bd4a2e2148d003a51cd5715d29213d3ac9f12d0c61bc509ed296cbdfd149ea; full review2.0.0a1wheel SHA2562a944877ed7d945fbc07852ec8f0244d0b0a1f05858039a649da837a25debb1d5d29213d3; qualification follow-up2abf983157f71153b7bc910a67aa8f7753fe9d9b+ head5d29213d3; treee5bf9bfc0a25364caf8b7983af9f84b6c997f405; RFC/integration follow-up6683c746e2a18a2d609a1e0152a4360431e4db4d; merged as8484a217c8afcd0c252cb988d78b4e476763a66aThe 15-second result-use start-check bound remains unchanged; passing within it
is correctness evidence, not latency qualification. Source, installed package,
selected integration, remote CI and exact-head merge readiness remain distinct.
No full-repository or remote-CI pass is claimed here. Requalify affected evidence
when the proposed head or integration base changes.
Frontend / Caller Evidence
Frontend uses the existing Goal storage/settings, reviewed creation, User-action, and team-plan surfaces. CLI and Python/MCP adapters retain the same typed owners; no duplicate configuration switch or new execution authority was added. Layout and first-screen presentation are unchanged by these repairs. The packaged tests cover failure/retry and real owning-state readback; they do not certify already-installed adoption or model intent recognition.
Maintenance And Boundaries
A concurrent exact-head review found the missed public lease route and two isolated test regressions after the earlier approval. That approval was withdrawn; these findings were reproduced and repaired, and final review/evidence follow the new head. The unevidenced 30-second result-use increase is removed, retaining the documented 15-second start-check budget and current validator timeout. The predecessor's exact-scope CQR was valid for
5d29213d3; the supplement has its own eight-path qualification. Whole-PR current-head qualification and the benchmark-sensitive manual review hold remain separate merge gates and are not waived by this proposal.The related refactor consolidates User-action eligibility in the existing lease owner, removes the redundant Monitor precheck, and reuses typed creation preflight and canonical projection recovery. It adds no parallel Python decision owner or generic recovery framework. Historical receipts are retained because they have real recovery callers; retired normal writers and producer-only helpers stay deleted.
uv.lockexcluded.