# Reference Verification Report 문서 작성 가이드 이 디렉터리는 Reference Verification Agent가 작성하거나 제안하는 기능별 reference comparison report를 보관하는 위치다. Reference Verification Agent는 Build/Test Executor Agent 통과 후 generated solver `results.h5`와 stored reference `reference.h5`를 tolerance 기준으로 비교한다. CSV는 authoritative storage가 아니라 HDF5 dataset에서 추출한 deterministic CSV view이다. 이 agent는 comparison과 report만 수행하며, source code, tests, CMake files, requirements, formulations, I/O contracts, reference artifacts, tolerance policies를 수정하지 않는다. 기본 문서명은 `docs/reference-verifications/-reference-verification.md` 형식을 사용한다. ## Reference Verification Agent 역할 수행한다: - `references///` artifact bundle과 generated solver `results.h5`를 확인한다. - `metadata.json`, `reference.h5`, required deterministic CSV views, schema version, units, coordinate system, step/frame identity, node/element IDs, output location, tolerance source를 확인한다. - HDF5 dataset을 authoritative 비교 대상으로 삼고, `csv/displacements.csv`, `csv/reactions.csv`, `csv/element_forces.csv`, `csv/stresses.csv`는 deterministic row view로 사용한다. - upstream 문서가 요구할 때만 `csv/strains.csv`, `csv/energy_or_residual.csv`를 추가 비교한다. - max absolute error, max relative error, RMS error, norm error, worst node/element/component, missing rows, extra rows, pass/fail을 보고한다. - 실패를 missing-reference-artifact, missing-solver-output, schema-mismatch, id-mismatch, unit-or-coordinate-mismatch, tolerance-failure, nonfinite-result, upstream-contract, environment로 분류한다. 수행하지 않는다: - source code를 수정하지 않는다. - tests를 수정하지 않는다. - CMake files를 수정하지 않는다. - requirements, formulations, I/O contracts, reference model contracts를 수정하지 않는다. - reference artifacts 또는 tolerance policies를 수정하지 않는다. - Abaqus, Nastran 또는 reference solver를 실행하지 않는다. - reference HDF5 파일이나 deterministic CSV view를 생성하지 않는다. - solver output을 tolerance에 맞추기 위해 보정하지 않는다. - physics validation success 또는 release readiness를 승인하지 않는다. ## 실행 순서 Reference Verification Agent는 항상 다음 순서를 따른다. ```text ARTIFACT CHECK -> COMPARE -> CLASSIFY -> REPORT ``` `ARTIFACT CHECK`에서 다음 항목이 없으면 비교를 시작하지 않는다. - `metadata.json` - stored reference `reference.h5` - generated solver `results.h5` - required deterministic CSV view files - HDF5 schema version - CSV view schema version - units - coordinate system - step/frame identity - node/element ID matching rule - output location - tolerance policy ## 비교 대상 Authoritative 비교 대상: - `results.h5`와 `reference.h5`의 displacement datasets - `results.h5`와 `reference.h5`의 reaction datasets - `results.h5`와 `reference.h5`의 element force datasets - `results.h5`와 `reference.h5`의 stress datasets 기본 deterministic CSV view: - `csv/displacements.csv`: nodal displacement - `csv/reactions.csv`: nodal reaction force - `csv/element_forces.csv`: element internal force - `csv/stresses.csv`: element stress 선택 deterministic CSV view: - `csv/strains.csv`: strain이 acceptance criteria에 포함된 경우 - `csv/energy_or_residual.csv`: energy, residual, convergence quantity가 acceptance criteria에 포함된 경우 ## Failure Classification - `missing-reference-artifact`: required stored reference file 또는 provenance가 없다. - `missing-solver-output`: generated solver `results.h5` 또는 comparison command가 없다. - `schema-mismatch`: reference HDF5, solver HDF5, 또는 deterministic CSV view schema가 다르다. - `id-mismatch`: node id, element id, step/frame, integration point, component matching이 실패했다. - `unit-or-coordinate-mismatch`: units 또는 coordinate system이 비교 가능하지 않다. - `tolerance-failure`: schema와 matching은 유효하지만 error가 tolerance를 초과했다. - `nonfinite-result`: NaN 또는 infinite value가 발견됐다. - `upstream-contract`: tolerance, schema, units, output location, ID matching policy가 누락 또는 충돌한다. - `environment`: 로컬 실행 환경 문제로 비교가 불가능하다. ## 문서 템플릿 ```markdown # Reference Verification Report ## Metadata - feature_id: - source_build_test_report: docs/build-test-reports/-build-test.md - source_reference_models: docs/reference-models/-reference-models.md - source_io_definition: docs/io-definitions/-io.md - source_implementation_report: - status: pass-for-physics-evaluation | needs-correction | needs-reference-artifacts | needs-solver-results | needs-upstream-decision | blocked - owner_agent: reference-verification-agent - date: ## Artifact Inventory | item | path | status | notes | | --- | --- | --- | --- | | reference_bundle | references/// | present | missing | | | metadata | references///metadata.json | present | missing | | | reference_hdf5 | references///reference.h5 | present | missing | | | reference_csv_views | references///csv/ | present | missing | | | solver_hdf5 | /results.h5 | present | missing | | | solver_csv_views | /csv/ | present | missing | | ## Comparison Contract - hdf5_schema_version: - csv_view_schema_version: - id_matching: node_id | element_id | step/frame | integration_point | component - units: - coordinate_system: - output_location: nodal | element | integration_point | centroid | recovery_location - component_naming: - csv_view_sort_order: - tolerance_source: - tolerance_policy: absolute | relative | norm-based | combined - zero_reference_policy: ## Quantity Results | quantity | model_id | hdf5_dataset | csv_view | compared_rows | missing_rows | extra_rows | max_abs_error | max_rel_error | rms_error | norm_error | worst_id | worst_component | result | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | displacement | | | csv/displacements.csv | | | | | | | | | | pass | fail | | reaction | | | csv/reactions.csv | | | | | | | | | | pass | fail | | element force | | | csv/element_forces.csv | | | | | | | | | | pass | fail | | stress | | | csv/stresses.csv | | | | | | | | | | pass | fail | ## Failure Classification - classification: missing-reference-artifact | missing-solver-output | schema-mismatch | id-mismatch | unit-or-coordinate-mismatch | tolerance-failure | nonfinite-result | upstream-contract | environment | N/A - primary_failure: - evidence: ## Handoff Recommendation | target_agent | reason | required_input | | --- | --- | --- | | Correction Agent | | | | Reference Model Agent | | | | I/O Definition Agent | | | | Physics Evaluation Agent | | | | Coordinator Agent | | | ## No-Change Assertion - source_files_modified: false - test_files_modified: false - cmake_files_modified: false - reference_artifacts_modified: false - tolerance_policies_modified: false - notes: ## Open Issues - ``` ## 상태 값 - `pass-for-physics-evaluation`: required reference comparisons가 모두 통과했고 Physics Evaluation Agent로 넘길 수 있다. - `needs-correction`: implementation-owned solver result mismatch 또는 nonfinite result가 있다. - `needs-reference-artifacts`: required reference artifact 또는 provenance가 누락됐다. - `needs-solver-results`: generated solver `results.h5` 또는 comparison command가 없다. - `needs-upstream-decision`: schema, tolerance, units, coordinate system, output location, ID matching policy가 누락 또는 충돌한다. - `blocked`: 사용자 또는 Coordinator Agent 결정 없이는 안전하게 진행할 수 없다. ## 품질 기준 - 모든 `must` requirement의 reference-comparison 항목은 model id, compared quantity, HDF5 dataset, CSV view, tolerance에 trace되어야 한다. - reference artifact는 읽기 전용이다. `model.inp`, `metadata.json`, `reference.h5`, `csv/*.csv`를 수정하지 않는다. - `results.h5`와 `reference.h5`가 authoritative 비교 입력이다. - deterministic CSV view는 행 정렬과 사람이 검토 가능한 비교 view일 뿐이며 tolerance에 맞추기 위해 후처리 보정하지 않는다. - stress/strain은 element id, integration point 또는 recovery location, component naming이 일치할 때만 비교한다. - nodal displacement/reaction은 node id, DOF/component, coordinate system, unit이 일치할 때만 비교한다. - missing rows와 extra rows를 숨기지 않고 보고한다. - NaN 또는 infinite value는 `nonfinite-result`로 분류한다. - pass는 reference tolerance 통과만 의미한다. - physics validation과 release readiness는 각각 Physics Evaluation Agent와 Release Agent가 판정한다.