Skip to content

Vault Maintenance and Graph Auditing

As your vault grows, so does your Breadcrumbs graph — and it can become difficult to know exactly what Breadcrumbs is inferring versus what you actually wrote. This guide walks through a set of practical maintenance habits: reading the graph’s statistics to understand its shape, auditing which edges are explicit versus implied, making implied edges permanent when you need to, and using CSS to make the distinction visible at a glance.

The first step in any audit is getting an overview. Run the Graph Stats command (Ctrl/Cmd + P → “Breadcrumbs: Show graph stats”) to generate a summary of every node and edge attribute in your current graph.

The output is copied to your clipboard and printed to the console at the FEAT log level. Open the developer console (Ctrl + Shift + I) to read it there, or paste it into a scratch note. The structure looks like this:

{
"nodes": {
"resolved": { "true": 312, "false": 4 }
},
"edges": {
"field": { "up": 120, "down": 108, "same": 14, "next": 88 },
"explicit": { "true": 210, "false": 220 },
"source": { "typed_link": 180, "date_note": 30 },
"implied_kind": { "opposite_direction": 180, "same_field_sibling_of": 40 }
}
}

A few things to look for:

  • edges.explicit: If implied edges outnumber explicit ones by a large margin, your graph depends heavily on inference. That’s not necessarily wrong, but it’s worth knowing.
  • edges.field: Which fields are carrying the most weight? A field with unexpectedly high counts might indicate a misconfigured implied rule.
  • edges.source: Tells you which edge builders are active. If date_note shows a large count you didn’t expect, check your Date Notes settings.
  • nodes.resolved false count: Unresolved nodes are notes referenced in edges that don’t exist as .md files. A non-zero count is worth investigating.

2. Audit Explicit vs. Implied Edges with show-attributes

Section titled “2. Audit Explicit vs. Implied Edges with show-attributes”

Graph Stats gives you counts, but doesn’t tell you which individual notes are using implied edges. For a file-level audit, use a codeblock with show-attributes: [source] to see where each edge comes from.

Add this codeblock to any note — for example, a dedicated Vault Audit note:

```breadcrumbs
type: tree
fields: [up, down, same]
merge-fields: true
show-attributes: [source]
```

Each item in the resulting tree will show its source attribute next to it. Edges you wrote yourself will show a source like typed_link or date_note. Implied edges will show implied instead.

You can also combine show-attributes with show-attributes: [field, source] to see both the edge field and its origin at once:

```breadcrumbs
type: tree
merge-fields: true
show-attributes: [field, source]
depth: [0, 1]
```

This is particularly useful on hub notes — like a monthly note or a project index — where many edges converge.

For large vaults, auditing the entire graph from a single note can produce an overwhelming list. The dataview-from option lets you filter which notes are included in the traversal, using a Dataview query string.

For example, to audit only notes in a specific folder:

```breadcrumbs
type: tree
merge-fields: true
show-attributes: [source]
dataview-from: '"Projects"'
```

Or to audit notes carrying a particular tag:

```breadcrumbs
type: tree
merge-fields: true
show-attributes: [source]
dataview-from: '#area and !"Archive"'
```

This makes it practical to audit one section of the vault at a time — for example, checking that all your Projects notes have explicit up edges before archiving them.

Once you’ve identified notes that rely on implied edges, you may want to make those edges explicit. The Freeze implied edges to note command does exactly this: it writes all implied edges leaving the current note into the file as typed-links.

There are a few situations where this is especially useful:

  • Before publishing with Obsidian Publish: Publish exports the raw markdown of your notes. Breadcrumbs’ implied edges are computed at runtime inside Obsidian and won’t be present in the exported files. Freezing them beforehand ensures the links are physically in the note.
  • Before exporting or migrating your vault: For the same reason — any system reading your markdown directly won’t see inferred edges.
  • Reducing plugin dependency: If you want a set of notes to remain navigable even without Breadcrumbs installed, freeze the edges first so the links are in plain frontmatter.

To use the command:

  1. Open the note whose implied edges you want to freeze.
  2. Run Ctrl/Cmd + P → “Breadcrumbs: Freeze implied edges to note”.
  3. Choose whether to write the edges as frontmatter links or Dataview inline fields.

Before freezing, the note might look like this (with a dashed implied edge):

graph BT
	Note -.->|up| Parent

After running the command, the up link is written directly into the note’s frontmatter:

---
up: "[[Parent]]"
---
graph BT
	Note -->|up| Parent

5. Style Explicit and Implied Edges in Views

Section titled “5. Style Explicit and Implied Edges in Views”

Once you understand the distinction between explicit and implied edges, it’s helpful to make it visible. Breadcrumbs adds CSS classes to its views that reflect edge attributes, so you can use a CSS snippet to style implied items differently.

Create a new CSS snippet in your vault (.obsidian/snippets/breadcrumbs-audit.css) and enable it under Settings > Appearance > CSS snippets. A simple starting point:

/* Dim implied edges in the Tree View */
.BC-tree .BC-node[data-explicit="false"] {
opacity: 0.6;
font-style: italic;
}
/* Highlight explicit typed-link edges with a subtle marker */
.BC-tree .BC-node[data-source="typed_link"]::before {
content: "";
font-size: 0.75em;
opacity: 0.5;
}

You can take a similar approach in codeblock trees:

/* In codeblock trees, use a different colour for implied items */
.BC-codeblock-tree .BC-node[data-explicit="false"] {
color: var(--text-muted);
}

A practical maintenance routine might look like this:

  1. Rebuild the graph after any batch of changes to notes or settings.
  2. Run Graph Stats and note the explicit: true vs explicit: false counts. If the ratio shifts unexpectedly, investigate.
  3. Open your Vault Audit note and review the show-attributes: [source] codeblock to spot any notes relying on implied edges that should be explicit.
  4. Use dataview-from to narrow the audit to the folder or tag you’re currently working in.
  5. Freeze implied edges on any notes that are headed for Obsidian Publish or an archive.
  6. Check the developer console for any edge build errors that surfaced during the rebuild.