feat(rust): port sorter.py — fuzzy matching, plan, hardlink apply
- src/sorter.rs: inspect (zip/7z listing via crates, HTML-page detection), keyword classification with inner-name votes, catalog load with dropped systems, fuzzy matching on the CPython-difflib port (containment boost, generic-token stoplist, tokenless bonus, weak tier, cross-system gates), deepest-dir re-homing incl. provenance unit mode, build_target, hardlink-apply with audit + low-confidence doc, format_plan - all 9 python test_sorter_units.py cases ported and passing - parity fixes found while porting: inner-name votes REPLACE (not max-keep) the outer score below threshold; python max() keeps first maximal vote; ratio cache keyed with allow_single; 512-byte head read for HTML sniff
This commit is contained in: