# PROGRESS · 长报告对齐二轮 gaps2(2026-09-06) 工作树:`.worktrees/report-md-page-20260906`(与 MD 详情页串行) 分支:`codex/report-md-page-20260906`(已 push `origin`,HEAD `809bdf13`;实现主体 `cfcd369d`) 任务书:`TASK-report-longform-gaps2-20260906.md` ## 任务 0 根因 专业参考路径可以把 `cmd_kp` 收成 `{status: blocked, reason: ...}` 且没有 `planets` / `houses`。渲染层 `_kp_lord_sub_section` 与专题 KP 表遇到该信封曾直接 `return []`,计划段无声消失。三年 KP 月表不走同一信封,所以仍在。 触发变量是 **API 候选窗 / blocked KP 信封**,不是 Raman 本身。真实用户盘未入库。 同构虚构盘 pl9-export(1990-01-01 12:00 UTC+8,39.9042/116.4074,raman,full pack;只写 `/tmp`):约 3107 行,KP Lord/Sub、审计表约 71 数据行、力量章六子块均在;约 11s。 ## 任务状态 | 任务 | 状态 | 说明 | | --- | --- | --- | | 0 根因 | 完成 | 见上;BUG-561 | | 1 KP + 静默跳过禁令 | 完成 | blocked 标题;最终 heading-ensure | | 2 审计表零行 | 完成 | `_iter_audit_modules` 在 raw 剥离前抽出;BUG-562 | | 3 力量章六子块 | 完成 | Bhava Bala 规范化;Yogini/Narayana/Kala periods 从本地模块补装 | | 4 年度回放按年展开 | 完成 | `_annual_series_surface` 保留 replay 键;缺年 blocked | | 4b 时间精度合同 | 完成 | 四粒度:day blocked;week/month parameter_sensitive;year 有年度系列则 partial_verified | | 4c 出生 provenance | 完成 | `birthplace_label` / `coordinate_source=user_reported` / `time_source` / `uncertainty_minutes` | | 5 C 组小段 | 完成(blocked-or-present) | 原始模块索引、Technique Audit、Vargas I 等走显式 heading | | 6 质量门 | 完成 | 见下 | ## 质量门 ```bash /Users/jesse/Downloads/Copse/astrology/yinduzhanxing/.venv/bin/python -m pytest \ tests/test_report_longform_gaps2.py \ tests/test_timing_precision_contract.py \ tests/test_report_longform_parity.py -q # 22 passed ``` 本 worktree 无独立 `.venv`,实测用父仓解释器。实现已随 `809bdf13` 快进到 `origin/staging`;门禁因 MD 页 lint(BUG-563)未部署,与 gaps2 装配无关。 未改 `.gitea/workflows/**`,不提升 main。 ## 补洞(相对 `cfcd369d` / `5aa05bf0`) 并行 worktree 在旧基线上多做的实现没有整棵 rebase(`jyotish_engine.py` 与 MD 页提交重叠太大)。在当前 staging HEAD 上只移植仍缺的洞: | 洞 | 处理 | | --- | --- | | 有月份时逐月 MD/AD 标题仍缺 | `_kp_monthly_theme_brief` 始终写 `#### KP {事业\|财务\|关系}逐月 MD/AD 支持`;空数据 blocked | | sanitize 抹掉 `source_path` | parity_gates 改 `source_label` | | 快速门未跑 gaps2 | `CORE_PYTEST_TARGETS` 列入 gaps2 / parity / timing / flexible | | 校时附录无分钟排行 | `flexible_birth_time_report_section` 列出 `candidate_times`,禁止 winner/approved | | CLI provenance 只认显式分钟 | 从 `candidate_range` / `declared_window_*` 回填 11:50–12:10 → 20 | | Vargas I / KP 三年节 None.get | `d1_d60_ledger` 与 `support_topics.kp` 做 dict 守卫 | Muntha `conflict`、`pyjhora_behavior_only`、事件回放 `user_history_not_supplied` 保持原样。未 vendor `professional_parity_closure`。 定向测试:`test_report_longform_gaps2.py` + parity + timing + flexible + api growth = 38 passed。补洞提交 `e4d16b75`。未改 `.gitea/workflows/**`,不提升 main。产品要求本轮只快进 `staging`,不核对部署。