The next page sometimes skips records when several records share a timestamp. Repair the pagination behavior so the cursor identifies a stable boundary and every eligible record appears once.
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 records with unique string id and integer time, nullable cursor [time,id], and positive integer limit. Sort by (time,id), return records strictly after cursor, up to limit, and next_cursor [time,id] only if additional records remain. Duplicate IDs and invalid limits must be rejected. A cursor need not correspond to a stored row.
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.