archiver v8 (installed) uses a class-based API (`ZipArchive`) rather than the factory-function API most examples online still describe — adjusted createZip() to match after the first test run surfaced the mismatch. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>