• 之前几轮全量跑一直有 3 个失败,当时判断是环境耦合/pre-existing、跟本次改动无关就没细查,
    这次逐个真查了一遍,三个都是真 bug:
    
    - system/agents/sdd-planning/SKILL.md:Evolve 训练产出从 train/evolve/SKILL.md 提升到
      生产位置时,"训练依据"引用的相对路径没跟着调整(少了 train/ 前缀),指向了不存在的
      system/agents/hunt/、system/agents/digest/;真实文件其实在同一个 agent 自己的
      train/hunt/、train/digest/ 下,补前缀即可。
    
    - graduation-criteria-reality.test.js:断言死等 code-planner 的状态回到 'active',但
      该本体的 config.json 早已从曾经踩坑的 "training" 改成了真正毕业态的 "enabled"——
      seedAgents() 把 DB 同步成 'enabled' 是设计如此(同为毕业态,不是降级),不该被判失败。
      改成用 isUngraduatedStatus() 判断"没被打回未毕业域",不再钉死具体状态值;顺手把
      graph-seed-service.js 里那句会随源码变化过期的注释也改成不点名具体值。
    
    - graph-engine-extend-budget.test.js:一颗时间炸弹——用硬编码绝对时间戳
      '2026-08-23T05:23:52.886Z' 模拟"卡住很久了",但被测代码真的调 Date.now() 算经过时长,
      写这条用例时"经过时长"确实超过 2h 上限、又低于追加后的 6h 上限;现在真实时间已经过去
      178 小时,连追加后的上限都超了,测试注定要红,跟被测代码毫无关系。改成
      Date.now() - 3小时 相对计算,不再随时间推移漂移。
    
    全量 vitest 131/131 文件、1089/1089 用例通过。
    
    Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
    yibo authored
     
    Browse File »