Bug Description
Basic Memory incorrectly parses Obsidian callout syntax as observation categories, polluting the knowledge graph with meaningless entries like !info, !warning, !quote, !tip, etc.
Steps To Reproduce
- Set up a Basic Memory project pointing to an Obsidian vault
- Create any note containing an Obsidian callout block:
> [!info] Some title
> Content inside the callout
> [!warning] Another callout
> More content
- Run
bm reindex or let the MCP server sync on startup
- Query observations for that note — callout identifiers appear as categories
Expected Behavior
Callout blocks (> [!type]) should be ignored by the observation parser. They are Obsidian-specific syntax and are visually and structurally distinct from Basic Memory observations (- [category] content).
Actual Behavior
Every callout in an indexed note generates a spurious observation entry. A note with > [!info], > [!warning], and > [!quote] produces three observations with categories !info, !warning, and !quote respectively, none of which correspond to actual knowledge authored by the user.
Environment
- OS: macOS 15.x
- Python version: (via uvx)
- Basic Memory version: 0.20.3
- Installation method: uv / uvx
- Claude Desktop version: latest
Additional Context
Obsidian's callout syntax is documented at https://help.obsidian.md/callouts. The conflict arises because both syntaxes use bracket notation on list/blockquote lines:
| Syntax |
Pattern |
| Basic Memory observation |
- [category] content |
| Obsidian callout |
> [!type] title |
This affects any user indexing an Obsidian vault that uses callouts, which is an extremely common Obsidian pattern.
Possible Solution
The observation parser should exclude lines where:
- The bracket content starts with
! ([!type])
- The line is prefixed with
> (blockquote context)
Both conditions together unambiguously identify an Obsidian callout and distinguish it from a valid Basic Memory observation.
Bug Description
Basic Memory incorrectly parses Obsidian callout syntax as observation categories, polluting the knowledge graph with meaningless entries like
!info,!warning,!quote,!tip, etc.Steps To Reproduce
bm reindexor let the MCP server sync on startupExpected Behavior
Callout blocks (
> [!type]) should be ignored by the observation parser. They are Obsidian-specific syntax and are visually and structurally distinct from Basic Memory observations (- [category] content).Actual Behavior
Every callout in an indexed note generates a spurious observation entry. A note with
> [!info],> [!warning], and> [!quote]produces three observations with categories!info,!warning, and!quoterespectively, none of which correspond to actual knowledge authored by the user.Environment
Additional Context
Obsidian's callout syntax is documented at https://help.obsidian.md/callouts. The conflict arises because both syntaxes use bracket notation on list/blockquote lines:
- [category] content> [!type] titleThis affects any user indexing an Obsidian vault that uses callouts, which is an extremely common Obsidian pattern.
Possible Solution
The observation parser should exclude lines where:
!([!type])>(blockquote context)Both conditions together unambiguously identify an Obsidian callout and distinguish it from a valid Basic Memory observation.