2a0774fafd
projectLabel() basenames the primary checkout root to build the Hindsight `project:` tag, and it preserved case. Hindsight matches tags literally, so a checkout at ~/code/General retained and recalled under `project:General` while every other client of the same bank used `project:general`. One repository then owns two scopes that never meet: recall filters on the session's own tag, so neither side sees the other's facts, and consolidation treats them as unrelated projects. A live bank measured 581 facts stranded under a case variant on 2026-08-09. Fold the case at the source, after the primary-root resolution added for issue #2232, so the worktree axis and the casing axis collapse together. Per-project bank ids lowercase for the same reason. - hindsight/bank.ts: lowercase the resolved basename, and document why. - test/hindsight-bank.test.ts: cover the fold on plain paths, on a mixed-case checkout root, and on a linked worktree of one. The non-repo fallback assertion now folds its own mkdtemp suffix. - docs/memory.md: state how the project label is derived. - CHANGELOG: Fixed entry under Unreleased.