feat: add domain model foundation
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
# Step 7: domain-invariants
|
||||
|
||||
## Read First
|
||||
|
||||
Read these files before editing:
|
||||
|
||||
- `/AGENTS.md`
|
||||
- `/docs/AGENT_RULES.md`
|
||||
- `/docs/ADR.md`
|
||||
- `/docs/ARCHITECTURE.md`
|
||||
- `/docs/implementation-plans/domain-model-foundation-implementation-plan.md`
|
||||
- `/include/fesa/core/Domain.hpp`
|
||||
- `/src/core/Domain.cpp`
|
||||
- `/tests/core/domain_storage_test.cpp`
|
||||
|
||||
## Task
|
||||
|
||||
Add tests and small API cleanup to lock down `Domain` invariants.
|
||||
|
||||
Allowed files:
|
||||
|
||||
- Modify `/include/fesa/core/Domain.hpp`
|
||||
- Modify `/src/core/Domain.cpp`
|
||||
- Modify `/tests/core/domain_storage_test.cpp`
|
||||
- Modify `/docs/implementation-plans/domain-model-foundation-implementation-plan.md` only if a test traceability table needs correction
|
||||
|
||||
Required invariants:
|
||||
|
||||
- `Domain` does not expose mutable references to stored objects.
|
||||
- `Domain` has no equation id, displacement, residual, reaction, current time, iteration, sparse matrix, MKL, TBB, or HDF5 members.
|
||||
- Retrieval does not create missing objects implicitly.
|
||||
- Insert operations preserve input ids and ordering where the API promises ordering.
|
||||
- Error types remain deterministic: duplicate ids use `std::invalid_argument`; missing required references use `std::invalid_argument`; direct missing lookup uses `std::out_of_range`.
|
||||
|
||||
## Tests To Write First
|
||||
|
||||
Write failing compile/runtime tests before API cleanup:
|
||||
|
||||
- A const `Domain` can retrieve model definitions.
|
||||
- Missing direct lookup throws without changing counts.
|
||||
- Failed insert due to missing reference does not change the relevant count.
|
||||
- Existing node, element, material, property, set, BC, load, and step counts remain stable after failed inserts.
|
||||
|
||||
Run targeted CTest and verify RED before implementation.
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
Run:
|
||||
|
||||
```powershell
|
||||
cmake --build build/msvc-debug --config Debug
|
||||
ctest --test-dir build/msvc-debug --output-on-failure -C Debug -R domain
|
||||
python scripts/validate_workspace.py
|
||||
```
|
||||
|
||||
Update `/phases/domain-model-foundation/index.json` step 7 with `completed`, `error`, or `blocked`.
|
||||
|
||||
## Do Not
|
||||
|
||||
- Do not add new solver features beyond invariant enforcement.
|
||||
- Do not refactor unrelated files.
|
||||
Reference in New Issue
Block a user