Thanks for the update. Let me try to summarize (assume I only use run_phase, not its sub-phases):
In a condition where all objections were dropped and no new ones get raised, the current time slot is NOT always finished before a move from run_phase to extract_phase happens. It only guarantees that the current active/inactive/NBA is finished before such a move of phase.
In particular when the current NBA update would trigger a new loop of active/inactive/NBA this new loop will not finish before we move to the extract_phase. Correct?