The eventual consistency of S3 objects is only for overwrite PUTS and DELETES:
Amazon S3 offers eventual consistency for overwrite PUTS and DELETES in all Regions.
For new objects, there is read-after-write consistency :
Amazon S3 provides read-after-write consistency for PUTS of new objects in your S3 bucket in all Regions with one caveat. The caveat is that if you make a HEAD or GET request to a key name before the object is created, then create the object shortly after that, a subsequent GET might not return the object due to eventual consistency.
Therefore when overwriting the same object that CP is using, eventual consistency applies.
To supplement @ChrisWilliams answer, as he correctly explains versioning, you can also observe and verify that version numbers are used in the CodePipeline console:
