# Step 24: Final Quality and Reference Gate > 과거 개발 계획이다. 아래 작업·상태·예시는 현재 실행 지시가 아니다. > 현재 구현과 검증 한계는 [기능 요약](../../docs/cpp-object-oriented-modular-refactoring/README.md)을 따른다. ## 읽어야 할 파일 - `/AGENTS.md` - `../../docs/solver-core/README.md` - `../../docs/solver-core/README.md` - `../../docs/solver-core/README.md` - `../../docs/cpp-object-oriented-modular-refactoring/README.md` - `../../docs/linear-static-3d-euler-beam/README.md` - `../../docs/linear-static-3d-euler-beam/README.md` - `../../docs/linear-static-3d-euler-beam/README.md` - `../../docs/linear-static-mitc4-shell/README.md` - `../../docs/linear-static-mitc4-shell/README.md` - `../../docs/linear-static-mitc4-shell/README.md` - `/tests/reference/b33_reference_comparison_test.cpp` - `/tests/reference/mitc4_reference_cases_test.cpp` - all Step 0–23 summaries and changed files - `/phases/cpp-object-oriented-modular-refactoring/index.json` - `/phases/cpp-object-oriented-modular-refactoring/step24.md` ## 작업 Requirements `R-PRESERVE-001`, `R-STYLE-001`, `R-DOC-001`, `R-SCOPE-001` and every traceability row를 최종 검증한다. No production behavior is added in this Step. 1. Review all prior diffs against the approved design. Remove only orphaned compatibility includes, declarations or helpers created by this phase; do not clean unrelated pre-existing code. 2. Verify every production/test header under `include`, `src`, `tests` uses `.h`; every production public/protected API follows PascalCase and production Doxygen policy; tests have no imposed Doxygen boilerplate. 3. Run clang-format on every tracked C++ file in dry-run error mode and the selected clang-tidy C++17 public-header check. Do not run Doxygen; generation is deferred by user decision. 4. Fresh configure and full MSVC x64 Debug `/W4 /WX` build/CTest. 5. ARTIFACT CHECK before comparison: - Assert exact B33 input and three CSV files exist under `/reference/cantilever beam/`. - Assert exact MITC4 S4 input and displacement CSV exist under `/reference/shell/`. - Snapshot/diff reference tree against baseline commit `1e5758f`. 6. COMPARE by running only the approved B33 and MITC4 S4 reference suites. Confirm generated: - 과거 검증 자료(정리됨) - 과거 검증 자료(정리됨) 7. CLASSIFY missing/extra/duplicate/nonfinite/tolerance failure before reporting. B33 retains its existing component-scale policy. MITC4 U1/U2/U3 use fixed `1.0e-5`; UR1/UR2/UR3 remain warning-only. 8. REPORT by creating/updating: - `../../docs/cpp-object-oriented-modular-refactoring/README.md` - `../../docs/cpp-object-oriented-modular-refactoring/README.md` - `../../docs/cpp-object-oriented-modular-refactoring/README.md` 9. `implementation-report.md` records each Step RED/GREEN/VERIFY command and result summary. 10. `build-test.md` records metadata with `owner_agent: implementation-agent`, environment, command/exit code/duration/output tail, test inventory, classification, no-change assertion, handoff and open issues. 11. `reference-comparison.md` records exact artifact inventory, generated HDF5 paths, HDF5-to-CSV identity/component projection, row prechecks, approved tolerances, per-row decisions and only contract-applicable metrics, classification and no-change assertion. ## Acceptance Criteria Style and policy: ```powershell uv run --with pytest python -m pytest -v -rs & "C:/Program Files/LLVM/bin/clang-format.exe" --version & "C:/Program Files/LLVM/bin/clang-tidy.exe" --version & "C:/Program Files/LLVM/bin/clang-tidy.exe" --verify-config $cppFiles = @(rg --files include src tests -g "*.h" -g "*.cpp") & "C:/Program Files/LLVM/bin/clang-format.exe" --dry-run --Werror $cppFiles $publicHeaders = @(rg --files include/fesa -g "*.h") foreach ($publicHeader in $publicHeaders) { & "C:/Program Files/LLVM/bin/clang-tidy.exe" --config-file=.clang-tidy ` $publicHeader -- -x c++ -std=c++17 -Iinclude if ($LASTEXITCODE -ne 0) { throw "clang-tidy failed for $publicHeader" } } $legacyHeaders = @(rg --files include src tests -g "*.hpp") if ($legacyHeaders.Count -ne 0) { $legacyHeaders throw "Legacy .hpp headers remain" } ``` Fresh MSVC build and full tests: 과거 도구 실행·출력 지시는 정리했으며, 현재 검증 방법은 기능 요약을 따른다. ARTIFACT CHECK, COMPARE and post-check: 과거 도구 실행·출력 지시는 정리했으며, 현재 검증 방법은 기능 요약을 따른다. ## 검증 및 상태 갱신 - Do not mark complete until every command and report section has observed evidence. - Success summary names style gate, full discovered test count, both generated results, blocking comparison verdicts, reference no-change assertion and report paths. - Implementation-owned compile/test/comparison failure is `error` with classification and exact failed command. Missing tool or declared artifact is `blocked` with exact path. - On success update only current Step to `completed`; final timestamps, commit and top-level phase completion are Executor-owned. ## 금지사항 - Doxygen executable을 실행하거나 generated docs를 commit하지 마라. 이유: 사용자 결정으로 연기됐다. - Reference artifact, input, CSV, tolerance or comparator contract를 변경하지 마라. - Passing comparison만으로 release or physics readiness를 승인하지 마라. - Failure를 숨기기 위해 clamp, missing-row ignore, average or tolerance relaxation을 추가하지 마라. - 직접 commit하거나 hook script를 수동 실행하지 마라.