Lit Lint
Health-check the Literature Vault — find cross-source contradictions, orphan pages (a summary with no matching references.bib key, or a .bib key with no summary), broken [[wikilinks]], claims missing.
Core Rule
Lint reports; it does not repair by inventing. It surfaces where the vault has drifted —
orphans, broken links, claims without locators, quotes without page numbers — and names the
fix, but it never closes a gap by fabricating the missing piece. A summary missing a locator
gets flagged, not given a guessed page number. A .bib key with no summary gets flagged,
not given an imagined one. This is a read-only, advisory pass: it never modifies sources/
and never silently auto-edits the vault. The output is a worklist for the author or for
/lit-ingest to act on, not a set of edits.
When to Use
Invoke with /lit-lint when:
- After a batch of
/lit-ingestruns, to catch what slipped (orphans, missing locators). - Before
/literature-review, so the synthesis draws on a clean, consistent vault. - Periodically, to find cross-source contradictions worth resolving before they reach the draft.
- After editing
references.bibby hand, to re-check summary ↔.bibalignment.
Read-only by default. With an explicit --fix argument it may propose (still not auto-apply)
mechanical repairs like adding a missing [[wikilink]] stub — but never a fabricated
locator, quote, finding, or DOI.
Process
Phase 1 — Inventory
Build the picture before judging it:
- Read
VAULT.md(the schema the vault must conform to). - List
vault/summaries/*.md, the keys inreferences.bib, and every page undervault/concepts/andvault/entities/. - Collect every
[[wikilink]]target across all pages, and every\cite-able key. - Read
vault/index.mdandvault/log.mdto know what should be present.
Phase 2 — Orphan & linkage checks
- Summary without a
.bibkey — avault/summaries/<key>.mdwhose<key>has no entry inreferences.bib. Either the entry is missing or the filename is wrong. .bibkey without a summary — an entry inreferences.bibwith novault/summaries/<key>.md. It may be legitimatelymetadata-only, but it should at least have a stub page; flag it.- Broken
[[wikilinks]]— a link whose target page does not exist. (A deliberate stub is fine perVAULT.md— distinguish "not written yet, intentional" from "typo / renamed page".) - Index drift — a summary that exists on disk but is missing from
vault/index.md, or an index line pointing to a page that is gone. - Filename ≠ cite key — the page's
bibkey:frontmatter must equal its filename and its.bibkey (VAULT.mdRule 4).
Phase 3 — Claim & quote hygiene
Per summary page:
- Claims missing locators — a bullet under "Key claims" with no
p./§locator. A claim the vault cannot point to a page for is not yet citable. - Quotes without page numbers — a
>quote with no— p. <n>. Floating quotes are a cardinal-rule violation waiting to happen; flag every one. - Findings without numbers/locators — a "Findings" section that asserts a result with no figure/locator to anchor it.
[VALUE — verify]still open — surface every unresolved placeholder (in summaries and in the proposed.bibmetadata) so the author knows what still needs reading. These are honest flags, not errors — but they are open work.
Phase 4 — Cross-source contradiction scan
Compare claims across summaries (and within each concepts/ page's "Tensions" section) for
sources that disagree — e.g. one reporting a verification gate eliminates hallucinated
tool calls while another reports only a partial reduction. Report these as contradictions
to resolve, with both locators. Do not adjudicate which source is right — that is the
author's call (and a Protected Claim if it changes the argument); lint only surfaces the
seam. A genuine disagreement between real sources is a finding, often the seam a contribution
exploits — note it, do not erase it.
Phase 5 — Staleness & status
metadata-onlynever upgraded — a page stillstatus: metadata-onlywhose full text is now insources/. Candidate for/lit-ingestto upgrade.- Stale entries — a summary whose
source_file:no longer exists insources/, or whoseingested:date long predates a changed source. skimmedpages — flag pages markedskimmedso the author knows coverage is partial before citing them.
Phase 6 — Report
Produce the categorized findings list (below). Each finding: locator + the precise fix.
Nothing is auto-applied. Append one line to vault/log.md
(2026-06-03 lint — N findings (orphans 2, missing-locators 4, broken-links 1)) so the
health check is part of the record — this is the one write lint makes.
Output Format
# Lit-Lint — Vault Health Report
## Summary
- Summaries: 12 · references.bib keys: 14 · concepts: 5 · entities: 7
- Findings: 11 (Orphans 3 · Missing locators 4 · Broken links 1 · Contradictions 1 · Stale 2)
## Orphans
| # | Item | Problem | Fix |
|---|------|---------|-----|
| 1 | references.bib `halluc2022` | no vault/summaries/halluc2022.md | ingest it, or add a metadata-only stub |
| 2 | vault/summaries/tooluse2023.md | no `tooluse2023` in references.bib | add the .bib entry, or rename the page |
## Broken [[wikilinks]]
| # | Source page | Link | Likely cause |
|---|-------------|------|--------------|
| 1 | summaries/tooluse2023.md | [[verification-gateing]] | typo → [[verification-gating]] |
## Claims missing locators / quotes without pages
| # | Page | Item | Fix |
|---|------|------|-----|
| 1 | summaries/halluc2022.md | claim "hallucination is prevalent" | add p./§ locator from source |
| 2 | summaries/halluc2022.md | quote "models confabulate freely" | add — p. <n> or remove |
## Cross-source contradictions (resolve — do not auto-edit)
| # | Source A (locator) | Source B (locator) | The disagreement |
|---|--------------------|--------------------|------------------|
| 1 | tooluse2023 p.4: gate "eliminates" hallucinated calls | halluc2022 p.7: only "reduced" | strength mismatch — pick the calibrated claim |
## Stale / status
| # | Page | Issue | Fix |
|---|------|-------|-----|
| 1 | summaries/halluc2022.md | metadata-only, full text now in sources/ | run /lit-ingest to upgrade |
## Open [VALUE — verify]
- summaries/tooluse2023.md — DOI still [VALUE — verify]End with the tally (clean / findings / open placeholders). Never report the vault "clean"
while orphans, broken links, missing locators, or open [VALUE — verify] markers remain.
Pairs With
/lit-ingest— the fixer for most findings: re-ingest to upgrade ametadata-onlypage, add a missing locator, or create a missing summary./lit-briefing— consumes a clean vault; run lint first so the briefing's gap analysis is not muddied by orphans.vault-maintaineragent — dispatch it to work through a long findings list (re-ingest, re-link) so the main thread stays clean.citation-gate.sh— the.tex-side analogue: it proves\citekeys resolve inreferences.bib; lint proves the vault layer behind them is consistent./citation-audit— the structural.bibhealth pass; complementary to lint's vault-page focus.
Notes
- Read-only / advisory. Lint never edits
sources/and never auto-rewrites a vault page; its only write is the one-linevault/log.mdentry recording the run. - It flags, never fabricates — a missing locator/quote/DOI is reported, never guessed. This is the cardinal rule applied to vault maintenance.
- A contradiction between two real sources is a finding, not a defect to paper over — often the seam a contribution exploits. Resolving it (which to believe, how to frame it) is the author's call.
- The cross-source contradiction scan is Reasoner-tier judgment (see
CLAUDE.md → Model Selection); the orphan/link/locator checks are mechanical. - A high "open
[VALUE — verify]" count is a finding about reading backlog, not a defect in the vault — report it as such.
Lit Ingest
Ingest ONE raw source (a sources/ PDF or .txt path, or pasted text) into the Literature Vault — read it, write a vault/summaries/<bibkey>.md annotated page with claims+locators and verbatim quotes,.
Lit Briefing
A short "since last time" briefing from vault/log.md + vault/index.md — recently ingested sources, open follow-ups and citation-chaining leads, and gaps relative to MANUSCRIPT_MAP.md → Thesis (themes.