chore(blueprint): 收口 Agent PR 合并门禁
All checks were successful
Push & PR Check / check (push) Successful in 1m20s
All checks were successful
Push & PR Check / check (push) Successful in 1m20s
记录 PR #14 的真实 SHA 绑定合并与交付状态回读证据,并写入 M 级任务复盘。 Rules-Applied: R03,R13
This commit is contained in:
parent
37f8d679b0
commit
c9e92f7af4
@ -457,7 +457,7 @@ modules:
|
|||||||
area: infra
|
area: infra
|
||||||
status: in_progress
|
status: in_progress
|
||||||
progress: 14
|
progress: 14
|
||||||
note: "P1、P3-A 与 P3-S1 已完成:交付状态聚合、Gitea 1.22.6 deployment signal 归一化及炼境自身 Codex 接入均已闭环;P3-S2 安全合并门禁已实现并通过本地/MCP 负向验证,待新 PR 的 CI 与用户针对具体 SHA 确认后完成正向合并验收。P3-B~E 待执行;首轮不开放 SSH/部署/回滚写操作。"
|
note: "P1、P3-A、P3-S1 与 P3-S2 已完成:交付状态聚合、Gitea 1.22.6 deployment signal 归一化、炼境自身 Codex 接入及 Agent PR 安全合并门禁均已闭环;PR #14 已用用户确认的完整 SHA 与服务端 head_commit_id 真实合并验收。P3-B~E 待执行;首轮不开放 SSH/部署/回滚写操作。"
|
||||||
position: [2000, 800]
|
position: [2000, 800]
|
||||||
|
|
||||||
- id: agent-client-capability-packs
|
- id: agent-client-capability-packs
|
||||||
|
|||||||
@ -316,12 +316,13 @@ v1 不新增 deployment history 表。最近部署时间和过程状态来自 Gi
|
|||||||
- acceptance: "agent_verify: [MCP] `get_diagnostics()` 返回本地服务状态;`verify_onboarding(dev-manager-tauri)` → canonical context、Codex skill、MCP 与能力包全部 ready;`get_delivery_status(dev-manager-tauri)` → 能读取 PR #13 的 SHA、CI 与 review。不得从旧 `.claude/liangjing.json` 猜测身份或提取 Gitea token。"
|
- acceptance: "agent_verify: [MCP] `get_diagnostics()` 返回本地服务状态;`verify_onboarding(dev-manager-tauri)` → canonical context、Codex skill、MCP 与能力包全部 ready;`get_delivery_status(dev-manager-tauri)` → 能读取 PR #13 的 SHA、CI 与 review。不得从旧 `.claude/liangjing.json` 猜测身份或提取 Gitea token。"
|
||||||
- done_note: "2026-09-22:通过既有 inject_mcp 迁移旧上下文,apply_onboarding_pack 升级托管基线,verify_onboarding 11/11;经 MCP 实测读取 PR #13(SHA 0141b8b、CI passed),用户确认后由 merge_pull_request 合并,合并后开放 PR 状态为 none。当前 Codex 任务不支持热加载新 MCP 配置,原生客户端发现留待新任务验证。"
|
- done_note: "2026-09-22:通过既有 inject_mcp 迁移旧上下文,apply_onboarding_pack 升级托管基线,verify_onboarding 11/11;经 MCP 实测读取 PR #13(SHA 0141b8b、CI passed),用户确认后由 merge_pull_request 合并,合并后开放 PR 状态为 none。当前 Codex 任务不支持热加载新 MCP 配置,原生客户端发现留待新任务验证。"
|
||||||
|
|
||||||
### 🔵 P3-S2. Agent PR 合并安全门禁
|
### ✅ P3-S2. Agent PR 合并安全门禁
|
||||||
- status: in_progress
|
- status: done
|
||||||
- complexity: M
|
- complexity: M
|
||||||
- depends: P3-S1. 炼境自身 Codex 接入闭环
|
- depends: P3-S1. 炼境自身 Codex 接入闭环
|
||||||
- files: src-tauri/src/commands/gitea.rs, src-tauri/src/mcp_tools.rs, docs/ai-context/git-workflow.md, src-tauri/resources/onboarding/git-workflow.md.tmpl, src-tauri/resources/onboarding/.agents/skills/lian-jing/SKILL.md, src-tauri/resources/onboarding/.lian-jing/capability-packs.json, plugins/lian-jing-codex/skills/lian-jing/SKILL.md
|
- files: src-tauri/src/commands/gitea.rs, src-tauri/src/mcp_tools.rs, docs/ai-context/git-workflow.md, src-tauri/resources/onboarding/git-workflow.md.tmpl, src-tauri/resources/onboarding/.agents/skills/lian-jing/SKILL.md, src-tauri/resources/onboarding/.lian-jing/capability-packs.json, plugins/lian-jing-codex/skills/lian-jing/SKILL.md
|
||||||
- acceptance: "agent_verify: [cargo test] `merge_pull_request` 在 confirmed=false、expected_head_sha 与远端不一致、PR 非 open、CI pending/failure 或 review changes_requested 时拒绝且不执行 merge;仅在 PR open、SHA 一致、CI passed、无阻塞 review 且 confirmed=true 时允许执行;[MCP schema] confirmed 与 expected_head_sha 均为必填;合并后重新调用 get_delivery_status 可读取真实结果。"
|
- acceptance: "agent_verify: [cargo test] `merge_pull_request` 在 confirmed=false、expected_head_sha 与远端不一致、PR 非 open、CI pending/failure 或 review changes_requested 时拒绝且不执行 merge;仅在 PR open、SHA 一致、CI passed、无阻塞 review 且 confirmed=true 时允许执行;[MCP schema] confirmed 与 expected_head_sha 均为必填;合并后重新调用 get_delivery_status 可读取真实结果。"
|
||||||
|
- done_note: "2026-09-22:cargo test --lib 151/151、pnpm typecheck 与 PR CI 全部通过;MCP 实机先以错误 SHA 验证 fail-closed,再由用户确认 PR #14 与完整 head SHA b6d749025458928b86ab607a5a7f31479f8db85f 后,通过带 head_commit_id 的能力本体成功合并;回读 get_delivery_status 为 PR none、CI passed。"
|
||||||
|
|
||||||
### 📋 P3-B. Enterprise System 不可变 revision 与版本健康端点
|
### 📋 P3-B. Enterprise System 不可变 revision 与版本健康端点
|
||||||
- status: todo
|
- status: todo
|
||||||
|
|||||||
@ -20,3 +20,4 @@
|
|||||||
{"content":"【炼境使者回传】来源: dev-manager-tauri(炼境自身)\n类型: workflow_hypothesis\n置信度: under_validation\n影响范围: all_projects\n内容: verify_onboarding「lefthook 检查段」按键名匹配是名义匹配非语义匹配——等价功能不同键名(如 scripts 老写法、项目自定义键)会被误报缺失;enterprise-system 6/7 的 fail 尚未核实是缺失还是改名定制\n建议炼境: log_for_review","created_at":"2026-07-15 23:16:07","id":93,"project_id":"2c5b54ef-5570-42ab-8c41-8ed1e2cd21dc","source":"mcp"}
|
{"content":"【炼境使者回传】来源: dev-manager-tauri(炼境自身)\n类型: workflow_hypothesis\n置信度: under_validation\n影响范围: all_projects\n内容: verify_onboarding「lefthook 检查段」按键名匹配是名义匹配非语义匹配——等价功能不同键名(如 scripts 老写法、项目自定义键)会被误报缺失;enterprise-system 6/7 的 fail 尚未核实是缺失还是改名定制\n建议炼境: log_for_review","created_at":"2026-07-15 23:16:07","id":93,"project_id":"2c5b54ef-5570-42ab-8c41-8ed1e2cd21dc","source":"mcp"}
|
||||||
{"content":"【复盘】notes 档案分片双写 + backfill 自愈(governance-feedback-loop 缺口①地基)\n任务类型: MCP工具\n复杂度: M\n实际轮数: 1轮(预估1-2轮)\n是否返工: 否\n有效策略: 动工前辩证翻转归宿设计(集中式→按项目分片),翻转依据全部来自侦察事实(安装态进程定位不了炼境仓库/usage.json 先例本就 per-project/可拆除性按项目成立);实现前把 project_root 重构出 DI 版而非复制 WSL 转换逻辑,单一实现;三个测试对着 acceptance 逐条写(双写匹配/回填幂等+死登记跳过/并发不交错),110 全绿一次过;PR #5 CI 双侧绿后 MCP 合并\n遗留风险: MCP 实调(append 双写 + backfill 存量落盘)待重建安装后终验——本条笔记即终验样本(重建后跑 backfill_notes_archive,应出现在 dev-manager-tauri/.blueprint/notes-archive.jsonl 尾部);WSL 项目分片路径未真机验;子项目档案文件的 git 收编节奏未约定(沿 usage.json 惯例)\n附带产出: /ship 体检实补3处(push 提前信号/新文件占比口径/机械阈值归 lint);/envoy 体检零改动收官——两项均早已消化,沉淀教训「分诊定态前先核实目标文件现状」","created_at":"2026-09-11 22:27:48","id":164,"project_id":"dev-manager-tauri","source":"mcp"}
|
{"content":"【复盘】notes 档案分片双写 + backfill 自愈(governance-feedback-loop 缺口①地基)\n任务类型: MCP工具\n复杂度: M\n实际轮数: 1轮(预估1-2轮)\n是否返工: 否\n有效策略: 动工前辩证翻转归宿设计(集中式→按项目分片),翻转依据全部来自侦察事实(安装态进程定位不了炼境仓库/usage.json 先例本就 per-project/可拆除性按项目成立);实现前把 project_root 重构出 DI 版而非复制 WSL 转换逻辑,单一实现;三个测试对着 acceptance 逐条写(双写匹配/回填幂等+死登记跳过/并发不交错),110 全绿一次过;PR #5 CI 双侧绿后 MCP 合并\n遗留风险: MCP 实调(append 双写 + backfill 存量落盘)待重建安装后终验——本条笔记即终验样本(重建后跑 backfill_notes_archive,应出现在 dev-manager-tauri/.blueprint/notes-archive.jsonl 尾部);WSL 项目分片路径未真机验;子项目档案文件的 git 收编节奏未约定(沿 usage.json 惯例)\n附带产出: /ship 体检实补3处(push 提前信号/新文件占比口径/机械阈值归 lint);/envoy 体检零改动收官——两项均早已消化,沉淀教训「分诊定态前先核实目标文件现状」","created_at":"2026-09-11 22:27:48","id":164,"project_id":"dev-manager-tauri","source":"mcp"}
|
||||||
{"content":"【复盘】P3-S1 炼境自身 Codex 接入闭环\n任务类型: MCP工具\n复杂度: M\n实际轮数: 2轮(预估2轮)\n是否返工: 否\n有效策略: 先由 inject_mcp 建立工具无关 canonical context,再由 apply_onboarding_pack 分发版本化能力包;最终通过 verify_onboarding 11/11 与 get_delivery_status 实机调用验证,未读取或复制 Gitea token。\n遗留风险: 当前 Codex 任务不能热加载新 MCP 配置,需在新任务验证原生工具发现;个人 marketplace 指向的 lian-jing-codex 源目录缺失,仓库插件源码已更新但本机插件缓存尚未刷新。\nauto_applied_rules: R10,R13\nrule_effectiveness: R10=有效,R13=有效","created_at":"2026-09-22 21:08:45","id":175,"project_id":"dev-manager-tauri","source":"mcp"}
|
{"content":"【复盘】P3-S1 炼境自身 Codex 接入闭环\n任务类型: MCP工具\n复杂度: M\n实际轮数: 2轮(预估2轮)\n是否返工: 否\n有效策略: 先由 inject_mcp 建立工具无关 canonical context,再由 apply_onboarding_pack 分发版本化能力包;最终通过 verify_onboarding 11/11 与 get_delivery_status 实机调用验证,未读取或复制 Gitea token。\n遗留风险: 当前 Codex 任务不能热加载新 MCP 配置,需在新任务验证原生工具发现;个人 marketplace 指向的 lian-jing-codex 源目录缺失,仓库插件源码已更新但本机插件缓存尚未刷新。\nauto_applied_rules: R10,R13\nrule_effectiveness: R10=有效,R13=有效","created_at":"2026-09-22 21:08:45","id":175,"project_id":"dev-manager-tauri","source":"mcp"}
|
||||||
|
{"content":"【复盘】P3-S2 Agent PR 合并安全门禁\n任务类型: MCP工具\n复杂度: M\n实际轮数: 2轮(预估2轮)\n是否返工: 是\n返工原因: 初版只在发起 merge 前读取并比较 head SHA,代码审查发现检查与执行之间仍有 TOCTOU 窗口;补充 Gitea head_commit_id 由服务端在合并时再次绑定确认 SHA。\n有效策略: 将 confirmed、完整 expected_head_sha、PR open/mergeable、CI、review 全部收敛在 Rust 能力本体;MCP 仅传参。先用错误 SHA 验证拒绝,再在用户确认 PR #14 与 b6d749025458928b86ab607a5a7f31479f8db85f 后真实合并并回读状态。\n遗留风险: review=pending 在当前轻量治理策略中允许合并;若未来需要强制审批,应新增项目级 required-review policy,不应在客户端复制判断。\nauto_applied_rules: R06,R07,R10,R12,R13\nrule_effectiveness: R06=有效,R07=有效,R10=有效,R12=有效,R13=有效","created_at":"2026-09-22 21:20:28","id":176,"project_id":"dev-manager-tauri","source":"mcp"}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user