# Sprint Contract: Linear Static Workflow ## Objective Rebuild or verify the full linear static workflow from parsed `Domain` to `AnalysisModel`, `AnalysisState`, solve, `U` and `RF` result fields. ## Required Reading - /AGENTS.md - /docs/ARCHITECTURE.md - /docs/ADR.md - /docs/RESULTS_SCHEMA.md - /docs/NUMERICAL_CONVENTIONS.md - /docs/MITC4_FORMULATION.md ## Scope - Build the active `AnalysisModel` for one linear static step. - Run the template workflow: build DOF map, assemble, apply constraints, solve, reconstruct full vectors, recover RF, write results. - Keep `Domain` immutable and `AnalysisState` mutable. ## Allowed Files - `include/` - `src/` - `tests/` - `PLAN.md` - `PROGRESS.md` ## Explicit Non-Goals - Do not implement nonlinear, dynamic, pressure, or thermal behavior. - Do not add multiple-step execution unless already trivial and tested. - Do not make HDF5 dependency mandatory if the current minimal writer remains the accepted Phase 1 path. ## Tests To Write First - Input-to-analysis-model activation test. - End-to-end small linear static solve with `U` and `RF`. - Result schema field label and frame tests. - Full-vector reaction balance test. - Missing/unsupported input negative tests routed through the workflow. ## Reference Artifacts - Normalized small `.inp` fixtures may be used. - Stored Abaqus CSV regression is reserved for step 14. ## Acceptance Commands ```bash python scripts/validate_workspace.py ``` ## Evaluator Checklist - Workflow follows architecture boundaries. - `AnalysisState` owns mutable vectors. - Results use documented step/frame/field structure. ## Handoff Requirements - Record end-to-end workflow readiness in `PROGRESS.md`. ## Do Not - Do not bypass validators to make a model solve.