Files
FESADev/phases/linear-static-3d-euler-beam/step25.md
T
2026-08-09 01:35:44 +09:00

4.0 KiB
Raw Blame History

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 724 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 724 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

검증 절차

  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가 담당한다.