From ca5997fffa2bbc63ee79f99dbc87de5c26751a19 Mon Sep 17 00:00:00 2001 From: "KOKO\\Mimi" Date: Sun, 18 Oct 2026 12:07:05 +0900 Subject: [PATCH 1/2] docs: record in-progress pre-prune verification evidence --- .../README.md | 56 +- .../merge-manifest.json | 699 ++++++++++++++++++ 2 files changed, 752 insertions(+), 3 deletions(-) diff --git a/docs/cpp-object-oriented-modular-refactoring/README.md b/docs/cpp-object-oriented-modular-refactoring/README.md index 2b2a453..abd3fde 100644 --- a/docs/cpp-object-oriented-modular-refactoring/README.md +++ b/docs/cpp-object-oriented-modular-refactoring/README.md @@ -61,7 +61,7 @@ CLI는 입력 `.inp` 하나, lexical sibling HDF5·log, warning/오류 진단과 ## 이번 병합의 현재 검증 상태 -직접 MSVC와 CMake/Ninja의 Debug solver/CLI 및 세 테스트 target build가 완료됐다. +T2/T3 단계에서 직접 MSVC와 CMake/Ninja의 Debug solver/CLI 및 세 테스트 target build가 완료됐다. 제품274개는 Refactor working bytes와 일치한다. 양쪽 실제 discovery는 unit849, integration72, reference43으로 총964개이며 canonical identity가 일치한다. 최종 선별 실행은 CMake176개, Native15개, 합성 reference comparator28개, @@ -72,6 +72,56 @@ Python145개가 failure/error/skip 없이 통과했다. 이는 전체964개 실 2026-10-18 사용자 지시로 `reference/temp`는 검증에 사용하지 않는다. 정식 경로에 없는 `shellNL-meshfine`, `shellNL-meshfine_02`, `shellNL-meshfine-pressure` 자료는 복사·복원하지 않는다. 해당 실제 비교는 자료 미확보로 미완료이며 테스트를 skip 처리하거나 통과로 바꾸지 않는다. -전체 Debug 검증·독립 수치 검토·정식 자료의 필수 비교는 후속 실행 대상이다. +전체 Debug 검증·독립 수치 검토·정식 자료 비교의 현재 진행은 아래 T5 중간 기록과 구분한다. 정리 전 필수 검증을 충족하지 못하면 테스트 삭제와 최종 병합 완료 판정을 진행하지 않는다. -문서 갱신 자체로 build/test를 추가 실행하지 않았다. +T4 문서 갱신 자체로 build/test를 추가 실행하지 않았다. + +### T5 정리 전 검증 중간 기록 — 전체 완료 아님 + +2026-10-18에 전체 Native Debug 솔루션, CMake Debug configure/build와 Ninja dependency +검사를 새로 실행해 모두 exit0을 확인했다. 제품102 compile unit의 dependency가 유효하고, +양쪽 세 테스트 executable의 실제 identity는 unit849·integration72·reference43, +CTest964개로 일치한다. Public header111개는 각각 독립 TU로 private/vendor include 경로 없이 +MSVC C++17 `/EHsc /W4 /WX /MDd /Zs` 검사를 통과했다. CLI·test의 네 runtime 디렉터리에서 +DLL7개의 SHA256이 같다. 제품274개와 정식 reference32개 bytes도 중간 기록 전에 재확인했다. +`reference/temp`의12개 경로는 byte 검증 대상에서 제외했고 입력·CSV·결과를 사용하지 않았다. + +Native unit 전체는 필터 없이 계속 실행 중이며 **전체 종료 코드와 XML은 아직 없다**. +중간 stdout에서 완료57개 identity를 관측했으며 다음 개별 검사는 새로 PASS 종료했다. + +- `ReducedManufacturedControllerKeepsExactInitialOrbit`: 396862ms. +- `C08aRigidManufacturedOrbitReducedCoordinateTimeConvergence`: 7-grid, 7153515ms. +- `C08bInitialPhysicalSpectrumProbe`: 716ms. +- `PredictorStartCompletesPreviouslyFailingLumpedFreePlateGrid`: 539678ms. + +현재 `C08bFreeFiniteRotationPlateSelfConvergenceAndPhysicalInvariants`의8-grid를 수행한다. +h=1/64·1/128·1/256·1/512·1/1024의 계산 요약이 생성됐으나 남은8192·16384·32768증분 +fine-grid와 최종 시간수렴·물리 gate는 미완료다. 모든 grid의 총 증분수는57840이다. +CPU/RSS 상승이나 부분 로그를 전체 통과 근거로 삼지 않는다. Native 나머지 executable, +전체 CTest와 Python suite는 같은 직렬 큐에서 대기하며 임의 timeout·skip·필터를 추가하지 않았다. + +Refactor 원본 밖 별도 source snapshot304개에서 Native Debug 기준 solver/CLI를 새로 +빌드해 exit0과 DLL7개 일치를 확인했다. 정적5모델을 포함한 정식 입력11개에 대해 기준·Native· +CMake 실행물을 같은 scratch 입력 경로와 bytes에서 직렬 실행하고 schema·identity·각 field를 +대조하는 후속 큐를 준비했다. **새 실제 모델 실행·비교는 아직 시작하지 않았다.** 보고서 JSON의 +case·policy·quantity와 실제 exit를 확인하며, parity의 빈 결과·자료 부재·dtype 차이·불일치는 +nonzero로 남긴다. Exact field assertion의 불일치를 새 물리 허용치 위반으로 승격하지 않고 +출처·dtype·identity·rounding 차이를 분류한 뒤 기존 승인 기준과 대조한다. 임시 도구의 합성 +증거 하한 검사9건은 솔버나 물리 검증 통과가 아니다. 빈 결과·자료 누락의 옛 false-green을 +각각 exit0으로 재현하고 수정 후 exit1·exit2가 되는 것을 확인했다. + +독립 수치 검토는 명백한 식 오류나 승인 기준 변경을 발견하지 못했으나 `CONCERNS`다. +inverse→factor solve·Jet·eigen whitening·paired 산술과 spatial RM 변환은 rounding graph에 +영향이 있어 비트 보존을 가정하지 않는다. 특히 `hdf5_primitives.cpp`, dynamic/nonlinear HDF5 +writer의 `J^T m=g` LU action은 T2 영향 routing 누락을 T5 manifest에 보충하고 finite-rotation +virtual-work·완전 inverse action·HDF5 reaction readback 검사 identity에 연결했다. +이 정적 검토를 실제 전체 실행·reference closure의 승인으로 해석하지 않는다. + +정식 `shellNL-meshfine`·`shellNL-meshfine-pressure`는 자료 미확보로 미실행이고, +`shellNL-meshfine_02`는 자료 부재와 현재 comparator 연결 부재를 함께 남긴다. +Thermal 새 필수 reference 부재와 기존 NT11 diagnostic/nonblocking 불일치도 유지한다. +필수 gate를 충족하지 않았으므로 테스트 삭제·T6 진입·최종 병합 완료 판정을 진행하지 않는다. + +중간 근거는 `.build/merge-verification/t5-20261018-01/before-prune/`에 있으며 +`running-checkpoint.json`과 `progress.jsonl`이 실행 큐·PID·현재 관측을 보존한다. +파일 manifest의 `t5_before_prune_verification`은 이 중간 snapshot을 기록하며 T1/T2/T3 원필드는 보존했다. diff --git a/docs/cpp-object-oriented-modular-refactoring/merge-manifest.json b/docs/cpp-object-oriented-modular-refactoring/merge-manifest.json index 31ce817..7b6dc8b 100644 --- a/docs/cpp-object-oriented-modular-refactoring/merge-manifest.json +++ b/docs/cpp-object-oriented-modular-refactoring/merge-manifest.json @@ -32644,5 +32644,704 @@ "removed_tests": [], "policy_failure_reproduction": "native ExceptionHandling을 메모리에서 false로 바꾸면 현재 policy 검사가 AssertionError로 거부하고 원문 설정에서는 통과한다. 파일은 수정하지 않는다.", "policy_failure_evidence": ".build/merge-verification/t3-20261018-01/policy-mutation.log" + }, + "t5_before_prune_verification": { + "status": "IN_PROGRESS_NOT_A_T5_COMPLETION_OR_T6_GATE", + "snapshot_utc": "2026-10-18T02:59:51.000255+00:00", + "base_commit": "0635cec53d9d617503d4ae9b57a97c82b8f9f9b9", + "scope": "정리 전 전체 검증의 중간 근거. 제품·검사·등록·정식 reference 수정이나 테스트 삭제 없음. 미생성 exit/XML을 통과로 계산하지 않는다.", + "raw_evidence": ".build/merge-verification/t5-20261018-01/before-prune", + "user_decision": "reference/temp는 검증에 사용하지 않는다. 임시 입력/CSV/결과를 읽어 검증·비교·복사하거나 정식 자료로 대체하지 않았다.", + "completed_build_checks": { + "native-build": { + "record": ".build/merge-verification/t5-20261018-01/before-prune/native-build.json", + "log": ".build/merge-verification/t5-20261018-01/before-prune/native-build.log", + "argv": [ + "MSBuild", + "FESA.sln", + "/m:2", + "/p:Configuration=Debug", + "/p:Platform=x64" + ], + "actual_argv": [ + "cmd", + "/d", + "/c", + "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\native-build.cmd" + ], + "cwd": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker", + "exit": 0, + "seconds": 2.6927127838134766, + "removed_filter_variables": {}, + "environment": { + "TMP": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\native-build-tmp", + "TEMP": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\native-build-tmp", + "PYTHONUTF8": "1", + "PYTHONIOENCODING": "utf-8" + }, + "log_sha256": "e49b0b496b2e4a0c6e6fa8aa1e108e405a75647df0ecb0ef08044bd178f8b422" + }, + "configure": { + "record": ".build/merge-verification/t5-20261018-01/before-prune/configure.json", + "log": ".build/merge-verification/t5-20261018-01/before-prune/configure.log", + "argv": [ + "cmake", + "--preset", + "windows-msvc-ninja-debug" + ], + "actual_argv": [ + "cmd", + "/d", + "/c", + "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\configure.cmd" + ], + "cwd": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker", + "exit": 0, + "seconds": 1.9974191188812256, + "removed_filter_variables": {}, + "environment": { + "TMP": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\configure-tmp", + "TEMP": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\configure-tmp", + "PYTHONUTF8": "1", + "PYTHONIOENCODING": "utf-8" + }, + "log_sha256": "6723be76fc9b32cb2579c441582eadd6a31d0f42bebdf7d33a274235f1f3305c" + }, + "cmake-build": { + "record": ".build/merge-verification/t5-20261018-01/before-prune/cmake-build.json", + "log": ".build/merge-verification/t5-20261018-01/before-prune/cmake-build.log", + "argv": [ + "cmake", + "--build", + "--preset", + "windows-msvc-ninja-debug", + "--parallel", + "2" + ], + "actual_argv": [ + "cmd", + "/d", + "/c", + "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\cmake-build.cmd" + ], + "cwd": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker", + "exit": 0, + "seconds": 3.918487310409546, + "removed_filter_variables": {}, + "environment": { + "TMP": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\cmake-build-tmp", + "TEMP": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\cmake-build-tmp", + "PYTHONUTF8": "1", + "PYTHONIOENCODING": "utf-8" + }, + "log_sha256": "db6dcbe64f97503b1513ba88244422e134ec6a15385f58b854eda665b462b76f" + }, + "ninja-deps": { + "record": ".build/merge-verification/t5-20261018-01/before-prune/ninja-deps.json", + "log": ".build/merge-verification/t5-20261018-01/before-prune/ninja-deps.log", + "argv": [ + "ninja", + "-C", + ".build/cmake-debug", + "-t", + "deps" + ], + "actual_argv": [ + "cmd", + "/d", + "/c", + "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\ninja-deps.cmd" + ], + "cwd": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker", + "exit": 0, + "seconds": 1.740182876586914, + "removed_filter_variables": {}, + "environment": { + "TMP": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\ninja-deps-tmp", + "TEMP": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\ninja-deps-tmp", + "PYTHONUTF8": "1", + "PYTHONIOENCODING": "utf-8" + }, + "log_sha256": "98e36f6181baa49c61172dcf61a757ef89295bdb8383037071599da5022780db" + }, + "headers-compile": { + "record": ".build/merge-verification/t5-20261018-01/before-prune/headers-compile.json", + "log": ".build/merge-verification/t5-20261018-01/before-prune/headers-compile.log", + "argv": [ + "cl", + "@C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\headers\\compile.rsp" + ], + "actual_argv": [ + "cmd", + "/d", + "/c", + "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\headers-compile.cmd" + ], + "cwd": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker", + "exit": 0, + "seconds": 201.70288968086243, + "removed_filter_variables": {}, + "environment": { + "TMP": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\headers-compile-tmp", + "TEMP": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\headers-compile-tmp", + "PYTHONUTF8": "1", + "PYTHONIOENCODING": "utf-8" + }, + "log_sha256": "99ec0b9178d41ec674584c6e2f94d8f414daf81af3e3b57f83d876f81ec8bf83" + }, + "baseline-build": { + "record": ".build/merge-verification/t5-20261018-01/before-prune/baseline-build.json", + "log": ".build/merge-verification/t5-20261018-01/before-prune/baseline-build.log", + "argv": [ + "MSBuild", + "msvc/fesa_cli.vcxproj", + "/m:2", + "/p:Configuration=Debug", + "/p:Platform=x64" + ], + "actual_argv": [ + "cmd", + "/d", + "/c", + "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\baseline-build.cmd" + ], + "cwd": "C:\\git\\FESADev\\.dryforge\\t5-refactor-baseline", + "exit": 0, + "seconds": 161.69524788856506, + "removed_filter_variables": {}, + "environment": { + "TMP": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\baseline-build-tmp", + "TEMP": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\baseline-build-tmp", + "PYTHONUTF8": "1", + "PYTHONIOENCODING": "utf-8" + }, + "log_sha256": "1c763c2aee61f9f1975912373576f420322a892f260ec23c05dc495294d1b6c2" + } + }, + "source_fidelity": { + "product_files": 274, + "refactor_working_bytes_equal": true, + "rechecked_before_interim_record": true, + "hash_evidence": ".build/merge-verification/t5-20261018-01/before-prune/pre-execution-hashes.json", + "canonical_reference_files_checked": 32, + "canonical_reference_bytes_unchanged": true, + "temp_paths_excluded_before_byte_reads": 12 + }, + "discovery": { + "native_unit": 849, + "native_integration": 72, + "native_reference": 43, + "cmake_unit": 849, + "cmake_integration": 72, + "cmake_reference": 43, + "ctest": 964, + "canonical_identity_match": true, + "evidence": ".build/merge-verification/t5-20261018-01/before-prune/discovery-summary.json" + }, + "public_header_check": { + "independent_translation_units": 111, + "mode": "MSVC C++17 /EHsc /W4 /WX /MDd /Zs; include/ and VS/Windows standard INCLUDE only, no private/vendor include path", + "exit": 0, + "translation_unit_map": ".build/merge-verification/t5-20261018-01/before-prune/headers-map.json", + "environment": ".build/merge-verification/t5-20261018-01/before-prune/headers-environment.log" + }, + "dependency_check": { + "all_object_entries": 222, + "production_object_entries": 102, + "invalid_production_entries": [] + }, + "runtime_dlls": { + "count": 7, + "native_cli_native_tests_cmake_cli_cmake_tests_sha256_equal": true, + "fresh_refactor_baseline_equal": true, + "evidence": [ + ".build/merge-verification/t5-20261018-01/before-prune/all-target-runtime-dll-parity.json", + ".build/merge-verification/t5-20261018-01/before-prune/baseline-runtime.json" + ] + }, + "full_suite_execution": { + "status": "RUNNING_NATIVE_UNIT_NO_SUITE_EXIT_OR_XML_YET", + "serial_queue": [ + "Native unit849 unfiltered", + "Native integration72 unfiltered", + "Native reference43 unfiltered", + "CTest964 unfiltered -j1", + "Python entire tests/ suite" + ], + "per_run_TMP_TEMP_and_raw_separated": true, + "inherited_GTEST_CTEST_variables_removed": true, + "pre_existing_fixed_reference_outputs_preserved": ".build/merge-verification/t5-20261018-01/before-prune/pre-existing", + "explicit_ctest_timeout_properties": 0, + "timeout_evidence": ".build/merge-verification/t5-20261018-01/before-prune/ctest-timeout-static.json", + "native_completed_identity_count_in_stdout": 57, + "native_completed_identities_in_stdout": [ + { + "identity": "BuildInfo.VersionIsStableAndNonEmpty", + "milliseconds": 0 + }, + { + "identity": "BuildInfo.PublicHeaderHasNoBackendDependency", + "milliseconds": 0 + }, + { + "identity": "Analysis.PropagatesStatusAndDestroysThroughMinimalAnalysis", + "milliseconds": 0 + }, + { + "identity": "AnalysisProcedure.PreparedConsumerPreservesDomainFailureAndLifetime", + "milliseconds": 0 + }, + { + "identity": "EquilibriumAlgorithm.RetainsMoveOnlyCandidateUntilProcedureTakesIt", + "milliseconds": 0 + }, + { + "identity": "EquilibriumAlgorithm.FirstFailedEvaluationLeavesNoAcceptedCandidate", + "milliseconds": 0 + }, + { + "identity": "EquilibriumAlgorithm.InjectsAlternativeOrderAndPreservesTypedPendingOnFailure", + "milliseconds": 0 + }, + { + "identity": "ProcedureIntegratorInjection.ShellValuesUseProductionStepAndPreserveHistory", + "milliseconds": 0 + }, + { + "identity": "ProcedureIntegratorInjection.SolidPairedValuesUseProductionStepAndPreserveHistory", + "milliseconds": 2 + }, + { + "identity": "ProcedureIntegratorInjection.HeatValuesUseProductionRecoveryCommitAndPreserveHistory", + "milliseconds": 0 + }, + { + "identity": "AnalysisModel.ClassifiesActiveEntitiesInStableOrder", + "milliseconds": 0 + }, + { + "identity": "AnalysisModel.ReferencesWithoutCopyingOrMutatingDomain", + "milliseconds": 0 + }, + { + "identity": "AnalysisModel.KeepsNonOwningMixedDefinitionAndPropertyIndices", + "milliseconds": 0 + }, + { + "identity": "AnalysisModel.RejectsMissingOrMultipleStep", + "milliseconds": 0 + }, + { + "identity": "AnalysisState.AllocatesOnlyV0FullVectors", + "milliseconds": 0 + }, + { + "identity": "AnalysisState.CopiesOrMovesWithoutAliasing", + "milliseconds": 0 + }, + { + "identity": "AnalysisState.PreservesStepFrameAndStableRowOrder", + "milliseconds": 0 + }, + { + "identity": "AnalysisState.OwnsExactShellRowsInStableElementAndLocationOrder", + "milliseconds": 0 + }, + { + "identity": "AnalysisState.CommitsFiniteShellGlobalEvidence", + "milliseconds": 0 + }, + { + "identity": "AnalysisState.InvalidShellCandidatesLeavePriorStateUnchanged", + "milliseconds": 0 + }, + { + "identity": "DynamicAnalysisState.RejectsUnknownOrChangingIntegrationFormulation", + "milliseconds": 5 + }, + { + "identity": "DynamicAnalysisState.DefaultStateRejectsTrialAndCommit", + "milliseconds": 0 + }, + { + "identity": "DynamicAnalysisState.CommitsCompleteZeroCorrectionHistoryAndCopiesTrials", + "milliseconds": 1 + }, + { + "identity": "DynamicAnalysisState.RejectsMalformedInventoryScheduleAndPreservesEndpoint", + "milliseconds": 4 + }, + { + "identity": "DynamicAnalysisState.RejectsInvalidInitialStateAndFreeReaction", + "milliseconds": 1 + }, + { + "identity": "DynamicAnalysisState.CreateRejectsInvalidScheduleAndNonzeroBoundary", + "milliseconds": 3 + }, + { + "identity": "EigenReduction.RejectsNonfiniteUsedBasisAndPreservesPriorCandidate", + "milliseconds": 4 + }, + { + "identity": "EigenReduction.KeepsPositivePartialGlobalRotationAndOriginalPencil", + "milliseconds": 0 + }, + { + "identity": "EigenReduction.RemovesOnlyActualFreeDirectorNull", + "milliseconds": 1 + }, + { + "identity": "EigenReduction.RejectsPositiveButUnresolvableMassWithoutDeletingDofs", + "milliseconds": 0 + }, + { + "identity": "EigenReduction.WhitensOffDiagonalMassAndRestoresOriginalPencil", + "milliseconds": 135 + }, + { + "identity": "EigenReduction.PreservesSmallResolvablePositivePartialRotationMass", + "milliseconds": 0 + }, + { + "identity": "EigenReduction.HandlesTwoFreeRotationsAndRejectsEmptyFiniteSpace", + "milliseconds": 0 + }, + { + "identity": "EigenReduction.PureMassWhiteningRetainsInclusiveInfinityConditionGate", + "milliseconds": 0 + }, + { + "identity": "EigenReduction.PureOffDiagonalWhiteningMatchesAnalyticGramAndPencil", + "milliseconds": 0 + }, + { + "identity": "EigenMassAssembly.ScattersHeterogeneousSharedNodeMassInSourceOrder", + "milliseconds": 88 + }, + { + "identity": "HhtTimeIntegrationTest.KeepsPhysicalAndAlgorithmicAccelerationDistinct", + "milliseconds": 0 + }, + { + "identity": "HhtTimeIntegrationTest.RejectsInvalidParametersAndTime", + "milliseconds": 0 + }, + { + "identity": "HhtTimeIntegrationTest.StepOscillatorHasSecondOrderMaximumError", + "milliseconds": 6 + }, + { + "identity": "HhtShellPhysics.NodalRigidForceRatesMatchIndependentTimeDifferences", + "milliseconds": 73 + }, + { + "identity": "HhtShellPhysics.ExternalDrillingHessianBalancesGradientAcceleration", + "milliseconds": 40 + }, + { + "identity": "HhtShellPhysics.ManufacturedHiddenCountsExternalHessianOnce", + "milliseconds": 153 + }, + { + "identity": "HhtShellPhysics.C08aRigidOrbitMatchesIndependentVolumeForcePowerAndMomentum", + "milliseconds": 2462 + }, + { + "identity": "HhtShellPhysics.BasisCoefficientRadiusSurvivesSparseProjectionAndLift", + "milliseconds": 0 + }, + { + "identity": "HhtShellPhysics.BasisRadiusReplayMatchesCompensatedProjectionAndCombinedLift", + "milliseconds": 0 + }, + { + "identity": "HhtShellPhysics.BasisLiftedAlgorithmicCorrectionUsesHhtFilterFactor", + "milliseconds": 0 + }, + { + "identity": "HhtShellPhysics.CarriedArRadiiIncludeAbsorbedUpdatesAndInputHistory", + "milliseconds": 0 + }, + { + "identity": "HhtShellPhysics.PrimaryCoordinateRetainsCorrectionAbsorbedByCarriedAr", + "milliseconds": 0 + }, + { + "identity": "HhtShellPhysics.CompensatedCoordinateRetainsAbsorbedNewtonCorrections", + "milliseconds": 0 + }, + { + "identity": "HhtShellPhysics.FrozenGraphIndicatorIncludesCoordinateAndRateCurvature", + "milliseconds": 3 + }, + { + "identity": "HhtShellPhysics.GraphBasisCertificateBoundsMatrixAndRhsPerturbations", + "milliseconds": 2 + }, + { + "identity": "HhtShellPhysics.RestrictedLastSolvePreservesOmittedTranslationDefect", + "milliseconds": 0 + }, + { + "identity": "HhtShellPhysics.RestrictedRecordNoiseIncludesFullModelOmittedUDefect", + "milliseconds": 316 + }, + { + "identity": "HhtShellPhysics.ReducedManufacturedControllerKeepsExactInitialOrbit", + "milliseconds": 396862 + }, + { + "identity": "HhtShellPhysics.C08aRigidManufacturedOrbitReducedCoordinateTimeConvergence", + "milliseconds": 7153515 + }, + { + "identity": "HhtShellPhysics.C08bInitialPhysicalSpectrumProbe", + "milliseconds": 716 + }, + { + "identity": "HhtShellPhysics.PredictorStartCompletesPreviouslyFailingLumpedFreePlateGrid", + "milliseconds": 539678 + } + ], + "native_failed_identity_lines_so_far": [], + "native_skipped_identity_lines_so_far": [], + "native_current_identity": "HhtShellPhysics.C08bFreeFiniteRotationPlateSelfConvergenceAndPhysicalInvariants", + "native_c08b_completed_time_grids": [ + { + "h": "1/64", + "increments": 16 + }, + { + "h": "1/128", + "increments": 32 + }, + { + "h": "1/256", + "increments": 64 + }, + { + "h": "1/512", + "increments": 128 + }, + { + "h": "1/1024", + "increments": 256 + } + ], + "c08b_remaining_fine_grid_increments": [ + 8192, + 16384, + 32768 + ], + "c08b_total_increments_all_grids": 57840, + "c08b_final_convergence_and_physics_status": "NOT_COMPLETE", + "warning": "stdout 관측은 전체 XML/exit를 대신하지 않는다. CPU/RSS/로그 크기를 수치 진척이나 통과의 근거로 쓰지 않는다.", + "running_checkpoint": ".build/merge-verification/t5-20261018-01/before-prune/running-checkpoint.json", + "native_stdout": ".build/merge-verification/t5-20261018-01/before-prune/native-fesa_unit_tests.log", + "queued_suites_and_python": "NOT_RUN_YET" + }, + "fresh_refactor_baseline": { + "source_root": "C:/git/FESADev/.dryforge/t5-refactor-baseline", + "source_pin": "11f09eeb9460115758eada96deda1d0b08c4a442", + "tracked_selected_files_copied": 304, + "copied_roots": [ + "include", + "src", + "msvc", + "FESA.sln" + ], + "excluded": [ + ".build", + "reference/temp", + "original retained outputs" + ], + "source_snapshot": ".build/merge-verification/t5-20261018-01/before-prune/baseline-source-snapshot.json", + "build": "Native MSVC x64 Debug solver/CLI fresh build exit0", + "fresh_model_execution": "NOT_RUN_YET; starts after all suites including Python exit", + "model_queue": "11 available canonical inputs x Refactor baseline/Native/CMake; minimum static5 plus affected frequency/HHT/thermal models; serial, no arbitrary wall timeout", + "pipeline_scripts": [ + ".build/merge-verification/t5-20261018-01/before-prune/after-suites.py", + ".build/merge-verification/t5-20261018-01/before-prune/models.py", + ".build/merge-verification/t5-20261018-01/before-prune/hdf-parity.py", + ".build/merge-verification/t5-20261018-01/before-prune/reference-harness.cpp" + ], + "parity_policy": "동일 scratch input 경로·bytes에서 새로 실행한 schema·identity·각 field 값과 실제 차이를 대조한다. 출처 동일성을 수치/물리 동등성으로 주장하지 않는다." + }, + "independent_numerical_review": { + "status": "CONCERNS_STATIC_REVIEW_ONLY", + "report": ".build/merge-verification/t5-20261018-01/before-prune/numerical-review-ko.md", + "sha256": "3a181a24665e778a19111e8d5e145c01547300dd4f2651f81b6cbfee31d884cd", + "conclusion": "검토한 원문과 소스에서 명백한 식 오류·승인 기준 변경은 발견하지 못했으나 rounding graph·수명 영향과 실제 검증 의무는 남는다. 이 의견은 full T5 PASS 또는 T6 승인 근거가 아니다." + }, + "supplemental_numerical_impact_classification": [ + { + "path": "src/fesa/io/hdf5/hdf5_primitives.cpp", + "category": "spatial reaction output arithmetic: analytic inverse-transpose multiply -> LU solve J^T m=g", + "contract": "virtual-work spatial moment 변환식은 같으나 rounding graph가 달라 비트 보존을 가정하지 않는다. schema·identity·수치 허용치 변경 없음.", + "reason": "T2 numerical routing 누락을 독립 수치 검토가 발견했다. T1/T2 원본 필드를 수정하지 않고 T5에 보충한다.", + "required_oracle_identities": [ + "FiniteRotation.SpatialMomentSolvePreservesKnownLoadAndVirtualWork", + "FiniteRotation.JacobiansAreFiniteInverseTransposeAndDerivativeConsistent", + "DynamicHdf5ResultsWriter.ConvertsPartialConstraintMomentToSpatialReaction", + "NonlinearHdf5ResultsWriter.ProjectsRotationalReactionToSpatialMoment", + "NonlinearHdf5ResultsWriter.WritesSchemaV1ModelAndCommittedAcceptedFramesOnly", + "NonlinearHdf5ResultsWriter.CandidateFinalizationFailurePreservesPriorFinal" + ], + "current_full_execution_status": "PENDING; discovered but not reached in current Native full unit; CTest not started yet" + }, + { + "path": "src/fesa/io/hdf5/dynamic_hdf5_results_writer.cpp", + "category": "spatial reaction output arithmetic: analytic inverse-transpose multiply -> LU solve J^T m=g", + "contract": "virtual-work spatial moment 변환식은 같으나 rounding graph가 달라 비트 보존을 가정하지 않는다. schema·identity·수치 허용치 변경 없음.", + "reason": "T2 numerical routing 누락을 독립 수치 검토가 발견했다. T1/T2 원본 필드를 수정하지 않고 T5에 보충한다.", + "required_oracle_identities": [ + "FiniteRotation.SpatialMomentSolvePreservesKnownLoadAndVirtualWork", + "FiniteRotation.JacobiansAreFiniteInverseTransposeAndDerivativeConsistent", + "DynamicHdf5ResultsWriter.ConvertsPartialConstraintMomentToSpatialReaction", + "NonlinearHdf5ResultsWriter.ProjectsRotationalReactionToSpatialMoment", + "NonlinearHdf5ResultsWriter.WritesSchemaV1ModelAndCommittedAcceptedFramesOnly", + "NonlinearHdf5ResultsWriter.CandidateFinalizationFailurePreservesPriorFinal" + ], + "current_full_execution_status": "PENDING; discovered but not reached in current Native full unit; CTest not started yet" + }, + { + "path": "src/fesa/io/hdf5/nonlinear_hdf5_results_writer.cpp", + "category": "spatial reaction output arithmetic: analytic inverse-transpose multiply -> LU solve J^T m=g", + "contract": "virtual-work spatial moment 변환식은 같으나 rounding graph가 달라 비트 보존을 가정하지 않는다. schema·identity·수치 허용치 변경 없음.", + "reason": "T2 numerical routing 누락을 독립 수치 검토가 발견했다. T1/T2 원본 필드를 수정하지 않고 T5에 보충한다.", + "required_oracle_identities": [ + "FiniteRotation.SpatialMomentSolvePreservesKnownLoadAndVirtualWork", + "FiniteRotation.JacobiansAreFiniteInverseTransposeAndDerivativeConsistent", + "DynamicHdf5ResultsWriter.ConvertsPartialConstraintMomentToSpatialReaction", + "NonlinearHdf5ResultsWriter.ProjectsRotationalReactionToSpatialMoment", + "NonlinearHdf5ResultsWriter.WritesSchemaV1ModelAndCommittedAcceptedFramesOnly", + "NonlinearHdf5ResultsWriter.CandidateFinalizationFailurePreservesPriorFinal" + ], + "current_full_execution_status": "PENDING; discovered but not reached in current Native full unit; CTest not started yet" + } + ], + "unresolved_reference_checks": [ + { + "case": "shellNL-meshfine", + "status": "NOT_RUN_MISSING_CANONICAL_MATERIAL", + "reason": "정식 입력/CSV 미확보; temp는 사용하지 않는다." + }, + { + "case": "shellNL-meshfine_02", + "status": "NOT_RUN_MISSING_CANONICAL_MATERIAL_AND_CURRENT_COMPARATOR_CONNECTION", + "reason": "정식 자료도 없고 현재 ContractFor 연결도 없는 별도 후속 범위다." + }, + { + "case": "shellNL-meshfine-pressure", + "status": "NOT_RUN_MISSING_CANONICAL_MATERIAL", + "reason": "정식 입력/CSV 미확보; temp는 사용하지 않는다." + }, + { + "case": "thermal-new-required-reference", + "status": "NOT_RUN_NOT_SUPPLIED", + "reason": "새 필수 모델/NT11 CSV 미확보. 기존 NT11 비교는 diagnostic/nonblocking 불일치로 유지하며 새 필수자료 통과로 대체하지 않는다." + } + ], + "preserved_limits": [ + "ShellNL RF/RM review-only, stress Gauss/CSV mapping 미판정", + "기존 thermal NT11 diagnostic 불일치를 외부 PASS로 승격하지 않음", + "HHT C08a 현재 개별 PASS와 C08b·전체 회귀·전체 물리 closure 구분", + "eigen S3 partial-BC 정적 충돌·성능 미완료 유지" + ], + "helper_attempts": ".build/merge-verification/t5-20261018-01/before-prune/helper-preparation-attempts.json", + "test_pruning": { + "removed_tests": [], + "status": "BLOCKED_BEHIND_REQUIRED_T5_CHECKS", + "reason": "필수 실제 비교와 전체 실행 gate가 충족되지 않았다." + }, + "temporary_evidence_floor": { + "status": "synthetic tooling checks only; no FESA model execution", + "checked_cases": { + "scope": "임시 검증도구의 증거 하한 검사만 수행. FESA solver·물리·reference 검증이 아니다.", + "checks": [ + { + "synthetic_tooling_case": "empty", + "exit": 1, + "expected": 1, + "report": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\models\\tooling-floor-empty\\parity.json" + }, + { + "synthetic_tooling_case": "attribute-dtype-mismatch", + "exit": 1, + "expected": 1, + "report": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\models\\tooling-floor-attribute-dtype-mismatch\\parity.json" + }, + { + "synthetic_tooling_case": "missing-result", + "exit": 2, + "expected": 2, + "report": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\models\\tooling-floor-missing-result\\parity.json" + }, + { + "synthetic_tooling_case": "nonempty-identical", + "exit": 0, + "expected": 0, + "report": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\models\\tooling-floor-nonempty-identical\\parity.json" + }, + { + "synthetic_tooling_case": "comparator exit0 with malformed JSON", + "exit": 2, + "expected": 2 + } + ] + }, + "validators": [ + ".build\\merge-verification\\t5-20261018-01\\before-prune\\hdf-parity.py", + ".build\\merge-verification\\t5-20261018-01\\before-prune\\validate-report.py" + ], + "aggregate": "Every solver/comparator/validator/parity exit is preserved; any nonzero yields nonzero aggregate. Known thermal diagnostic numeric FAIL remains separately classified, never numeric PASS.", + "tool_source_sha256": { + "models.py": "d59893216881fea11d48f28fc38e4d0c195815ea1c688ce5b20c308dd5708ce9", + "hdf-parity.py": "a277726e72fd335d0e1e5af8fc4df46a62e71d45d57d91d3ee21e859d56cb9f8", + "validate-report.py": "80a9729285969b81a4e2f2f7773a3f3588ddaff59586f1902c61e84c94796abc", + "reference-harness.cpp": "dac5dbf6ad084420e94439224191ca328f1ef01a4fc9892512bc06e1782fac11" + }, + "false_green_regression_checks": { + "scope": "임시 도구의 false-green 재현/수정 확인만 수행. FESA 제품·물리·실제 reference 통과가 아니다.", + "checks": [ + { + "synthetic_case": "legacy-empty", + "before_exit": 0, + "after_exit": 1, + "expected_after_exit": 1, + "before_report": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\models\\tooling-floor-legacy-empty\\legacy-false-green-parity.json", + "after_report": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\models\\tooling-floor-legacy-empty\\parity.json" + }, + { + "synthetic_case": "legacy-missing", + "before_exit": 0, + "after_exit": 2, + "expected_after_exit": 2, + "before_report": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\models\\tooling-floor-legacy-missing\\legacy-false-green-parity.json", + "after_report": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\models\\tooling-floor-legacy-missing\\parity.json" + }, + { + "synthetic_case": "numeric-mismatch", + "before_exit": null, + "after_exit": 1, + "expected_after_exit": 1, + "before_report": null, + "after_report": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\models\\tooling-floor-numeric-mismatch\\parity.json" + }, + { + "synthetic_case": "nonfinite", + "before_exit": null, + "after_exit": 1, + "expected_after_exit": 1, + "before_report": null, + "after_report": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\models\\tooling-floor-nonfinite\\parity.json" + } + ] + }, + "synthetic_case_count": 9, + "parity_disposition": "Exact-field nonzero is a comparison assertion result, not a new physical acceptance tolerance. Differences require source/dtype/identity/rounding cause classification against existing approved policies; no tolerance added or relaxed.", + "aggregate_validation_status": "Static implementation reviewed; actual full model aggregate has not run yet." + } } } From 4841f1226f2a15c0a9a3fc004be9bee8ac3efb2b Mon Sep 17 00:00:00 2001 From: "KOKO\\Mimi" Date: Sun, 18 Oct 2026 12:43:17 +0900 Subject: [PATCH 2/2] docs: record approved static merge verification evidence --- .../README.md | 58 +- .../merge-manifest.json | 1106 +++++++++++++++++ 2 files changed, 1162 insertions(+), 2 deletions(-) diff --git a/docs/cpp-object-oriented-modular-refactoring/README.md b/docs/cpp-object-oriented-modular-refactoring/README.md index abd3fde..e58a0c6 100644 --- a/docs/cpp-object-oriented-modular-refactoring/README.md +++ b/docs/cpp-object-oriented-modular-refactoring/README.md @@ -64,7 +64,7 @@ CLI는 입력 `.inp` 하나, lexical sibling HDF5·log, warning/오류 진단과 T2/T3 단계에서 직접 MSVC와 CMake/Ninja의 Debug solver/CLI 및 세 테스트 target build가 완료됐다. 제품274개는 Refactor working bytes와 일치한다. 양쪽 실제 discovery는 unit849, integration72, reference43으로 총964개이며 canonical identity가 일치한다. -최종 선별 실행은 CMake176개, Native15개, 합성 reference comparator28개, +당시 선별 실행은 CMake176개, Native15개, 합성 reference comparator28개, Python145개가 failure/error/skip 없이 통과했다. 이는 전체964개 실행·실제 모델 비교 완료가 아니다. 근거는 작업 공간의 `.build/merge-verification/t2-20261018-01/`와 `t3-20261018-01/`에 있다. 원래 dev와 Refactor 저장소 및 기준자료는 보존했다. @@ -76,7 +76,7 @@ Python145개가 failure/error/skip 없이 통과했다. 이는 전체964개 실 정리 전 필수 검증을 충족하지 못하면 테스트 삭제와 최종 병합 완료 판정을 진행하지 않는다. T4 문서 갱신 자체로 build/test를 추가 실행하지 않았다. -### T5 정리 전 검증 중간 기록 — 전체 완료 아님 +### T5 최초 중간 snapshot — 2026-10-18 03:00 UTC, 이후 범위 변경 전 이력 2026-10-18에 전체 Native Debug 솔루션, CMake Debug configure/build와 Ninja dependency 검사를 새로 실행해 모두 exit0을 확인했다. 제품102 compile unit의 dependency가 유효하고, @@ -125,3 +125,57 @@ Thermal 새 필수 reference 부재와 기존 NT11 diagnostic/nonblocking 불일 중간 근거는 `.build/merge-verification/t5-20261018-01/before-prune/`에 있으며 `running-checkpoint.json`과 `progress.jsonl`이 실행 큐·PID·현재 관측을 보존한다. 파일 manifest의 `t5_before_prune_verification`은 이 중간 snapshot을 기록하며 T1/T2/T3 원필드는 보존했다. + + +### T5 사용자 승인 정적 범위 — 검증 완료, 제한 유지 + +사용자는 장시간 HHT 동해석 검증을 중단하고 정적 해석 검증 후 다음 단계로 진행하도록 +범위를 변경했다. 위 최초 snapshot의 전체 큐·미완료 gate 설명은 당시 이력이다. 현재는 +HHT·solid dynamic·eigen/frequency·transient thermal 실제 수치 실행을 유예하고 해당 테스트를 +보존한다. 기존 전체 큐와 후속 watcher는 `user_cancelled_static_only`로 종료했으며, +부분 stdout·미생성 XML·취소 근거를 보존했다. 이를 수치 실패나 통과로 계산하지 않는다. + +현재964개 identity를 source body·경로·행·SHA256에 대응시켜 정적·공통631개(unit555, +integration35, reference41)를 선택하고333개를 유예했다. 과거 정적553개는 분류 근거로만 +읽었으며 그중11개를 유예하고 현재 추가 공통89개를 포함했다. 순수 SO3 미분·좌표변환, +mock 수명·dispatch, parser/mapping 및 합성 comparator 정책 검사는 포함하고 실제 비정적 +procedure를 호출하는 검사는 제외했다. 선택표는 `before-prune/static-only/selection.json`에 있다. + +새 직렬 실행은 Native·CMake의 선택631개, 명시적 목록 CTest631개 및 Python 합성·정책 +검사다. 고유 C++ 검사 수는631개이며 실행 경로별 수를 합쳐 고유 검사 수로 보고하지 않는다. +Native·CMake 각631개 및 CTest631개가 실제 exit0·skip0으로 확인됐다. Native/CMake의 +unit555·reference41은 처음 실행에서 통과했고 integration35는 아래 환경 대조 후 전부 통과했다. +CTest JUnit의 실제 이름을 canonical identity로 역매핑해 선택631개와 누락·중복0을 확인했다. +Python 합성·정책145개도 exit0·failure/error/skip0이며 실제 비정적 물리 검증으로 세지 않는다. +정식 정적5모델도 fresh Refactor 기준·통합 Native·통합 CMake에서 같은 scratch 입력 bytes/경로로 +총15번 실행했고 등록 비교15개·보고서 검증15개·schema/identity/field parity5개가 모두 exit0이다. +추가 정식 shellNL 자료의 부재와 `_02` comparator 연결 부재는 미완료로 유지하며, 확보된 +정적 범위의 gate가 충족되면 다음 단계로 진행할 수 있다는 사용자 지시를 따른다. + +임시 parity 도구의0길이 dataset만 있는 파일 false-green도 실제 exit0으로 재현했다. +필수 inventory와 파일 전체의 비어있지 않은 data 검사를 추가한 도구는 같은 경우 exit1, +의미있는 합성 동일값 exit0·불일치 exit1을 보였다. 개별0길이 dataset은 허용한다. +이는 임시 도구 검증이며 제품 물리·reference 통과를 대신하지 않는다. 현재 근거 경로는 +`.build/merge-verification/t5-20261018-01/before-prune/static-only/run-20261018-01/`이다. + + +정적 모델의 beam은 U/UR·RF/RM·section actions6가족212행, shell은 U blocking·UR warning-only +2가족294행을 기존 기준으로 비교했다. ShellNL은 translation blocking·rotation warning-only와 +내부 force/moment balance·accepted free residual을 통과했다. RF/RM3가족의 수치 비교는 +**false/review-only**로 보존하며 stress mapping은 여전히 미판정이다. Hex8 선형·비선형 정적은 +각 Step-1/increment10의 U(length)·RF(force)·S(force/length²)를 원본 CSV·source identity와 +기존5%/1% 기준으로 비교했다. 개별 quantity/frame/policy·원본/실행물/결과 hash 및 literal +argv/cwd/env는 manifest와 raw `final-static-summary.json`·각 closed execution record에 있다. + +초기 Native/CMake integration에서는 같은 application 검사1개가 각각 output-busy로 실패했다. +Native 실패 lock 경로261자, CMake260자였으며 동일 Native exe·동일 identity에서 TMP/TEMP만 +바꾼 대조가 긴 경로 exit1→짧은 task-owned 경로 exit0을 보였다. 짧은 고유 TMP에서 양쪽 +integration35개 전체를 다시 실행해 identity35·exit0·failure/error/skip0을 확인했다. 원래 +실패 XML/log와 최초 큐 aggregate exit1은 환경/경로 한계로 보존했다. 제품·테스트·허용치는 +바꾸지 않았다. 모델 input/result/lock 길이도 사전 확인했으며 최대193자다. + +독립 정적 수치 보충 검토는 `CONCERNS / required_static_missing=false`다. 선택631개의 +정적 수치 필수 coverage 누락은 발견하지 못했으며, 이를 RF/RM·stress mapping 또는 유예 +기능의 물리 승인으로 확대하지 않는다. 사용자 수정 범위의 정리 전 정적 gate는 충족했으므로 +다음 단계로 진행할 수 있다. 비정적333개·누락 정식 fine/_02/pressure 비교·열해석 새 reference +부재와 기존 NT11 diagnostic 제한은 미완료로 유지한다. 테스트 정리·최종 병합은 아직 수행하지 않았다. diff --git a/docs/cpp-object-oriented-modular-refactoring/merge-manifest.json b/docs/cpp-object-oriented-modular-refactoring/merge-manifest.json index 7b6dc8b..dd40513 100644 --- a/docs/cpp-object-oriented-modular-refactoring/merge-manifest.json +++ b/docs/cpp-object-oriented-modular-refactoring/merge-manifest.json @@ -33343,5 +33343,1111 @@ "parity_disposition": "Exact-field nonzero is a comparison assertion result, not a new physical acceptance tolerance. Differences require source/dtype/identity/rounding cause classification against existing approved policies; no tolerance added or relaxed.", "aggregate_validation_status": "Static implementation reviewed; actual full model aggregate has not run yet." } + }, + "t5_static_scope_verification": { + "status": "APPROVED_STATIC_SCOPE_COMPLETE_WITH_CONCERNS", + "user_scope_change": "HHT 등 비정적 실제 수치 검증 유예, 정적 검증 후 다음 단계 허용; 테스트 보존", + "source_pin": "0c763baa1d91b89cb48486320acaa2ce18c002c7", + "raw": ".build\\merge-verification\\t5-20261018-01\\before-prune\\static-only\\run-20261018-01", + "cancelled_full_queue": { + "classification": "user_cancelled_static_only", + "reason": "사용자 명시 지시: HHT 동해석 검증을 중단하고 정적해석만 검증 후 다음 단계로 진행. 중단을 수치 FAIL/PASS로 계산하지 않는다.", + "utc": "2026-10-18T03:09:27Z", + "verified_task_processes": [ + { + "pid": 16232, + "name": "python.exe", + "argv": [ + "C:\\Users\\baram\\AppData\\Roaming\\uv\\python\\cpython-3.11-windows-x86_64-none\\python.exe", + ".build/merge-verification/t5-20261018-01/before-prune/after-suites.py" + ], + "cwd": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker", + "create_time": 1792263155.385302, + "root_orchestration": true + }, + { + "pid": 23232, + "name": "python.exe", + "argv": [ + "C:\\Users\\baram\\AppData\\Roaming\\uv\\python\\cpython-3.11-windows-x86_64-none\\python.exe", + ".build/merge-verification/t5-20261018-01/before-prune/suites.py" + ], + "cwd": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker", + "create_time": 1792262211.6124952, + "root_orchestration": true + }, + { + "pid": 25804, + "name": "fesa_unit_tests.exe", + "argv": [ + "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\native\\Debug\\tests\\fesa_unit_tests.exe", + "--gtest_output=xml:C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\native-fesa_unit_tests.xml" + ], + "cwd": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker", + "create_time": 1792262212.862038, + "root_orchestration": false + } + ], + "outcomes": [ + { + "pid": 16232, + "action": "terminated_verified_task_process" + }, + { + "pid": 23232, + "action": "terminated_verified_task_process" + }, + { + "pid": 25804, + "action": "terminated_verified_task_process" + } + ], + "still_alive_verified_pids": [], + "preserved_partial_outputs": [ + { + "path": ".build\\merge-verification\\t5-20261018-01\\before-prune\\native-fesa_unit_tests.log", + "size": 139053, + "sha256": "3c4d78a1aad62f195d8463e1d0e8438c3c0865972cfdf2a956db5f75d3a583e4" + } + ], + "post_termination_pid_checks": [ + { + "pid": 16232, + "alive": false + }, + { + "pid": 21216, + "alive": false + }, + { + "pid": 23232, + "alive": false + }, + { + "pid": 25804, + "alive": false + } + ] + }, + "selection": { + "source_pin": "0c763ba", + "total": 964, + "counts": { + "unit": { + "selected": 555, + "deferred": 294 + }, + "integration": { + "selected": 35, + "deferred": 37 + }, + "reference": { + "selected": 41, + "deferred": 2 + } + }, + "historical_selected": 553, + "historical_now_deferred": [ + "EigenReduction.KeepsPositivePartialGlobalRotationAndOriginalPencil", + "EigenReduction.RemovesOnlyActualFreeDirectorNull", + "EigenReduction.RejectsPositiveButUnresolvableMassWithoutDeletingDofs", + "EigenReduction.PreservesSmallResolvablePositivePartialRotationMass", + "EigenReduction.HandlesTwoFreeRotationsAndRejectsEmptyFiniteSpace", + "EigenReduction.PureMassWhiteningRetainsInclusiveInfinityConditionGate", + "EigenReduction.PureOffDiagonalWhiteningMatchesAnalyticGramAndPencil", + "DynamicHdf5ResultsWriter.SeparatesReducedFilterCombinationFromLegacyDriver", + "DynamicHdf5ResultsWriter.WritesCompletePhysicalClampedHistoryAndSchema", + "ThermalGeometryAction.EnclosesIndependentDyadicTangentialConstraints", + "ThermalGeometryAction.PreservesWholePatchAndScaledFiniteRejections" + ], + "newly_selected": [ + "DynamicNewtonIterationLog.WritesTimeAndAllTwoChannelMetrics", + "DynamicNewtonIterationLog.EscapesFailureContextAndKeepsZeroScaleFailure", + "DynamicNewtonIterationLog.InvalidEvidencePreservesFlushedPrefixAndFailsLifecycle", + "LoadAssembly.PreservesOrderedCancellationInPrescribedCorrection", + "LoadAssembly.SelectsFirstOrderedOverflowDiagnostic", + "SparseAssembly.MultipliesRectangularCopyMoveAndConcurrentConstCalls", + "SparseAssembly.PreservesZeroShapesAndEmptyRows", + "SparseAssembly.RejectsNonfiniteRhsAndRecoversAfterFiniteOverflow", + "SparseAssembly.MatchesIndependentLongDoubleResidualOnUnevenRows", + "ElementFactory.SolidBindingPreservesThreeComponentsAndReferenceMass", + "Hex8Element.ExactBrickStiffnessAndRowSumLumpedMass", + "Hex8Element.RowSumLumpedMassHasAll24PositiveDirectionsAndReferenceInvariance", + "Hex8Element.RejectsUnrepresentableShearAndMassInsteadOfReturningZeros", + "Hex8Element.WarpedRowSumMassMatchesIndependentNodalIntegralsAndNonuniformEnergy", + "Hex8Element.BackendOperandRejectionRetainsOriginalStiffnessDiagnostic", + "Hex8Element.TensorFailureRetainsPriorityOverEnergyAndTangentOverflow", + "Hex8HighLow.ScalarCrossProductShortcutMatchesOriginalBits", + "Hex8HighLow.FourColumnMaterialPacketMatchesFrozenScalarBits", + "Hex8HighLow.PacketSpecialLaneDoesNotChangeOtherColumns", + "Hex8HighLow.UniformDyadicPacketsExerciseEachLowZeroShape", + "Hex8HighLow.OverflowLaneIsNeutralizedBeforeResidualFma", + "Hex8HighLow.PacketVectorGuardsPreserveScalarFlagsAndBits", + "Hex8HighLow.PacketTailScreenRetainsExactBoundaryAndFallback", + "Hex8HighLow.GeometryPacketPreservesAsymmetricLanesAndUniformShapes", + "Hex8HighLow.GeometryPacketRetainsSpecialLanesAndExactTailBoundary", + "Hex8HighLow.GeometryPacketPreservesOrderedOverflowAndPreparedInvalid", + "Hex8HighLow.GeometryPacketSumFallbackPreservesNearMaxAndSubnormalStatus", + "Hex8HighLow.PacketBackendSelectionRecoversAfterEnvironmentRestoration", + "Hex8HighLow.PacketScalarBridgesPreserveOriginalRawBits", + "Hex8HighLow.PacketCapabilityRejectsMissingIntegerIsaAndOsState", + "Hex8HighLow.PacketDoesNotClearPriorMaskedStickyFlags", + "Hex8HighLow.ConcurrentFirstLinearTrialsAcrossCopiesAndMoveKeepBits", + "Hex8HighLow.FirstLinearPreparationRecoversAfterTrialAndEnvironmentFailure", + "EulerBeam3D.HasSixRigidModesRankSixAndPositiveDeformationEnergy", + "NonlinearMitc4Residual.SmallRotationPhysicalForceRetainsDrillingNullIdentity", + "NonlinearMitc4Residual.ExactDrillingConstraintHasIndependentForceGradientAndHessian", + "NonlinearMitc4Residual.ExternalDrillingConstraintIncludesForceTimeAndCurvatureTerms", + "NonlinearMitc4Residual.ExternalDrillingConstraintRejectsInvalidRotationAndHasZeroForceValue", + "ThermalDofManager.MapsOnlyConnectedNodesAndOverridesModelBoundary", + "ThermalDofManager.RejectsChangedThermalLayoutInventory", + "ThermalDofManager.KeepsDisconnectedThermalComponentsInSeparateCsrBlocks", + "ThermalDofManager.RejectsThermalLayoutsForStructuralModels", + "DenseBlasInternal.DiagonalProductKeepsEntrywiseCancellationAndChecks", + "DenseBlasInternal.LocalDenseScopeRestoresTlsAfterProductsAndUnwind", + "DenseBlasInternal.OuterProductLeavesFiniteInputOverflowForOwnerGate", + "DenseBlasInternal.OuterProductUsesRectangularStorageAndPreservesRejection", + "DenseBlasInternal.PolicyQueryPreservesDefaultPositiveAndNestedTls", + "DenseBlasInternal.SingleEquationScopeRestoresTlsAndRespectsOverrides", + "DenseBlasInternal.TransposeProductChecksShapeAndKnownRectangularAction", + "DenseBlasInternal.TransposeRightProductUsesInnerAndRectangularStrides", + "DenseBlasInternal.CholeskyAndInverseMatchKnownFactorsAndKeepFailedOutput", + "DenseBlasInternal.CholeskyFailureReasonPreservesCandidatesAndResetsOnReuse", + "HighLowArithmetic.FiniteClassificationMatchesBinary64Boundaries", + "HighLowArithmetic.BitExponentMatchesFrozenOracleAcrossEveryExponent", + "HighLowArithmetic.OptimizedArithmeticMatchesFrozenOriginalBits", + "DenseMath.MatrixProductsRejectNonfiniteOperandsAndPreserveValidReuse", + "InpDomainMapping.RejectsUnsupportedNonlinearProceduresAndMixedModels", + "InpDomainMapping.RejectsUnsupportedAndInvalidPortfolio", + "Hex8Semantics.SamplesIndependentAmplitudeLoadsAtActualEndpoints", + "Hex8Semantics.RejectsAmplitudeOptionsDataAndCrossFamilyUse", + "Hex8Semantics.MapsAllFiveUnmodifiedRequiredSourceDecks", + "Hex8Semantics.ValidatesOutputNoOpsAndRejectsUnapprovedDynamicChildren", + "Hex8Semantics.RejectsSecondProcedureBeforeReadingItsOptionsOrData", + "Hex8Semantics.AllowsOnlyApprovedStaticRestartNoOp", + "Hex8Semantics.RejectsInvalidSolidDynamicSchedulesAndIncrementLimits", + "HhtDynamicDomainMapping.MapsOriginalReferenceDeckWithoutMutation", + "ThermalDomainMapping.MapsApprovedShellThermalReference", + "ThermalDomainMapping.InactiveTargetsFailWithOriginalKeywordAndIdentity", + "ThermalDomainMapping.ModelBoundaryInheritanceAndStepOverrideReachDofManager", + "SolidPreparedAnalysis.MissingSolidAdapterFailsWithoutLegacyDispatch", + "SolidNewtonIterationLog.InvalidScalarEvidencePermanentlyFailsLogLifecycle", + "ThermalAnalysisModel.KeepsThermalSectionMaterialIndicesSeparateFromDomainMaterials", + "ThermalAnalysisModel.ViewsConnectedDs4EntitiesWithoutOwningDomain", + "ResultRecoveryComponents.PartitionedScaleKeepsCancelledInternalTerms", + "MklPardisoSolver.SingleEquationPolicyPreservesLifecycleAndConcurrentTls", + "MklPardisoSolver.SingleEquationScopeTransitionsBetweenRetainedSizes", + "TangentSolver.ReusesRhsButFreshValuesAndFailureCannotReuseStaleState", + "TangentSolver.SingleEquationScopeRestoresTlsAcrossFreshFailureAndReuse", + "TangentSolver.SingleEquationScopeTransitionsBetweenRetainedSizes", + "EigenReferenceComparison.DirectSchemaFixtureAcceptsRepeatedReorderedModes", + "ReferenceTolerancePolicy.EigenFirstImplementationDoesNotRelaxCommonPolicy", + "ReferenceTolerancePolicy.EigenFirstImplementationPreservesZeroAndFiniteChecks", + "ReferenceTolerancePolicy.EigenFirstImplementationRejectsNonmodalFamilies", + "ThermalReferenceComparison.HdfSchemaMappingRejectsMalformedStationFrameAndNodeData", + "ThermalReferenceComparison.MapsSourceLabelsWithoutRowOrderAndPreservesSignedValues", + "ThermalReferenceComparison.RejectsMissingExtraDuplicateAndNonfiniteBeforeTolerance", + "ThermalReferenceComparison.RejectsWrongStepTimeIncrementInstanceAndStation", + "ThermalReferenceComparison.UsesUnmodifiedFivePercentOnePercentAndExactZeroPolicy", + "ThermalReferenceComparison.CsvRequiresExactHeaderFrameFiniteValuesAndSoleInstance" + ], + "no_past_pass_inherited": true, + "all_identities_one_to_one": true + }, + "parity_floor": { + "scope": "temporary tooling evidence, not FESA physics validation", + "checks": [ + { + "name": "length-zero-v2-false-green", + "exit": 0 + }, + { + "name": "length-zero-only", + "exit": 1, + "expected": 1 + }, + { + "name": "meaningful-identical", + "exit": 0, + "expected": 0 + }, + { + "name": "meaningful-mismatch", + "exit": 1, + "expected": 1 + } + ] + }, + "missing_canonical_reference_status": "shellNL-meshfine/pressure 자료 미확보, _02 자료 및 comparator 연결 미확보; PASS/삭제 근거 아님", + "deferred_actual_physics": [ + "HHT", + "solid dynamic", + "eigen/frequency", + "transient thermal" + ], + "past_pass_inheritance": false, + "final_static_summary": { + "path": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\static-only\\run-20261018-01\\final-static-summary.json", + "sha256": "6ad49397d827a8f35ab8400d62582e544e2b5a9a4d2f5e50f7b9030972e336a8" + }, + "selection_evidence": { + "path": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\static-only\\selection.json", + "sha256": "5f129bce23afb05a76efc288db37cc3c698132cb90a615ce863dc360929b8861", + "source_files": 82 + }, + "scope_execution": { + "unique_selected_cpp": 631, + "deferred_cpp": 333, + "native": { + "unit": 555, + "integration_short_tmp": 35, + "reference": 41, + "exit": 0, + "skip": 0 + }, + "cmake_direct": { + "unit": 555, + "integration_short_tmp": 35, + "reference": 41, + "exit": 0, + "skip": 0 + }, + "ctest": { + "count": 631, + "identity_match": true, + "exit": 0, + "skip": 0 + }, + "python_synthetic_policy": { + "count": 145, + "exit": 0, + "failure": 0, + "error": 0, + "skip": 0 + }, + "original_suite_aggregate_exit": 1, + "original_suite_nonzero_classification": "environment/path limit; preserved, same-exe long1 short0; both integration35 short TMP confirmed0", + "actual_model_count": 15, + "registered_comparisons": 15, + "model_stage_count": 50, + "model_stage_aggregate_exit": 0, + "products274_and_canonical_references32_unchanged": true, + "original_manifest_top_fields_unchanged": true + }, + "same_exe_path_probe": [ + { + "name": "path-probe-long", + "argv": [ + "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\native\\Debug\\tests\\fesa_integration_tests.exe", + "--gtest_filter=ShellSurfacePressureApplication.InputWithoutPressureRetainsExistingNonlinearBehavior", + "--gtest_output=xml:C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\static-only\\run-20261018-01\\path-probe-long.xml" + ], + "cwd": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker", + "TMP": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\static-only\\run-20261018-01\\native-Debug-integration-tmp", + "TEMP": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\static-only\\run-20261018-01\\native-Debug-integration-tmp", + "exit": 1, + "seconds": 0.0917518138885498, + "exe_sha256": "2f840c974d76511ab3ce36b2acfcf640729802e185eb0b076dce087fc2e414df", + "removed_filters": {}, + "log_sha256": "8acb5c13977c6f95949da7c6ea9e7a4a809bbd85bd23e645f1a25868c7f08eb2", + "xml_sha256": "5ba4b6fd33e8d16300de594aba6b69cfc522e84f9015aaf1298e48838a8c8eee", + "failure_count": 2 + }, + { + "name": "path-probe-short", + "argv": [ + "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\native\\Debug\\tests\\fesa_integration_tests.exe", + "--gtest_filter=ShellSurfacePressureApplication.InputWithoutPressureRetainsExistingNonlinearBehavior", + "--gtest_output=xml:C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\static-only\\run-20261018-01\\path-probe-short.xml" + ], + "cwd": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker", + "TMP": "C:\\git\\FESADev\\.dryforge\\tmp\\t5s1\\probe-short", + "TEMP": "C:\\git\\FESADev\\.dryforge\\tmp\\t5s1\\probe-short", + "exit": 0, + "seconds": 0.6247260570526123, + "exe_sha256": "2f840c974d76511ab3ce36b2acfcf640729802e185eb0b076dce087fc2e414df", + "removed_filters": {}, + "log_sha256": "a4e3e2819e1c36c2e1dc93c48a24c27608399be5ffe5cce59012d3a3bd526286", + "xml_sha256": "39302958daa00efb48893d54f98e16248994f4e153fa769826a918340ebaa612", + "failure_count": 0 + } + ], + "integration_short_tmp_confirmation": [ + { + "name": "native-Debug-integration-short-tmp", + "argv": [ + "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\native\\Debug\\tests\\fesa_integration_tests.exe", + "--gtest_flagfile=C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\static-only\\run-20261018-01\\native-Debug-integration.flags", + "--gtest_output=xml:C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\static-only\\run-20261018-01\\native-Debug-integration-short-tmp.xml" + ], + "cwd": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker", + "TMP": "C:\\git\\FESADev\\.dryforge\\tmp\\t5s1\\native-Debug-integration-short-tmp", + "TEMP": "C:\\git\\FESADev\\.dryforge\\tmp\\t5s1\\native-Debug-integration-short-tmp", + "exit": 0, + "seconds": 8.323283672332764, + "count": 35, + "skip": 0, + "failed_testcases": 0, + "failure_assertions": 0, + "errors": 0, + "identity_match": true, + "exe_sha256": "2f840c974d76511ab3ce36b2acfcf640729802e185eb0b076dce087fc2e414df", + "removed_filters": {}, + "log_sha256": "a36fd261722050a6008de4ca6a5e9a96f7515a88ff7ca638056fe6dc8cb8922f", + "xml_sha256": "a2838c6f90f48c7fc4e730156fe23260fa227ba5b42e6184be7040e6c3471f54" + }, + { + "name": "cmake-debug-integration-short-tmp", + "argv": [ + "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\cmake-debug\\tests\\fesa_integration_tests.exe", + "--gtest_flagfile=C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\static-only\\run-20261018-01\\cmake-debug-integration.flags", + "--gtest_output=xml:C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\static-only\\run-20261018-01\\cmake-debug-integration-short-tmp.xml" + ], + "cwd": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker", + "TMP": "C:\\git\\FESADev\\.dryforge\\tmp\\t5s1\\cmake-debug-integration-short-tmp", + "TEMP": "C:\\git\\FESADev\\.dryforge\\tmp\\t5s1\\cmake-debug-integration-short-tmp", + "exit": 0, + "seconds": 8.566259622573853, + "count": 35, + "skip": 0, + "failed_testcases": 0, + "failure_assertions": 0, + "errors": 0, + "identity_match": true, + "exe_sha256": "ce14dd8bea3f4b78f67d1d6079107087e96a6270f075226304b91e2191d62ebb", + "removed_filters": {}, + "log_sha256": "7fc1442f2c1da1f9dd9de4c495f54969babc6b596a51ceeaf1c302c53a04d5de", + "xml_sha256": "56ba509e0595bde41fedff7b079480a3a2830d7235331fc93cefd28ba705b7ab" + } + ], + "static_numerical_review": { + "status": "CONCERNS", + "required_static_missing": false, + "copy_sha256": "991e8c06781437e4637d6ea8a6ebf3f2da373a063de192e1dc11e564c2909b1d" + }, + "concerns": [ + "HHT/solid dynamic/eigen/frequency/transient thermal actual verification", + "missing fine/_02/pressure canonical comparison", + "ShellNL RF/RM numeric pass", + "ShellNL stress mapping", + "full964 pass", + "test pruning or final repository integration" + ], + "t6_scope_disposition": "사용자 수정 지시에 따라 확보된 정적 gate 통과 후 다음 단계 허용; 비정적·누락자료 미완료를 PASS/테스트삭제 근거로 사용하지 않음", + "tool_source_sha256": { + "final-static-check.py": "0866727db4e094b03faad59b74e9bdd72fc9785ba7734ac71513bd3d8e3c4c83", + "hdf-inventory.py": "1820a0ab855dfbfd8ea4c84f123668309f1d3a380be332e15a179c7c7ca1f4e4", + "hdf-parity-v2.py": "a277726e72fd335d0e1e5af8fc4df46a62e71d45d57d91d3ee21e859d56cb9f8", + "hdf-parity.py": "253cb7c40b76ec6e3a46f365573d8a2afdbfec4b2221ff9876135581faa19b3f", + "models.py": "de000d628eec1326373c29e46359dded468e7b48fee4406426b84fd3876a9af7", + "parity-floor.py": "179c538476e597491e39f3ef1d9d4570734ef3da2cbf91c747f8f29f174e6d16", + "path-probe.py": "67c073d064321725bc647683a11ddb88c6a6f1a5e9fcbd693cc34c45f6993e63", + "post-suite-check.py": "72f0dbb161388f1cc5fcdcc181e30f42fb0a06cee41882327c344b2986ee5699", + "publish-static-evidence.py": "daf9f3f4590513027ff1d1789dd61b57ddc8b6e05848b5772af69f4b609bdb8a", + "retry-integration.py": "84f331c2951fc8fd79d824457f341e33b22c735fa9dfeaf5ab8eb093e40a47e3", + "runner-deep-tmp.py": "b1a977948a9eafdc25cd94e0046b69fbd18f8ffcfa82e7ee73fab7993f8d203e", + "runner.py": "a71ca7d688fe93cf9009a1598db1bf801db1d34064099a317e81d03c01589b8f", + "static-suites.py": "b8d4f64fd7403ee92550fcd09eb01e034e508d35ee577f60dc268ed5d3bbd46d", + "validate-report.py": "296084e5af8fa79aa12af07b061afd29a80338684623ce7086f69e4035f90f80" + }, + "static_models": [ + { + "case": "beam", + "original_input": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\reference\\cantilever beam\\cantilever beam.inp", + "original_input_sha256": "e406ea9560321b791dbdb829e03bd24593b9875e0195d35b86bd931eda122ef3", + "same_scratch_path_and_bytes": true, + "step_frame": "Step-1/frame0", + "policy": "승인 공통 near-zero=1%, relative=5%, RMS=1%; exact-zero 유지. shell UR warning-only, shellNL RF/RM review-only; 내부평형 별도 기존 gate.", + "families": [ + { + "identity": "displacement-translation", + "passed": true, + "blocking": true, + "row_count": 33, + "components": [ + "UX", + "UY", + "UZ" + ] + }, + { + "identity": "displacement-rotation", + "passed": true, + "blocking": true, + "row_count": 33, + "components": [ + "URX", + "URY", + "URZ" + ] + }, + { + "identity": "reaction-force", + "passed": true, + "blocking": true, + "row_count": 33, + "components": [ + "RF1", + "RF2", + "RF3" + ] + }, + { + "identity": "reaction-moment", + "passed": true, + "blocking": true, + "row_count": 33, + "components": [ + "RM1", + "RM2", + "RM3" + ] + }, + { + "identity": "section-force", + "passed": true, + "blocking": true, + "row_count": 20, + "components": [ + "N" + ] + }, + { + "identity": "section-moment", + "passed": true, + "blocking": true, + "row_count": 60, + "components": [ + "T", + "My", + "Mz" + ] + } + ], + "source_identities": null, + "original_artifacts": [ + { + "path": "reference/cantilever beam/cantilever beam displacements.csv", + "original_sha256": "7b3312fbc8848e81d9a0fd4ff2b56bc1954636a2c14b5c1cbb269cb9477d3c31", + "worker_sha256": "7b3312fbc8848e81d9a0fd4ff2b56bc1954636a2c14b5c1cbb269cb9477d3c31" + }, + { + "path": "reference/cantilever beam/cantilever beam elemental forces.csv", + "original_sha256": "0093c0a506142bd3dc8eeeb87d5f08fd7490567a1ed144920029a2d2f38d119a", + "worker_sha256": "0093c0a506142bd3dc8eeeb87d5f08fd7490567a1ed144920029a2d2f38d119a" + }, + { + "path": "reference/cantilever beam/cantilever beam reactions.csv", + "original_sha256": "bf30cdb0cd50106885de14d63492737736c587426ebd787de4f7ee6aa86daa23", + "worker_sha256": "bf30cdb0cd50106885de14d63492737736c587426ebd787de4f7ee6aa86daa23" + }, + { + "path": "reference/cantilever beam/cantilever beam.inp", + "original_sha256": "e406ea9560321b791dbdb829e03bd24593b9875e0195d35b86bd931eda122ef3", + "worker_sha256": "e406ea9560321b791dbdb829e03bd24593b9875e0195d35b86bd931eda122ef3" + } + ], + "internal_equilibrium": null, + "variants": [ + { + "variant": "refactor-baseline", + "native_exit": 0, + "comparison_exit": 0, + "validation_exit": 0, + "result_sha256": "4e7701173036406ad58f3610d896f53ee5d7fd3ad395e12f9afeb632d0fbfa89", + "comparison_json_sha256": "ad00680aa610a516c8ea83473ad6329a00aa67d69ff983c2be7ce0673a535bd2", + "closed_execution_record": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\static-only\\run-20261018-01\\models\\beam\\refactor-baseline\\execution.json", + "closed_execution_record_sha256": "9b8d73f91d4832f1ae8ca66c7f790bf693667cfac4f1ca5131e1ab8e83081e3c" + }, + { + "variant": "integrated-native", + "native_exit": 0, + "comparison_exit": 0, + "validation_exit": 0, + "result_sha256": "bdfe4f223469c44682a4dbe4413800c05eb8dd4656a27ddabed9fe56358e5cf7", + "comparison_json_sha256": "ad00680aa610a516c8ea83473ad6329a00aa67d69ff983c2be7ce0673a535bd2", + "closed_execution_record": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\static-only\\run-20261018-01\\models\\beam\\integrated-native\\execution.json", + "closed_execution_record_sha256": "bf9c503067be9f0750e6c0001ce67d6bd85e5776f5a59be0a77c72b135f3caca" + }, + { + "variant": "integrated-cmake", + "native_exit": 0, + "comparison_exit": 0, + "validation_exit": 0, + "result_sha256": "bdfe4f223469c44682a4dbe4413800c05eb8dd4656a27ddabed9fe56358e5cf7", + "comparison_json_sha256": "ad00680aa610a516c8ea83473ad6329a00aa67d69ff983c2be7ce0673a535bd2", + "closed_execution_record": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\static-only\\run-20261018-01\\models\\beam\\integrated-cmake\\execution.json", + "closed_execution_record_sha256": "703ce7ed8823a0655d62f92f0d9c3958cd48320d3ec6e6468f46e276e3c73b04" + } + ], + "parity_exact_field_equality": true, + "parity_json_sha256": "c0d9219b7f41ae3f6f1447660f4b98ac26dd02c37a0a83a605e0a43b7420c226" + }, + { + "case": "shell", + "original_input": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\reference\\shell\\shell.inp", + "original_input_sha256": "4005851e1ab22fd3a16ac17a8d5da3e051233f69f37419079f3553ad134ecfcf", + "same_scratch_path_and_bytes": true, + "step_frame": "Step-1/frame0", + "policy": "승인 공통 near-zero=1%, relative=5%, RMS=1%; exact-zero 유지. shell UR warning-only, shellNL RF/RM review-only; 내부평형 별도 기존 gate.", + "families": [ + { + "identity": "displacement-translation", + "passed": true, + "blocking": true, + "row_count": 147, + "components": [ + "U1", + "U2", + "U3" + ] + }, + { + "identity": "displacement-rotation", + "passed": true, + "blocking": false, + "row_count": 147, + "components": [ + "UR1", + "UR2", + "UR3" + ] + } + ], + "source_identities": null, + "original_artifacts": [ + { + "path": "reference/shell/shell displacements.csv", + "original_sha256": "c81d94e0b4a849f87aa0f79c83a79b94d5661ac79e44ed826919ab432c87746b", + "worker_sha256": "c81d94e0b4a849f87aa0f79c83a79b94d5661ac79e44ed826919ab432c87746b" + }, + { + "path": "reference/shell/shell reactions.csv", + "original_sha256": "0e34eec27e700c3c0c744c1dafd8a3b95efef34b8616fe96665876586fe82d41", + "worker_sha256": "0e34eec27e700c3c0c744c1dafd8a3b95efef34b8616fe96665876586fe82d41" + }, + { + "path": "reference/shell/shell stresses.csv", + "original_sha256": "2b75a5b0deb045a283c9bb7e9b1153b79f7537ff487214bf4a23316b59b660a7", + "worker_sha256": "2b75a5b0deb045a283c9bb7e9b1153b79f7537ff487214bf4a23316b59b660a7" + }, + { + "path": "reference/shell/shell.inp", + "original_sha256": "4005851e1ab22fd3a16ac17a8d5da3e051233f69f37419079f3553ad134ecfcf", + "worker_sha256": "4005851e1ab22fd3a16ac17a8d5da3e051233f69f37419079f3553ad134ecfcf" + } + ], + "internal_equilibrium": null, + "variants": [ + { + "variant": "refactor-baseline", + "native_exit": 0, + "comparison_exit": 0, + "validation_exit": 0, + "result_sha256": "5b65511a17d5c95165c71f06999d1dfcd50b0b100a5d33e79f46bad61efbb094", + "comparison_json_sha256": "8c3dcd1805e3a9c899bb05d4a93292f158c5c7b04931a86d3a610db074f0e0a7", + "closed_execution_record": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\static-only\\run-20261018-01\\models\\shell\\refactor-baseline\\execution.json", + "closed_execution_record_sha256": "ef780ccb8093fc27a809099a2e02b2e9466beb0fa09dbd6a1a193d7a64be248e" + }, + { + "variant": "integrated-native", + "native_exit": 0, + "comparison_exit": 0, + "validation_exit": 0, + "result_sha256": "f9bd051f14553ff09d931977563e8045beeacd6bddd3f07e2b7c265d4579d353", + "comparison_json_sha256": "8c3dcd1805e3a9c899bb05d4a93292f158c5c7b04931a86d3a610db074f0e0a7", + "closed_execution_record": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\static-only\\run-20261018-01\\models\\shell\\integrated-native\\execution.json", + "closed_execution_record_sha256": "dbd6d65b9a6925fee6829c918e8f8db22437325d701f1dd35a083071ff5933ae" + }, + { + "variant": "integrated-cmake", + "native_exit": 0, + "comparison_exit": 0, + "validation_exit": 0, + "result_sha256": "61d4076756aff52bd11d3f1634dfaad15897082f623f4cacea5a3fec55066511", + "comparison_json_sha256": "8c3dcd1805e3a9c899bb05d4a93292f158c5c7b04931a86d3a610db074f0e0a7", + "closed_execution_record": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\static-only\\run-20261018-01\\models\\shell\\integrated-cmake\\execution.json", + "closed_execution_record_sha256": "a7a8f35103feb265ce09542bcdefde7fda7e910fcc5ed2e50474947804515d99" + } + ], + "parity_exact_field_equality": true, + "parity_json_sha256": "6c9333ec2d260c94f77128a594017ac620772b0541c1f4f56000ae4a1c2c28c4" + }, + { + "case": "shellNL", + "original_input": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\reference\\shellNL\\shellNL.inp", + "original_input_sha256": "4bf3ecb0f7f1e8462c573e993dbc97ac5d920c91cf6f23ad4c6891d77ffbada2", + "same_scratch_path_and_bytes": true, + "step_frame": "Step-1/frame9/increment10/load factor1", + "policy": "승인 공통 near-zero=1%, relative=5%, RMS=1%; exact-zero 유지. shell UR warning-only, shellNL RF/RM review-only; 내부평형 별도 기존 gate.", + "families": [ + { + "identity": "coarse.translation", + "passed": true, + "disposition": "blocking", + "rows": 147 + }, + { + "identity": "coarse.rotation", + "passed": true, + "disposition": "warning-only", + "rows": 147 + }, + { + "identity": "coarse.local_reaction_inplane_force", + "passed": false, + "disposition": "review-only", + "rows": 48 + }, + { + "identity": "coarse.local_reaction_transverse_force", + "passed": false, + "disposition": "review-only", + "rows": 24 + }, + { + "identity": "coarse.local_reaction_physical_moment", + "passed": false, + "disposition": "review-only", + "rows": 48 + } + ], + "source_identities": null, + "original_artifacts": [ + { + "path": "reference/shellNL/shellNL displacements.csv", + "original_sha256": "4e0f99ca9372b1adf7faf102f43bc0b887dc743fdeda378e4342d2cf8e0c0786", + "worker_sha256": "4e0f99ca9372b1adf7faf102f43bc0b887dc743fdeda378e4342d2cf8e0c0786" + }, + { + "path": "reference/shellNL/shellNL reactions.csv", + "original_sha256": "001cb1541a9e94424e5e650509d46bc8724970df4de47184d9db09c7938ab069", + "worker_sha256": "001cb1541a9e94424e5e650509d46bc8724970df4de47184d9db09c7938ab069" + }, + { + "path": "reference/shellNL/shellNL stresses.csv", + "original_sha256": "5500e5114b1c44887528e30cec054a1eb0f68be3f4b8ce81fa59fc74a881483f", + "worker_sha256": "5500e5114b1c44887528e30cec054a1eb0f68be3f4b8ce81fa59fc74a881483f" + }, + { + "path": "reference/shellNL/shellNL.inp", + "original_sha256": "4bf3ecb0f7f1e8462c573e993dbc97ac5d920c91cf6f23ad4c6891d77ffbada2", + "worker_sha256": "4bf3ecb0f7f1e8462c573e993dbc97ac5d920c91cf6f23ad4c6891d77ffbada2" + } + ], + "internal_equilibrium": [ + { + "identity": "coarse.global_force_balance", + "rows": 3, + "numerator": 8.250208361466102e-07, + "scale": 100000.0043929911, + "normalized": 8.250207999035198e-12, + "passed": true + }, + { + "identity": "coarse.global_moment_balance", + "rows": 3, + "numerator": 1.1424141050618153e-10, + "scale": 295586.7896222235, + "normalized": 3.864902442094535e-16, + "passed": true + }, + { + "identity": "coarse.accepted_free_force_residual", + "rows": 75, + "numerator": 0.03147525900497561, + "scale": 100000.00000106171, + "normalized": 3.1475259004641434e-07, + "passed": true + }, + { + "identity": "coarse.accepted_free_moment_residual", + "rows": 75, + "numerator": 3.5872449718902036e-07, + "scale": 0, + "normalized": null, + "passed": true + } + ], + "variants": [ + { + "variant": "refactor-baseline", + "native_exit": 0, + "comparison_exit": 0, + "validation_exit": 0, + "result_sha256": "473b21e57e86bf920603b9174e23bf08e54ccfcf3830048319b170b721a78ae8", + "comparison_json_sha256": "1849a26e3244c2a15c0301855081dfe218fa2d76d4b89e3171480a43457c3124", + "closed_execution_record": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\static-only\\run-20261018-01\\models\\shellNL\\refactor-baseline\\execution.json", + "closed_execution_record_sha256": "1e68a78c45907d6dadf07bc166115155bc625ee7db61416e8e2d58672c37e305" + }, + { + "variant": "integrated-native", + "native_exit": 0, + "comparison_exit": 0, + "validation_exit": 0, + "result_sha256": "110ab7ba28a8b42fa66a4b883185fd1371a29d3caafcba69e144218622c03380", + "comparison_json_sha256": "1849a26e3244c2a15c0301855081dfe218fa2d76d4b89e3171480a43457c3124", + "closed_execution_record": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\static-only\\run-20261018-01\\models\\shellNL\\integrated-native\\execution.json", + "closed_execution_record_sha256": "ded05fcef56b37440683c3258feb237b49c6e1d22b0e75c525b5d56481189e83" + }, + { + "variant": "integrated-cmake", + "native_exit": 0, + "comparison_exit": 0, + "validation_exit": 0, + "result_sha256": "733139c6c831dde9e3977b4b3a9da5bd279b7b428a32950e5b0d20f0c4ed93c7", + "comparison_json_sha256": "1849a26e3244c2a15c0301855081dfe218fa2d76d4b89e3171480a43457c3124", + "closed_execution_record": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\static-only\\run-20261018-01\\models\\shellNL\\integrated-cmake\\execution.json", + "closed_execution_record_sha256": "47a86f6f77a7a5819ea6a70c0aa5ced27f256abc1fd38efc5b7578d1ff2d3b2a" + } + ], + "parity_exact_field_equality": true, + "parity_json_sha256": "7ae0e493480d1da86bc883cafd289dd9665666ebd1d473dd27e7515afcf83699" + }, + { + "case": "hexa_linearstatic", + "original_input": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\reference\\hexa\\hexa_linearstatic.inp", + "original_input_sha256": "67183909c5dc962a4d4b65ffb81f7bd65b72e89a5d015c8369a8e0226347a647", + "same_scratch_path_and_bytes": true, + "step_frame": "Step-1/increment10", + "policy": "승인 공통 near-zero=1%, relative=5%, RMS=1%; exact-zero 유지. shell UR warning-only, shellNL RF/RM review-only; 내부평형 별도 기존 gate.", + "families": [ + { + "absolute_rms": 1.7343612573050297e-11, + "case": "hexa_linearstatic", + "coordinate_system": "global-cartesian", + "diagnostic_code": null, + "identity": "hexa_linearstatic:Step-1:increment-10:U-global", + "impact": "blocking", + "increment": 10, + "maximum_absolute_error": 6.096261212854004e-11, + "near_zero_band": 1.86131289e-05, + "passed": true, + "policy": { + "near_zero_ratio": 0.01, + "relative_rms_tolerance": 0.01, + "relative_tolerance": 0.05, + "zero_scale": "exact-zero" + }, + "quantity": "U", + "reference_scale": 0.00186131289, + "reference_sha256": "1ff49aea3ec601cfd796d6a2fb6a4f91be3fc3de9426cdf3744d981216d4bd5f", + "relative_rms": 9.31794577162698e-09, + "rms_passed": true, + "row_count": 1326, + "rows_passed": true, + "step": "Step-1", + "unit_dimensions": "length" + }, + { + "absolute_rms": 0.003753553196815386, + "case": "hexa_linearstatic", + "coordinate_system": "global-cartesian", + "diagnostic_code": null, + "identity": "hexa_linearstatic:Step-1:increment-10:RF-global", + "impact": "blocking", + "increment": 10, + "maximum_absolute_error": 0.014747577370144427, + "near_zero_band": 5134.97094, + "passed": true, + "policy": { + "near_zero_ratio": 0.01, + "relative_rms_tolerance": 0.01, + "relative_tolerance": 0.05, + "zero_scale": "exact-zero" + }, + "quantity": "RF", + "reference_scale": 513497.094, + "reference_sha256": "3e04e71ec075ffef098cf4870d77f9c400557fccb375369da8bf67cf67c1e36b", + "relative_rms": 7.309784691430768e-09, + "rms_passed": true, + "row_count": 51, + "rows_passed": true, + "step": "Step-1", + "unit_dimensions": "force" + }, + { + "absolute_rms": 0.01175146192247426, + "case": "hexa_linearstatic", + "coordinate_system": "global-cartesian", + "diagnostic_code": null, + "identity": "hexa_linearstatic:Step-1:increment-10:S-global", + "impact": "blocking", + "increment": 10, + "maximum_absolute_error": 0.12245092866942286, + "near_zero_band": 34301.45, + "passed": true, + "policy": { + "near_zero_ratio": 0.01, + "relative_rms_tolerance": 0.01, + "relative_tolerance": 0.05, + "zero_scale": "exact-zero" + }, + "quantity": "S", + "reference_scale": 3430145.0, + "reference_sha256": "8840a502b9d28a91e5685349301a56fed37d2ac62327b71304716b714db577e8", + "relative_rms": 3.4259373648852337e-09, + "rms_passed": true, + "row_count": 14400, + "rows_passed": true, + "step": "Step-1", + "unit_dimensions": "force/length^2" + } + ], + "source_identities": { + "RF": { + "path": "C:/git/FESADev/.dryforge/worktrees/worker/reference/hexa/hexa_linearstatic_RF.csv", + "sha256": "3e04e71ec075ffef098cf4870d77f9c400557fccb375369da8bf67cf67c1e36b" + }, + "S": { + "path": "C:/git/FESADev/.dryforge/worktrees/worker/reference/hexa/hexa_linearstatic_S.csv", + "sha256": "8840a502b9d28a91e5685349301a56fed37d2ac62327b71304716b714db577e8" + }, + "U": { + "path": "C:/git/FESADev/.dryforge/worktrees/worker/reference/hexa/hexa_linearstatic_U.csv", + "sha256": "1ff49aea3ec601cfd796d6a2fb6a4f91be3fc3de9426cdf3744d981216d4bd5f" + }, + "input": { + "path": "C:/git/FESADev/.dryforge/worktrees/worker/.build/merge-verification/t5-20261018-01/before-prune/static-only/run-20261018-01/models/hexa_linearstatic/hexa_linearstatic.inp", + "sha256": "67183909c5dc962a4d4b65ffb81f7bd65b72e89a5d015c8369a8e0226347a647" + }, + "results": { + "path": "C:/git/FESADev/.dryforge/worktrees/worker/.build/merge-verification/t5-20261018-01/before-prune/static-only/run-20261018-01/models/hexa_linearstatic/refactor-baseline/hexa_linearstatic_results.h5", + "sha256": "4b873c562a4235fccaa4a0223d4127f9bb831dc3cb0030f4e95b636f330f3191" + } + }, + "original_artifacts": [ + { + "path": "reference/hexa/hexa_linearstatic.inp", + "original_sha256": "67183909c5dc962a4d4b65ffb81f7bd65b72e89a5d015c8369a8e0226347a647", + "worker_sha256": "67183909c5dc962a4d4b65ffb81f7bd65b72e89a5d015c8369a8e0226347a647" + }, + { + "path": "reference/hexa/hexa_linearstatic_RF.csv", + "original_sha256": "3e04e71ec075ffef098cf4870d77f9c400557fccb375369da8bf67cf67c1e36b", + "worker_sha256": "3e04e71ec075ffef098cf4870d77f9c400557fccb375369da8bf67cf67c1e36b" + }, + { + "path": "reference/hexa/hexa_linearstatic_S.csv", + "original_sha256": "8840a502b9d28a91e5685349301a56fed37d2ac62327b71304716b714db577e8", + "worker_sha256": "8840a502b9d28a91e5685349301a56fed37d2ac62327b71304716b714db577e8" + }, + { + "path": "reference/hexa/hexa_linearstatic_U.csv", + "original_sha256": "1ff49aea3ec601cfd796d6a2fb6a4f91be3fc3de9426cdf3744d981216d4bd5f", + "worker_sha256": "1ff49aea3ec601cfd796d6a2fb6a4f91be3fc3de9426cdf3744d981216d4bd5f" + } + ], + "internal_equilibrium": null, + "variants": [ + { + "variant": "refactor-baseline", + "native_exit": 0, + "comparison_exit": 0, + "validation_exit": 0, + "result_sha256": "4b873c562a4235fccaa4a0223d4127f9bb831dc3cb0030f4e95b636f330f3191", + "comparison_json_sha256": "b6fe5cef31878764d446b7115b6c9719c2230f3b693f8c0337c39b3acf3f8b57", + "closed_execution_record": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\static-only\\run-20261018-01\\models\\hexa_linearstatic\\refactor-baseline\\execution.json", + "closed_execution_record_sha256": "fa8d379fc09382d45a20be01c6819a653e918cde9d4185df388df85e4ba32288" + }, + { + "variant": "integrated-native", + "native_exit": 0, + "comparison_exit": 0, + "validation_exit": 0, + "result_sha256": "a15569ea49fa4471a44e234dd8bea4746ff23555199d7c3b190ee98ac88d6862", + "comparison_json_sha256": "b831efdc22de87c9e9291ec072e962825916ec6c3b9972bf0c016171007e15d6", + "closed_execution_record": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\static-only\\run-20261018-01\\models\\hexa_linearstatic\\integrated-native\\execution.json", + "closed_execution_record_sha256": "be49e9d99f045fb41d730897430c18da8ed0c06541fa866691aea1637e4c8ce4" + }, + { + "variant": "integrated-cmake", + "native_exit": 0, + "comparison_exit": 0, + "validation_exit": 0, + "result_sha256": "d7403f7eb7cffc114d0160239139a07b59416beb1e438c4dea5c663fe2f4a508", + "comparison_json_sha256": "663cdb6b90d3424152a667ea0d4234e1e0134437cb1b3b5c1fde2c952ba60ab5", + "closed_execution_record": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\static-only\\run-20261018-01\\models\\hexa_linearstatic\\integrated-cmake\\execution.json", + "closed_execution_record_sha256": "d91ec0e13064081fbb90f9a91cea606cc3ec1cfd4518a320761f43245391d045" + } + ], + "parity_exact_field_equality": true, + "parity_json_sha256": "1712feb9f4e805464a1e3ccbff14506db5dc4fd1a41a929af1e71507be7b848e" + }, + { + "case": "hexa_nonlinearstatic", + "original_input": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\reference\\hexa\\hexa_nonlinearstatic.inp", + "original_input_sha256": "7858254025b96c6bfe3fb6498605ecf9c473425c2bc3593f5fbdc6902fd7c6cb", + "same_scratch_path_and_bytes": true, + "step_frame": "Step-1/increment10", + "policy": "승인 공통 near-zero=1%, relative=5%, RMS=1%; exact-zero 유지. shell UR warning-only, shellNL RF/RM review-only; 내부평형 별도 기존 gate.", + "families": [ + { + "absolute_rms": 4.0384401297166145e-10, + "case": "hexa_nonlinearstatic", + "coordinate_system": "global-cartesian", + "diagnostic_code": null, + "identity": "hexa_nonlinearstatic:Step-1:increment-10:U-global", + "impact": "blocking", + "increment": 10, + "maximum_absolute_error": 9.832466004058268e-10, + "near_zero_band": 1.86110672e-05, + "passed": true, + "policy": { + "near_zero_ratio": 0.01, + "relative_rms_tolerance": 0.01, + "relative_tolerance": 0.05, + "zero_scale": "exact-zero" + }, + "quantity": "U", + "reference_scale": 0.00186110672, + "reference_sha256": "bd6c2fe2b2bb2ffb0bc2ea52f67513c3967a396b5707bbebc9533fde7be25ac6", + "relative_rms": 2.1699132490997694e-07, + "rms_passed": true, + "row_count": 1326, + "rows_passed": true, + "step": "Step-1", + "unit_dimensions": "length" + }, + { + "absolute_rms": 3.45450971453263, + "case": "hexa_nonlinearstatic", + "coordinate_system": "global-cartesian", + "diagnostic_code": null, + "identity": "hexa_nonlinearstatic:Step-1:increment-10:RF-global", + "impact": "blocking", + "increment": 10, + "maximum_absolute_error": 12.82618010538863, + "near_zero_band": 5134.45594, + "passed": true, + "policy": { + "near_zero_ratio": 0.01, + "relative_rms_tolerance": 0.01, + "relative_tolerance": 0.05, + "zero_scale": "exact-zero" + }, + "quantity": "RF", + "reference_scale": 513445.594, + "reference_sha256": "3ba67a4fb75b2ce3edee13d35b2ea66ac7d52fc16e612c086ed1122a834fee7b", + "relative_rms": 6.728093014919571e-06, + "rms_passed": true, + "row_count": 51, + "rows_passed": true, + "step": "Step-1", + "unit_dimensions": "force" + }, + { + "absolute_rms": 32.03072457600377, + "case": "hexa_nonlinearstatic", + "coordinate_system": "global-cartesian", + "diagnostic_code": null, + "identity": "hexa_nonlinearstatic:Step-1:increment-10:S-global", + "impact": "blocking", + "increment": 10, + "maximum_absolute_error": 93.3499531284906, + "near_zero_band": 34298.1775, + "passed": true, + "policy": { + "near_zero_ratio": 0.01, + "relative_rms_tolerance": 0.01, + "relative_tolerance": 0.05, + "zero_scale": "exact-zero" + }, + "quantity": "S", + "reference_scale": 3429817.75, + "reference_sha256": "a8866a730f0d65b1e3921d504d255b72158b4a2b9ee30fc691712d94982b07ba", + "relative_rms": 9.338899880614289e-06, + "rms_passed": true, + "row_count": 14400, + "rows_passed": true, + "step": "Step-1", + "unit_dimensions": "force/length^2" + } + ], + "source_identities": { + "RF": { + "path": "C:/git/FESADev/.dryforge/worktrees/worker/reference/hexa/hexa_nonlinearstatic_RF.csv", + "sha256": "3ba67a4fb75b2ce3edee13d35b2ea66ac7d52fc16e612c086ed1122a834fee7b" + }, + "S": { + "path": "C:/git/FESADev/.dryforge/worktrees/worker/reference/hexa/hexa_nonlinearstatic_S.csv", + "sha256": "a8866a730f0d65b1e3921d504d255b72158b4a2b9ee30fc691712d94982b07ba" + }, + "U": { + "path": "C:/git/FESADev/.dryforge/worktrees/worker/reference/hexa/hexa_nonlinearstatic_U.csv", + "sha256": "bd6c2fe2b2bb2ffb0bc2ea52f67513c3967a396b5707bbebc9533fde7be25ac6" + }, + "input": { + "path": "C:/git/FESADev/.dryforge/worktrees/worker/.build/merge-verification/t5-20261018-01/before-prune/static-only/run-20261018-01/models/hexa_nonlinearstatic/hexa_nonlinearstatic.inp", + "sha256": "7858254025b96c6bfe3fb6498605ecf9c473425c2bc3593f5fbdc6902fd7c6cb" + }, + "results": { + "path": "C:/git/FESADev/.dryforge/worktrees/worker/.build/merge-verification/t5-20261018-01/before-prune/static-only/run-20261018-01/models/hexa_nonlinearstatic/refactor-baseline/hexa_nonlinearstatic_results.h5", + "sha256": "4ba47cc3faafba3d965120cac84ce1f97e612e5378d6ad1ece3a3ce71134a33e" + } + }, + "original_artifacts": [ + { + "path": "reference/hexa/hexa_nonlinearstatic.inp", + "original_sha256": "7858254025b96c6bfe3fb6498605ecf9c473425c2bc3593f5fbdc6902fd7c6cb", + "worker_sha256": "7858254025b96c6bfe3fb6498605ecf9c473425c2bc3593f5fbdc6902fd7c6cb" + }, + { + "path": "reference/hexa/hexa_nonlinearstatic_RF.csv", + "original_sha256": "3ba67a4fb75b2ce3edee13d35b2ea66ac7d52fc16e612c086ed1122a834fee7b", + "worker_sha256": "3ba67a4fb75b2ce3edee13d35b2ea66ac7d52fc16e612c086ed1122a834fee7b" + }, + { + "path": "reference/hexa/hexa_nonlinearstatic_S.csv", + "original_sha256": "a8866a730f0d65b1e3921d504d255b72158b4a2b9ee30fc691712d94982b07ba", + "worker_sha256": "a8866a730f0d65b1e3921d504d255b72158b4a2b9ee30fc691712d94982b07ba" + }, + { + "path": "reference/hexa/hexa_nonlinearstatic_U.csv", + "original_sha256": "bd6c2fe2b2bb2ffb0bc2ea52f67513c3967a396b5707bbebc9533fde7be25ac6", + "worker_sha256": "bd6c2fe2b2bb2ffb0bc2ea52f67513c3967a396b5707bbebc9533fde7be25ac6" + } + ], + "internal_equilibrium": null, + "variants": [ + { + "variant": "refactor-baseline", + "native_exit": 0, + "comparison_exit": 0, + "validation_exit": 0, + "result_sha256": "4ba47cc3faafba3d965120cac84ce1f97e612e5378d6ad1ece3a3ce71134a33e", + "comparison_json_sha256": "b69456e5379fc8ad880b571de562975ea0498a30c2aa2c3e40e48665ee56a87c", + "closed_execution_record": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\static-only\\run-20261018-01\\models\\hexa_nonlinearstatic\\refactor-baseline\\execution.json", + "closed_execution_record_sha256": "14f8a9b88c694638bd78a87caa9fe2843f356fb93397f68b088bf582a0cbd617" + }, + { + "variant": "integrated-native", + "native_exit": 0, + "comparison_exit": 0, + "validation_exit": 0, + "result_sha256": "1f1e38f17c556e8b6665a148df54f664d5ba32ccce06fc994743117376a2be7e", + "comparison_json_sha256": "6882a517c8ff33887faa1a561dbf6d9da3d0e19783525ffbccd3349073a7e3fc", + "closed_execution_record": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\static-only\\run-20261018-01\\models\\hexa_nonlinearstatic\\integrated-native\\execution.json", + "closed_execution_record_sha256": "05bdc431fcd010514d2e39aa47267ed1f953dada1363ea7d3e31cedd5cacf47a" + }, + { + "variant": "integrated-cmake", + "native_exit": 0, + "comparison_exit": 0, + "validation_exit": 0, + "result_sha256": "7804976c4689ddfd1ca4d8771bd7f67769012a9479cdf3348d2c1f86b00558cb", + "comparison_json_sha256": "5fd36891de72e2dcee58a2211aa3f96a02972f453f5ab28bd0311641380eef1a", + "closed_execution_record": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\static-only\\run-20261018-01\\models\\hexa_nonlinearstatic\\integrated-cmake\\execution.json", + "closed_execution_record_sha256": "06fb959abc86c50986bf6a0159cca149f8a6cf5c096fecc0eb908d052550b387" + } + ], + "parity_exact_field_equality": true, + "parity_json_sha256": "541545aab76de46ce701e608f0299ba650bd263646ac55b12247cfc7266d7129" + } + ], + "hdf_schema_identity_inventory": { + "path": "C:\\git\\FESADev\\.dryforge\\worktrees\\worker\\.build\\merge-verification\\t5-20261018-01\\before-prune\\static-only\\run-20261018-01\\hdf-schema-identity-inventory.json", + "sha256": "72b672a1cfcde5873552a2a9758981ae0f262f3a944cd71219ac5d7d83f2f3bd" + } } }