Shell metacharacter boundary evidence (no RCE): 4.16.0 shell-meta payload delivered as literal argv=true; marker created by shell expansion=false 4.18.3 shell-meta rejected before subprocess=true; marker created=false ProcessBuilder is list-based: metacharacters are NOT shell-interpreted, so no command execution. Path-traversal evidence (argument injection -> file written outside intended directory): 4.16.0 (no validation): --artifacts-path with ../ traversal reaches subprocess=true; marker file written outside intended dir=true (at /tmp/atk_trav_416/marker.txt) 4.18.2 (denylist): traversal value containing ../ rejected before subprocess=true 4.18.3 (fixed): traversal value rejected by validatePathSafety=true