Files
FESADev/docs/mitc4-shell-feast-eigen/requirements.md
T
2026-10-04 03:32:59 +09:00

446 lines
44 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 이전 MFE 요구사항과 결정 근거
MFE 요구사항 ID·승인 근거는 이전 baseline의 이력이다. 현재 MFE2 요구와의 대응을 구분한다.
<a id="requirements"></a>
<a id="requirements--mitc4-shell-mass-matrix와-feast-고유치해석-요구사항"></a>
## MITC4 Shell Mass Matrix와 FEAST 고유치해석 요구사항
- Feature ID: `mitc4-shell-feast-eigen`
- Input contract revision: `r2`
- 검토 상태: 사용자 승인 stabilization 개선·정적/eigen 재검증 범위를 반영한 baseline gate 검토 요청.
- 요청 outcome: `pass`; workflow 전이와 최종 gate 판정은 Coordinator 소유.
지역 입력은 [FEATURED_AGENTS](FEATURED_AGENTS.md), [PRD](PRD.md), [ADR](ADR.md)이다.
[프로젝트 지침](../../AGENTS.md), [제품 요구사항](../PRD.md),
[ARCHITECTURE](../ARCHITECTURE.md), [공통 ADR](../ADR.md),
[TOLERANCE](../TOLERANCE.md), [agent 계약](../SOLVER_AGENT_DESIGN.md),
[문서 소유권](../FEATURE_DOCUMENTATION.md)을 적용한다.
Reference 관찰, 원문 경로·hash, 중요한 결정의 대안과 명령 evidence는
[requirements-evidence.md](requirements.md#requirements-evidence)에 둔다.
<a id="requirements--핵심-결과와-범위"></a>
### 핵심 결과와 범위
지정된 reference는 이름에 `shellNL`이 있지만 선행 정적 해석 없이 원형상에서 수행하는
단일 무감쇠 선형 고유진동 해석이다. `Step-2`에서 10개 모드를 요청하고 모든 외곽 절점의
DOF 1~6을 고정한다. 기존 TXT에는 고유치 `Value`와 주파수 `Freq`가 분리되어 있으며
Mode 1~10을 일대일 식별할 수 있다. 파일 형식 때문에 CSV를 새로 만들지 않는다.
사용자 후속 요구로 consistent mass를 먼저 계산하고 이를 이용하여 lumped mass를 계산한 뒤
FEAST 고유치해석에 lumped mass를 사용한다. 이 계산 흐름과 reference baseline이 확정되었다.
나머지는 명시된 사용자 요구, 실제 reference와 기존 승인된 shell 계약에서 도출한다.
- 원형상·무응력 상태의 단일 `*FREQUENCY` procedure, homogeneous essential constraints,
실수 무감쇠 고유치와 이에 대응하는 내부 modal vectors.
- 기존 MITC4의 막·굽힘·횡전단, 단일층 균질 등방성 탄성, centered constant-thickness
section, geometry-derived director, source `S4`/`S4R`와 전역 6 DOF 의미를 재사용한다.
- Numerical drilling stabilization은 사용자 승인에 따라 좌표 공변적으로 개선한다.
영향받는 기존 선형·비선형 정적해석과 새 eigen 해석을 재검증하며 물리 kernel의 변경으로 확대하지 않는다.
- 활성 재료마다 양의 유한한 일정 체적 밀도를 해석 모델에 연결한다. 질량은 병진과
director 접평면의 두 물리 회전 관성을 나타내며 drilling을 물리 관성으로 승격하지 않는다.
- Consistent mass와 그 행렬에서 유도한 lumped mass를 모두 계산·검증한다. Lumping 방식과
좌표/회전 block 처리는 Research/Formulation이 정의하며 두 spectrum의 동일성을 요구하지 않는다.
- FEAST, modal residual·mass normalization·orthogonality와 외부 고유치 비교는 동일한
derived lumped mass를 기준으로 한다. Consistent는 계산 원본과 내부 질량 검증에 유지한다.
- Mode count를 지정하는 최소 입력 subset과 MKL FEAST 실행을 end-to-end로 연결한다.
Reference의 blank frequency bounds·shift·Lanczos control fields를 그대로 처리한다.
- 공식 HDF5에 식별 가능한 고유치 결과를 기록하고 내부 modal correctness 증거를 남긴다.
외부 acceptance는 지정 reference의 고유치만 사용한다.
제외: prestress/선행 nonlinear state 전달, 다중 step, initial stress, geometric stiffness의
새 의미, 재료비선형, 감쇠·복소 고유치, 좌굴, 강제진동·시간적분, acoustic coupling,
혼합 beam/solid/shell 모델, concentrated/nonstructural mass, composite/offset/variable
thickness, 기존 미지원 shell geometry, residual modes 및 modal stress/reaction recovery.
사용자가 지정하지 않은 Lanczos/AMS 대체 backend, reference 생성·수정·복원과 외부 배포도 제외한다.
별도 frequency interval/shift 사용자 기능은 현재 최소 subset에 포함하지 않는다.
<a id="requirements--의미단위소유권"></a>
### 의미·단위·소유권
| 항목 | 요구되는 의미와 경계 |
| --- | --- |
| 질량 입력 | `rho`: mass/length³; `t`: length. 단위계는 사용자 일관 단위이며 SI 추론·자동 변환 없음 |
| 질량/관성 | 병진 질량 차원 mass, 회전 관성 mass·length²; 혼합 DOF block의 차원은 Formulation이 명시 |
| 고유치 | `lambda = omega²`, 차원 1/time²; 좌표계에 불변인 scalar, cycle frequency와 별개 |
| 주파수 | `f = sqrt(lambda)/(2*pi)`, cycles/time; 양의 고유치에서 의미 확인용 파생량이며 외부 비교 대체량 아님 |
| 모드 | Scalar mode identity와 global DOF/modal vector identity 분리; 진폭은 응답변위가 아닌 normalization convention |
| 모델과 equation | Domain은 density·section·step 정의, AnalysisModel은 non-owning view, DofManager는 DOF·equation·pattern 소유 |
| procedure/backend | Eigen procedure는 자체 state·solve·검증·commit 소유; FEAST vendor 타입과 자원은 private adapter 소유 |
| 결과 | Results는 물리량·identity, I/O Definition은 additive HDF5 schema·modal evidence projection과 진단 소유 |
요구사항은 stiffness/질량 조립식, massless drilling 처리식, FEAST 탐색 구간·subspace 및
solver parameter를 선결정하지 않는다. 특히 기존 선형 정적 `Run()`에 eigen 분기를 누적하거나
정적 reaction 의미를 modal 결과로 재사용해서는 안 된다.
<a id="requirements--requirement-verification-matrix"></a>
### Requirement Verification Matrix
모든 행은 `must`이고 acceptance는 해당 행의 요구와 검증 조건을 모두 만족하는 것이다.
출처 `U`는 [Feature PRD](PRD.md)의 사용자 요구, `R`은 [관찰 evidence](requirements.md#requirements-evidence),
`P`는 위 공통 기준, `L`은 [기존 MITC4 요구사항](../linear-static-mitc4-shell/requirements.md)과
[정식화](../linear-static-mitc4-shell/formulation.md), `N`은
[기존 nonlinear I/O](../nonlinear-static-newton-raphson/io.md)의 공통 경로·failure 계약을 뜻한다.
`NR`은 Numerical Review를 뜻하며 numerical threshold/metric/family 결정은 NR 소유이다.
아래에서 “승인 기준”은 구현 전에 해당 owner가 명시해 gate를 통과해야 하며 실행 결과로 조정하지 않는다.
| Requirement ID | Shall statement | 측정 가능한 acceptance / verification method | 출처·후속 owner |
| --- | --- | --- | --- |
| FEM-REQ-MITC4-EIGEN-001 | 솔버는 선행 상태 없는 원형상 무응력 모델의 단일 무감쇠 선형 고유진동 procedure를 실행해야 한다. | 지정 reference가 한 frequency step으로 선택되고 static/nonlinear preload 경로를 호출하지 않음; procedure 통합 테스트 | U, R, P; Formulation, I/O |
| FEM-REQ-MITC4-EIGEN-002 | `S4`와 `S4R`는 기존 FESA MITC4 물리 kernel·director·전역 6 DOF 의미를 유지하고 numerical stabilization만 Requirement 027에 따라 개선해야 한다. | Physical contribution·mapping·recovery 의미 보존, source type만 다른 모델은 같은 mass·개선된 stiffness/eigen 경로와 별도 source metadata; 개선 전 전체 K의 수치 동일성을 요구하지 않음 | U r2, L; Formulation, I/O |
| FEM-REQ-MITC4-EIGEN-003 | 모든 활성 shell의 밀도는 해당 section이 참조하는 material에서 하나의 finite `rho > 0`로 결정되어야 한다. | 여러 material의 올바른 연결 및 missing/duplicate/unresolved/nonpositive/nonfinite/dependent density 거부; semantic 양성·음성 테스트 | U, R, P; I/O |
| FEM-REQ-MITC4-EIGEN-004 | 질량 계산은 기존 shell의 유효한 geometry·director와 양의 centered constant thickness를 사용해야 한다. | 기존 geometry/material/section 검증 재사용과 서로 다른 두께·밀도 연결 테스트; 부적합 요소를 질량 zero로 우회하지 않음 | L, P; Formulation, I/O |
| FEM-REQ-MITC4-EIGEN-005 | 솔버는 MITC4 보간에 일관된 consistent mass를 계산하고 derived lumped mass 계산의 원본으로 제공해야 한다. | 독립 consistent mass/kinetic-energy oracle와 일치하고 같은 geometry/material/section의 consistent 결과가 Requirement 026의 입력임을 확인; 원본을 lumping으로 덮어쓰지 않음 | U r1, P; Research, Formulation, NR |
| FEM-REQ-MITC4-EIGEN-006 | 질량은 3개 병진 및 2개 director-tangent 회전의 물리 관성을 포함하고 numerical drilling에 물리 관성을 부여하지 않아야 한다. | Rigid translation의 총질량, 회전 관성·kinetic energy, director-parallel null action을 독립 검사; NR의 scale-aware 기준 | L, P; Research, Formulation, NR |
| FEM-REQ-MITC4-EIGEN-007 | 질량·강성은 동일한 physical DOF와 constraint 의미로 결정적으로 조립되어야 한다. | Scatter/source order, 대칭 구조, sequential/병렬 reduction 및 constrained motion 검증; 행렬 및 재실행 테스트 | P, L; Formulation, Planning |
| FEM-REQ-MITC4-EIGEN-008 | Massless numerical 좌표 처리는 개선된 stabilization과 lumped mass에 실제 global BC를 적용한 원 pencil의 유한 spectrum을 보존하며 FEAST admissibility를 만족해야 한다. | 지원 partial BC를 포함해 축소 전후 spectrum·constraint·원 free DOF residual 검증; 개선 전 K와의 spectrum 동일성 또는 consistent→lumped 동일성을 요구하지 않음. 인공 mass·임의 cutoff·clamp 금지 | U r2, P, L; Research, Formulation, NR |
| FEM-REQ-MITC4-EIGEN-009 | Mode-count 요청은 물리 spectrum의 낮은 순서에서 지정 개수의 고유쌍을 계산해야 한다. | Reference는 10개; 작은 독립 spectrum에서 첫 N개·multiplicity·zero rigid-mode case·요청수 초과/빈 물리계의 명시적 실패 확인. 부적합 음수 spectrum을 양수화하지 않음 | U, R; Formulation, NR, I/O |
| FEM-REQ-MITC4-EIGEN-010 | 고유치 결과는 오름차순의 고유한 mode identity를 가지고 반복 고유값의 multiplicity를 보존해야 한다. | Repeated/clustered spectrum에서 row 수·순위·identity 및 재현성 확인; 같은 eigenvalue 값은 duplicate identity 오류가 아님 | R, P; NR, I/O |
| FEM-REQ-MITC4-EIGEN-011 | 실제 고유치 계산은 consistent mass에서 유도한 lumped mass를 MKL FEAST에 사용해야 한다. | Consistent→lumped→FEAST 연결과 real adapter의 질량 입력·backend identity 확인; source Lanczos가 backend를 변경하지 않고 consistent나 다른 질량으로 reference에 맞추지 않음 | U r1; Research, Formulation, Planning |
| FEM-REQ-MITC4-EIGEN-012 | FEAST 실패·미수렴·불충분 모드·비유한 eigenpair를 성공 결과로 반영해서는 안 된다. | 각 failure injection에서 안정된 diagnostic과 불완전 result 미공개 확인; bounded termination 테스트 | P; Formulation, I/O, Planning |
| FEM-REQ-MITC4-EIGEN-013 | 성공 eigenpair는 FEAST에서 사용한 동일 lumped mass로 modal residual·mass normalization·orthogonality 검증을 통과해야 한다. | 내부 modal vectors로 독립 residual/Gram 검사를 수행하고 잘못된 mass variant·eigenvector·mode pairing을 검출; NR가 threshold·scale 고정 | U r1, P, R; Formulation, NR, Physics |
| FEM-REQ-MITC4-EIGEN-014 | 두 질량과 개선된 stabilized eigen 해석은 symmetry, kinetic-energy, coordinate invariance, rigid-body 및 density scaling 검증을 통과해야 한다. | 독립 mass oracle·invariants 및 동일 물리 BC를 보존하는 지원 partial-rotation 사례에서 재계산한 complete K와 eigen spectrum의 좌표 검증 필수. NR-MFE-001 반례를 필수 통과 사례로 포함하며 full-free/full-clamp만으로 대체하지 않음; density scaling 및 각 mass 고유 energy oracle 유지; NR가 기준 고정 | U r2, P, L; Research, Formulation, NR, Physics |
| FEM-REQ-MITC4-EIGEN-015 | 지정 `.inp`의 `*FREQUENCY` 요청과 부수 옵션은 보존된 입력에서 명시적으로 mapping되어야 한다. | 원본 파일 변경 없이 실행; requested count와 mass normalization 유지; Lanczos/SIM 옵션의 FESA 처리 및 acoustic-free 모델에서 `ACOUSTIC COUPLING=ON`의 무해성/진단을 I/O에 명시 | U, R, P; Research, I/O |
| FEM-REQ-MITC4-EIGEN-016 | 승인 subset 밖의 모델·절차·옵션은 의미를 삭제하거나 근사해 실행하지 않고 진단해야 한다. | Exclusion inventory의 양성/음성 테스트; acoustic 요소, preload, damping, 비영 prescribed base state, 미지원 frequency fields 등의 silent no-op 없음 | P, R; I/O, Planning |
| FEM-REQ-MITC4-EIGEN-017 | 공식 HDF5는 source step·mode identity와 고유치의 물리량·단위·실제 backend·사용 질량 variant를 식별할 수 있어야 한다. | 입력 sibling `<stem>_results.h5`에서 10개 reference 대응 고유치와 선택 질량을 복원; additive schema/self-check 테스트. Mode-vector 영속 projection 필요성·layout은 I/O 소유 | U, P, N; I/O |
| FEM-REQ-MITC4-EIGEN-018 | 내부 modal vectors는 global physical DOF·source identity와 연결되고 외부 mode-shape acceptance로 사용되지 않아야 한다. | Constraint 복원·source renumbering·mass normalization과 내부 verification evidence 재현; 비교기가 vector reference 파일을 요구하지 않음 | U, P; Formulation, NR, I/O |
| FEM-REQ-MITC4-EIGEN-019 | State와 final HDF5는 검증된 candidate만 반영하고 제어된 실패에서 기존 유효 결과를 보존해야 한다. | Solve·validation·writer/finalization 실패 후 이전 state/final hash 보존; live log는 기존 `<stem>_log.txt` 독립 lifecycle 유지 | P, N; Formulation, I/O, Planning |
| FEM-REQ-MITC4-EIGEN-020 | 새 eigen 외부 검증은 지정 원본 TXT의 `Value`만 derived lumped mass로 계산한 FESA HDF5 고유치와 비교해야 한다. | 같은 지정 `.inp`·TXT, Mode 1~10 포함; mass variant 사후 선택 금지. Eigen `Freq`·변위·회전·stress·reaction·mode shape 외부 gate를 추가하지 않음. 승인된 기존 static 회귀는 별도 Requirement 024의 기존 계약 사용 | U r1/r2, R; NR, I/O |
| FEM-REQ-MITC4-EIGEN-021 | 비교기는 required identity의 missing/extra/duplicate/nonfinite와 quantity/schema 오류를 tolerance 전에 거부해야 한다. | 행 재정렬은 같은 mapping, mode label 중복·누락·추가·비유한 `Value`는 실패; 같은 값의 다른 mode는 허용; comparator 음성 테스트 | P, R; NR, I/O, Planning |
| FEM-REQ-MITC4-EIGEN-022 | 외부 고유치 acceptance는 공통 `docs/TOLERANCE.md`의 scale·row·RMS·zero-scale 정책을 적용해야 한다. | NR가 mode/frame identity·family·blocking 분류를 고정하고 승인된 모든 고유치 비교 통과; frequency로 대체하거나 tolerance를 조정하지 않음 | U, P; NR, I/O |
| FEM-REQ-MITC4-EIGEN-023 | 새로운 동작은 관찰된 RED 이후 구현하고 MSVC x64 Debug CMake/CTest에서 검증해야 한다. | 대응 C++ tests, RED/GREEN/focused/full evidence, 새 warning 없음, 실제 FEAST runtime/reference evidence. 사용자 지정 `FESA_GTEST_SOURCE_DIR=C:\git\googletest`를 검증 환경에 사용 | U r1, P; Planning, Implementation |
| FEM-REQ-MITC4-EIGEN-024 | 기존 선형·비선형 정적해석은 승인된 stabilization 개선 외의 입력·출력·물리 의미를 보존하고 영향받는 correctness·reference 회귀를 통과해야 한다. | 상세 evidence의 필수 static portfolio와 기존 comparison identity·판정 정책을 유지해 새 evidence 생성; tangent/선형극한/평형·reaction/energy/state 검증. 개선 전 결과의 bitwise equality를 요구하지 않고 density 없는 기존 정적 모델도 유지 | U r2, P, L, N; Formulation, NR, Planning, Implementation, Physics |
| FEM-REQ-MITC4-EIGEN-025 | 완료 판정은 동일 revision의 implementation·독립 physics·release evidence를 요구해야 한다. | Requirement 전 행에 evidence 연결, 필수 미실행/실패/stale 항목 0, 내부 readiness와 외부 release 권한 구분 | U, P; Coordinator, Physics, Release |
| FEM-REQ-MITC4-EIGEN-026 | 솔버는 계산된 consistent mass에서 lumped mass를 유도하고 승인된 질량·관성 보존 계약을 검증해야 한다. | 유도 관계·독립 lumping oracle·총 병진 질량 보존, 차원/대칭성/물리 kinetic-energy 비음성, 물리 회전 관성과 drilling nullspace 의미 검사. Lumping 수식·좌표 block 처리·정확한 관성 불변식과 threshold는 Formulation/NR가 고정 | U r1, P, L; Research, Formulation, NR |
| FEM-REQ-MITC4-EIGEN-027 | 개선된 numerical drilling stabilization은 같은 물리 모델의 좌표·접평면 기저 선택에 공변적이고 기존 비물리 역할을 유지해야 한다. | 독립 재계산한 stabilization/complete K의 congruence, finite·대칭·양의 numerical stabilization, 물리 rigid modes 보존, physical recovery 제외 및 결정론 검증. Partial BC의 NR-MFE-001과 대응 정적 response를 필수 통과시키며 기존 static의 동일 scale 사용 경로도 정합 검증; 수식·threshold는 Formulation/NR 소유 | U r2, L; Research, Formulation, NR, Planning, Physics |
<a id="requirements--r2의-기존-계약-대체-범위"></a>
### r2의 기존 계약 대체 범위
[MFE-ADR-007](ADR.md#mfe-adr-007--기존-stabilization과-좌표-불변성-acceptance-정합)의 승인으로
기존 `FESA-REQ-LSMITC4-034`의 basis-dependent `min(R+)` scale 선정과 `056` 중 그
옛 공식 자체를 검증하도록 한 부분을 본 feature의 `027` 및 후속 개선 수식으로 대체한다.
같은 scale을 사용하는 [nonlinear formulation §10.3](../nonlinear-static-newton-raphson/formulation.md#103-fixed-scale-and-potential)도
그 scale 선정 부분의 영향 대상이다. Nonlinear objective drilling 좌표·potential의 의미,
초기 reference에서 scale을 고정하는 lifecycle 및 일관 residual/Hessian 계약은 유지한다.
물리 strain/material/section/director, 양의 비물리 stabilization, physical recovery 제외,
기존 지원 BC·source identity·output 의미는 대체하지 않는다. 기존 feature 문서는 읽기 전용
이력으로 보존하며 상세 대체 수식과 검증 trace를 이 feature의 후속 owner가 작성한다.
필수 static 회귀의 기존 case·identity·policy는
[requirements evidence의 r2 재검증 범위](requirements.md#requirements-evidence--r2-승인-범위와-정적-재검증)를 따른다.
새 eigen reference의 Value-only를 기존 정적 reference 요구의 삭제로 해석하거나,
정적 U/UR 회귀를 eigen mode-shape 비교로 확대하지 않는다.
<a id="requirements--결정과-handoff"></a>
### 결정과 handoff
`MFE-OQ-001`은 사용자 후속 결정으로 해결되었다. Consistent를 계산하고 이로부터 lumped를
계산하므로 두 계산은 모두 필수다. 기존 양자택일 요구는 대체되었다.
`MFE-OQ-002`도 사용자 명시 결정으로 해결되었다. **Consistent→lumped→FEAST** 흐름을
사용하며 external eigenvalue baseline과 내부 residual·normalization·orthogonality는
동일 lumped mass에 대응한다. [사용자 결정 근거](requirements.md#requirements-evidence--중요한-결정)를 따른다.
질량·backend·mode count 선택은 해결되었으며 다시 질문하지 않는다.
`MFE-OQ-003`은 사용자 명시 승인으로 해결되었다. 좌표 공변적인 stabilization 개선과
영향받는 기존 정적/eigen 재검증을 r2에 포함하며 partial BC 지원·invariance acceptance를
축소하지 않는다. [기존 반례·판단 이력과 승인 delta](requirements.md#requirements-evidence--nr-mfe-001-requirements-intent-검토)를
보존한다. 현재 요구사항의 중요한 미결정은 없고 NR 반례의 실제 해소·새 수치 통과는 아직 미검증이다.
Research/Formulation은 consistent→lumped 유도 및 각 관성 불변식, lumped 질량과 massless drilling, supported global
constraints의 양립, 실제 FEAST admissibility와 낮은 모드 추출의 완전성을 다룬다.
Stabilization의 좌표 공변성과 static scale 사용 경로를 정합시키고 개선된 pencil에서 기존
massless reduction 증명이 유지되는지 재검토한다. 이전 decoupling 증명을 그대로 승인으로 재사용하지 않는다.
NR는 independent physics portfolio와 모든 수치 기준, TXT readiness, mode/frame/family mapping을
확정한다. 특히 각 mode가 별도 Abaqus frame인 사실을 공통 family 규칙과 함께 검토한다.
I/O는 필요한 최소 syntax, no-op/diagnostic, source/result identity와 additive output을 정의한다.
기존 영속 계약의 비호환 변경이나 새로운 물리 근사가 필요한 경우만 다시 critical로 반환한다.
사용자는 작업 중 Git 커밋을 승인했다. Root가 사용자 수정 `AGENTS.md`와 완료 문서 checkpoint를,
Harness Executor가 기존 계약에 따라 구현·phase 커밋을 소유하며 이 specialist는 커밋하지 않는다.
이번 산출물은 문서 요구사항과 read-only evidence 조사이다. 구현·CMake·CTest·Harness·외부
solver·수치 reference comparison은 수행하지 않았으며 통과로 보고하지 않는다.
<a id="requirements-evidence"></a>
<a id="requirements-evidence--mitc4-eigen-요구사항의-관찰-evidence와-결정"></a>
## MITC4 eigen 요구사항의 관찰 evidence와 결정
- Feature ID: `mitc4-shell-feast-eigen`
- Input contract revision: `r2`
- 기본 보고서: [requirements.md](requirements.md#requirements)
- 관찰일: `2026-09-06`
<a id="requirements-evidence--원본-reference-관찰"></a>
### 원본 reference 관찰
| Artifact | 실제 경로 | SHA-256 |
| --- | --- | --- |
| Input | [shellNL-eigen-meshfine.inp](../../reference/shellNL-eigen-meshfine/shellNL-eigen-meshfine.inp) | `913b1abc604e62bc5f995bf5523924e17ea03925102a7bd22d39226ba0ea7339` |
| Eigenvalues | [shellNL-eigen-meshfine eigenvalues.txt](../../reference/shellNL-eigen-meshfine/shellNL-eigen-meshfine%20eigenvalues.txt) | `20d97ca3fd51f5b956f2c1ed7565557c68f74e61e41b913748515ef43a0f7f0b` |
| 관찰 항목 | 파일에서 읽은 사실 |
| --- | --- |
| 모델 | `Part-1`, identity instance `Part-1-1`; 729 nodes, 676 `S4` elements |
| 좌표 | x/y 각각 `[-5,5]`, 모든 z=`0`; 26×26 element mesh의 사각 평판 |
| Section | line 1421 `*Shell Section, elset=Set-1, material=Material-1`; data `0.5, 5`; offset/composite 없음 |
| Material | lines 1455~1459: `Material-1`, `*Density`=`2700.`, `*Elastic`=`2.1e+11, 0.3` |
| Constraint | lines 1464~1470: `Set-2`의 DOF 1~6, 값 생략으로 homogeneous constraint |
| Procedure | lines 1475~1477: 유일한 `*Step, name=Step-2, nlgeom=NO, perturbation`; `*Frequency, eigensolver=Lanczos, sim, acoustic coupling=on, normalization=mass`; `10, , , , ,` |
| 선행 이력 | 이전 Step/Static/Initial Conditions/load 없음; 이름 `shellNL`이나 `Step-2`로 preload를 추론하지 않음 |
| 부수 요청 | `*Restart, write, frequency=0`, field/Node PRESELECT, history/Energy ALL. 모델은 acoustic element/coupling constraint를 포함하지 않음 |
| TXT | 10개 row; 각 row에 `Frame: Mode <id>: Value = <lambda> Freq = <f> (cycles/time)` |
| Identity | mode IDs는 정확히 1~10, 유일하며 누락 없음; 모든 Value/Freq finite·positive |
| 반복값 | modes `(2,3)`, `(7,8)`, `(9,10)`의 표시 Value가 각각 같음; mode identity 중복과 구분 필요 |
관찰 Value 목록은 다음과 같다. 원본 표시 정밀도를 확장·보정하지 않는다.
| Mode | Value |
| --- | ---: |
| 1 | 2.19507E+05 |
| 2 | 8.85523E+05 |
| 3 | 8.85523E+05 |
| 4 | 1.85534E+06 |
| 5 | 2.74023E+06 |
| 6 | 2.77515E+06 |
| 7 | 4.14941E+06 |
| 8 | 4.14941E+06 |
| 9 | 6.73379E+06 |
| 10 | 6.73379E+06 |
관찰값으로 `sqrt(Value)/(2*pi)`와 표시 `Freq`를 계산상 대조한 최대 상대차는
`1.6946487122851045e-05`이다. 이것은 quantity 식별을 돕는 교차 확인이며 FESA comparison이나
새 허용오차 판정이 아니다. `Value`는 `omega²`, `Freq`는 cycles/time이라는 공개 정의와
일관된다. 단위계는 원문에 지정되지 않았고 수치만 보고 SI라고 단정하지 않는다.
TXT에는 step 이름이 별도로 없지만 입력은 정확히 한 개 frequency step이며 mode identity와
Value가 완전하다. 따라서 지정 input의 유일한 `Step-2`에 결합하는 deterministic projection은
가능하다. 최종 readiness와 frame/family mapping은 NR·I/O가 소유한다. CSV가 없다는 이유로
reference를 변환하거나 새 metadata/provenance를 요구할 근거는 없다. 사용자 지정 경로를
우선하는 feature-specific artifact 선택이며 공통 reference 문서나 다른 feature 계약은 바꾸지 않는다.
<a id="requirements-evidence--중요한-결정"></a>
### 중요한 결정
<a id="requirements-evidence--mfe-oq-001--두-질량-계산-관계-해결"></a>
#### MFE-OQ-001 — 두 질량 계산 관계: 해결
사용자는 `2026-09-06` 후속 답변에서 “mass matrix는 consistent mass를 계산하고 이를
이용해서 lumped mass를 계산합니다.”라고 명시했다. Consistent 원본 계산과 derived lumped
계산이 모두 필수이며 이전 둘 중 하나의 계산만 선택하는 초안은 대체되었다.
관련 결정은 [MFE-ADR-002](ADR.md#mfe-adr-002--mitc4-질량-이산화), 요구사항은
`FEM-REQ-MITC4-EIGEN-005`, `026`이다. Lumping 알고리즘은 사용자 지정이 없으므로
Research/Formulation이 질량 보존·물리 회전 관성·좌표 변환·drilling 경계를 명시하고 NR가 검토한다.
모든 속도장의 kinetic energy나 두 spectrum의 exact equality를 보존 조건으로 추가하지 않는다.
<a id="requirements-evidence--mfe-oq-002--feast와-reference-baseline의-질량-해결"></a>
#### MFE-OQ-002 — FEAST와 reference baseline의 질량: 해결
- 상태: **사용자 명시 결정으로 해결**.
- 관련 요구사항: `FEM-REQ-MITC4-EIGEN-008`, `011`, `013`, `017`, `020`.
NR가 검증; Requirement Agent가 본 r1 baseline에 반영.
사용자는 추가 답변에서 “고유치 해석에서는 lumped mass를 사용합니다. 따라서 고유치 해석을
할 때 consistent mass -> lumped mass -> 고유치 해석 입니다”라고 명시했다.
따라서 FEAST와 authoritative reference baseline은 derived lumped mass를 사용하며
동일 lumped mass로 residual·mass normalization·orthogonality를 검증한다.
Consistent는 유도 원본과 내부 mass/energy 검증에 유지한다. Consistent eigen 해석,
두 variant의 외부 비교 및 runtime 질량 선택 API는 현재 요구가 아니다.
이 결정은 수치 tolerance 통과나 정확도 우위의 evidence를 대신하지 않는다.
Drilling은 기존 승인 shell 계약에서 비물리 안정화 좌표이다. 인공 drilling inertia를
추가하거나 두 물리 회전 관성을 생략하는 대안을 새 사용자 옵션으로 발명하지 않는다.
Massless drilling을 그대로 generalized FEAST에 넣을 수 있다는 가정도 하지 않는다.
FEAST의 SPD 조건과 shell 질량 nullspace의 양립은 Research/Formulation이 물리 spectrum과
constraints를 보존하는 방식으로 해결해야 한다. 이 문서는 elimination/projection/condensation
식을 승인하지 않으며, 새로운 물리 근사가 필수라는 evidence가 생기면 해당 owner가 반환한다.
<a id="requirements-evidence--nr-mfe-001-requirements-intent-검토"></a>
### NR-MFE-001 requirements intent 검토
이 절의 반례와 승인 전 판단은 **r1 이력**이다. 사용자 승인으로 개선 범위를 확정한 현재
r2 계약은 아래 [r2 승인 범위와 정적 재검증](requirements.md#requirements)을 따른다.
- Input contract revision: `r1` 유지. 이번 bounded 검토는 기존 `002/008/014`의 정합만 다룬다.
- 발견 근거: [Numerical Review](numerical-review.md#numerical-review--blocking-finding),
[NR 소유 직접 계산 반례](numerical-review.md#numerical-review-evidence--nr-mfe-001-직접-계산-반례),
[Formulation V5](formulation.md#formulation-verification--v5-rigid-mode-coordinate-및-density-불변식).
- 결과: `needs-user-decision`. Requirement owner가 새 수식을 유도하거나 NR 계산을 재실행하지 않았다.
NR는 유효한 단일 평판의 한 절점 `URZ`만 free인 모델에서 global Z축 45° 회전이
동일 물리 component BC를 유지함을 확인했다. 기존 `kd` 규칙으로 고유치가
`23.04088888888889`에서 `23.040628726287263`으로 달라지고 상대 차이가
`1.1291343961675893e-5`다. 이는 NR의 독립 계산 evidence이며 새로운 mass/reduction의
확인된 결함이나 이번 Requirement Agent의 runtime 검증 결과가 아니다.
`014`의 원래 문구는 coordinate-invariance evidence를 필수로 두고 acceptance에
독립 invariant suite 통과를 요구한다. 유한한 test portfolio를 NR에 위임한 것은 모든
가능한 모델의 exact equality를 증명하라는 뜻은 아니지만, 알려진 지원 모델의 반례를
검증 범위 밖으로 재분류할 권한도 아니다. Full-free/full-clamp 사례로만 범위를 고정한 V5는
이 반례를 해소하지 못하므로 기존 의도의 단순 clarification으로 통과시킬 수 없다.
`002`의 물리 kernel 재사용 문구 하나만 보면 numerical stabilization 수정까지 직접
명시하지 않지만, 문서가 함께 재사용하는 [기존 shell 요구사항](../linear-static-mitc4-shell/requirements.md)의
`FESA-REQ-LSMITC4-034/056`은 고정 `kd` 규칙을 정한다. `008`은 실제 제약을 적용한
원래 pencil의 유한 spectrum 보존을 요구하므로 massless 처리에서 남는 stabilization을
제거해 이 반례를 없애는 해석도 허용하지 않는다. 고정된 tensor의 기저 변환과 geometry를
회전시켜 `kd`를 다시 계산하는 서로 다른 연산을 같은 검증으로 취급해서는 안 된다.
<a id="requirements-evidence--mfe-oq-003--r1에서-검토한-대안과-영향"></a>
#### MFE-OQ-003 — r1에서 검토한 대안과 영향
| 대안 | 정확한 영향과 승인 뒤 필요한 작업 |
| --- | --- |
| 기존 stabilization 유지 및 한계 수용 | Partial rotation BC 지원과 원래 pencil을 유지한다. 해당 BC에서 stabilization이 유한 공간에 남는 경우의 일반 eigen 좌표 불변성을 현재 feature acceptance에서 보장하지 않도록 `014` 적용 범위를 명시적으로 변경한다. 두 질량·physical stiffness의 좌표 검증, 모든 지원 BC의 원래 pencil 보존·modal residual 등은 계속 필수이며 NR 반례를 알려진 한계로 보존한다. 이는 acceptance 변경이고 아직 승인되지 않았다 |
| 좌표 공변적인 stabilization 개선 — 권고 | 동일 물리 모델의 좌표축 선택에 따른 고유치 변화를 해결하는 강성 개선을 작업 범위에 추가한다. 기존 fixed `kd`와 충돌하는 계약의 owner·승인 경계를 정하고 Research/Formulation/NR를 재검토한다. 영향받는 기존 정적 결과와 새 eigen 결과를 재검증한다. 특정 대체 계수나 수식은 이 요구사항 검토에서 선택하지 않는다 |
권고 이유는 좌표 선택만으로 같은 물리 모델의 고유치가 달라지는 알려진 결함을 유지하지
않기 위해서다. 대가는 기존 stiffness 계약의 영향 조사와 정식화·회귀 검증 범위 증가다.
반례의 수치가 작다는 이유로 외부 reference tolerance를 적용하거나 일반 오차 상한으로
사용하지 않는다. 이 한 건 외에 질량 흐름·FEAST 사용 질량·입력 N을 재질문하지 않는다.
두 대안은 같은 반례를 acceptance에서 다르게 처리하며, 기술 evidence만으로 사용자가
어느 변경 범위를 승인했는지 결정할 수 없다. 승인 전 `002/008/014` 원문, 기존 stiffness,
partial BC 지원, NR 판정 영향, 모든 tolerance·reference·schema를 변경하지 않았다.
Coordinator가 결정과 revision을 관리하고 영향받은 owner에게 후속 작업을 할당한다.
이 작업은 implementation correction이 아니며 correction budget을 사용하지 않는다.
<a id="requirements-evidence--r2-승인-범위와-정적-재검증"></a>
### r2 승인 범위와 정적 재검증
사용자 답변 “네 개선과 영향받는 기존 정적해석과 고유치해석의 재검증까지 범위에
포함해주세요.”로 `MFE-OQ-003`의 개선안이 승인되었다.
[MFE-ADR-007](ADR.md#mfe-adr-007--기존-stabilization과-좌표-불변성-acceptance-정합)이
승인·revision 근거이며, 한계 수용/acceptance 축소안은 선택되지 않았다.
변경 intent는 `002` 물리 kernel 보존과 numerical stabilization 개선 분리,
`008` 개선된 constrained pencil의 유한 spectrum 보존,
`014` 지원 partial BC를 포함하는 필수 invariant 통과,
`024` 영향받은 정적 correctness/reference 재검증, 신규 `027` 좌표 공변적인 stabilization이다.
`020`은 eigen Value-only와 기존 static 회귀의 서로 다른 비교량을 명확히 구분한다.
기존 고정 scale과 직접 충돌하는 부분만 대체하며 수식·수치 기준·schema를 이 문서에서 정하지 않는다.
기존 [linear shell 요구사항](../linear-static-mitc4-shell/requirements.md)의
`034` scale 선정과 `056`의 해당 공식 검증을 대체하고, 나머지 physical/nonphysical 경계를
유지한다. [Nonlinear formulation §10.3](../nonlinear-static-newton-raphson/formulation.md#103-fixed-scale-and-potential)도
같은 initial physical tangent diagonal minimum을 사용하므로 영향받는 기존 static 경로다.
새 scale과 기존 nonlinear objective potential·일관 tangent·초기 고정 lifecycle의 정합을
Formulation/NR가 확인해야 한다. 이 발견은 nonlinear material/procedure 범위 확대가 아니다.
<a id="requirements-evidence--필수-회귀-포트폴리오와-identity"></a>
#### 필수 회귀 포트폴리오와 identity
| 구분 | 필수 재검증과 기존 evidence 계약 |
| --- | --- |
| Element 및 linear static correctness | 기존 [build-test](../linear-static-mitc4-shell/verification.md#build-test)와 [physics](../linear-static-mitc4-shell/verification.md#physics-evaluation)의 kernel/patch/rigid-mode/physical recovery·정적 partition/full residual·reaction·energy·source mapping을 재검증한다. 추가로 NR-MFE-001의 동일 물리 partial BC에서 complete K와 대응 정적 response를 좌표 변환해 검증한다. Loads/BC를 함께 물리적으로 변환하고 지원되지 않는 MPC 입력을 만들지 않는다 |
| 기존 linear S4 external regression | [reference-model](../linear-static-mitc4-shell/reference-model.md), [comparison의 common-policy 재검증](../linear-static-mitc4-shell/verification.md#reference-comparison--2026-08-18-common-policy-revalidation), 현행 [nonlinear I/O의 공통 경로·linear control](../nonlinear-static-newton-raphson/io.md)을 적용한다. 원본 `reference/shell/shell.inp` + `reference/shell/shell displacements.csv`; stable source instance/node/component 및 해당 static step/frame. U1/U2/U3 blocking, UR1/UR2/UR3 warning-only를 유지한다 |
| 기존 nonlinear correctness | [FESA-REQ-NSNR-030](../nonlinear-static-newton-raphson/requirements.md), [formulation](../nonlinear-static-newton-raphson/formulation.md), [physics](../nonlinear-static-newton-raphson/verification.md#physics-evaluation)의 선형극한·tangent consistency·objectivity·factor-one 전역 force/moment balance·free residual·commit/rollback을 새 scale로 재검증한다. 기존 Newton/convergence·하중·reaction 의미는 유지한다 |
| 기존 nonlinear external regression | [현행 reference-model](../nonlinear-static-newton-raphson/reference-model.md)과 [기존 comparison](../nonlinear-static-newton-raphson/verification.md#reference-comparison)의 closure case `shellnl-s4-final`, `shellnl-meshfine-s4-final`, `shell-s4-linear-limit`를 재검증한다. 각각 `reference/shellNL/shellNL.inp`, `reference/shellNL-meshfine/shellNL-meshfine.inp`, 위 linear input 및 같은 폴더의 기존 `<stem> displacements.csv`를 사용한다. Nonlinear은 source instance/node/component와 factor-one accepted state, linear은 자기 static state identity를 유지한다 |
| 새 eigen 검증 | 개선된 K와 derived lumped M에서 `008/013/014/027` 내부 검증 및 NR-MFE-001 해소를 필수 확인한다. 기존 지정 eigen input/TXT의 모든 요청 mode Value만 비교하며 static U/UR 데이터를 eigen reference로 사용하지 않는다 |
Nonlinear 외부 회귀도 U blocking/UR warning-only이고, 기존 coarse/fine의
`shellNL reactions.csv`·`shellNL-meshfine reactions.csv`에서 local RF1/RF2/RF3와
physical spatial RM1/RM2는 source-key/finite/inventory/error 보고를 유지하는 review-only다.
RM3와 stress를 새 numerical gate로 추가하지 않는다. Internal equilibrium acceptance와
local distribution 검토를 구분한다. 모든 외부 수치 판정은 `docs/TOLERANCE.md`를 그대로 사용한다.
현행 nonlinear reference-model에는 `shellnl-meshfine-02-s4-final`도 별도 post-closure
verification으로 기록되어 있다. 이를 과거 세 case closure의 통과 evidence로 소급하지
않는다. 기존 등록 회귀 suite에서의 실행·영향은 Planning이 기록하고 별도 case의 기존
판정 역할을 유지한다. 과거 HDF5 schema/파일명/고정 absolute tolerance의 이력보다 현행
공통 output 경로와 `TOLERANCE.md`, 각 feature의 최신 identity 계약이 우선한다.
개선 전 숫자와의 bitwise equality는 요구하지 않는다. 위 approved physics·reference
기준과 개선된 formulation을 기대값으로 검증하며 오래된 실패를 baseline으로 재생성하여
정당화하지 않는다. 원본 reference와 과거 보고서는 보존하고 새 r2 실행 evidence를 기록한다.
전체 configured MSVC/x64/Debug suite, 새 warning 없음, TDD와 failure preservation도 필수다.
현재 중요한 미결정은 없으며 연구·정식화·NR·구현의 후속 gate는 아직 통과하지 않았다.
<a id="requirements-evidence--질문-없이-정리한-사항"></a>
### 질문 없이 정리한 사항
- 무하중 원형상·비감쇠 해석은 실제 단일 `*FREQUENCY`와 선행 이력 부재로 결정한다.
- `.inp`의 Lanczos는 source solver 옵션이다. 사용자가 FESA backend를 FEAST로 명시했으므로
source option을 유지해 읽되 실제 backend를 명시하는 mapping이 가능하다. Abaqus Lanczos
동작과의 동등성을 주장하지 않는다. Exact allowlist와 진단은 I/O 소유이다.
- `SIM`은 source architecture 옵션이고 acoustic-free 모델의 `ACOUSTIC COUPLING=ON`은
실제 acoustic 모델 지원 요청이 아니다. 무해한 조합만 근거와 warning 정책으로 허용한다.
- `NORMALIZATION=MASS`의 내부 modal 의미를 유지한다. 외부 mode shape 비교는 추가하지 않는다.
- TXT의 명시적인 `Value`를 직접 읽고 원본을 보존한다. Matching/family는 tolerance 전에
고정하며 repeated eigenvalue와 duplicate mode ID를 구분한다.
- 기존 HDF5 의미를 보존하는 eigen quantity 추가는 신규 기능에 필요한 I/O 정의이다.
비호환 변경이 없는 한 schema 검토를 별도 사용자 승인 질문으로 만들지 않는다.
<a id="requirements-evidence--공개-근거"></a>
### 공개 근거
다음은 `2026-09-06`에 확인한 1차 문서이다. 공식 syntax와 backend admissibility 확인에만
사용하며 Abaqus 내부 정식화의 추정 근거로 쓰지 않는다.
1. [Abaqus 2025 — Natural Frequency Extraction](https://docs.software.vt.edu/abaqusv2025/English/SIMACAEANLRefMap/simaanl-c-freqextraction.htm):
`Eigenvalue Extraction`, `Initial Conditions`, `Loads`, `Output` 절. 무감쇠 eigenproblem의
`omega²`, 원형상/선행 기하비선형 상태의 구분, 각 모드 출력 의미 확인.
2. [Abaqus 2025 — *FREQUENCY](https://docs.software.vt.edu/abaqusv2025/English/SIMACAEKEYRefMap/simakey-r-frequency.htm):
`Optional parameters`와 Lanczos data line 절. 요청수 10, blank bounds, source algorithm,
SIM/acoustic 옵션의 의미와 mass normalization 확인.
3. [Intel oneMKL 2026.0 — Extended Eigensolver Functionality](https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-c/2026-0/extended-eigensolver-functionality.html):
real symmetric generalized 문제는 `B` SPD를 요구한다. 이 조건 때문에 massless drilling을
아무 처리 없이 FEAST에 전달해서는 안 된다.
4. [Intel oneMKL 2026.0 — ?feast_scsrgv](https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-c/2026-0/feast-scsrgv-feast-hcsrgv.html):
지정 구간의 eigenpairs, subspace capacity, 결과 count와 status 의미 확인. 구간 선택·확장과
설치된 MKL 버전 검증은 후속 owner가 정의한다.
<a id="requirements-evidence--실행-evidence와-미실행"></a>
### 실행 evidence와 미실행
r0 원본 관찰과 hash는 그대로 유지했다. 아래는 당시 실행한 read-only 조사이며 이번 r1에서
reference 재조사나 변환을 수행하지 않았다. 해당 shell 명령은 exit code `0`이었다.
```powershell
Get-Content -Raw '.codex/skills/fem-requirements-baseline/SKILL.md'
Get-Content -Raw 'docs/SOLVER_AGENT_DESIGN.md'
Get-Content -Raw 'docs/FEATURE_DOCUMENTATION.md'
rg -n -i '^\*(?!\*)|density|frequency|static|step|boundary|shell section' --pcre2 'reference/shellNL-eigen-meshfine/shellNL-eigen-meshfine.inp'
Get-Content -Tail 75 'reference/shellNL-eigen-meshfine/shellNL-eigen-meshfine.inp'
Get-Content -Raw 'reference/shellNL-eigen-meshfine/shellNL-eigen-meshfine eigenvalues.txt'
rg -n 'FEAST|feast|MassMatrix|Density|density|Frequency|Eigenvalue|eigenvalue' include src -g '*.[ch]*'
git status --short
```
추가 read-only `python -B -` here-script는 `pathlib`로 두 파일을 읽고 keyword별 node/element
count, 좌표 범위, regex `Mode\s+(\d+):\s+Value\s*=\s*(\S+)\s+Freq\s*=\s*(\S+)`로
mode/Value/Freq를 추출하여 finite·identity·주파수 교차 확인과 SHA-256을 계산했다.
Exit code `0`, 729 nodes / 676 elements / 10 modes였고 위 표·hash와 일치했다.
파일을 생성하거나 reference 내용을 쓰지 않았다. Source 검색에서 물리 mass/density/eigen
구현을 발견하지 못했고 nonlinear local energy 변수 `density`만 검색되었다. 이는 scoped 검색
관찰이며 제품 미지원의 최종 코드 감사는 아니다.
공통/feature/기존 MITC4·nonlinear 승인 계약을 read-only로 조사했다. 기존 보고서의 완료
표시는 이번 feature 실행 증거로 재사용하지 않는다. C++ build/test, Harness, 외부 solver와
FESA reference comparison은 요구사항 단계의 범위가 아니므로 미실행이다.
r1에서는 관리문서·owned reports·공통 agent 계약을 `Get-Content`로 읽고 사용자 수정
`AGENTS.md`의 GoogleTest 경로를 `rg -n 'GTEST|git|GoogleTest' 'AGENTS.md'`로 확인했다.
명령은 exit code `0`이었다. 실제 GoogleTest dependency 설정/build 확인은 Root·Planning
소유이며 이 문서 갱신에서 새로 실행하지 않았다. 두 사용자 결정으로 `MFE-OQ-001`과
`MFE-OQ-002`를 해결했으며 기존 25개 requirement ID를 보존하고 derived lumped 요구
`026`을 추가했다. 당시 질량 선택의 미결정은 모두 해소되었다. 이후 NR-MFE-001로 발견된
현재 acceptance 결정은 위 별도 절에서 관리하며 상세 lumping 수식·수치 기준은 후속 owner 소유이다.
NR-MFE-001 bounded 검토에서는 `Get-Content`로 현재 Feature 관리문서·owned 보고서·NR
main/evidence·reference-model·formulation-verification을 읽고, scoped `rg`로
`002/008/014`와 기존 `FESA-REQ-LSMITC4-034/038/051/056`을 대조했다. Exit code `0`.
원본 reference 재조사, NR 반례 재계산, 새로운 외부 조사와 수식 유도는 수행하지 않았다.
r2에서는 현재 관리문서와 위 기존 static reports/requirements/formulation을 `Get-Content`와
scoped `rg`로 읽었다. Exit code `0`. 기존 nonlinear §10.3의 동일 scale 사용과 현행
reference-model의 closure/별도 post-closure case 구분을 확인했다. 실제 reference 파일을
재조회하거나 과거 수치·hash를 새로 계산하지 않았다. NR 반례/positive evidence도 재실행하지
않았다. 변경은 owned 두 문서뿐이고 실제 C++/FEAST/build/test/reference 회귀는 미실행이다.
변경한 경로는 기본 보고서와 이 상세 보고서 두 개뿐이며 관리문서, source, tests, phase,
공통 정책과 reference artifact는 편집하지 않았다. 정적 링크·필수 metadata·ID/matrix 검사를
완료한 명령과 결과는 Requirement Agent 반환 evidence로 함께 보고한다.