docs(readme): deliver代码真实性三重门禁段(2026-09-16 pbls M1a空壳事故)——git收口引擎化/代码空壳硬门禁_validate_stub_code/产出文件机械核验段,通用规则:门禁证据必须引擎机械计算不靠agent自述,QC取证失败≠判0分

This commit is contained in:
ymq 2026-09-16 15:23:11 +08:00
parent 0d02ac631a
commit a3a1c88859

View File

@ -130,3 +130,34 @@ old_string 唯一性校验0/多次拒绝replace_all 放行)+ 原子写 +
- `gateway.run_message(image_paths)`build_image_parts 构造 + 超限 notes 注入 content。
- 实测中性文件名红蓝两图agent 正确答「第一张红色、第二张蓝色」degrade 0 次。
## deliver 代码真实性三重门禁2026-09-16 pbls M1a 空壳事故根治)
**事故形状**develop agent 声称「已用 write_file 落盘 17141 字符、G1~G6 严格退出码门禁」,
实测交付的 verify_gate.py 只有 9 行纯注释 1225 字节——LLM 把「对文件的描述」当文件内容写入;
且 git 证据由 agent 自称实为引擎代收口。QC 抓到时代价已是 4 轮烧光 + fault + pause。
三层确定性门禁(全部引擎层,不靠 LLM 自觉):
1. **git 收口引擎化**38efb3edeliver 时引擎代为 add+commit 本任务写入的
apps/modules 仓库,收口核验记录(改了哪些仓库/几个文件/commit hash回填交付件正文——
agent 无法再自称「已提交」伪造 git 证据。
2. **代码空壳硬门禁 `_validate_stub_code`**0d02ac6deliver 时本任务 write_file
实写的每个 `.py` 必须 ast 可解析且有真实可执行语句(纯注释/pass/纯 docstring/
语法错误一律拒绝,`__init__.py`/`conftest.py` 豁免),`.json` 必须可解析;
`files` 参数先验后写(`_validate_code_files_params`),防空壳落盘后被收口变既成事实。
拒绝时回填可行动 FAIL指出文件+原因agent 当轮重写——空壳死在 deliver 入口,
不再烧 QC 轮次。native + 文本兜底两条 deliver 路径都挂载。
3. **产出文件机械核验段**:引擎自动计算每个代码产出文件的实测字节/行数/语法/语句数,
以「产出文件机械核验(引擎自动计算,非 agent 声明)」标题回填交付件正文——
「声称 17141 实测 1225」类矛盾一眼可见QC 拿到引擎级证据底座,
不再依赖自己 run_shell 逐个取证(取证失败盲判 0 分退也在烧重试预算,实测 9 轮里 3 轮是盲审)。
配套技能pipeline-core 7bfa8d6develop 角色「代码真实性铁律」write_file 必须完整正文、
大文件拆小分批、声称数字须与引擎核验一致、勿自称 commit/pushQC review-develop
「优先读引擎回填两段核验当权威证据;声称 vs 实测矛盾直接按造假退;取证失败禁盲判 0 分,
改 read_file 逐项或 ask_question 冒泡」。
**通用规则**:质量门禁的判定证据必须来自引擎机械计算(字节/行数/ast/commit hash
不能来自 agent 的自我声明QC 尺子要配「取证失败 ≠ 判 0 分」的出路,否则盲审烧轮次。