You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
unknown-key-strictness-automation-batch11.md、unknown-key-strictness-ui-batch13.md、unknown-key-strictness-ui-batch16.md、view-subblock-strictness-batch18.md(| You wrote | Where | Write instead |)
| Was | Now |
adr-0114-field-error-catalog.md
| you wrote | on a … | now |
rare-jars-shave.md
这是一条真实的房规(4 种拼法、11 条声明为 breaking 的 changeset),不是某一条 changeset 的怪癖 —— 和 #6419 当年认定 ## FROM → TO 是房规的判据同形。
二、由标签行而非标题起框(4 条 / 其中 2 条声明 breaking)
**Migration.** 独占一行,紧跟一张改写表。今天只有标题能打开框架区域,标签行不能:
data-driver-find-stream-retired.md —— **Migration.** + | Wrote | Write instead |,正文写着 for await (const row of driver.findStream(obj, q)) 改成分页调 driver.find(...);
在实现 #6497(PR #6558)时测出来的范围外发现。未认领。
#6497 让
findMigrationPrescription()读懂了迁移框架标题所辖区域内的无箭头改写表(新分支framed-table,+4 / −0,误报 0)。但「作者把改写框起来了、探测器读不到那个框」这一类,在 #6497 之后还剩两种拼写,都是在同一次全量测量里量出来的,数字口径与 #6558 一致(存量 1384 条 changeset、241 条声明 breaking、分支 3 落地之后)。一、只由表格自己的表头单元格起框(14 条 / 其中 11 条声明 breaking)
正文里没有
## Migration这类标题,框是表头行自己给的,而这些词都不在现有的MIGRATION_FRAMING_RE里:| Wrote | Write instead |data-driver-find-stream-retired.md、storage-service-list-retired.md| Removed | Live replacement |prune-dead-audit-config-cluster.md、prune-dead-capabilities-descriptor.md、prune-orphan-featureflag-schema.md| you wrote | write instead | …unknown-key-strictness-automation-batch11.md、unknown-key-strictness-ui-batch13.md、unknown-key-strictness-ui-batch16.md、view-subblock-strictness-batch18.md(| You wrote | Where | Write instead |)| Was | Now |adr-0114-field-error-catalog.md| you wrote | on a … | now |rare-jars-shave.md这是一条真实的房规(4 种拼法、11 条声明为 breaking 的 changeset),不是某一条 changeset 的怪癖 —— 和 #6419 当年认定
## FROM → TO是房规的判据同形。二、由标签行而非标题起框(4 条 / 其中 2 条声明 breaking)
**Migration.**独占一行,紧跟一张改写表。今天只有标题能打开框架区域,标签行不能:data-driver-find-stream-retired.md——**Migration.**+| Wrote | Write instead |,正文写着for await (const row of driver.findStream(obj, q))改成分页调driver.find(...);storage-service-list-retired.md—— 同形。(两条与第一类重叠;两类并集是 11 条声明为 breaking 的 changeset。)
影响
与 #6497 完全同类:门禁是前向的,这条盲区也是前向的 —— 今后任何 PR 只要把迁移说明写成
| Wrote | Write instead |这样的表、而标题里不带迁移词,就可以合法地写下not-required (no-migration-prescription),门禁会批准这条自相矛盾的豁免。存量侧,这 11 条今天仍落在--audit-stock的exempt-no-prescription桶里,够不着残差面。为什么 #6558 没有顺手做掉
刻意不做,理由是可测量的,不是省事:
no-migration-prescription矛盾检查匹配的是占位符FROM/TO,不是真实处方 —— 写得越好的处方越照不到 #6419 与 #6148 门禁的迁移说明探测器读不到「无箭头的两列改写表」——not-required (no-migration-prescription)可被合法豁免绕过,存量已见 4 条同形 #6497 两次都遵守的次序。filter-icontains-and-regex-retirement.md,不声明 breaking),却带来 1 条真实误报 ——rate-limit-config-dual-source-c9.md的表是两个类型的对照矩阵,只因表头里有(renamed)一词被命中,而那个词在给列命名,不在框改写。fix(ci): ADR-0087 迁移说明探测器读得懂「无箭头的改写表」(#6497) #6558 因此拒绝了这条捷径。要打败的数字(#6558 落地后重测)
old→new清单/表 132 条 / 21 breaking —— 那是锚定框架的诚实残差,不是本单的目标,放宽到那里需要的是另一场论证。这三组数字已写进
scripts/check-adr-0087-registration.mjs的「残余盲区」自述(#6558),此处只是把它们立成可分诊的卡片。复现:
node scripts/check-adr-0087-registration.mjs --audit-stock,上面 11 条均不出现在残差列表里。Generated by Claude Code