Lab capacity admission

Lab execution samples available_parallelism and the first /proc/loadavg value before admission. The policy is min(limit, max(1, floor(cpus - load))): load can lower the configured runner concurrency limit, never raise it. A single slot remains available for forward progress on a saturated host. Missing or invalid load data falls back to the CPU bound. Existing work is not killed when load rises.

The budget is applied at one point: detached Cook execution steps (heavy provider/gate work) take a FIFO slot before launching. A waiting step polls actively and releases its ticket on cancellation, so it cannot block the queue. Launcher steps do not hold a slot while waiting for a nested execution step. Runner job reservations keep their configured concurrency limit unchanged. Waiting progress reports waiting_for: lab_capacity, queue_position, load_average_1m, and effective_budget. eta_seconds is null: load and provider durations do not support an honest completion estimate.

homeboy agent-task capacity includes Lab observations alongside provider account capacity. homeboy runner doctor includes a lab_capacity check. Observations come from the execution daemon, not the controller’s CPU/load. Disconnected or older daemons without the endpoint cannot supply observations.

Detached child handles retain wait ownership on early supervisor returns; reapers wait only their own child PID and do not steal other command statuses. This does not stop attempt servers or change provider error classification. Those remain follow-ups to #17603 (Refs #17455).