# Step 1: C++ Style Tooling > 과거 개발 계획이다. 아래 작업·상태·예시는 현재 실행 지시가 아니다. > 현재 구현과 검증 한계는 [기능 요약](../../docs/cpp-object-oriented-modular-refactoring/README.md)을 따른다. ## 읽어야 할 파일 - `/AGENTS.md` - `../../docs/solver-core/README.md` - `../../docs/solver-core/README.md` - `../../docs/cpp-object-oriented-modular-refactoring/README.md` - `/CMakeLists.txt` - `/.gitignore` - `/tests/test_agent_skill_workflow_contract.py` - `/phases/cpp-object-oriented-modular-refactoring/index.json` - `/phases/cpp-object-oriented-modular-refactoring/step1.md` ## 작업 Requirements `R-STYLE-001`과 `R-DOC-001`의 repository tooling만 구현한다. 1. `/tests/test_cpp_policy_contract.py`에 `P-STYLE-001`을 먼저 작성한다. 다음 literal contract를 검사한다. - `.clang-format`: `BasedOnStyle: Google`, `IndentWidth: 2`, `ColumnLimit: 80`. - `.clang-tidy`: C++17-compatible checks와 FESA PascalCase/snake_case identifier rules. - `Doxyfile`: `INPUT = include src`, tests 제외, `WARN_AS_ERROR = YES`, generated HTML은 source control 밖의 build 경로. - Root CMake의 optional `fesa_docs` target은 Doxygen가 발견될 때만 등록되고 default configure에는 Doxygen를 요구하지 않는다. 2. RED에서 설정 파일 부재로 test failure를 확인한다. 3. `/.clang-format`, `/.clang-tidy`, `/Doxyfile`을 추가한다. 4. `/CMakeLists.txt`에 `find_package(Doxygen QUIET)`와 발견 시에만 등록되는 `fesa_docs` custom target을 추가한다. Default build dependency에 넣지 않는다. 5. Generated Doxygen HTML 경로가 ignore되지 않았다면 `/.gitignore`에 정확한 output directory만 추가한다. 6. Doxygen executable은 실행하지 않는다. 사용자가 문서 생성을 추후 수행하기로 했다. ## Acceptance Criteria 과거 도구 실행·출력 지시는 정리했으며, 현재 검증 방법은 기능 요약을 따른다. Expected GREEN에는 Doxygen 실행이나 generated HTML이 포함되지 않는다. ## 검증 및 상태 갱신 - RED policy failure와 GREEN pytest/tool version/config/full CTest를 summary에 남긴다. - 성공 시 현재 Step만 `completed`로 갱신하고 생성한 설정 파일을 summary에 기록한다. - 환경에 두 LLVM executable이 없으면 `blocked`와 정확한 경로를 기록한다. - timestamp, retry, commit, advancement는 Executor 소유다. ## 금지사항 - 기존 C++를 format하지 마라. 이유: 기계적 migration은 Step 3–6 소유다. - Doxygen를 실행하거나 generated HTML을 commit하지 마라. 이유: 사용자 결정으로 생성은 연기됐다. - Doxygen를 default build 필수 dependency로 만들지 마라. 이유: 현재 blocking gate가 아니다. - 직접 commit하거나 hook script를 수동 실행하지 마라.