Incoming records use several names for the same field. Finish normalization so accepted aliases produce a consistent schema and conflicting values are rejected before ingestion.
Build the implementation in TypeScript 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 aliases mapping input keys directly to canonical keys and rows of JSON objects. Apply one alias lookup per key, not recursive rewriting. Multiple keys targeting the same output key may merge only if their JSON values are equal. Return normalized rows with sorted keys; conflicting values must be rejected.
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.