feat(linear-static-3d-euler-beam): step 14 - dof-manager

This commit is contained in:
KOKO\Mimi
2026-08-09 17:10:34 +09:00
parent a362d9938a
commit ac0e6b566e
6 changed files with 542 additions and 0 deletions
@@ -405,3 +405,57 @@
- handoff: the exact AnalysisModel ledger API, sole-step reference, and stable
active element/material/section/boundary/load IDs are available to Step 14
`DofManager` without copying or mutating Domain entities.
## Step 14 — dof-manager
- task_id: `TASK-14`
- status: `completed`
- changed_files: `include/fesa/fem/dof_manager.hpp`,
`src/fesa/fem/dof_manager.cpp`, `tests/unit/fem/dof_manager_test.cpp`,
`src/fesa/CMakeLists.txt`, `tests/CMakeLists.txt`,
`docs/implementation-plans/linear-static-3d-euler-beam-implementation-report.md`,
`phases/linear-static-3d-euler-beam/index.json`,
`.superpowers/sdd/linear-static-3d-euler-beam/task-14-report.md`
- requirement_ids: `FESA-REQ-LS3DEB-003`, `FESA-REQ-LS3DEB-007`,
`FESA-REQ-LS3DEB-011`, `FESA-REQ-LS3DEB-022`,
`FESA-REQ-LS3DEB-034`
- test_ids: `T14-DOF-001`, `T14-DOF-002`, `T14-DOF-003`,
`T14-DOF-004`
| stage | exact command | exit_code | expected_or_observed_result | evidence_tail |
| --- | --- | ---: | --- | --- |
| RED-build | `cmake --build .harness/build --config Debug --target fesa_tests` | 1 | Exactly four planned tests are registered before production and fail for the missing DofManager API | MSVC C1083 reported missing `fesa/fem/dof_manager.hpp` from `dof_manager_test.cpp` after successful CMake regeneration |
| RED-test | `ctest --test-dir .harness/build -C Debug -R DofManager --output-on-failure` | 0 | No focused test is runnable because the test executable cannot rebuild | CTest reported `No tests were found` after the implementation-owned compile RED |
| GREEN-build | `cmake --build .harness/build --config Debug --target fesa_tests` | 0 | Minimal DofManager, its four tests, solver library, and unit executable compile and link | `dof_manager.cpp`, `dof_manager_test.cpp`, `fesa_solver.lib`, and `fesa_unit_tests.exe` built without a FESA warning under `/W4 /WX` |
| GREEN-test | `ctest --test-dir .harness/build -C Debug -R DofManager --output-on-failure` | 0 | Numbering, constraints, scatter/pattern, and mapping-owned round-trip pass | 4/4 exact `DofManager` tests passed |
| VERIFY-configure | `cmake -S . -B .harness/build -A x64 -DFESA_GTEST_SOURCE_DIR=C:/git/googletest "-DMKL_DIR=C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/lib/cmake/mkl" "-DTBB_DIR=C:/Program Files (x86)/Intel/oneAPI/tbb/2023.1/lib/cmake/tbb" "-DHDF5_DIR=C:/Program Files/HDF_Group/HDF5/2.1.1/cmake"` | 0 | Approved explicit-dependency MSVC x64 build tree generates | Windows SDK and oneMKL 2026.1 resolved; configure and generate completed |
| VERIFY-build | `cmake --build .harness/build --config Debug` | 0 | Full Debug build passes without a new FESA warning | `fesa_solver.lib` and `fesa_unit_tests.exe` built under `/W4 /WX` |
| VERIFY-targeted | `ctest --test-dir .harness/build -C Debug -R DofManager --output-on-failure` | 0 | Focused Step 14 suite remains green | 4/4 exact `DofManager` tests passed |
| VERIFY-discovery | `ctest --test-dir .harness/build -C Debug --show-only=json-v1` | 0 | CTest discovers the accumulated suite and all four exact DofManager names | 26 tests discovered, including 4 `DofManager` tests, with feature/unit labels |
| VERIFY-full | `ctest --test-dir .harness/build -C Debug --output-on-failure` | 0 | Full accumulated C++ suite has zero failures | 26/26 tests passed |
| VERIFY-contract-scans | Backend public-header, upward-FEM dependency, model/analysis equation-state, out-of-scope feature, unledgered API, exact-test-count, and CMake-registration scans using fail-on-match `rg` wrappers | 0 | DofManager remains the sole equation/scatter/pattern owner and implements only the exact public ledger | backend leaks 0; upward dependencies 0; model/analysis equation state 0; penalty/MPC/RBE/numeric sparse storage 0; unledgered APIs 0; tests 4; registrations 1/1 |
| VERIFY-diff | `git diff --check` plus trailing-whitespace scan over the three new files | 0 | Tracked and untracked Step 14 files have no whitespace errors | Diff check exit 0; new-file trailing whitespace matches 0 |
| VERIFY-reference | `git diff --exit-code -- reference/`; `git status --short -- reference/` | 0 | Approved legacy reference artifacts remain read-only and unchanged | Reference diff exit 0 and reference status empty |
- contract_checks: full DOFs follow stable node index and exact component order
`[UX,UY,UZ,URX,URY,URZ]`; free equations and constrained DOFs are ascending
full-index mappings. Case-insensitive node-set and direct source-label targets
expand deterministically; equal overlap is retained once, while different
values return `conflicting-boundary-condition` at the conflicting row's
source location. `prescribedValues()` has the same size/order as
`constrainedDofs()` and preserves zero and nonzero values.
- contract_checks: each active B33 definition has one 12-entry scatter in
endpoint/component order. The full-space CSR pattern has 19 row offsets and
252 sorted-unique structural columns for the two-element chain fixture.
Stable free/constrained maps reconstruct the full vector without adding an
API absent from the exact ledger. Node and element records remain unchanged
and contain no equation IDs; no penalty, MPC, RBE, or sparse numeric storage
was added.
- generated_evidence: `.harness/build/src/fesa/Debug/fesa_solver.lib`,
`.harness/build/tests/Debug/fesa_unit_tests.exe`,
`.harness/build/step14-ctest-discovery.json`
- reference_diff: unchanged; `git diff --exit-code -- reference/` exit 0
- handoff: backend-free `DofComponent`, `SparsePattern`, and the exact
`DofManager` ledger API provide deterministic full/free/constrained maps,
prescribed `dc`, active-element scatter, and full structural CSR pattern to
Step 15 and later assembly/constraint tasks.