Documentation Review
The Pre-Merge Check asks what the sync will do with a pull request. The documentation review asks the other question: does this change make something the documentation says untrue? It reads the code the pull request changed against the documents of the project subscribed to this repository, and reports as a second GitHub check named Meldoc docs: <project-alias>.
It is off by default and switched on per project, in the project’s Repositories panel, next to the pre-merge check toggle. Project administrators only.
What it reports
| Finding | What it means |
|---|---|
| Dead reference | The document names something this pull request removed from the code it changed. Proven from the diff and the code at the pull request’s head, or confirmed by the model. A name the head’s code still uses elsewhere is dropped rather than reported. |
| Refuted claim | A sentence of a document describes behaviour this change ends. The document’s own words are quoted, verbatim. |
| Possible dead reference | A removed line and the document share a name, and nothing established they share a meaning. Read the sentence before believing it. |
Each one appears as an annotation on the file and line it concerns, and in a section of the pull request comment. A quote a model paraphrased rather than took from the document is not shown at all — a paraphrase is not evidence.
The review never fails the merge. With findings it concludes neutral, with none, success. A sentence a model doubted is not a reason to block a branch, so the verdict is there to be read, not to gate. A check run that could not answer at all is the same neutral conclusion, with the reason in its summary.
What it cannot see
The summary always prints its own boundary, because a green check that had not looked at something is worse than no check. It does not look at:
- documents outside the project subscribed to this repository;
- code this pull request did not touch — a document that went stale months ago is not this check’s to find;
- names a document uses that the diff never mentions;
- a name whose only other uses sit in binary files, comments, documentation, or paths the repository keeps out of its archives — for those the name counts as gone, and the model is asked. A text file over 8 MB is not read either; when the head has one, nothing is reported as gone without the model;
- documents this pull request edits itself: the branch is already rewriting the version the server holds.
When a run has to skip something else — a diff GitHub sent only in part, a budget cap on how many documents go to the model, a model call that failed — the summary names that too, with counts.
It needs your own AI key
Only the dead-reference half runs without one. Judging whether a sentence is contradicted in meaning requires the workspace’s own AI provider, and so does the search that widens the candidate documents beyond exact name matches: nothing from a pull request is embedded or sent on Meldoc’s shared key. Without a key the check still posts, reports dead references, and says in its summary that it could not judge meaning.
Connect one under Settings → AI Provider. See AI Provider.
What it costs
The comment’s section ends with what the run spent on your key: the model, tokens in and out, an approximate cost at list prices, and the same totalled over every review run of that pull request. You pay your provider directly; Meldoc bills none of it.
A run caps how many documents it sends to the model, and says how many it left out, so a large pull request costs a bounded amount rather than one proportional to its diff.
Turning it off
The toggle asks for confirmation, for the same reason the pre-merge check’s does: the check’s name never changes, so it can be marked required in the repository’s branch protection rules — and a check that is required and no longer posted leaves pull requests unable to merge. Meldoc cannot read or edit branch protection, so that rule is yours to change in GitHub.
What’s next?
Pre-Merge Check — The other check: what the sync will do with this pull request.
AI Provider — Connect the key the semantic half needs.