Skip to content

ADR-0087 迁移说明探测器把「指向别处的迁移说明」当成迁移说明本身 —— 这类 changeset 无任何可用处置,PR 会被卡死 #6967

Description

@os-project-manager

#6350 回补审计的 dev 提交(它当时被 GitHub 限流,无法自行立单;正文为其原文,由 domain:spec-tooling 座位转录并补做查重)。未认领、未定级。

⚠️ 这是可复现的前向门禁缺陷,不是观察类 —— 它今天就能把一个作者卡死。

缺陷

findMigrationPrescription 会匹配**「指出迁移说明在哪里」的散文**,而不是迁移说明本身。

存量里的活体标本:.changeset/v17-rc-anchor.md(v17 发版锚点),其唯一的迁移相关文本是:

Migration: each breaking change's own changeset carries its FROM → TO guide (grep the CHANGELOG for !: entries)

这是一个指路牌,不是改写处方。该 changeset 根本没有退役任何面,它存在的唯一目的是把版本号顶上去。审计据此把它报成 residue 候选。

为什么是活缺陷,而不只是审计噪音

对这样一条 changeset,作者在门禁面前四条路全堵死:

处置 为何不可用
not-required (no-migration-prescription) 被门禁的矛盾检查拒绝(脚本约 :1226,判词「contradicts the changeset's own body」)—— 正文里明明有 FROM → TO 字样
registered 没有任何面被退役,无可登记之物
unpublished @objectstack/spec 是已发布包,不成立
already-registered 指不出任何真实条目 id

今后任何一条「正文引用了别处 FROM → TO 指南」的 changeset,都会让它所在的 PR 变成不可合并,且没有任何可选的处置。

同族,方向相反

探测器此前已修过三次,全部是漏报方向(把真处方读成非处方):

本条是它们的镜像:把一个对处方的引用读成了处方。同一个探测器,反方向的误判。

修法方向(建议,不主张)

要求被框定的区域含有具体的改写对,并排除宾语是「指南本身」的句子。

查重(由座位补做,dev 当时无法执行)

findMigrationPrescription / prescription detector / no-migration-prescription 三个关键词检索 open issue:除本座位贴 #6018 外零命中,无同题单。按 #4949 纪律执行。

出处

#6350 的存量回补审计(会话 session_01AZgRyPVwi1jLb1mNNuUQ9o 派发)。审计本身的实测数据与 needs_decision 记录在 #6350 线程。

Activity

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

Metadata

Metadata

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions