Skip to content

instructions: a dangling wikilink is three different things, not one - #2

Open
RomanZhulpo wants to merge 1 commit into
Flopsstuff:mainfrom
RomanZhulpo:link-health-vs-backlog
Open

instructions: a dangling wikilink is three different things, not one#2
RomanZhulpo wants to merge 1 commit into
Flopsstuff:mainfrom
RomanZhulpo:link-health-vs-backlog

Conversation

@RomanZhulpo

Copy link
Copy Markdown

Ran into this while auditing my own memory vault, which uses the same wikilink convention. instructions.md currently tells the agent that exists:false means the link is broken. It is actually three situations with three different remedies, and collapsing them makes the report unusable.

Measured on 417 notes / 311 wikilinks:

count what it is
naming drift 55 the note EXISTS, written differently — [[user-career-discretion]] vs user_career_discretion.md
backlog 13 a topic never written — often deliberate
real breakage 0 renamed, deleted, or ambiguous

68 non-resolving links, and not one of them was actual breakage. A report that called all 68 broken would have buried the zero real problems under 68 false ones — and after a week you stop reading it.

The drift class is structural, not carelessness. Filenames carry a type prefix (feedback_override_…) that nobody repeats when linking by meaning, so it regenerates continuously no matter how careful the writer is. It maps unambiguously back (0 collisions across 42 distinct targets in my case), so it should be repaired mechanically and never shown to a human.

The backlog class is the one that matters for an agent memory layer. A dangling [[name]] is frequently intentional — it marks a note worth writing later. Flagging those as errors is precisely how a link audit stops being read.

The diff is 9 lines in instructions.md. If you would rather push the distinction down into get_broken_links itself, that belongs upstream in pvliesdonk/markdown-vault-mcp — happy to take it there instead, this is just the cheapest place to state the rule.

🤖 Generated with Claude Code

https://claude.ai/code/session_013w4fJ5QnvragpvHHgH2JFS

A dangling wikilink is three different situations, and reporting them as one
list of 'broken' makes the report worthless — the real breakage drowns in it.

Measured on a 417-note memory vault with the same convention: of 311 wikilinks,
68 did not resolve. Only 13 were topics that had genuinely never been written,
and zero were true breakage. The other 55 were EXISTING notes written with a
different separator or without their type prefix — [[user-career-discretion]]
for user_career_discretion.md. That drift is structural rather than careless:
filenames carry a type prefix nobody repeats when linking by meaning, so it
regenerates continuously and is not worth a human's attention. It is repaired
mechanically.

The backlog class matters most. In an agent memory layer a dangling [[name]] is
often deliberate — it marks a note worth writing later. Flagging those as errors
teaches the reader to ignore the whole report, which is how a link audit stops
working.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Aug 26, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: c5dc3abd-2c33-4359-b6c6-28419c45b92e


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant