> 本任务属于 Epic #23。共享上下文(整体目标、Agent Execution Contract、Non-goals、回归基线)见 #23。 > 依赖:**blocked by #25**(需 PR-3 的四个检查先落地)。 > 代码定位按当前仓库版本核对;若行号漂移,以函数名 / 字段名 / 挂载点语义为准。 完成本 PR 需遵守 Epic #23 的 Agent Execution Contract 与 Test Execution Protocol:先写失败测试与反例夹具 → 最小实现 → 跑里程碑测试 → 跑回归基线。PR 描述需列出:changed files / tests added / tests run / before-after / non-goals。 --- ## 目标 把 PR-3 的四个检查接进真渲染门禁:任一命中 → 禁止出稿。 ## Allowed changes - `agents/paper_orchestra_pipeline.py:1843` 附近的渲染门禁接入逻辑 - M3 integration tests - PR-4 fixtures ## Forbidden changes - 不修改 `contracts/pipeline.py:626 require_submission_ready()` - 不绕开既有 `latex_sanity_check` - 不只返回第一个 hit;多处命中必须全部列出 - 不改变现有 `placeholder` 命中行为 ## 改动点(挂载点是 1843,不是 require_submission_ready) - 正确挂载点 = `agents/paper_orchestra_pipeline.py:1843` 的 `latex_sanity_check(main_tex)` 处 —— 这里 `main_tex`(已渲染)在 scope,且紧接 `if not latex_sanity_report.get("ok"): ...` 已是阻断逻辑。 - 把四个检查接入此处:任一命中 → `latex_sanity_report["ok"]=False` 且 `hits` 写入 report → 既有阻断生效,禁止出稿。 - 非破坏:不动 `require_submission_ready()`(证据侧门禁)与现有 `latex_sanity_check` 既有词表行为;只新增展示侧检查项与 hits 字段。 ## 验收用例(集成) | # | 输入 | 期望输出 | |---|---|---| | M3-1 | 稿件含 `Table ??` | `latex_sanity_report.ok=False`,hits 含 "unresolved reference" + 行号 | | M3-2 | 稿件含复读句 ×4 | `ok=False`,hits 含 "boilerplate repetition" | | M3-3 | 稿件干净 | `ok=True`,放行 | | M3-4(回归) | 触发现有 `placeholder` / `FORBIDDEN_LATEX_TERMS` 命中 | 维持原有 `ok=False`(证明未破坏既有门禁) | | M3-5 | 多处命中(未解析 + 脚手架) | hits 列出**全部**命中项,不只第一个 | ## DoD M3-1~5 全绿(挂在 1843),含回归 M3-4;回归基线 `tests/test_pipeline_contracts.py`、`tests/test_vnext_manuscript.py` 全绿;收敛分支、未确认不强推。 </content>
Activity
Protocol-zero-0 commentedon Jun 4, 2026
Completed in PR #29 on branch
epic-23-evidence-ledger.Changed files:
agents/paper_orchestra_pipeline.pytests/test_vnext_manuscript.pyTests added:
Table ??.placeholdergate remains blocking.main_texplusstate.method_name.Commands actually run:
pytest tests/test_pipeline_contracts.py->12 passedpytest tests/test_vnext_manuscript.py->5 passedpytest tests/test_vnext_manuscript.py->10 passedpytest tests/test_pipeline_contracts.py->12 passedpytest tests/test_latex_sanity_m2.py tests/test_vnext_manuscript.py->18 passedNon-goals respected:
contracts/pipeline.pyorrequire_submission_ready().latex_sanity_check.Complete Epic #23 presentation evidence gates (#29)
Protocol-zero-0 commentedon Jun 6, 2026
Done via #29 (squash-merged into master 2026-06-06). 验收用例与回归基线均在 PR #29 全绿。