Commit 2397a745a70086e5fbf6e30343e3c67f402c63de
1 parent
36ecd1a6
gap-analysis doc: record order-3 (skill migration) as fixed via self-hosting
Second real self-fix (after order 2) -- 12 skills migrated verbatim from ~/.hermes/profiles/, Validator caught and redacted a leaked Feishu API token in 3 of them via byte-diff against source. Also records two operational lessons from actually running it (a real network blip, and my own mistake killing a daemon thread by running it from a one-shot script) and a flaky supervisor test failure that didn't reproduce on independent recheck. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Showing
1 changed file
with
1 additions
and
1 deletions
docs/implementation-gap-analysis.md
| ... | ... | @@ -118,7 +118,7 @@ Deploy Supervisor 走到 cutover 前,仍按现有习惯人工确认一次。 |
| 118 | 118 | |---|---|---|---|---| |
| 119 | 119 | | 1 | ✅ 已修复(2026-08-03) 普通 target project 从未部署 Agent 定义 + worktree 隔离未提交(§3) | ~~让 `agent_profile.deploy_agent_definitions()` 在写完 `.claude/agents/*.md` 后自动 `git add`+commit~~ | 低 | 实际根因比预想的更基础(根本没调用点,不只是没 commit);**这次是人工直接改代码修的,不是走自举流程验证的**——留作顺序 2 之后再真正试一次"用 graphlemon 自己修 graphlemon"的对照 | |
| 120 | 120 | | 2 | ✅ 已修复(2026-08-04,**真正走 graphlemon 自举流程验证**) 文档滞后(§4) | ~~让 Planner/Coder 核对 `development-plan.md`/`unit_matrix.json` 与 `git log` 的实际进度,补齐/订正"done"状态字段~~ | 低 | **这是本次会话第一次真正用 graphlemon 自己的 Planner→Coder→Validator 闭环修复自己**(不是人工直接改代码,对照顺序 1)。真实注册 `graphlemon (self)` project → `scheduler.run_goal_to_completion()` 后台跑约 40 分钟 → Coder 找出 6 处真实文档/machine-readable 不一致并订正(含主动发现"另一会话"两个功能提交在 `unit_matrix.json` 里缺 Unit 条目,补建 U-044/U-045)→ Validator 独立重跑全量 513 测试 + 逐条核对 git commit 后判 PASS,未直接信任 Coder 报告。过程中触发了一次真实 `ensure_worktree_committed` 主仓库漂移自动提交,机制本身也顺带得到一次真实验证。详见 `git log`(`43dc7333` 相关提交链,`3bebe3b`起)。 | |
| 121 | -| 3 | Skill 内容未真正迁移(§3) | 把 `~/.hermes/profiles/{code,planning,qa}/skills/` 下 frontmatter 引用到的 Skill 真实内容迁移进仓库 `skills/<skill_id>/` | 中 | 已确认 `~/.hermes/skills` 在本机真实存在;风险点在于 Coder 会话对仓库外路径的读取权限没有专门验证过,需要先确认 `auto` 权限模式下这条路径可达 | | |
| 121 | +| 3 | ✅ 已修复(2026-08-04,**真正走 graphlemon 自举流程验证**) Skill 内容未真正迁移(§3) | ~~把 `~/.hermes/profiles/{code,planning,qa}/skills/` 下 frontmatter 引用到的 Skill 真实内容迁移进仓库 `skills/<skill_id>/`~~ | 中 | 启动前先人工核实了 12 个 skill_id 的真实源路径(8 个比预想深一层,藏在分类子目录里)并把精确映射直接写进 goal_text,避免 Coder 会话浪费真实 token 去搜索——原先担心的"读取仓库外路径权限"最后证明不是问题,`Bash`/`Read` 能正常读 `~/.hermes/...`。真实跑的路上还顺带遇到并修好两个操作性问题:① 一次真实 API 网络瞬断(`ENOTFOUND`)导致任务阻塞,直接推动修了 `manual_resume` 不会真的续跑这个 bug(见下方"顺带修复");② 我自己用一次性脚本调 `start_task_execution_in_background()` 导致 daemon 线程随脚本退出被误杀,改用 `nohup` 持久进程后正常跑完。**结果**:12 个 Skill 目录全部真实迁移(`SKILL.md`+`references`/`templates`/`scripts`),Validator 做了逐字节 `diff -rq` 核对(9/12 完全一致,3/12 只差一行——主动发现并脱敏了源文件里一个真实泄漏的飞书 API token,跟仓库已有先例一致,不是内容改写),`agent_profile.py` 的 `FRONTMATTER` 与新目录名逐一核对一致。Validator 顺带报过一次 `supervisor/test_deploy_rollback.RollbackPathBFailureTest` 失败并称"确认是迁移前就有的";事后独立复核(单独跑 + 全量跑 `supervisor/`)**没能复现**,大概率是这个套件已知的孤儿进程/资源竞争类偶发失败,不算新缺口,先记录观察。**顺带修复**:`src/backend_server.py` 的 `manual_resume` 之前只对 `user_paused`/`user_stopped` 自动续跑,`execution_error`(网络瞬断等)resume 后卡死——改成除 `budget_exceeded`/`loop_limit_reached` 外都自动续跑,见 commit `db62570`。 | | |
| 122 | 122 | | 4 | 部署缺互斥锁(本节新发现,§1) | 给 `deploy_stage.stage_deployment()` 加"当前是否已有进行中部署"的检查,拒绝/排队重复 staging | 中 | 应该在启用并发自举(顺序 6 之后)之前完成,否则后续任务并发跑时有真实冲突风险 | |
| 123 | 123 | | 5 | PH3 前端从未被真人验证(§5) | 不适合作为自动化 Coder 任务——这是"人用浏览器点一遍"的验证缺口,不是代码缺陷;列在这里是为了不让它被误当成可自举任务 | 不适用 | 需要人(或 claude-in-chrome 之类的浏览器自动化)介入,不建议塞进 Planner→Coder 循环 | |
| 124 | 124 | | 6 | 调度器接入生产入口(§2) | 给某个常驻进程(`backend_server.py` 或独立进程)接入 `scheduler.run_scheduler_once()` 的轮询循环 | 高 | **改变系统自己的自主权边界**,建议单独一批、额外人工审查 diff,不要和其他 gap 混跑;完成并 cutover 后,理论上后续 gap 才谈得上真正黑灯 | | ... | ... |