Files
FESADev/docs/mitc4-shell-feast-eigen/coordination.md
T
2026-09-06 02:58:12 +09:00

184 lines
20 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.
# MITC4 Shell Mass Matrix와 FEAST 고유치해석 coordination
- Feature ID: `mitc4-shell-feast-eigen`
- Owner: `coordinator-agent`
- Contract revision: `r1` (사용자 최종 질량 요구를 반영한 requirements baseline)
- Stage: `requirements`
- Outcome: `needs-user-decision` (MFE-OQ-003 / NR-MFE-001)
- Next owner: `coordinator-agent` (Root를 통한 사용자 결정 수신)
- Attempt: `1` (numerical-review r1의 해당 failure 관찰 횟수)
- Completion: 미완료
- Failure classification: `upstream-contract`
- Retry key: `mitc4-shell-feast-eigen|numerical-review|upstream-contract|r1`
- Escalation class: `physics-scope-acceptance`
- Blocker: `MFE-OQ-003` — 기존 stabilization 한계 수용 및 REQ-014 적용 범위 변경 또는 좌표 공변적인 stabilization 개선과 정적/eigen 재검증 범위 추가의 사용자 결정 필요.
기준: [프로젝트 지침](../../AGENTS.md), [프로젝트 PRD](../PRD.md), [프로젝트 ADR](../ADR.md),
[SOLVER_AGENT_DESIGN](../SOLVER_AGENT_DESIGN.md), [FEATURE_DOCUMENTATION](../FEATURE_DOCUMENTATION.md).
문서 목록은 [FEATURED_AGENTS.md](FEATURED_AGENTS.md), 범위는 [PRD.md](PRD.md), 결정은 [ADR.md](ADR.md)를 따른다.
## Gate evidence
| Gate | Evidence | Coordinator 판정 |
| --- | --- | --- |
| intake | 사용자 요청, 공통 운영 계약 및 관리문서 4개 생성 | pass |
| requirements r0 초안 | [requirements](requirements.md), [관찰·결정 evidence](requirements-evidence.md) | needs-user-decision; 질량 선택 미승인으로 baseline pass 보류 |
| requirements r1 | [requirements](requirements.md), [관찰·결정 evidence](requirements-evidence.md), MFE-ADR-002/004 사용자 명시 결정 | pass; 26개 must와 owner/revision/hash 검증, 미결정 0 |
| research r1 | [research](research.md), [primary-source 상세 근거](research-evidence.md) | pass; primary source 11개 그룹·프로젝트 근거2개, 26개 requirement coverage 및 API 보장 한계 확인 |
| formulation r1 | [기본 수학 계약](formulation.md), [mass](formulation-mass.md), [eigen](formulation-eigen.md), [verification](formulation-verification.md) | pass; owner/revision/상세 수식·26개 coverage·정적 evidence 확인, 독립 수치판정은 NR 소유 |
| numerical-review r1 | [NR verdict](numerical-review.md), [반례·독립 evidence](numerical-review-evidence.md), [reference-model](reference-model.md) | return-upstream; NR-MFE-001, 전체 internal controls 미확정, gate 미통과 |
| requirements r1 intent 재검토 | [Requirement 판단](requirements.md), [MFE-OQ-003 대안·영향](requirements-evidence.md#nr-mfe-001-requirements-intent-검토) | needs-user-decision; 원래 26개 matrix 행 유지, 단순 clarification으로 반례 제외 불가 |
공통 문서 및 reference 파일 목록의 read-only 조사 명령은 exit code `0`으로 완료했다.
확인된 reference 파일은 `shellNL-eigen-meshfine.inp`, `shellNL-eigen-meshfine eigenvalues.txt`이며 실제 의미와 readiness는 담당 owner가 검토한다.
Root의 시작 Git 조사에서 worktree clean을 확인했다. 구현·build/test·외부 reference comparison은 아직 실행하지 않았다.
관리문서 상대 링크 검사 결과는 `4`문서, 끊긴 local link `0`, exit code `0`이며 `git diff --check`도 exit code `0`이다.
## 현재 bounded dispatch
Requirement owner의 두 owned 보고서와 `needs-user-decision` envelope를 감사했다.
원래 r1의 지원 partial BC 반례를 acceptance에서 제외하는 것은 실제 변경이며, 기존 stabilization 개선 또한 scope/physics 변경이라는 판단과 두 대안·권고를 [MFE-ADR-007](ADR.md#mfe-adr-007--기존-stabilization과-좌표-불변성-acceptance-정합)에 기록했다.
질량·FEAST·입력 N의 승인 선택은 유지하고 Root에 한 건의 결정 묶음을 전달했다. 사용자 응답 전 계약 변경·다음 stage 통과는 보류한다.
Requirement owner의 `Get-Content`/`rg` 및 Python 정적 검사는 exit `0`, matrix 26행은 기존 HEAD와 동일하고 링크 누락이 없다. 수식 유도·수치 재실행·source 변경은 하지 않았다.
현재 SHA-256은 `requirements.md`: `ae08d2c7a52cce5261e3420618e5b84b3f25c20258d0992b1b6941511baa7d09`,
`requirements-evidence.md`: `528bdf8a948a964f269cc100c2072d68e65ebaff333b9246b1f718a2052d408e`이다.
Coordinator의 `python -B -` 정적 audit은 15문서/끊긴 local link 0, matrix 26행과 HEAD 동일, exit `0`이다. 최초 audit helper는 ID의 backtick을 잘못 가정하여 0행/exit `1`을 반환했고 실제 문서 형식에 맞춘 패턴으로 수정해 재확인했다. 문서나 계약을 변경하여 검사에 맞추지 않았다.
`git diff --check`는 exit `0`; 변경 경로는 관리 4문서와 Requirement owner 2문서뿐이다.
Root는 NR finding 7개 exact paths checkpoint를 `c8876da` (`docs: record MITC4 numerical review contract finding`)로 커밋하고 clean을 확인했다.
### Requirements return-upstream 이력
NR owner의 실제 보고서 3개와 `return-upstream` envelope를 확인하여 정확한 Requirement owner로 반환한다.
같은 지원 partial BC를 보존한 45도 회전의 직접 계산에서 `lambda=23.04088888888889 -> 23.040628726287263`,
상대차 `1.1291343961675893e-5`가 재현되었다(`python -B -`, exit `0`). 기존 `kd` 규칙과 REQ-014의 acceptance intent 사이의 발견이다.
NR의 independent rational mass oracle, Intel API/count/trace 검토와 reference 원본/10-mode logical readiness evidence는 보존한다.
Owner 정적 검사는 3문서/35 local links/issues0, exit `0`; 수치 reference comparison·FEAST runtime·구현은 미실행이다.
`014`에 영향을 받는 research R06 coverage와 formulation V5/coverage를 부분 stale로 표시하고, 나머지 수학·reference evidence는 향후 revision 영향 검토 후 재사용한다.
Requirement owner는 기존 literal intent의 기술적 정합 가능성과 실제 critical acceptance/physics 선택을 구분한다. 새로운 사용자 결정을 이미 필요하거나 승인된 것으로 표시하지 않는다.
이번 건은 upstream 계약 문제이며 Implementation/Correction Agent로 보내지 않는다. Correction 및 transport 재시도 budget은 사용하지 않았다.
### Numerical-review 이력
Formulation owner의 r1 `pass` envelope와 실제 기본/상세 문서 4개를 감사하여 numerical-review로 전이한다.
Owner 정적 검사는 `4`문서, `38` local links, requirement coverage `26`, issues `0`, `python -B -` exit `0` 및 `git diff --check` exit `0`이다.
Coordinator는 모든 상세 문서의 metadata·수식/단위/identity/오류/검증/한계 절과 링크를 읽고 필수 항목 존재를 확인했으며 수학적 correctness verdict를 대신하지 않았다.
NR는 수학 correctness와 reference-model readiness를 모두 검토하고 명시된 metric/zero branch의 수치값, FEAST controls·bounded budgets 및 필수 verification portfolio를 고정한다.
Root의 두 독립 감사 포인트를 필수 handoff로 포함한다: count 기능의 실제 API 보장보다 강한 completeness를 주장하지 않을 것;
기존 basis-dependent drilling stabilization과 `FEM-REQ-MITC4-EIGEN-014`의 coordinate-invariance coverage 관계를 명시하여 acceptance의 조용한 축소를 막을 것.
현재 새 사용자 미결정이나 implementation correction은 없다.
Formulation checkpoint는 Root가 `2c3a86a` (`docs: define MITC4 mass and FEAST formulation`)로 8개 exact paths를 커밋했고 이후 clean을 확인했다.
### Formulation 이력
Research owner의 r1 `pass` 반환을 Coordinator가 감사하여 formulation으로 전이한다.
연구 기본/상세 문서의 owner, r1, source locators, Fact/Derivation/Candidate 구분, 실제 명령 exit code 및 미실행 항목을 확인했다.
연구 문서 SHA-256: `research.md` = `c044031f844798f32bedc95fd998c181f965fbac00c3ed8f594a48d0164b8956`,
`research-evidence.md` = `aa7cf3be8c3858a9358ca2bd3d117ca0e85a6a0d42c1b439bd812f4ee3d3120f`.
Coordinator local-link audit은 Feature 8문서/끊긴 링크0, exit code `0`; `git diff --check`도 exit code `0`이다.
설치 header와 공식 count 기능 존재는 runtime 또는 완전성의 자동 통과 증거가 아니다. 실제 API의 수치적 한계, endpoint/count 실패, 독립 작은 spectrum 검증이 연구 보고서에 기록되었다.
Formulation owner는 approved MITC4 geometry에 대한 consistent 적분, derived block lumping·물리 관성·massless drilling/constraints,
FEAST의 낮은 N개 계산·복원·실패 보존 및 modal evidence 식을 구현 가능한 계약으로 작성한다. 최종 numerical/reference acceptance는 다음 NR가 독립 검토한다.
Research checkpoint는 Root가 `a7c13ff` (`docs: record MITC4 mass and FEAST research evidence`)로 완료 문서 6개를 커밋했고 이후 clean을 확인했다.
Formulation owner의 중간 관찰은 기존 `Tphys/Tdrill`과 양의 nodal drilling 강성에 기반한 `Kpz=0` 증명,
곡면의 `C1` coupling을 유지하는 derived block lumping과 `3×3×3` mass 적분 차수 검토이다.
이는 작성 중인 정식화의 owner 관찰이며 formulation 또는 numerical gate 통과를 뜻하지 않는다.
### Research 및 baseline 이력
Requirement owner의 최종 r1 `pass` 반환을 Coordinator가 감사하여 requirements gate를 통과시키고 research로 전이한다.
당시 SHA-256은 `requirements.md`: `1ebe65f231e49ffc15a9a1985dcdbbb7e6fc47b9e1ddb5a76f2c2489e5982690`,
`requirements-evidence.md`: `2241ef8dacc7e07d40c731667e202bd9c104ae43b1a5f6eab4530a6831fea918`이다.
Coordinator 정적 audit은 Feature 6문서, 끊긴 local link 0, must rows/unique IDs `26/26`, exit code `0`; `git diff --check` exit code `0`이다.
Research owner는 승인된 consistent→lumped→FEAST, 물리 관성·massless drilling·제약·최저 모드 완전성 및 독립 verification의 primary-source evidence를 수집한다.
연구 계약은 다음 stage의 수식을 대신 승인하지 않는다. Reference 비교량, tolerance 및 사용자 mass 선택은 변경하지 않는다.
요구조건 checkpoint는 Root가 `29d88b4` (`docs: baseline MITC4 lumped-mass FEAST requirements`)로 6개 exact paths를 커밋했고 이후 clean을 확인했다.
사용자가 “inp 파일의 고유치 개수를 사용합니다”라고 확인했다. 기존 r1의 `FEM-REQ-MITC4-EIGEN-009/015`와 일치하므로 [MFE-ADR-005](ADR.md#mfe-adr-005--요청-고유치-개수의-입력-권위)에 설명을 기록하고 r1을 유지한다.
Research와 후속 Formulation/NR은 FEAST interval count 기능의 exact guarantee와 stochastic estimate를 구분하고 공식 API가 보장하는 범위를 넘는 completeness 주장을 하지 않는다.
### Requirements 이력
2026-09-06 사용자 후속 답변을 수신했다. Consistent mass를 계산하고 이를 이용한 lumped mass도 계산한다는 요구로 [MFE-ADR-002](ADR.md#mfe-adr-002--mitc4-질량-이산화)를 갱신했다.
`r1` 입력을 Requirement owner에게 반환하여 양자택일 초안과 matrix를 수정하고 actual FEAST mass/lumping 의미의 중요 미결정 여부를 확인한다.
Requirement owner는 두 mass의 계산 관계만으로 FEAST의 실제 `M`이 유일하게 결정되지 않는다고 판단했다.
[MFE-ADR-004](ADR.md#mfe-adr-004--feast에-사용하는-질량행렬)에 derived lumped 사용 권고와 consistent 사용 대안, spectrum·residual 영향 및 질문을 기록하고 Root에 전달했다.
Detailed lumping 수식은 Research/Formulation이 담당하며 현재 질문은 FEAST 사용 질량 한 건이다.
같은 날 사용자 명시 답변으로 `consistent mass -> lumped mass -> 고유치 해석` 순서와 FEAST의 lumped mass 사용이 확정되었다.
`MFE-OQ-001`과 `MFE-OQ-002`는 해소되었으며 Requirement owner에게 r1 baseline 확정과 pass 검토 요청을 전달했다.
FEAST 및 내부 modal residual/normalization/orthogonality는 사용된 lumped `M`을 기준으로 한다. 같은 선택에 대한 재질문은 하지 않는다.
아래 r0 기록은 이력이며 현재 승인을 뜻하지 않는다. r0 requirements 결정 항목은 stale이고 후속 stage 산출물은 아직 없다.
Requirement Agent는 r0 입력에서 요구사항과 검증 matrix, reference 관찰 사실 및 중요한 미결정 사항을 작성한다.
질량 정식화나 reference 해석 의미를 승인으로 추정하지 않으며 질문이 필요하면 선택지·영향·권고를 하나로 묶어 Coordinator에게 반환한다.
일반 문서·계획·local 실행은 사용자 요청으로 승인되었으며 반복적인 stage 승인을 추가하지 않는다.
Requirement owner의 중간 조사에서 단일 `Step-2`의 `nlgeom=NO, perturbation`, `*Frequency` 요청 `10`모드,
선행 정적 step·하중·preload 없음이 확인되었다. 이 관찰은 무하중 원형상 procedure 의미를 뒷받침하며 최종 requirements 보고서에서 추적한다.
`Value`와 `Freq(cycles/time)`가 별도로 있는 원본 txt는 Mode `1..10`을 포함한다. 수치 비교는 아직 수행하지 않았다.
Requirement owner는 `consistent mass`와 `nodal lumped mass`가 유한 mesh의 고유치·운동에너지 의미를 달리하는 critical 선택임을 반환했다.
[MFE-ADR-002](ADR.md#mfe-adr-002--mitc4-질량-이산화)의 권고/대안/영향을 Root에 전달하여 사용자에게 하나의 질문으로 요청한다.
Requirements 기본·상세 보고서 2개의 owner `requirement-agent`, input revision `r0`를 확인했다.
Coordinator 정적 audit: 전체 Feature `6`문서, 끊긴 local link `0`, must matrix `25`행 및 고유 ID `25`, exit code `0`.
원본 reference 2개 SHA-256이 specialist 기록과 일치했다. Requirements 초안은 질량 선택 대기를 명시하며 연구 이후 gate의 빈 보고서는 없다.
기본 보고서 SHA-256: `8d5fbcb8ba2c2bd25d736418450b1b69e7aba7a84c8370d6e2a89e4e259daa66`.
상세 보고서 SHA-256: `85ee91dd745f74cc65ef8e660227465a8fa5ad302e639a51464d0ba31f449d22`.
결정에 의존하는 baseline pass 및 다음 stage는 보류한다. 응답 수신 뒤 Requirement owner가 승인 선택을 반영하고 Coordinator가 revision과 gate를 다시 감사한다.
## 후속 실행 준비 관찰
후속 사용자 지정 `FESA_GTEST_SOURCE_DIR=C:\git\googletest`에 대해 Root가 `CMakeLists.txt` 존재를 확인했다.
Root는 다른 dependency·Harness 환경을 별도로 조사하며 완료 문서 checkpoint와 사용자 수정 `AGENTS.md` 커밋을 담당한다.
실제 implementation 실행 전 환경 준비와 configure/build/test 성공이 필요하며 아래 과거 Stop failure를 소급 변경하지 않는다.
사용자 수정 `AGENTS.md`의 경로 예시 한 줄은 Root가 `fab168b` (`docs: document local GoogleTest source path`)로 커밋했다.
Root read-only 환경 조사에서 다음 설치 경로를 확인했다. 이 목록은 설치 존재 evidence이며 configure/build/test 성공은 아니다.
| 항목 | 확인 경로 |
| --- | --- |
| GoogleTest | `C:/git/googletest` |
| MKL CMake config | `C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/lib/cmake/mkl` |
| TBB CMake config | `C:/Program Files (x86)/Intel/oneAPI/tbb/2023.1/lib/cmake/tbb` |
| HDF5 CMake config | `C:/Program Files/HDF_Group/HDF5/2.1.1/cmake` |
| Ninja executable | `C:/Program Files/Microsoft Visual Studio/18/Community/Common7/IDE/CommonExtensions/Microsoft/CMake/Ninja/ninja.exe` |
VS `18/Community` DevShell script/dll이 존재하며 Ninja는 현재 PATH에 없다. Planning/Executor는 각 실행 subprocess의 MSVC x64 Developer 환경과 dependency 환경을 명시해야 한다.
Root는 global environment, Hook state/code를 변경하지 않았다.
추가 Root read-only 확인: Python `3.11.15`, oneMKL `mkl_rt.lib`/`bin/mkl_rt.3.dll` 및 FEAST 선언이 존재한다.
현재 작업 경로는 primary `C:/git/FESADev`의 linked worktree이며 branch는 `Eigen`이다.
Implementation profile은 `gpt-5.6-terra` / `xhigh` / `workspace-write`이고 당시 configure/link/runtime는 미실행이었다.
Root가 읽은 현재 config schema는 dependency environment/cacheVariables를 직접 받지 않으며, root preset은 dependency `$env{...}` 값을 cacheVariables로 지정한다.
개별 subprocess environment가 부모 Stop process에 전파된다고 가정하지 않는다. Planning은 실제 Hook backend/환경과 CMake cache·preset을 함께 대조한다.
AGENTS의 Ninja preset은 예시이며 필수 검증은 MSVC/x64/Debug CMake/CTest다. 자동 감지의 VS18 cache 재사용도 현재 환경에서 가능한지 평가할 수 있으나,
과거 native sandbox의 FileTracker 한계와 현재 runner 정책까지 확인해야 한다. 당시 backend 선택·config 변경·실행은 하지 않았으며 이후 Root의 configure 환경 교정은 아래에 구분해 기록한다.
현재 `.harness/config.json`은 없고 preset과 `.harness/config.example.json`은 있다.
Planning은 자동 감지 결과와 승인 MSVC preset을 대조하여 실행명령 및 Hook backend를 명시해야 한다.
`scripts/execute.py`의 preflight는 selected phase 제어 파일 외의 dirty 경로를 거부한다.
따라서 구현 실행 전에 Feature 문서 baseline과 Executor의 path-scoped Git 처리 경계를 Planning에서 구체화한다.
이 관찰은 환경 실패 판정이나 별도 사용자 승인 요청이 아니다.
Root가 전달한 자동 Stop hook configure 실패는 별도의 실제 환경 evidence로 보존한다.
실행 명령은 `C:/Program Files/CMake/bin/cmake.exe -S C:/Users/baram/orca/workspaces/FESADev/Eigen -B C:/Users/baram/orca/workspaces/FESADev/Eigen/.harness/build -A x64`, exit code `1`이며
`cmake/FesaDependencies.cmake:9`에서 `FESA_GTEST_SOURCE_DIR` 미설정을 보고했다.
Root의 read-only 원인 조사에서 현재 process의 `FESA_GTEST_SOURCE_DIR`, `MKL_DIR`, `TBB_DIR`, `HDF5_DIR`가 모두 미설정이고,
자동 감지는 `Visual Studio 18` generator를 사용하며 local config가 없어 승인 Ninja/MSVC preset과 맞지 않음이 확인되었다.
당시 수동 Hook·CMake·CTest 재실행, config 변경 또는 Hook state 조작은 하지 않았다.
당시 requirements gate의 critical 질량 선택과 별개로 Implementation Planning에서 dependency 경로·설정된 backend를 준비하고 검증하도록 보존한 기록이다.
이 실패를 build/test 통과로 보고하거나 현 단계의 미실행 검증을 대체하는 증거로 사용하지 않는다.
### Root의 configure 환경 교정 확인
2026-09-06 Root는 사용자 지정 GoogleTest와 확인된 dependency 경로로 기존 자동 감지 backend의 cache를 구성하고 이전 실패 명령을 재확인했다.
```powershell
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 -S C:/Users/baram/orca/workspaces/FESADev/Eigen -B C:/Users/baram/orca/workspaces/FESADev/Eigen/.harness/build -A x64
```
각 명령 exit `0`이며 실행 시간은 약 5초와 1.5초였다. `CMakeCache.txt`의 dependency 경로 4개 및 `Visual Studio 18 2026`/x64를 확인했고 MKL `2026.1`, dynamic/`intel_ilp64`/`intel_thread`가 선택되었다.
Cache는 Git ignored이며 source·설정·Hook code/state를 변경하지 않았다. 수동 Hook·build·CTest·FEAST 실행은 없었다.
이전 configure 원인은 해소되었지만 build/link/test 또는 feature TDD gate 통과 evidence는 아니다. Planning은 실제 backend와 cache를 대조하고 Debug를 build `--config Debug` 및 CTest `-C Debug`로 명시해야 한다.
## Retry 기록
Correction 및 implementation rerun 사용 이력 없음. Transport attempt와 별도로 관리한다.