创建人员:Codex
文件职责:记录 Project D 开发体系中的实际编码、测试、自检、偏离和结果回写。
管理规范/模板:../../common/dev-doc/编码规范.md;../../common/dev-doc/开发执行日志模版.md。
引用文件:开发事项总纲.md;开发事项计划.md;开发审计报告.md;开发问题记录.md;重型开发方案按事项创建。
记录方式:append-only 开发执行日志;每次开发执行追加到文件末尾。
本文件记录 Project D 根级开发体系的开发执行日志。目标开发工作区 dev/exp-dev/ 只存代码和测试,不另开开发账本。
开发事项:DEV-D-HEAVY-001。
开发计划:DEV-PLAN-D-HEAVY-001。
执行人员:Codex。
执行时间:2026-06-03。
目标代码:dev/exp-dev/manifest_pack_validator.py。
测试代码:dev/exp-dev/test/test_manifest_pack_validator.py。
编码方案:dev-doc/exp-doc/开发方案/CODE-D-HEAVY-001.md。
关键过程:
1. 按方案实现 sha256_file、load_manifest、validate_case、write_outputs 和 CLI。
2. 自检时发现 manifest 文件路径如果不限制在 case 目录内,会导致路径穿越风险;已在 _safe_resolve_case_file 中修复。
3. 增加 test_validate_case_blocks_path_traversal 回归测试,确认 ../escape.txt 会 FAIL。
4. 准备 valid/missing/hash 三类实验输入包。
5. 运行编译检查和单测。
6. 运行 RUN-D-HEAVY-001 并生成结果包。
7. 补 RUN-D-HEAVY-002 复用实验时发现 summary.json 和 readout.md 的 experiment_id/run_id 写死;已改为从 input_root/output_dir 动态生成。
8. 补动态 ID 回归断言,并重新运行 RUN-D-HEAVY-001 与 RUN-D-HEAVY-002。
执行命令:
1. python -m py_compile .\manifest_pack_validator.py .\test\test_manifest_pack_validator.py。
2. python -m unittest discover -s test -p "test_*.py"。
3. python .\dev\exp-dev\manifest_pack_validator.py --input-root .\exp-data\raw\EXP-D-HEAVY-001 --output-dir .\exp-data\result\RUN-D-HEAVY-001。
4. python .\dev\exp-dev\manifest_pack_validator.py --input-root .\exp-data\raw\EXP-D-HEAVY-002 --output-dir .\exp-data\result\RUN-D-HEAVY-002。
测试结果:
1. py_compile:PASS。
2. unittest:5 tests OK。
3. RUN-D-HEAVY-001 CLI:exit code 0。
4. RUN-D-HEAVY-002 CLI:exit code 0。
输出:
1. exp-data/result/RUN-D-HEAVY-001/summary.json。
2. exp-data/result/RUN-D-HEAVY-001/case_results.csv。
3. exp-data/result/RUN-D-HEAVY-001/file_check_details.csv。
4. exp-data/result/RUN-D-HEAVY-001/readout.md。
5. exp-data/result/RUN-D-HEAVY-002/summary.json。
6. exp-data/result/RUN-D-HEAVY-002/case_results.csv。
7. exp-data/result/RUN-D-HEAVY-002/file_check_details.csv。
8. exp-data/result/RUN-D-HEAVY-002/readout.md。
自检结论:
实现符合 DEV-D-HEAVY-001;路径安全问题和结果包身份写死问题已在实现阶段修复并有单测/双实验覆盖;两个结果包 quality_pass=true。
状态:已完成,进入实现审计。