docs: record in-progress pre-prune verification evidence

This commit is contained in:
KOKO\Mimi
2026-10-18 12:07:05 +09:00
parent 0635cec53d
commit ca5997fffa
2 changed files with 752 additions and 3 deletions
@@ -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, 제품274개는 Refactor working bytes와 일치한다. 양쪽 실제 discovery는 unit849,
integration72, reference43으로 총964개이며 canonical identity가 일치한다. integration72, reference43으로 총964개이며 canonical identity가 일치한다.
최종 선별 실행은 CMake176개, Native15개, 합성 reference comparator28개, 최종 선별 실행은 CMake176개, Native15개, 합성 reference comparator28개,
@@ -72,6 +72,56 @@ Python145개가 failure/error/skip 없이 통과했다. 이는 전체964개 실
2026-10-18 사용자 지시로 `reference/temp`는 검증에 사용하지 않는다. 정식 경로에 없는 2026-10-18 사용자 지시로 `reference/temp`는 검증에 사용하지 않는다. 정식 경로에 없는
`shellNL-meshfine`, `shellNL-meshfine_02`, `shellNL-meshfine-pressure` 자료는 복사·복원하지 않는다. `shellNL-meshfine`, `shellNL-meshfine_02`, `shellNL-meshfine-pressure` 자료는 복사·복원하지 않는다.
해당 실제 비교는 자료 미확보로 미완료이며 테스트를 skip 처리하거나 통과로 바꾸지 않는다. 해당 실제 비교는 자료 미확보로 미완료이며 테스트를 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 원필드는 보존했다.
@@ -32644,5 +32644,704 @@
"removed_tests": [], "removed_tests": [],
"policy_failure_reproduction": "native ExceptionHandling을 메모리에서 false로 바꾸면 현재 policy 검사가 AssertionError로 거부하고 원문 설정에서는 통과한다. 파일은 수정하지 않는다.", "policy_failure_reproduction": "native ExceptionHandling을 메모리에서 false로 바꾸면 현재 policy 검사가 AssertionError로 거부하고 원문 설정에서는 통과한다. 파일은 수정하지 않는다.",
"policy_failure_evidence": ".build/merge-verification/t3-20261018-01/policy-mutation.log" "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."
}
} }
} }