# Build/Test Report 문서 작성 가이드 이 디렉터리는 Build/Test Executor Agent가 작성하거나 제안하는 기능별 build/test 실행 리포트를 보관하는 위치다. Build/Test Executor Agent는 Implementation Agent 이후 독립적으로 C++/MSVC/CMake/CTest 검증을 실행하고, 실패를 분류해 다음 agent로 handoff한다. 이 agent는 source code, tests, CMake files, requirements, formulations, I/O contracts, reference artifacts, tolerance policies를 수정하지 않는다. 기본 build artifact는 `.harness/build/` 아래 생성된다. 기본 문서명은 `docs/build-test-reports/-build-test.md` 형식을 사용한다. ## Build/Test Executor Agent 역할 수행한다: - `.harness/config.json`과 프로젝트 자동 감지 결과를 확인하고 같은 build/test 경로를 독립 실행한다. - implementation plan/report에 명시된 feature-specific CTest를 전체 검증 전에 실행한다. - Harness Python, Hook, agent config 변경이 포함되면 `uv run --with pytest python -m pytest -v -rs`를 실행한다. - CMake preset, 직접 MSBuild, 기본 CMake/MSVC x64 Debug 중 어떤 검증 경로가 사용되었는지 기록한다. - configure, compile, link, test, reference-comparison, harness, environment, upstream-contract 실패를 구분한다. - command, exit code, duration, stdout/stderr tail, failed test name을 요약한다. - 실패 원인에 따라 Implementation Agent, Correction Agent, Reference Verification Agent, Implementation Planning Agent 중 handoff 대상을 제안한다. 수행하지 않는다: - source code를 수정하지 않는다. - tests를 수정하지 않는다. - CMake files를 수정하지 않는다. - requirements, formulations, I/O contracts, reference artifacts, tolerance policies를 수정하지 않는다. - Abaqus, Nastran 또는 reference solver를 실행하지 않는다. - Abaqus reference CSV 파일을 생성하거나 수정하지 않는다. - release readiness, reference tolerance success, physics validation success를 승인하지 않는다. - 최종 reference verification report를 작성하지 않는다. ## 실행 순서 기본 순서는 implementation plan/report에 따라 다음 중 필요한 항목을 실행한다. ```powershell cmake -S . -B .harness/build -A x64 cmake --build .harness/build --config Debug ctest --test-dir .harness/build -C Debug -R --output-on-failure ctest --test-dir .harness/build -C Debug --show-only=json-v1 ctest --test-dir .harness/build -C Debug --output-on-failure ``` Harness Python, Hook, agent config 변경이 검증 범위에 포함되면 다음 명령을 먼저 실행한다. ```powershell uv run --with pytest python -m pytest -v -rs ``` 프로젝트 선택 우선순위는 다음과 같다. 1. `.harness/config.json`의 명시적 `projectType` 2. 루트의 CMake metadata 3. 루트의 단일 `.sln` 4. 루트의 단일 `.vcxproj` 기본 CMake/MSVC x64 Debug 명령은 다음과 같다. ```powershell cmake -S . -B .harness/build -A x64 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 ``` CMake preset을 사용하면 configure/build/test preset과 `binaryDir`를 모두 `.harness/config.json`에 지정한다. 직접 MSBuild는 solution/project와 `msbuild.testCommand`를 지정한다. C/C++와 build metadata가 모두 없으면 검증 대상이 없으므로 통과하지만, C/C++ 파일만 있고 build metadata가 없으면 오류다. ## 문서 템플릿 ```markdown # Build/Test Report ## Metadata - feature_id: - source_implementation_report: - source_implementation_plan: docs/implementation-plans/-implementation-plan.md - status: pass-for-reference-verification | needs-correction | needs-environment-fix | needs-upstream-decision | blocked - owner_agent: build-test-executor-agent - date: ## Execution Environment - os: - generator: Visual Studio 17 2022 | - platform: x64 | - config: Debug | - build_dir: .harness/build | - harness_config: .harness/config.json | absent-defaults - project_selection: configured cmake | configured msbuild | auto CMake | auto MSBuild | no C/C++ project - command_discovery_path: CMake preset | direct MSBuild | default CMake/MSVC x64 Debug | no C/C++ project ## Command Log Summary | order | command | exit_code | duration | stdout_stderr_tail | | --- | --- | --- | --- | --- | | 1 | uv run --with pytest python -m pytest -v -rs (when applicable) | | | | | 2 | | | | | | 3 | | | | | | 4 | | | | | ## Validation Results | validation_stage | result | evidence | | --- | --- | --- | | harness self-test | pass | fail | skipped | | | configure | pass | fail | skipped | | | build | pass | fail | skipped | | | CTest | pass | fail | skipped | | | feature-specific tests | pass | fail | skipped | | ## Failure Classification - classification: configure | compile | link | test | reference-comparison | harness | environment | upstream-contract | N/A - primary_failure: - first_failed_command: - evidence_tail: ## Failed Test Inventory | test_name | label | command | failure_summary | | --- | --- | --- | --- | | |