mirror of
https://github.com/basicmachines-co/basic-memory
synced 2026-06-21 13:47:35 +00:00
e70ade74ea
When build_context performs an exact permalink lookup that returns 0 results, it now tries three fallback resolution strategies before giving up — mirroring the multi-strategy approach already used by read_note: 1. Wildcard prefix match (*/path): recovers notes when stored permalinks carry an extra leading segment (e.g. project prefix) not present in the caller's identifier. 2. Strip-prefix exact lookup: recovers notes when the caller included an extra leading segment absent from stored permalinks. 3. Title FTS search on the last path segment: recovers notes when permalink normalization diverges from stored values. Diagnostic fields added: - ContextMetadata.resolved_path: the normalized path that was tried - ContextMetadata.no_primary_match: machine-readable reason when all fallbacks are exhausted, allowing clients to distinguish "lookup miss" from "note has no relations" Both fields are surfaced through MemoryMetadata (schema) and to_graph_context (API utils) so they appear in the JSON response. Backward compatibility: successful exact lookups are unchanged. The fallbacks are only entered when the primary search returns 0 rows. Closes #582 Co-authored-by: Paul Hernandez <phernandez@users.noreply.github.com> Signed-off-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>