Evaluator completion must distinguish dry runs from failed judgments

Finishing an evaluator loop does not mean the requested judgments completed. A provider or parser failure can be converted into an unassessed finding while an outer runner incorrectly stamps the entire dimension roster as finished. Cached failures can make a later dimension look complete without another callback.

Track dry-run sentinels separately from real failures. Mark interrupted dimensions explicitly; carry shared callback failures into dependent dimension completion metadata while retaining any valid findings. Zero returned responses is not sufficient evidence that a run was dry. Also distinguish deterministic preparation checks from semantic verdicts: an argument-ledger enumeration PASS does not establish correct argument values.

Applies when: multiple evaluator dimensions share cached callbacks and exceptions are converted into unassessed results. Keywords: evaluator completion preflight cached failure interruption accounting unassessed semantic