Changes touching this path

  • the forge /fetch overlaps the blob GETs it serves instead of asking R2 for one object at a time: serve.rs bundle_within hands the rideable addresses to fetch_bytes, which runs up to MAX_CONCURRENT_GETS (16) scoped threads over a shared queue, asks the walk budget before each get, stops every thread at the first refusal, fails the walk on a refused get and answers in the order asked, so the bundle is byte for byte the one the serial walk built. the Tickets view read of every ticket file (5,484 today) answered 503 past the 15 s budget; against a blob tier that sleeps 3 ms a get, a fetch of 5,500 objects went from a 503 at 15.0 s after 4,388 gets to an answer in about 1.1 s with 5,500 gets and 16 in flight. the Tickets view now shows the forge text/plain reason after its own sentence when the forge refuses (forgeRefusal in data.ts). pinned in the serve.rs fetch_latency tests and site/test/workbench-tickets-refusal.test.ts. red under named mutations, each restored, over the 4 fetch_latency tests: one get at a time (3 passed and 1 failed), 64 in flight (3 and 1), the budget asked once before the fan-out (3 and 1), a refused get read as absent (3 and 1), threads that ignore a refusal (3 and 1), and answers filed one index over (3 and 1); in the site, the forge reason dropped (2 and 2) and a body of any type shown (3 and 1). cargo test green, 4762 passed over 145 binaries with 13 ignored, and the site gate green at 881 passed. owes a forge deploy and a site deploy (mmxkront) 6ecbb6bd · dbf3dbe6…

Renames are not followed. loot's tree maps a path to an address, so a rename is a delete and an add. This list is the history of the name, not of the bytes.