Wikilink Baseline — 2026-05-03
Phase A junk cleanup baseline snapshot. Reference for measuring wikilink graph health over time.
Vault root: /home/opsadmin/openclaw-vault/
Excluded zones: .git/, .obsidian/, personal/, logs/, _archived/, _archive/, sources/session-audits/
Pre-Sweep Metrics
Captured before Phase A junk cleanup run on 2026-05-03.
| Metric | Value |
|---|---|
| Markdown files (qualifying) | 853 |
| Total wikilinks (raw) | 627 |
| Unique targets | 301 |
| Orphan targets (no matching file) | 76 |
| Resolved targets | 225 |
| Orphan % | 25.2% |
| 1-char junk wikilinks (raw, incl backtick-wrapped) | 147 |
| 1-char junk wikilinks (actual, excl backtick spans) | 133 |
| 2-char alphanumeric junk wikilinks | 0 |
| Total junk to replace | 133 |
Top-10 hubs by outgoing link count (pre-sweep)
| File | Outgoing links |
|---|---|
memory/PLAN-INDEX.md | 112 |
memory/MEMORY.md | 95 |
plans/openclaw-self-improvement-layer-2026-05-03.md | 40 |
plans/acquisitions-system-plan.md | 38 |
memory/SAFETY-RAILS.md | 34 |
plans/openclaw-vault-wikilink-optimization-2026-05-03.md | 28 |
plans/logical-dancing-book.md | 27 |
plans/betterbets-full-audit-2026-04-16.md | 16 |
memory/project_openclaw_vault_wikilink_optimization_2026-05-03.md | 12 |
plans/prediction-market-arbitrage-execution-2026-04-16.md | 11 |
Post-Sweep Metrics
Captured after Phase A junk cleanup replaced 147 junk wikilinks with <!-- TODO: wikilink target unresolved -->.
| Metric | Value |
|---|---|
| Markdown files (qualifying) | 842 |
| Total wikilinks (raw) | 626 |
| Unique targets | 330 |
| Orphan targets (no matching file) | 64 |
| Resolved targets | 266 |
| Orphan % | 19.3% |
| 1-char junk wikilinks remaining | 0 |
| 2-char junk wikilinks remaining (code-context false positives) | 3 |
Note on 3 remaining 2-char matches: All three occur inside fenced code blocks or backtick code spans and are NOT obsidian wikilinks. They are:
[[\1]]and[[\2]]— sed capture group patterns inside abashcode block inwiki/workspace-docs/OBSIDIAN-VAULT-SETUP.md[[^\]]— a grep character-class pattern inside a backtick span inplans/openclaw-vault-wikilink-optimization-2026-05-03.md(mirrored file, overwritten on next sync)
These cannot be replaced without corrupting code documentation.
Top-10 hubs by outgoing link count (post-sweep)
| File | Outgoing links |
|---|---|
memory/PLAN-INDEX.md | 112 |
memory/MEMORY.md | 95 |
plans/openclaw-self-improvement-layer-2026-05-03.md | 40 |
memory/SAFETY-RAILS.md | 34 |
wiki/agents/dispo/_summary.md | 22 |
wiki/agents/acquisitions/_summary.md | 21 |
wiki/agents/betterfiles/_summary.md | 20 |
plans/openclaw-vault-wikilink-optimization-2026-05-03.md | 20 |
wiki/agents/aurora/_summary.md | 19 |
wiki/agents/main/_summary.md | 18 |
Junk Patterns Replaced
Total replaced: 147 (133 actual wikilinks + 14 backtick-wrapped inline code references)
Distribution by pattern (pre-sweep)
| Pattern | Count | Example context |
|---|---|---|
[[e]] | 23 | Placeholder for “feedback_obsidian_sync_external_changes_unreliable” and similar missing targets |
[[2]] | 17 | Placeholder for plan names (horse racing Phase 0+1, BetterTrading v2, etc.) |
[[t]] | 13 | Placeholder for “BetterTrading” or similar |
[[S]] | 11 | Unknown placeholder |
[[m]] | 8 | Placeholder for “NBA Track B schema” |
[[a]] | 8 | Unknown placeholder |
[[4]] | 7 | Unknown placeholder |
[[r]] | 5 | Unknown placeholder |
[[T]] | 5 | Unknown placeholder |
[[I]] | 5 | Unknown placeholder |
[[s]] | 4 | Unknown placeholder |
[[l]] | 4 | Unknown placeholder |
[[Y]] | 4 | Unknown placeholder |
[[N]] | 4 | Unknown placeholder |
[[6]] | 4 | Unknown placeholder |
[[p]] | 3 | Unknown placeholder |
[[y]] | 2 | Unknown placeholder |
[[n]] | 2 | Unknown placeholder |
[[i]] | 2 | Unknown placeholder |
[[d]] | 2 | Unknown placeholder |
[[R]] | 2 | Unknown placeholder |
[[G]] | 2 | Unknown placeholder |
[[F]] | 2 | Unknown placeholder |
[[E]] | 2 | Unknown placeholder |
[[A]] | 2 | Unknown placeholder |
[[5]] | 2 | Unknown placeholder |
[[k]] | 1 | Unknown placeholder |
[[L]] | 1 | Unknown placeholder |
Replacement string
All replaced with: <!-- TODO: wikilink target unresolved -->
Sample replacements in context
From plans/groovy-pondering-dolphin.md:
Sibling plans: v2 (MLB integration), (NBA Track B schema), (horse racing Phase 0+1)
From plans/incident-2026-04-13-auto-send-aurora.md:
- Phase A audit (referencing this incident):
Idempotency
Re-running the sweep script produces zero additional changes. The pattern <!-- TODO: wikilink target unresolved --> does not contain [[X]] so it will not be matched on subsequent runs.