# Step 0: analysis-contract-plan ## Read First Read these files before editing: - `/AGENTS.md` - `/docs/PLAN.md` - `/docs/PROGRESS.md` - `/docs/WORKNOTE.md` - `/docs/AGENT_RULES.md` - `/docs/PRD.md` - `/docs/ADR.md` - `/docs/ARCHITECTURE.md` - `/docs/implementation-plans/analysis-model-objects-implementation-plan.md` - `/docs/implementation-plans/property-model-foundation-implementation-plan.md` - `/include/fesa/core/Domain.hpp` - `/include/fesa/core/ModelTypes.hpp` - `/include/fesa/core/StepDefinition.hpp` - `/CMakeLists.txt` ## Task Create `/docs/implementation-plans/analysis-state-analysis-base-implementation-plan.md`. The document must define the implementation contract for: - `fesa::core::AnalysisState` as mutable analysis state storage. - `fesa::analysis::Analysis` as the base analysis strategy interface. - A dedicated CTest path for analysis-layer tests. State explicitly that this phase does not implement: - `AnalysisModel` - `DofManager` - MITC4 stiffness, stress, resultants, or force recovery - global assembly - constrained DOF elimination - MKL/PARDISO solve - HDF5 result writing beyond existing skeletons - reference comparison - Abaqus/Nastran/reference-solver execution ## Tests To Write First This is a documentation planning step. Do not write C++ production code in this step. ## Acceptance Criteria Run: ```powershell python -m unittest discover -s scripts -p "test_*.py" python scripts/validate_workspace.py ``` Update `/phases/analysis-state-analysis-base/index.json` step 0 with `completed`, `error`, or `blocked`. ## Do Not - Do not change C++ code in this step. - Do not change requirements, formulations, I/O contracts, reference artifacts, or tolerance policy.