package execx // TestHookLogf runs one orchestration or CLI step. // Signature: TestHookLogf(r *Runner, format string, args ...any). // Why: top-level testing module still needs to hit the nil-logger branch // directly while runner tests move out of the root module. func TestHookLogf(r *Runner, format string, args ...any) { r.logf(format, args...) }