Skip to content

nova-memory's dangling-link list is citations only

Choose a tag to compare

@rowan-claude rowan-claude released this 30 Aug 16:33
f300b24

nova-memory verify --links now reports citations and not specimens. A [[wikilink]] written inside inline code or a fenced block is prose about wikilinks, and it no longer counts as a reference to a missing file.

On the corpus this tool was ported from, 20 of 44 citation-shaped occurrences sat inside backticks — sentences like "every dangling [[wikilink]] in this repo". Measured effect on that corpus: 28 findings → 22.

Why it is worth a release. --links can be run as a gate, where a false positive is not clutter but a wall in front of a correct document. And in report mode dilution has its own cost: a list that is half specimens is a list a reader stops reading, which is how a genuinely dangling pointer hides in plain sight. On that corpus three real findings had done exactly that, one of them for six days while the list named it nightly.

The masking is deliberately narrow, and both narrowings were bought by a reproduction. The obvious implementation — mask any fenced block or any inline code span, with one whole-file regexp — hides real dangling links, which for a link checker is the one direction that must never fail. A lone ``` in ordinary prose pairs with the next real fence and swallows the paragraph between; two stray backticks on a line swallow whatever sits between them. Both were found before this shipped.

So a fence is recognized only at the start of a line and tracked line by line, and an inline span is masked only when the span is the link — content [[name]] and nothing else. A backtick-parity guard was tried for the second rule and is not sufficient: the stray-tick case has even parity.

Both directions are pinned as regression tables, so neither can be repaired by breaking the other: one plants a real dangling link after each hazard and asserts it survives, the other asserts specimens stay quiet — including ~~~ fences, indented fences and double-backtick spans.

Still reported on purpose, since over-reporting is this checker's declared posture: four-space indented code blocks, and a wikilink merely near backticks rather than wrapped by them.