Skip to content

The vocabulary inventory's own citations are unchecked — three name files or symbols that do not exist #600

Description

@serge-ivo

Three citations in the vocabulary inventory point at code that does not exist

state-vocabulary.ts (#593, 927f963) inventories MCP tool descriptions that publish a value set, each entry carrying a reason naming where the vocabulary is defined. Nothing validates those citations, and three are false:

entry cites reality
workers/api/src/lib/tool-listing.ts the file does not exist
lib/connector-consent.ts for granted / n/a / per_call / required zero occurrences of any of the four
lib/coding-engines.ts declares a different four-member set (EngineAuth)

An entry naming a nonexistent file passes the guard exactly as an accurate one does.

Why this matters more than three stale strings

The inventory's purpose is to record why a claim is unbacked, so a future reader can decide whether it can now be backed. A false citation sends that reader to a file that isn't there and, finding nothing, they will reasonably conclude the claim is unbackable — the opposite of what the inventory exists to enable.

It is also the same defect class the guard itself was built to catch: a stated fact that nothing checks. #585 was prose recommending a field the code had replaced; #594 was a legend naming a payload key that was never sent. This is a guard's own metadata with the same problem, which makes it the most ironic instance and arguably the most important — a verification artefact that is itself unverified erodes trust in the verification.

Acceptance criteria

  1. Every reason citation resolves: the file exists and contains the vocabulary named. Fail the guard when it does not.
  2. The three false entries are corrected to their real location, or reclassified if none exists.
  3. Denominator stated per ADR 0002: how many citations were checked, out of how many entries.
  4. Red demonstrated by pointing an entry at a nonexistent path.
  5. Consider whether the same check belongs on other guards that carry explanatory metadata — PINS entries in check-file-size.mjs and the UNBACKED_CLAIMS reasons are the same shape. Do not widen without measuring; say what you found.

Verified vs inferred

  • Verified: all three citations checked against the tree by the agent that reported them; that nothing enforces the reason string.
  • Inferred: that the remaining six citations are accurate. They were not individually checked — three of nine were found false, so the base rate is poor and AC1's guard is what settles it rather than a spot check.

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