BSD head (macOS) doesn't support negative line counts like GNU head.
Use `sed '$d'` instead of `head -n -1` to remove the last line.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace ansible loops for torrent syncing and ZIM symlinking with
standalone shell scripts that handle all items in a single pass:
- kiwix-sync-torrents.sh: Reads torrent URLs from file, adds missing
ones to transmission in one execution
- kiwix-symlink-zims.sh: Symlinks all completed ZIM files from download
directory to kiwix directory in one pass
- kiwix-torrents.txt: Generated list of torrent URLs from inventory
This reduces ansible output noise and improves execution speed by
avoiding per-item task invocations.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Ansible's tag accumulation behavior prevents proper role deduplication
when using meta/main.yml dependencies. When a role is pulled in as a
dependency, the parent role's tags are added to the dependency's tags,
making them appear as different invocations to Ansible.
Role ordering is now controlled entirely by indri.yml playbook.
Also fixes incorrect roles path in CLAUDE.md (was playbooks/roles,
should be just roles).
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>