How does prediction loop work?

I watched the FPS Sample video and I’m confused about the implementation of the prediction (that runs on the GhostPredictionSystemGroup), as far as I understand

GhostPredictionSystemGroup.PredictingTick: Starts at Oldest Snapshot Tick and runs until ServerTick as PredictionSystemGroup runs (ServerTick is the Final tick)

ClientSimulationSystemGroup.ServerTick: Current simulation tick of the Server. This is always synced to the ServerSimulationSystemGroup.ServerTick without requiring to receive a snapshot (I guess this updates with realtime?)

PredictedGhostComponent.PredictionStartTick: Tick of the latest snapshot applied to the Ghost. No need to update this ghost if this is greater than the PredictingTick

but then around minute 34 in the video, it shows that client predicts ahead of server tick, but that never seems to happen in my code. Did those things change or is my understanding wrong?

This is not true, ClientSimulationSystemGroup.ServerTick is always ahead of ServerSimulationSystemGroup.ServerTick. It is always the tick the client thinks the server will have by the time the commands sent this frame arrives on the server.

Ok now it makes sense, thanks!