From d8d06ae8ae21f617a2c2362be2dc96c494b12ba4 Mon Sep 17 00:00:00 2001 From: "KOKO\\Mimi" Date: Fri, 9 Oct 2026 08:37:01 +0900 Subject: [PATCH] docs(hex8): record carry diagnostics and pending precision design --- .../FEATURED_AGENTS.md | 1 + docs/hex8-structural-analysis/lessons.md | 18 ++++++ .../precision-proposal.md | 56 +++++++++++++++++++ docs/tracking/findings.md | 15 +++++ 4 files changed, 90 insertions(+) create mode 100644 docs/hex8-structural-analysis/precision-proposal.md diff --git a/docs/hex8-structural-analysis/FEATURED_AGENTS.md b/docs/hex8-structural-analysis/FEATURED_AGENTS.md index a8650d9..2bcaeeb 100644 --- a/docs/hex8-structural-analysis/FEATURED_AGENTS.md +++ b/docs/hex8-structural-analysis/FEATURED_AGENTS.md @@ -16,6 +16,7 @@ static/frequency/HHT 절차를 추가한다. 코드 존재와 기능 검증 완 | [reference model](reference-model.md) | read-only 원본 inventory·quantity/key/point/time mapping | | [numerical review](numerical-review.md) | 작성자와 독립된 정식화/controls 검토의 결과 | | [lessons](lessons.md) | 정밀도 손실·수렴 실패와 수정의 근거 및 재사용할 주의점 | +| [precision proposal](precision-proposal.md) | 미채택 내부 정밀도 변경안·결과 의미·승인 전 검증 범위 | 메인이 문서·공유 연결·완료 판단을 소유한다. Kernel owner는 Hex8 local 계산/복구 payload와 직접 consumer를, semantic owner는 Domain/parser/3성분 DOF/load/assembly를 소유한다. diff --git a/docs/hex8-structural-analysis/lessons.md b/docs/hex8-structural-analysis/lessons.md index 119bccc..63c4bbf 100644 --- a/docs/hex8-structural-analysis/lessons.md +++ b/docs/hex8-structural-analysis/lessons.md @@ -214,6 +214,24 @@ SHA를 별도 검산한 Python exit는0이다. 두 native 관측 검사의 exit0 다음 fresh solve·accepted history는 실행하지 않았다. 예측 개선을 실제 개선으로 대체하거나 이16개 실패로 모든 표현 가능한 해의 부재를 주장하지 않는다. +Increment-local 보상 가산은 물리 상태를 단일 Float64 변위로 유지하면서 덧셈의 소실량만 +다음 Newton 갱신에 누적하는 별도 관찰이었다. 같은 최선 cursor에서 plain/carry 각각 +12회씩, 선형·비선형 총48회 fresh solve를 수행했다. 두 경로 모두 원래1275개 free +방정식 전체를 풀고 실제 current Kt를 재조립했으며 old residual과 모든 기존 gates를 유지했다. +Production의 principal refinement·history·ULP 탐색은 이 비교에 포함하지 않았다. + +첫 Kt/Keff/RHS·fresh 방향·전체 물리 배열은 두 경로에서 정확히 같았다. 이후 carry는 +실제로 다른 변위 경로를 만들었지만 모든48개 physical 판정은 FAIL이었다. 최종 비율은 +선형 plain/carry `3.14971e-8`/`3.14508e-8`, 비선형 `4.43049e-8`/`1.54565e-7`로, +둘 다 시작 cursor보다 컸다. 다른 gates는 모두 통과했다. Native exit0의 두 관측 검사는 +수렴 성공이 아니며, 독립 Python 검산 exit0은 원시201개 SHA·carry 산술·연산/경로·r/Si와 +게이트를 검증한 것이다. TEMP source는 실행 전 복원하고 실제 object를 재컴파일했다. +이 결과는 production carry 도입이나 반복 횟수 확대를 뒷받침하지 않는다. + +Low를 물리 변위로 사용하는 [내부 정밀도 변경안](precision-proposal.md)은 미채택이다. +단순 carry와 구분하여 전체 계산 상태 및 Float64 출력의 반올림 의미를 결정해야 한다. +현재 물리 기준이나 원본을 조용히 변경하지 않는다. + 원시 capture·정확 산술·backsolve·이웃 예측·native replay의 재현 자료와 독립 raw 검산은 로컬 `.harness/hex8-evidence/t6-independent-frozen/`에 보존한다. 기능 checklist는 그대로 미완료다. diff --git a/docs/hex8-structural-analysis/precision-proposal.md b/docs/hex8-structural-analysis/precision-proposal.md new file mode 100644 index 0000000..5bf706b --- /dev/null +++ b/docs/hex8-structural-analysis/precision-proposal.md @@ -0,0 +1,56 @@ +# Hex8 동해석 내부 정밀도 변경 제안 — 미채택 + +이 문서는 사용자 검토용 제안이다. 현재 [PRD](PRD.md)·[정식화](formulation.md)· +[numeric controls](numeric-controls.md)의 승인 계약을 변경하거나 구현 완료를 뜻하지 않는다. +실패 근거와 검증 범위는 [lessons](lessons.md)에 기록한다. + +## 변경이 필요한 이유 + +현재 production은 단일 Float64 물리 상태를 사용한다. 두 동적 원본은 세 번째 증분의 +100회 제한에서 componentwise physical residual 기준을 만족하지 못했다. Fresh Newton +보정이 저장된 변위를 바꾸지 못하는 경우를 실제 실행과 독립 검산으로 확인했다. +제한된 단일·두 좌표 탐색의 실패는 표현 가능한 해의 부재를 증명하지 않는다. + +갱신 중 사라진 덧셈을 다음 반복에 누적하는 carry와, 실제 변위를 high+low로 표현하는 +물리 상태는 다르다. Carry 실험의 kernel·rates·형상은 rounded high만 사용한다. +아래 제안은 low도 물리 계산에 사용하는 별도 정밀도 계약이며, 원본 수렴을 보장하지 않는다. + +## 제안하는 계산과 결과의 의미 + +- 내부 변위·속도·physical a·auxiliary A와 predictor를 두 Float64 값의 합으로 표현한다. + Low를 유지한 candidate와 accepted endpoint를 복사하고 다음 증분에도 전달한다. + 연산별 반올림 오차·비유한 값·정규화 조건을 정의하고 독립 검증한다. + 재방문 판별의 동일 상태 비교에는 low를 포함한다. +- Hex8의 상대 변위·H/E/S/P·내력·에너지·응력과 tangent는 같은 전체 상태를 사용한다. + 형상 인증도 전체 상태를 포함하는 보수적 경계를 사용한다. Kernel 직전이나 H를 만든 + 직후 low를 버리는 구현은 이 제안을 충족하지 않는다. +- 기준 consistent M과 material/geometry 입력은 기존 정의를 유지한다. 관성력·weighted + residual·old residual·reaction·수지·수정량·update 판정도 같은 전체 상태로 계산한다. + Sparse factorization은 기존 Float64 backend를 사용하되, 보정량을 전체 상태에 누적한다. + Rounded tangent와 전체 상태 residual 사이의 일관성을 별도로 검증한다. +- HHT 계수·고정 h·exact schedule·100회 제한, 모든 원래 free 성분의 Si·exact-zero branch, + residual/correction `1e-10` 및 update/weighted identity `1e-12`를 유지한다. + Low를 사후 residual 보정이나 평형 projection으로 만들지 않는다. +- HDF5의 field·shape·Float64 dtype은 유지한다. 각 값은 내부 물리량을 Float64로 반올림한 + observable이다. 내부 전체 상태의 gate PASS를 HDF5 배열만으로 같은 식을 재계산한 + gate PASS로 표현하지 않는다. Self-check는 내부 값의 올바른 직렬화와 기존 schema·identity를 + 검증하고, 로그에 사용한 내부 산술을 명시한다. Restart는 계속 지원하지 않는다. + Float64 직렬화의 overflow·비유한 값은 실패로 처리하며 기존 최종 파일을 보존한다. + +현재 accepted state와 published Float64 state를 동일 계산 입력으로 취급하는 의미가 +달라지므로, 위 결과 의미와 내부 정밀도 변경을 함께 승인해야 한다. + +## 구현 전에 고정할 검증 + +1. 독립 정확 산술 oracle과 binary-power 사례로 덧셈·곱셈·나눗셈·low 보존 및 유한 범위를 + 검증한다. 단일 Float64로 collapse하는 대조 구현이 실패하는 의미 있는 사례를 포함한다. +2. 작은 coupled Hex8 사례에서 low가 실제 변형률·힘·관성력에 전달되는지 확인한다. + 에너지 미분·tangent·객관성·형상 인증·비영 old residual의 HHT identity와 네 수정량 + channel을 검증한다. 승인한 low를 제외한 다른 상태에서 gate를 계산하지 않는다. +3. Accepted/trial 복사와 실패 rollback, geometry/backend 실패, 원래 범위의 시간수렴· + 에너지·운동량·반력을 검증한다. 정적·고유치의 기존 계산을 불필요하게 변경하지 않는다. +4. 제한된 실제 동적 실행에서 개선 근거를 얻고 독립 검토한 후, 원본 두 건의101개 endpoint와 + 공식 HDF5/외부 비교·전체 회귀를 수행한다. 외부 row5%/RMS1% 기준과 원본은 유지한다. + +작은 사례에서 개선을 입증하지 못하면 추가 정밀도 확대를 자동으로 반복하지 않는다. +다음 접근과 계약 영향을 사용자에게 다시 제시한다. diff --git a/docs/tracking/findings.md b/docs/tracking/findings.md index 6871440..93c0fdf 100644 --- a/docs/tracking/findings.md +++ b/docs/tracking/findings.md @@ -1,5 +1,20 @@ # 미해결 문제 +## Hex8 동해석의 엄격 잔차와 내부 상태 정밀도 + +- 조건·현상: Hex8 동적 구현 `f661864`에서 `reference/hexa/hexa_dynlinear.inp`와 + `hexa_dynnonlinear.inp`를 실행하면 세 번째 증분100회 제한에서 실패한다. 최신 원본 + physical residual 비율은 `1.77739e-8`·`8.73572e-9`, 기준은 `1e-10`이다. +- 영향: 원본101개 endpoint의 필수 검증과 동해석 완료 조건을 충족하지 못했다. + 현재 전체 요구와 checklist는 [기능 PRD](../hex8-structural-analysis/PRD.md)에 있다. +- 현재 해결하지 못한 이유: 실제 fresh 변위 보정의 반올림 소실을 확인했지만 제한된 + 단일·두 좌표 탐색과 보상 가산에서도 passing candidate를 얻지 못했다. 실패한 탐색은 + Float64 해의 부재를 증명하지 않으며, 수렴 기준·원본을 변경할 근거로 쓰지 않는다. +- 후속 방향: [실패 근거](../hex8-structural-analysis/lessons.md)를 보존하고, 전체 물리 + 상태의 high+low 계산과 Float64 출력의 반올림 의미를 정하는 + [미채택 변경안](../hex8-structural-analysis/precision-proposal.md)을 사용자와 결정한다. + 변경을 승인하기 전에는 기존 precision·acceptance 계약을 유지한다. + ## HHT shell의 시간수렴 - 조건·현상: 실제 shell의 두 시간수렴 사례에서 요구한 수렴 성능을 만족하지 못한