A project is one code repo plus one docs source. Runs, findings and history all hang off it.
The code your team writes and the docs that describe it. Docs can live in the same repo or somewhere else entirely.
No diff can be drafted for a screenshot. The remedy is to re-shoot the image at and commit it; every page listed above then picks it up, because they all reference the one file. Re-shooting also retires this finding on its own — the id is keyed on the image's contents, so new pixels are a new image rather than the same one still flagged.
No fix proposed yet. The current doc is read fresh, so a fix reflects the file as it stands today, not as it was indexed. No draft yet. For a gap the model proposes an addition to an existing page rather than a correction — review it carefully, since writing new documentation is a bigger claim than fixing a wrong sentence.
Reading the code and the peers' pages, then drafting. Usually under 15 seconds; it gives up at 90.
| Run | Status | Started | Duration | Findings | Severity | |
|---|---|---|---|---|---|---|
| stopping › |
| Pull request | State | Checks | Findings | Fixes | Last checked |
|---|---|---|---|---|---|
|
|
— |
|
showing
|
first check no change |
Every link the indexer found, rolled up by directory. Click a folder row to open it, ☰ to list its links, or a ribbon to read the links behind it. Reflects the index of , not the working tree. Refreshed — a run just changed the index.
Showing semantic links scoring or higher. Exact matches (symbol, route, env var, file path) have no score and are always shown.
A gap is found by comparing a file against peers that do the same job. Files with no comparable sibling are never examined — so a low compared figure means the codebase has few interchangeable families, not that it is fully documented.
Gaps are findings — triage, permalinks and fix drafts all work the same way.
Repositories and docs sources.
Passed to the worker as environment overrides. Blank uses the pipeline default.
Read from the server environment. Never stored in the database, never sent to the browser — this shows presence only.
Every run's log is stored in Postgres (run_logs) and as a file under . They are searchable and downloadable from each run, and deliberately not rendered in this dashboard. Prune with app.runs.purge_logs(dsn, days).
Hides it from the sidebar. Runs and findings are kept.