stacklok / stacklok/toolhive

docs/: fifteen paths name files and directories that are not in the tree

Open
#6,387 1 comment 0 reactions 1 assignee View on GitHub

@melbinjp is already working on this.

Since Aug 24, 2026.

Dominant language
Go
Stars
2.2k
Forks
300
Avg merge
1d 15h
Merged PRs (30d)
184

Description

Fifteen paths in docs/ name files or directories that are not in the tree. Verified
against main at 0b8acf26 immediately before opening: every destination confirmed
present, every source confirmed absent, every commit read.

Opening as an issue rather than a pull request because CONTRIBUTING asks for one first, and
because only five of the fifteen have an answer I can give from outside.

Five are plain renames, and I can send them as a PR whenever you want

document says actually
docs/server/README.md:27 docs/swagger.json docs/server/swagger.json
docs/server/README.md:28 docs/swagger.yaml docs/server/swagger.yaml
docs/server/README.md:29 docs/docs.go docs/server/docs.go
docs/operator/virtualmcpserver-observability.md:27 pkg/vmcp/server/telemetry.go pkg/vmcp/internal/backendtelemetry/backendtelemetry.go
docs/telemetry-migration-guide.md:250 pkg/vmcp/server/telemetry.go same

The first three moved together in 0da4f9a8 ("refactor: openapi, add readme", #448) and the
README that names them is itself in docs/server/ - the three files are its own
neighbours, and it points one directory up. The other two moved in 87fa2ac8 ("Implement
stateless core VMCP constructor", #5457). Git recorded all five as renames.

Five lines, three files, no prose changes. Sent as #6388, DCO-signed, so this half needs no decision from you beyond a review.

Eight need a judgement I should not make from outside

Grouped by what the deleting commit says it was doing, because the right fix differs.

Moved to toolhive-core, so the replacement is a cross-repository reference rather than a
path:

  • docs/arch/03-transport-architecture.md:763 names pkg/permissions/profile.go, gone in
    80c3133f ("Move permissions and registry packages from toolhive to toolhive-core", #3912).
  • docs/error-handling.md:62 names pkg/errors/errors.go as holding WithCode, Code and
    CodedError, gone in 2e5ac005 ("Adopt httperr from toolhive-core for HTTP error
    handling", #3551). The four neighbouring bullets in that list are all still correct.

Removed as dead code, so the line probably goes rather than moves:

  • docs/arch/10-virtual-mcp-architecture.md:934 and docs/arch/vmcp-library.md:58 both name
    pkg/vmcp/discovery, removed in 6132d91b ("Remove dead vMCP discovery seam and default
    router", #5627).
  • docs/arch/10-virtual-mcp-architecture.md:948 names
    pkg/vmcp/server/backend_enrichment.go, removed in 799b4222 ("Remove dead legacy
    session-registration path", #5622).

A feature that no longer exists:

  • docs/arch/12-skills-system.md:553 has a table row "Lock file rollout gate |
    pkg/skills/feature_gate.go"
    , removed in 78541159 ("Sign pushes by default and remove
    the lock feature gate", #6139). The other nine rows of that table are all still correct.

The registry section, which is half-updated and is the one worth a proper look:

  • docs/arch/06-registry-system.md:922 names pkg/registry/schema_validation.go under
    Validation, gone in 80c3133f. Three lines above it the same paragraph already says
    the schemas are "published in stacklok/toolhive-core under registry/types/data/" - so
    the block knows about the move and the validation line did not follow. Worth noting:
    pkg/registry/schema_validation_test.go is still there and still runs as
    package registry, so the behaviour did not leave, only the filename.
  • docs/arch/06-registry-system.md:863 names pkg/registry/types.go for "Provenance type
    definitions"
    , gone in 8739ec42 ("Add registry format converters and support for the
    Official MCP Registry", #2469). The only type Provenance struct in the tree today is
    pkg/skills/lockfile/lockfile.go:98, which is the skills lockfile and looks like a
    different thing.

Two whole directories, not just files

  • docs/arch/06-registry-system.md:864, the line directly under the Provenance one, names
    pkg/container/verifier/ for Sigstore and cosign verification. It went in 7095e8e1
    ("Remove /verifier in favour of one coming from toolhive-core", #3929) - so that paragraph
    is three implementation bullets and two of the three are gone, both to the same place.
  • docs/arch/10-virtual-mcp-architecture.md:80 reads "Implementation: pkg/vmcp/
    (discovery: pkg/vmcp/discovery/, routing: pkg/vmcp/router/)"
    . pkg/vmcp/router/ is
    there; pkg/vmcp/discovery/ went in 6132d91b with the dead seam above.

Worth saying plainly: docproof was silent on both of these until an hour ago. It skips a
documented directory when the parent is tracked, because git stores files rather than
directories and an empty one cannot be told from an absent one - and pkg/container is very
much alive. Finding pkg/container/verifier/ by hand while checking the rest is what showed
the guard was too broad. It is fixed and measured now, and it is mentioned here so you know
which of these came from the tool and which came from reading.

What found this

Found by docproof, a documentation checker that
resolves documented paths against the repository and its git history. It read 189 of this
project's 247 documentation files, 76%; the 58 it did not read are under .claude/,
deploy/, .github/, cmd/ and skills/, which are outside its default scope of
top-level files plus doc/ and docs/.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.