# Step 3: step-and-set-runtime-references ## 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` - `/include/fesa/core/StepDefinition.hpp` - `/src/core/Domain.cpp` - `/tests/core/domain_storage_test.cpp` ## Task Make Domain set and step validation reference runtime storage. Rules: - `Domain::addElementSet` must validate ids against runtime elements stored by `Domain::findElement`. - `Domain::addStep(LinearStaticStepDefinition)` may remain for now, but its boundary and load indices must validate against runtime boundary and load containers. - Failed insertions must not mutate Domain counts. - No equation ids, solver vectors, residuals, reactions, current time, or iteration state may be added to Domain. ## Tests To Write First - Rewrite `/tests/core/domain_storage_test.cpp` set and step tests so they build elements, loads, and boundary conditions through runtime object APIs. - Preserve count-stability tests for failed insertions. ## Acceptance Criteria ```powershell ctest --test-dir build/msvc-debug --output-on-failure -C Debug -R domain python scripts/validate_workspace.py ``` ## Verification Notes 1. Run targeted CTest before production edits and confirm failure. 2. Keep `LinearStaticStepDefinition` as the only remaining step record until a separate step-model phase exists. 3. Update `phases/domain-runtime-storage/index.json` for this step result.