By: Jörg Thalheim <joerg@thalheim.io>
server,client: record uploads at completion with real refs and size Register objects with the refs and size from their pending_objects row instead of empty refs and unknown size, so object_stats stays accurate. Fail the multipart completion request if registration fails, before the tracking row is dropped, so a client retry can re-attempt the idempotent insert. Add POST /api/uploads/complete so presigned (non-multipart) uploads -- narinfos, listings, build logs, realisations, small NARs -- are also recorded when they finish. Otherwise a closure that never commits leaves them unknown to the objects table and every later closure re-uploads them. The client notifies the server best-effort after each presigned PUT.
| Time to Start | Worker time | Duration | Time to finish | Idle | |
| Config | 40s | 2s | 2s | 43s | 40s |
| Eval | 43s | 25s | 25s | 1m09s | 0s |
| Build | - | - | - | - | 9m57s |
| Suite | 40s | 28s | - | - | 10m38s |