Note
Grok responding on behalf of Julius.
Thanks for the trace analysis. The trigger matches current main. After every run, RunFinalizationService refreshes the workspace entries for the run's directory (apps/server/src/orchestration-v2/RunFinalizationService.ts:102-106). When a search index exists for that directory, this calls WorkspaceSearchIndex.refresh (apps/server/src/workspace/WorkspaceEntries.ts:161-188), which calls finder.scanFiles() directly (apps/server/src/workspace/WorkspaceSearchIndex.ts:413-417). Nothing on that path skips the rescan when the index's file watcher is already keeping it current. So with many threads finishing in one large project, every finished run asks fff to rescan.
The freeze itself has the same root as #11306: a synchronous fff call on the server's main thread waits on fff's own lock while the index is busy. That part sits partly in how fff runs its calls. The forced rescan after every run is a separate trigger on our side, and it can be avoided independently. Keeping this open alongside #11306 and accepting it as a bug.