The most common root cause we see for this is when there some networking layer (nginx, load balancer, etc) that limits the http request body (e.g. 1MB request limit). This prevents the runner from being able to upload the full logs when the pipeline completes. Hence why you see logs streaming (log streams are volatile) but after the pipeline completes the full logs cannot be loaded.