The release archive should contain only files allowed by the packaging policy. Implement the file selection command so include patterns, exclusions and unsafe paths are handled consistently.
Build the implementation in Bash under /app, with /app/run.sh as its entry point. Read one JSON request from standard input and write one JSON result to standard output. Input has files (relative POSIX paths), include and exclude glob patterns. Apply fnmatchcase semantics to whole paths: * can match /. Exclusion wins; deduplicate and sort selected paths. Reject any file path that is empty, absolute, contains backslashes or has empty, dot or dot-dot components. Patterns are trusted policy strings. Empty include selects nothing.
Reject inputs that violate an explicit validation rule with exit status 2, no standard output, and {"error":"invalid_input"} on standard error. For valid input, exit with status 0. Keep the implementation reusable for new inputs; it must work offline and must not depend on the example data being the only data it receives.
Repair or replace the unfinished /app/run.sh and add source files under /app. Malformed JSON must use the same invalid-input response. Do not read /tests or /oracle from the application.