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
The always-on/gated split is stated wrong in three ways, and no gate checks it
workers/mcp/CLAUDE.md:85:
114 are always registered; 18 are surface-gated (apply=4, repo=3, coding=11+3).
Three separate errors in one sentence:
114 contradicts the constant.workers/mcp/src/tool-count.ts:26 — MCP_TOOL_ALWAYS_ON = 117.
It does not sum to its own total. 114 + 18 = 132, against MCP_TOOL_COUNT = 135 two lines
earlier in the same paragraph.
The parenthetical does not sum to 18. apply 4 + repo 3 + coding "11+3" = 21.
platform-docs/mcp.md states the same split correctly — 117 always-on, 18 gated, with a table
listing 4 apply + 3 repo + 11 coding = 18. So the public doc is right and the doc agents read
while working inside the worker is wrong.
Why it survived
scripts/docs-drift.mjs check 6 compares every documented "N tools" claim to MCP_TOOL_COUNT. 135 is the only number it checks.MCP_TOOL_ALWAYS_ON and MCP_TOOL_GATED are exported right beside it and are compared to nothing, so the split can say
anything. The per-surface table is checked in workers/mcp tests against MCP_TOOL_GATED, but
prose stating the split is not.
This is the same shape as the drift that produced check 6 in the first place: a number that
looked authoritative, in a file nothing measured. The header of docs-drift.mjs records that
history, including a green tick printed over three hand-picked paths while the served site
advertised "~67 tools".
Acceptance criteria
CLAUDE.md:85 states the split correctly and consistently with tool-count.ts.
docs-drift.mjs compares documented always-on / gated claims to MCP_TOOL_ALWAYS_ON and MCP_TOOL_GATED, in the same style as its existing count check.
The success line states its denominator per ADR 0002 — how many split claims were found, in
how many files — and the input set is asserted, not assumed: the check fails if it
collects implausibly few files, because "found nothing" and "found nothing wrong" print the
same tick.
The check goes red on the current text, demonstrated before the text is fixed.
Any file stating the split — workers/mcp/CLAUDE.md, workers/mcp/README.md, platform-docs/mcp.md, store/ served HTML — is in the input set. platform-docs/mcp.md is
currently correct; that is not a reason to exclude it, since agreeing today is exactly how
the .well-known manifest hid in serverInfo.version and server.json disagree, and neither moves when the tool surface does #573.
Verified vs inferred
Verified:CLAUDE.md:85's text, all three arithmetic failures, tool-count.ts:23/26/30, platform-docs/mcp.md's correct split and its 18-row gated table, and that docs-drift.mjs
check 6 references only MCP_TOOL_COUNT.
Inferred: nothing. Every claim is a file read or an addition.
The always-on/gated split is stated wrong in three ways, and no gate checks it
workers/mcp/CLAUDE.md:85:Three separate errors in one sentence:
workers/mcp/src/tool-count.ts:26—MCP_TOOL_ALWAYS_ON = 117.MCP_TOOL_COUNT = 135two linesearlier in the same paragraph.
platform-docs/mcp.mdstates the same split correctly — 117 always-on, 18 gated, with a tablelisting 4 apply + 3 repo + 11 coding = 18. So the public doc is right and the doc agents read
while working inside the worker is wrong.
Why it survived
scripts/docs-drift.mjscheck 6 compares every documented "N tools" claim toMCP_TOOL_COUNT. 135 is the only number it checks.MCP_TOOL_ALWAYS_ONandMCP_TOOL_GATEDare exported right beside it and are compared to nothing, so the split can sayanything. The per-surface table is checked in
workers/mcptests againstMCP_TOOL_GATED, butprose stating the split is not.
This is the same shape as the drift that produced check 6 in the first place: a number that
looked authoritative, in a file nothing measured. The header of
docs-drift.mjsrecords thathistory, including a green tick printed over three hand-picked paths while the served site
advertised "~67 tools".
Acceptance criteria
CLAUDE.md:85states the split correctly and consistently withtool-count.ts.docs-drift.mjscompares documented always-on / gated claims toMCP_TOOL_ALWAYS_ONandMCP_TOOL_GATED, in the same style as its existing count check.how many files — and the input set is asserted, not assumed: the check fails if it
collects implausibly few files, because "found nothing" and "found nothing wrong" print the
same tick.
workers/mcp/CLAUDE.md,workers/mcp/README.md,platform-docs/mcp.md,store/served HTML — is in the input set.platform-docs/mcp.mdiscurrently correct; that is not a reason to exclude it, since agreeing today is exactly how
the
.well-knownmanifest hid in serverInfo.version and server.json disagree, and neither moves when the tool surface does #573.Verified vs inferred
CLAUDE.md:85's text, all three arithmetic failures,tool-count.ts:23/26/30,platform-docs/mcp.md's correct split and its 18-row gated table, and thatdocs-drift.mjscheck 6 references only
MCP_TOOL_COUNT.