Files
2026-08-15 03:57:29 +09:00

86 lines
3.9 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 25: Build and Test Verification
## 담당 역할과 필수 스킬
- 담당 역할: `build-test-executor-agent`
- 필수 스킬: `fesa-cpp-msvc-tdd`
- 이 step은 검증과 보고만 수행한다. 실패를 production 변경으로 덮지 않는다.
## 읽어야 할 파일
- `/AGENTS.md`
- `/docs/ARCHITECTURE.md`
- `/docs/ADR.md`
- `/.codex/skills/fesa-cpp-msvc-tdd/SKILL.md`
- `/docs/linear-static-3d-euler-beam/requirements.md`
- `/docs/linear-static-3d-euler-beam/implementation-plan.md`
- `/docs/linear-static-3d-euler-beam/implementation-report.md`
- `/docs/linear-static-3d-euler-beam/numerical-review.md`
- `/docs/linear-static-3d-euler-beam/io.md`
- `/docs/linear-static-3d-euler-beam/reference-model.md`
- `/CMakeLists.txt`와 모든 CMake/test registration
- `/phases/linear-static-3d-euler-beam/index.json`의 Step 724 summary
## 작업
fresh MSVC x64 Debug configure/build/test evidence를 수집해
`docs/linear-static-3d-euler-beam/build-test.md`를 생성하라.
- Metadata status는 모든 gate 통과 시 `pass-for-reference-verification`이다.
- Environment/dependency revision과 config-resolved command를 기록한다.
- Configure, build, targeted feature tests, CTest discovery, full CTest 각각에 command,
start/end 또는 duration, exit code, stdout/stderr tail, verdict를 기록한다.
- CTest discovery가 하나 이상의 test를 포함하고 compiler metadata가 MSVC인지 확인한다.
- `/W4 /WX`로 새 product warning이 없는지 build output/CMake setting으로 확인한다.
- implementation report의 Step 724 RED/GREEN/VERIFY evidence가 모두 present인지 감사한다.
- 실패는 `configure | compile | link | test | reference-comparison | harness | environment |
upstream-contract` 중 하나로 분류하고 correction handoff를 기록한다.
## Acceptance Criteria
아래 명령을 fresh evidence로 실행한다.
```powershell
cmake -S . -B .harness/build -A x64 `
-DFESA_GTEST_SOURCE_DIR=C:/git/googletest `
"-DMKL_DIR=C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/lib/cmake/mkl" `
"-DTBB_DIR=C:/Program Files (x86)/Intel/oneAPI/tbb/2023.1/lib/cmake/tbb" `
"-DHDF5_DIR=C:/Program Files/HDF_Group/HDF5/2.1.1/cmake"
cmake --build .harness/build --config Debug
$discovery = ctest --test-dir .harness/build -C Debug --show-only=json-v1 | ConvertFrom-Json
if ($discovery.tests.Count -lt 1) { throw 'CTest discovered zero tests' }
ctest --test-dir .harness/build -C Debug -L linear-static-3d-euler-beam --output-on-failure
ctest --test-dir .harness/build -C Debug --output-on-failure
```
Report structural check:
```powershell
$path = 'docs/linear-static-3d-euler-beam/build-test.md'
if (-not (Test-Path $path)) { throw "Missing $path" }
$required = @('status: `pass-for-reference-verification`', 'MSVC', 'x64', 'Debug',
'configure', 'build', 'show-only=json-v1', 'output-on-failure', 'exit code', 'duration')
foreach ($text in $required) {
if (-not (Select-String -LiteralPath $path -SimpleMatch $text -Quiet)) {
throw "Missing build/test evidence: $text"
}
}
git diff --check -- $path
```
## 검증 절차
1. 모든 command를 새로 실행하고 실제 exit code/duration/output tail을 기록한다.
2. implementation evidence와 CTest discovered tests를 대조한다.
3. 모두 성공한 경우에만 report와 Step 25를 pass/completed로 갱신한다.
4. 실패 시 report에 정확한 classification과 correction handoff를 기록하고 Step 25를
`error`로 둔다. 환경/사용자 조치가 필수인 경우만 `blocked`로 둔다.
## 금지사항
- source, tests, CMake를 수정하지 마라. 이유: independent build/test gate다.
- 실패 test를 disable/filter-out하지 마라. 이유: 회귀를 숨긴다.
- reference artifact나 tolerance를 수정하지 마라. 이유: 이 gate의 책임 밖이다.
- command 결과를 추정하거나 이전 summary를 fresh evidence로 대체하지 마라. 이유: gate 신뢰성을 잃는다.
- 직접 commit하지 마라. 이유: Harness executor가 담당한다.