Library and SDK maintainers
Your client, the SDK built on it and the docs site are three repositories. A change in the first surfaces the pages in the other two.
41 of 43 sections falkordb-py#276 reached were in other repositories.
GitHub AppStaleproof follows every pull request through a graph of your code and docs to the paragraphs it makes false, runs the examples to prove it, and writes the fix.
It also checks the files AI coding agents read: a stale command, link or env var in AGENTS.md, CLAUDE.md or your Cursor and Copilot rules is flagged like any other doc. How lint works
npx -y staleproof check https://github.com/FalkorDB/falkordb-py/pull/262Is_ClusterFalkorDB.__init__README · Asynchronous ExampleTypeError: unexpected keyword argument 'himport_registry'exit 0No doc names Is_Cluster, so a search finds nothing. The call graph finds the README.
Paste a pull request from any public Python, TypeScript or JavaScript repository. The first check indexes it in seconds.
Impact, clearance, ranking and example runs in a fixed order. No model, no key, deterministic.
A model reads each affected section and writes a verdict or an edit for every one.
The interactive demo needs JavaScript. These are the pull requests it opens with:
Your client, the SDK built on it and the docs site are three repositories. A change in the first surfaces the pages in the other two.
41 of 43 sections falkordb-py#276 reached were in other repositories.
GitHub AppClaude Code, Cursor and Copilot read AGENTS.md and CLAUDE.md. Staleproof keeps those files true, and answers your agent over MCP before it changes a function.
docs_for_symbol, check_changes and the docs patch, in the same session as the code.
MCP serverKnow what a release falsified, most-read page first, and ship one patch with the evidence behind every edit.
An audit lists the public API no page covers, and every example that no longer fits the code.
Audit a repositoryA docs check on every pull request: the sections it can make false, the path for each, and a button that applies the fix.
Beta rules only inform. Nothing fails a check until the Drift Hall shows it at 80% precision or better.
GitHub ActionUp to three call hops from the changed function, across repositories, to the docs that use it. Grep stops at the name.
Each affected example runs at both commits in a sandbox. "This PR broke it" is a test result, not a guess.
The path from the change to the paragraph is shown on every hit. No path, no edit: the tool refuses.
Code, docs and examples from every repository go into one FalkorDB graph, with the calls between them.
From each changed function, walk the callers to the sections that use them. The rest is cleared, with proof.
Run each affected example at the commit before the PR and at the PR, in a sandbox.
Every section gets a verdict, and a git apply-able patch with the evidence. Decisions are remembered for the next PR.
"Which paragraphs, in which repositories, can this change make false?" is reachability over call edges. One Cypher pattern answers it.
The graph model and every queryMATCH (pr:PullRequest {url: $pr})<-[c:CHANGED_IN]-(s:Symbol)
WHERE c.kind <> 'added'
MATCH p = (s)<-[:CALLS*0..3]-(t:Symbol)<-[:MENTIONS|USES]-(d)
WHERE (d:DocSection OR d:CodeExample) AND d.status = 'live'
RETURN d.id, length(p) AS hops,
[n IN nodes(p) | coalesce(n.qualname, n.id)] AS evidencePick the one that matches where your docs break.
No workflow file and no secrets. Each PR gets a check with annotations, suggestions, and an Apply fixes button.
GitHub App guide1. Install the app on your repositories
2. Open a pull request
3. Read the "Staleproof" check: the docs it can make false,
the path for each, and the fix as a suggestionThe job starts its own FalkorDB, indexes the repository, runs the affected examples before and after, and posts one comment.
GitHub Action guideon:
pull_request:
permissions:
contents: read
pull-requests: write
jobs:
docs:
runs-on: ubuntu-latest
steps:
- uses: rajkaria/staleproof@v1No install and no Docker: the first check starts FalkorDB locally and indexes the repository. lint needs no graph at all.
$ npx -y staleproof lint # paths, links, commands, env, symbols
$ npx -y staleproof check https://github.com/FalkorDB/falkordb-py/pull/262
$ npx -y staleproof fix # applies only verified fixesThe hosted server needs nothing installed and indexes any public repository on first use. Every result lists the Cypher it ran.
MCP guide$ claude mcp add --transport http staleproof https://staleproof.dev/api/mcp
> Which docs depend on Is_Cluster? Which examples do my edits break?Findings from unsaved text, fixes as code actions, hover and go-to-definition from a doc to the code it names. Cursor, Windsurf, Zed, Neovim and JetBrains too.
VS Code guide$ code --install-extension staleproof.staleproofserve runs this web app and its JSON API; the package also exports the indexer, the tools and both check modes as a library.
$ npx -y staleproof serve --port 8080
$ curl -N localhost:8080/api/check \
-H 'content-type: application/json' \
-d '{"pr_url": "https://github.com/FalkorDB/falkordb-py/pull/262", "mode": "graph"}'| grep / code search | Vector search | Staleproof | |
|---|---|---|---|
| Finds docs that reach the change through other functions | Only the names you search for | Similar text, not reachability | Up to 3 call hops, any repository |
| Proves a change broke an example | No | No | Runs it before and after |
| Says why a paragraph is flagged | The matching line | A similarity score | The evidence path |
| Noise on 4 checked pull requests | 227 unrelated matches | — | Only sections the change reaches |
No. Graph mode runs impact, clearance, ranking and example runs with no model. Agent mode adds a model that reads each section and writes the verdicts and edits; it needs ANTHROPIC_API_KEY or any Anthropic-compatible endpoint.
Code: Python, TypeScript, JavaScript and Go, across repositories. Docs: Markdown, MDX and reStructuredText. Python examples are run before and after a pull request; JavaScript and TypeScript examples are checked statically.
No. Audit any public repository to see which examples no longer fit the code today, run lint in a pre-commit hook, or ask over MCP which docs depend on a function before you change it.
With the CLI, the Action or the editor extension, indexing, the graph and example runs stay where you run them; private repositories work with a token. Graph mode sends nothing to a model. The hosted site and MCP server index public repositories only.
No. It proposes edits as suggestions, a git apply-able patch, or one fix PR you opt into. Nothing is pushed without you.
Nothing: it is MIT licensed. You run FalkorDB (locally, in Docker, or on FalkorDB Cloud's free tier) and pay your model provider only in agent mode.
More in Troubleshooting and FAQ.
Install once. Every pull request after that gets its docs impact, with proof.