> Stalls, with the whole machine across each (each run's `machine.csv`):
>
> run 1 stall: qbittorrent progress 11192 ms at 21:04:32Z; the machine: H: 100% busy, queue 4, 223 MB/s; vmmem 1.0 cores
> run 1 stall: deluge progress 10571 ms at 21:04:32Z; the machine: H: 100% busy, queue 4, 223 MB/s; vmmem 1.0 cores
> run 1 stall: rtorrent progress 10368 ms at 21:04:33Z; the machine: H: 100% busy, queue 4, 223 MB/s; vmmem 1.0 cores
> run 1 stall: rbittorrent progress 10243 ms at 21:04:33Z; the machine: H: 100% busy, queue 4, 223 MB/s; vmmem 1.0 cores
> run 1 stall: rtorrent progress 10910 ms at 21:04:44Z; the machine: H: 100% busy, queue 4, 79 MB/s
> run 1 stall: rtorrent progress 2155 ms at 21:04:55Z; the machine: H: 100% busy, queue 1, 71 MB/s
> run 1 stall: rtorrent progress 8626 ms at 21:04:57Z; the machine: H: 100% busy, queue 4, 88 MB/s
> run 2 stall: rtorrent progress 19876 ms at 21:06:15Z; the machine: H: 100% busy, queue 6, 82 MB/s
> run 2 stall: rtorrent progress 2572 ms at 21:06:35Z; the machine: H: 100% busy, queue 6, 79 MB/s
> run 3 stall: qbittorrent progress 2587 ms at 21:08:06Z; the machine: H: 100% busy, queue 6, 98 MB/s
> run 3 stall: rtorrent progress 6030 ms at 21:08:23Z; the machine: H: 100% busy, queue 9, 137 MB/s
> run 4 stall: deluge progress 3187 ms at 21:09:34Z; the machine: H: 100% busy, queue 8, 58 MB/s
> run 4 stall: rtorrent progress 2558 ms at 21:09:56Z; the machine: H: 100% busy, queue 7, 145 MB/s
> run 4 stall: rtorrent progress 3864 ms at 21:09:59Z; the machine: H: 100% busy, queue 8, 230 MB/s
> run 5 stall: qbittorrent progress 2049 ms at 21:11:17Z; the machine: H: 100% busy, queue 9, 0 MB/s
> run 5 stall: rtorrent progress 13757 ms at 21:11:19Z; the machine: H: 100% busy, queue 11, 127 MB/s
> run 5 stall: qbittorrent progress 2080 ms at 21:11:20Z; the machine: H: 100% busy, queue 11, 127 MB/s
> run 5 stall: rtorrent progress 2450 ms at 21:11:45Z; the machine: H: 100% busy, queue 9, 312 MB/s
> run 5 stall: rtorrent progress 2324 ms at 21:11:48Z; the machine: H: 100% busy, queue 4, 93 MB/s
> run 5 stall: rtorrent progress 3061 ms at 21:11:54Z; the machine: H: 100% busy, queue 1, 0 MB/s
> run 5 stall: rtorrent progress 3058 ms at 21:12:01Z; the machine: H: 100% busy, queue 1, 260 MB/s
> run 5 stall: rtorrent progress 4064 ms at 21:12:04Z; the machine: H: 94% busy, queue 4, 251 MB/s
> run 5 stall: rtorrent progress 2582 ms at 21:11:57Z; the machine was quiet
> run 5 stall: rtorrent progress 2070 ms at 21:11:59Z; the machine was quiet

# Race: stock, tracker lag T = 0 s

5 runs; every cell is `median [min-max]` over the runs that produced the number, and every run's own value is in `summary.json`. 1024 MiB private-flag fixture, 2 uploaders, upload slots opened, no stated rate cap, content on H:, every racer added in the same second.

| Client | Configuration | Announce OK (s) | Announce OK after its fetch (ms) | Announces in 1st min | First peer (s) | First bytes (s) | First verified piece (s) | Complete (s) | Upload share @60 s | Upload share @end |
|---|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|
| `rbittorrent` | stock | 0.007 [0.005-0.01] | 2.31 [1.22-4.18] | 3 | 0.02 [0.019-0.023] | 0.067 [0.02-0.115] | 0.1 [0.05-0.116] | 29.2 [1.27-33.1] | 67.7% [5.3-71.8%] | 67.7% [5.3-71.8%] |
| `qbittorrent` | stock | 0.943 [0.861-1.18] | 940.01 [856.36-1174.51] | 2 | 2.01 [1.85-2.2] | 2.01 [1.85-2.2] | 2.01 [1.85-2.2] | 33.9 [31.7-37.1] | 23.7% [3.7-26%] | 23.6% [3.7-26%] |
| `deluge` | stock | 0.486 [0.426-0.505] (4/5) | 478.28 [417.92-498.94] (4/5) | 1 | 0.5 [0.441-0.519] (4/5) | 0.508 [0.441-0.519] (4/5) | 0.567 [0.535-0.67] (4/5) | - | 1.5% [0-6.4%] | 1.5% [0-6.4%] |
| `rtorrent` | stock | 0.009 [0.008-0.013] | 2.56 [2.17-2.82] | 1 | 0.037 [0.008-0.135] | 0.091 [0.037-0.135] | 0.091 [0.081-0.135] | 43.8 [40.4-47.3] (2/5) | 5.9% [4.8-90.9%] | 5.9% [4.8-90.9%] |

`-` is not measured, never zero; `(n/of)` is how many runs produced the number.

Announce OK runs from the race's start, so it carries the order the racers were added in, which changes every run. Announce OK after its fetch starts each client's clock at its own `.torrent` fetch from the harness, so it compares what the clients themselves did; `-` for a client handed the file another way.

First peer, first bytes and first verified piece are read from the client's own poll, every 10 ms until the first verified piece (100 ms after), so they carry up to 10 ms of poll grid. First bytes is the first poll with any downloaded bytes. First verified piece is the first poll at which the client's OWN count of pieces past the hash check was above zero, read from the field named below; never its progress, which counts finished blocks for some clients and verified bytes for others.

- `rbittorrent`: first verified piece read from `pieces_verified`
- `qbittorrent`: first verified piece read from `torrents/properties pieces_have`
- `deluge`: first verified piece read from `pieces`
- `rtorrent`: first verified piece read from `d.completed_chunks`

## The product's add, phase by phase

Milliseconds per add, `median [min-max]` over the runs that produced the line. `Since clock start` is the time from the product's add clock to that mark; `Phase` is the stretch since the mark before it. The clock starts when `whole add` is the clock's total, the product's own time for the add, engine add included.

| Client | Path | Mark | Since clock start (ms) | Phase (ms) |
|---|---|---|---:|---:|
| `rbittorrent` | route | whole add | 0.606 [0.515-0.831] | - |
| `rbittorrent` | route | route_read | 0.031 [0.021-0.328] | 0.031 [0.021-0.328] |
| `rbittorrent` | route | fetch_asked | 0.076 [0.07-0.371] | 0.043 [0.039-0.069] |
| `rbittorrent` | route | refused_before_fetching | 0.554 [0.477-0.795] | 0.432 [0.407-0.522] |
| `rbittorrent` | route | answered_pending | 0.554 [0.477-0.795] | 0 [0-0] |
| `rbittorrent` | applier | whole add | 3.914 [3.081-4.809] | - |
| `rbittorrent` | applier | queued | 0.501 [0.309-1.326] | 0.501 [0.309-1.326] |
| `rbittorrent` | applier | finishing | 0.502 [0.31-1.326] | 0 [0-0.001] |
| `rbittorrent` | applier | preflight | 0.685 [0.358-1.534] | 0.183 [0.048-0.458] |
| `rbittorrent` | applier | source_read | 0.72 [0.412-1.57] | 0.046 [0.035-0.133] |
| `rbittorrent` | applier | located | 0.781 [0.48-1.619] | 0.063 [0.049-0.068] |
| `rbittorrent` | applier | room_nothing_there | 0.877 [0.579-2.011] | 0.098 [0.094-0.392] |
| `rbittorrent` | applier | room_needed | 0.877 [0.579-2.011] | 0 [0-0] |
| `rbittorrent` | applier | room_cached_look | 0.877 [0.579-2.011] | 0 [0-0.001] |
| `rbittorrent` | applier | room_probe_locked | 0.877 [0.579-2.011] | 0 [0-0] |
| `rbittorrent` | applier | room_probe_read | 0.944 [0.651-2.102] | 0.072 [0.061-0.091] |
| `rbittorrent` | applier | room_probed | 0.948 [0.658-2.107] | 0.005 [0.004-0.007] |
| `rbittorrent` | applier | room_checked | 0.95 [0.659-2.109] | 0.002 [0.001-0.002] |
| `rbittorrent` | applier | engine_added | 2.904 [1.97-3.693] | 1.846 [1.3-2.007] |
| `rbittorrent` | applier | started | 2.911 [1.975-3.699] | 0.006 [0.005-0.007] |
| `rbittorrent` | applier | marker | 2.915 [1.979-3.703] | 0.004 [0.004-0.004] |
| `rbittorrent` | applier | rows_written | 3.325 [2.518-4.068] | 0.417 [0.365-0.539] |
| `rbittorrent` | applier | buckets_filed | 3.401 [2.592-4.118] | 0.074 [0.05-0.076] |
| `rbittorrent` | applier | announced | 3.442 [2.637-4.157] | 0.041 [0.039-0.045] |
| `rbittorrent` | applier | published | 3.91 [3.078-4.777] | 0.441 [0.359-0.62] |


## The upload ledger, both witnesses

The tracker's last `uploaded=` per passkey against that client's own polls either side of that announce, per run (a `stopped` announce's later side is the closing poll taken just before the client is stopped, plus what the client's own reported upload rate allows since its API last changed, at most 2 s: an API that publishes a snapshot reads behind the live counter the announce carries). Agreement is the announced value inside the bracket; a disagreement is printed with its distance outside it.

| Client | Runs where they disagreed | Worst disagreement (bytes) |
|---|---:|---:|
| `rbittorrent` | 0 | 0 |
| `qbittorrent` | 0 | 0 |
| `deluge` | 1 | 17800 |
| `rtorrent` | 0 | 0 |

- ⛔ `deluge` announced uploaded=31080448 at t=60.270s, above the 31047680..31047680 bytes its own API reported either side of that announce plus 14968 its own reported rate allows since its API last changed, by 17800 bytes
