-- How long a phase has been waiting on a judge it cannot reach. -- -- `Verdict.error` distinguishes "could not judge" from "judged incomplete", and -- until now nothing acted on it: an unreachable judge counted as a failed pass, -- so an outage on the validator's side spent the phase's iteration budget. -- Mission 01a011bf lost its script phase that way — the work was done and -- committed, glm-5.3 returned "transport error: error decoding response body", -- and with two passes budgeted that one unreachable judge failed the phase. -- -- Not consuming the pass is right, but it cannot mean retrying forever: a -- permanently unreachable judge would leave the phase `evaluating` in silence, -- which trades a wrong failure for an invisible hang. This column is the clock -- that bounds the wait, exactly as `capacity_blocked_since` bounds a phase -- waiting for a VM slot. -- -- Set on the first unreachable verdict, cleared the moment a real verdict -- lands. NULL therefore means "not currently blocked", not "never was". ALTER TABLE mission_phases ADD COLUMN IF NOT EXISTS judge_blocked_since TIMESTAMPTZ; COMMENT ON COLUMN mission_phases.judge_blocked_since IS 'When this phase first got an unreachable-judge verdict. Cleared when a real verdict lands; bounds how long an evaluating phase may wait before it is failed with the transport reason.';