4.0 KiB
4.0 KiB
Step 25: Build and Test Verification
담당 역할과 필수 스킬
- 담당 역할:
build-test-executor-agent - 필수 스킬:
fesa-cpp-msvc-tdd - 이 step은 검증과 보고만 수행한다. 실패를 production 변경으로 덮지 않는다.
읽어야 할 파일
/AGENTS.md/docs/ARCHITECTURE.md/docs/ADR.md/docs/build-test-reports/README.md/docs/requirements/linear-static-3d-euler-beam.md/docs/implementation-plans/linear-static-3d-euler-beam.md/docs/implementation-plans/linear-static-3d-euler-beam-implementation-report.md/docs/numerical-reviews/linear-static-3d-euler-beam-review.md/docs/io-definitions/linear-static-3d-euler-beam-io.md/docs/reference-models/linear-static-3d-euler-beam-reference-models.md/CMakeLists.txt와 모든 CMake/test registration/phases/linear-static-3d-euler-beam/index.json의 Step 7–24 summary
작업
fresh MSVC x64 Debug configure/build/test evidence를 수집해
docs/build-test-reports/linear-static-3d-euler-beam.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 7–24 RED/GREEN/VERIFY evidence가 모두 present인지 감사한다.
- 실패는
configure | compile | link | test | reference-comparison | harness | environment | upstream-contract중 하나로 분류하고 correction handoff를 기록한다.
Acceptance Criteria
아래 명령을 fresh evidence로 실행한다.
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:
$path = 'docs/build-test-reports/linear-static-3d-euler-beam.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
검증 절차
- 모든 command를 새로 실행하고 실제 exit code/duration/output tail을 기록한다.
- implementation evidence와 CTest discovered tests를 대조한다.
- 모두 성공한 경우에만 report와 Step 25를 pass/completed로 갱신한다.
- 실패 시 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가 담당한다.