Minimal end-to-end (no UI)