# Step 0: domain-contract ## Read First Read these files before editing: - `/AGENTS.md` - `/docs/PLAN.md` - `/docs/PROGRESS.md` - `/docs/WORKNOTE.md` - `/docs/AGENT_RULES.md` - `/docs/PRD.md` - `/docs/ADR.md` - `/docs/ARCHITECTURE.md` - `/docs/implementation-plans/README.md` ## Task Create `/docs/implementation-plans/domain-model-foundation-implementation-plan.md`. The document must define the first C++ implementation slice for the `Domain` model container. It must explicitly state: - `Domain` owns parsed model definitions only. - Included model definitions: nodes, elements, materials, shell properties, node sets, element sets, boundary conditions, nodal loads, and analysis step definitions. - Excluded state: equation ids, sparse matrix state, displacement vectors, residuals, reactions, current time, iteration counters, and element integration point state. - `DofManager` owns equation numbering. - `AnalysisModel` owns step-local execution views. - `AnalysisState` owns mutable solution and iteration state. - All ids use signed 64-bit storage. - Node DOF order is `U1, U2, U3, UR1, UR2, UR3`. - Units are user-consistent and not enforced by `Domain`. - No Abaqus, Nastran, reference solver, HDF5 result, MKL, or TBB behavior is implemented in this phase. Use the implementation-plan README template. Set: - `feature_id: domain-model-foundation` - `status: ready-for-implementation` - `owner_agent: implementation-planning-agent` - `date: 2026-06-08` Include a work breakdown and TDD test plan for the following downstream steps: 1. CMake/CTest bootstrap. 2. Core id and DOF types. 3. Node and node storage. 4. Element definition storage. 5. Material, property, and set storage. 6. Boundary condition, nodal load, and step storage. 7. Domain invariant tests. 8. Validation report and handoff. ## Tests To Write First This is a documentation planning step. Do not write C++ production code in this step. ## Acceptance Criteria Run: ```powershell python -m unittest discover -s scripts -p "test_*.py" python scripts/validate_workspace.py ``` The current repository may still take the no-CMake informational path until Step 1 creates CMake files. Update `/phases/domain-model-foundation/index.json` step 0: - On success: `"status": "completed"` and a one-line `"summary"`. - On repeated failure: `"status": "error"` and a concrete `"error_message"`. - On user decision needed: `"status": "blocked"` and a concrete `"blocked_reason"`. ## Do Not - Do not create C++ headers, sources, tests, or CMake files in this step. - Do not change requirements, formulation, I/O contracts, reference artifacts, or tolerance policy. - Do not run Abaqus, Nastran, or any reference solver.