Changes touching this path
- the accidental public surface is narrowed, and the backstop is STRUCTURAL rather than a habit: pub mod textdiff becomes a private module plus a two-name re-export, so the module public surface is EXACTLY the two types the compiler forces out and a future pub added inside ESCAPES NOWHERE - the shape #1828 gave tar. the census was re-run against todays tree rather than trusted, and the premise held for FIVE of six: Delta::iter no longer has zero callers, it has two in-crate ones, from #1498 and from the hunk picker that landed HOURS AGO, which is exactly why a caller census taken nine days earlier is a claim and not a fact. Endpoint::change is DELETED rather than narrowed, because it had zero callers FROM BIRTH and Endpoint::Change carries a public oid - a caller matching that variant already holds what the accessor would restate, so narrowing dead code only makes it cheaper to keep. Hunk and Edit STAY public and the reason is the compiler: a public variant may not carry a private type, so their justification is DERIVABLE rather than asserted. and that is the rule AC2 asked for, written where a reader meets it first rather than as a list of the six: the test is NAME THE CALLER THAT CANNOT REACH IT ANY OTHER WAY, only three kinds of caller exist here, and the TypeScript SDK is NOT one of them - it spawns the binary under ADR 0040 and the wasm face links the codec and never the cli, so an embedder needs it could not have justified ANY of the six. a type can be forced public by E0446 and a function, method or constant NEVER is, so each needs its own stated reason: pub(crate) without an out-of-crate caller, deleted rather than narrowed without an in-crate one. the doc explicitly DECLINES to enumerate which item falls where and says why, because a list asserted as complete is the class this repo has now found six times in a day. the narrowing is proved by a throwaway out-of-crate probe that fails to compile SIX WAYS - four E0603, one E0624 and one E0599 for the deletion - with a positive control in the same file that compiles green, since a probe where everything fails proves only that the file is broken (#1553)
7b3d33bf · 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.