# T5 후보 물리·시간 정확도 검증 검사일: 2026-10-19. pinned parent `dd54b0ae1e68a313ac46933b886c865c85ec4432`, branch `dryforge/tolerance-t5`. 이 기록은 T5의 선택 검사다. **물리 검증 closure는 FAIL이며, 후보 production 경로의 비선형 시간 정확도 R8은 미완료다.** 새 강체 병진 oracle의 통과와 기존 strict algebra 검사의 통과로 전체 정확도·채택 가능성을 주장하지 않는다. ## 변경·독립 검토 변경은 기존 `hht_dynamic_procedure_test.cpp`의 `HhtDynamicProcedure.CandidateRigidTranslationMatchesIndependentPhysicalOracle` 한 검사와 이 기록뿐이다. Production·local kernel·T3 helper·probe·기존 판정 기준은 수정하지 않았다. 기존 검사 파일은 `tests/CMakeLists.txt`와 `msvc/fesa_unit_tests.vcxproj` 양쪽에 등록되어 있어 추가 source 등록은 필요 없다. 전체 CMake 실행은 T7 범위다. 새 검사는 `HhtDynamicProcedureExecutor::Execute` → `ExecuteReducedHht`의 실제 후보 경로를 호출한다. Fixture는 기존 두 disconnected unit-square shell의 density=2, thickness=.1, area=1을 그대로 사용한다. Nodal-lumped translational mass는 각 node `.05`, 총 질량은 `.4`다. 여덟 node 각각에 일정 global x CLOAD=1이므로 총 힘은8, 초기 및 이후 물리 가속도는20이다. 시간은 `h=.25,T=.5,N=2,INC=3`이며 source의 최대 증분을 변경하지 않았다. 독립 연속체 강체 해는 다음과 같다. ```text q_x(t) = 10 t^2, v_x(t) = 20 t, physical a_x(t) = 20 public A_x(t) = (1+alpha)20-alpha*20 = 20 T(t) = .5*.4*(20t)^2 = 80t^2 W(t) = 8*(10t^2) = 80t^2 Uphysical = Udrill = energy defect = 0 ``` Frame0 및 두 endpoint를 모두 비교한다. All-free와 y/z/rotation을 영구속한 두 경우를 각각 실행하여 full q/v/a/A의 나머지 성분과 영 BC를 검사한다. 입력 힘, nodal inertia, 전역 force/moment balance, kinetic/physical/drilling energy, 일정 외력 work/defect와 두 positive increment의 `hht-log-v2`, policy ID, field_pass/accepted를 확인한다. 일반 수치오차 상한은 사용자 승인 실험의 `1e-3`이다. 단위 scale은 L=1,T=.5,E=20이며, 정확한 입력 힘·schedule·영 BC와 필수 global equilibrium `1e-8`은 그대로 검사한다. 이 값은 Abaqus 기본값이나 production 내부 acceptance 완화를 뜻하지 않는다. Root의 독립 검토는 source의 두 단위면적·rho·두께·CLOAD에서 M=.4/F=8/a=20을 재계산하고 q/v/a·energy 식, scale, 양 BC 및 로그 의미를 대조했다. 처음 실행한 더 엄격한 진단 버전도 통과했으나 최종 검사의 일반 오차 상한은 승인된 `1e-3`이다. 정확한 강체 해는 시간 오차가 roundoff 수준이고 a와 A도 같으므로 **차수 >=1.8, N7 separation 또는 비상수 physical a/A 구분의 증거가 아니다.** 해당 구분은 아래의 기존 algebra/rate/writer 검사 범위와 함께 해석해야 한다. ## 현재 실행 evidence 공유 evidence root는 workspace root 기준 `.build/tolerance-experiment/go-20261018/T5/`다. 실제 cwd는 `.dryforge/worktrees/T2`이며 다른 workspace·main·dev는 수정하지 않았다. 원본 reference·`reference/temp`·외부 Abaqus 실행·다운로드는 사용하지 않았다. | 실행 | 실제 선택 | PASS | FAIL | SKIP | native exit | | --- | ---: | ---: | ---: | ---: | ---: | | 최종 Native Release probe ON |153|144|8|1|1| | 최종 Native Debug probe ON |28|27|0|1|0| | 보존 strict Release C08 대조 |5|0|5|0|1| Release/Debug unit discovery는 각각887개로 identity가 일치했다. 최종 filter의 선택 identity와 XML을 대조하여 missing/extra/duplicate=0을 확인했다. 범위 밖 identity는 `verification.json`의 `excluded`에 보존했다. 위 행은 서로 중복되는 검사를 포함하므로 합쳐서 unique 통과 수로 보고하지 않는다. Release153의 elapsed69.325초와 Debug28의25.638초는 일부 동시 검사의 verification timing이며 공식 성능 측정이 아니다. - `final-selected-release.command.txt`, `.raw.txt`, `.xml`, `.exit.txt`: 물리·time/algebra·reduced/rate/partial-BC·energy·state/writer·요소 정확도153개. - `final-selected-debug`의 같은 네 파일: 새 oracle, 기존 후보 extension/history, time/energy/algebra·state/writer28개. `.exit.txt=0`에도 N7 SKIP1개가 있다. - `strict-physics`의 같은 네 파일: 보존 strict 바이너리 C08 실패 대조5개. 초기 상대 baseline 경로의 launch 오류는 `strict-physics-initial-launch-error.txt`에 별도 기록했다. 이 launch는 native 실행이 아니며 검사 수에 넣지 않았다. - `build-approved-release.raw.txt/.exit.txt`, `build-approved-debug.raw.txt/.exit.txt`: 직접 MSBuild 재빌드 둘 다 exit0. 실제 VS 환경·target·probe 옵션은 `build-final-release.cmd`, `build-final-debug.cmd`에 있다. - `final-run-binary-hashes.json`, `verification.json`: 실행 전후 binary/source/DLL SHA256, cwd/branch, 각 test identity·실패·skip, literal command와 제외 목록. `summarize.py`와 `summary.raw.txt/.exit.txt`는 XML/filter/discovery 대조를 재현한다. 최종 unit binary SHA256은 Release `1dbb49aaacbb48ea483c4cba3b98805fa6b89f65cf4c61b428fc5e60f98b4492`, Debug `248b23c0d2a1e3441424b6051fe5d54f648104e04fa22e3a403a41b680ded3d2`다. 보존 strict binary `272a1829d6440dac32011dc30943bd8213b8bce5cbd4239243fb448f237be922`는 `baseline/test-runtime-hashes.json`과 일치한다. inherited GTEST filter/shard를 제거하고 `FESA_HHT_PROBE_OUTPUT`을 unset했으며 짧고 분리된 TMP/TEMP `C:/ft5f`, `C:/ft5g`, `C:/ft5b`를 사용했다. ## 정확도 실패와 strict 대조 최종 Release의 다음8개 identity는 FAIL이다. 수치 gate를 변경하여 합격시키지 않았다. | identity (suite 생략 표기) | 현재 실패 evidence | | --- | --- | | `HhtShellPhysics.C08aRigidOrbitMatchesIndependentVolumeForcePowerAndMomentum` | pointwise hidden 최대 `.0012337114403665182 > .001`; t=.0625 이후 여러 `CompleteEquilibrium` 실패 | | `HhtShellPhysics.ReducedManufacturedControllerKeepsExactInitialOrbit` | h=1/64, increment1에서 strict outer100 소진 | | `HhtShellPhysics.C08aRigidManufacturedOrbitReducedCoordinateTimeConvergence` | 첫 grid h=1/16, increment1에서 strict outer100 소진 | | `HhtShellPhysics.PredictorStartCompletesPreviouslyFailingLumpedFreePlateGrid` | h=1/256, increment1에서 strict outer100 소진 | | `HhtShellPhysics.C08bFreeFiniteRotationPlateSelfConvergenceAndPhysicalInvariants` | 첫 grid h=1/64, increment1에서 strict outer100 소진 | | `DynamicRotation.ThirdDerivativesMatchAllPermutationsAndInteriorSweep` | 독립 D3 norm error `.22761592213997162 > .001` | | `DynamicRotation.MatchesEightyDigitIndependentBlockExponentialAnchors` | 독립 anchor error `.22761592213997159 > .001` | | `NonlinearMitc4Residual.ExactDrillingConstraintHasIndependentForceGradientAndHessian` | gradient error `.0032913506131779374 > .001` | 보존 strict 바이너리에서도 C08의 위5개가 모두 같은 hidden/equilibrium 및 같은 첫 증분·grid의 correction budget 실패로 끝났다. `RunPlate`는 source상 자체 strict residual/correction `1e-10`을 사용한다. 이 대조는 후보 field 정책 때문에 C08 harness의 새 실패가 생겼다는 주장을 뒷받침하지 않으며, **후보 production의 시간 정확도가 통과했다는 뜻도 아니다.** Local D3/drilling의 세 실패는 T2에서 이미 기록한 local 근사의 부적합과 같고 현재 raw 결과도 남겼다. 본 태스크는 local 근사를 수정하거나 physics 기준·kernel·HHT 계수·outer/controller를 바꿀 권한이 없다. T4의 동일 production SHA evidence는 추가로 재사용한다: `../T4/final-native-{release,debug}-selected.xml` 각각86개 중84PASS/2FAIL 및 `strict-baseline-related.xml`의2FAIL이다. T5의 수정은 test-only라 production SHA는 불변이다. LargeDirect는 후보 field-pass 뒤 `dynamic-invalid-mass-null`, Uniform은 첫 강체 병진 이후 finite-rotation increment2의 triad gate에서 실패했다. 보존 strict는 두 검사에서 outer100 소진, 특히 Uniform의 첫 병진에서 막혀 후속 finite rotation에 도달하지 않았다. 따라서 후속 triad 실패의 원인이 strict와 같다고 단정하지 않는다. T4의 후보 output-failure rollback/accepted-once와 CLI old-final 보호 evidence도 그 범위로만 사용하며 이를 새 시간수렴 또는 T7 전체 검사 통과로 세지 않는다. ## 통과 범위와 남은 R8 현재 실행에서 partial rotation BC/null 교집합·exact-zero, physical rate 복원, full/augmented tangent와 restricted defect, fixed chart/transpose·rank/regularity, pair/RN-even·zero-scale·nonfinite 산술, lifecycle rollback, state/source identity, schema2/writer의 endpoint/A 분리·부분 moment reaction·old-final 보호 검사가 통과했다. 실제 후보 연결은 새 강체 oracle 및 기존 extension/history/lifecycle 검사로, 각 operator·합성 writer fixture의 검증과 구분한다. C01/C03/C04a/C04b는 생산 시간 helper를 쓰지만 자체 strict Newton/algebra harness다. 아래는 최종 Release raw에서 추출한 q/v/physical-a의 finest normalized error 및 마지막 두 refinement 차수의 channel별 최솟값이다. 모든 해당 channel은 감소했고 차수 >=1.8, 기존 더 엄격한 finest1e-4도 만족했다. 이를 후보 field path의 R8로 승격하지 않는다. 사용자 승인 finest1e-3을 적용하기 위해 기존 검사를 완화할 필요도 없었다. | algebra model | finest q / v / physical a | 최소 마지막 차수 q / v / a | | --- | --- | --- | | C01 |1.10353e-5 / 4.26133e-6 / 1.10353e-5|1.99948 / 1.99851 / 1.99948| | C03 variable mass |1.10242e-6 / 3.42816e-7 / 9.26995e-7|1.99989 / 1.99477 / 1.99886| | C04a coupled massless |5.26648e-6 / 4.20639e-6 / 1.05330e-5|1.99977 / 1.99472 / 1.99977| | C04b moving null |1.62408e-6 / 1.66011e-6 / 3.16757e-6|1.99932 / 1.99962 / 2.00237| 별도의 `HhtTemporalVerification.C04aFinestReductionComparisonIsNumericallyResolved`는 Release/Debug 모두 SKIP이다. h=1/256 full/reduced acceleration defect `3.0790209097630861e-10`이 arithmetic/solve resolution `6.2961354117696263e-10`보다 작아 판정 불가다. C04a의 위 analytic 시간수렴 통과와 이 comparison SKIP을 섞지 않는다. C07 energy·spectrum·reaction, C02 STEP oscillator, 비상수 a/A helper 검사는 통과했으나 이는 실제 후보 nonlinear shell의 energy/시간수렴 closure를 대신하지 않는다. R8의 **실제 후보 nonlinear shell q/v/physical-a 마지막 두 refinement·order>=1.8· finest<=1e-3·기존 N7 separation**은 아직 충족하지 못했다. C08 시간 검사는 첫 grid에서 실패하여 마지막 refinement와 invariant 감소 판정까지 도달하지 않았다. 별도의 유효한 비선형 production analytic oracle도 구성하지 않았으며, 미세 grid를 외부 truth로 삼거나 선형 근사를 exact nonlinear truth로 대입하지 않았다. 실패/미평가를 PASS로 세거나 hidden retry/polishing·failed-frame commit으로 성공을 만들지 않는다. 현재 결과는 T6 장시간 성능 측정의 수치 승인 근거가 될 수 없다. 독립적으로 남은 범위는 local 근사의 독립 정확도 부적합, candidate finite-rotation acceptance 실패, candidate 비선형 시간수렴·N7/physical invariant closure다. 전체 Native Debug, 전체 CMake CTest, 별도 Python 및 필수 reference 검증은 T7의 별도 실행 결과를 따른다.