# Step 4: legacy-definition-extraction ## Read First Read these files before editing: - `/AGENTS.md` - `/docs/AGENT_RULES.md` - `/docs/implementation-plans/domain-runtime-storage-implementation-plan.md` - `/include/fesa/core/Domain.hpp` - `/src/core/Domain.cpp` - `/tests/core/domain_storage_test.cpp` - `/CMakeLists.txt` ## Task Remove parser-definition DTO persistence from `Domain`. Rules: - `Domain` must no longer include or store: - `fesa/core/BoundaryCondition.hpp` - `fesa/core/ElementDefinition.hpp` - `fesa/core/LoadDefinition.hpp` - `fesa/core/MaterialDefinition.hpp` - `fesa/core/PropertyDefinition.hpp` - `Domain` may still include `StepDefinition.hpp` until a runtime step object is designed. - Definition classes may remain in the repository and their focused tests may remain, but they must not be part of Domain storage or Domain public API. - Do not implement parser or factory behavior in this step. ## Tests To Write First - Add or update a compile-time assertion in `/tests/core/domain_storage_test.cpp` or a dedicated domain API test proving Domain retrieval returns runtime types for elements, materials, properties, loads, and boundary conditions. ## Acceptance Criteria ```powershell python -m unittest discover -s scripts -p "test_*.py" python scripts/validate_workspace.py git diff --check ``` ## Verification Notes 1. Confirm no `Domain` method returns a definition DTO except `LinearStaticStepDefinition`. 2. Confirm `include/fesa/element/Element.hpp` no longer includes `ElementDefinition.hpp`. 3. Update `phases/domain-runtime-storage/index.json` for this step result.