Skip to content

findLatestReview 支持址B docs/audits/task-review/ 扫描与命名口径(双址规约上游根治) #35

Closed

Description

@Cyning12

问题描述

仓级 npx spec-wave verify 的审查门禁消费面 findLatestReview(src/checks/review-gates.ts:92-114 · @ fad4694)只扫描 docs/harness/reviews/ 与 reviews/ 两址(址A),新审查存档址 docs/audits/task-review/(址B)完全不入扫描面。审查文只落址B 时,verify 误报 missing R<n> review BLOCKED。

真实代码锚点(2026-10-11 实证 @ fad4694)

  • src/checks/review-gates.ts:96:const dirs = [path.join(target, 'docs/harness/reviews'), path.join(target, 'reviews')] —— 扫描面写死两址,址B 不在内
  • :99:命名 RE /^(task_.+?)_audit_R(\d+)_.*\.md$/i —— 不收址B 命名口径 YYYYMMDD_<slug>_r<n>.md(无 task_ 前缀 · 日期前缀 · 小写 _r<n> · slug 为 dash 形)
  • :116-119:findReview 为同一实现源的布尔投影(status / dry-run / verify 消费)—— 同源同治
  • :46:spec 审查扫描(findSpecReview / spec_reviews_retention)同构双址写死 —— 是否一并扩址留评审裁定(址B 目录语义为 task-review · spec 审查暂无址B 落档实证 · 本 issue 倾向不扩 · 登记 follow-up)

误报实证(下游仓 ops-desk-api 两起在案)

  1. task_hitl_auto_resume_claim_race.md(done)—— R1 审查文落 docs/audits/task-review/20261010_hitl-auto-resume-claim-race_r1.md,verify 消费址无档 → 误报 missing R review
  2. B1/B2 两 task(2026-10-11 实证)—— 审查文只落址B → verify 误报 BLOCKED,已裁定复制审查文回址A 过渡

下游过渡纪律(双址复制:必须落址A、可同时落址B)已钉 docs/harness/CONVENTION_review_gate_dual_address_v1_zh.md,存量档零挪零改(址A 133+ 档与址B 既有档原址原内容)。

期望行为

  1. findLatestReview(及 findReview 同源投影)扫描面扩第三址 docs/audits/task-review/
  2. 址B 命名口径 YYYYMMDD_<slug>_r<n>.md 可机读:slug 匹配须过 normalizeSlug 归一(dash ↔ underscore)并去 task_ 前缀;_v<n> 版本后缀剥离同址A 口径
  3. 命名口径按址绑定不串址(址A 两目录只认 task_*_audit_R<n>_* · 址B 只认 YYYYMMDD_<slug>_r<n>)
  4. 跨址合并沿用既有「最高 R 轮取最新」语义(同轮冲突按文件名序 · 确定性)
  5. 址B 目录不存在时零噪音(existsSync continue · 同址A 口径)
  6. 上游自带单测:址B 命中 / 址A+址B 双命中取最高 R / 命名口径不串址 / _v<n> 后缀剥离

方案裁定(下游 task R2 已裁 · 随 PR 交付)

甲:加第三址 + 第二命名 RE(最小面 · 与址B 现档直接兼容)—— 采纳。
乙:可配置扫描目录/命名(通解 · 面大 · 超最小根治诉求)—— 不采纳,留日后需要再议。
丙:统一命名口径、址B 改命名迁档 —— 否决(违下游「存量零挪零改」钉死契约)。

下游 task:ops-desk-api docs/tasks/active/task_verify-upstream-dual-address.md(收口条件:上游发版后钉版 bump + 实证「址B 单落即绿」+ 解除双址复制强制纪律)。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions