Run-logs in /var/log/agent/runs/ zijn timestamp-named, dus de output van
een specifieke job was alleen via grep te vinden. De map jobs/ bestond al
maar werd niet gevuld.
- run-agent.sh: geeft het run-log-pad door als RUN_LOG env-var aan
run-one-job.ts.
- run-one-job.ts: legt direct na de claim een symlink
jobs/<job_id>.log -> ../runs/<ts>.log. Relatief pad (overleeft de
host bind-mount), best-effort (faalt de job nooit over een log-gemak).
- log-cleanup.sh: ruimt dangling per-job symlinks op met `find -xtype l`
— nodig omdat rotate-logs.sh het doel na 24u gzipt (.log -> .log.gz)
of na 30d verwijdert, en de bestaande `-type f` cleanup symlinks niet
raakt.
Functioneel geverifieerd: symlink resolveert, dangling-prune werkt,
`-type f` negeert de symlink (geen voortijdige delete). run-one-job.ts
parseert schoon (node --check + type-strip).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- entrypoint.sh: chown → chmod a+rwX → fail-fast met diagnostiek voor
AGENT_STATE_DIR en AGENT_LOG_DIR. Lost stille state.json permission
denied op QNAP-share op (NAS-ACL blokkeert chown vanuit container).
- bin/log-cleanup.sh: nieuwe hard-delete >2d (env-tunable) naast de
conservatievere rotate-logs.sh (gzip 24u, delete 30d).
- run-agent.sh: roept log-cleanup.sh aan bij startup en elke iteratie.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>