Skip to content

[PR-4] M3 接入渲染门禁(paper_orchestra_pipeline.py:1843) #28

@justDance-everybody

Description

@justDance-everybody

本任务属于 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:1843latex_sanity_check(main_tex) 处 —— 这里 main_tex(已渲染)在 scope,且紧接 if not latex_sanity_report.get("ok"): ... 已是阻断逻辑。
  • 把四个检查接入此处:任一命中 → latex_sanity_report["ok"]=Falsehits 写入 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.pytests/test_vnext_manuscript.py 全绿;收敛分支、未确认不强推。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions