# Step 0: runtime-storage-contract ## Read First Read these files before editing: - `/AGENTS.md` - `/docs/PLAN.md` - `/docs/PROGRESS.md` - `/docs/WORKNOTE.md` - `/docs/AGENT_RULES.md` - `/docs/ARCHITECTURE.md` - `/docs/ADR.md` - `/docs/implementation-plans/domain-model-foundation-implementation-plan.md` - `/docs/implementation-plans/analysis-model-objects-implementation-plan.md` - `/include/fesa/core/Domain.hpp` - `/src/core/Domain.cpp` ## Task Create `/docs/implementation-plans/domain-runtime-storage-implementation-plan.md`. The plan must state that `Domain` owns runtime model objects as its canonical storage: - nodes remain value objects under `fesa::core::Node`; - elements are stored as `fesa::element::Element` objects; - materials are stored as `fesa::material::Material` objects; - shell properties are stored as `fesa::property::ShellProperty` runtime objects; - loads are stored as `fesa::load::Load` objects; - boundary conditions are stored as `fesa::boundary::BoundaryCondition` objects; - steps may remain `LinearStaticStepDefinition` until an analysis-step object is introduced, but step indices must reference runtime load and boundary containers; - `core::*Definition` classes may remain as parser/factory-local records, but `Domain` must not persist them. The plan must also list the migration order and identify the C++ tests that will be rewritten or added. ## Tests To Write First - Documentation-only step. No C++ test is required in this step. ## Acceptance Criteria ```powershell python -m unittest discover -s scripts -p "test_*.py" ``` ## Verification Notes 1. Confirm the plan does not introduce parser implementation work. 2. Confirm the plan does not change MITC4 formulation, reference artifacts, or tolerance policy. 3. Update `phases/domain-runtime-storage/index.json` for this step result.