docs: remove retired workflow instructions and repair references

This commit is contained in:
KOKO\Mimi
2026-10-17 22:37:04 +09:00
parent abfe0ee0ce
commit 4bd19f5bf0
120 changed files with 1436 additions and 3130 deletions
+20 -40
View File
@@ -1,6 +1,9 @@
# HHT implicit dynamics 인수인계
최초 작성: 2026-09-22. 이 문서는 중단·재개를 위한 작업 상태 기록이다. **기능 완료 보고서가 아니며, 미실행·진행 중·INCONCLUSIVE를 PASS로 해석하면 안 된다.** 후속 작업은 아래 실행 일지에 덧붙인다. Feature의 공식 acceptance/checklist 원본은 [PRD](docs/hht-implicit-dynamics/PRD.md)다.
> 과거 개발 계획이다. 아래 작업·상태·예시는 현재 실행 지시가 아니다. 원문은 Git 이력에서 확인한다.
> 현재 구현과 검증 한계는 [HHT 기능 요약](docs/hht-implicit-dynamics/README.md)을 따른다.
최초 작성: 2026-09-22. 이 문서는 중단·재개를 위한 작업 상태 기록이다. **기능 완료 보고서가 아니며, 미실행·진행 중·INCONCLUSIVE를 PASS로 해석하면 안 된다.** 후속 작업은 아래 실행 일지에 덧붙인다. Feature의 공식 acceptance/checklist 원본은 [PRD](docs/hht-implicit-dynamics/README.md)다.
## dev 병합 및 worktree 정리 — 2026-09-27
@@ -8,7 +11,7 @@
- HHT worktree 및 이전 `dev-consistent-mass-comparison`, `mitc4-thesis-alignment` worktree 등록을 Git/Orca에서 정리했다. 병합된 HHT branch 이름은 삭제했고 기존 실험 두 branch는 보존했다.
- 이전 미커밋 비교 자료는 `dev-consistent-mass-comparison`의 `3c8f82a`, 논문 재현 실험은 `mitc4-thesis-alignment`의 `3f33f19`로 보존했다. 두 실험의 코드는 dev에 병합하지 않았다. 보존 commit은 신규 검증 통과를 의미하지 않는다.
- 전체 작업 디렉터리와 ignored/untracked 검증 결과는 `C:/Users/baram/orca/archives/FESADev/2026-09-27-worktree-cleanup/<기존 worktree 이름>/`에 보관했다. `manifest.json`에 commit·원경로·파일수·크기를 기록했고 이동 전후 inventory가 일치한다. 아카이브는 Git worktree가 아니며 `.git` 포인터는 `git-worktree-pointer.txt`라는 이력 파일이다.
- 아래 이력의 기존 worktree 절대 경로와 `.harness/build/...` evidence는 해당 아카이브에서 찾는다. 새 실행은 dev에서 CMake를 다시 configure해야 하며 이동된 build cache를 그대로 재사용하지 않는다.
- 아래 이력의 기존 worktree 절대 경로와 과거 검증 자료(정리됨) evidence는 해당 아카이브에서 찾는다. 새 실행은 dev에서 CMake를 다시 configure해야 하며 이동된 build cache를 그대로 재사용하지 않는다.
- 이번 병합은 코드 변화 없는 fast-forward다. 기존 검증을 반복 실행하지 않았으며 C08 실패·C04a INCONCLUSIVE·복구 후보 미채택 상태는 그대로다. 전체 기능 완료나 physics gate PASS를 의미하지 않는다. 원격 push는 수행하지 않았다.
## 재개 시 우선 확인 — 2026-09-27
@@ -17,7 +20,7 @@
- Original reference 100 increments 완료: U 101 families PASS, UR 경고 200건. 최초 HDF5는 새로 발견한 굽힘 단면력 복구 오류를 포함하므로 해당 필드는 수정 전 evidence다.
- C08 optimized 재현: `c08-diagnostic-20260926.log`, exit1, 3 tests/1 PASS/2 FAIL. Finest C08a angular-a error `5.67565924e-4`, 최대 시점 `t=.0390625`; 그 node의 null 성분 `5.58582318e-4`, physical 성분 `1.00582661e-4`. Null 보정만으로 통과한다고 단정할 수 없다.
- Decimal80 독립 cubic DAE 반례에서 v 2차/a 1차. 초기 A0만 변경해도 해결되지 않는다. 재현 코드와 선택지는 [독립 수치 검토](docs/hht-implicit-dynamics/implementation-numerical-review.md)에 있다.
- Decimal80 독립 cubic DAE 반례에서 v 2차/a 1차. 초기 A0만 변경해도 해결되지 않는다. 재현 코드와 선택지는 [독립 수치 검토](docs/hht-implicit-dynamics/README.md)에 있다.
- 사용자 결정: 정확도 요구를 유지하고 제약조건 기반 가속도 복구를 별도 정식화·검증한 뒤 채택 여부를 결정한다(HHT-ADR-011). Production history/output 의미를 아직 바꾸지 않는다.
- C08b grid 초기값·시간 대응·갱신 코드의 구체적 오류는 발견하지 못했다. 회전 q/v/a self convergence는 FAIL이며 원인 미확정. Roundoff 수준 P에 감소를 요구하는 판정 문제는 별개다.
- 굽힘 recovery `M=∫zS dz`의 두께 인자 하나 누락을 확인해 수정했다. 두께 .2/.5/2의 stress-face first moment 회귀는 수정 전 FAIL, 수정 후 optimized 관련 13 tests PASS. 내부 force/tangent에는 영향이 없다. 최신 Debug 관련14 tests PASS 및 원본 재생성·독립 물리 확인을 완료했다. C08 temporal2개 제외 회귀는475 PASS/1 SKIP이며 전체 feature PASS가 아니다.
@@ -44,9 +47,9 @@
## 3. 우선 읽을 계약
[Feature 지침](docs/hht-implicit-dynamics/FEATURED_AGENTS.md), [PRD](docs/hht-implicit-dynamics/PRD.md), [ADR](docs/hht-implicit-dynamics/ADR.md), [정식화](docs/hht-implicit-dynamics/formulation.md), [관성 정식화](docs/hht-implicit-dynamics/formulation-inertia.md), [수치 기준](docs/hht-implicit-dynamics/numerical-controls.md), [검증 C01–C12](docs/hht-implicit-dynamics/verification-cases.md), [I/O 계약](docs/hht-implicit-dynamics/io-contract.md), [reference 계약](docs/hht-implicit-dynamics/reference-model.md).
[Feature 지침](docs/hht-implicit-dynamics/README.md), [PRD](docs/hht-implicit-dynamics/README.md), [ADR](docs/hht-implicit-dynamics/README.md), [정식화](docs/hht-implicit-dynamics/formulation.md), [관성 정식화](docs/hht-implicit-dynamics/formulation-inertia.md), [수치 기준](docs/hht-implicit-dynamics/README.md), [검증 C01–C12](docs/hht-implicit-dynamics/README.md), [I/O 계약](docs/hht-implicit-dynamics/README.md), [reference 계약](docs/hht-implicit-dynamics/README.md).
공통 [TOLERANCE](docs/TOLERANCE.md), [ARCHITECTURE](docs/ARCHITECTURE.md), [CODINGSTYLE](docs/CODINGSTYLE.md), 프로젝트 AGENTS.md를 따른다. 프로젝트 PRD/ADR/AGENTS는 일반 Feature 작업에서 읽기 전용이다. Feature 문서는 한국어로 작성한다.
공통 [TOLERANCE](docs/solver-core/README.md), [ARCHITECTURE](docs/solver-core/README.md), [CODINGSTYLE](docs/solver-core/README.md), 프로젝트 AGENTS.md를 따른다. 프로젝트 PRD/ADR/AGENTS는 일반 Feature 작업에서 읽기 전용이다. Feature 문서는 한국어로 작성한다.
### 고정된 수학·지원 범위
@@ -114,7 +117,6 @@ Exact director D1/D2/D3, I/M/c/DqI/DvI, T/P/L/rates, analytic moving null, scale
- `include/fesa/io/hdf5/dynamic_hdf5_results_writer.h`, `src/fesa/io/hdf5/dynamic_hdf5_results_writer.cpp`
- `include/fesa/analysis/newton_iteration_log.h`, `src/fesa/analysis/newton_iteration_log.cpp`
- state/writer/log unit tests
- `scripts/verification/compare_hht_dynamic.py`, `tests/test_compare_hht_dynamic.py`
State는 complete validated frame만 commit하고 실패 candidate는 기존 history를 보존한다. q/v/a/A 분리, frame0, zero corrections, triad/director/chart, source identity, residual/reaction 등을 검증한다. Writer는 full schema·dtype·attrs·values readback 뒤 atomic replace한다. Density/BC mask, physical spatial reaction, HDF5 diagnostic source_file/source_line 이름을 명시했다. 기존 static diagnostic file/line은 유지한다. Log는 별도 hht-log-v1; accepted frame마다 flush한다.
@@ -125,7 +127,7 @@ Comparator는 원본 101×9행, full HDF5 101×729×6 U/UR identity·finite 검
### 이미 확보한 제한 evidence
- MSVC x64 **Debug** fesa_solver/fesa_cli/unit target build 통과(전체 configured Harness는 아직 미실행).
- `.harness/build/hht-numerical/focused-io.log`: 29 tests PASS. State/writer/log, input, rotation 등을 포함한다. 전체 기능 suite를 뜻하지 않는다.
- 과거 검증 자료(정리됨): 29 tests PASS. State/writer/log, input, rotation 등을 포함한다. 전체 기능 suite를 뜻하지 않는다.
- 관성8 + rotation4 + algebra8 + C07 4개는 최신 최적화 focused binary에서 PASS.
- C01/C02/C03/C04b scalar temporal verification: prescribed grids의 q/v/physical a 차수·오차와 N7 evidence 확보.
- C07 alpha0 energy maximum defect `1.14353e-13`; default alpha endpoint energy defect `-2.45134e-5`; rho(omega*h=1000)≈`.904763`, analytic limit `.904762`; physical inertial support reaction oracle PASS.
@@ -136,7 +138,7 @@ Comparator는 원본 101×9행, full HDF5 101×729×6 U/UR identity·finite 검
C04a 시간수렴은 통과한다. Finest binary64 full2×2 대 scalar reduction의 acceleration 차이는 약 `3.079e-10`으로 계약1e-10보다 크지만 N7 산술/solve resolution 약 `6.296e-10`보다 작다. 해당 비교는 별도 `GTEST_SKIP`으로 **INCONCLUSIVE**를 남긴다. Coarse binary grids는 통과했고 decimal80 독립 수식 계산의 finest 차이는 `1.69e-73`이다.
`.harness/build/hht-numerical/c04a-decimal-reduction.json`은 고정밀 수학 identity 근거다. FESA binary64 finest 통과를 대체하지 않는다. Numerical reviewer가 이 구분을 N7에 맞는 qualification으로 확인했다.
과거 검증 자료(정리됨)은 고정밀 수학 identity 근거다. FESA binary64 finest 통과를 대체하지 않는다. Numerical reviewer가 이 구분을 N7에 맞는 qualification으로 확인했다.
### 아직 완료되지 않은 검증
@@ -155,11 +157,11 @@ C04a 시간수렴은 통과한다. Finest binary64 full2×2 대 scalar reduction
| 작업 | 상태/위치 |
|---|---|
| Original reference, optimized + MKL/OMP1 | `exec session_id=70291`; `.harness/build/hht-numerical/reference-run-optimized.log`; live `reference/shellNL-dyn-meshfine/shellNL-dyn-meshfine_log.txt` |
| 최신 Debug focused suite | `exec session_id=81971`; `.harness/build/hht-numerical/focused-debug-complete.log` |
| Original reference, optimized + MKL/OMP1 | `exec session_id=70291`; 과거 검증 자료(정리됨); live `reference/shellNL-dyn-meshfine/shellNL-dyn-meshfine_log.txt` |
| 최신 Debug focused suite | `exec session_id=81971`; 과거 검증 자료(정리됨) |
| Comparator pytest | 종료0, 41 passed; session88341 종료 확인 완료 |
| C08 작성 owner | `/root/hht_output_completion`; `tests/unit/analysis/hht_shell_physics_test.cpp` 준비, C08a temporal pending |
| Physics reviewer | `/root/hht_physics_evaluation`; 독립 `docs/hht-implicit-dynamics/physics-evaluation.md` 초안 및 실제 결과 기다리는 중 |
| Physics reviewer | `/root/hht_physics_evaluation`; 독립 `docs/hht-implicit-dynamics/README.md` 초안 및 실제 결과 기다리는 중 |
| Numerical reviewer | `/root/hht_formulation_review`; `implementation-numerical-review.md` 작성. NR005/006 closed, ADR010/N2 시작값 문서 갱신 전달 필요 |
| Inertia/algebra/temporal owner | `/root/hht_inertia_completion`; 현재 담당 파일 완료/idle, 추가 수정 시 재사용 |
@@ -167,37 +169,16 @@ main이 빌드를 직렬 조정한다. **빌드 중 public header를 변경하
## 7. 실행 환경과 명령
로컬 helper `.harness/run-msvc.ps1`이 VsDevCmd x64 환경과 dependency CMake dirs를 설정한다. 이 helper와 build 디렉터리는 개인 exclude이며 commit하지 않는다.
로컬 helper 과거 검증 자료(정리됨)이 VsDevCmd x64 환경과 dependency CMake dirs를 설정한다. 이 helper와 build 디렉터리는 개인 exclude이며 commit하지 않는다.
- VS: `C:/Program Files/Microsoft Visual Studio/18/Community`
- GoogleTest: `C:/git/googletest`
- MKL2026.1, TBB2023.1, HDF5 2.1.1
- 기본 검증: `.harness/build-ninja-msvc-debug`, preset `windows-msvc-ninja-debug`
- reference/긴 physics 실험용 추가 최적화 빌드: `.harness/build-hht-relwithdebinfo`
- `.harness/config.json`은 Debug preset과 binaryDir로 설정되어 있다.
- 기본 검증: 과거 검증 자료(정리됨), preset `windows-msvc-ninja-debug`
- reference/긴 physics 실험용 추가 최적화 빌드: 과거 검증 자료(정리됨)
- 과거 검증 자료(정리됨)은 Debug preset과 binaryDir로 설정되어 있다.
```powershell
# 반드시 위 worktree에서 실행
& ./.harness/run-msvc.ps1 cmake --build --preset windows-msvc-ninja-debug --target fesa_unit_tests fesa_cli --parallel 8
# 완료 시 구성된 전체 Debug 검증을 한 번 실행
& ./.harness/run-msvc.ps1 python scripts/execute.py
# 별도 optimized build — Debug 검증을 대체하지 않는다
& ./.harness/run-msvc.ps1 @('cmake','--preset','windows-msvc-ninja-debug','-B','.harness/build-hht-relwithdebinfo','-DCMAKE_BUILD_TYPE=RelWithDebInfo')
& ./.harness/run-msvc.ps1 cmake --build .harness/build-hht-relwithdebinfo --target fesa_cli fesa_unit_tests --parallel 8
# 작은 반복 PARDISO solve의 oversubscription 방지, 비교 시 설정 기록
$env:MKL_NUM_THREADS='1'
$env:OMP_NUM_THREADS='1'
& ./.harness/run-msvc.ps1 ./.harness/build-hht-relwithdebinfo/src/fesa/fesa.exe reference/shellNL-dyn-meshfine/shellNL-dyn-meshfine.inp
# 최종 HDF5가 생성된 다음만 비교
uv run --with h5py python -B scripts/verification/compare_hht_dynamic.py --report .harness/build/hht-numerical/reference-comparison.json
# comparator 자체 검증
uv run --with h5py --with pytest python -B -m pytest -q tests/test_compare_hht_dynamic.py
```
과거 도구 실행·출력 지시는 정리했으며, 현재 검증 방법은 기능 요약을 따른다.
PowerShell helper의 `-B`는 named parameter로 잘못 bind될 수 있어 위 array splat을 사용한다. `clang-format`은 `C:/Program Files/LLVM/bin/clang-format.exe`다. Python은 Korean Git output을 읽을 때 UTF-8 encoding을 명시한다. 환경 전체/자격증명을 출력하지 않는다.
@@ -245,12 +226,11 @@ PowerShell helper의 `-B`는 named parameter로 잘못 bind될 수 있어 위 ar
- 후속 검증: C08a pointwise independent volume force/power/momentum 및 explicit-time hidden checks PASS(max phi=.547572rad). **C08a temporal FAIL**: finest angular/chart-a 전체 최대오차5.67565924e-4>1e-4, 마지막 두 차수1.02867/1.02897<1.8. 일부 finest rate는 N7 error/noise100배 분리도 미달(INCONCLUSIVE). C08b도 FAIL로 종료했다. 전체 C08 optimized는3tests/1PASS/2FAIL,136.265s. 세부 실패는 c08-optimized.log에 있으며 원인 분석 중이다.
- 독립 수치 검토의 원인 후보: massless prescribed coordinate z(t)의 A0=a0 startup은 `a1-z''(h)=h*(1/(6*beta*(1+alpha))-1)*z'''(0)+O(h²)`를 만들어 일반 nonzero jerk에서 최대시간 acceleration 오차가1차다. C08 phi'''(0)는0이 아니고 관측 first/late 오차 경향이 일치한다. 이 주장은 독립 scalar 재현·null/physical error 분해로 추가 확인 중이다. **허용값을 완화하거나 startup 물리 계약을 몰래 바꾸지 말 것.** 실제 알고리즘/acceptance 변경이 필요하면 프로젝트 사용자 결정 경계를 따른다.
- 2026-09-26~27 재개: `fem-implementation-tdd`, 독립 numerical/physics review와 formulation을 재개했다. C08 driver의 initial state/grid/time mapping/history/update를 읽기 전용 대조했고 구체적인 시간 대응 오류는 찾지 못했다. `CheckUpdates` production 호출이 test driver에 없는 coverage 제한은 남는다.
- 수정/커밋: `7b700ab fix: restore thickness factor in shell bending resultants`; flat face stress moment oracle에서 thickness .2/.5/2 모두 수정 전 FAIL을 확인했다(`bending-moment-red.log`). 수정 후 optimized 관련13 tests PASS(`recovery-green-optimized.log`). `d465245 test: cover unloaded HHT free degree channels`는 전체 free/병진만 free/회전만 free의 exact-rest 3 variants를 추가했고 optimized PASS다.
- 사용자 선택을 HHT-ADR-011로 기록: 정확도 요구를 유지하고 별도 acceleration recovery 후보를 정식화·검증한 다음 채택 여부를 결정한다. `formulation-acceleration-recovery.md`와 독립 검토 NR-012/013을 작성했다. 시간적분 history/공식 HDF5/schema는 변경하지 않았다.
- 진단 fixture는 `a_rec=a_h+N*eta`를 원 frame과 분리해 저장한다. `c08-recovery-probe-20260926.log` 전체3 tests/1 PASS/2 FAIL, exit1. C08a split loop가 빈 analytic metadata를 순회해 false-zero를 출력한 문제는 vector size 기반으로 수정했으며 `c08-recovery-split-spectrum-20260927.log`에서 다시 실행했다(2 tests/1 PASS/1 FAIL). 첫 로그의 C08a null/physical split=0은 유효 evidence가 아니다; full error와 C08b는 별도 검토했다.
- 복구 후보 결과: C08a finest angular-a `1.005829141075e-4`, 마지막 두 차수 `1.77942349/1.99162617`; 승인 기준 미달. 재실행 split의 null `4.64641213e-7`, physical `1.00582661e-4`. C08b finest recovered angular-a self difference `.8689386613`, physical `.8689381530`; q/v 실패는 그대로다. Hidden2와 Mdeltaa의 작은 값은 대수 보정 근거이며 실제 정확도 통과가 아니다. C08a N3 exact denominator 및 recovery-specific N7 noise 평가가 남아 있으므로 채택하지 않는다.
- 초기 spectrum 진단: 54 DOF 원 M/K를 별도 test로 출력하고 알려진 UR3 9개를 static condensation했다. Physical mass Cholesky PASS, condensed K symmetry defect0. 최고 각진동수319.8401253, h=1/1024에서 omega*h=.31234387. `.harness/build/hht-numerical/c08b-initial-spectrum-20260927.json`에 raw eigenvalues와 grid별 값을 보존했다. 이는 initial linearized spectrum이며 nonlinear C08b 실패 원인 확정 또는 grid/tolerance 변경 승인이 아니다.
- 초기 spectrum 진단: 54 DOF 원 M/K를 별도 test로 출력하고 알려진 UR3 9개를 static condensation했다. Physical mass Cholesky PASS, condensed K symmetry defect0. 최고 각진동수319.8401253, h=1/1024에서 omega*h=.31234387. 과거 검증 자료(정리됨)에 raw eigenvalues와 grid별 값을 보존했다. 이는 initial linearized spectrum이며 nonlinear C08b 실패 원인 확정 또는 grid/tolerance 변경 승인이 아니다.
- 수정 후 원본 reference 재실행 exit0(session5757). `reference-after-recovery-fix.json` comparator exit0: 441774 scalars precheck, U101 PASS, UR200 warnings 유지. 원 INP/CSV SHA256은 §8과 동일하다.
- HDF5 대조: 수정 전 archive `reference-before-recovery-fix.h5`의 SHA256 `23bac93d1f7998b2f74a0f68767ae98a9899ee92c53f5170d08a814d3ee936d4`; 수정 후 공식 HDF5 `f07beddaa232abe314e20210534a243d6deaf1f677c598c64f9334428bbecb56`. 전체2033 datasets 중100개 noninitial section_resultant만 변경됐고 bending3 components는 정확히 기존의1/2, 나머지 모든 datasets는 bitwise identical이다. `reference-recovery-audit-20260927.json`에 기록했다. 직접 face stress 차분에는 tiny strain/high stiffness cancellation이 있어 별도 relative error3.868e-10을 기록했으며 1e-12 PASS로 주장하지 않는다.
- 전체 Debug Harness는 source 수정 전 snapshot으로 시작했다(session16398, `full-debug-20260926.log`). C08a FAIL 재현 후 장시간의 stale C08b만 main이 중단했다. CTest는 이를 non-pass로 기록하고 다른 검사를 계속하므로 전체 PASS로 해석하면 안 된다. 최신 core/recovery/C09/spectrum Debug build는 exit0이며 targeted run(session3213, `recovery-green-debug-20260927.log`)의 종료 결과를 아래에 추가한다.
@@ -262,5 +242,5 @@ PowerShell helper의 `-B`는 named parameter로 잘못 bind될 수 있어 위 ar
다음 담당자가 할 일: 회복 후보를 production에 넣지 말고 C08b physical q/v/a 차이의 시점·공간·모드별 원인을 분리, 필요하면 추가 fine-grid를 diagnostic으로 조사하되 기존 지정 grid FAIL은 보존; C08a recovery-specific N7 및 정확한 N3 scale 검증을 보충; C09–C11 잔여 항목을 PRD 원본과 대조; 정식화/정확도/출력 계약 채택은 구체적인 통과·실패 evidence를 제시한 뒤 결정한다. 현재 candidate는 검증 기준을 충족하지 않아 미채택이다.
- 2026-09-27 최종 확인: 최신 Debug CTest 명시 subset exit0,476개 중475 PASS/1 C04a SKIP,271.54s. 제외 항목은 C08a/C08b temporal2개이며 이 둘의 기존 FAIL을 숨기거나 전체 gate PASS로 바꾸지 않는다. Command는 `& ./.harness/run-msvc.ps1 @('ctest','--preset','windows-msvc-ninja-debug','--output-on-failure','-E','HhtShellPhysics.C08aRigidManufacturedOrbitFullCoordinateTimeConvergence|HhtShellPhysics.C08bFreeFiniteRotationPlateSelfConvergenceAndPhysicalInvariants')`다. Helper에 -E/-B를 줄 때 array splat을 사용한다.
- 2026-09-27 최종 확인: 최신 Debug CTest 명시 subset exit0,476개 중475 PASS/1 C04a SKIP,271.54s. 제외 항목은 C08a/C08b temporal2개이며 이 둘의 기존 FAIL을 숨기거나 전체 gate PASS로 바꾸지 않는다. Command는 과거 검증 자료(정리됨)다. Helper에 -E/-B를 줄 때 array splat을 사용한다.
- Commit `219473e`는 legacy unsupported-procedure fixture, `c8f6619`는 C08 failure/recovery/spectrum probes와 정식화·독립 검토·HANDOFF evidence를 보존한다. 이 실행의 모든 solver/test process는 종료 확인했다. 새 테스트/문서의 링크와 staged diff 정적 확인을 수행했고 원 input/CSV는 변경하지 않았다. CTest가 생성한 `reference/shellNL-eigen-meshfine/shellNL-eigen-meshfine_log.txt`는 보조 untracked output이며 commit하지 않았다.