SB-7237 Avoid unconditional recursive walk in CONTENT and stream REPORT generation
CONTENT no longer builds the full recursive file listing it never used; REPORT now streams File.iterate_files and writes the xlsx with openpyxl write_only instead of accumulating everything in memory via pandas. Also fixes the add_asset infinite-loop condition and logs the previously silent exception in _move_file.
Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
Closes SB-7237