{% extends 'base.html' %} {% block content %}
Documentation intelligence / open source

Code moves.
Docs drift.

Find the instructions
your code left behind.

From a stale README line to source evidence and available Git history. Less guesswork. A correction you can actually review.

No sign-inNo API keyNo target code execution

README.md01 / CLAIM
61

Add the --line-number
switch to enable line numbers.

An instruction that fails. exit 2
__main__.py02 / SOURCE
358
@click.option(
  "--line-numbers", "-n"
)
The declared option works. exit 0
◷ 567f6c8403 / GIT REVIEW

Incorrect wording introduced.Manually inspected, not automatic attribution.

REAL SNAPSHOT / RICH-CLIInspect the real case
01 — The gap between docs and codeScroll to follow the evidence Python / JavaScript / TypeScript

Judge quick start: one stale claim

Synthetic fixture, precomputed with the static scanner. No network, sign-in, or API key needed. This is a demonstration, not a real-world accuracy result.

  1. Open the sample: README.md:3 still says --port.
  2. Expand Evidence to inspect cli.py and the Git diff. The rename commit appears on the finding.
  3. Review the proposed documentation fix: replace --port with --listen. Nothing is applied automatically.
Open synthetic fixture report
02Follow the evidence

A finding is only useful
if you can prove it.

One small mistake. An inspectable trail. No invented certainty.

README.mdthe documented claimSource declarationthe option that actually existsGit historyinspect the available change

Static inspection. Your repository’s code is never run.

01 Locate the instruction

It’s one letter.
Until the command fails.

rich-cli’s README documents --line-number. The reproduced command exits with “No such option.”

$ rich README.md --line-number
Error: No such option '--line-number'.
README.md:61
02 Check the source

Not a guess.
A declaration.

The Click declaration accepts --line-numbers. The corrected command exits successfully. docs-drift’s index points to the declaration.

− --line-number
+ --line-numbers
__main__.py:358
03 Understand the change

Show what’s known.
Keep the limits visible.

Manual Git inspection identifies 567f6c84, which introduced the typo. The scanner returns no introducing commit for this case. We show that distinction.

Read the full investigation

Pinned snapshot. Agent-assisted review. Not a claim about the owner’s past experience.

03Your repository

Put your README
to the test.

A public GitHub URL. A static scan. Evidence you can inspect.

DOCS-DRIFT / SCANNERRule-based · no API key

Public repos only. Small repos work best. Up to 2 minutes.

No sign-in required
TRY A LIVE SCANOr open the instant sample →

Live scans are paused. The precomputed samples below still open immediately.

Skip the wait

Open the evidence.

Precomputed snapshots, not live scan timings.

Synthetic fixtures Separate from real-repository evidence

Deterministic examples for exploring features. These results are not real-world accuracy measurements.

{% for example in examples if example.kind == 'fixture' %}{{ example.name }} · synthetic ↗{% endfor %}
04Built to be inspected

Evidence over
a perfect score.

04findings reviewed

All four drift findings in the saved rich-cli sample. Selected and agent-assisted; no independent human labels.

02confirmed defects

Both incorrect options fail with exit 2. Both corrected commands succeed with exit 0.

02false positives

The saved scan wrongly flags two file extensions. The fresh scan does not. Recall is not measured.

These are review counts, not a population accuracy score. Framework coverage is partial. Human benchmark labeling remains pending.

Inspect the sample and counterexamples →
Keep it in your workflow

Before the next
“just follow the README.”

From a source checkout · PyPI unpublished
uv run --all-extras docs-drift scan --repo .

Clone the repository first. A registry install is not yet available.

{% endblock %}