Skip to content

fix(docs): architecture.md 里三处指错的行号 —— main 上的 symbol-pin 门本来就是红的 - #1001

Merged
vansin merged 1 commit into
mainfrom
fix/architecture-drifted-pins
Aug 18, 2026
Merged

fix(docs): architecture.md 里三处指错的行号 —— main 上的 symbol-pin 门本来就是红的#1001
vansin merged 1 commit into
mainfrom
fix/architecture-drifted-pins

Conversation

@vansin

@vansin vansin commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

怎么发现的

在本地把 #825 rebase 到 main、拿今天这 21 道门判它。做对照组时发现
干净的 origin/main66029a55)自己就有两道红,跟 #825 无关。这条修其中一道。

$ python3 scripts/check-doc-symbol-pins.py .        # qa.yml:309 的原文调用
SYMBOL-PIN: RED(扫到 15 个 pin,判定 5 个,跳过 10 个,漂移 1 个)
  🔴 docs/architecture.md  锚文本点名 `dashboardReleaseTag`,钉在
     agent-network/bin/cli.ts#L1569,但那一行是:
       //
     `dashboardReleaseTag` 现在在第 1585 行(共 4 处)

🔴 门抓到 1 条,人核同一句话抓到 3 条

另外两条落在它「跳过的 10 个」里:

写的 真值
URL cli.ts#L1569 1585 抓到
锚文本 cli.ts:347 1585 跳过
cli.ts:2386 声称是 sub === "dashboard" 分支 6279 跳过

②最值得说:同一个引用,文本和 URL 写着两个不同的错数字。门只看 URL,而 :347
是渲染出来给人读的那半——只修 URL 会留下用户实际看到的那个错

③ 实测 L2386stat.isFile();真正的分支在
6279: } else if (sub === "dashboard" || sub === "dash") {

顺带把同句那条 grep 断言写精确

原文写「全 source grep /dashboard 0 hit」并链到 server/src/server.ts。实测
server.ts 里有 1 处命中 —— 但它是第 287 行的注释
any future HEAD/Range/dashboard-proxy,不是路由;server/src/index.ts 才是 0 hit。

结论没变(确实没有 /dashboard 路由),但下一个人 grep 到那一处会以为这句话错了,
所以把「0 hit」换成写清楚那 1 处是什么。

结果

SYMBOL-PIN: OK(扫到 15 个 pin,判定 5 个,跳过 10 个,漂移 0 个)   rc=0

doc-claims / doc-source-pins / docs-integrity / doc-symbol-anchors / no-memory-slugs /
mcp-tool-anchors 全部 rc=0。

main 上另一道红不在这条里

.github/scripts/check-docs-site-drift.py2 page(s) behind main
docs-site/docs/deploy/daemon.md 和它的 en 版在 main 上但不在 https://anet.sh 上,
合并后站点没重新部署)。那要跑 vercel --prod,是对外动作,单独报给 Vincent 决定。

发现方式:在本地把 #825 rebase 到 main、拿今天 21 道门判它,做对照组时
发现**干净的 origin/main(66029a55)自己就有两道红**,跟 #825 无关。
这条修其中一道。

    python3 scripts/check-doc-symbol-pins.py .        # qa.yml:309 的原文调用
    SYMBOL-PIN: RED(扫到 15 个 pin,判定 5 个,跳过 10 个,漂移 1 个)
      🔴 docs/architecture.md 锚文本点名 `dashboardReleaseTag`,钉在
         agent-network/bin/cli.ts#L1569,但那一行是: //
         `dashboardReleaseTag` 现在在第 1585 行(共 4 处)

🔴 **门抓到 1 条,人核同一句话抓到 3 条** —— 另外两条落在它「跳过的 10 个」里:

  ① URL `cli.ts#L1569`  → 真值 1585(门抓到的那条)
  ② 锚文本 `cli.ts:347` → 真值 1585
     **同一个引用,文本和 URL 写着两个不同的错数字。** 门只看 URL,
     而 `:347` 是渲染出来给人读的那半 —— 只修 URL 会留下用户实际看到的那个错。
  ③ `cli.ts:2386` 声称是 `sub === "dashboard"` 分支 → L2386 实际是 `stat.isFile()`,
     真正的分支在 **6279**(`} else if (sub === "dashboard" || sub === "dash") {`)

顺带把同句那条 grep 断言写精确。原文是「全 source grep `/dashboard` 0 hit」并链到
`server/src/server.ts` —— 实测 server.ts 里**有 1 处命中**,但它是第 287 行的注释
`any future HEAD/Range/dashboard-proxy`,不是路由;`server/src/index.ts` 才是 0 hit。
结论没变(确实没有 `/dashboard` 路由),但下一个人 grep 到那一处会以为这句话错了,
所以把「0 hit」改成写清楚那 1 处是什么。

改后:`SYMBOL-PIN: OK(扫到 15 个 pin,判定 5 个,跳过 10 个,漂移 0 个)` rc=0。
doc-claims / doc-source-pins / docs-integrity / doc-symbol-anchors /
no-memory-slugs / mcp-tool-anchors 全部 rc=0。

main 上另一道红(`check-docs-site-drift.py`,2 个页面没重新部署)不在这条里 ——
那要跑 `vercel --prod`,是对外动作,单独报。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@vansin

vansin commented Aug 18, 2026

Copy link
Copy Markdown
Contributor Author

⚠️ 这个 PR 的绿不能用来证明这条修好了

check-doc-symbol-pins.py 住在 qa.yml 里(qa.yml:309),而 qa.ymlpaths 是:

server/** · docs/stale-issue-review.md · scripts/check-doc-claims.py ·
tests/test846-doc-claims/** · agent-network/** · agent-node/** ·
tests/qa-*/** · scripts/qa.sh · docs/qa/** · .github/workflows/qa.yml

docs/architecture.md 不在里面。 本 PR 实际跑的 14 个 check 里没有 qa
(只有名字相近的 qa-trigger-coverage,那是另一道门):

action-pins · bun-install-pin · copresence-profile-pin · docs-integrity ·
docs-site-build · doc-symbol-anchors · home-path-baseline · l1-paths-sync ·
no-escaped-comments · no hardcoded from_session ·
no internal [[feedback_*]] slug references · public-script-safety ·
qa-trigger-coverage · query-token-ratchet

修好的证据是本地那次原位运行,不是这里的绿:

$ python3 scripts/check-doc-symbol-pins.py .
SYMBOL-PIN: OK(扫到 15 个 pin,判定 5 个,跳过 10 个,漂移 0 个)
rc=0

🔴 顺带暴露的结构性缺口(不在这条里改)

同一个事实反过来读:docs/architecture.md 的 PR 从来不会触发这道 pin 门。
也就是说这个文件里的行号锚点可以自由漂移而无人拦 —— 这次这三处就是这么漂上去的。

它只在被指向的文件agent-network/**)变动时才有机会红,而那时红的是别人的 PR,
理由却在 architecture.md 里 —— 典型的「门存在、挂上了,但不会在该触发的时候触发」。

改法有两个方向(要选一个,不该顺手做):

  1. docs/**(或至少 docs/architecture.md)加进 qa.yml 的 paths —— 但 qa.yml 很重;
  2. check-doc-symbol-pins.py 单独拆成一个无 paths 过滤的轻 workflow,
    no-memory-slugs / public-script-safety 这些守卫同构。

我倾向 2(轻、且带 paths 的 workflow 做不了 required check)。留作单独一条。

@vansin
vansin merged commit 8937065 into main Aug 18, 2026
14 checks passed
@vansin
vansin deleted the fix/architecture-drifted-pins branch August 18, 2026 13:57
vansin added a commit that referenced this pull request Aug 18, 2026
…#1002)

#1001 里报的那个结构性缺口,按当时说的方向②做,单独一条。

这道门原来是 `qa.yml` 的一个 step(qa.yml:309)。而 qa.yml 的 paths 是:

    server/** · docs/stale-issue-review.md · scripts/check-doc-claims.py ·
    tests/test846-doc-claims/** · agent-network/** · agent-node/** ·
    tests/qa-*/** · scripts/qa.sh · docs/qa/** · .github/workflows/qa.yml

**`docs/architecture.md` 不在里面。** 于是改 architecture.md 的 PR 从来不跑这道
pin 门,那个文件里的行号锚点可以自由漂 —— #1001 一次就抓到三处
(URL 写 `cli.ts#L1569`、锚文本写 `cli.ts:347`、真值 1585;另一处写 `cli.ts:2386`
声称是 `sub === "dashboard"` 分支,真值 6279)。

它只在**被指向的文件**(`agent-network/**`)变动时才有机会红,而那时红的是别人的
PR、理由却在 architecture.md 里。**门存在、也挂上了,但不在该触发的时候触发。**

拆出来而不是往 qa.yml 的 paths 里加 `docs/**`,两个理由:
  - qa.yml 很重(跑多个 docker 构建的测试套件),为一个几百毫秒的 python 检查
    把它整个拉起来不划算;
  - **带 paths 的 workflow 在不匹配的 PR 上不产生 check-run,永远做不了
    required check**(卡在 Expected — Waiting for status)。这道门应当能进 required。
和 no-memory-slugs / public-script-safety 这些守卫保持同构。

验证:
  绿起点   python3 scripts/check-doc-symbol-pins.py .   rc=0
           SYMBOL-PIN: OK(扫到 15 个 pin,判定 5 个,跳过 10 个,漂移 0 个)
  见红     把 #1001 修的那三处退回(git show 8937065^:docs/architecture.md)
           SYMBOL-PIN: RED(… 漂移 1 个)   rc=1
  还原后   rc=0

qa.yml 那一步摘除后留了去向注释,不是静默删掉。
workflow-structure / action-pins / qa-trigger-coverage / l1-paths-sync /
no-escaped-comments 全部 rc=0;job name `doc-symbol-pins` 经核全仓唯一。

覆盖面净增:原来只有命中那 10 条 paths 的 PR 才跑,现在每个 PR 都跑。

Co-authored-by: t <internlmorg@gmail.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant