| 489 | 489 | | 2026-10-09 answered 503 twice and took 23 s the third time. The next step |
| 490 | 490 | | is to stop needing bases: see "Pushes" in docs/ARTIFACTS.md. |
| 491 | 491 | | |
| 492 | | − | Step 1 of that, built and not yet deployed: the receive-pack advertisement |
| 492 | + | Step 1 of that, deployed 2026-10-09 22:46 UTC (180b34af): the receive-pack advertisement |
| 493 | 493 | | g1t forwards says `no-thin` (`git_http.rs` `with_no_thin`), so git sends |
| 494 | 494 | | every delta's base in the pack and `read` has nothing to fetch: it should |
| 495 | 495 | | fall from 267–318 ms to the few milliseconds it takes to parse the pack, |
| ⋯ |
| 502 | 502 | | (the 503 above came from all of them at once tripping the store's |
| 503 | 503 | | breaker; see docs/ARTIFACTS.md). |
| 504 | 504 | | |
| 505 | + | Measured after it shipped (2026-10-09 ~23:10 UTC, three pushes of 5 small |
| 506 | + | files to flagon-io/automation-lab, the first in a cold isolate): |
| 507 | + | |
| 508 | + | | `receive-pack` step | After step 1 | |
| 509 | + | | --- | --- | |
| 510 | + | | `thin` | `no` on all three | |
| 511 | + | | `read` | 0 ms | |
| 512 | + | | `scan` | 329, 737, 954 ms | |
| 513 | + | | `rules` | 233 (cold), 43, 47 ms | |
| 514 | + | | `upload` | 586, 499, 1,118 ms | |
| 515 | + | | `refs` | 56, 1,774, 51 ms | |
| 516 | + | | Total | 1,089, 3,223, 2,256 ms | |
| 517 | + | |
| 518 | + | `read` is gone, and a large push no longer fans out into store reads that |
| 519 | + | trip the breaker: a 27-commit push of main sent with `--no-thin` just before |
| 520 | + | this deploy took 9 s where the thin one answered 503. A small push is not |
| 521 | + | faster yet. The scan diffs each commit against its parent, so it reads the |
| 522 | + | parent's tree and every older subtree it walks from the store; a thin pack |
| 523 | + | used to bring those trees in as delta bases, so the reads moved from `read` |
| 524 | + | into `scan`. The store was also slow during these runs (`upload` up to |
| 525 | + | 1.1 s, an `info/refs` store step of 1.08 s), so the figures are noisy. |
| 526 | + | |
| 527 | + | The next step for small pushes: after a push is accepted, keep the trees it |
| 528 | + | carried in the data centre's cache under their hashes (the cache |
| 529 | + | `read_tree` already looks in), so the next push to the branch finds its |
| 530 | + | parent's trees there instead of in the store. |
| 531 | + | |
| 505 | 532 | | ## Client navigation |
| 506 | 533 | | |
| 507 | 534 | | - `<Link prefetch="intent">` on the sidebar, project tabs, breadcrumbs, |