110 lines
5.5 KiB
Markdown
110 lines
5.5 KiB
Markdown
# 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를 수동 실행하지 마라.
|