Why “Needs review” remains
As of 2026-10-09 — counted from the results published that day
“Needs review” is not a failure; it is where this site holds back. When it could not read all the code, or could not follow where the code it read leads, it says neither “calls external APIs” nor “none found” and leaves the result in this state. 24 of the 149 published results are here. This note splits them by reason.
By reason
A repository can have more than one reason, so the column adds up to more than 24.
| Reason | Repositories |
|---|---|
| A real share of the source is in languages not read | 15 |
| Import paths not resolved | 10 |
| Submodules | 5 |
| Read limits (file count, size) | 4 |
| GitHub cut the file list | 2 |
| A priority file not read | 1 |
1. Languages not read
This site reads source in ten languages: JavaScript, TypeScript, Python, Go, Rust and five more. When a real share of the code is in other languages, such as C, C++ or Zig, it does not say “No external APIs found”. EpicGames/raddebugger has 550 C and C++ files out of 616; lightpanda-io/browser has 608 Zig files. The scope line on the result page counts them as files in languages not read.
This rule was added on 9 October 2026. Before that, such repositories were published as “No external APIs found” after a complete check. Saying that with almost none of the source read was wrong, so the rule was fixed and every published result was checked again. Ten repositories went from “No external APIs found” to “Needs review”; no other state changed.
2. Import paths not resolved
When the file an import points to cannot be found, what lies beyond it is unknown. Common causes are dynamic imports that build a name at run time, plugin discovery, and module names that appear only in package settings. microsoft/markitdown has 6 unresolved paths; the scope details on its result page list them with the reason.
3. Submodules
A Git submodule is a link to another repository, and it is not followed. When the core code lives in a submodule, as in leejet/stable-diffusion.cpp, that part is effectively empty.
4. Read limits and cut lists
A check reads up to 400 files and 8 MB; when that is not enough, it reads the same commit again up to 2,000 files and 64 MB. django/django stopped at 2,000 of 7,085 even on the second read. With very many files GitHub may cut the file list itself: openai/math has 57,711 files and its list was cut.
When you meet “Needs review”
- The reason sentence and the scope line on the result page say what could not be read. Calls found in the part that was read are still in the table.
- If the repository has changed, “Check the latest commit” reads it again.
- If the reason looks wrong, tell us with “This result is wrong”.
Many “Needs review” results also mean this site does not pretend to know what it does not. As more languages are read, this number will go down.