# Step 7: boundary-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/BoundaryCondition.hpp` ## Task Add boundary condition model base and single-point constraint object. Allowed files: - Create `/include/fesa/boundary/BoundaryCondition.hpp` - Create `/include/fesa/boundary/SinglePointConstraint.hpp` - Create `/src/boundary/SinglePointConstraint.cpp` - Create `/tests/boundary/boundary_base_test.cpp` - Modify `/CMakeLists.txt` Required behavior: - `BoundaryCondition` has virtual destructor and a boundary kind enum. - `SinglePointConstraint` derives from `BoundaryCondition`. - Stores node id, DOF, prescribed value. - No matrix elimination or reaction recovery in this phase. ## Tests To Write First Write `/tests/boundary/boundary_base_test.cpp` before production changes: - Access `SinglePointConstraint` through `const BoundaryCondition&`. - 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 7 status. ## Do Not - Do not apply constraints to matrices or compute reactions.