Run is the composition root for headless mode: it builds the service
container directly, so this presentation package intentionally depends
on internal/container (the depguard leaf rule only polices imports into
presentation, not out of it). cmd/headless.go stays thin flag plumbing.