The retry scheduler is consuming one more attempt than the configured budget allows. Repair the attempt counting and backoff behavior so the schedule stops at the right point.
Build the implementation in Go 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 max_attempts positive integer, base and cap nonnegative integers, and outcomes list of booleans. Consume outcomes up to max_attempts, stopping at first true. Return attempts, success and delays before each attempted retry: min(cap, base*2**(retry_index-1)), first retry index 1. Never schedule a delay without another supplied outcome. Invalid budget 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.