The engine already distinguishes SourceNone from SourceRateLimited internally but collapsed both into Skipped. Expose the source string so the runner can persist the right transcript_status and apply rate-limit backoff, without the engine taking on any store/retry concern (dependencies still point inward). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>