Files
FESADev/phases/cpp-object-oriented-modular-refactoring/step6.md
T
2026-08-16 02:49:35 +09:00

91 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Step 6: I/O and Application Google Style
## 담당 역할과 필수 스킬
- 담당 역할: `implementation-agent`
- 필수 스킬: `harness`, `fesa-cpp-msvc-tdd`
- 이 Step만 `RED -> observed failure -> minimal GREEN -> focused/full VERIFY`로 수행한다.
## 읽어야 할 파일
- `/AGENTS.md`
- `/docs/CODINGSTYLE.md`
- `/docs/ARCHITECTURE.md`
- `/docs/ADR.md`
- `/docs/linear-static-3d-euler-beam/io.md`
- `/docs/linear-static-mitc4-shell/io.md`
- `/docs/cpp-object-oriented-modular-refactoring/implementation-plan.md`
- `/include/fesa/io/abaqus/domain_mapper.hpp`,
`/include/fesa/io/abaqus/input_reader.hpp`,
`/include/fesa/io/abaqus/input_syntax.hpp`
- `/src/fesa/io/abaqus/domain_mapper.cpp`, `/src/fesa/io/abaqus/input_reader.cpp`
- `/include/fesa/io/hdf5/hdf5_results_writer.hpp`,
`/src/fesa/io/hdf5/hdf5_results_writer.cpp`
- `/include/fesa/app/fesa_application.hpp`, `/src/fesa/app/fesa_application.cpp`,
`/src/fesa/app/main.cpp`
- `/tests/unit/io/abaqus/domain_mapper_test.cpp`,
`/tests/unit/io/abaqus/input_reader_test.cpp`,
`/tests/unit/io/abaqus/input_syntax_test.cpp`
- `/tests/unit/io/hdf5/hdf5_results_writer_test.cpp`,
`/tests/integration/app/fesa_application_test.cpp`
- `/tests/reference/reference_comparison.hpp`,
`/tests/reference/mitc4_reference_comparison.hpp`
- `/tests/reference/reference_comparison.cpp`,
`/tests/reference/reference_comparison_test.cpp`,
`/tests/reference/b33_reference_comparison_test.cpp`,
`/tests/reference/mitc4_reference_comparison.cpp`,
`/tests/reference/mitc4_reference_comparison_test.cpp`,
`/tests/reference/mitc4_reference_cases_test.cpp`
- Step 35가 생성한 `.h` headers와 callsites
- `/phases/cpp-object-oriented-modular-refactoring/index.json`
- `/phases/cpp-object-oriented-modular-refactoring/step6.md`
## 작업
Requirement `R-STYLE-001`의 I/O/application slice와 `R-DOC-001`을 구현한다.
1. I/O, app, reference helper tests의 include와 calls를 먼저 전환해 RED compile failure를
기록한다.
2. Production I/O/application headers와 test-only reference helper headers를 `.h`
full-path guards로 전환한다.
3. Production 및 test C++ functions/accessors를 PascalCase로 전환하고 variables/members,
enums/constants를 CODINGSTYLE에 맞춘다.
4. Production parser/mapping/HDF5/application declarations와 atomic finalization,
source identity, backend lifetime에 관한 internal helper에 Doxygen를 추가한다.
5. Test files에는 Doxygen를 추가하지 않는다.
6. Abaqus keyword subset, diagnostics, HDF5 path/attributes/dataset order, atomic replacement,
comparator tolerance와 required/warning quantity를 변경하지 않는다.
## Acceptance Criteria
```powershell
cmake --build .harness/build --config Debug --target fesa_unit_tests `
fesa_integration_tests fesa_reference_tests
ctest --test-dir .harness/build -C Debug `
-R "InpSyntax|InpDomainMapping|Hdf5ResultsWriter|FesaApplication|ReferenceComparison|B33ReferenceComparison|Mitc4Reference|Mitc4S4Reference" `
--output-on-failure
$files = @(
(rg --files include/fesa/io include/fesa/app -g "*.h"),
(rg --files src/fesa/io src/fesa/app -g "*.cpp"),
(rg --files tests/unit/io tests/integration/app tests/reference -g "*.h" -g "*.cpp")
)
& "C:/Program Files/LLVM/bin/clang-format.exe" --dry-run --Werror $files
cmake --build .harness/build --config Debug
ctest --test-dir .harness/build -C Debug --show-only=json-v1
ctest --test-dir .harness/build -C Debug --output-on-failure
```
## 검증 및 상태 갱신
- RED/Green evidence와 HDF5/reference focused inventory를 summary에 기록한다.
- 성공 시 현재 Step만 `completed`로 갱신한다.
- schema/reference regression이면 `error`로 기록하고 artifacts를 고치지 않는다.
- timestamp, retry, commit, advancement는 Executor 소유다.
## 금지사항
- Mapper/HDF5 writer를 아직 분할하지 마라. 이유: Step 21과 23 소유다.
- Reference CSV, `.inp`, tolerance 또는 comparator 의미를 변경하지 마라.
- Generated Doxygen를 만들지 마라.
- 직접 commit하거나 hook script를 수동 실행하지 마라.