Without looking at the rest of your IDF, it is likely because of the floor surfaces exchanging heat with the soil below. These temperatures can be colder than the outside air temperature. To confirm this, you can add an output variable column for the "Surface Outside Face Temperature" variable and key name input set to the name of the floor surface objects in the model (example below).
Output:Variable,
<name of floor surface object>, !- Key Name
Surface Outside Face Temperature, !- Variable Name
timestep; !- Reporting Frequency
EDIT
After looking at your IDF and EPW file (thanks for sharing a link in your comment below), the zone air temperature only falls below outside air drybulb temperature at night. This is because while there is conduction heat gain entering the zone (hotter drybulb air outside the zone than inside), there are still radiation heat exchanges between all surfaces to their surroundings. This means that the surfaces radiate to the surrounding sky temperature as well as to the surrounding ground surface temperature. In my screenshot below looking at these outputs from your IDF, we can see that both sky and ground surface temperatures are much colder than outside air drybulb. This causes greater heat losses leaving the surfaces via radiation than the heat gains entering the surfaces via conduction.
The surface ground temperature is constant because that is set in the header section of the EPW file and not something that changes hourly. This is an "open field" measurement for undisturbed top soil/grass/etc. without any structures sitting on it.
EnergyPlus calculates sky temperature based on horizontal infrared radiation from sky, cloudiness factors and current temperature. You can set the sky temperature using the WeatherProperty:SkyTemperature object instead.