rglob walks into .git/ before the name-check on .git itself fires.
Files under .git/objects/ have normal names so the entry-level filter
didn't stop them. Added ancestor-path check that skips any entry with
a hidden (dot-prefixed) directory anywhere in its path.
The result was a 566K-char blob that blew past the model's 32K context.
Ulysses truncates MCP tool descriptions to 120 chars in prompt text.
Moved '(not memory)' to first line of all four tool docstrings so the
disambiguation survives truncation. Kept Args/Returns sections intact.
Qwen3.5-9B was conflating these tools with manage_memory because the
descriptions sounded similar ('list vault contents' vs 'search memory').
Every tool now opens with 'FILESYSTEM TOOL' to create a hard routing
boundary from conversation/memory tools. Added explicit NOT clauses
('NOT a memory search, NOT a conversation search') and USE THIS TO
guidance so the model routes correctly on first attempt.