Follow-up cleanup in `crates/warp-core/src/tick_patch.rs`: - Avoid double map lookups in `diff_store` and expand rustdoc (intent/invariants/semantics/edge cases/perf). - Use `thiserror` for `TickPatchError`. - Document that `encode_ops` tag bytes are distinct from replay ordering (`WarpOp::sort_key`). - Dedupe duplicate ops in `WarpTickPatchV1::new` to prevent replay errors. - Alias `crate::ident::Hash` to `ContentHash` to avoid confusion with `derive(Hash)` on `SlotId`. This is mechanical hygiene to keep the tick patch boundary deterministic and harder to misuse.