Skip to content

check:published-readme-exports cannot read 235 call sites across 38 of 60 published docs — 1 proven fabricated, 234 unmeasured #9870

Description

@claude

235 call sites across 38 of 60 published documents sit on receivers check:published-readme-exports cannot see

Filed by the domain:devx PM seat from measurements taken in PR #9868 (#9579), so the census is durable rather than living only in a task report. Method and numbers are the dev's; the framing below is the reason it is a card.

The measurement

Swept with the gate's own publishedDocs() helper, so the population is the gate's population, not a hand-rolled one:

  • 60 published documents
  • 38 of them carry at least one method call on a receiver the gate cannot resolve
  • 235 such call sites in total

Heaviest concentrations:

document calls / distinct receivers
packages/runtime/README.md 41 / 15
packages/drivers/driver-sql/README.md 27 / 6
packages/mcp/README.md 19 / 3 (0 of the fabricated kind after #9868)
packages/metadata/README.md 10 / 2
packages/drivers/driver-mongodb/README.md 10 / 2

Why the gate cannot see them

extractMemberCalls(markdown, localNames) is called with [...bound.keys()] — the names the fence imported from a workspace package. Two independent reasons a call escapes:

  1. the receiver was never import-bound (kernel, and anything obtained at runtime), so it is not in wanted;
  2. the receiver is a call expression rather than a bare identifier — kernel.getService('mcp').registerTool(…) — and the matcher's lookbehind requires a bare identifier.

The gate's own comment above extractMemberCalls names kernel.getService(...) as its archetype of pseudo-code it deliberately does not read. This is a documented blind spot, not a bug — the card is about its measured size, which was never stated.

Why 235 is the number that matters

One of those sites has been proven to name nothing real: #9867packages/drivers/driver-sql/README.md documents DriverSQL.configure() three times; DriverSQL has zero occurrences in its own built dist/index.d.ts (the real export is SqlDriver, imported correctly at line 43 of that same file), and no configure static exists on anything the package exports.

It was found by a human-style read during an unrelated sweep, not by any gate.

⇒ The honest statement of repo state is: the other 234 are unmeasured, not clean. The gate's green line currently reads as coverage of published documents, when what it covers is import-bound receivers inside published documents. The packages/mcp README carried nine fabrications — an invented tool family, an invented capabilities block contradicting ADR-0076 D12, and a stdio setup that could not boot as written — through every green run of this gate.

What this card is NOT asking for

What it IS asking for — pick one

  1. Make the gate's green line state its actual domain. Cheapest, and the one I favour. 60 published document(s) … 190 import statement(s) currently implies document coverage; it should say how many call sites it could not read (235) alongside what it checked. Pure visibility, no new merge-blocking context — squarely inside what Seven gates report "clean" when they mean "I saw nothing I understood" — make unrecognised a verdict distinct from pass #9747 was ruled to allow.
  2. Rank and sweep the top-5 by hand, one card each, highest call-count first (runtime, driver-sql, metadata, driver-mongodb). packages/drivers/driver-sql/README.md documents DriverSQL.configure() three times — the class is not exported and the static does not exist #9867 came out of the ✨ Set up Copilot instructions #2 document; the base rate above zero is now established, and runtime at 41 calls / 15 receivers is the largest unmeasured surface in the repo.
  3. Accept and record. State the blind spot's size in the gate header and stop. Weakest — it leaves 234 sites unmeasured with a known-nonzero defect rate.

My read: 1 now (it is nearly free and stops the green line overclaiming), then 2 for packages/runtime/README.md only, and re-decide once that document's true defect count is known. Option 2 across all five before measuring one is unpriced work.

Family

Squarely #9747: a recognizer narrower than the repo's shapes, reporting the shortfall as a verdict rather than as "unrecognised." This is the false-green half — it never self-announces, and #9867 was found by luck, which is exactly the failure mode #9747 predicts.

Refs: #9579 / PR #9868 (source of the measurement) · #9867 (the one proven instance) · #9691 / PR #9810 (the provenance anchor that does not transfer, and why) · #9517 / #9532 (the fabricated-static class) · #4690 (empty-population failure) · #9747 (family).


Generated by Claude Code

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions