# Step 7: math-solver-adapters ## Sprint Contract ### Objective Implement vector, sparse matrix, and linear solver interfaces plus a deterministic test solver adapter while preserving future MKL/TBB adapter boundaries. ### Required Reading - /AGENTS.md - /PROGRESS.md - /PLAN.md - /docs/README.md - /docs/HARNESS_ENGINEERING.md - /docs/ARCHITECTURE.md - /docs/ADR.md - /docs/NUMERICAL_CONVENTIONS.md - /phases/1-linear-static-mitc4/step6.md ### Scope - Add minimal vector and sparse matrix abstractions needed by assembly and linear static solving. - Add a linear solver interface with deterministic test implementation. - Keep MKL/TBB-specific code behind adapter boundaries if any placeholder is added. - Surface solver singularity diagnostics in a structured way. ### Allowed Files - `include/**` - `src/**` - `tests/**` - `docs/ADR.md` if adapter decisions need clarification - `PLAN.md` - `PROGRESS.md` - `phases/1-linear-static-mitc4/index.json` ### Explicit Non-Goals - Do not require Intel oneAPI installation for Phase 1 unit tests. - Do not expose MKL, TBB, or HDF5 APIs in solver core headers. - Do not implement element assembly or analysis algorithms in this step. ### Tests To Write First - Sparse pattern and insertion tests with int64 indices. - Deterministic small linear solve tests. - Singular solve diagnostic tests. - Adapter-boundary tests or compile checks showing core APIs do not include MKL/TBB headers. ### Reference Artifacts - None. ### Acceptance Commands ```bash python scripts/validate_workspace.py ``` ### Evaluator Checklist - Core math interfaces are dependency-clean. - Singular solver failures produce diagnostics, not crashes or silent NaNs. - Tests cover sparse storage, solve success, and solve failure. - Future MKL acceleration remains possible without changing solver core contracts. ### Handoff Requirements - Record math interfaces, validation, and adapter caveats in `PROGRESS.md`. - Update `PLAN.md` if MKL/TBB integration becomes a future task. - Update the matching phase index entry: use `completed` with a one-line `summary`, or `blocked` with `blocked_reason`, or `error` with `error_message`. ## Verification 1. Run the acceptance command. 2. Inspect public headers for third-party API leakage. ## Do Not - Do not optimize sparse storage before correctness and testability are established.