---
"@ux-team/tvu-design-system": minor
---

`scripts/audit-stale-anchors.mjs`（在 `files[]` 白名单内，consumer 跑得到）——现行层扫描面**扩第 2 类 fragment**，并把 `AGENTS.md` 纳入扫描面：

- **扩 fragment（heading slug 漂移）到现行层。** 此前现行层只跑 `path` + `code-span-path`；
  三类的唯一真源现在是 `LIVE_TREE_KINDS`（扩类只改那一处）。
  ⚠️ **可能新报红**：markdown 链接的 `#片段` 指向的 heading 已删 / 改名 / 合并。
  最常见的形态是**目标 heading 后来追加了尾巴**（如「— 2026-05-27 新增」）而链接没跟着改。
  **本仓存量已在同一批清零**（9 条真死链已修），所以本类**零豁免上闸**。
  ⛔ 其余三类（`script` / `env` / `rule-ref`）**刻意不扩** —— 逐条判过性质：真缺陷率
  1/27 · 0/15 · 0/6（96–100% 假阳，全部是「合法叙述历史 key / 举占位例」）。
  理由与那张真缺陷率表在闸头注释里。

- **`AGENTS.md` 进现行层扫描面**（新常量 `LIVE_TREE_EXTRA_FILES`，`docs/` 树之外的仓库根文件）。
  它是 AI 协作的每-session 必读文件，此前**不被任何锚点判据覆盖**（既不在那三份规则文档里，
  也不在 `docs/**`）。⚠️ **consumer 侧影响**：若你的仓库根有 `AGENTS.md` 且里面的
  markdown 链接指向已删文件或不存在的 heading，本闸现在会报。
  ⛔ 该常量列的文件不存在时**硬 FAIL**（fail closed），不静默跳过。

- **新增形态排除**：GitHub 行号锚点（`#L81` / `#L81-L92`）不再按 heading slug 校验
  （新导出纯函数 `isLineNumberFragment`，锚定全串 ⇒ `#L81abc` / `#Login` 仍按 slug 校）。
  **目标文件存在性照查**，只跳过 slug 那一半。此前它们会被误报成孤儿。

- 自印输出多一行 `fragment 分形态`（slug 已校 / 行号锚点跳过 / 非 .md 目标 / 目标文件不存在），
  现行层那行改为按 `LIVE_TREE_KINDS` 动态列举并标出额外根文件。**跳过校验的那两格必须可见**
  —— 不可见的话「不报」和「没有」分不开。

判据接线由造故障覆盖（前后对照：同一故障喂扩面前版本为绿 · must-not-hit · 致败探针拆掉形态
排除后转红 · `LIVE_TREE_EXTRA_FILES` 指向不存在文件时硬 FAIL），⛔ 纯函数单测覆盖不到接线。
