6c652c2ed3
IdAllocator::suffixed recursed once per taken candidate, and the call was not in tail position. A document claiming item-1 through item-N aborted the process on a stack overflow at N of about 11,000 in debug. This answers the Codex P2 on PR #318. The loop still advances the counter on every candidate it tries. Three tests are added: - a long claimed run (20,000), which aborted before the fix; - claim refusing lookalike virtual ids (_indexer, _measure-1), which the review's prefix-match rival passed before; - a display with leading spaces that must not slug into the reserved `_` space. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze