merge: retain tests with recorded cleanup evidence
This commit is contained in:
@@ -179,3 +179,17 @@ integration35개 전체를 다시 실행해 identity35·exit0·failure/error/ski
|
||||
기능의 물리 승인으로 확대하지 않는다. 사용자 수정 범위의 정리 전 정적 gate는 충족했으므로
|
||||
다음 단계로 진행할 수 있다. 비정적333개·누락 정식 fine/_02/pressure 비교·열해석 새 reference
|
||||
부재와 기존 NT11 diagnostic 제한은 미완료로 유지한다. 테스트 정리·최종 병합은 아직 수행하지 않았다.
|
||||
|
||||
### T6 정적 범위 검사 정리 — 삭제 0개
|
||||
|
||||
[최종 정리 검토](test-cleanup-review.md)에 따라 검사·helper를 모두 보존했다.
|
||||
실제 본문에서 public/private owner, 실패 뒤 출력·factor 보존, TLS·FP flags·비트 및
|
||||
독립 frozen oracle의 경계가 달라 동등 대체를 입증하지 못했다. 폐기 구조만 검사한다고
|
||||
확정할 근거도 없었다. 비정적333개와 자료 없는 fine/_02/pressure 관련 검사는 보존한다.
|
||||
이관표2,876행의 원래12열은 그대로 두고 최종 판정·근거 연결3열만 추가했다.
|
||||
|
||||
검사 source·helper·양쪽 등록 변경이0이므로 문서 전용 정적 검토만 수행했다.
|
||||
T6 raw `.build/merge-verification/t6-20261018/`는 원셀 보존, 현재964개 body와 선택631개,
|
||||
Native/CMake 등록·제품274개·T5 실행물/hash 보존을 확인한다. T5 당시 실행 결과를
|
||||
새 실행으로 보고하지 않으며 전체964개 PASS도 주장하지 않는다. 최종 정적 검증과
|
||||
병합 완료 판정은 T7에 남긴다.
|
||||
|
||||
@@ -34449,5 +34449,71 @@
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"t6_test_cleanup": {
|
||||
"status": "DONE_WITH_CONCERNS",
|
||||
"baseline": "26939140dae4fc83746d05d4fcf48085462ef83b",
|
||||
"scope": "R6 applied only to approved static/common tests; nonstatic tests preserved",
|
||||
"deleted_tests": 0,
|
||||
"deleted_helpers": 0,
|
||||
"replacements": [],
|
||||
"reason": "Equivalent behavior/failure/numerical coverage or obsolete-only internal structure not sufficiently established; conservative retention required by R6",
|
||||
"ledger": {
|
||||
"rows": 2876,
|
||||
"original_columns_preserved": 12,
|
||||
"appended_columns": [
|
||||
"cleanup_decision",
|
||||
"cleanup_reason_id",
|
||||
"cleanup_evidence"
|
||||
],
|
||||
"reason_counts_are_history_rows_not_unique_tests": {
|
||||
"R-SUPPORT": 785,
|
||||
"R-DEFER": 631,
|
||||
"R-STATIC": 923,
|
||||
"R-COMPARISON": 297,
|
||||
"R-POLICY": 6,
|
||||
"R-NUMERIC": 224,
|
||||
"R-ORACLE": 2,
|
||||
"R-CAPABILITY": 8
|
||||
}
|
||||
},
|
||||
"review": {
|
||||
"path": "docs/cpp-object-oriented-modular-refactoring/test-cleanup-review.md",
|
||||
"sha256": "568146a93285181ad0b091458589255e50d708beac8e9d7209fe306aa4f35da9"
|
||||
},
|
||||
"source_or_registration_changes": 0,
|
||||
"discovery_count_preserved": 964,
|
||||
"unique_static_common_preserved": 631,
|
||||
"deferred_nonstatic_preserved": 333,
|
||||
"registration_sources": {
|
||||
"fesa_unit_tests": 90,
|
||||
"fesa_integration_tests": 11,
|
||||
"fesa_reference_tests": 17
|
||||
},
|
||||
"products274_refactor_bytes_exact": true,
|
||||
"source_test_build_execution": "not run: documentation/table only, per AGENTS; T5 execution artifacts inspected and hashes preserved",
|
||||
"verification": [
|
||||
{
|
||||
"command": "python .build/merge-verification/t6-20261018/audit.py",
|
||||
"exit": 0,
|
||||
"path": ".build/merge-verification/t6-20261018/audit.json",
|
||||
"sha256": "3bebab66024a4804cca618c918c295637c1fc4cb6f8e5ec6f2bf02cd3ad1d2b3"
|
||||
},
|
||||
{
|
||||
"command": "python .build/merge-verification/t6-20261018/finalize.py",
|
||||
"exit": 0,
|
||||
"path": ".build/merge-verification/t6-20261018/t5-xml-static-check.json",
|
||||
"sha256": "e913ee695a972ecaf4b600548a46e969d43d3f748e24dde6008b5c42ff010053"
|
||||
}
|
||||
],
|
||||
"raw": ".build/merge-verification/t6-20261018",
|
||||
"historical_t1_t2_t3_t5_fields_unchanged": true,
|
||||
"remaining_limits": [
|
||||
"333 deferred nonstatic identities are not validated by this cleanup",
|
||||
"missing fine/_02/pressure canonical data; _02 comparator connection absent",
|
||||
"ShellNL RF/RM false/review-only; stress mapping undecided",
|
||||
"thermal new reference missing; NT11 diagnostic limit retained",
|
||||
"T7 final static verification and final integration remain separate"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,104 @@
|
||||
# T6 검사 정리 판정 — 승인된 정적 범위
|
||||
|
||||
삭제는 **0개**다. 검사 본문·helper·CMake/MSVC 등록을 변경하지 않았다.
|
||||
같은 행동·실패 경계·수치 조건의 동등 대체 또는 폐기된 내부 구조만 검사한다는 근거가
|
||||
충분한 후보를 찾지 못했다. 모든 검사가 서로 독립적이라고 증명했다는 뜻은 아니다.
|
||||
판정이 불충분한 검사를 보존한다는 R6 계약을 적용했다.
|
||||
|
||||
[이관표](test-migration.tsv)의 기존 2,876행·12열·identity·assertion 셀은 보존하고
|
||||
`cleanup_decision`, `cleanup_reason_id`, `cleanup_evidence` 3열만 덧붙였다.
|
||||
Dev/Refactor의 같은 최종 검사로 연결되는 두 행은 출처 이력이며 실행 중복이 아니다.
|
||||
삭제가 없으므로 대체 identity도 없다. 아래 identity는 **대체 지정이 아닌 비교 검토 대상**이다.
|
||||
`disposition`, `final_sha256` 등 옛 셀과 T3 manifest는 당시 이력으로 그대로 둔다.
|
||||
|
||||
## R-DEFER
|
||||
|
||||
HHT·dynamic·eigen/frequency·transient thermal 실제 수치 검증 333개를 유예 상태로
|
||||
보존한다. 선택 밖이라는 이유로 삭제하지 않는다. 같은 파일의 공통/helper 구간도 보존한다.
|
||||
전체 body hash의 유일한 반복 묶음은
|
||||
`FixedStations/ThermalSlab.ActualMeshesMatchCertifiedP2AndSeparateFourierError/0`부터
|
||||
`/11`까지다. 같은 `TEST_P` 본문을 서로 다른 parameter로 실행하는 12개 identity이고
|
||||
비정적 범위이므로 중복 삭제 후보로 채택하지 않았다.
|
||||
|
||||
## R-POLICY
|
||||
|
||||
`tests/test_cpp_policy_contract.py`의 두 검사를 유지한다.
|
||||
`test_p_style_001_cpp_style_and_doxygen_tooling_contract`는 clang 형식·명명 규약,
|
||||
Doxyfile의 입력/제외/경고와 optional `fesa_docs` 계약을 검사한다.
|
||||
`test_p_style_002_msvc_targets_enable_standard_exception_unwinding`는 CMake의
|
||||
solver/CLI `/EHsc`, 직접 MSVC의 shared props `Sync`, 다섯 프로젝트의 import와
|
||||
override를 검사한다. Refactor에 파일이 없다는 사실은 폐기 근거가 아니다.
|
||||
|
||||
## R-ORACLE
|
||||
|
||||
`tests/unit/math/high_low_arithmetic_original.h`를 유지한다. include consumer는
|
||||
`high_low_arithmetic_test.cpp`와 `hex8_high_low_test.cpp` 두 개다.
|
||||
`HighLowArithmetic.OptimizedArithmeticMatchesFrozenOriginalBits`는 원본 연산으로 raw
|
||||
pair를 정규화한 뒤 high/low 비트를 비교한다. 제품 predicate를 oracle로 쓰지 않는다.
|
||||
`BitExponentMatchesFrozenOracleAcrossEveryExponent`는 normal exponent·trailing bit와
|
||||
subnormal 경계를 검사한다. Hex8의 `FrozenMaterialPacket`·`FrozenGeometryPacket`도
|
||||
이 helper의 원본 연산 순서로 독립 expected를 만든다. 제품 helper로 치환하면 독립성이 사라진다.
|
||||
|
||||
## R-NUMERIC
|
||||
|
||||
다음은 이름/행동이 비슷해도 전체 계약의 동등 대체가 입증되지 않은 실제 본문 비교다.
|
||||
|
||||
| 비교 대상 | 유지 근거 |
|
||||
| --- | --- |
|
||||
| `DenseMath.RowMajorMatrixMatchesKnownGemvGemm`, `MatrixProductKeepsShapeAndFiniteValidationOrder`와 private `DenseBlasInternal.RawProductsPreserveDestinationOnNonfiniteInput` | Public Matrix는 storage copy/move·차원 예외와 shape-before-finite 진단 순서를 소유한다. Private raw adapter는 caller 출력 buffer 보존을 검사한다. 공개 wrapper 성공만으로 private 실패 경계가 검증되지 않는다. |
|
||||
| `DenseFactor.CholeskySolvesAndWhiteningRetainsScaleAndOrientation`와 `DenseBlasInternal.CholeskyAndInverseMatchKnownFactorsAndKeepFailedOutput` | 전자는 좌우·전치·직사각 RHS와 scaled whitening Gram을 검사한다. 후자는 identity RHS로 lower inverse의 명시적 `.5,-.25,.5` 값과 실패 뒤 기존 lower/inverse·factor 재사용을 검사한다. 일부 값의 중첩만으로 양쪽 전체 조건을 대체할 수 없다. |
|
||||
| `DenseFactor.OwnsSnapshotAndFailedCandidatesPreserveReusableFactor`, `EmptyAndInfinityConditionBoundaryAreExplicit` | 입력 변경 후 snapshot, shape/NaN/pivot 실패·overflow solve 후 재사용, 빈 좌우 RHS 및 `2^-32` 양측/포함 경계가 있다. 낡은 lower/inverse 명칭이 남아 있어도 본문은 현재 factor 계약을 검사한다. |
|
||||
| `MklPardisoSolver.SingleEquationScopeTransitionsBetweenRetainedSizes`와 `TangentSolver.SingleEquationScopeTransitionsBetweenRetainedSizes` | SPD `Factorize/Solve`와 비대칭 `FactorizeFresh/SolveCorrection` owner가 다르며 후자는 `{2,1,0,3}` 행렬을 쓴다. `ReusesRhsButFreshValuesAndFailureCannotReuseStaleState`는 fresh 실패 후 `solver-not-factorized`와 correction 보존도 검사한다. TLS 공통화만으로 각 owner 호출 경계가 없어지지 않는다. |
|
||||
| `HighLowArithmetic.PacketDispatchRetainsComponentsAndInstructionGates`와 `Hex8HighLow.PacketVectorGuardsPreserveScalarFlagsAndBits`, `PacketDoesNotClearPriorMaskedStickyFlags`, `ConcurrentFirstLinearTrialsAcrossCopiesAndMoveKeepBits` | dispatch ISA/OS·FTZ 복원과 scalar/packet 선택, SIMD lane의 RN64/status·FP sticky flag·비트, copy/move/concurrent cache 결정론은 다른 경계다. 단순 scalar 성공/값 비교가 flags와 결정론을 대체하지 않는다. |
|
||||
|
||||
이 범주의 나머지 행도 본래 assertion/oracle와 identity를 유지한다. 전체 쌍에 대한
|
||||
의미적 동등성을 주장하지 않으며, 추가 증명 없이 시험을 합치거나 helper를 제거하지 않았다.
|
||||
|
||||
## R-CAPABILITY
|
||||
|
||||
`tests/unit/elements/element_capabilities_test.cpp`는 adapter 경계를 소유한다.
|
||||
`ShellTrialPreservesCompleteDirectionalResponseAndFailure` 본문은 kernel과 capability의
|
||||
force/tangent/recovery·drilling 고차 directional 응답을 비트로 비교하고 direction 입력을
|
||||
보존한다. 잘못된 trial의 structured status와 이후 정상 재사용까지 비교한다.
|
||||
`BoundViewsSurviveOwnerVectorMovesAndRejectOtherFamilies`는 borrowed view 수명·다른 family
|
||||
거부를 검사한다. Kernel 수식 검사만으로 adapter 전달·소유 경계가 검증되지 않는다.
|
||||
Inertia/thermal 전용 identity는 R-DEFER로 분류하며 삭제하지 않았다.
|
||||
|
||||
## R-COMPARISON
|
||||
|
||||
C++ reference policy와 Python comparator는 같은 5%/1% 기준을 구현해도 별도 consumer다.
|
||||
`ReferenceTolerancePolicy.AppliesRelativeAndNearZeroThresholdsAtTheirInclusiveBoundaries`는
|
||||
C++ family row branch·threshold·relative applicability를 검사하고,
|
||||
`test_inclusive_row_and_rms_boundaries_are_independent`는 Python 결과의 독립 row/RMS
|
||||
경계를 검사한다. Python `test_report_is_deterministic_and_keeps_family_boundaries`는
|
||||
보고서 JSON과 U/RF/S family·reference hash를 검사한다. Header collision·identity-before-NaN·
|
||||
dtype/shape·없는 자료의 not-run도 solver 실제 실행과 다른 합성 계약이다.
|
||||
정식 fine/_02/pressure 자료 부재·`_02` comparator 연결 부재는 여전히 미완료이며
|
||||
유일 검사를 지우는 근거로 삼지 않았다. 비정적 이름의 합성 정책 검사를 실제 동해석 통과로 세지 않는다.
|
||||
|
||||
## R-STATIC
|
||||
|
||||
현재 정적·공통 선택 identity는 유지한다. T5의 source body/행/hash와 현재 본문을
|
||||
대조하고 이관표의 최종 macro identity에 연결했다. 완전한 대체의 행동·실패 경계·수치
|
||||
조건을 입증하지 못했으므로 기존 assertion과 독립 oracle를 보존한다. 실행 성공·장시간·
|
||||
과거 제외 여부를 삭제 근거로 사용하지 않았다.
|
||||
|
||||
## R-SUPPORT
|
||||
|
||||
파일 record·helper/oracle/fixture/include/static assertion·등록/정책 문서 행이다.
|
||||
같은 최종 파일을 가리키는 역사 행을 제거하지 않았다. 제품/검사를 삭제하지 않아 이번
|
||||
변경이 만든 orphan은 없다. 기존 helper의 모든 간접 참조를 의미적으로 입증했다고
|
||||
주장하지 않으며, 참조 없는 폐기 구조라고 확정할 근거가 부족한 항목도 보존한다.
|
||||
|
||||
## 정적 검증과 인계
|
||||
|
||||
T6 raw는 `.build/merge-verification/t6-20261018/`다. `audit.py`는 솔버/테스트를 실행하지
|
||||
않고 TSV 원셀·전체 최종 행 분류, T5 964개 body 및 631/333 선택, 양쪽 source 등록,
|
||||
제품274개 Refactor bytes, T5 실행물·기준자료·원본 manifest 보존을 검사한다.
|
||||
구체 명령·exit·hash·검사 수는 `audit.json`과 manifest의 `t6_test_cleanup`에 기록한다.
|
||||
검사 source·등록 변화가 0이므로 AGENTS의 문서 전용 규칙에 따라 build/test를 재실행하지 않았다.
|
||||
|
||||
T5 Native/CMake/CTest 각631·Python145, 정식 정적5모델의 기존 실행 근거를 그대로
|
||||
인계한다. T6 정적 검토를 새 solver 실행·전체964개 PASS로 보고하지 않는다.
|
||||
비정적333·fine/_02/pressure·thermal 새 reference와 NT11 제한, ShellNL RF/RM
|
||||
false/review-only와 stress mapping 미판정은 유지한다. T7 최종 정적 검증은 별도 작업이다.
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user