7e2663360f
- Capped directory-alias rewrites per lookup (ELOOP-style, 40) so a directory symlink targeting its own subtree (a -> a/b) throws a catchable ToolError instead of looping forever growing the path. - Deferred pending tar link resolution while any directory on the target path is itself an unresolved link, and rewrote targets through established directory aliases before the exact-path lookup, so file symlinks routed through directory aliases materialize instead of dangling. - Regression tests reproduce both shapes: pre-fix the aliased symlink read failed with 'cannot be materialized' and the self-cycle read hung.