Skip to content

[BUG] Timestamp-prefixed transcript lines are parsed as observations #1219

Description

@j2h4u

Bug Description

Timestamp-prefixed transcript lines are parsed as Basic Memory observations. A timecode such as [00:00:11] is accepted as an observation category, so ordinary speaker dialogue can mint false graph observations.

Steps To Reproduce

  1. Use current main at bc5e6af860635981630586c69fee88b20b43615a (2026-08-09).
  2. Parse or index this synthetic Markdown content:
    [00:00:11] Speaker: We chose the safer option.
    - [00:01:42] Speaker: Follow up next week.
    - [decision] Use the safer option.
  3. Inspect the parsed observations.

Expected Behavior

Only the explicitly structured [decision] line should become an observation. Timestamp-prefixed transcript lines should remain ordinary content, or otherwise require an unambiguous observation form.

Actual Behavior

The timestamp-prefixed lines become observations with categories 00:00:11 and 00:01:42, and their dialogue becomes observation content. This can pollute the knowledge graph when transcripts are indexed.

Environment

  • Repository: basicmachines-co/basic-memory
  • Ref: main
  • Commit: bc5e6af860635981630586c69fee88b20b43615a
  • Commit date: 2026-08-09T18:14:52Z

Additional Context

The observation recognizer accepts any line matching the shape [anything-but-brackets-or-parentheses] content. That broad shape overlaps common transcript timecodes such as [HH:MM:SS] and [00:00:11].

A tested workaround is to wrap the timecode in inline code, for example:

`[00:00:11]` Speaker: text

This avoids the current leading-bracket match, but requires altering source transcript content.

This is related in spirit to the previously fixed false-positive parser cases in #247/#269 and #738/#769, but is a distinct timestamp-prefix case.

Possible Solution

Consider a narrow parser rule that distinguishes timestamp-shaped bracket prefixes from observation categories, or another syntax boundary that makes transcript lines unambiguous, while preserving valid categories such as [decision].

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions