Skip to content

docs: #2380 fix stale README documentation links and keeperhub/ paths - #2385

Merged
suisuss merged 2 commits into
KeeperHub:stagingfrom
subheeksh5599:docs/2380-readme-link-paths
Sep 14, 2026
Merged

suisuss merged 2 commits into
KeeperHub:stagingfrom
subheeksh5599:docs/2380-readme-link-paths

Conversation

@subheeksh5599

Copy link
Copy Markdown
Contributor

Fixes #2380.

Repoints the three Documentation links that 404 on staging, and drops the keeperhub/ prefix from the three places that carry it. There is no top-level keeperhub/ directory in the tree.

Documentation links (all three returned 404):

  • docs/getting-started/quickstart.md -> docs/getting-started/index.md
  • docs/intro/concepts.md -> docs/concepts.md (there is no docs/intro/ folder; the page is at the docs root)
  • docs/workflows/examples.md -> docs/workflows/index.md (the workflows folder has creating, templating, schema-reference, import-export, hub and marketplace)

The replacement targets match the docs nav: docs/_meta.ts maps concepts to "Core Concepts" and docs/getting-started/_meta.ts lists index as the Overview.

keeperhub/ prefix (nonexistent path), three places:

  • README.md:197 Services table, App source: app/, keeperhub/ -> app/. The App is the Next.js application and app/ is its directory; the second path never existed.
  • README.md:228 Plugin System sentence: `keeperhub/plugins/` -> `plugins/`
  • README.md:262 Metrics Reference link: keeperhub/lib/metrics/METRICS_REFERENCE.md -> lib/metrics/METRICS_REFERENCE.md (the file exists at that path)

Verification on the branch:

  • All seven relative links in the README resolve against the tree (checked each with git cat-file -e; the four that were broken now resolve, the three that were already fine are unchanged).
  • No keeperhub/ reference remains in the README outside the real keeperhub-* service directories.
  • npx tsx scripts/check-api-docs-routes.ts reports no docs-vs-code drift.
  • Type-check and lint are unaffected (README only; Biome does not lint markdown).

Docs only, no code change.

@joelorzet

Copy link
Copy Markdown
Contributor

@subheeksh5599 the change itself is correct. I checked every path: all six new targets exist on staging, and all four old ones return 404.

old new
keeperhub/plugins/ plugins/
keeperhub/lib/metrics/METRICS_REFERENCE.md lib/metrics/METRICS_REFERENCE.md
docs/getting-started/quickstart.md docs/getting-started/index.md
docs/intro/concepts.md docs/concepts.md
docs/workflows/examples.md docs/workflows/index.md

The lint failure is not from your change. It reads:

specs/api-coverage.json is stale. Run 'pnpm check:api-docs' locally and commit the result.

with a diff on app/api/features/route.ts sourced from docs/api/workflows.md. This PR only touches README.md. That file moved when #2362 merged and added the /api/features documentation, which pushed every line number after it down, so the copy on this branch is behind.

Merging staging is the whole fix. I tried it locally and there are no conflicts, and pnpm check:api-docs then reports "No docs-vs-code drift detected" with nothing left to regenerate. So:

git fetch upstream staging
git merge upstream/staging
git push

I would normally have pushed that for you rather than sending you round again, as I have on other PRs today. I cannot here: your subheeksh5599/keeperhub is a standalone repository rather than a fork of KeeperHub/keeperhub, and GitHub only honours "allow edits by maintainers" when the branch lives in a fork. Worth knowing for future contributions, since forking instead would let a maintainer clear this kind of drift without a round trip.

Nothing else outstanding from me. Push the merge and this is done.

@subheeksh5599

Copy link
Copy Markdown
Contributor Author

Merged staging as you prescribed and pushed (1c0f4eaf2). No conflicts.

Reproduced the CI sequence locally on the merged head:

$ npx tsx scripts/check-api-docs-routes.ts
No docs-vs-code drift detected.          # exit 0

$ git diff --exit-code specs/api-coverage.json
                                          # no diff, nothing to regenerate

The README change is unchanged by the merge; all seven relative links still resolve and no keeperhub/ reference remains.

