Repository navigation
feat: require canonical authority for 2.0 normal writes - #6366
loopx-agent wants to merge 58 commits into
Conversation
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; model=gpt-6-astra; provider=OpenAI; runtime_reported; reasoning_effort=high
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
Exact head: e6dbf09. 未发现本候选范围内尚未解决的阻塞问题。此为作者账户下的完整自评,不等同于独立维护者批准或合并授权。
动机
维护旧 Markdown Goal 的用户,以及新建 File/SQLite Goal 的用户。旧版能继续向 Markdown 写 Todo;此候选先要求审核导入,再通过权威存储继续工作,同时允许原操作恢复和租约释放。正常旧源写入被明确拒绝,File/SQLite 继续可用,恢复不会覆盖迁移后的新增写入。本 PR 不发布版本,不认证自然试用、真实外部 Host 或持续容量资格。真实开发者试用、完整历史支持矩阵和正式发布仍由既有验收推进。
这里的权威存储指决定完整任务状态的 File 或 SQLite,而不是页面展示的 Markdown。仅改导入路径、继续保留旧写入器,无法完成其退役;直接封死所有旧操作又会让用户无法在导入前释放原租约。因此需要一次完整的正常写入截止,同时保留原操作恢复。
改动思路
正常准入归类型化 owner,原回执恢复仍归原事务;因此能删除整族 writer,而不新增平行决策。本批交付完整 2.0 截止候选及原操作恢复,保留仍有调用者的 outbox 与租约释放捕获。
正常入口先走既有 canonical provider,缺失或损坏不能退回 Markdown。旧源新操作由同一 TypeScript 判断拒绝;Python 只承接错误与必要的宿主锁和文件 IO。原操作回执必须先经身份、当前源、版本与 generation 校验,才能继续恢复。恢复用的记录来自已有持久事务,不引入手工维护的“已迁移”标记或新开关。新 Goal 的关闭偏好仍可见,需要用户在现有 Settings 预览、应用后再创建,不能把读取偏好当成启用授权。
具体改动
规范依据是变更前的 docs/reference/local-authority-provider-selection.md,固定版本 60d833b13c85135587b725013b247e827663ffb9。按其表项逐一判断:
- Unpromoted Markdown authority:已实现。Todo/claim、Monitor、bootstrap/handoff、team-plan 与新租约在旧源上拒绝;仍可检查及导入,拒绝用例检查原数据不变。
- Canonical File or SQLite:已实现。继续使用既有 provider、ownership 和事务。安装包矩阵覆盖正向工作、不可用 provider 与原操作恢复。
- Target-only v0 or v1 creation disabled:已实现。旧格式仍能解释和展示,但不会静默启用;创建提示用户明确修改现有设置。
- Historical ownership inputs, source captures and backups:已实现本批恢复边界。保留原回执、释放和 outbox,历史记录不成为新的执行授权。完整历史支持、自然采用与发布仍不由此 PR 认证。
关键代码讲解
legacyCoordinationExecutionRefusal(loopx/control_plane/coordination/legacy_writer_fence.ts:85)统一给出 import 与 ownership 修复路径,接在正常 source 分支;没有把历史恢复一并截断。fenceVerify(loopx/control_plane/work_items/task_lease_lifecycle.ts:1294)保留中止后原回执的恢复资格,重新持锁时保存新 token,拒绝 held 回执与当前 generation 不一致;prepared intent 不能创建缺失租约,恢复已提交 auto-acquire 仍检查当前 claim/owner。冻结的 1.x 工件使这些检查真正运行,不再依赖被删除的 writer 来准备测试。apply_team_plan(loopx/control_plane/work_items/team_plan_adapter.py:124)保留 canonical 提交及原 source 回执重放,按既有 registry/Todo/state 锁序读取,不再创建新的 Markdown batch。manageNewGoalStorage(loopx/control_plane/coordination/local_authority_defaults.ts:18)保留历史 target 解释及初始化恢复,resolve 阶段拒绝关闭 canonical creation 的新建请求。Settings 双语说明与后端 catalog 已一致。
生产代码删除普通 Todo/Monitor writer、line-update helper 与四个 Todo capture producer。caller 搜索未发现剩余生产引用;仍有调用者的 lease capture、prose guard、历史 outbox/readback 不被误删。测试变更把旧正常写入成功断言改为明确的 2.0 拒绝,并以原始回执工件继续覆盖恢复;不是把失败用例全部跳过。
对主干的风险
主要风险是切断旧操作恢复,或把一张准备阶段回执误当成已授予的执行权。最初的恢复测试实际暴露了中止后回执丢失、重入锁 token、generation 漂移等问题;修复后原生恢复矩阵 58 项通过,最终普通 wheel 的 237 项通过。负例包括源/Goal/runtime/identity 变化、当前 claim/注册资格变化、CAS、后写及并发关闭;没有用活动 Goal 做故障实验。
全量 TypeScript 为 4544 通过、37 条件跳过;相关 PostgreSQL acceptance 在隔离真实 PostgreSQL 16 上 24 通过。此前正常 wheel 的 119 项导入/consumer、34 项 Chat/steward 与 PG conformance 结果,只复用于源码和调用条件未变的路径;最终 lease 改动由新的 wheel 矩阵覆盖。packaged Settings 的关闭拒绝→显式预览/应用→读回→创建、英文移动端证据复用于未变 UI,并补了最终 wheel catalog 读回。模型执行和真实外部 Host 未测试。
同一 native CLI 输入在 base/head 对照:fresh source 从成功写入变成 canonical_authority_required 且零写入;原租约重放均不改 bytes,source drift 与未注册 owner 的完整拒绝路径保留。关闭 shadow 配置不会取消 active binding 的原恢复义务;2.0 cutoff 本身是明确的全局破坏性版本边界,不伪称默认关闭功能。
语义与 CI 对齐
复用现有类型化 writer-check 与 lease decision owner,扩展拒绝语义,不建立第二套 Python 权威。语义 advisory、全树语义检查、TypeScript typecheck、风险 canary 和公开边界检查通过。一个既有 maintainability advisory 保留;中间一次 canary 因验证时并发修改 RFC 被判 tracked side effect,固定工作树后的完整重跑通过。旧夹具失败及恢复缺陷的失败记录保留,由覆盖同一不变量的最终结果取代。按本评审配置不查询或等待远端 CI;本地验证不授予合并权,也不改变其他合并门。
我的整体评价
APPROVE,判断为有实际价值的分阶段交付:整族正常旧写入退役,原操作与 canonical continuation 仍可用。长期连续工作在本批范围内 preserved;用户体验是规范认可的 accepted_tradeoff——一次明确审核导入或设置启用换取单一权威,不增加每次操作的重复授权。
有界重构已应用:删除重复正常 writer 及 auto-acquire 写入体,保留确有持久恢复消费者的兼容代码。outbox 的更深删除要等最后恢复调用者退出,不应为了减少代码量破坏历史记录。仍欠真实开发者自然试用、完整历史支持矩阵与持续运行资格;这是发布/采用边界,不应把此候选自评写成已部署或已发布。没有对本 PR 执行合并。
English verdict: APPROVE - e6dbf09. The explicit 2.0 cutoff retires normal Markdown writers while preserving original-operation recovery and canonical File/SQLite execution. Full TS: 4544 passed, 37 conditional skips; final installed native matrix: 237 passed; isolated PostgreSQL acceptance: 24 passed. Required local canary/type/semantic checks pass with one inherited advisory. Developer adoption, complete historical qualification, merge authority and release remain separate.
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; model=gpt-6.1-sol; provider=OpenAI; runtime_reported; reasoning_effort=xhigh
Request changes conclusion (author-owned PR; GitHub blocks formal self-review)
动机
维护旧 Markdown Goal、恢复原操作以及新建 File/SQLite Goal 的用户和维护者。 原普通入口可继续写 Markdown,当前 2.0 候选在写入前要求审核导入;但仍需保留外部等待与公共更新的可执行回归保证。 正常旧源写入明确拒绝,当前安装包可经原 Settings 启用并创建 canonical Goal,原恢复有独立证据;保留的两组公共回归测试在当前头部尚不能运行到业务断言。 本 PR 不发布版本,不认证模型效用、自然采用或完整成本,不授予新工具权限、合并或发布权限。 保留的外部等待/公共更新及历史恢复夹具须按真实来源迁移;自然开发者试用、完整历史支持、真实外部 Host/Lark、持续运行和发布仍未认证。
本轮开始时此头部尚需评审。过程中出现作者同头部自评批准;下面是本轮独立执行新增的 matched base/head 反例,不继承或重复自评的通过结论。源码仍为 e6dbf0953524592f2200b18484a24b3ff0db588a。
改动思路
A cohesive major-version cutoff belongs in the existing typed owner; retain receipt/lease release recovery and delete unused normal producers. The minimum remaining repair is fixture migration in the existing suites: canonical File/SQLite for live consumer semantics, frozen 1.x artifacts for historical recovery; do not restore the source writer, skip supported invariants or invent another authority.
正常准入归既有 TypeScript canonical/lease owner,原回执恢复归原事务;Python 只承接来源事实、错误和锁/IO。整族 writer 的退役需要同一 major 切片,不能增加第二套权威或为测试恢复已退休 writer。本批是完整 2.0 截止候选及保留原恢复的可逆阶段;仍须迁移保留的回归夹具,不能把 collection 或私人历史探针当作仓库测试通过。
具体改动
完整63文件 +2404/-5546,按改动前 60d833b13c85135587b725013b247e827663ffb9 的 docs/architecture/rfcs/typescript-control-plane-migration-v0.md R5/T4 和 docs/reference/local-authority-provider-selection.md 核验。正常 writer 截止及显式 canonical 新建已落实;原恢复有真实证据,保留仓库测试仍有迁移缺口;自然试用和持续运行保持 deferred。新增文档中的“通过”陈述不能代替原验收。映射项:R5-T4-normal-writer-cutoff implemented;R5-T4-original-recovery not_met(receiver 通过但保留测试入口缺失);provider-canonical-creation implemented;R5-T4-natural-trial deferred。
legacyCoordinationExecutionRefusal复用现有 writer-check schema;Todo/claim、Monitor、bootstrap/handoff、新 team-plan 和 fresh source lease 不再落回 Markdown。删除 legacy_mutation、legacy_monitor_poll、line_update 与四个 Todo capture producer;保留仍有实际调用者的 outbox、lease-release capture、import/backup/readback。commitAcquire/executeTaskLeaseLifecycle/fenceVerify区分 fresh grant 和原收据恢复:原释放/CAS 仍允许;legacy 不能 acquire/renew/transfer。中止回执、重入 lock token、held generation、当前 claim/注册资格及 prepared intent 检查防止历史事实制造新权限。已有 File/SQLite 事务 owner 不重写。apply_team_plan保留 canonical commit 和同一原 source receipt 的有序锁下 readback,不创建新 source batch;Chat/steward 入口仍复用这个 owner。manageNewGoalStorage保留 v0/disabled 配置解释,2.0 新建要求明确启用。现有 Settings 双语标签和 backend catalog 一致;普通 wheel 构建的 UI 完成关闭显示、refusal→preview/apply→readback→当前 installed CLI 创建 SQLite/soft_claim,没有模型执行。- 版本为2.0.0a1 candidate;冻结1.x lease/team-plan histories和 typed negative tests保留恢复路径,但两组未迁移的公共测试仍引用旧 writer/正常源写入。
对主干的风险
[P2,阻塞] 保留的公共等待/更新回归测试必须迁移到可执行的真实入口。 同一未改的 tests/control_plane/test_public_todo_update_plan.py 与 tests/control_plane/test_todo_external_wait.py 在冻结60d为 15 passed/5.65秒,当前 e6dbf0953524592f2200b18484a24b3ff0db588a 为 15 failed/8.62秒。fresh source refusal让夹具在业务断言前退出;test_public_update_uses_one_scope_wait_field_crossing 和 test_overlapping_material_batches_recompute_generation_after_wait_baseline 还 import 已删除的 line_update/legacy_monitor_poll。被遮挡的是仍支持的 partial edit、Monitor generation/replay、successor linkage 和自动恢复语义,而不是应当恢复的旧 writer 功能。最小修复:当前工作用 canonical File/SQLite 夹具并把 interception 放到现 owner;原恢复用冻结1.x产物。保留业务断言,不能仅删除/skip这些测试,或把 pytest collection 当通过。
独立扩展11模块当前 255 passed、27 failed、5 setup errors:失败来自仍制造退休 producer/legacy grant 的历史夹具,记录保留。为区分 receiver 与 fixture 问题,我用固定60d实际1.x producer生成原始历史,再交给当前实际 CLI/TS 和物理删除 producer 的 receiver:49个原断言通过(初轮47过,2项历史handoff设置来源修正后过,47项不重跑冒充第二次通过)。这证明可以保留恢复不变量,却不能替仓库修好这些夹具。新增15项matched失败仍未被同一断言的当前 canonical 测试取代。
当前独立 184 TS 通过;真实隔离 PostgreSQL16.15 的 store 349、service integration 2、archive 4、acceptance 24 通过,四套各自数据库。service 单测的 URL-marker 最初条件skip,补跑9项后通过;这个 marker 只检查URL,不能当真实集成,真实集成证据来自独立2项。正常 wheel、typecheck/full semantic/build 与风险 canary 5 direct/19 selected 通过,保留1项既有 maintainability advisory。安装态 Settings/CLI 正反链路已独立核回。未借用作者4544/237/119数量,未查询、轮询或等待CI。
语义与 CI 对齐
这是明确披露的2.0默认行为改变,不能要求旧源仍可正常写入,也不能伪称默认关闭隔离。既有 TS schema/枚举 owner 扩展拒绝值,Python 不新增决策源;development advisory 在全树 semantic 前执行。机器拒绝和原回执恢复义务不是“建议”;新建设置不授予工具/合并/迁移现Goal权限。没有证据表明 canonical 生产数据损坏;当前阻塞是具体可复现的受影响验证与迁移缺口。
我的整体评价
REQUEST_CHANGES。单一权威与保留恢复是合理阶段;用户明确启用/导入的2.0迁移代价为 accepted_tradeoff。当前长期回归保证仍 not_yet_proven,因为15项保留断言在仓库中失去可执行入口。本批是完整 2.0 截止候选及保留原恢复的可逆阶段;仍须迁移保留的回归夹具,不能把 collection 或私人历史探针当作仓库测试通过。 保留的外部等待/公共更新及历史恢复夹具须按真实来源迁移;自然开发者试用、完整历史支持、真实外部 Host/Lark、持续运行和发布仍未认证。
有界近邻重构已应用:删除 normal writer 和闲置 facade;outbox/原释放有调用者,继续保留。当前修复应沿现有 canonical/historical fixture owner,不加新runtime框架、不恢复退休writer。重跑上述两模块及原 cold-source matrix 后按新head复审;自然试用、完整历史资格、维护者合并和发布授权仍独立。未执行合并。
English verdict: REQUEST_CHANGES — e6dbf09. The explicit2.0 cutoff and original recovery have substantive independent evidence, including184TS,49immutable-origin receiver cases, isolated real PostgreSQL and packaged Settings/CLI. However, two unchanged supported-consumer suites regress from15passes on the immutable base to15failures on this head, including imports of deleted writers. Migrate canonical/historical fixtures while retaining their business assertions; collection and selected green suites do not resolve this gap.
|
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 |
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>
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>
Signed-off-by: huangruiteng <huangrt01@163.com>
Signed-off-by: huangruiteng <huangrt01@163.com>
Signed-off-by: huangruiteng <huangrt01@163.com>
e6dbf09 to
82a42a7
Compare
|
Addressed the P2 retained-suite blocker on exact head
Scope limit: this is a 2.0 writer-cutoff candidate, not a release or natural developer trial. An exploratory broader run was interrupted after 71 passed and 24 failed; those 24 failures were all in No merge performed. |
Signed-off-by: huangruiteng <huangrt01@163.com>
Signed-off-by: huangruiteng <huangrt01@163.com>
|
Updated after the requested review and rebase. Current head:
The broader legacy monitor fixture remains a separate known migration gap: its fresh Markdown writer setup cannot reach assertions after this 2.0 cutoff. I have not counted that suite as passing; the independent reviewer is evaluating whether it obscures supported recovery semantics. New-head CI is running. No merge is requested or claimed here. |
Signed-off-by: huangruiteng <huangrt01@163.com>
Signed-off-by: huangruiteng <huangrt01@163.com>
|
Latest exact head: The new CI run exposed additional live-consumer fixtures that still seeded a fresh Markdown Goal. I migrated the managed Host/Turn fixtures to canonical File authority while keeping their behavioral assertions: both full files now pass locally, 105/105; the prior 3.11/3.13 adapter-contract checks passed on the preceding head. The negative terminal-recovery case now changes a disposable canonical provider revision, not the non-authoritative Markdown display. The packaged User action browser fixture now initializes canonical File/hard-lease authority before adding Todos; its targeted development and installed-wheel browser journeys both pass. The prerelease Chat release-build also passed against the actual preceding published wheel. This is not yet a merge-ready claim. The 2.0 normal-write cutoff still leaves the old stage2c shadow ladder red; some cases protect original-receipt recovery and must be replaced with executable frozen-1.x-origin → current-receiver evidence rather than skipped wholesale. The independent reviewer is assessing that boundary on the final head. Other CI checks are rerunning; failures and untested areas remain disclosed. |
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
|
Author validation update / 作者验证更新 — The mutation suite now exercises current recovery and retained transaction owners. The final complete run has 55 passing controls / 55 assertion-killed mutants, exit 0. The four complete affected test modules have 115 passed, zero skipped (44.18s). All original test functions and assertions remain unchanged; four current-path tests were added. Root cause: pinned 1.x producers correctly generate original evidence, but several mutation oracles still edited their unused current producer copies. Another oracle stopped at the earlier canonical cutoff; two lock-edit locators and deleted CLI test names were stale. The first complete audit additionally exposed cursor reconstruction and bound-source-path probes that never exercised the edited current owner (53/55 killed). Both were repaired, then all 55 pairs were rerun from one frozen candidate.
Changed surfaces: mutation harness, two test modules and developer qualification notes; 4 files +136/-20, no runtime or packaged UI changes. Validation: complete 55-case mutation lane, complete locator/history/writer-boundary/drain modules, original-assertion AST comparison, Ruff, development semantic advisory before full semantic drift smoke, generated semantic bindings, diff and public-boundary scans. All pass. The future-facing pass reuses the extracted guard owner and removes the obsolete producer mutation constant; no new decision owner or abstraction. Existing R5/T4 recovery and S2/S7/S10 scope is retained. 本批已修复“测试通过但变异代码没有被执行”的资格化漏洞:最终完整55组正常对照均通过,55组故意错误均被业务断言捕获;相关完整模块115项通过、零跳过。首次全量复验另发现cursor重建和源路径两项漏检,修复后从同一冻结候选重新跑完55组。原历史测试和断言全部保留;新增4项当前路径测试,没有恢复旧Markdown正常写入。 Previous Monitor repair at 此前Monitor完整调用族68项及正常wheel原8项隔离矩阵证明仍按原revision保留;wheel/sdist各9阶段证明仍限于9bf的安装入口,不能替代新packaged浏览器交互。 Remaining / 未闭合: integrate newer main changes without duplicating their owners, repair the remaining full Python/public-smoke failure families (handoff and Todo mutation first), validate the final packaged-browser journey and obtain a fresh exact-head whole-PR review. Earlier inventory (20,722 pass / 836 fail / 57 error / 369 skip; public smokes468/47) is historical, not a current pass. Core trial, real Host/Lark and sustained use remain separate. This closes the mutation reachability slice only; no merge/release or approval claim. |
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
huangruiteng
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; gpt-6.1-sol; OpenAI; runtime_reported; reasoning_effort=xhigh.
#6366 — REQUEST_CHANGES
精确 head:c6f25e5a8965cce7a0472b807b1c9f4dfc642875;固定 base:b77f63495f2619237380755178c0780ae10a0f26。本评审独立执行当前 capability 计划,不继承旧 head 的批准,也未查询或等待 GitHub CI。
动机
受影响的是升级到 2.0 候选版、继续操作已有 Goal 的 CLI/App 用户,以及维护旧操作恢复的开发者。
以前未迁移的 Goal 可以继续把 Markdown 当作业务权威写入,维护者因此必须长期保留两套写入路径;本改动把正常新写入收口到 canonical authority,即 File/SQLite 中的权威记录,旧 Markdown 只保留检查、导入、文档显示和原操作恢复。
可观察的改善是:冷 Goal 的正常写入在产生效果前明确拒绝,告诉操作者先审核导入,不会自动建空库或把旧回执当作新执行许可。
本评审不认证自然多开发者试用、完整历史支持矩阵、D2、发布资格、模型采纳或合并权限,也不要求这份 PR 先关闭整份父级路线图。
[P2,阻塞] 删除正常 writer 时,应迁移仍支持的恢复测试,不能让历史恢复断言一起失效。
先前 e9652bd7db7854125b5bdaddf2fdb5d8a295036b 的 Monitor 套件有 24 failed / 1 passed,全部卡在旧写入夹具。新 head 已实质修复这部分:现代消费者默认建 canonical,历史操作使用固定 60d833b13c85135587b725013b247e827663ffb9 的真实 1.x source;已产生效果与只留下 intent 的恢复分开。旧失败记录保留,但不直接作为新 head 的阻塞。
尚未迁移完的是共享夹具的 receiver isolation 调用方。 新 _fixture(tmp_path) 默认建 canonical,但 test_monitor_receipt_writer_isolation.py 仍把它当作旧源 producer,随后在投影故障后读取 Markdown monitor-batch 原回执。在独立 81347545f8ddfef4d1f3c775e47596ef92ffebde tree 实测中,故障确已退出 83,接着 _business_receipt(state) 因不存在旧 marker 而失败;仍未到达“旧模块物理缺失、旧 outbox 不可污染当前 authority、changed identity 拒绝”的接收端断言。该套件 8 个参数组合需要明确选择历史 source,而不能只改公共 _fixture 的默认含义。test_team_plan_authority.py::test_legacy_chat_replay_survives_interrupted_shadow_bootstrap 仍访问已删除的 write_captured_todo_state。三文件合并验证为 28 passed / 9 failed;最后 c6 delta 只改 large-source/native-observable 两个其他测试文件,未改动失败路径、相关 fixture 或任何 production/dependency,因此显式复用这项独立证据,不改写执行 revision。旧“P2 只点名两个消费者文件”的措辞不能缩小当前受影响的保障。
最小修复不是恢复旧 writer,也不是删除/skip 整份套件:复用新增的 original-source 夹具,明确区分历史 producer 与当前 receiver;对 receiver isolation 在旧 source 产生故障前的真实业务回执,再走 current CLI、File/SQLite 和旧模块物理移除;team-plan 中断历史同样用真实旧操作输入,停止钩住已删除的正常 writer。保留原身份、changed-intent 拒绝、一次结算、后续 canonical 写入不丢失。仅旧 writer 专属的 fresh-write 场景可以改为截止拒绝或明确退役。
这是一项当前回归保障缺口,不是已证实的数据损坏:我从固定 base 的真实 CLI 生成业务已提交的历史输入,随后用当前接收端补验三条路径——旧 Markdown 回执切换后的恢复、File 已提交业务后的 quota 补结算、SQLite 同路径——均通过,原 successor 身份、后续权威记录、changed-intent 拒绝和一次 quota 结算保持正确。这些独立补验不能替代仓库内尚未到达断言的恢复矩阵。
改动思路
正常请求先进入既有 typed provider owner;只有原操作回执恢复和原租约释放保留兼容边界。Python facade 负责传输,TypeScript 负责拒绝规则与状态转移,没有新增第二个 Python 决策源或空的迁移框架。
保留这组机制的决定性理由是:同一个 2.0 权威边界必须同时覆盖 Todo、Monitor、team-plan、bootstrap 与新租约授予;删掉 producer 而不保留 receipt/lease/outbox 的恢复 owner,会把未结算责任丢在升级边界。
本 PR 的最小完整边界是:2.0 候选版的正常 writer 截止、可用的原操作恢复及仍支持消费者的测试迁移;自然试用、持续 D2 和发布授权保留给原验收 owner,不在这里宣告完成。
当前成本主要来自删除旧写入实现和改写历史夹具,而不是新生产抽象:84 文件,+2939/-5828;生产 28 文件 +176/-2690,测试/夹具 48 文件 +2649/-3057,文档 2 文件 +78/-16,durable examples 4 文件 +26/-58,既有 IO census 1 文件 +7/-7,CI 1 文件 +3/-0。净删行不是兼容性证明;恢复矩阵缺口才是目前的停止点。
具体改动
关键代码讲解
legacy_writer_fence.ts::legacyCoordinationExecutionRefusal是共享拒绝 owner;Pythonreject_legacy_coordination_execution只校验并投影其结果。它在冷源正常写入时返回canonical_authority_required,不创建业务权威或执行 grant。monitor_poll_writeback.py::write_monitor_poll_todo_state仍先读取并校验历史业务回执,再尝试 canonical transaction,最后拒绝冷源新写入。晋升后重放不能 drain 旧 source 到新 authority;不能把“缺少新 writer”误写成“缺少旧回执 reader”。task_lease_lifecycle.ts::ordinaryOperation保留已提交/匹配已写字节的原操作恢复与 release CAS;新 renew/transfer、fresh fence 和未产生效果的 auto-acquire intent 不再授予旧源执行权。held/closed fence 仍校验原 generation 和锁 token,后续租约不能被旧回执覆盖。team_plan_adapter.py::apply_team_plan保留锁内原回执读取和 typed identity 校验,删除正常 Markdown 批写;新计划走既有 canonical transaction/projection outbox,既有计划恢复不等于 receiver adoption。todo_update.ts保留 planner 的 typedexternal_wait_*诊断及有效 wait 上下文,Python adapter 投影已有 authoring repair contract。两项旧 P2 消费者测试已迁移到 canonical;不能用只检查 Markdown 显示替代权威 readback。
其余表面也属于本次整体判断:删除 legacy_mutation.py、line_update.py、legacy_monitor_poll.py、四个 Todo capture producer 和对应 facade exports;保留 lease-release capture、历史 codecs/readers/outbox;新 Goal 的 v0/显式关闭设置仍可读,但必须显式启用 canonical 创建,已有 File Goal 不被换成 SQLite。CLI catalog 与中英 Settings 文案同步披露 2.0 改变,未新增布局/权限开关。Host/Turn、Chat/Steward、research、peer smoke 和 canonical 消费者夹具随之迁移;writer-only 的 field/capture 用例与源实现一同退出,shared typed 规则继续保留。
版本改为 2.0.0a1,不是兼容的 1.x 更新。Dev Book smoke 改用独立已出版的 v1.4.0 锚点;release bundle 的 predecessor 解析支持 a/b/rc 候选,仍只选择较低 core 的稳定版本并保留 checksum 校验,不把未来同 core 稳定版当作候选版前驱。IO manifest 仅更新位置,独立检查仍为 303 sites。
后续 delta 新增 historical_shadow_fixture.py:只从固定公共 Git object 解出原 1.x package,验证实际 import 来源;原 producer/fault 调用明确使用该 source,检查、drain、导入和后续操作继续用 current receiver。对应迁移了 cold inspection/disposition、shadow cursor/adversarial/drain 和 lease grammar fixtures;fresh source lease grammar arm 退役,现代 File/SQLite arm 保留。stage2c job 加 fetch-depth: 0 以获取固定历史 object,而非缺失时静默借用当前代码。最后 c6 又把 large complete-source 和 native-observable 输入生成迁到同一个历史 helper,current 后续消费者不变。此设计是合理的真实跨版本测试边界,问题是尚未覆盖所有引用共享 Monitor 夹具的调用方;最后这两个新增迁移文件的执行结果未借用作者计数。
规范映射
使用改动前的 docs/reference/local-authority-provider-selection.md,spec_revision=b77f63495f2619237380755178c0780ae10a0f26;同时核对同 revision 的 TS RFC T4 与 roadmap R5,没有用本 PR 新增的“已通过”描述反向定义验收。
| 原规范 criterion_id | 当前判断 |
|---|---|
| Unpromoted Markdown authority | 正常写入前拒绝,源字节保留;现有 import 是恢复 owner,不构造空库。截止负例通过。 |
| Canonical File or SQLite | 既有 provider/soft_claim/hard_lease owner 保留;本地真实 provider 和原 quota 恢复补验通过。 |
| Canonical store with legacy ownership policy | 新 acquire/renew/transfer 拒绝,原 release 和匹配历史回执保留;typed 截止与 fence 测试通过。 |
| Target-only v0 or v1 creation disabled | 不把 disabled 解释成 enabled;resolve 拒绝并投影 Settings 修复说明,App 文案与 backend catalog 同步。当前 packaged Settings 交互未由本评审重跑。 |
| Historical ownership inputs, source captures and backups | 原恢复实现的部分补验通过,新 Monitor/shadow 迁移有实质进展,但 receiver isolation 的历史 source 装配仍错误,team-plan 历史钩子未迁移,未满足本轮回归覆盖;按上面的最小范围修复,而非撤掉断言。 |
语义与验证对齐
| 独立执行 | 结果/边界 |
|---|---|
| TypeScript typecheck;截止/创建/lease lifecycle/external-wait/Monitor batch focused tests | 通过;focused 201 passed。 |
完整 npm run test:control-plane |
在独立 e965 tree 执行:4566 passed / 1 failed / 38 skipped。新 delta 未改变 TS owner、依赖或这套测试,显式复用;不是全绿,也不是 PostgreSQL 已资格化。 |
| digest single-owner 同命令 base/head 复现 | 两端均 16 passed / 1 failed,完全相同的三个未改动 matcher:goal_amendment_authority、turn_envelope、stride_policy;归为 pre-existing unrelated,不作为本 PR 阻塞。 |
| 两项原 P2 Todo 消费者套件 | 固定 base 15 passed;独立 f5f5ffb 17 passed;随后 delta 未改变它们或其 owner。当前合并的 Python 验证结果另行记录,不沿用作者计数。 |
| canonical native Monitor | 独立 f5f5ffb 9 passed,随后 production delta 未触碰该路径。 |
| 固定 base 生成历史输入 → 当前真实 CLI 接收端 | 三条恢复路径通过;源/receipt hash 固定,原 quota 只结算一次、later canonical write 保留、changed intent 拒绝。 |
| 保留的 Monitor 事务恢复套件 | e965 的 24 failed / 1 passed 为历史;813 改用 canonical/原 1.x 输入后 28 passed。c6 未改该文件、helper 或 owner;显式复用通过,不把旧失败留作新阻塞。 |
| Monitor receiver isolation + interrupted team-plan recovery | base 9 passed;813 合并运行中 9 failed(Monitor 28 passed 单列)。最后 c6 对这两项及其依赖无 delta,显式复用:8 项缺旧 marker、1 项访问已删除 writer hook。 |
| 合并的 Python 正常消费者/import/Host/Turn/bundle 验证 | 独立 e965 190 passed / 1 warning。新 delta 未改变这八个模块、production owner 或依赖,显式复用;新历史夹具矩阵另跑。 |
| Dev Book smoke;registry IO manifest check;语义 advisory | 通过;advisory 无可识别新增 vocabulary carrier,但不证明动态语义等价。 |
尚未由本评审完成当前 wheel/packaged UI、独立真实 PostgreSQL、完整历史版本支持矩阵、最后两项测试迁移执行与风险 canary;作者已有结果仅作为待核验材料。已完成的独立运行写出固定执行 revision 和 delta 失效检查,不预报其他通过。未启动付费模型、生产配置变更或活跃 Goal 上的破坏性验证。
对主干的风险
这是全局 2.0 截止,不是“runtime_shadow 关闭就保持 1.x 行为”的 default-off 功能;两种说法不能混用。CLI、Settings、catalog、文档和 renamed tests 已明确披露旧默认与新边界,历史 preference 不自动改写,恢复仍由原身份与权限控制。
风险集中在升级后的重试/续行:现代 canonical transaction 成功不能证明所有旧 provider_pending、malformed receipt、later-edit、capture、锁 token 的恢复仍受 durable coverage。现有 3 条补验、201 条 typed 检查和新 Monitor 历史迁移降低了风险,但不能把失效的 consumer isolation 套件标成退休实现。
泛用拒绝语句保持 Goal-neutral;错误和状态由 typed owner 而非 Todo 文案决定。external_wait_ 前缀在 Python 中仅投影既有诊断 namespace,不再决定 wait 状态;新增错误家族应继续由 typed planner 注册,避免扩为基于文字的业务分类器。相关未来面向的收口已经体现在删除 producer/exports 与共享 TS 拒绝边界,无需为这份 PR 再建通用框架。
回滚不是换回旧 binary 后直接恢复旧写权限;仍需保留备份、fence、原回执和 schema-aware 恢复。APPROVE、CI 状态与合并授权各自独立;本评审不合并。
我的整体评价
REQUEST_CHANGES。 正常 writer 截止及 typed owner 收口方向合理,两项旧 P2 消费者修复也得到独立通过证据。保留这组机制的决定性理由是:同一个 2.0 权威边界必须同时覆盖 Todo、Monitor、team-plan、bootstrap 与新租约授予;删掉 producer 而不保留 receipt/lease/outbox 的恢复 owner,会把未结算责任丢在升级边界。
本 PR 的最小完整边界是:2.0 候选版的正常 writer 截止、可用的原操作恢复及仍支持消费者的测试迁移;自然试用、持续 D2 和发布授权保留给原验收 owner,不在这里宣告完成。长期续行目前为 not_yet_proven:仓库内仍保留的 receiver isolation 及 team-plan 中断历史测试未达到相关接收端断言,不能把已修的旧 Monitor 失败再当新阻塞。用户旅程的 installed readback 在本轮也保持未核验,而非“浏览器不可用”。先修复剩余明确的夹具/覆盖缺口,再在新 exact head 复核;无须恢复退休 writer、放松 CAS 或等待无关 CI 变绿。
English verdict: REQUEST_CHANGES — c6f25e5. Pinned-1.x Monitor migration independently passes 28 cases at immutable 813; its 9 dependent isolation/team-plan cases still fail. The c6 delta changes only two other test files, so these source revisions and explicit invalidation checks are retained. Fix the missing legacy receipt setup and deleted writer hook without restoring retired writers or deleting recovery assertions. Unchanged e965 evidence: 190 Python passed; focused TS 201 passed; full TS 4566 passed, 1 identical unrelated baseline failure, 38 skipped. No merge performed.
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>
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; runtime_reported; reasoning_effort=xhigh
Request changes conclusion (author-owned PR; GitHub blocks formal self-review)
Exact head: e8ecea25f91fe276888c05b4e8966260634cd656; true fork: 3dd3c550afecfa0c525a34e8744a3cf06774ac94. Runtime observation: 9c41fc088995d68d76f9d2fcb871872cc15b3b3e8eb993b11649d6ee74f73e5f.
动机
迁移旧 Markdown 项目、恢复中断操作,或在 Chat 与 CLI 创建和更新任务的用户。
以前多个入口仍能直接写旧 Markdown;2.0 候选让普通写入统一经过当前权威存储,同时保留中断操作的原回执恢复,避免新写入与历史恢复混用规则。
当前真实归档、投影、CLI 和 File/SQLite 调用旅程有可验证增量;六个完整模块93项通过,但原 handoff/Todo 108项仍在初始化处失败,update 可维护性检查仍未闭合。
本次评审不认证发布、自然试用、真实模型或长期效用,不授予合并权限,也不把整个父 RFC 的后续验收当作本切片的前置条件。
受支持的 handoff/Todo 权限与独立评审断言仍在旧 writer 初始化处失败;当前完整安装与打包采用资格没有在本轮独立验证。
改动思路
复用现有 typed store、receipt/fence 和 public serializer;Python 只绑定运输和投影已决定事实。完整退休普通旧 writer 是明确的 major 行为边界,不能通过恢复旧 writer 或删断言来修复验证。
本 PR 是可逆的 2.0 正常写入截止候选与受影响调用方采用;当前夹具迁移缺口在同一 author PR 修复,持续采用和发布仍由原验收 owner 负责。
既有 TS store/transaction/fence 负责状态与副作用权威;保留的 Python 层绑定配置、CLI/HTTP 和展示投影。原回执恢复与允许创建新工作是不同合同,历史 receipt 不能铸造新 legacy grant。原机器/Goal 设置、预览、确认和真实回读的职责不应转成新建平行协议。
repository experience 在这里用于核对恢复后能否继续真实工作,并承认有用的内部前置切片;不继承过去 verdict,也不以自然试用未完成强制阻塞一个已证明的内部增量。
具体改动
整 PR 为 148 文件、+5307/-6957。本轮相对已完整审查的 165ffea1b0a9f26fca4814a297989d0730f3d849 只有四个验证文件、+61/-23;全部 delta 已读,所有生产 owner 无变化。这一源码无变化证明仅用于复用具名历史证据,当前结论仍来自当前 head 的完整模块和 canary。
- 普通 Todo mutation/claim、Monitor writeback、source bootstrap/handoff、team plan 和 fresh source lease 统一经过 canonical authority;Markdown 写入链、四类 capture producer 和无生产 caller 的 Todo 旧 preview/private facade 被退休。
- TS
legacy_writer_fence、File/SQLite provider、原 transaction/receipt/replay/lease CAS 继续管理拒绝与恢复;保留历史 outbox drain、import/backup 读取与 Markdown 展示。原 producer 使用冻结 1.x 源,当前 receiver 不重新创造旧写入。 todoUpdateResultFacts、公开 completion/update serializer 与 Chat operation ID 消费同一原事务结果;later-write/replay 保留后来的状态,旧回执不编造历史字段。provider_update.py目前把事务运输、验证发布和公开返回投影放在同一大函数中,是本轮要求处理的维护边界。- canonical archive、机器区域投影、CLI preview/apply、claim/重复操作和冷源 export/import 采用既有 store 与 fixture;source-free isolation 物理移除旧 writer,并拒绝从 editable 环境借回实现。
- 本次三个 smoke 将完成验证、无 Git 配额与状态缓存接入真实 File/SQLite。完成验证从 provider 读取原 Todo,并断言失败不完成、不记运行;无 Git 环境明确只保留必需 Node;缓存完成传入 actor identity。六条新旅程完整通过,原实时/可选陈旧缓存、过期、隐私、并发与恢复断言保留。
- 2.0 alpha cutoff 和配置可读/创建不可用边界已披露;这不是兼容的 1.x 升级,也没有发布。通用义务保持 Goal-neutral,没有将硬 fence 称为可忽略 guidance;当前四个验证文件没有新增产品词汇或平行决策 owner。
规范基准为 docs/architecture/rfcs/typescript-control-plane-migration-v0.md,spec_revision:570ac99f7c662b7aebe544bfedc4e4e80a927a7a,保持原接受的 R5/T4 边界:
- R5-T4-normal-writer-cutoff:普通旧 writer 退休、canonical owner 与明确 fresh-source 拒绝已实现;不能以恢复旧 writer 获得测试绿。
- R5-T4-original-recovery:原 Monitor、receipt/replay、archive 等具名路径有证据;当前两个原 handoff/Todo 权限族没有到达原业务 oracle,仍有缺口,修复要求如下。
- provider-canonical-creation:既有 File/SQLite 创建与 disabled 配置读取使用相同 owner;正常路径和冷源拒绝不能混为同一测试语义。
- R5-T4-natural-trial:自然采用、持续运行和发布由原父验收继续承担;本轮没有把它当作内部候选的额外前置门禁。
对主干的风险
[P2] 原 handoff 与 Todo 权限测试尚未迁移到其真实当前/历史边界。
位置:tests/control_plane/test_goal_handoff_mode.py:130 的 _add_todo 和 test_todo_mutation_authority.py 的 fixture 初始化。
当前六个完整模块 108 failed /93 passed /0 skipped,295.45 秒。失败仍来自上述原两族:它们创建新 source-backed 工作,被 cutoff 在初始化处拒绝,尚未验证独立 reviewer、排除/委派、claim、模式转换、租约和恢复语义。同一 immutable 3dd3c55 两族 115 passed,24.56 秒。这个对照证明调用方/fixture 采用缺口;不把初始化失败误报成生产数据损坏。
最小修复:将这两个完整原测试族按真实语义分类:仍支持的当前权限/claim/handoff 用现有 canonical fixture;真正验证1.x producer的分支明确冻结旧源。保留独立 reviewer、排除/委派、无效模式、租约、原身份、重试/后写和全部原业务断言。只可具名退休已有替代证明的旧语义;不恢复普通 writer、不整族删/skip。
重跑原完整命令:uv run --extra test python -m pytest -q tests/control_plane/test_goal_handoff_mode.py tests/control_plane/test_todo_mutation_authority.py,再合跑受影响 canonical journeys。
[P2] 原 update 适配器的新维护债和已失效例外仍使 required canary 失败。
位置:loopx/control_plane/todos/provider_update.py:347 之后的原结果→公开投影;ratchet 的退休 legacy_mutation→research_frontier 例外。
本轮使用同一个实际 AST collector 比较 immutable base/head:60 statements/50 decisions →78/62,限制 90/60。当前 canary 5 direct +19 selected,一项 required maintainability failure、零 manual hold:一个新 oversized decision function,以及一个删除依赖后仍保留的 stale exception。此预算保护后续修改的定位、评审和回滚成本,是维护门槛,不是冻结运行时 SLO。
最小修复:在最近的现有 owner 提取决定事实到公开返回的投影 helper,保留原 transaction、旧 receipt 与后写/replay;或依相同度量和真实消费者价值明确说明有界 reviewed exception。清理已退休 legacy_mutation 的 stale exception,重新执行原 canary。不要删除有用返回字段、缩小扫描或单纯抬高全局上限。
whole-PR 验证资格:当前 six-module 包括上述两族、机器区域、archive retry、canonical completion journeys 和 writer isolation;93 个通过涵盖新六条真实 provider 旅程及原有归档/CLI/投影/物理缺席检查。语义、公开边界及其余风险选择没有新增失败。先前评审保留的 PostgreSQL/typed-provider 与真实 HTTP 资格只对各自已测源码有效;当前相关 production owner 无变化才允许具名复用,不能称作当前整个安装包、浏览器或自然采用证明。作者后来的全量 CI 汇总只作为作者归属的记录读取,本轮未查询、轮询或等待 CI。
我的整体评价
REQUEST_CHANGES,仅对 e8ecea25f91fe276888c05b4e8966260634cd656。三类验证迁移有实际价值,当前架构退休旧普通 writer、复用 typed owner 与原事务事实的方向成立;新六条通过没有关闭原 108 项缺口或当前维护检查。
future-facing pass 已检查事务权威、receipt、公开 serializer 和原 fixture 边界:不需要扩成框架;有界 companion 是原调用方采用,以及最近 owner 的返回投影职责收敛。持续采用和发布留在原验收;没有新建仪式性 successor、改动活动 Goal、恢复普通 writer 或合并。
English verdict: REQUEST_CHANGES — e8ecea2. Six new real File/SQLite validation/scheduling journeys pass, but the current six complete modules still have 108 failures/93 passes: retained handoff/Todo fixtures stop before supported permission oracles, versus 115 passes on immutable base. Required maintainability also fails (60/50→78/62, limits90/60) with a stale retired dependency exception. Migrate callers without dropping invariants and reconcile the nearest-owner projection; installed/natural-use qualification and merge remain separate.
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>
|
Author validation update for Completion-turn fence violations now retain the existing typed Validation: 749 related TypeScript tests passed; 349 real PostgreSQL integration tests passed on a disposable PostgreSQL 16 server; the actor module has 67 passes and 23 remaining legacy-path failures. Typecheck, Ruff, semantic drift/maintainability and all 13 selected premerge checks passed. No tests were skipped in the PostgreSQL run. The related refactor pass reused the existing rejection type and fixture policy owner; no new abstraction or vocabulary was needed. Public/private additions scan is clean. The previous head's Windows job failed three SQLite CLI assertions that confused Todo The PR remains incomplete: residual legacy test families, comprehensive CI and exact-head review still need closure. The earlier 482-pass/33-fail full-suite evidence is not replaced by these local subsets. No merge or release is requested by this update. 中文:本轮修复完成轮次拒绝被误报为存储不可用的问题,保留原回执、租约和后继任务约束;真实 File/SQLite 终态验证、749 项 TS、349 项隔离 PostgreSQL 及 13 项风险检查通过。权限模块仍有 23 个旧路径失败;Windows 的 3 个操作状态断言已修,本地 CLI 9 项通过,实际新 head CI 尚待验收。未声明完整退役完成或合并就绪。 |
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; model=gpt-6.1-sol; provider=OpenAI; runtime_reported; reasoning_effort=xhigh
Request changes conclusion (author-owned PR; GitHub blocks formal self-review)
Exact head: a39a24423b04e17a23a6b5bc7abbfdf5bb86692c; merge base: 3dd3c550afecfa0c525a34e8744a3cf06774ac94.
[P2] 完成剩余完整 handoff/Todo 回归族的 canonical fixture 迁移。 当前九个完整模块 79 failed、178 passed、0 skipped,393.92s。56个 test_goal_handoff_mode.py 和23个 test_todo_mutation_authority.py 用例仍在 _add_todo/_add_agent_todo → add_goal_todo → reject_legacy_coordination_execution 初始化时得到 LegacyCoordinationWriterFenced,尚未执行其业务断言。独立 immutable base 的原两族115项全通过。这是本 PR 正常 writer 截止后的 fixture/调用方采用缺口,不能据此推断 canonical 生产授权被破坏。
需按真实语义完成两整族分类:当前仍支持的 claim/handoff/权限/lease/replay 用现有 canonical fixture;真正需要1.x producer 的分支使用明确冻结旧源。保留独立 reviewer、exclusion、委派、错误模式、原身份、重试、后写不覆盖和拒绝原子性断言。不要恢复普通旧 writer、整族删/skip,或只挑新增通过例替代原覆盖。
前一轮另一 P2 已解决: 同一 AST collector 下,update_canonical_todo_if_promoted 从78 statements/62 decisions 降为48/31,新增结果适配 helper26/31,都低于原90/60限额;已退休 legacy writer 的精确 stale exception 移除。当前 premerge 五 direct、十九 selected 全通过,无 manual hold。这个绿门不包含上述完整回归族,不能替代它们。
动机
2.0 正常运行只从 canonical owner 写入,避免 Markdown writer 和 provider 并行决定状态;升级仍应恢复真实原操作 receipt、lease、outbox 及其结果,不能借历史回执授新执行权。这个 candidate 有明确用户结果:受影响的 CLI/Chat/monitor/bootstrap 当前调用、原操作恢复及可读的 unavailable/configuration 状态应连贯可验证。
现有 typed transaction、实际 PostgreSQL 和当前打包回读有实质增量;剩余79个原 fixture 未到业务 oracle,使完整支持边界尚未资格化。自然长程试运行和发布仍是既有父验收,不把它们变为本 candidate 的额外实验门。
改动思路
依据预改动 docs/architecture/rfcs/typescript-control-plane-migration-v0.md,版本 570ac99f7c662b7aebe544bfedc4e4e80a927a7a:
- R5-T4-normal-writer-cutoff:当前 typed fence/canonical transaction 交付截止与现有原操作优先恢复;历史8项语义 mutant 只按其源/caller 未变范围保留。
- R5-T4-original-recovery:真实原 Monitor 恢复证据已具名保存,当前1438项 provider/terminal 和 canonical completion/replay 路径通过;但上述原完整调用族仍有79项初始化失败,未满足其受支持 oracle 覆盖。
- provider-canonical-creation:既有 File/SQLite 创建、disabled 读模型及当前 CLI/HTTP/打包读取已验证;不据此新增 PostgreSQL 公共创建能力的声明。
- R5-T4-natural-trial:原长程试用、安装采用、Lark、真实模型效果和 release owner 的独立验收继续保留,不以测试数量宣称完成。
复用既有 TypeScript state/effect owner、store、receipt 和 Python transport/serializer。普通旧 writer 退休是公开 major 行为变化;保留历史 producer 只为原证据和升级恢复,没有第二个常态权威。
具体改动
完整160路径 +6024/-7382,包括普通 legacy writer/facade 删除,当前 Todo/lease/monitor/bootstrap/team-plan/Chat 调用迁移,provider 默认与 Settings 读模型,原证据 fixture/mutation runner,公共文档、打包与回归。本轮先全文核验4e的14路径修订;发布前 head 又推进,已再全文检查 a39 的五路径差异及155个未变源路径。当前 terminal failure 分类变化使旧 PG 结论失效,已在 a39 重新执行完整 provider/终止套件。
最新 todo_terminal_lifecycle.ts 两处 catch 复用现有 EffectRuntimeRequestError:完成轮次/原操作身份的请求拒绝归为 decision_rejection,意外异常仍为 protocol_failure,避免把合法拒绝误报为存储不可用。九个终止/租约场景迁移到真实 File/SQLite,新增 canonical lease 读回和拒绝不改状态;SQLite CLI 还区分 Todo status 与 provider_status,并核对 dry-run/replay 不写。
关键当前符号:
todo_lifecycle_decision.ts的authority在普通注册、排除、绑定、owner/exact-user-gate 后才解析实际需要的 delegation。无关坏 grant 不阻断有权 owner;需要委派时坏 grant 拒绝,显式 executor-reclaim public grant 即使未用仍禁止。requires_reason缺省仍为 true。todo_update.ts将真实授权拒绝标为既有decision_rejection;Python_require_canonical_update_result对接既有 Rejection,而 revision conflict、缺失 canonical 或不可信响应保持 Unavailable。没有用异常适配重建权限决策。serialize_canonical_todo_update_result复用既有 serializer,仅投影原 transaction row/deltas;旧 receipt 不凭空补历史字段,replay 不以当前 head 覆盖原结果。- task-lease/workspace-guard smokes 使用真实 File/SQLite canonical fixture,验证 typed拒绝不改状态、atomic transfer 和终止 release;browser scenario 从真实 CLI 提取 todo_id,并覆盖两 provider。
当前独立执行:1438项完整 File/SQLite/NoKV/PostgreSQL store/terminal transaction/decision 测试全通过、0skip,113.83s。PostgreSQL16.15 使用专有 disposable container 与合成数据库,已移除,没有触碰活动 Goal/store。当前三个完整 Chat HTTP actions/contract/server 程序在 File/SQLite 各运行一次,六项全部通过。当前九个完整 Python 模块178通过、79失败;27项 import-boundary 测试和两个两-provider 公共 CLI smokes通过。
首次复用旧 bundle 被 source validator 按预期拒绝为 stale;正常重新 build:chat 并验证打包后,完整 blocked-reason-readback 场景通过,51.53s,八项 File/SQLite ×中文/英文×桌面/390px移动端。已检查完整 viewport,目标/状态/原因/下一动作可辨识,没有横向溢出。场景使用真实 CLI 和 HTTP owner,验证同一 drawer 原因更新、循环依赖修复、遗漏可选原因、旧反馈 timer 不清新刷新、blocked→open,以及真实完成/归档后 active unavailable→retained history,零 UI 写入。网络层仅转发到隔离真实 backend;缺可选字段和延迟是明确的 transport 反例,不能证明真实 Host 运行或长期 freshness。
对主干的风险
完整写入截止为强制2.0边界,不能包装为 guidance 或 default-off 功能;disabled provider 配置保持可读,任何历史 receipt 都不授普通 fresh write。当前 actor/delegation 改动保持 typed owner,Python 只运输 raw grants;公共失败分类复用现有 terminal contract。通用 error/状态规则保持 Goal-neutral。
当前开发期 advisory 后 full semantic、TypeScript typecheck、公开边界、diff hygiene 和原生风险检查通过。没有查询或等待 CI。作者提及的历史 Windows 失败与新 CI 状态仅作为作者声明;本轮没有实际 Windows 或整套 wheel 资格。前述 AST 和 stale exception 修复没有提高限额、压缩有用结果或改 oracle;架构测试用独立合成 exact edge 继续验证例外不变成 prefix waiver。
未来维护 pass 已应用到最近 owner:结果适配和公开 projection 分别抽到既有 adapter/serializer,权限判断由 typed lifecycle 控制。历史 Monitor、quota、mutant、冷恢复等证据只在其具体源及 caller 未变时复用,不继承整个安装包/长程采用结论。当前无合并、撤评或发布权限。
我的整体评价
REQUEST_CHANGES,剩余阻塞为具名完整回归族的 fixture/调用方采用缺口。当前 typed/provider、真实 PostgreSQL、可维护性修复和打包回读已独立通过,应保留这些结果;完成剩余分类迁移并跑整族后再对新 exact head 复核,不恢复重复 writer,也不强加不相关自然试用门。
English verdict: REQUEST_CHANGES — a39a244.79 current full-family cases (56 handoff/23 Todo) still fail at retired legacy fixture initialization before their supported business assertions.1438 real provider/terminal tests including isolated PostgreSQL, eight packaged File/SQLite readback journeys,27 import tests and native5 direct/19 selected checks pass. The previous maintainability/stale-exception blocker is resolved; finish the remaining complete caller-fixture migration without reviving legacy normal writes or deleting assertions.
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>
|
Author integration update (not an exact-head approval): The normal Markdown cutoff left a callerless Python lifecycle-authorization chain behind. Production-call inventory now confirms its removal, including its unused facade exports; config-time grant validation and registry-fact transport retain their active callers. Seven claim scenarios now exercise real File and SQLite through the public API, checking typed rejection plus unchanged canonical revision, full Todo state and Markdown projection. The synthetic imported-policy fixture is created before provider initialization, not written into an active authority store. That consumer migration also exposed a real audit omission: canonical terminal operations checked and fingerprinted the delegation reason without retaining it in the result receipt. The existing TypeScript transaction now stores the accepted reason for changed/no-op delegated results. Original receipts remain immutable. Shared provider conformance verifies recovery before current-authority access, unchanged owner-only results and rejection of a changed reason under the same operation identity. Validation and limits:
The owning boundary is the builtin Todo lifecycle transaction. CLI/Python receipt readback changes; no new capability, provider, configuration toggle, frontend or Lark interaction is introduced. The bounded refactor removes the entire obsolete chain and reuses the existing receipt owner. RFC and course ownership notes are reconciled. Full remote CI, remaining Monitor/handoff/legacy consumer failures, installed/natural-trial evidence and a fresh whole-PR review remain separate gates. No merge or release is claimed. 中文:本批删除无生产调用方的 Python 生命周期授权链,保留配置校验与事实传输;真实 File/SQLite 拒绝用例验证无部分写入。同时补齐委托终态回执中的原始理由,重放保留原结果,同一操作更换理由明确拒绝。权限模块余 18 个旧路径失败、组合运行一次超时及全量 CI/精确评审仍保留,未合并或发布。 |
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>
|
Author validation for The imported-completion regression was reproduced on real File and SQLite: the completion reducer allowed missing-continuation repair, but the outer terminal no-op discarded it. The shared TS transaction now honors that existing decision and persists one repair receipt. No Python decision owner or new protocol vocabulary was added.
Future-facing pass: remove the unused Markdown assertion reader and reuse the existing typed completion fence instead of a second repair rule. CLI and Python entrypoints use real providers; frontend/Lark were unchanged. Whole current-head CI, fresh review, remaining caller/mutation failures, installed adoption and core-developer trial are still open. Historical broad failures and the earlier timeout retain their own provenance. No merge or release is claimed. 中文:本批修复了“历史完成记录返回修复成功却未落库”的真实缺陷,并一次完成 actor 模块剩余调用族的 canonical 迁移。上述完整测试通过,但精确质量评审 receipt、当前 head 全面 CI、安装采用和真实核心试用仍未闭合,不能把本批通过当作整个 PR 可合并。 |
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; model=gpt-6.1-sol; provider=OpenAI; runtime_reported; reasoning_effort=xhigh
Request changes conclusion (author-owned PR; GitHub blocks formal self-review)
Exact head: cb39361857464ad9e0f19bff77144dd1ad2c330d; merge base: 3dd3c550afecfa0c525a34e8744a3cf06774ac94.
[P2] 完成剩余完整 handoff 族的 canonical/历史 fixture 分类迁移。 当前五个完整公共调用方模块 56 failed、147 passed、0 skipped,141.84s;56项全部在 test_goal_handoff_mode.py::_write_workspace/_add_todo → add_goal_todo → reject_legacy_coordination_execution 初始化时得到 LegacyCoordinationWriterFenced,尚未执行其模式、lease、bootstrap、owner和恢复断言。不可变3dd原两族115项通过的控制保留。这是2.0截止后的调用方/fixture采用缺口,不能推断canonical生产授权损坏。
在原 PR 按当前 canonical 或不可变1.x producer 分类迁移完整 handoff 族,保留错误模式、原身份、lease、重试、后写不覆盖和拒绝原子性;不恢复普通旧 writer 或整族删/skip。 只可具名退休已有替代证明的旧语义,不能用新增通过的actor/provider测试覆盖未到达的handoff oracle。
上一轮actor部分阻塞已解决:当前完整actor模块115项通过,保留独立reviewer、exclusion、grant、错误身份、lease、原操作和拒绝不改状态。维护预算及stale架构例外的已验证修复继续保留,未提高限额。
动机
CLI、Chat、Monitor、bootstrap/handoff 的当前调用方,以及升级后恢复原操作的维护者。 旧 Markdown writer 与 canonical provider 可并行决定状态;迁移后的部分历史完成修复虽返回成功,却被外层 already-done no-op 丢弃。 正常写入统一经过既有 canonical owner;旧操作仍从原 receipt 恢复。当前 imported untyped completion 修复由既有 TypeScript completion 决策原子落库,重放保留原结果和已释放 lease。
当前真实 provider/终态1450项与完整 actor115项通过;剩余 handoff 族56项仍停在退休旧 writer 的 fixture 初始化,未到受支持业务断言。 完整 handoff 族56项受支持模式/lease/bootstrap 恢复断言尚未资格化。 自然长程试用、整体安装采用、实际 Windows/Lark、模型效用和发布继续按原父验收,不增加为本 candidate 的额外门。
改动思路
依据预改动 docs/architecture/rfcs/typescript-control-plane-migration-v0.md 的不可变版本 570ac99f7c662b7aebe544bfedc4e4e80a927a7a,按既有R5/T4截止与原操作恢复评判,不以新写的验收或测试输出替代原要求。
- R5-T4-normal-writer-cutoff:Normal major runtime retires fresh legacy source writes;canonical owner remains. 当前 disposition=implemented。
- R5-T4-original-recovery:Supported original receipt/lease/outbox recovery preserves identity and later state;actual consumer assertions remain executable. 当前 disposition=not_met。
- provider-canonical-creation:Existing File/SQLite current creation and readable disabled configuration retain one owner. 当前 disposition=implemented。
- R5-T4-natural-trial:Natural long-running core trial and release readiness remain separate acceptance. 当前 disposition=deferred。
复用既有 TypeScript state/effect owner、store、receipt 和 Python facts/transport/serializer,删除无人调用的第二条授权链。 普通旧 writer 退休是公开2.0行为变化;历史 producer 只服务原证据恢复。untyped repair 复用已有completion fence,原receipt不会授新执行权。 本轮边界是 可回滚的2.0 normal-writer cutoff candidate;当前受支持调用方采用须验证,父自然试用和 release owner 单独负责。
具体改动
完整165路径 +6483/-8222,真实fork为3dd。先在6a01全文检查8路径/40,780字符修订,与自己a39独立评审的154个未变owned blob比较;10个完整Python模块74失败197通过,461.51s,56handoff+18actor。发布前head推进到cb39,停止旧结论,重新取得native exact packet,全文核验6路径/48,037字符增量与159个未变源路径,未在运行旧测试时改checkout。
todo_lifecycle_facts只运输registry facts,配置grant校验保留实际调用方;callerless Python生命周期授权链和facade导出删除,生产全树无遗留调用。执行授权仍是既有TS owner,没有Python第二决策源。executeCoordinationTodoTerminalLifecycle把accepted delegation reason写入changed/no-op result;owner-only结果不凭空增加字段。原request fingerprint本已绑定reason,恢复先于当前authority读;同一操作更换理由拒绝,历史receipt原样保留。- 同一transaction现在遵循existing completion fence的
untyped_completion_repair:已done且缺continuation的原记录显式修复实际落库,再由同Turn完成closeout。没有新修复policy。共享provider反例保留wrong actor/Turn/successor拒绝、preview不写、original import receipt及completed_at不改、重复操作replay、后续closeout。 - 公共actor/Monitor/binding调用迁移到真实File/SQLite。旧split claim/lease、完成后metadata reopen、独立post-commit release seam被具名退休:新路径拒绝借外人lease或重新开启done执行;实际canonical commit后丢失响应证明completion与release原子恢复。unpromoted claim即使修正CLI语法仍拒绝且源不变;历史fixture在provider初始化前声明,不改活动authority。
当前独立完整store/provider/terminal套件 1450 passed、0 skipped,109.23s,包括真实专有PostgreSQL16.15合成数据库,容器已删除。当前五个完整Python模块 147通过/56失败,只有handoff族仍失败;actor115包含在147中,不相加。较早6a01的1442 provider通过和74失败/197通过为独立冻结结果,不能算当前总数。作者曾有90秒SQLite→Python timeout;本次完整当前运行通过,不据此宣称旧timeout已查明。
当前正常重新 build:chat,source验证后打包readback通过,43.27s:八项File/SQLite×中英×桌面/390px mobile,真实CLI与HTTP owner,原因更新、可选原因遗漏、旧timer不清新刷新、循环依赖修复、blocked→open、完成/归档后active unavailable→retained history,零UI写入。缺字段与延迟是具名transport合成反例。UI source/interaction未变,先前完整viewport审查只在相同前端源范围复用;本次不宣称实际Host、Lark或长程freshness。
对主干的风险
正常旧writer退休为明确的2.0 mandatory breaking boundary,不是guidance或default-off能力;disabled配置可读,fresh source write必须import后由canonical执行。新委托reason仅retained原transaction事实,不增加grant;untyped repair的state/effect由既有typed fence决定,通用错误和状态保持Goal-neutral,没有substring状态判定或新增共享生命周期。
未来维护pass已应用:整条无调用方Python授权链退役,terminal repair复用原completion decision,删掉unused Markdown assertion reader;历史outbox、release、import reader保留真实owner。source-scoped旧Monitor/quota/mutation/HTTP/installed证据仅用于源/caller未变部分,不能继承整安装/自然采用结论。
当前原生premerge 5 direct/19 selected全部通过、0hold,Ruff、TypeScript、diff、公开边界以及advisory后fullsemantic通过;advisory没有支持的新词载体,动态/cross-runtime以及44处producer unresolved限制保留。作者另报change-quality receipt缺失为其运行的独立门,本文不把本次验证当作receipt、approval或merge readiness。没有查询、轮询或等待CI;作者远程CI/其他整族失败与安装采用声明只按原来源保留。
我的整体评价
REQUEST_CHANGES,当前阻塞缩小到56项完整handoff调用方/fixture资格。原actor缺口、新imported完成修复、委托reason、真实provider/PostgreSQL和打包回读有独立实证,应保留这些增量;完成剩余分类并跑完整族后对新exact head评判。当前没有合并、撤评或发布授权,也不强加自然试用的新阶段门。
English verdict: REQUEST_CHANGES — cb39361857464ad9e0f19bff77144dd1ad2c330d. All 56 remaining failures are in the complete handoff family at retired legacy fixture initialization before its supported business assertions. The actor family is resolved (115 passes); 1450 current provider/terminal tests including isolated PostgreSQL, imported repair/replay negatives and eight packaged File/SQLite journeys pass. Finish the complete handoff fixture classification without reviving normal legacy writes or dropping assertions; natural trial and release remain separate acceptance.
Retain frozen 1.x characterization, cover current File/SQLite permissions and CLI readback, and replace retired two-write and display-authority assumptions with explicit canonical rejection and replay invariants. Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
|
Author validation update — handoff caller adoption (exact head: 09e42d6). The remaining handoff fixture gap is addressed as one caller-family batch. Current operations use real File and SQLite authority; the seven original 1.x split-brain characterization cases run unchanged from frozen source Explicit coverage reconciliation:
Validation: 285 passed / 0 failed / 0 skipped across the six complete modules: Future-facing pass: repeated assertions use small test-local native readback helpers and semantic parameter cases. Existing atomic-transfer and execution-proof suites remain the owners of those journeys; no parallel runtime policy or fixture framework was added. Synthetic retained records qualify consumer behavior, not cold-import provenance. This is author evidence, not an approval or merge-readiness receipt. Full CI and fresh exact-head review remain required; original broader failures, installed/natural-use acceptance and release authority are not cleared by these counts. No merge or release performed. 中文:本批完成 handoff 及相邻 CLI 的 canonical 调用方迁移;7 个真实 1.x 特征测试冻结原源运行,其余验证 File/SQLite 的权限、租约、原回执和拒绝原子性。具名退役两步交接、metadata 改执行归属、Markdown 反向决定 policy 与 force 重建;原子转移及接收方采用由原有完整测试验证。此为作者证据,等待当前 head 的 CI 与独立复核,不宣称整个候选、安装采用或发布通过。 |
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
|
修复新 head CI 暴露的 mutation 漏检: 本次仅修改 验证:三个完整相邻 TS 模块 46 passed、0 skipped;原 mutation control=0 / mutant=1,断言命中;8组旧/新 oracle × 正常/延迟 × control/mutant 对照符合预期;TypeScript、diff、advisory 后全树 semantic 检查通过。新提交 English: Fix the CI-discovered false-negative in the writer-fence mutation oracle. A 100ms sleep could release the holder before the wrong-lock implementation finished starting. The test now observes real EEXIST contention on the held lock, verifies absence before release, and reads back publication afterward. Delayed-start counterfactuals reproduce the old miss and verify the repaired oracle. All 46 adjacent tests pass and the original mutant is assertion-killed. Production locks and budgets are unchanged; hosted CI and exact-head review remain open. |
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
|
Author validation update — Two remaining failures from the earlier full-public smoke run were reproduced on parent This test-only batch seeds disposable File/SQLite authority using the existing canonical fixture. It keeps all three role-successor scenarios, checks typed missing-actor/wrong-owner rejection against unchanged provider records/revision and source bytes, then proves owner recovery and the retained successor link/claim through the real CLI. The old legacy-only Validation: both complete scripts pass without skips; integrated File 7.24 s + SQLite 7.13 s, within the unchanged 60-second total budget. Focused Ruff, diff/public-boundary scan, advisory followed by full semantic drift check pass. The semantic check still reports 44 unresolved producer sites and 20/21 cross-runtime items unverified. Future-facing pass reuses the existing fixture owner and one local durable successor assertion; no runtime rule, new shared vocabulary, UI or Lark surface changes. This closes these two named smoke adoption gaps only. Comprehensive CI and an exact-head review remain pending; older failures and installed/core-trial/D2/D3 acceptance retain their own evidence. No merge or release. 作者验证更新:在父提交重现了两个宽测失败,均因夹具仍尝试普通 Markdown 写入而未到业务断言。本批只迁移角色后继和控制面完整 canary,使用隔离的真实 File/SQLite。保留缺身份/错误 owner 拒绝,新增拒绝前后权威记录与版本不变、正确 owner 恢复及原后继归属读回;后继关系改验既有 canonical 字段和持久事实。整条 status、quota、ACK、完成/后继、刷新/记账、review-packet、监控转静默路径均覆盖两个后端。 两个完整脚本无 skip 通过;File 7.24 秒、SQLite 7.13 秒,原总计 60 秒预算不变。Ruff、公开边界、diff、advisory 后完整语义检查通过,语义未证明项保留。复用既有夹具和本地断言,不新增产品规则。只关闭这两项具名宽测缺口;当前 CI、精确评审及原安装/核心试用/D2/D3边界未宣称完成,未合并或发布。 |
There was a problem hiding this comment.
Reviewer: model_agent; model=gpt-6.1-sol; provider=OpenAI; runtime_reported; reasoning_effort=xhigh
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
Exact head: 409cf8ef91d2bb30de8a0ddd23e15f54af0afd91; actual merge base: 3dd3c550afecfa0c525a34e8744a3cf06774ac94.
动机
普通 CLI/Chat/Monitor 用户需要在 2.0 中通过同一 canonical owner 写任务,并在升级后继续恢复原 receipt/lease/outbox。前次完整 handoff 族的56项测试被已退休的普通 Markdown writer 阻断,尚未执行支持的权限与恢复断言。本次把该调用族分为当前 File/SQLite 和真正原1.x特征路径;角色后继与完整 canary 也能走到完成、后继归属和结果读回。
当前六个完整模块 285 passed、0 skipped、257.08s,两个完整真实 CLI smoke 通过;这关闭具名调用方采用缺口。长期维度为 accepted_tradeoff:major 迁移保留原操作恢复且减少平行写者,明确的 import/权限成本继续存在。用户体验同样为 accepted_tradeoff,已有 packaged journey 与当前受支持调用结果得到实证;测试数量不证明整体自然采用、模型收益或发布完成。
CLI、Chat、Monitor、bootstrap/handoff 的当前调用方,以及升级后恢复原操作的维护者。 正常写入统一经过既有 canonical owner;旧操作仍从原 receipt 恢复。当前 imported untyped completion 修复由既有 TypeScript completion 决策原子落库,重放保留原结果和已释放 lease。 原56项 handoff fixture 阻塞已通过完整当前 canonical/历史调用族消除;六整模块285通过、零skip,角色后继和完整canary均经真实File/SQLite CLI读回。锁oracle八组对照复现旧漏检并证明新断言能杀正常/延迟错误锁。 本候选当前具名评审阻塞已闭合;历史宽测失败总体归因、真实安装自然采用、Windows/Lark、长期效用与发布仍未认证。 自然长程试用、整体安装采用、实际 Windows/Lark、模型效用和发布继续按原父验收,不增加为本 candidate 的额外门。
改动思路
依据预改动 docs/architecture/rfcs/typescript-control-plane-migration-v0.md@570ac99f7c662b7aebe544bfedc4e4e80a927a7a 的既有 R5/T4:退休 fresh legacy 普通 writer,保留原身份/回执恢复与 canonical File/SQLite;自然试用和 release 另由原 owner 验收。当前候选仍是有界、可回滚的2.0截止阶段,不把新的测试输出来定义规范。
复用原 TypeScript state/effect/store、actor/lease/receipt owner;Python 运输事实和结果。当前修订仅改五个 test/smoke 文件。两个本地 readback helper 与参数化语义用例复用既有 canonical initializer、原 atomic-transfer/execution-proof 族和冻结1.x producer;不恢复普通旧 writer,也不创建第二个授权或 fixture 框架。
锁测试从100ms睡眠改为观察 exact held lock 的真实 EEXIST,再核发布前 absence、释放后 fence identity,并在失败清理前 drain 操作。这是现有排他不变量的测试同步修复,不是新 runtime 锁、timeout、预算或 provider policy。
复用既有 TypeScript state/effect owner、store、receipt 和 Python facts/transport/serializer,删除无人调用的第二条授权链。 可回滚2.0正常写入截止候选。当前handoff迁移与锁oracle独立资格化;真实原回执恢复与canonical authority仍是同一owner,release/自然试用/宽测归因未关闭。
- R5-T4-normal-writer-cutoff:Normal major runtime retires fresh legacy source writes;canonical owner remains. 当前 implemented。
- R5-T4-original-recovery:Supported original receipt/lease/outbox recovery preserves identity and later state;actual consumer assertions remain executable. 当前 implemented。
- provider-canonical-creation:Existing File/SQLite current creation and readable disabled configuration retain one owner. 当前 implemented。
- R5-T4-natural-trial:Natural long-running core trial and release readiness remain separate acceptance. 当前 deferred。
具体改动
完整候选 169路径 +7390/-9830;与已独立审查的cb39相比,164个 owned blob、全部生产/文档/UI源码一致。本次检查五个变化文件的当前源码及其删除/语义替代,重新评判结论。原58个 handoff函数归并为25个语义/参数族:四个 source parser 保持,七个原1.x特征函数 AST 与旧文件及不可变60d原源逐一相等,使用原 interpreter 在隔离进程执行。当前两步claim handoff、metadata/duplicate-create改执行归属、display决定policy、force重建被具名退休;原子转移和接收方 edit/completion/旧sender拒绝/receipt replay由原完整族验证。
当前完整六模块:handoff、CLI、Todo mutation authority、canonical handoff、canonical claim transfer、execution proof,285通过/零失败/零skip。反例包括缺/外人/过期/分裂lease、错误actor/key、未授权grant、执行归属metadata改写、错误policy、force-bootstrap、dry-run和重复replay。拒绝比较 provider revision、完整 Todo/lease/policy及display;正确owner恢复、原receipt、后继claim无新lease保持。合成 retained record 是消费者 policy 验证,不能代替冷导入来源证明。
两个完整 smoke 真实运行 File/SQLite CLI:角色后继保留缺actor/错误owner拒绝原子性,再验证正确owner完成和原后继claim;integrated脚本保留 status → quota/scheduler ACK → completion/successor → refresh/spend → review-packet及due-monitor → quiet。File 10.16s、SQLite 11.24s,未提高原60s总预算。
三个当前完整TS相邻fence模块 42通过、零skip,8.008s;原生 mutation runner 的control退出0、错误锁mutant退出1且命中 assertion。另做八组独立旧/新oracle × 正常/200ms启动 × control/mutant:旧延迟mutant存活,四个control均通过,新两种延迟mutant均被断言杀死。故障清理仅涉及拥有的临时文件和进程。
前次cb39独立 1450 real provider/terminal(含隔离PostgreSQL16.15)、完整actor115、八个真实 File/SQLite packaged中英/desktop-mobile旅程,仅在全部相关源和依赖未变的范围复用,保留原执行revision;没有把它们标成本轮重跑或相加。早期public wait/Monitor isolation/promotion-team-plan/quota-planning/维护预算/actor阻塞的修复源码仍相同;当前handoff56项是最后新增闭合的具名族。保留前次 inline initializer修复及原target/promotion/later-write断言。
对主干的风险
这是明确的 mandatory2.0 breaking cutoff,不是default-off能力或advisory guidance。disabled配置可读,fresh source write须import后由canonical执行;原receipt只恢复原操作,不授新执行、消息、context、claim或peer权限。当前新literal/helper仅在测试,原typed状态、exact身份与授权边界不变,没有substring分类或产品专用通用控制规则。
当前全候选原生premerge 5 direct/19 selected全部通过、0hold;Ruff、TypeScript、公开边界、diff以及advisory后全semantic通过。语义扫描的44 producer unresolved、20/21 cross-runtime未证和动态构造限制保留。最初reviewer用了错误canary参数/semantic路径,已按实际CLI和仓库路径纠正;这些不是产品失败。验证固定真实fork3dd,期间共享origin/main推进到3300,未把新主干67个其他文件混入候选scope。
作者宽测836fail/57errors、旧47smoke失败和先前90s timeout保留其revision/来源;本轮只闭合对应已实证修复族,不声称全量归因、whole-suite或托管CI通过。安装隔离/自然核心试用、真实Windows/Lark、跨机器持续运行及release仍属原验收。未查询、等待或触发CI。未来维护pass已应用最近owner复用、参数化实际语义和独立锁同步;更大框架或无示出回归的cache重构无必要。
补充旧 finding closeout:当前完整 Monitor transaction/receiver isolation、team-plan authority 与 new-Goal storage 四模块 144 passed、0 skipped,334.53s。原8个缺历史 marker和1个已删除team-plan hook已通过实际冻结1.x producer→当前receiver;inline4259609344的 initializer 已归既有 new_goal_storage_transport,完整族到达target/promotion/later-write断言。维护者旧review5504547455仍在平台生效,状态为CHANGES_REQUESTED;本任务没有独立撤评/合并授权,批准不抹去该平台门。
我的整体评价
APPROVE。当前具名handoff fixture阻塞、两个smoke采用缺口和锁oracle漏检均有独立实际入口、负例/恢复与readback;源码资格化保留原production/provider/packaged证据,没有继承历史verdict。批准仅针对当前完整2.0候选及其已验证边界,原父阶段、宽测归因和发布不因此完成。后续closeout、平台状态、readiness和maintainer merge authority分别判断,未撤回其他人的review或合并。
English verdict: APPROVE — 409cf8ef91d2bb30de8a0ddd23e15f54af0afd91. The complete six handoff/authority families pass285 cases without skips; real File/SQLite successor/integrated CLI journeys pass. Forty-two adjacent fence tests, the native assertion-killed mutant and eight independent delayed-start controls establish the repaired oracle. All production/docs/UI blobs match independently reviewedcb39, so its real PostgreSQL/provider and packaged evidence is retained with original provenance. Broad historical failure attribution, natural adoption, installed/Windows/Lark qualification and release remain separate; no merge authority is granted.
|
Delivery routing update: prioritize the contributor-led retirement in #6396. The two candidate diffs overlap on 100 paths; this branch will supply independently verified missing behavior rather than another full retirement stack. The first contribution targets the author’s branch directly: Duang777/loopx#1. It fixes the reproduced imported-completion repair gap and identifies the breaking candidate consistently as 2.0 alpha. File/SQLite and isolated real PostgreSQL qualification, installed-wheel readback and the parent semantic-check limitation are recorded there. It does not wholesale merge #6366 into #6396 or imply parent approval. After #6396 lands, reconcile the remaining verified delta against the actual new main. Keep historical recovery and installed/caller coverage that still guards supported behavior; drop changes that #6396 already supplies. Existing unqualified trial/release evidence remains separate. No merge is performed by this routing update. 中文:调整为 #6396 承载社区开发者主导的退役主体,先向其作者分支提具名补缺PR;本分支暂停继续扩展重复退役实现。#6396 合入后从新主干逐项核对剩余差异,不整包合入旧栈。恢复缺陷、版本边界和当前语义失败按实证处理,贡献归属、原验收与合并授权保留。 |
|
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 |
Result and boundary
Implement the import-first 2.0 alpha cutoff from the TypeScript migration RFC. Ordinary Todo mutations/claims, Monitor writeback, source bootstrap/handoff, new team plans and fresh source lease execution require canonical authority. Retained v0 or disabled creation settings stay readable but cannot create a new source-backed Goal. File/SQLite canonical execution keeps its existing typed owners.
Remove the Markdown Todo/Monitor writers, unused line-update helpers and four Todo capture producers. Keep original team-plan receipts, lease release with CAS, historical outbox drain, import/backup readers and Markdown projections. Imported legacy ownership must be reviewed/migrated before fresh lease grants, renewal or transfer. This is a breaking
2.0.0a1candidate, not a compatible 1.x update or a published release.Canonical actor and terminal repair at cb39361
Imported completed Todos without a typed continuation could report a successful repair while remaining unchanged: the terminal transaction discarded the completion reducer's explicit repair behind its already-done no-op. The existing TypeScript owner now commits that repair once, preserves original receipts and admits subsequent same-Turn closeout. Shared File/SQLite/PostgreSQL tests cover preview, wrong actor/identity, successor refusal and replay.
The complete actor module now uses canonical authority for its remaining Monitor, binding and terminal consumers: 115 passed. Adjacent CLI/config modules: 37 passed; complete File/SQLite/terminal decision suites: 741 passed; isolated real PostgreSQL: 352 passed, no skips. Atomic completion/release is tested through actual commit-response loss. Completed ordinary Todos reject metadata reopening; unmigrated source claims reject even after syntax repair. These are explicit 2.0 boundaries, not legacy writer parity.
Typecheck, semantic drift, Ruff, diff checks and all 18 selected canary/risk/public-boundary checks pass. The premerge aggregate remains quality_receipt_missing; this is author validation, not exact-head approval or merge readiness. Full current-head CI and remaining whole-PR caller/mutation/installed/trial acceptance remain open. Earlier broad failures and the prior isolated timeout remain revision-bound evidence, not arithmetically cleared. No merge/release authorization is claimed.
Earlier lifecycle integration at 6a01d3f
Head
6a01d3ff9retires the callerless Python lifecycle authorization chain and its facade exports. Existing configuration validation and registry-fact transport remain. Canonical terminal receipts now retain accepted delegation reasons; retries recover the original result and reject a changed reason under the same operation identity.Real PostgreSQL: 350 passed; final isolated SQLite: 366 passed; focused claim/actor/delegation/config: 29 passed; 19 premerge checks passed. The combined provider run recorded 736 passed / 1 Python subprocess timeout; targeted rechecks and the complete SQLite rerun passed, but the timeout root cause remains unproven. That actor-module run reported 79 passed / 18 legacy-path failures; the newer complete run above supersedes this module result. New-head remote CI, complete caller migration and exact-head review remain open; older counts below are revision-bound. Detailed author validation and limits.
Recovery and author integration
Native source-lease tests now restore independently frozen 1.x artifacts. Original release, prepared/committed replay, interrupted fence close, stale generation rejection and later-write protection remain covered. Recovery now preserves the original aborted-fence authority, refreshes the lock token after re-acquisition, rejects divergent held generations and checks current authority before adopting a committed auto-acquire. A prepared intent cannot mint a fresh legacy grant. Settings and its configuration catalog describe the same 2.0 boundary.
The runtime cutoff candidate is implemented. Retained regression-fixture migration and exact-head review remain in progress; merge authorization is separate.
Current recovery-fixture repair
Earlier recovery-fixture head:
9bf742d0e3e651e992390fc6f97150d68918a0ed. Original source transactions use immutable public 1.x revision60d833b13c85135587b725013b247e827663ffb9; current inspection, drain, import and replay use the candidate receiver. No normal Markdown writer was restored.f2f848acb5e82e6576ee3d3940f4d5611d50863a. Later changes repair the independent consumer tests, browser fixture and mutation harness described below; this older selection is revision-bound and does not qualify the final harness.3549d6529f7c207d6d235a997d1906ece691c545.The earlier 16 failed / 37 passed / 33 deselected writer/ladder probe and the review's five creation/team-plan failures are superseded by these executable repairs, not skipped or relabeled. Earlier Monitor, observable and dependent recovery coverage remains recorded in prior validation evidence; this does not turn selected passes into a whole-suite claim.
Settlement and planning consumers now exercise the supported authority boundary:
test_quota_settlement_cli.py: 100 passed. Normal writeback uses real canonical File authority; File/SQLite retain the two-phase completion/clock and hook replay cases. Historical hidden/archive/workspace recovery uses immutable 1.x producers and current readers. The unsupported fresh-source completion arm is removed from the normal provider matrix; retained historical recovery and current cold-source refusal remain separate contracts. Source-only retry refusal and canonical implicit retry are not conflated. The prior complete-module result was 22 failed / 79 passed.test_native_todo_planning_update.py: 76 passed, superseding 22 failed / 54 passed. Original CLI/Python API arms now execute the same immutable 1.x source; current canonical arms, independent expected normalization, explicit-empty semantics, invalid inputs, ownership, successor readiness and replay assertions are retained. No normal writer was reintroduced.Remaining author work: the bounded broader probe reported 8 failed / 4772 passed / 184 skipped / 4 collection errors before stopping; those observed failures/errors are superseded by the planning and shared-import repairs above. That stopped probe is not whole-suite qualification. The uncapped non-Stage2C Python inventory has completed: 20,722 passed, 836 failed, 57 errors, 369 skipped, 552 subtests passed, exit 1, in 4002.90 seconds. It started at
27e7bebbin a development worktree; runtime source remained unchanged, browser dependencies/assets were provisioned during execution, and later test-only harness edits were made before completion. This is a failure inventory, not immutable-environment qualification. Sampled traces include fresh Markdown writes rejected by the cutoff and missing packaged frontend assets; the full failure population has not been attributed through baseline controls. A fresh exact-head whole-PR review is still required. Installed-wheel evidence, natural trial, and merge/release authority retain their separate boundaries. CI was initially not consulted; the explicit comprehensive-CI request is covered below. No merge was performed.Comprehensive CI and current browser repair
The Python Tests run at
27e7bebbselected full coverage, including core/backend/Python/Stage2C/presentation. Its Python shards were still pending at readback. The separately requested Full Public Smokes sweep completed on that head: 468 passed, 47 failed, all 515 selected checks executed. These results belong to that head; they are not a current-head approval. Failures span unsupported source-writing fixtures, dependency/environment checks and other contracts; they are not all attributed to this PR without controls.The earlier two-file repair at
ba4073d05fixes the packaged workspace Add task test's source-only setup. Direct owner invocation proved that preview reachedcanonical_authority_required; the HTTP adapter returnedaction_preview_failed. Reusing the existing canonical File fixture restores the supported normal path. Both development and packaged browser scenarios pass, including first-apply 503 refusal, retained draft, retry, refreshed task row and exactly-one independent CLI readback. The packaged assets came from the same-head CI artifact and passed source verification. Preview HTTP failures now fail directly with their response instead of timing out on the drawer. Focused Ruff, JavaScript syntax, diff/public-boundary checks and the full semantic drift check pass. No production/UI code, writer or runtime authority changed; this fixture seed does not qualify cold import.Remaining author work:
[disabled-file]canonical parameter and copies the fixture-owned immutable Git object into its disposable repository. It does not share an upstream Git directory, change the frozen working tree or restore a normal legacy writer. Seven selected cases pass their unchanged controls and fail by assertions after mutation: relative-root routing, native note/claim/diagnostic semantics, cursor baseline, qualification baseline and forged cursor digest. All six File/SQLite routing combinations pass; two harness tests prove independent retained history and fail-closed missing history, including ambient Git routing isolation. Ruff, diff/public-boundary scan and full semantic drift checks pass. The advisory scanned no production vocabulary sources; the new test module is outside its supported scope. This is not a full mutation-suite pass: the full locator audit still reports 53 passed / 2 failed, and collection finds two deleted legacy-writer test entrypoints. Preserve those open failures while reconciling the remaining current-versus-historical mutation targets. The bounded companion refactor shares subprocess environment isolation between freeze and test execution.b644a9759without conflicts indcf8b65c6, reusing #6382. The candidate now passes the full digest-owner TypeScript module (17 passed) and Python architecture module (211 passed). The prior immutable base/head failure is superseded on this integrated source, without weakening the rule or duplicating the repair.Explore caller integration at the current head
The Explore result/link/capture consumers now seed real canonical authority before normal mutations. Already-claimed tasks no longer perform an unsupported source claim merely as setup. In the hard-lease path, linked evidence scope is part of the task declaration before the grant; the test does not repurpose an existing lease through metadata. Mixed replace/append intent still fails explicitly and now asserts unchanged full Todo readback.
Five complete modules pass: 140 passed in 114.02 seconds, including both File/SQLite leased capture, repeated writeback, interruption after primary commit, conflict recovery, terminal evidence attachment, post-release replay, bounded evidence projection and durable long-history readback. The same four-module probe before fixture repair reported 67 failed / 42 passed; the final run also includes the shared source-history consumer module. The intermediate 3 failed / 137 passed exposed the typed rejection and grant-order requirements; all are repaired, with no skips or removed recovery assertions. This consumer seed does not qualify cold import or installed-wheel isolation.
Focused Ruff, diff/public-boundary scan, semantic advisory and full semantic drift check pass. The companion cleanup reuses the existing canonical initializer and settlement fixture instead of adding a writer or a second decision owner. No production behavior is added by this four-file test repair. Latest-main integration invalidates old packaged UI/source equivalence; older browser and package evidence remains revision-bound. Installed wheel/sdist isolation is now qualified as described above. The complete mutation suite, other Python/smoke caller failures and fresh whole-PR review are still open; no merge or release is claimed.
Earlier candidate validation
loopx canary premerge --from-git-diff: all required direct, catalog, risk-profile and public-boundary checks passed. One inherited maintainability advisory remained and did not mention changed files. An intermediate canary run detected the concurrently edited RFC as a tracked side effect; the complete rerun against the frozen worktree passed all required checks. Full semantic drift check, focused Ruff and TypeScript typecheck passed.Ownership and refactor assessment
The shared cutoff extends the existing typed writer-fence result contract; Python transports its refusal and does not add a second decision owner. Default behavior changes are deliberate and documented in both languages. CLI, Chat/creation and Settings share the existing owners; no additional switch or authority grant is introduced.
The bounded companion refactor removes the last unused line-update facade and writer-only tests while retaining typed field/visibility rules and concrete recovery callers. Outbox recovery and lease-release capture remain live, so deleting their shared infrastructure is deferred. This PR does not authorize merge or release.