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
[finding] the agent.tools retirement's author-facing citation is ADR-0064 — Proposed, cloud-owned and part-superseded — while ADR-0109 (Accepted, implemented) is what the release notes lead with #16927
Filed by the domain:cli execution PM seat (session session_015QE8qk46e5CHJxyQEUjbf8, seat post #6024) out of the os explain catalog family (#15170–#15176 / PR #16924). Surfaced by that PR's delivering seat as a conflict it declined to chase inside a catalog PR; re-measured here before filing.
⛔ Not graded, not routed, no domain:* label, no assignee — that is triage's. ⛔ And ⛔ nothing here re-opens the retirement itself: agent.tools is retired, the rejection is correct, and the behaviour is not in question. This card is about which decision the author is pointed at.
The three ADRs, read at origin/main@9a89a0040d
ADR
title
status line, verbatim
ADR-0064
Tool scoping — an agent's tools are exactly its skills' tools
⚠️Proposed (2026-06-22) — cloud-owned (2026-07-16 audit): "the tool-resolution scoping, global fall-through removal, and bind-time affinity error live in cloud service-ai and are not verifiable in this repo." Its header additionally carries 🔶 Cloud-owned — superseded in part by cloud ADR-0025 (2026-06-25)
ADR-0109
The AI tool authoring model — the default third-party path needs no tool records
⭐ Accepted — implemented (Phase 1) (2026-07-28), with in-repo evidence named in the status block (platform-tool-names.ts, validate-ai-tool-references.ts wired into REFERENCE_INTEGRITY_RULES). Builds on ADR-0064
ADR-0106
metadata-plane FLS object-schema masking
Accepted — ⛔ unrelated; it appears here only because it was mis-cited for this fact in a dispatch word and two triage comments (corrected on #15170, 5588724679)
The asymmetry
The author sees ADR-0064.packages/spec/src/ai/agent.zod.ts:237 builds the rejection message with "(ADR-0064), so move each reference into a skill: a platform tool by its …". packages/spec/src/conversions/registry.ts:786 says the same: "agent key 'tools' removed — declare capability in a skill (ADR-0064, #3894)". The pin at packages/spec/src/ai/agent.test.ts:69 is titled "agent.tools retirement (ADR-0064 / #3820, tombstoned in #3894)".
The release notes lead with ADR-0109.content/docs/releases/v17.mdx:719 — "agent.tools[] is removed — capability comes from skills (ADR-0109, #3820)" — and only then explains the invariant via ADR-0064 at :721.
⇒ One enforced retirement, two citations, and the one an author receives at the moment of failure is the weaker of the two: Proposed rather than Accepted, cloud-owned rather than in-repo, and marked part-superseded by a cloud ADR this repo cannot open.
Reach — measured, so nobody re-derives it
ADR-0064 is cited in 12 files across content/docs, docs/adr and docs/audits, in addition to the three packages/spec sites above:
⚠️A count is not a work list. Some of those are legitimately about ADR-0064 as a design record (ADR-0109's own Builds on line, the audit) and must not be retargeted. ⛔ This is not a sed job — #11501 drew exactly that line for a different retarget ("a classification pass, not a sed") and it applies here.
Precedent, so this is filed as an instance rather than as news
⭐ #5063 (closed) is the identical defect class one ADR over: 「ADR-0076 的状态行仍是 Proposed,但它已被 AGENTS.md、runtime 代码注释与多个在飞 issue 当作生效决定引用」. ⭐ #11501 (closed) is the remedy shape: retargeting general-rule citations from one ADR to another as a classification pass. Whoever takes this should read both before choosing an approach.
What a fix has to answer first — ⛔ not answered here
The two obvious routes are not equivalent and neither is mine to pick:
Move ADR-0064's status to reflect that the framework half is in fact enforced in this repo, or record on it which half is. ⚠️ That is an ADR status change and touches a cloud-owned record — the maintainer's floor, ⛔ not a lane decision.
⚠️ There is a third possibility that should be checked before either: the two ADRs may be citing different halves of one fact — ADR-0064 the invariant (an agent's tool set is its skills' tools) and ADR-0109 the authoring model that made it real — in which case the rejection message quoting the invariant's ADR is defensible and the fix is one clarifying clause, not a retarget. ⛔ Not measured here.
Dedupe — method stated
search_issues over this repo for the ADR-citation family returned 9 results with the positive control firing (the class is real and populated: #5063, #11501, #7866, #12867 all came back). None is this instance — no open or closed card names ADR-0064's status against the agent.tools rejection. Nearest neighbours are #5063 (same class, ADR-0076) and #11501 (same remedy shape, ADR-0057→ADR-0124), both closed.
That PR is the os explain catalog (packages/cli), and the citation lives in packages/spec plus a dozen docs pages. The delivering seat carried the zod message's own number into the catalog so that an author who hits the rejection and then runs os explain agent sees one number rather than two — ⭐ the right call for that PR, and the reason this is a separate card rather than a rider on it.
Filed by the
domain:cliexecution PM seat (sessionsession_015QE8qk46e5CHJxyQEUjbf8, seat post #6024) out of theos explaincatalog family (#15170–#15176 / PR #16924). Surfaced by that PR's delivering seat as a conflict it declined to chase inside a catalog PR; re-measured here before filing.⛔ Not graded, not routed, no
domain:*label, no assignee — that is triage's. ⛔ And ⛔ nothing here re-opens the retirement itself:agent.toolsis retired, the rejection is correct, and the behaviour is not in question. This card is about which decision the author is pointed at.The three ADRs, read at
origin/main@9a89a0040dservice-aiand are not verifiable in this repo." Its header additionally carries 🔶 Cloud-owned — superseded in part by cloud ADR-0025 (2026-06-25)platform-tool-names.ts,validate-ai-tool-references.tswired intoREFERENCE_INTEGRITY_RULES). Builds on ADR-00645588724679)The asymmetry
The author sees ADR-0064.
packages/spec/src/ai/agent.zod.ts:237builds the rejection message with "(ADR-0064), so move each reference into a skill: a platform tool by its …".packages/spec/src/conversions/registry.ts:786says the same: "agent key 'tools' removed — declare capability in a skill (ADR-0064, #3894)". The pin atpackages/spec/src/ai/agent.test.ts:69is titled "agent.tools retirement (ADR-0064 / #3820, tombstoned in #3894)".The release notes lead with ADR-0109.
content/docs/releases/v17.mdx:719— "agent.tools[]is removed — capability comes from skills (ADR-0109, #3820)" — and only then explains the invariant via ADR-0064 at:721.⇒ One enforced retirement, two citations, and the one an author receives at the moment of failure is the weaker of the two: Proposed rather than Accepted, cloud-owned rather than in-repo, and marked part-superseded by a cloud ADR this repo cannot open.
Reach — measured, so nobody re-derives it
ADR-0064is cited in 12 files acrosscontent/docs,docs/adranddocs/audits, in addition to the threepackages/specsites above:Builds online, the audit) and must not be retargeted. ⛔ This is not asedjob — #11501 drew exactly that line for a different retarget ("a classification pass, not a sed") and it applies here.Precedent, so this is filed as an instance rather than as news
⭐ #5063 (closed) is the identical defect class one ADR over: 「ADR-0076 的状态行仍是
Proposed,但它已被 AGENTS.md、runtime 代码注释与多个在飞 issue 当作生效决定引用」. ⭐ #11501 (closed) is the remedy shape: retargeting general-rule citations from one ADR to another as a classification pass. Whoever takes this should read both before choosing an approach.What a fix has to answer first — ⛔ not answered here
The two obvious routes are not equivalent and neither is mine to pick:
ADR-0057 D10citations toADR-0124 D1— a classification pass, not a sed #11501 shape, and consistent with what the release notes already do.Dedupe — method stated
search_issuesover this repo for the ADR-citation family returned 9 results with the positive control firing (the class is real and populated: #5063, #11501, #7866, #12867 all came back). None is this instance — no open or closed card names ADR-0064's status against theagent.toolsrejection. Nearest neighbours are #5063 (same class, ADR-0076) and #11501 (same remedy shape, ADR-0057→ADR-0124), both closed.Why it was not folded into PR #16924
That PR is the
os explaincatalog (packages/cli), and the citation lives inpackages/specplus a dozen docs pages. The delivering seat carried the zod message's own number into the catalog so that an author who hits the rejection and then runsos explain agentsees one number rather than two — ⭐ the right call for that PR, and the reason this is a separate card rather than a rider on it.