Skip to content

[finding] ToolExecutionContext.userMessageText cites a BARE ADR-0025 for a cloud decision — the number resolves to this repo's plugin-packaging ADR, a real but unrelated page #18685

Description

@os-litant

Filed by the domain:spec PM seat (session_01LvwGppdonww4zGLWZo5rho), 2026-09-17T14:4xZ, from the card #15937 / PR #18676 round. Handed back rather than folded in: it is a different defect class from that card's, so the bounded in-place-fix exemption does not open. ⛔ No severity asserted, no domain routing — that is triage's.

The finding

packages/spec/src/contracts/ai-service.ts:627, in ToolExecutionContext.userMessageText's docblock, reads:

* Populated by whichever layer owns the agent route (cloud, post-ADR-0025).

AGENTS.md Prime Directive 13, verbatim: an ADR 「lives in the repository whose code it governs」, and cloud decisions are cited 「as cloud ADR-NNNN — never as a bare number, which scripts/check-adr-anchors.mjs resolves against this registry (the two number independently)」.

The citation is in an explicitly cloud context ((cloud, post-ADR-0025)) but spells the number bare.

Measured, on origin/main = 30be2ac0bb

读数 结果
该行存在 packages/spec/src/contracts/ai-service.ts:627,逐字如上
本仓自己的 ADR-0025 docs/adr/0025-plugin-package-distribution.md —— 插件打包分发,与 agent route 无关
cloud ADR- 拼法在本仓是既有惯例(LIT 对照) ✅ 命中多处,含 packages/cli/CHANGELOG.mdpackages/client/src/index.tspackages/client/src/environments-delete-two-step.test.ts

⇒ 读者顺着这条引用走,会落到一篇真实存在但讲的是另一回事的文档上。这比引用一个不存在的号更坏:不存在的号会让人停下,存在的号会让人以为自己读对了。

⚠️ 今天不红,这正是它值得立卡的原因

scripts/check-adr-anchors.mjs 只读 scripts/adr-anchors/ 下的条目,不读源码 docblock,且没有任何条目点名此文件。所以没有任何门禁会报它 —— 它只会静静地把读者引错。

相邻两行现在拼法不一致,这是已知的、有意的

同一 interface 里,PR #18676 新增的 confirmedBlueprintIdentity 成员按规范拼作 cloud ADR-0025,而它正上方的 userMessageText 仍是裸号。那次 PR 的正文已写明此事,以免复审者读成笔误。⇒ 修这条的人会让相邻两行重新一致,⛔ 不要把其中任何一行改成另一行的拼法之前先读 Prime Directive 13:正确的方向是 cloud ADR-0025,⛔ 不是把新成员改回裸号。

接卡人应当先自己证伪的两条

  1. 本仓 ADR-0025 是否真的与 agent route 无关 —— 本席读的是文件名与其标题,⛔ 没有通读全文。若它其实两者都讲,本条的严重度下降。
  2. cloud 侧是否真有一个 ADR-0025 —— 本席无法测:cloud 仓不在本会话的仓范围内。所以「裸号指向了 cloud 的哪一篇」这一半是 NOT MEASURED;已测的是「裸号在本仓解析到哪一篇」。⛔ 不要把前者当已知写进修复说明。

同类面可能不止这一处

本席只测了这一个文件packages/spec/src/contracts/ 乃至更广的 packages/** 里是否还有别的裸号 cloud 引用,未测。接卡人值得先跑一次全仓扫描再决定这是一处修补还是一次清扫。


Generated by Claude Code

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions