From ca5997fffa2bbc63ee79f99dbc87de5c26751a19 Mon Sep 17 00:00:00 2001 From: "KOKO\\Mimi" Date: Sun, 18 Oct 2026 12:07:05 +0900 Subject: [PATCH] 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." + } } }