One correction that should save you the round trip next time: the PRs are not coming from subheeksh5599/keeperhub. All four open ones (#2302, #2385, #2386, #2387) come from subheeksh5599/keeperhub-pr, which is a fork with KeeperHub/keeperhub as its parent, and maintainer_can_modify is true on them. The standalone subheeksh5599/keeperhub exists but no PR points at it. So you can push drift-clearing commits to these branches directly whenever it is quicker than sending me round.

Nothing else outstanding on this one.

@suisuss suisuss left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What this changes

Six lines in README.md, in three independent clusters. The Services table App row drops keeperhub/ and keeps app/ (:197); the keeperhub/ prefix comes off the plugins sentence (:228) and the Metrics Reference link (:262); and three Documentation links move to docs/getting-started/index.md, docs/concepts.md and docs/workflows/index.md.

I checked all seven paths against staging rather than the three the description names. Every path removed was a real 404 - keeperhub/, keeperhub/plugins/, keeperhub/lib/metrics/METRICS_REFERENCE.md, docs/getting-started/quickstart.md, docs/intro/concepts.md, docs/workflows/examples.md. Every path introduced resolves. The untouched links in the same file all still resolve, and keeperhub/ now appears nowhere in the README.

Does it match the description

Matches. No code, config, CI, workflow or dependency change - one Markdown file.

Mechanical - actionable as-is

  • README.md:270 - [Workflow Examples](docs/workflows/index.md) resolves, but that page is titled "Workflows" and is a conceptual overview of the builder. No examples page exists anywhere under docs/; docs/workflows/ holds creating.md, hub.md, import-export.md, index.md, marketplace.md, schema-reference.md and templating.md. -> A reader following "Workflow Examples" gets an overview and no examples, which is the same broken promise as the 404, one step later. -> Retitle the link to match the destination, or point it at docs/workflows/templating.md, whichever you think a first-time reader wants.

  • README.md:268 - same shape, lower cost: [Quick Start Guide] now lands on a page titled "Getting Started" that routes to four per-surface quickstarts. It is the closest target that exists; the label is what is imprecise.

With the team

Nothing.

Verdict

Changes requested on the two link labels only - every path this touches is verified correct on staging, and the keeperhub/ prefix is now fully gone from the README.

One thing outside this PR, so not yours to fix unless you want it: the same stale prefix survives in plugins/safe/index.ts:59 and plugins/cowswap/index.ts:211, where it sits inside runtime error messages that tell the reader to import keeperhub/protocols, and across five files under specs/. The two error strings are the ones that will actually misdirect somebody.

@suisuss suisuss added the changes-requested Triage: reviewed, changes needed from the contributor label Sep 11, 2026
Six paths in README.md were dead and three link labels did not match the page
they open.

Drops the stale keeperhub/ prefix from three paths that resolve inside this
repository (the Services table App row, the plugins sentence, the Metrics
Reference link) and points the three documentation links at pages that exist:
docs/getting-started/index.md, docs/concepts.md and docs/workflows/index.md.

Retitles the four documentation links to the title of the page each opens, so a
reader following the list gets the page they were promised. There is no examples
page under docs/workflows; the page that exists is the builder overview.

Review round 1 (joelorzet): the two label mismatches at README:268 and README:270,
plus the same shape at README:271 (API Reference opening a page titled API
Overview).
@subheeksh5599

Copy link
Copy Markdown
Contributor Author

Round 1 addressed (7442f759f, rebuilt on current staging).

The two label mismatches.

  • README:270 Workflow Examples now reads Workflows, matching the title of the page it opens. There is no examples page anywhere under docs/, so the label was doing the promising rather than the path.
  • README:268 Quick Start Guide now reads Getting Started, matching its destination.

One more of the same shape, which I found while checking the rest of the list. README:271 said API Reference and opened a page titled API Overview. Every entry in that list now carries the title of the page it opens: Getting Started, Core Concepts, Workflows, API Overview, Security Best Practices. Say the word if you would rather keep the reference wording there and I will revert that one line.

Verified, not assumed. All seven relative links in README.md now resolve (docs/api/index.md, lib/metrics/METRICS_REFERENCE.md, docs/getting-started/index.md, docs/concepts.md, docs/workflows/index.md, the second docs/api/index.md, docs/practices/security.md), and keeperhub/ appears nowhere in the file. npx tsx scripts/check-api-docs-routes.ts reports no docs-vs-code drift and specs/api-coverage.json is unchanged, so nothing needs regenerating.

On the off-PR note. The two runtime error strings in plugins/safe/index.ts:59 and plugins/cowswap/index.ts:211 are worth fixing and I would rather not bury them in a README PR. I will open them as their own change unless you want them here. The five specs/ files are internal notes and I am leaving them alone.

@suisuss suisuss left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both items land, and you found a third of the same shape I had missed - README.md:271 "API Reference" against a page titled "API Overview".

I re-verified every path in the file rather than the two I raised. Nineteen references: seven relative markdown links and twelve backticked paths, all resolve on staging, none regressed, and keeperhub/ appears nowhere. All five Documentation links now carry the exact frontmatter title of the page they open - Getting Started, Core Concepts, Workflows, API Overview, Security Best Practices. Scope stayed inside the README; none of the plugin error strings or specs/ files moved, which is the right call for a separate change.

Retitling rather than repointing at docs/workflows/templating.md was the better of the two options I gave you: that page is a schema reference and would not have been an examples page either.

Mechanical - actionable as-is

  • README.md:251 - the Endpoints section still reads [API Documentation](docs/api/index.md), a third label for the page now called "API Overview" twelve lines below. It resolves, so this is consistency rather than a defect, and it is outside the list your claim was scoped to.

With the team

Nothing.

Verdict

Approve - every path in the file verified against staging, both items settled, and the link labels now match their destinations.

One correction to what I told you, since it will matter for the follow-up: I said the residue outside the README was two plugin error strings and five specs/ files. Searching the literal keeperhub/plugins/ gives ten files, and widening to keeperhub/lib/ and keeperhub/components/ reaches far more. Two of them are not notes: scripts/token-audit.js:32-34 scans keeperhub/components, keeperhub/app and keeperhub/api, and its SKIP_PATTERNS at :48-54 exempt four keeperhub/-prefixed files that can no longer match, so those exemptions silently do not apply - the script is wired into nothing today, so it is dormant rather than broken. And lib/metrics/METRICS_REFERENCE.md:388-391 carries four stale paths inside the very file this PR repoints its link at. Worth having the real inventory before you scope that change.

@suisuss suisuss added approve Triage: reviewed and good - not a GitHub approval and removed changes-requested Triage: reviewed, changes needed from the contributor labels Sep 12, 2026
The Endpoints section linked the page as "API Documentation" while the
Documentation list twelve lines below, and the page's own frontmatter title,
both call it "API Overview". The link resolved, so this is consistency rather
than a defect, and it is the last of the six labels.
@subheeksh5599

Copy link
Copy Markdown
Contributor Author

Fixed the one you listed, pushed as 8c6f0ca06.

README.md:251 now reads [API Overview](docs/api/index.md), matching the Documentation list twelve lines below and the page's frontmatter title. That is the sixth and last label in the file, so every page reference in the README now carries the exact title of the page it opens.

Noted, and thank you for the inventory: keeperhub/plugins/ alone reaches ten files and the wider prefixes many more, and prefix-stripping is not safe as a blanket rule where several targets are stale in both forms. I would rather scope that from the real list than from the residue I described, so I am not touching anything outside what you have already reviewed here.

@suisuss

suisuss commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

What this changes

Four link labels in README.md, no target changed. :251 API Documentation to API Overview; :268 Quick Start Guide to Getting Started; :270 Workflow Examples to Workflows; :271 API Reference to API Overview.

Each new label is the frontmatter title of the page the link opens, verified on staging: docs/api/index.md is "API Overview", docs/getting-started/index.md is "Getting Started", docs/workflows/index.md is "Workflows". The two untouched labels in that list, Core Concepts and Security Best Practices, already match docs/concepts.md and docs/practices/security.md.

Nothing outside README.md. The compare range carries lib/web3/turnkey-sponsored-tx.ts, protocols/layerzero.ts and two test files, all of which arrive via the staging merges into the branch; the branch's own footprint is README.md alone, 8 added and 8 removed. No workflow, config, dependency, auth or validation path is touched.

specs/api-coverage.json sources only docs/api/*.md. README.md is not tracked and no docs/api file moves a line here, so the artifact stays current.

Previously raised

  • README.md:270 - Workflow Examples opening a page titled "Workflows" - addressed.
  • README.md:268 - Quick Start Guide opening a page titled "Getting Started" - addressed.
  • README.md:251 - API Documentation, a third label for the same page - addressed.
  • The stale keeperhub/ prefix in plugins/safe/index.ts and plugins/cowswap/index.ts - left untouched, which is right for a README change.

Does it match the description

Matches, with one imprecision in the claim rather than the diff: README.md:262 labels lib/metrics/METRICS_REFERENCE.md "Metrics Reference" while that file's heading is "KeeperHub Metrics Reference", so "every page reference carries the exact title" holds for the five Documentation links and the Endpoints link, not for that one. It is an untouched line and no change is wanted there.

Verdict

Approve - the four labels now read as the titles of the pages they open, and every target resolves on staging.

@suisuss
suisuss dismissed their stale review September 14, 2026 01:42

Superseded by the current review - the findings that prompted this are addressed at head.

@suisuss
suisuss merged commit 2b9f45b into KeeperHub:staging Sep 14, 2026
56 checks passed
@OleksandrUA OleksandrUA mentioned this pull request Sep 14, 2026
5 tasks

This branch had an error being deployed

1 failed deployment
staging — 8c6f0ca0 Deployed Sep 14, 2026 by suisuss via cleanup #1878
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approve Triage: reviewed and good - not a GitHub approval

Projects

None yet

Development

Successfully merging this pull request may close these issues.

README Documentation section: 3 of 5 links 404, plus a keeperhub/ path prefix that does not exist in the tree

3 participants