Skip to content

workers/mcp/CLAUDE.md states the always-on/gated split three different wrong ways, unguarded #575

Description

@serge-ivo

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:

  1. 114 contradicts the constant. workers/mcp/src/tool-count.ts:26MCP_TOOL_ALWAYS_ON = 117.
  2. It does not sum to its own total. 114 + 18 = 132, against MCP_TOOL_COUNT = 135 two lines
    earlier in the same paragraph.
  3. 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

  1. CLAUDE.md:85 states the split correctly and consistently with tool-count.ts.
  2. 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.
  3. 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.
  4. The check goes red on the current text, demonstrated before the text is fixed.
  5. 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.

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

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions