goal_10013948 验证脚手架与任务脚手架升级 · 收口报告 (G10013948-2026-11-06)
0. 交付摘要
| 批次 | 项 | 状态 | 验收证据 | |
| A1 | cheap-gate 前置 (EX) | ✅ | Rust cheap_gate 4测 + EX 7测绿 | |
| A2 | 判定缓存去抖 (EX) | ✅ | judge_cache 3测 + ETS持态 + 键失效 | |
| A4 | 导师输出可见化 | ✅ | 三段卡落盘 mentor_{critic,retro,goal}_last.md | |
| A5/C3 | 交付网页+链接 | ✅ | HTTP 200 实测 (见文末链接) | |
| B1 | V22 批评三视角聚合 | ✅ | catalog 切 native_elixir + 3测绿 | |
| B2 | V20m 全程审计非查表 | ✅ | 铁律: >=1条脚手架改进项, 3测绿 | |
| B3 | V23g 教育目标导师 | ✅ | 显式规则表, 2测绿, 新判面入 catalog | |
| D2 | 静态检查社区实践模块 | ✅ | ruff 0.17 集成, 解析4测+规则4测绿 | |
全套: Rust 173 passed / 0 failed, EX 41 tests / 0 failures。
1. 资源占用主解 (A1+A2)
cheap-gate 前置 (native/src/core/cheap_gate.rs): 静态判据(V1/V15/V16/V17/V20t/V27/V35/V38)全量先跑零 token; 昂贵判据只跑被静态判据指向的 case (V17失败→V18/V30 等显式路由表)。
判定缓存 (native/src/core/judge_cache.rs + lib/verify_grid/judge_cache.ex): 键=判定id+改动文件内容摘要+环境指纹, 三者任一变化即失效; ETS 持态跨调用存活; 命中率带分母0保护。
分流档位与路由表全部显式枚举 (禁动态注册, AI习惯第7条)。
2. 三导师落地 (B1/B2/B3) — 导师不再形同虚设
V22 批评导师 (mentors.rs): Adversary/Builder/Auditor 三视角独立产出 → 聚合去重 → 分级计数; disagreement 必显式暴露禁只报多数票 (MAR: 角色分离+评判者聚合)。
V20m 复盘导师 (mentor_retro.rs): 八步逐步回放非查表; 每步查产物+验证真跑; 铁律: scaffold_improvements >= 1 (复盘脚手架不只复盘任务, 零漏项也给基线改进建议)。
V23g 教育导师 (mentor_goal.rs): 显式规则表 (全PASS无对抗→hidden probe; 通过率<60%→降档预警)。
收口可见化 (mentors.ex run_all): 三段卡必展示+三文件落盘 artifacts/evidence/global/mentor_*_last.md。
catalog.ex: V20m/V22 切 native_elixir, V23g 新判面 (原 V23 已被压测自检占用, 避冲突)。
3. 交付网页 (A5/C3)
tools/deliver_web.exs (182行): md → 单文件深色主题 HTML (代码块/表格/列表/引用全渲染) → 部署回传 URL。
部署双通道: 扣子侧 coze-dev Pages (异步轮询 status 抓 domains, 禁只读提交响应); 测试机无 coze-dev 时走 tools/quick_tunnel.sh (setsid 完全脱离, 1.087s 返回, cloudflared quick tunnel 24h)。
结果必落盘 deliver_web_result.json + URL 必进收口报告; live 模式部署失败即 halt(1) 禁伪造链接。
冒烟实测: HTTP 200 / 2020 bytes / title 正确。
4. 静态检查社区实践模块 (D2)
社区调研结论 (2026-11): ruff 0.17 (Rust, 3000+规则, JSON稳定) 为主, semgrep 2000+ 社区规则为辅, ast-grep 结构化匹配。
native/src/core/static_community.rs (144行, ruff JSON解析, 失败显式 Err 禁静默空数组) + static_rules.rs (87行, 规则族→判据面映射: E9/F63/F7/F82=blocker→V19, S→V17红线, C90/UP→V27, ANN→V33...)。
EX 编排 static_community.ex (46行): 调 ruff CLI → NIF 判定; ruff 缺失显式 error 禁假绿。
5. 六验证 (本轮改动面)
1. 冒烟: deliver_web 冒烟 md → HTML → tunnel → curl HTTP 200 ✅ 2. 单测: Rust 173/0 + EX 41/0 ✅ 3. 集成: NIF 契约闸过 (check_nif_contract), .so 同步4处 ✅ 4. 红蓝对照: 三导师判定负例测试 (零证据→blocker, 低通过率→降档, 非法JSON→Err) ✅ 5. 契约: catalog 判面行 ex路径与 Mentors 模块函数一一对应 ✅ 6. 回归: mix test 全量 41/0, 既有26测试无回归 ✅
6. 过程问题与修复 (防再犯)
| 问题 | 根因 | 修复 | |
| NIF状态不跨调用(缓存无效) | judge_cache_new每次新建 | ETS持态, 编排层持有 | |
| Decoder缺生命周期 | rustler::Decoder带'a | T: Decoder<'a> | |
| heredoc语法错3处 | \"\"\"同行/结束符同行/rem中缀 | 换行/函数式rem | |
| System.cmd后台化卡死 | python继承stdin pipe | 拆独立脚本setsid脱离 | |
| KB桩删漏8个 | git恢复不完整 | 补齐+契约闸把关 | |
7. 未完项 (下一批次登记)
A6 接线自主验收(Playwright真机点) / B4 过程纠偏窗口 / B5 hidden probe对抗验证 / C1 增量隔离沙箱 / C2 SSE轨迹存档 / C4 教训写回 / C5 判定器元验证 / D1 工具页全量切ex+rs —— 均已在 goal_10013948 清单登记。
8. 交付链接
本报告网页版: (见 deliver_web_result.json)
代码: verify_grid native/src/core/{cheap_gate,judge_cache,mentors,mentor_retro,mentor_goal,static_community,static_rules}.rs + lib/{judge_cache,mentors,static_community}.ex + tools/{deliver_web.exs,quick_tunnel.sh}