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

`audit-stale-anchors.mjs`（随包）删掉 `LIVE_TREE_EXEMPTIONS` 里 `docs/CLAUDE_DESIGN_SETUP.md → ./assets/tvu-web-components.js` 那一条（2026-08-28 登记），并在原位留一段 ⛔ 注释说明为什么不能加回来。**判据本身一个字没改** —— 不放宽、不收紧、不动扫描面；`code-span-path` 候选数 2213 → 2211 全部来自被扫文档那两行移进了 fenced block。

背景（这条豁免是「豁免自己会空转」的实证案例）：它的命中与否取决于本仓有没有以 `assets` 结尾的目录，而 `DIR_INDEX_EXCLUDED` 排除了 `playground-dist`/`dist` ⇒ 在**任何干净 checkout（含 CI）上那个目录分量不存在**，那条路径根本不进候选池、豁免无对象 ⇒ shrink-only 判据判它「已失效、请删行」⇒ 本闸在 master 上对干净 checkout **恒红**。本机主仓当时显绿，靠的是一个 gitignored 的未跟踪目录（`.fwvenv/`）恰好让 `assets` 目录分量存在 —— 同一份 master 在两个环境得出相反判决，且判决取决于一个未跟踪目录。

修法按该豁免自己写的 `fix` 落地，且**两个动作是一件事，各自都不成立**（四格对照实测）：`docs/CLAUDE_DESIGN_SETUP.md` 把两条包内路径移进 fenced code block（本闸对 ``` 内整段跳过）**＋** 删掉这条豁免。只删豁免 → 本机把它报成真死链（`:168` FAIL）；只包 fence → 豁免在两个环境都失效、仍要求删行。两者同时做，本机与干净树**都绿**。

对随包消费者的影响：consumer 仓库里没有 `docs/CLAUDE_DESIGN_SETUP.md`，这条豁免对他们从来不命中 ⇒ 行为无变化。留下的两条豁免（`path-a-legacy-host-increment-rule` / `infra-f96-lifecycle-scan-face` 各一条）同样是 DS 自有文档，不影响 consumer 扫描面。
