c1dba09049
9a7a79951 给 finish_agent_runtime_project_verification_locked 加了一道复核:记录
game.static_smoke 通过时,按当前磁盘内容重跑 validate_game_html_smoke。五个夹具
仍停在收紧前的形状——它们各自只为视觉门、模块可达性或 owner 产物判据构造入口页,
没有目标说明、主循环或输入监听,于是伪造的 smoke 通过一律被拒,用例从未绿过。
生产代码不动:draft_validation.rs 与 master 逐字一致,project_gates.rs 里那段复核
逻辑也和 master 相同。只把夹具补到合同要求的形状:
- 数值常量作用域、内联/外部模块图集三处改用仓库已有的 with_static_smoke_contract
包一层,被探测的常量引用与模块结构原样保留;
- 终态投影用例的入口页原本只有一个空实现回调,空回调本身触发另一条判据,去掉后
同样包上合同层,写入次数不变、revision 断言不受影响;
- owner 产物用例是真实新项目,入口是无画布占位页。它在断言过「占位页过不了真实
smoke」之后才需要一份过期 smoke 凭证,故在 owner 产物之前先落一份合规入口,
verified_revision 仍取最后一次 owner 产物;
- 自主 manifest 用例只写了 package.json,直接用普通文件写入落一份合规入口,不触碰
revision 记账。
顺带修一处仿造 gate:清 static_smoke_verified_revision 时必须同时清入口摘要,
两者是一对,否则 gate 自身的一致性校验会先于被测行为拒收。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>