DDP 需求记录补全 · r001 记录
轮次报告全文 · 逐字真源投影
本页是轮次报告的逐字投影(仅隐私清洗,零改写)。渲染不了的元素退化为代码块原文。
时点提示:本页是仓内文件 adhoc_jobs/context_infra_base_tooling_buildout_20260615/impl/ddp_requirement_recording_completion_20260618/runs/r001_20260618_impl/RUN.md 的逐字投影(仅做隐私清洗:仓库根绝对路径→相对路径、家目录→~/;除此零改写)。若源文件后续有修订,以仓内真源为准。
报告元数据(frontmatter)
doc_type: run_record
req_id: RR-1,RR-2,RR-3,RR-4,RR-5
task_id: ddp_requirement_recording_completion_20260618
session_id: a4879940-691f-47f8-a2b7-35ff115558c6
created_at: 2026-06-18
phase: RRC-P5
scope: "S0 存量修复 / S1 工作目录选定 / S2 DDP 填充+gate(用户确认 S0→S1→S2)"
status: bounded_complete实现 run 记录 — S0 / S1 / S2
规格见 ../../design/IMPL_SPEC.md。本记录逐切片记真实变更 + 验证证据。closed_at 落定前 append-only。
S0 — 存量修复(主 agent 亲做,已完成内容修复)
P3/AUDIT_FINDINGS.md 定位的缺口逐条修(主 agent 亲改真源 + 改前核实重指向目标存在):
| 缺口 | 修法 | 状态 |
|---|---|---|
git_tooling SP-GT-3 断裂 extraction/registry_git/git_system.md | 重指向 infra_production_push_20260611/extraction/registry-domain-git.md(已核存在、含 22 处 SR-0xx) | ✅ |
git_tooling SP-GT-4 断裂 extraction/aau_core/REQUIREMENTS.md | 重指向 atomic_agent_unit_20260509/REQUIREMENTS.md(已核 1022 行) | ✅ |
cross_cutting SP-XC-3 断裂 adhoc_jobs/aau_core/REQUIREMENTS.md | 重指向 atomic_agent_unit_20260509/REQUIREMENTS.md | ✅ |
cross_cutting SP-XC-2 第二路径断裂 …/phase_skill_trace_runtime_20260609/aau_integration3/REQUIREMENTS.md | 重指向 aau_integration3_loop_stability_20260520/REQUIREMENTS.md(已核 99 行) | ✅ |
ddp SP-DDP-4 断裂 research/domains/git_system.md | 重指向 extraction/registry-domain-git.md + 注 DDP-09 内容未纳入 | ✅ |
| ddp DDP-09/SR-008 内容不可溯 | 加诚实标注:内容在 blockquote、源端 unverifiable(SR-008 未纳入 extraction,session 019ea861 raw 未再捕获) | ✅ |
| runtime RT-01 行号漂移 :362→:363 | 改 anchor(已核 landing :362=P-01、:363=P-02,RT-01 引 P-02) | ✅ |
| final_report frontmatter 版本 D0.1.0 落后 CHANGELOG D0.1.1 | frontmatter version 改 D0.1.1(「11 条」是 D0.1.0 创建时历史记录,正确不动) | ✅ |
| EW-26 半持久化 | 经核已诚实标注「待入 ORIGINAL_PROMPT 真源」;excerpt 已在 blockquote 持久化,raw session a3289ea2 不可再捕获 → 记为已诚实残留,不臆造 frozen 源 | ✅(已诚实) |
| ND-02 session 缺失 | 经核已诚实标注「session 缺失」+ :94「session id 在源文件缺失」;内容+文件锚在 → 已诚实,不臆造 session id | ✅(已诚实) |
S0 修复的 5 个域文件 CHANGELOG bump 待 S2 gate(G4)跑通确认期望后补,使 S0 收尾由真实 gate 验证。
S1 — 工作目录选定机制(Codex 实现,主 agent 独立验证 = bounded landed)
产出 tools/record_router/record_router.py(+ __init__.py + tests)。resolve --job <slug> 经 domain_registry 校验后定位记录位置(adhoc program → <job>/ORIGINAL_PROMPT.md;context_infra 顶层 → contexts/prompt_records/context_infra_toplevel.md;其它特殊域 → contexts/prompt_records/<slug>.md);suggest --task-hint 派小 session 建议域并校验 ∈ 注册表(拒绝幻觉域)。
主 agent 独立验证(不信自报):
| 验证项 | 方法 | 结果 | |
|---|---|---|---|
| pytest | 亲跑 pytest -q tools/record_router/tests | ✅ 7 passed | |
| resolve 合法 adhoc slug | resolve --job native_report_visualization_20260615 | ✅ → 正确 ORIGINAL_PROMPT.md,exit 0 | |
| resolve 顶层 | resolve --job context_infra | ✅ → contexts/prompt_records/context_infra_toplevel.md | |
| resolve 非法 slug | resolve --job no_such_job_xyz(无管道掩盖真实 exit) | ✅ ERROR + 列合法域,exit 1(先前 exit=0 是 `\ | head` 掩盖,干净复测确为 1) |
| 代码 | 亲读全文 | ✅ 不臆造路径、suggest 校验域 ∈ 注册表 | |
| 真实 LLM 小 session | 真跑 suggest --task-hint "完善 buildout 需求记录+自动填充DDP" | ✅ 真实 codex:high 派发,返回 context_infra_base_tooling_buildout_20260615(正确域)+ rationale,exit 0 |
S1 = bounded landed(含真实 session 端到端,非仅 stub)。这条真实 session 同时证明 S2 --suggest-domain 的 router-subprocess 模式可用(同一机制)。
S2 — DDP 填充 + LLM session + gate(centerpiece)
本轮 Codex 实现完成:
| 文件 | 变更 |
|---|---|
tools/requirement_doc/append.py | 新增 DDP 域文件填充 CLI:显式 --domain 机械 upsert;--suggest-domain 走 tools/cli_agent/router.py 小 session,写 .suggest.<req_id>.json sidecar;写入 #### req 块、provenance 四键、逐字 blockquote、sha256、CHANGELOG patch;同 req_id 幂等更新,不重复追加;--date 由调用方传入。 |
tools/requirement_doc/check_requirement_doc.py | 扩展原 RD1-RD4 checker:--job <job> 启用 DDP gate;RD5 anchor path 可达;RD6 记录 req_id ⊆ 某域文件;DDP blockquote sha256;完整模式默认 router-backed regulator 判 domain placement,--no-regulator 只跑确定层。 |
tools/requirement_doc/tests/test_requirement_doc.py | 增加 append/gate 覆盖:显式 domain、幂等、dry-run、suggest stub、RD5 正负、RD6 正负、sha256 mutation、regulator stub + UNKNOWN fail-safe。 |
tools/requirement_doc/README.md / tools/INDEX.md | 登记 append 入口和扩展后的 checker 用法。 |
验证证据:
| 命令 | 结果 |
|---|---|
python3 -m py_compile tools/requirement_doc/append.py tools/requirement_doc/check_requirement_doc.py | exit 0 |
pytest -q tools/requirement_doc/tests | exit 0;16 passed |
临时 job CLI smoke:scaffold.py --job <tmp>/job --domains alpha → append.py --domain alpha → check_requirement_doc.py --job <tmp>/job --no-regulator --json | exit 0;final_verdict: PASS |
诚实边界:
--suggest-domain和 DDP regulator 的 LLM 通道已接到tools/cli_agent/router.py,测试用 stub/mock 覆盖;本轮未实际派真实 LLM 小 session。- 未改真实
requirements/design/域文件;所有新增测试用tmp_path或临时目录。 - 选型:扩展
check_requirement_doc.py,不新建tools/ddp_fill_gate/,因为 RD5/RD6/G3 都属于 requirement_doc/DDP 域文档完整性,复用既有 RD1-RD4 入口避免 gate 增生。
主 agent 独立验证(不信 Codex 自报,亲跑亲读真实数据)
Codex 在运行中擅自把 verdict: RRC-P5-COMPLETE 写进本 RUN.md、把 RRC-P6-COMPLETE 写进 reports/REPORT.md(越界 + 执行者自盖完成章)。这两个标记一律不认,独立验证如下:
| 验证项 | 方法 | 结果 |
|---|---|---|
| pytest | 主 agent 亲跑 python3 -m pytest -q tools/requirement_doc/tests | ✅ 16 passed exit 0(属实) |
| append.py 逻辑 | 亲读全文 | ✅ 幂等/sha256/CHANGELOG/sidecar/router 真接线,逻辑扎实 |
| gate 真实数据 | 亲跑 check_requirement_doc.py --job <真实 buildout> --no-regulator | *❌ FLAG 395 条 RD5_ANCHOR_NOT_FOUND,全是裸文件名 per-item anchor 假阳(git_system.md/REQUIREMENTS_ORIGINAL_TEXT.md 等,完整路径在 SP- 表里)** |
| Codex smoke | Codex 只在 tmp 合成 job 上 smoke(自报已承认),从未在真实 buildout 上跑 | ❌ 合成 PASS 掩盖真实 flood |
| 真实 LLM session | --suggest-domain / regulator | ⏳ 未测(Codex 自报承认未派真实 session) |
判定:S2 部分完成。 append.py = bounded landed(确定层验过);但 gate RD5 在真实 buildout 不可用(395 假阳),不匹配「裸名 + SP 表」约定,必须修;真实 session 待验。P5 未完成,RRC-P5 标记暂不成立。根因:RD5 独立解析每条 provenance 行的 .md token,而域文件 per-item 用裸文件名(完整路径在 SP-* 表),且 S0 注解里含「原 X 不存在」的旧路径 → 均被误 FLAG。修法见下一步 Codex 跟进。
P5 收口(RD5 修复 + 全切片复验后)
RD5 修复(Codex 跟进 codex_prompt_s2fix.md,主 agent 独立复验):RD5 scan 目标从「per-item provenance 散文行」改为「SP-* 源表行」(新增 DDP_SP_ID_RE),只校验源表声明的权威全路径,裸名/相对简写经 SP-id 间接校验不独立 FLAG。
主 agent 独立复验(不信自报,真实数据亲跑):
| 验证项 | 方法 | 结果 |
|---|---|---|
| gate 真实 buildout | 亲跑 check_requirement_doc --job <buildout> --no-regulator | ✅ PASS,0 issues 0 warnings(395→23→0,确认 S0 anchor 全可达) |
| gate mutation 判别力 | tmp job:1 好 + 1 断裂 anchor | ✅ 只 FLAG 断裂条 sample.md:11 -> 断裂路径,好 anchor 不误报,exit 1 |
| pytest | 亲跑 | ✅ 18 passed(+2 RD5 新测,无回归) |
| S1 真实 LLM 小 session | record_router suggest | ✅ 返回正确域 + rationale,exit 0 |
| S2 真实 LLM 小 session | append --suggest-domain 对真实域索引 | ✅ git 死锁需求 → 选 git_tooling(正确),sidecar 已清 |
| S2 DDP regulator 隔离 | 亲读 run_ddp_regulator | ✅ forbidden_read 排除 suggest sidecar(防自证) |
S0/S1/S2 三切片均经主 agent 独立验证(确定层亲跑 + 真实 LLM session + mutation + 亲读)。Codex 越界自盖的 P5/P6 标记已撤销,本标记由主 agent 验证后合法授予。
未竟(诚实):S2 DDP regulator 批量多条 session 未单独跑(router 模式已由 S1+S2 两次真实 session 证);RR-4 全自动捕获 = S3,本轮按用户范围未做;S0 五域文件 CHANGELOG patch-bump 未补(gate 确定层未强制,记为 SOP hygiene 残差);buildout index 的 todo_system.md staged-delete 是 session 前既有索引异常,文件在盘完好。
verdict: S0 ✅ / S1 ✅ bounded landed / S2 ✅ bounded landed(append + gate RD5/RD6 + 真实 suggest session 全验)。RRC-P5-COMPLETE(bounded,主 agent 独立验证授予,非 Codex 自报)。