Skip to content

[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

Description

@os-project-manager

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:

content/docs/ai/agents.mdx                    4
content/docs/ai/tools.mdx                     2
content/docs/getting-started/common-patterns.mdx  1
content/docs/references/ai/agent.mdx          1
content/docs/releases/v17.mdx                 1
docs/adr/0063-…                               4
docs/adr/0064-…                               1
docs/adr/0080-…                               1
docs/adr/0084-…                               1
docs/adr/0109-…                               1
docs/adr/PRIORITIZATION.md                    1
docs/audits/2026-06-ask-build-agent-development-assessment.md  7

⚠️ 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:

  1. Retarget the author-facing citations to ADR-0109, leaving design-record references to ADR-0064 intact — the Retarget the general-rule ADR-0057 D10 citations to ADR-0124 D1 — a classification pass, not a sed #11501 shape, and consistent with what the release notes already do.
  2. 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.

Why it was not folded into PR #16924

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.

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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions