feat(linear-static-3d-euler-beam): step 24 - linear-static-cli
This commit is contained in:
@@ -1209,3 +1209,83 @@
|
||||
- concerns: no remaining critical implementation or upstream-contract blocker.
|
||||
The HDF5 static-link and shared-runtime environment blockers were resolved
|
||||
and are recorded separately from the valid missing-API RED.
|
||||
|
||||
## Step 24 — linear-static-cli
|
||||
|
||||
- task_id: `TASK-24`
|
||||
- status: `completed`
|
||||
- changed_files: `include/fesa/analysis/linear_static_analysis.hpp`,
|
||||
`src/fesa/analysis/linear_static_analysis.cpp`,
|
||||
`include/fesa/app/fesa_application.hpp`,
|
||||
`src/fesa/app/fesa_application.cpp`, `src/fesa/app/main.cpp`,
|
||||
`tests/integration/analysis/linear_static_analysis_test.cpp`,
|
||||
`tests/integration/app/fesa_application_test.cpp`,
|
||||
`tests/reference/reference_comparison.hpp`,
|
||||
`tests/reference/reference_comparison.cpp`,
|
||||
`tests/reference/reference_comparison_test.cpp`,
|
||||
`tests/reference/b33_reference_comparison_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`
|
||||
- requirement_ids: `FESA-REQ-LS3DEB-001`, `FESA-REQ-LS3DEB-002`,
|
||||
`FESA-REQ-LS3DEB-005`, `FESA-REQ-LS3DEB-020`,
|
||||
`FESA-REQ-LS3DEB-026`, `FESA-REQ-LS3DEB-028`,
|
||||
`FESA-REQ-LS3DEB-030`, `FESA-REQ-LS3DEB-032`,
|
||||
`FESA-REQ-LS3DEB-033`, `FESA-REQ-LS3DEB-034`,
|
||||
`FESA-REQ-LS3DEB-036` through `FESA-REQ-LS3DEB-044`
|
||||
- test_ids: `T24-ORCH-001`, `T24-ORCH-002`, `T24-CLI-001`,
|
||||
`T24-CLI-002`, `T24-CLI-003`, `T24-REF-001`, `T24-REF-002`,
|
||||
`T24-REF-003`, `T24-REF-004`, `T24-B33-001`
|
||||
|
||||
| stage | exact command | exit_code | expected_or_observed_result | evidence_tail |
|
||||
| --- | --- | ---: | --- | --- |
|
||||
| RED-build | `cmake --build .harness/build --config Debug --target fesa_tests` | 1 | Exact ten tests were registered while orchestration, CLI, and comparator APIs were absent | MSVC C1083 reported only missing `fesa/analysis/linear_static_analysis.hpp`, `fesa/app/fesa_application.hpp`, and `reference_comparison.hpp`; the pre-existing unit target still built |
|
||||
| RED-targeted | `ctest --test-dir .harness/build -C Debug -R "LinearStaticCli|ReferenceComparisonContract|B33ReferenceComparison" --output-on-failure` | 0 | Missing executables leave no runnable Step 24 tests after the valid compile RED | CTest reported `No tests were found`; this is secondary evidence, not the RED acceptance result |
|
||||
| GREEN-build | `cmake --build .harness/build --config Debug --target fesa_tests` | 0 | Minimal production lifecycle, application boundary, test-only comparator, and all three test executables compile/link | `fesa_solver.lib`, `fesa_unit_tests.exe`, `fesa_integration_tests.exe`, and `fesa_reference_tests.exe` built without a FESA warning under `/W4 /WX` |
|
||||
| GREEN-targeted | `ctest --test-dir .harness/build -C Debug -R "LinearStaticCli|ReferenceComparisonContract|B33ReferenceComparison" --output-on-failure` | 0 | Exact lifecycle/CLI/reference contract is green | Exact Step 24 suite passed 10/10: integration 5 and reference 5 |
|
||||
| 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 | Visual Studio 18/MSVC x64, Windows SDK 10.0.26100.0, oneMKL 2026.1, oneTBB, and shared HDF5 resolved |
|
||||
| VERIFY-build | `cmake --build .harness/build --config Debug` | 0 | Full Debug build includes the actual CLI and all test executables | `.harness/build/src/fesa/Debug/fesa.exe` built under `/W4 /WX`; selected MKL/TBB/HDF5/Intel runtime DLLs were staged beside it |
|
||||
| VERIFY-targeted | `ctest --test-dir .harness/build -C Debug -R "LinearStaticCli|ReferenceComparisonContract|B33ReferenceComparison" --output-on-failure` | 0 | Focused Step 24 suite remains green after the full build | Exact tests passed 10/10 |
|
||||
| VERIFY-discovery | `ctest --test-dir .harness/build -C Debug --show-only=json-v1` plus JSON count audit | 0 | All accumulated and exact Step 24 tests are discovered | 83 total tests, exactly 10 Step 24 names |
|
||||
| VERIFY-full | `ctest --test-dir .harness/build -C Debug --output-on-failure` | 0 | Full accumulated C++ suite has zero failures | 83/83 tests passed |
|
||||
| VERIFY-cli | `.harness/build/src/fesa/Debug/fesa.exe "reference/cantilever beam/cantilever beam.inp" --output .harness/build/cli-smoke-step24/results.h5` | 0 | The actual executable strips argv[0], runs the approved pipeline, and writes HDF5 | Process exit 0; `results.h5` exists and is 25,336 bytes; an empty-argument process smoke test returned exact usage exit 2 |
|
||||
| VERIFY-determinism | Run exact `B33ReferenceComparison` twice and hash `comparison.json` after each run | 0 | Build-local comparison evidence is byte deterministic | Both runs passed 1/1 and produced SHA-256 `258347AEA791D981AEA9B2BCAD85DE5344D4859ECA3692DC5E7AA01A848F8E0D` |
|
||||
| VERIFY-contract-scans | Exact-test count, public-backend, forbidden-scope, reference-write, whitespace, and reference diff/status scans | 0 | Approved module and artifact boundaries remain isolated | exact tests 10; public backend leaks 0; B31/DLOAD/fallback/averaging scope 0; comparator has only its JSON output writer; diff clean; reference unchanged |
|
||||
|
||||
- contract_checks: `Analysis::run` invokes the exact eight hook stages and
|
||||
returns immediately on failure. `LinearStaticAnalysis` keeps the immutable
|
||||
Domain alive under the non-owning AnalysisModel, owns the DOF/state/matrix
|
||||
handoff, and calls `factorize(Kff)` before any nodal load assembly. Solve is
|
||||
substitution-only, followed by full reconstruction, recovery, and the
|
||||
injected ResultsWriter.
|
||||
- contract_checks: `FesaApplication::run` receives argv[0]-excluded operands,
|
||||
accepts only `<input>` or `<input> --output <output>`, defaults to the current
|
||||
directory `results.h5`, constructs TBB/MKL/HDF5 adapters behind their public
|
||||
boundaries, emits seven deterministic diagnostic fields, and returns exact
|
||||
process codes 0/2/3/4/5/6. Domain warnings remain in the HDF5 diagnostics and
|
||||
output requests do not filter mandatory result datasets.
|
||||
- contract_checks: the test-only comparator opens the exact legacy four-file
|
||||
bundle and authoritative HDF5 read-only, requires B33/schema/source/row
|
||||
identity/finite values before comparison, and produces exactly 176 stable
|
||||
decisions plus 16 component metrics. It uses Abaqus-only component scales,
|
||||
exact SI floors, no zero clamp/drop, and Step 22 endpoint consistency before
|
||||
selecting the smaller element identity without averaging.
|
||||
- generated_evidence: `.harness/build/src/fesa/Debug/fesa.exe`,
|
||||
`.harness/build/reference/cantilever-beam-b33/results.h5` (25,336 bytes),
|
||||
`.harness/build/reference/cantilever-beam-b33/comparison.json` (128,118
|
||||
bytes). The report has `passed=true`, 0 failed rows, 176 matched rows, 16
|
||||
metrics, stress comparison N/A, and worst normalized error
|
||||
`0.026602795021994977` (`UZ`).
|
||||
- physics_evidence: free residual norm `9.356339321107032e-7`; applied force
|
||||
`[0,0,-1000000]`; reaction force `[0,0,999999.9999998808]`; applied moment
|
||||
about origin `[0,10000000,0]`; reaction moment about origin
|
||||
`[0,-9999999.999997258,0]`; endpoint consistency passed.
|
||||
- reference_diff: unchanged; `git diff --exit-code -- reference/` and
|
||||
`git status --short -- reference/` both report no change. Contract-fixture
|
||||
mutations occur only under `.harness/build/reference/contract-fixtures/`.
|
||||
- handoff: Step 25 can independently rebuild and execute all 83 tests. Step 26
|
||||
can rerun the already-built exact B33 CTest and consume the deterministic
|
||||
`comparison.json` without changing source, tests, tolerances, or references;
|
||||
Step 27 can consume only its `physics_evidence` after Step 26 passes.
|
||||
- concerns: none; no critical implementation, environment, numerical, or
|
||||
upstream-contract blocker remains.
|
||||
|
||||
Reference in New Issue
Block a user