Gradient clipping needs one norm across all parameter tensors. Implement the update so the tensors share the same clipping decision rather than being scaled independently.
Build the implementation in C++ 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 nonnegative finite max_norm and gradients as lists of finite numeric values. Compute the L2 norm over all values and scale every gradient by min(1,max_norm/norm), using scale 1 for zero norm. Return norm and gradients rounded to six decimals. Reject negative or nonfinite max_norm and nonfinite gradients.
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.