# Sprint Contract: Assembly Analysis Extraction ## Objective Move full-space assembly, reduced projection, reaction recovery path, analysis state/result objects, and linear static workflow into `Assembly` and `Analysis` while preserving Phase 1 solver behavior. ## 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 - /docs/RESULTS_SCHEMA.md - /docs/MITC4_FORMULATION.md - /docs/VERIFICATION_PLAN.md - /phases/1-structure-alignment-refactor/step0-architecture-map.md - /phases/1-structure-alignment-refactor/step2.md - /phases/1-structure-alignment-refactor/step3.md - /phases/1-structure-alignment-refactor/step5.md - /phases/1-structure-alignment-refactor/step7.md ## Scope - Extract `AssemblyResult`, `ReducedSystem`, full-space assembly, reduced projection, and full-vector reaction recovery helpers into `Assembly`. - Extract `AnalysisState`, `AnalysisResult`, `Analysis`, `LinearStaticAnalysis`, and input-to-analysis convenience workflow into `Analysis`. - Keep Strategy + Template Method structure visible. - Preserve `RF = K_full * U_full - F_full`. - Preserve solver adapter injection and deterministic default solver behavior. ## Allowed Files - `include/fesa/fesa.hpp` - `include/fesa/Assembly/` - `src/Assembly/` - `include/fesa/Analysis/` - `src/Analysis/` - `include/fesa/Core/` - `include/fesa/Element/` - `include/fesa/Math/` - `include/fesa/Results/` - `include/fesa/IO/` - `tests/` - `CMakeLists.txt` - `phases/1-structure-alignment-refactor/index.json` - `PLAN.md` - `PROGRESS.md` ## Explicit Non-Goals - Do not change solve algorithms, convergence logic, boundary-condition semantics, or result schema. - Do not add nonlinear, dynamic, heat-transfer, pressure-load, RBE, or HDF5 behavior. - Do not compute reactions from reduced quantities. - Do not add production sparse storage beyond the existing scaffold. ## Tests To Write First - Add or update include/link tests for `Assembly` and `Analysis` module headers. - Preserve assembly, reduced solve, solver injection, full-vector RF, input-to-result workflow, and `quad_02_phase1` reference regression tests as characterization tests. ## Reference Artifacts - `references/quad_02_phase1.inp` - `references/quad_02_displacements.csv` Do not edit these files. ## Acceptance Commands ```bash python scripts/validate_workspace.py ``` ## Evaluator Checklist - Assembly owns full-space stiffness/load preservation and reduced projection. - Analysis owns execution flow and state updates. - `DofManager` remains the owner of equation numbering and full/reduced mapping. - Full-vector RF recovery is unchanged. - `quad_02_phase1` displacement regression still passes. ## Handoff Requirements - Update this step status in `phases/1-structure-alignment-refactor/index.json`. - Record moved assembly/analysis files and any remaining production implementation still left in `fesa.hpp`. ## Do Not - Do not hide a behavior change under the label "refactor". - Do not broaden Phase 1 feature scope.