# Step 5: property-section-model ## Read First Read these files before editing: - `/AGENTS.md` - `/docs/AGENT_RULES.md` - `/docs/ARCHITECTURE.md` - `/docs/implementation-plans/analysis-model-objects-implementation-plan.md` - `/include/fesa/core/PropertyDefinition.hpp` ## Task Add shell property/section model object. Allowed files: - Create `/include/fesa/property/ShellProperty.hpp` - Create `/src/property/ShellProperty.cpp` - Create `/tests/property/shell_property_test.cpp` - Modify `/CMakeLists.txt` Required behavior: - Stores property id, material id, and thickness. - Exposes const accessors. - Rejects non-positive thickness with `std::invalid_argument`. - Does not compute shell section stiffness. ## Tests To Write First Write `/tests/property/shell_property_test.cpp` before production changes: - Valid property stores id/material/thickness. - Zero or negative thickness throws. Run targeted build and confirm RED. ## Acceptance Criteria Run: ```powershell python scripts/validate_workspace.py ctest --test-dir build/msvc-debug --output-on-failure -C Debug -R model-object ``` Update step 5 status. ## Do Not - Do not implement membrane, bending, or shear constitutive stiffness.