Declared Job outputs are collected wherever they are written
A Job’s outputs[] entries are now collected from the path they name, not only from /nodus/outputs. A file
is uploaded as it is and a directory as one tar.zst archive; nodus get job/<name> -o jsonpath='{.status.outputs}'
lists them with their sha256, and a directory downloads with format=tar.zst.
.venv, node_modules, .git, .nodus, __pycache__, .cache and symbolic links are left out of every
collected directory, /nodus/outputs included.
A declared output under /, /proc, /sys, /dev, /run/secrets, /run/nodus or /.nodus is refused when
the Job is created. Under gVisor, declare outputs inside /nodus/outputs, the state directory or a Volume; a path
elsewhere fails the Job as InvalidOutputPath.