# Sprint Contract: Validation Singular Diagnostics ## Objective Strengthen domain and analysis-model validation so invalid inputs and singular-prone models fail before or during solve with actionable diagnostics. ## Required Reading - /AGENTS.md - /docs/ARCHITECTURE.md - /docs/NUMERICAL_CONVENTIONS.md - /docs/ABAQUS_INPUT_SUBSET.md - /docs/VERIFICATION_PLAN.md ## Scope - Validate missing nodes, properties, materials, sets, boundary targets, load targets, active elements, and non-positive thickness. - Add singular-prone diagnostics for no free DOFs, untouched free DOFs, missing loads where expected, and unconstrained drilling/rotational risks. - Keep mesh quality diagnostics out of Phase 1. ## Allowed Files - `include/` - `src/` - `tests/` - `PLAN.md` - `PROGRESS.md` ## Explicit Non-Goals - Do not implement mesh quality metrics such as aspect ratio, skew, or warpage. - Do not solve the global system in this step. - Do not hide singular checks in element kernels. ## Tests To Write First - Missing node/property/material diagnostics. - Missing set used by shell section, boundary, or load. - No active elements. - No free DOFs. - Free DOFs untouched by any active element connectivity. - Rotational/drilling weak-constraint diagnostic smoke test. ## Reference Artifacts - Negative inline test inputs may be used. ## Acceptance Commands ```bash python scripts/validate_workspace.py ``` ## Evaluator Checklist - Diagnostics include node id, element id, property id, material id, set name, DOF component, and source line where available. - Mesh quality remains explicitly deferred. - Validation does not mutate `Domain`. ## Handoff Requirements - Record validation coverage in `PROGRESS.md`. - Note any remaining singular-diagnostic gaps in `PLAN.md`. ## Do Not - Do not classify poor element shape as a Phase 1 mesh quality failure.