Commits on May 2, 2026 refactor(core): publish Hash::short / short_hash_str / resolve_run_or… …_trace_hash; drop dead exports Phase C of the cleanup sweep. Three related wins. 1. Hash::short() and short_hash_str() in morph-core. morph-cli and morph-mcp each defined an identical "fn short_hash(h: &str) -> String { h.chars().take(8).collect() }" helper, called 40+ times across the two binaries. Both are now replaced by: - Hash::short(&self) -> String — the natural API for the 90% of call sites that already have a Hash. Eliminates the short_hash(&hash.to_string()) string-allocation chain. - short_hash_str(&str) -> &str — a zero-alloc &str -> &str prefix slice for the rare path that's already holding a plain String (e.g. h_str = h.to_string() reused in a loop). Both are exported from morph_core; the CLI and MCP imports pick them up. The CLI keeps its own thin short_hash_str test pinning the truncate-to-8-chars contract. 2.…