# Todo 45.7 Structured Incomplete Mixed Validation Plan **Status:** done ## Result Separated fallback eligibility from incomplete-result normalization. Structured `complete=False` no longer bypasses enum, type, or additional-property errors; optional-only incomplete and pure missing-only paths remain eligible. ## Goal Ensure a structured resolver's explicit `complete=False` signal cannot trigger LLM fallback when the resolved arguments also contain substantive validation errors. ## Scope - Add structured-incomplete regressions for required plus enum, type, and additional-property failures. - Compute fallback eligibility before converting optional-schema incomplete results into `INVALID_ARGUMENTS`. - Allow fallback only for pure missing-only validation or explicit incomplete with no substantive validation error. ## Files - Modify: `src/agent_lab/application/events/kernel.py` - Modify: `tests/test_event_kernel.py` ## Requirement Execution Loop ### Plan 1. Add RED tests proving `EventArgumentResolution(..., complete=False)` plus mixed substantive errors currently calls fallback. 2. Separate `fallback_eligible` from the normalized invalid result status. 3. Preserve optional-only explicit incomplete fallback and pure required-missing fallback. 4. Run focused/full tests and final bounded reviews. ### Observe / Update Close Todo 45 only when the named reproductions pass and no Critical/Important findings remain. ## Verification - `UV_CACHE_DIR=.uv-cache uv run pytest tests/test_event_kernel.py -q` - `UV_CACHE_DIR=.uv-cache uv run pytest` - `git diff --check`