Skip to content

deep mode: LLM mis-attributes source_file across sibling notes with near-identical names, causing valid nodes to be silently dropped #3377

Description

@terryseungkim-rgb

Version: 0.9.53

Context: Obsidian vault with per-book note sets named {Title} - {단계} ({date}).md where 단계 (stage) is one of 리서치/법률검토/출간결정/발행 (research/legal-review/publish-decision/publish-record) — e.g. Snail Bride - 출간결정 (2026-09-05).md and Snail Bride - 발행 (2026-09-07).md. Four new - 발행 (publish-record) notes were added for previously-decided titles.

Observed: Incremental semantic extraction (semantic_cron.py → deep mode) processed the 4 new - 발행 files, but the run log shows:

[graphify] WARNING: dropped 4 out-of-scope node(s) attributed to file(s) not dispatched for extraction:
Chiaksan Magpie - 출간결정 (2026-09-05).md, Governor-General's Palace - 출간결정 (2026-09-05).md,
Hunters of Cheonan - 출간결정 (2026-09-05).md, Snail Bride - 출간결정 (2026-09-05).md.
The model mis-attributed them to another corpus file; they were excluded from the graph (#1895).

The graph-write guard added in #1895 worked correctly here (no corrupted provenance made it into graph.json), but the underlying cause is different from #1895: these - 출간결정 files were in scope and dispatched in earlier runs — the extractor just attributed nodes from the new - 발행 files to their same-title - 출간결정 sibling instead. Net effect: content from all 4 new files is missing from the graph entirely (dropped, not merged elsewhere), with no re-extraction retry.

Hypothesis: when several sibling documents share a long common title prefix and differ only in a short stage-suffix token (발행 vs 출간결정 vs 법률검토 vs 리서치), the model appears to weight the shared prefix over the differing suffix when assigning source_file, especially when the sibling files are semantically related (a publish-record note citing its own publish-decision note via wikilink, as this project's convention requires).

Expected: either (a) re-attempt extraction for a file whose nodes were entirely dropped as out-of-scope, since dropping silently produces zero coverage for a file that was actually dispatched, or (b) bias source_file attribution toward the literal file path being processed in the current extraction call over any path mentioned/linked within the document body.

Repro ingredients (available on request, not attached — personal vault): 4 note pairs, each pair sharing an identical prefix and only the trailing stage-suffix token differing, where the newer note (발행) links to the older sibling (출간결정) via [[wikilink]].

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions