# Step 6: load-base-interface ## 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/LoadDefinition.hpp` ## Task Add load model base and nodal load object. Allowed files: - Create `/include/fesa/load/Load.hpp` - Create `/include/fesa/load/NodalLoad.hpp` - Create `/src/load/NodalLoad.cpp` - Create `/tests/load/load_base_test.cpp` - Modify `/CMakeLists.txt` Required behavior: - `Load` has virtual destructor and a load kind enum. - `NodalLoad` derives from `Load`. - Stores node id, DOF, and value. - No global vector assembly in this phase. ## Tests To Write First Write `/tests/load/load_base_test.cpp` before production changes: - Access `NodalLoad` through `const Load&`. - Verify kind, node id, DOF, value. - Verify deletion through `std::unique_ptr`. 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 6 status. ## Do Not - Do not assemble forces or apply time/load factors.