Files
2026-08-16 02:49:35 +09:00

98 lines
4.6 KiB
Markdown
Raw Permalink 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 5: Solver Workflow 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/cpp-object-oriented-modular-refactoring/implementation-plan.md`
- `/include/fesa/analysis/analysis_model.hpp`,
`/include/fesa/analysis/analysis_state.hpp`,
`/include/fesa/analysis/linear_static_analysis.hpp`
- `/src/fesa/analysis/analysis_model.cpp`, `/src/fesa/analysis/analysis_state.cpp`,
`/src/fesa/analysis/linear_static_analysis.cpp`
- `/include/fesa/assembly/load_assembler.hpp`, `/include/fesa/assembly/parallel_for.hpp`,
`/include/fesa/assembly/sparse_assembler.hpp`
- `/src/fesa/assembly/load_assembler.cpp`, `/src/fesa/assembly/parallel_for.cpp`,
`/src/fesa/assembly/sparse_assembler.cpp`
- `/include/fesa/constraints/essential_constraints.hpp`,
`/src/fesa/constraints/essential_constraints.cpp`
- `/include/fesa/fem/dof_manager.hpp`, `/src/fesa/fem/dof_manager.cpp`
- `/include/fesa/results/result_records.hpp`,
`/include/fesa/results/result_recovery.hpp`,
`/include/fesa/results/results_writer.hpp`
- `/src/fesa/results/result_recovery.cpp`
- `/tests/unit/analysis/analysis_model_test.cpp`,
`/tests/unit/analysis/analysis_state_test.cpp`
- `/tests/unit/assembly/load_assembler_test.cpp`,
`/tests/unit/assembly/parallel_for_test.cpp`,
`/tests/unit/assembly/sparse_assembler_test.cpp`
- `/tests/unit/constraints/essential_constraints_test.cpp`,
`/tests/unit/fem/dof_manager_test.cpp`
- `/tests/unit/results/result_records_test.cpp`,
`/tests/unit/results/result_recovery_test.cpp`,
`/tests/unit/results/results_writer_test.cpp`
- `/tests/integration/analysis/linear_static_analysis_test.cpp`
- Step 34에서 생성한 `.h` foundation/model/element headers
- `/phases/cpp-object-oriented-modular-refactoring/index.json`
- `/phases/cpp-object-oriented-modular-refactoring/step5.md`
## 작업
Requirement `R-STYLE-001`의 solver workflow slice와 `R-DOC-001`을 구현한다.
1. Matching unit/integration tests를 `.h` include와 PascalCase calls로 먼저 바꿔 RED
compile failure를 기록한다.
2. Analysis, assembly, constraints, fem, results production headers를 `.h`와 full-path
include guards로 전환한다.
3. Function/accessor, enum, constants, members와 repository callsites를 CODINGSTYLE에
맞춘다. Type names와 diagnostic text는 의미를 바꾸지 않는다.
4. Production public/protected declarations와 ordering, partition, factorization,
deterministic reduction, candidate commit에 관한 internal helpers에 Doxygen를 작성한다.
5. 다음 approved order를 변경하지 않는다: stiffness/partition, Kff factorization,
load/effective RHS, substitute/reconstruct, recovery/write.
6. Full residual `K*d-F`, source-order accumulation, 0x0 Kff validity, atomic state commit을
그대로 유지한다.
## Acceptance Criteria
```powershell
cmake --build .harness/build --config Debug --target fesa_unit_tests fesa_integration_tests
ctest --test-dir .harness/build -C Debug `
-R "DofManager|LoadAssembly|SparseAssembly|EssentialConstraints|AnalysisState|ResultRecovery|LinearStaticCli|Mitc4ShellCli" `
--output-on-failure
$files = @(
(rg --files include/fesa/analysis include/fesa/assembly include/fesa/constraints `
include/fesa/fem include/fesa/results -g "*.h"),
(rg --files src/fesa/analysis src/fesa/assembly src/fesa/constraints `
src/fesa/fem src/fesa/results -g "*.cpp"),
(rg --files tests/unit/analysis tests/unit/assembly tests/unit/constraints `
tests/unit/fem tests/unit/results tests/integration/analysis -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 compile failure, focused/full GREEN과 formatting 결과를 summary에 기록한다.
- 성공 시 현재 Step만 `completed`로 갱신한다.
- lifecycle or numeric regression이면 `error`로 기록하고 다른 Step으로 진행하지 않는다.
- timestamp, retry, commit, advancement는 Executor 소유다.
## 금지사항
- Analysis/Load/Boundary/Element 추상화를 추가하지 마라. 이유: Step 14–20 소유다.
- sparse ordering, factorization order, result signs를 바꾸지 마라.
- Test에 Doxygen를 추가하지 마라.
- 직접 commit하거나 hook script를 수동 실행하지 마라.