learningsCopyFromProject called learningsWrite K times in one process, and each call re-scanned the entire learnings store to dedupe — O(K*N). Build the content_hash -> id index once at the start of the bulk import and thread it through; single-write behavior and the return contract are unchanged (no caller reads `id` on the created:false branch). O(K*N) -> O(N+K). Adds a regression test asserting store scan count is independent of import size. The larger persistent on-disk index (atomic updates, corruption rebuild, cross-process dedupe) is deferred — needs design decisions and is not required to resolve the bulk-import scan this issue reports. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
22 KiB
22 KiB