The allocator needs to hand out the lowest available IPv4 host addresses from a bounded pool. Implement allocation so reserved and occupied addresses are excluded and exhaustion is reported correctly.
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 a strict IPv4 network CIDR containing at most 4096 addresses, reserved IPv4 addresses within that network, and nonnegative integer count. Return the lowest count unreserved usable hosts. Exclude network and broadcast for prefixes below /31; both /31 addresses and the /32 address are usable. Duplicate reservations have no extra effect. Reject non-IPv4, noncanonical networks, out-of-network reservations, invalid count or insufficient usable addresses. This returns a plan only.
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.