The classifier report needs a stable confusion matrix and macro recall. Build it so class ordering and classes with no observations follow the stated reporting rules.
Build the implementation in SQL 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 labels, a list of unique class strings in required matrix order, and pairs [actual,predicted]. Return matrix with actual rows and predicted columns, accuracy, and macro_recall rounded to six decimals. A class absent from actual labels contributes zero recall. Empty input means zero accuracy; empty labels are valid only with no pairs. Reject duplicate or unknown labels.
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.