The containment commit skipped the whole turn when either side was empty, which would drop a real user message on interrupted or tool-only turns. Keep the guard for fully-empty turns only and skip empty sides individually inside the sync loop.
The containment commit skipped the whole turn when either side was empty, which would drop a real user message on interrupted or tool-only turns. Keep the guard for fully-empty turns only and skip empty sides individually inside the sync loop.