Changes touching this path
- the negotiation walk stops re-probing an address once per change that references it, and the spelling that does it is not the one the ticket proposed: a change carries its whole tree (#288), so offered_objects probed the store 218,000 times to produce 935 distinct addresses on a 436-path 500-change fixture, 99.6 percent of it redundant, and the gated point decomposed to 2,328 of its 2,928 object_gets being negotiation alone. The skip is a probed set rather than the ticket body's addrs.contains, because addrs holds only the ACCEPTED set: a withheld (#891), burned or in-flight address is Err on every occurrence, never enters addrs, and would keep paying the full per-change cost - which is also the one case where the probe is a failed file read rather than a memo hit. That difference is not an argument, it is a test: weakening the skip to the ticket's spelling leaves the offer pin green and fails an_address_the_store_does_not_hold_is_refused_once_not_once_per_change at 55 gets where 32 are owed, which is the number its own message predicts. bundle_impl memoises exactly the two address-scoped facts, whether the store can produce it and whether it is ANYONE-granted, and that second one is what kills the per-occurrence linear grant_ids scan; vis and bytes_ride are occurrence-scoped and stay in the loop, and hoisting the Embargoed gate into the memo - the plausible over-reach, and the one a reviewer would have to rule out - was proved red by a peer receiving ciphertext it can never open. locally_missing_objects carries the same shape and is deliberately scoped out rather than folded in: its probe is ObjectStore::contains, which carries no loot_count tally at all, so this ticket's own named signal is structurally blind to it, and under the rule that a change measuring flat does not land it needs an index-probe counter before it needs an edit. The producer spelling is untouched throughout (#1565), so the first probe of every address is unchanged and this is not the contains swap #1559 measured and refused. object_gets falls 2,928 to 743, -74.62 percent against a predicted -74.6, while object_disk_reads stays flat at 200 and offer_addresses, offer_addresses_delta1 and offer_bytes are byte-identical, which is the pin that the answer did not change rather than merely got cheaper. ADR 0073's present-tense cell reading 2,928 on the gated fixture is repointed to name docs/benchmarks/series as the owner of the current figure rather than deleted, and its dated evidence blocks are left exactly as taken (#1701)
Perf-Baseline: reset #1701 dedupes the negotiation walk's per-occurrence store probes, so object_gets drops 2,928 to 743 with every artifact counter and every negotiation counter unmoved
f3cdd5b2 · 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.