Commit Graph

446 Commits

Author SHA1 Message Date
0ffaad03fd Merge pull request 'docs(blueprint/intent-catalog): IC4 跨客户端纸面编译通过(Codex)并修订指南' (#45) from feat/intent-catalog into master
All checks were successful
Push & PR Check / check (push) Successful in 1m3s
2026-10-04 10:22:29 +08:00
lanrtop
50a8bf2f8c docs(blueprint/intent-catalog): IC4 跨客户端纸面编译通过(Codex),按其反馈修订指南七处
All checks were successful
Push & PR Check / check (push) Successful in 1m26s
Push & PR Check / check (pull_request) Successful in 59s
Codex 照指南对 INT-02 纸面编译(只读、未粘贴)的确认卡原文如下:

[INT-02@1.0#8392d18] 目标确认卡
项目: dev-manager-tauri | 分支/worktree: feat/intent-catalog @ E:\code-project\dev-manager-tauri-wt-intent | HEAD: 216a056
章意图: 人给出意图或模糊轮廓,agent 编译出可判定的 /goal:定型章编交付终点,探索章编每轮试验终点,人粘贴即确认 | 不做: 炼境不编译 goal、不判定完成;目录不存状态与进度
形态: 定型
纳入卡: IC6([gate 脚本] node .claude/hooks/intent-gate.cjs --self-test → exit 0 且输出 self-test ok,内置 6 类坏样例各恰好 1 条警告;node .claude/hooks/intent-gate.cjs → exit 0、真实目录 0 警告;INTENT_CATALOG=/nonexistent → 无输出、exit 0)、IC7([gate 脚本] --self-test 夹具的 --impact/--report/--pending 报 stale、orphan、low_confidence、divergence、status_source、缺终验、缺 Feature-Confirmed;全部 exit 0,运行前后 sha256sum 不变)、IC8([YAML 解析] lefthook.yml 可解析且 intent-gate.run 以 || true 结尾;[cargo test] cargo test onboarding → 0 failed;[CLI] AGENTS.md hunk 均在托管块前;grep → 0;临时 worktree 提交输出 1 条警告且成功,验证后移除)、IC9([cargo test] cargo test parse_module_md_ignores_intent_lines → 1 passed;全量 cargo test 无 FAILED)、IC10([gate 脚本] 0 警告;书签三行有效、coordination 指向书签、提案附 --report 与 base blob、提交带 Feature-Confirmed: true)
终点(合取): 1) IC6 的 self-test、真实目录检查和不存在目录降级均符合预期。 2) IC7 的夹具报告覆盖 stale、orphan、low_confidence、divergence、status_source、缺终验及目录提交审计,且全程不改 catalog/module 文件。 3) IC8 的 lefthook、Rust onboarding、AGENTS.md 位置、术语及临时 worktree 警告提交检查通过。 4) IC9 的定向与全量 Rust 测试通过。 5) IC10 的门控、书签、coordination 指向、提案证据及提交 trailer 检查通过。 6) IC6–IC10 均为 ✅,且收口提交已写 Goal-Receipt。
终验待办: IC10:用户确认书签切换。
停止找人: 出现 human_verify;需写运行中的数据库;需删除文件、数据或分支;需变更凭据或机器状态;工作超出 IC6–IC10 或 INT-02;需修改目录;出现 stale 或 orphan;同一问题失败 3 次。
能力入口: node .claude/hooks/intent-gate.cjs(IC6 落地后);cargo test onboarding;cargo test parse_module_md_ignores_intent_lines;cargo test;Git、YAML 解析与临时 worktree。
没验什么: 本次仅纸面编译,未执行尚未实现的 intent-gate,未运行 cargo test 或 lefthook,未创建/删除临时 worktree,未确认 P8 收口及各依赖卡实际状态,也未进行用户书签终验。
作废: 分支变化或 catalog blob ≠ 8392d18

核对(主会话):9 个字段齐全;标签 blob 8392d18 = HEAD:.blueprint/catalog.md;5 条终点可追溯到 IC6–IC10 的 agent_verify;按当时的黑名单(按方针|符合设计|设计已完成|基本完成)命中 0。Codex 的 /goal 文本逐条写了「命令 → 预期输出」,但上面确认卡的终点 1 被改写成「均符合预期」,两者写法不一致,这是本次发现之一。

