lanrtop
|
479f4ac2cd
|
fix(onboard/parity): 处置 P8c 独立审查——Codex 信任改进 next_actions、存在即跳过只判存在、token 步区分 needs_repair(P8c)
- Codex 未信任不再并入 blocked:计划新增 codex_trust 与 next_actions 字段,未信任或读不出
Codex 配置只进 next_actions,不阻断、不进 digest;「本机步骤 → 阻断项」抽成纯函数 machine_step_blocker。
- WriteSink 新增 exists():dispatch_one 只判存在,已存在的非 UTF-8 文件(UTF-16 lefthook.yml 等)
恢复为 skipped(修复 apply_onboarding_pack 回归);全托管文件读不出仍记 failed。
- token 步改用只读 mcp_auth_token_state 区分 Present / Missing / NeedsRepair,needs_repair 记 needs_human,
与 get_or_create_mcp_auth_token 的分支一一对应;is_project_injected 仍只作「已接入」判据。
- Codex 信任去掉未验证的祖先目录规则,候选为项目根 + git 主仓库根(worktree 继承主仓库信任);
键解析按 TOML 规则处理字面量键、基本字符串转义、[projects] 内联表与点号键;删掉非法 TOML 的假阳性用例。
- 写入序列只留一份:抽出 write_project_identity_files_with,inject 与 plan 共用;删除 write_project_mcp_files_with。
- digest 绑定 update 文件的写入前哈希(before_sha256),模块文档写明准确语义。
- 新增 WriteFailure,阻断项指向真正出错的文件;本机 codex 步指向 .codex/config.toml,blocked 按(target, reason)去重。
cargo test 318 passed / 0 failed / 5 ignored(新增 7 条),cargo check 0 warning;两轮变异验证均被对应用例捕获。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-03 10:53:41 +09:00 |
|
lanrtop
|
a3d1cc169b
|
test(onboard/parity): 补「计划即实际写入」端到端测试,修正 plan_onboarding 只读注释(P8c 收尾)
- plan_predicts_exactly_what_apply_writes:空仓库先 plan 再经 DiskSink apply,逐文件比对计划内容哈希与
实际写入,并核对 git status 的文件集合与计划一致。P8d 的 digest 复核依赖这条不变式;
变异 PlanSink::read 忽略待写内容时,原有 plan 端到端测试仍通过,只有本测试与记录汇单元测试失败。
- mcp_inject::plan_onboarding 注释由「不起子进程」改为「不起客户端 CLI,混合文件预警会起只读 git」,
与 has_uncommitted_outside_managed 的实际行为一致。
cargo test 311 passed / 0 failed / 5 ignored。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-03 10:08:43 +09:00 |
|
lanrtop
|
ef2c7fd593
|
feat(onboard/parity): 写入汇 WriteSink 与写入前计划 plan_onboarding(P8c,待独立审查)
Push & PR Check / check (push) Successful in 1m2s
一键接入改写子项目受版本管理的文件,人在确认前必须看得到改什么;计划与 apply 走同一段
分发代码、只换写入汇,所以「看到的」就是「将写的」。
- lib.rs:WriteSink trait(read/write,内容忽略行尾未变不写)与 DiskSink
- 接入包模板分发、蓝图规则同步、项目身份与 MCP 投影(context、settings 兼容条目、
liangjing、Codex 托管块)全部改经写入汇;原入口改为 DiskSink 薄包装,行为不变
- onboard/plan.rs:PlanSink 只记录不落盘、后续步骤读到前面步骤的待写内容;
write_project_files 为 plan 与 apply 共用的写入序列;plan_onboarding 给出逐文件
create/update/noop、有上限的 diff、混合文件预警(P10 前移到写入前)、身份冲突、
手写条目与共享项目键阻断项,并对计划算 digest
- mcp_inject:plan_onboarding 生产入口与本机侧预计动作(token、稳定入口、三端只读
状态、Codex 信任),只读、不起子进程
- 新增测试:空仓库全 create 且目录快照字节不变、apply 后两次计划全 noop 且 digest
相同、CRLF 判 noop、内容/本机状态变化 digest 变化、混合文件与身份冲突阻断、
手写 Codex 条目与共享键阻断、记录汇覆盖与撤销、diff 截断、Codex 信任解析;
cargo test 307 passed
Feature-Confirmed: true
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-03 09:35:24 +09:00 |
|
lanrtop
|
59f2c9d5fb
|
fix(onboard/parity): P8b 审查修复——未装记 not_installed、手写保留留痕、成功日志后移、只读判定误判(P8b 审查)
Push & PR Check / check (push) Successful in 1m0s
Push & PR Check / check (pull_request) Successful in 1m3s
独立审查 agent 只读审查 d1b9b05(未发现死锁、重入或崩溃),十条发现处置:
- Claude apply:无全局配置且找不到 CLI 记 not_installed,与 DSH、static 同口径
- 手写条目保留(manual_kept)时补日志:DSH 照原文案,Codex 带 project_id
- 「MCP 配置注入成功」移到三端收敛之后,Codex 失败时改记 warn「注入失败」,
诊断不再把失败显示成成功
- 控制面 Claude 静态判定:遮蔽全局注册的残留 local 条目报 missing
- 嵌套项目:根目录是 git 根时只认等于根目录的键,否则取最具体的键
- 适应度测试改为递归;registry() 注明适配器暂寄 mcp_inject 的传递依赖
- 状态名对齐设计:skipped 改为 not_applicable{control_plane|wsl} 与 deferred
- 只读判定:读失败与 YAML 解析失败报 unavailable,Codex 块与手写同名表并存、
标记错序报 needs_human,DSH 块外手写报 manual_kept;client_static_status 改用
与注入同源的 project_root
- 修正「目录不存在」假阳性用例,补 hard_failure、inject 回执、apply 映射、
clients 不影响 pass 的测试;cargo test 300 passed,两处变异验证失败如期
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-03 08:52:25 +09:00 |
|
lanrtop
|
d1b9b0564e
|
feat(onboard/parity): 客户端适配器注册表与三端结构化注入结果,onboard 模块投影无关适应度测试(P8b、A1a)
Push & PR Check / check (push) Successful in 1m2s
Push & PR Check / check (pull_request) Successful in 59s
一键接入(P8)编排前置:Claude local 与 DSH 托管块的成败原来只写日志,inject_mcp
笼统回「已配置 Codex 与 Claude」,失败会被报成成功(R4)。
- 新增 src-tauri/src/onboard/:ClientId、ClientOutcome(converged/applied/refreshed/
removed/manual_kept/other_project/not_installed/skipped/missing/unavailable/
needs_human/failed)、ClientAdapter(detect/static_status/apply)与 registry();
适应度测试 onboard_module_is_projection_free 机器校验本体不依赖投影层
- 三端适配器实现在 mcp_inject,注册表反向接入;注入经 registry() 逐端 apply,
新增 inject_project_mcp_report,inject_project_mcp 签名与「Codex 失败即整体失败」
语义不变
- sync_claude_local / ensure_dsh_patch 抽出依赖注入版,每条分支返回结构化结果,
日志类别与文案不变;upsert_codex_mcp_config 返回 converged/applied/manual_kept
- verify_onboarding(MCP)附加 clients 只读三端状态,不计入 checks、不影响 pass;
inject_mcp 回执逐端列出实际结果
- 行为变化(有意):Codex 手写同名 server 改记 manual_kept 不再阻断 Claude/DSH;
WSL 项目 Claude local 记 skipped 不再起 CLI
- 新增 9 条测试(假 CLI 覆盖 Claude 全部分支、临时 DSH 目录四态);cargo test
295 passed;契约同步 project-context.yaml,AGENTS.md 架构速查补 onboard/
Feature-Confirmed: true
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-03 08:25:04 +09:00 |
|