perf(server): cache repository identities past the sweep interval

The settlement and pull request sweeps resolve every project each minute,
but repository identities expired after one minute and non-git roots were
never cached, so each sweep respawned git for every project.

Raise the positive TTL to 10 minutes and the negative TTL to 5 minutes, and
cache git's "not a git repository" verdict for root lookups. Timeouts and
other root lookup failures still retry immediately. Callers that know the
repository changed already pass `refresh: true`.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WvDgDwRRG8xvtoABQ8KwtC
8ddd79e1fbClaude committed on 9/25/2026, 11:35:40 PMparented809f7
2 files changedLine totals unavailable