# Step 4: material-step-load-parser ## Read First Read these files before editing: - `/AGENTS.md` - `/docs/PRD.md` - `/docs/ARCHITECTURE.md` - `/docs/ADR.md` - `/docs/io-definitions/abaqus-input-parser-io.md` - `/src/fesa/model/material.hpp` - `/src/fesa/model/analysis_step.hpp` - `/src/fesa/model/boundary_condition.hpp` - `/src/fesa/model/load.hpp` - `/src/fesa/io/abaqus/input_parser.hpp` - `/src/fesa/io/abaqus/input_parser.cpp` Review completed parser and model tests first. ## Task Extend the parser for the V0 material and history data subset. Required behavior: - Parse `*MATERIAL, NAME=` and `*ELASTIC` data into the internal material representation. If the current `Material` model cannot store elastic data, add the smallest semantic extension with tests. - Parse `*STEP` and `*STATIC` into ordered `AnalysisStep` definitions. - Parse `*BOUNDARY` rows into step boundary conditions using existing `DofComponent` mapping. - Parse `*CLOAD` rows into step concentrated loads using existing `DofComponent` mapping. - Parse `*OUTPUT`, `*NODE OUTPUT`, and `*ELEMENT OUTPUT` only to the extent documented in the I/O contract. If semantic storage is not yet present, record an explicit ignored-with-warning diagnostic rather than inventing output model APIs. ## Tests To Write First Add focused C++ tests before production code: - model tests for any new material or output request semantic fields; - parser tests for material/elastic, step/static, boundary, and cload rows. Run targeted CTest and confirm the tests fail before implementation. ## Acceptance Criteria ```powershell ctest --test-dir build/msvc-debug --output-on-failure -C Debug -R "(model_|abaqus_input_parser_)" python -m unittest discover -s scripts -p "test_*.py" python scripts/validate_workspace.py ``` ## Verification Procedure Update step 4 status with summary or a concrete error/blocked reason. ## Forbidden - Do not implement analysis execution, assembly, HDF5 writing, or reference comparison in this step. - Do not mutate reference artifacts.