# 첫 구현 acceptance 독립 검토 - Feature: `mitc4-shell-feast-eigen2`; Owner: `numerical-review-agent`; 2026-09-10. - 판정: **`PASS` — 사용자 승인 첫 구현 범위**. S3와 후속 정확도 개선은 보류 상태다. - 적용: 사용자 승인 외부 Value 5%, [PRD](PRD.md), [ADR](ADR.md), [TOLERANCE](../TOLERANCE.md), [reference-model](reference-model.md), [필수 cases](numerical-review-cases.md), [내부 controls](numerical-review-controls.md). ## 승인 경계와 수치 판단 원본 Mode1–10은 source `Step-2`의 독립 modal-frame singleton이다. 첫 구현 profile `mitc4-eigen-first-implementation`은 각 `Value`의 reference-only relative error와 RMS를 각각 .05로 검사한다. 경계 포함이며 family를 합치거나 mode를 평균하지 않는다. 다른 공통 comparison의 RMS .01, missing/extra/duplicate/nonfinite 거부, zero-scale exact-zero, 내부 전체 c개의 residual/Gram `1e-10`은 유지한다. [종료 제어 검토](implementation-feast-residual-review.md)의 원본 최대 Value 오차 `4.2613310845%`는 승인된 새 5% 범위 안이다. 새 comparator의 실제 focused 실행에서 원본 10개 family가 통과했다. 기존 1% FAIL 기록은 당시 판정으로 보존한다. 수식·DOF·단위·적분· mass·whitening·복구·state update는 이번 외부 정책으로 바뀌지 않는다. ## 필수 보강과 추가 검증 한계 | 분류 | 요구·현재 evidence·필요한 보강 | | --- | --- | | 확인 — backend 실패 | REQ012/019, C21/C22. Fatal count·optional info1 fallback, final count 불일치·변경 없는 solve 반복 금지, info2의 더 큰 구간 retry, 요청 N 밖 고유벡터의 실제 residual 초과 및 nonfinite/Gram 거부 통과. Production이 사용하는 동일 budget helper의 511/512·363/364, size product·PTRDIFF/container 경계, 실제 count/solve workspace bad_alloc·thread 복원 및 초기 count3회 한계를 검사 | | 확인 — raw·순위·반복군 | C18/C19/C21. 증가 upper의 감소 count 거부, raw -1e-12와 -1e-9 보존 및 -1e-9 바로 아래 실패 통과. 작은 isolated repeated군을 세 번 실제 FEAST로 풀어 순서·history와 승인된 Frobenius projector/sqrt(2r) metric을 비교 | | 확인 — mass oracle·단위 | REQ005/014/026, C02/C03/C05. 48개 rational Ck/각 row·first spatial moment, theta×d 부호의 C1 cross-block·C2 rotary block과 두24×24 질량, pairwise Jensen의1/2 및2*C1 항을 대조. Scalar는 m_e(t/2)^k, matrix는 D Frobenius norm합, Jensen 차이는 qMLq+qMCq로 정규화. Proper Q+shift를 geometry/director부터 재계산하여 두 mass의 공변성 통과 | | 확인 — 공유 node assembly | REQ003/004/007, C06. rho2/t.5와 rho5/t1의 공유 node URX만 free인 patch에서 mass7/64, local K합/m와 modal amplitude²*mass1, element source order 변화의 결과를 확인. Model-level BC로 fixture를 바로잡은 뒤 통과; parser 지원 범위를 넓히지 않음 | | 확인 — final 보존 | REQ019, C24. Eigen candidate 변조·empty pencil 보존 및 실제 valid HDF5에 Win32 delete-sharing lock을 걸어 close/self-check 뒤 replace 실패·원본 bytes 보존 통과. 공통 AtomicFinalizeValidatedCandidate의 실패 경로와 연결 | | 확인 — 5% 한정 정책 | C25. ±5% 경계와 바로 밖, zero/nonfinite·identity 거부, common RMS1% 보존, actual profile metadata와 원본 10 family fresh 비교 통과. 아래 focused evidence와 source 대조 | | 사용자 명시 보류 | S3의 public static moment 충돌. Direct pencil/covariance 검사의 성공과 구별하고 지원 정적 사례의 성공으로 표시하지 않는다 | | 추가 검증의 한계 | 모든 조건수·geometry injectivity·mesh spectrum 수렴차수·vendor/OS 오류 조합·임의 반복군 방향은 보장하지 않는다. H5Fclose 오류 자체와512회 actual vendor 호출은 미실행이다. CloseChecked 실패는 RequireHdf5→catch/cleanup→replace전 종료를 정적으로 대조했고 budget은 실제 사용 helper의 경계 검사다. 대표 분기 검증을 모든 오류 조합 전수 검사로 확대하지 않는다 | 검토 대상 tests: [mass contract](../../tests/unit/elements/mitc4_shell_mass_contract_test.cpp), [mass/kernel](../../tests/unit/elements/mitc4_shell_test.cpp), [공유 node assembly](../../tests/unit/analysis/eigen_mass_assembly_test.cpp), [reduction](../../tests/unit/analysis/eigen_reduction_test.cpp), [backend](../../tests/unit/solvers/eigen/mkl_feast_eigen_solver_test.cpp), [procedure](../../tests/integration/analysis/linear_frequency_procedure_test.cpp), [writer](../../tests/unit/io/hdf5/eigen_hdf5_results_writer_test.cpp), [common finalize](../../tests/unit/io/hdf5/hdf5_writer_components_test.cpp). Source의 guard 존재와 실제 실패 주입 통과를 구분한다. 검토자는 source/tests·상위 계약·reference를 수정하지 않고 메인의 fresh 결과를 대조한다. ## 실행 evidence - `.harness/eigen-first-implementation-focused.log`: comparator/policy 10/10 PASS, 원본 실제 해석→HDF5→10개 family 비교 포함. 정책 코드의 공통 Evaluate는 RMS .01을 유지하고 named entry는 blocking singleton `Value`만 허용한다. - 독립 재계산: [기존 rational coefficient 적분](numerical-review-evidence.md)의 Python을 표준 라이브러리로 새 실행하고 mass test의 48개 rational 상수를 Fraction으로 대조하여 전부 exact 일치를 확인했다. 이종 두 요소 공유 node의 rotary mass도 `2*(1/2)^3/48+5/48=7/64 [M L²]`로 독립 확인했다. 이는 C++ 실행 대체가 아니다. - `.harness/eigen-first-implementation-coverage.log`: 31개 중30 PASS. Backend24개·writer 통과, C06 fixture의 BC 위치만 실패했다. `.harness/eigen-first-implementation-mass.log`에서 fixture와 정규화 보강 뒤 mass6/6 PASS를 직접 확인했다. - `.harness/eigen-first-implementation-boundaries.log`: raw negative와 count monotonicity 경계2/2 PASS. - `.harness/eigen-first-implementation-full-run.log`: MSVC x64 Debug의 configure/build/ discovery/CTest 모두 exit0, **417/417 PASS**, 166.86초. Unit339/integration42/reference36. 같은 build의 `Testing/Temporary/LastTest.log`에서도 Passed417/Failed0와 원본 reference 실행을 직접 확인했다. 과거 C06 실패를 담은 `LastTestsFailed.log`는 최신 판정 근거로 사용하지 않는다. 이번 검토에서 추가 numerical correction은 필요하지 않다. 독립 내부 기준과 새 외부 정책의 실행 연결을 확인했으며, 모든 vendor·OS 실패 조합이나 S3 해결·Abaqus 내부 절차 동등성을 승인한 판정은 아니다. [이전 물리 검토](implementation-physics-review.md)의 기존 nonlinear recovery 제한도 이 변경으로 해소됐다고 주장하지 않는다.