指南修订(docs/ai-context/intent-catalog-guide.md):
- 无 Bash 环境(Codex 沙箱报 E_ACCESS_DENIED)允许用语义等价命令,并在确认卡注明
- 检查一律逐行解析(整文件正则会跨行误报悬空)
- 只读演练不写盘:第 10 条改为管道检查
- 第 3 步区分机器检查(必须通过)和人工核对(结果写进确认卡)
- 第 4 步检查 depends,确认卡新增「前置」行;有未满足的前置时只能纸面编译
- 体量改量提交里的 blob(git cat-file -s),工作区 CRLF 会让 wc -c 多算 34 字节
- 确认卡与 /goal 的终点写法必须一致;黑名单加「符合预期」

模块:IC4 ✅(附结果记录)、下一步 IC5;manifest 进度 31%。

Compiled-By: Codex
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 11:16:57 +09:00
lanrtop
216a056ae1 docs(blueprint/intent-catalog): IC6–IC10 卡侧挂靠 INT-02@1.0(补丁);IC4 开工,报备目标章由书签章改为指定 INT-02
All checks were successful
Push & PR Check / check (push) Successful in 1m2s
- IC6–IC10 各加一行 `- intent: INT-02@1.0`(紧跟 complexity),离线检查第 7 条通过(引用的章都存在)
- IC4 🔵;notes 报备改断言理由:书签所指 INT-01(P8)的卡在统筹会话的 agent-client-parity.md 中且几乎全为 ✅,纸面编译无测试价值;INT-02 挂有五张待做卡,纸面编译即 IC5 预演

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 04:01:21 +09:00
8b78c72bb9 Merge pull request 'docs(intent): 炼境意图目录 1.0 与探索章修订(IC3)' (#44) from feat/intent-catalog into master
All checks were successful
Push & PR Check / check (push) Successful in 1m1s
2026-10-04 03:01:14 +08:00
lanrtop
3417219a61 docs(intent): 炼境意图目录 1.0——INT-01 一键接入三端可用、INT-02 意图编译为可判定终点、INT-03 摩擦驱动沉淀与退出(IC3)
All checks were successful
Push & PR Check / check (push) Successful in 1m0s
Push & PR Check / check (pull_request) Successful in 57s
用户 2026-10-04 逐章确认三章的意图、人看与不做(1.0 为大版本,由人定稿);INT-02 的措辞覆盖定型和探索两种形态。书签在 P8 期间只指向 coordination §0,IC10 再改为自持。
- 新增 .blueprint/catalog.md:34 行、1748 字节;版本行 1;3 章;禁用键 0;path/module 指针 0 悬空;4 个 card 指针与 3 个标题锚点人工核对一致;无超长字段;探索章检查无输出
- 模块:IC3 ✅、下一步 IC4;记录探索章修订决策(起因、做法、同步项),W8 待补项、IC6 坏样例(6 类)、度量(探索章三项)同步更新
- manifest:intent-catalog 进度 23%

Feature-Confirmed: true
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 03:57:32 +09:00
lanrtop
5af71253dd docs(ai-context/intent-catalog): 增加探索章——意图可从 MVP 迭代中结晶,探索期 goal 只编译本轮试验终点
- 指南新增「探索章与结晶」一节:形态 定型|探索(人对意图清晰度的声明,不是任务进度);探索章必填 轮廓、试探、不做、预算、收敛信号;每轮试验的终验行(保留/否决 + 理由)作为结晶原料;收敛或预算用完时由 agent 起草意图提炼、人确认后转为定型(小版本);未收敛由人三选一,agent 不得自行延长预算
- 目录语法:新增「形态」字段与「不必开章的情况」(修修补补和直接做 MVP 不必开章);goal 编译第 5 步补探索章分支;确认卡增加形态与轮次行;离线检查新增第 11 条(探索章必填字段),已用夹具实测
- 设计文档头部注明此次修订;起因与决策见模块决策记录(下一提交)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 03:57:29 +09:00
2d47cda85a Merge pull request 'docs(ai-context/intent-catalog): IC2 意图目录编写与使用指南' (#43) from feat/intent-catalog into master
All checks were successful
Push & PR Check / check (push) Successful in 1m0s
2026-10-04 02:33:46 +08:00
lanrtop
8415a11381 docs(blueprint): P8g 合并后验收标 ✅(master typecheck、vitest 29、cargo test 414 passed),更新 manifest 与统筹文档 §3/§4
Some checks are pending
Push & PR Check / check (push) Waiting to run
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 03:33:29 +09:00
lanrtop
a67e0e7d75 docs(ai-context/intent-catalog): IC2 新增意图目录编写与使用指南——目录语法、修订与钉版、goal 编译七步、确认卡与回执、离线检查
All checks were successful
Push & PR Check / check (push) Successful in 1m1s
Push & PR Check / check (pull_request) Successful in 58s
- 新增 docs/ai-context/intent-catalog-guide.md(212 行),作为意图目录语法与 goal 编译流程的单一来源;流程模型无关,/architect 只作可选包装
- 离线检查给出 10 条 shell 单行命令(版本行、章数、体量、禁用键、path/module 指针、卡侧 intent 引用、钉版对照、### 计数、过程词黑名单),Phase 4 由 intent-gate.cjs 替换
- IC2 ✅;模块转 in_progress(进度 15%),下一步 IC3 首批章节由用户定稿

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 03:29:46 +09:00
cf93392130 Merge pull request 'docs(blueprint/intent-catalog): 立意图目录模块并完成 IC1 设计(最小文件优先方案,拆 IC2–IC13)' (#42) from feat/intent-catalog into master
All checks were successful
Push & PR Check / check (push) Successful in 1m1s
2026-10-04 02:28:05 +08:00
3228b490f2 Merge pull request 'feat(onboard/parity): UI 一键接入面板——先计划预览、人确认后接入,四个入口接线(P8g)' (#41) from feat/agent-client-parity-p8g into master
All checks were successful
Push & PR Check / check (push) Successful in 1m19s
2026-10-04 02:24:49 +08:00
lanrtop
a3dfa8a337 docs(blueprint/intent-catalog): IC1 设计确认,模块转 planned,追加 IC2–IC13 任务卡与五项决策
All checks were successful
Push & PR Check / check (push) Successful in 1m2s
Push & PR Check / check (pull_request) Successful in 1m1s
- 用户 2026-10-04 确认设计,五个待拍板问题全部采纳推荐:门控排在 P8 收口后;IC5 首次真实 /goal 用于 Phase 4 的卡;首批三章方向在 IC3 定稿;去留阈值初定;接受约 10 行常驻启动读书签
- IC1 ✅;新增「概述」段供 UI 展示;IC2–IC13 每张卡都带 files、complexity、depends 和可执行 acceptance(IC3/IC5/IC10–IC13 另有 human_verify)
- manifest:intent-catalog 转 planned,note 同步;设计文档头标为已确认

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 03:04:59 +09:00
lanrtop
7f616cd26e docs(blueprint/intent-catalog): IC1 设计文档——最小文件优先方案(.blueprint/catalog.md + 卡侧 intent 钉版 + 模型无关 goal 编译),拆 IC2–IC13,待用户确认
All checks were successful
Push & PR Check / check (push) Successful in 1m2s
- 新增 docs/tasks/2026-10-04-intent-catalog-design.md:评审团工作流 wf_60e4c430-bb1 出稿(3 方案 × 2 视角评委,最小文件优先胜出 25/30、24/30),含设计规格 1–7、13 问化解、W1–W14 四问、受影响文件、边界变更、风险、12 张卡、度量与退出、立法草案、没验什么与用量记账
- 关键代码事实已复核:archive 只归档 modules/*.md;parse_module_md 只认固定键、未识别 ## 段下的 ### 会被当卡;buff 自动标 🔵 不碰 intent/终验行;lefthook 存在即跳过
- 模块 IC1 标 🔵 等用户确认;试用期只新增文件,门控与接线排在 P8 收口后

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 02:08:45 +09:00
lanrtop
c28caf72ee chore(merge): 合并 origin/master(统筹文档 §7 交接)进 P8g 分支
All checks were successful
Push & PR Check / check (push) Successful in 1m0s
Push & PR Check / check (pull_request) Successful in 1m0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 02:08:03 +09:00
lanrtop
9d85609287 fix(onboard/parity): 处置 P8g 独立审查——新建入口按有效根目录弹出、Toast 置于面板之上、bypass 与错误阶段文案如实
All checks were successful
Push & PR Check / check (push) Successful in 1m2s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 02:06:29 +09:00
lanrtop
5b6c197a74 feat(onboard/parity): UI 一键接入面板——先计划预览、人确认后接入,四个入口接线(P8g)
- onboardView.ts:计划 / 报告 → 视图模型的纯函数(阻断禁用确认、可跳过只看后端 skippable、
  not_installed / not_applicable 灰色说明、bypassPermissions 与 Codex 信任单列、确认带 expected_digest
  与生成计划时的选项),onboardView.test.ts 13 条 vitest
- OnboardPanel.tsx / OnboardSections.tsx:全局挂载的接入面板(plan → 预览 → onboard_project → 分步结果、
  L1 矩阵、待你提交的 N 个文件、待你操作),refused 可回到新计划重新确认
- 入口:新建项目选了目录、模板新建成功后弹出预览;批量添加只给逐项入口;蓝图治理「施加 Buff」
  改为同一面板(先 plan 再 apply)
- plan.rs:BlockedItem 序列化附派生字段 skippable(= BlockReason::skippable,不进 digest)

Feature-Confirmed: true
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 01:35:06 +09:00
lanrtop
aaabd0b231 docs(blueprint/intent-catalog): 立意图目录 concept 模块——目录/正文两层模型与 W1–W14 承重墙纲目,并入 handoff 试点的信息归属与任务简报
All checks were successful
Push & PR Check / check (push) Successful in 1m4s
- 新增 .blueprint/modules/intent-catalog.md:为什么(含 09-30 /goal 被提前判达成的实证)、两层模型、承重墙表(指向已有机制,只列待补)、并入与依赖、13 个待设计问题、不做什么、分阶段、收益度量与退出条件、IC1 设计卡、4 条决策记录
- manifest 追加 intent-catalog(concept,backend)与 3 条边(blueprint-governance、agent-client-capability-packs 为依赖,governance-feedback-loop 为相关);updated 改为 2026-10-04
- 只做蓝图同步,不改代码、模板与分发层;与 P8 并行,不碰其热点文件

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 01:19:48 +09:00
lanrtop
23c50eccca docs(tasks): 统筹文档 §7 交接——上下文将满,新会话接手 P8g 与收尾
All checks were successful
Push & PR Check / check (push) Successful in 1m5s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 00:34:51 +09:00
lanrtop
2f73c21d7a docs(tasks): 统筹流水——P8g 工作流看门狗卡死后改派后台 Agent,铁律补工作流 180 秒看门狗教训
All checks were successful
Push & PR Check / check (push) Successful in 1m2s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 23:56:39 +09:00
lanrtop
51a39d0fa4 docs(blueprint): P8e、P8f 端到端实测通过标 ✅,P8 卡记录新登记项目一键接入与收敛证据
All checks were successful
Push & PR Check / check (push) Successful in 1m5s
新登记临时项目 register_project → plan_onboarding → onboard_project(confirmed) 得 done,
三端可用子集全部就绪(Codex 列待用户信任目录单列 pending_user),再次执行 9 步全收敛、
文件 mtime 不变。enterprise 主工作区落后 origin/main,计划如实显示 update 3,不对其 apply。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 23:28:18 +09:00
d7f481616a Merge pull request 'feat(onboard/parity): 一键接入 plan_onboarding / onboard_project 的 MCP 与 Tauri 投影,Codex 信任计 pending_user(P8e)' (#40) from feat/agent-client-parity-p8e into master
All checks were successful
Push & PR Check / check (push) Successful in 1m12s
2026-10-03 21:14:06 +08:00
lanrtop
97578b2261 feat(onboard/parity): 一键接入 MCP 与 Tauri 投影、Codex 信任计 pending_user 与仓库布局说明(P8e)
All checks were successful
Push & PR Check / check (push) Successful in 1m27s
Push & PR Check / check (pull_request) Successful in 1m6s
- MCP 新增 plan_onboarding(readOnly)与 onboard_project(幂等写操作):schema 各自单独成函数,
  dispatch 一行委托到 mcp_inject 生产入口(中间只做 JSON 类型解析);全局与项目路由都可见,
  项目路由强制本项目、跨项目返回 scope_violation;onboard_project required 含 expected_digest
  与 confirmed;共用可选选项 bypass_permissions / skip_targets;进 STRUCTURED_TOOLS 并给一行摘要
- Tauri 新增同名 async 命令(async fn + spawn_blocking),commands.ts 同步 OnboardOptions、
  OnboardingPlan、OnboardReport 类型与 planOnboarding / onboardProject 封装
- 统筹决定(P8d 审查 ⑩):L1 Codex 列仅因 codex_project_untrusted 未就绪的格不计入 done,
  completion 单列「Codex 信任」(pending_user),next_actions 保留 codex_trust;仓库子目录与
  worktree 补 next_action repo_layout 说明为何到不了 done;非 git 维持不能 done
- 契约同步:project-context.yaml、agent-button-system.md、AGENTS.md 架构速查;P8d 卡记统筹决定落地
- cargo test 413 passed / 0 failed / 6 ignored;pnpm typecheck、pnpm test 通过;三轮 10 处变异全部被杀

Feature-Confirmed: true
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 19:50:21 +09:00
lanrtop
b7ad0dc8b9 docs(blueprint): P8d 合并后验收标 ✅(master 402 passed),记录审查 ⑩ 统筹决定,派 P8e
All checks were successful
Push & PR Check / check (push) Successful in 1m2s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 17:47:17 +09:00
d018d44729 Merge pull request 'feat(onboard/parity): onboard_project 编排本体与接入报告,处置独立审查(P8d)' (#39) from feat/agent-client-parity-p8d into master
All checks were successful
Push & PR Check / check (push) Successful in 1m8s
2026-10-03 16:39:23 +08:00
lanrtop
2f2a9f10a3 fix(onboard/parity): P8d 处置独立审查——锁内重新解析登记并以根目录绑 digest、阻断项可逐项跳过、接入文件与用户改动分开报告等(P8d 审查)
All checks were successful
Push & PR Check / check (push) Successful in 1m9s
Push & PR Check / check (pull_request) Successful in 1m1s
- ① 接入写锁内重新解析登记:登记消失 failed,根目录或端口变了 refused 并附当前计划;
  计划新增 root 并进 digest;SystemOnboardHost 每次重读端口;删除登记持同一把写锁先清理
  MCP 配置再删登记(delete_project_registration 注入写锁与清理闭包);批量重注入在锁内取快照
- ② OnboardOptions.skip_targets:manual_entry / shared_key 可逐项跳过(进 digest,计划单列
  skipped),跳过的一端记 skipped、不调用适配器;身份冲突、混合文件、needs_human 仍只能中止
- ③ 报告新增 written_files;repo_changes 限定项目根,分出 onboard_files 与 other_changes,
  建议提交信息与 next_action commit 只针对接入文件
- ④ 一键接入补写 mcp_inject 事件(inject_event),诊断注入状态随之更新
- ⑤ ClientAdapter::project_config_file:codex 步本次由 project_files 写入时记 applied,blocked 文案如实
- ⑥ lefthook 保留启动错误,本地存在却起不来记 failed;⑦ git_hooks 移到写锁外
- ⑧⑨⑩ 登记 known_limits / P8e 指引 / 转统筹决定;project-context.yaml 同步(T1)
- cargo test 402 passed / 0 failed / 6 ignored;pnpm typecheck 通过;四轮变异验证

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 17:27:57 +09:00
lanrtop
6c69aa2ae3 chore(merge): 合并 master(P4a 标 ✅ 与派 P8d 的蓝图更新)到 P8d
All checks were successful
Push & PR Check / check (push) Successful in 1m5s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 15:27:31 +09:00
lanrtop
57665768b1 feat(onboard/parity): onboard_project 编排本体与接入报告,apply_onboarding_pack 改 async(P8d)
- 新增 onboard/apply.rs:计划与应用共用同一份演算(本机七步 token/shim/claude/codex/dsh/
  product_group_buff/git_hooks + 项目文件);apply 依次项目级运行锁(busy)→ 预检(failed)→
  确认(refused)→ 接入写锁内重算计划核对 digest 与阻断项(refused),以上零写入;之后按依赖
  执行 identity、project_files、git_hooks、product_group_buff、token → shim → 三端适配器,
  某步失败只阻断依赖它的步骤(blocked(dep=…)),整体 partial,不自动回滚;随后 L1(未完成的
  客户端一端整列 blocked、不起进程)与 L0
- 新增 onboard/report.rs:status done/partial/failed/refused/busy,「完成」只按三端可用子集;
  repo_changes(git status --porcelain / diff --stat,非 git 为 unavailable)、HEAD 不变断言、
  建议提交信息、next_actions(Gitea 注明默认公开、CI、飞轮、工具链、lefthook、Codex 信任、
  重启 DSH GUI、Claude trust、重开已打开的会话)
- 计划单列 bypass_permissions,可按项目取消(写显式 defaultMode=default 记住选择)
- 下沉:本机七步组装、token_step/outcome_status、控制面判定、lefthook install、独立产品组建组
  移入 onboard(可注入),commands 与 mcp_inject 改为薄包装;生产入口
  mcp_inject::plan_onboarding / onboard_project 供 P8e 投影一行委托
- L1 Cell 增 dep、Cause 增 dependency(commands.ts 同步);project-context.yaml、AGENTS.md 同步
- cargo test 394 passed / 0 failed / 6 ignored;pnpm typecheck 通过;三轮变异验证

Feature-Confirmed: true
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 15:24:39 +09:00
lanrtop
bc9f8c4b2a docs(blueprint): P4a 合并后 [MCP 全局] 实测通过标 ✅,派 P8d
All checks were successful
Push & PR Check / check (push) Successful in 1m2s
probe_client_parity(enterprise) 3.3 秒三端 18 格 ready;dev-manager-tauri 控制面 Claude/DSH
not_applicable、Codex ready;输出无凭据。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 13:59:28 +09:00
cf2b5f0dc2 Merge pull request 'feat(onboard/parity): L1 零模型三端检查 probe_client_parity,处置独立审查(P4a)' (#38) from feat/agent-client-parity-p4a into master
All checks were successful
Push & PR Check / check (push) Successful in 1m5s
2026-10-03 12:53:31 +08:00
lanrtop
a79bcb7fca chore(merge): 合并 master(含 P8f register_project)到 P4a,解决 mcp_tools.rs 与 project-context.yaml 相邻插入冲突
All checks were successful
Push & PR Check / check (push) Successful in 1m4s
Push & PR Check / check (pull_request) Successful in 1m2s
两边各自新增全局路由工具(probe_client_parity / register_project):清单插入、
is_project_scoped_tool 排除、STRUCTURED_TOOLS 与摘要分支均保留双方;契约文档合并两段说明。
合并结果 cargo test 377 passed / 0 failed / 6 ignored,pnpm typecheck 通过。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 13:48:28 +09:00
lanrtop
f0237da3c3 fix(onboard/parity): P4a 处置独立审查——超时不可被持续输出绕过、读超时归因、探针不抹 reload 证据等(P4a 审查)
独立审查 11 条发现处置(修复 agent 在分类器拦截前完成并暂存,统筹会话接手提交):
- SystemRunner 每轮按剩余时间等待,收到行也查超时;单行与 stderr 限长
- 读超时沿 error source 链按 io::ErrorKind 判定,不依赖英文子串
- probe 期间 quiet_project_initializes 守卫,探针的 initialize 不计入真实客户端
- F 格绑定真实 read_test_account 文案;Codex enabled/disabled_tools 过滤
- Claude 作用域回查 helper、Codex 项目表与生效地址不一致记 untrusted、
  helper 无 Authorization 记 auth_header_missing、Claude 未连上时 D–F 记 blocked
- init 加 --settings disableAllHooks;--mcp-config 只带 type/url/headersHelper;
  只执行托管写法 helper,其余记 unknown(manual_config)
- 改断言报备:Claude 未连上时 F 由 ready 改为 blocked(审查要求的口径),已写入卡片

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 13:40:00 +09:00
lanrtop
f438d71039 docs(tasks): 统筹流水——P8f 合并(55dc637),审查转入项与占位登记的需求澄清入队
All checks were successful
Push & PR Check / check (push) Successful in 1m2s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 13:21:43 +09:00
55dc6371bc Merge pull request 'feat(projects/parity): register_project 控制面投影,登记拒绝同目录重复登记并落库规范目录(P8f)' (#37) from feat/agent-client-parity-p8f into master
All checks were successful
Push & PR Check / check (push) Successful in 1m5s
2026-10-03 12:20:10 +08:00
lanrtop
04470bd368 docs(blueprint/agent-client-parity): P8f 补独立审查处置、改动断言报备与 known_limits,链路实测仍待 P8e 合并(P8f)
All checks were successful
Push & PR Check / check (push) Successful in 1m6s
Push & PR Check / check (pull_request) Successful in 1m1s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 13:15:53 +09:00
lanrtop
96cfe761f4 fix(projects/parity): 处置 P8f 独立审查——登记落库规范目录并加 canonical 键查重、恢复 UI 无目录占位、挂载仓库同事务(P8f)
- M1:Windows 目录 canonicalize 去长路径前缀后落库,register_project 回执带落库目录;
  scan_unregistered_projects 的已登记判定与父目录去重改用同一比较键
- M2:UI 添加项目不选目录时沿用既有概念占位(RootRequirement),MCP 入口仍拒绝空路径
- L1:已有登记按 platform 只取有效根目录,切换平台残留列不再误拦
- L2:新目录在写事务外另算 canonical 键,识别 8.3 短名与 .. 段
- L3:mount_repo 抽本体,重复检查前移、profile 与 workspace 同一 IMMEDIATE 事务
- L4(部分):registration_path_key 复用 normalize_dsh_root 与 strip_verbatim_prefix
- I3:目录遗留别的 project_id 的 context.json 时回执带 warning
- I4:register_project 分发抽成函数,按 schema 参数名测试
- 改动的既有断言:register_project_at 落库由「去首尾空白的原样路径」改为规范形式

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 13:15:36 +09:00
lanrtop
f1f1cf7709 chore(merge): 合并 origin/master(统筹流水更新)到 P8f 分支
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 12:51:28 +09:00
lanrtop
5b804bb967 feat(onboard/parity): L1 零模型三端检查 probe_client_parity(P4a)
All checks were successful
Push & PR Check / check (push) Successful in 1m3s
新增 onboard::probe_l1:不调用模型、零额度,按 Claude Code、Codex、DSH
各自实际生效的配置给出 A–F × 三端矩阵,每格带状态、证据等级与归因。

- 客户端自省:Claude 在项目目录 claude mcp get 取生效条目,再以坏模型名
  跑 claude -p(只挂该条目、读到 system/init 即止)取 skills/工具/连接状态;
  Codex 用 codex mcp get --json(看不到条目而项目有配置 → codex_project_untrusted);
  DSH 读托管块白名单并核对会话插件 sha256,版本读安装包 app.asar。
- 认证链重放:按客户端方式执行稳定 shim 取认证头(只在进程内使用),
  在该端配置的地址上 initialize(clientInfo=lian-jing-l1-probe)、tools/list
  (与 tools_list_result_for_project 比对)、get_diagnostics、
  list_project_dev_variables、read_project_test_account(LJ_PROBE_<nonce>)。
  归因 shim_missing / helper_failed / auth_failed / unreachable / route_global 等;
  未安装记 not_installed,控制面 Claude 与 DSH 记 not_applicable,均不计失败。
- 进程、HTTP、客户端定位经 ProcessRunner / McpHttp / ClientLocator 注入;
  ClientAdapter 新增 l1_facts;本体入口 mcp_inject::probe_client_parity。
- 投影:MCP probe_client_parity(仅全局路由,readOnly)、Tauri async command、
  commands.ts 类型与封装;mcp_server 不把 l1 探针计入真实客户端初始化。
- T1:project-context.yaml 补 MCP 工具与 Tauri command 契约;蓝图 P4a 记实现与验证。

cargo test 349 passed / 0 failed / 6 ignored;pnpm typecheck 通过;
实机冒烟 enterprise 三端 18 格 ready(1.4–1.6 秒)。

Rules-Applied: R01
Feature-Confirmed: true
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 12:29:56 +09:00
lanrtop
a3bb274ed0 docs(blueprint/agent-client-parity): P4a 开工标 🔵(P4a)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 12:29:56 +09:00
lanrtop
bd4ebaf096 docs(blueprint/agent-client-parity): P8f 记实现、规范化规则与验证,链路实测待 P8e 合并后由统筹会话完成(P8f)
All checks were successful
Push & PR Check / check (push) Successful in 1m8s
卡片保持 🔵:acceptance 的 [MCP 全局] register_project → plan_onboarding → onboard_project
依赖 P8e 才有的两个 MCP 工具。另记行为变化(UI 添加项目改为拒绝空路径、相对或不存在的路径、
ID 冲突)、其他登记入口的取舍、没验什么、known_limits 与有意偏差。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 12:29:49 +09:00
lanrtop
0851aa9783 feat(projects/parity): register_project 控制面投影,登记本体拒绝同目录重复登记(P8f)
- projects:从 create_project 抽出登记本体 register_project_records(连接注入),
  UI create_project 与 MCP register_project 共用;只写数据库,不建目录、不执行 git init、不接入。
  拒绝空 ID、空路径、相对路径、不存在的目录、空名称、同一目录已登记、已存在的 ID;
  重复检查与插入放进同一 IMMEDIATE 事务;workspace 插入去掉 OR IGNORE,ID 冲突不再静默成功
- 同目录判定 registration_path_key:去长路径前缀、斜杠统一、合并重复分隔符、去尾部分隔符、
  不区分大小写;win_path 与 wsl_path 两列都比较,WSL Linux 路径按 wsl.localhost 换算;
  错误信息给出已有 project_id(根治 PR #34 审查 L1/L2:同目录两条登记互相抢占 Codex 托管块)
- mcp_tools:新增 register_project(path 必填、name 可选,project_id 由炼境生成 UUID,归入当前空间,
  structuredContent 返回);只开放在全局路由,is_project_scoped_tool 显式排除;描述写明须用户确认目标
- 批量添加对已登记目录计入 skipped,模板新建与挂载仓库复用同一重复目录检查
- project-context.yaml「MCP 工具接口」段同步(T1)

cargo test 335 passed / 0 failed / 5 ignored(新增 10 条),0 warning;pnpm typecheck 通过;
9 处变异全部被对应用例捕获。

Feature-Confirmed: true
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 12:29:26 +09:00
lanrtop
cf0f5b6a64 docs(blueprint/agent-client-parity): P8f 开工标 🔵(P8f)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 12:11:14 +09:00
lanrtop
bd0e11ee82 docs(tasks): 统筹流水——P8f 提前与 P4a 并行派出
All checks were successful
Push & PR Check / check (push) Successful in 1m38s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 12:03:50 +09:00
lanrtop
9dd0545456 docs(blueprint): P8c 与 G8 合并后验收标 ✅,P8d acceptance 并入 P8c 审查转入项(bypass_permissions 单列与七步本机变更),派 P4a
All checks were successful
Push & PR Check / check (push) Successful in 1m4s
PR #36(P8c)与 PR #35(G8)合并为 04db098,合并结果全量 cargo test 325 passed;
两卡 acceptance 均为 cargo 层。P8c 审查 ⑨ 转入项按统筹决定写进 P8d acceptance ⑨,
避免 P8g 视图拿不到计划数据。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 11:05:03 +09:00
04db0983e6 Merge pull request 'feat(onboard/parity): 写入汇 WriteSink 与写入前计划 plan_onboarding,处置独立审查(P8c)' (#36) from feat/agent-client-parity-p8c into master
All checks were successful
Push & PR Check / check (push) Successful in 1m4s
2026-10-03 09:59:15 +08:00
8b9ae81f78 Merge pull request 'fix(gitea-integration): 删除项目登记时一并解除 Gitea 绑定,轮询不再写入已删除或已解绑的项目(G8)' (#35) from fix/gitea-unbind-on-unregister into master
Some checks failed
Push & PR Check / check (push) Has been cancelled
2026-10-03 09:59:07 +08:00
lanrtop
7ef924127a docs(blueprint/agent-client-parity): P8c 补审查处置与 known_limits,P8d 记审查转入项(P8c)
All checks were successful
Push & PR Check / check (push) Successful in 1m3s
Push & PR Check / check (pull_request) Successful in 1m3s
- review:独立审查 9 条发现逐条处置(7 条已修并补测试,2 条信息项转入 known_limits / P8d)。
- 自查条目「任一目标文件变化 digest 就变 ✅」改为准确语义(只绑定计划会写入或核对的文件,
  update 另绑定写入前哈希);按纪律报备:改的是验收表述,断言只增不减。
- known_limits:onboard 反向依赖投影层(过渡态)、Codex 信任静态预判的边界、shim unavailable 不阻断、
  bypassPermissions 未单列、plan_machine_steps 组装未单测。
- P8d 卡新增「审查转入」:bypass_permissions 单列、machine_changes 补产品组与 buff、.git/hooks,待统筹决定是否并入 acceptance。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 10:54:04 +09:00
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
fccb76783d fix(gitea-integration): 处置 G8 独立审查——删除登记本体补外部清理测试,轮询写入前复核绑定,解绑读删同事务(G8)
All checks were successful
Push & PR Check / check (pull_request) Successful in 1m8s
- 抽出连接与凭证存储注入的删除登记本体 projects::delete_project_registration
  (delete_project_records + 提交后 Gitea 外部清理),delete_project 只做薄包装;
  补测试校验被删项目的 webhook 签名凭证被清理、他项目凭证保留,以及孤儿绑定可经删除登记清理
- 轮询 commit 与 PR 写入抽成 ingest_polled_commits / ingest_polled_prs,写入前用
  poll_target_still_bound 复核绑定仍在且项目仍登记,避免按本轮开头的旧快照写入已删除或已解绑的项目
- gitea_unlink_repo 的读与删放进同一事务,与删除登记路径同写法
- 孤儿绑定 warn 写明清理路径(对该 ID 调 unregister_project)
- 审查第 5 条(连接池外键只在迁移连接开启)经探针证伪:bundled SQLite 默认 foreign_keys=1,不改

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 10:49:26 +09:00
lanrtop
78116b026f docs(tasks): 统筹流水——U3 数据合并验收完成,后续小修与 beast-mode 重复登记入队,列出待清理临时文件
All checks were successful
Push & PR Check / check (push) Successful in 1m5s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 10:29:50 +09:00
lanrtop
06f20dbcaf chore(codex): 炼境自身 Codex 托管块升级为稳定 helper 认证格式
All checks were successful
Push & PR Check / check (push) Successful in 1m2s
重复登记合并(mcp-single-server U3)后重注入 dev-manager-tauri,托管块由 9-23 的旧格式
升级为当前格式:URL 不变(项目路由),补 http_headers_helper 经 %USERPROFILE% 稳定入口
取认证头;digest 为 project_id 的 sha256,非秘密,按设计入库。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 10:28:52 +09:00