eaa5cbeb21
Integrate Hex8 mass verification and fixed-null-basis shell dynamics with numerical and physics handoff evidence. Preserve interrupted reference and full-validation status; full integration validation is deferred until after performance optimization.
339 lines
23 KiB
Markdown
339 lines
23 KiB
Markdown
# Hex8 verification and original comparison evidence
|
||
|
||
2026-10-11 질량 정책 변경: [HEX8-ADR-010](ADR.md)에 따라 현재 고유치·HHT는 lumped mass를 사용한다. 아래 consistent 질량을 전제로 한 수식 후보·검토·PASS/FAIL은 해당 시점의 이력이다. 변경본 통과로 승계하지 않으며 현재 수식은 [formulation](formulation.md), 재검증 상태는 [PRD](PRD.md)의 현재 checklist를 따른다.
|
||
|
||
현행 필수 원본5개 비교는 모두 PASS이며 최저10 modal Value의 최대 상대차는
|
||
`0.0019610496%`다. [변경본 검증](lumped-mass-adoption.md)에 전체789개 자연 종료와
|
||
test-only 수정 후 재검사를 구분했다. 기존 consistent modal FAIL은 아래 이력이며
|
||
현재 불일치가 아니다. 당시 Shell C08b runtime 실패는 후속 승인된 초기 Newton
|
||
정책에서 해소됐다. 최신 검증과 사용자 중단, 전체 검증 유예의 범위는
|
||
[최종 인계](final-handoff.md)를 따르며 과거 PASS/FAIL을 최신 전체 통과로 승계하지 않는다.
|
||
|
||
This page records the build/test evidence, comparison-only Python tool and actual
|
||
original results. Historical pointwise results and the approved mean-volume change
|
||
are recorded separately. It does not replace the feature PRD, numerical controls or completion
|
||
checklist. The comparator reads official rounded Float64 quantities; it does not
|
||
recompute the internal high+low solver acceptance gates from those observables.
|
||
|
||
## Entry point and identities
|
||
|
||
`uv run --with h5py --with pytest python scripts/verification/compare_hex8.py`
|
||
requires `--case`, the actual scratch `--input`, official `--results`, and
|
||
`--report`. `--references` defaults to `reference/hexa`. The optional
|
||
`--execution-record` consumes a closed native CLI record; it never executes its
|
||
command. A supplied record must have native exit0, unchanged original/copy byte
|
||
identities, and the exact input and result hashes. Without that record the report
|
||
explicitly certifies file comparison only, not successful solver execution.
|
||
|
||
For example, after a real original run has naturally completed:
|
||
|
||
```powershell
|
||
uv run --with h5py --with pytest python scripts/verification/compare_hex8.py `
|
||
--case hexa_linearstatic --input <scratch>/hexa_linearstatic.inp `
|
||
--results <scratch>/hexa_linearstatic_results.h5 `
|
||
--execution-record <scratch>/native.json --report <evidence>/comparison.json
|
||
```
|
||
|
||
The report path may not overwrite an input, reference, execution record or result.
|
||
Authoritative repository originals remain protected even with alternate copied
|
||
references; existing symlink/junction and hardlink aliases are also checked.
|
||
Exit0 means the declared comparison passes; exit1 means a numerical family fails;
|
||
exit2 means an identity/schema/finite/precondition error or missing modal reference.
|
||
The tool is not a solver launcher, result generator, reference repair or release
|
||
readiness check.
|
||
|
||
The fixed source inventory is the [reference-model](reference-model.md) inventory:
|
||
442 nodes, 300 C3D8 elements and 14 frozen original files, including the supplied modal TXT. Input and CSV/TXT raw SHA256
|
||
must match the documented Windows working-tree bytes. The HDF5 metadata must
|
||
identify the actual lexically normalized absolute scratch path and that file's FNV1a64 content
|
||
identity; a different path with identical bytes is not silently accepted.
|
||
|
||
Complete CSV identities are checked before any physical values are converted.
|
||
Complete required Solid model/frame/physical schemas, UTF-8 attributes and explicit
|
||
LE F64/U64/U8 widths are then checked. Result arrays join the source node or
|
||
source element/point labels through their internal ID maps; CSV row order is not
|
||
an identity. Physical values, including nonprojected RF rows and unused exported
|
||
CSV derived quantities, must be finite before tolerance evaluation.
|
||
|
||
Static reference increment10 maps to the completed load-factor1 frame, independent
|
||
of its HDF5 storage frame index. RF validates all442 source rows before projecting
|
||
the actual51 constrained scalar components. It never compares free RF with free
|
||
residual. Stress compares all300×8×6 unaveraged global Cauchy components. Fixed
|
||
IntPt1–8 conventions are checked without nearest-coordinate remapping. Point
|
||
coordinates are auxiliary: CSV coordinate errors use the approved
|
||
`16*float32-eps*sum(abs(Na*Xa_axis))` source-resolution budget; the scalar stress
|
||
policy is unchanged.
|
||
|
||
Dynamic comparisons require exactly101 accepted frames. Integer increment0–100
|
||
is matched first, source decimal time must equal n/10, and each stored time must
|
||
be binary64 `n*0.1`. Each frame's1326 U scalars form a separate blocking family.
|
||
There is no interpolation, nearest-time matching, scale sharing between frames,
|
||
rotation family or acceleration/energy reference claim.
|
||
|
||
## Common numerical policy
|
||
|
||
Every static case has independent U-global, constrained RF-global and S-global
|
||
blocking families. Every dynamic frame has its own U-global blocking family.
|
||
For each family, only reference values define S=max(abs(reference)) and B=.01S.
|
||
Rows with abs(reference)<=B require absolute error<=B; other rows require relative
|
||
error<=.05. All-row RMS/S must also be<=.01. Boundaries are inclusive, and S=0
|
||
requires every actual value to be exactly0. No absolute floor, denominator clamp,
|
||
row deletion or cancellation of signed errors is applied. Reports preserve each
|
||
scalar identity/value/error/branch/pass and family scale/band/max-absolute-error,
|
||
absolute/relative RMS, source SHA and policy.
|
||
|
||
The supplied modal TXT uses `Mode n: Value = lambda Freq = f (cycles/time)`.
|
||
Value is compared directly with the HDF5 eigenvalue (`1/time^2`); Freq is finite
|
||
auxiliary data, without conversion or assumed SI time units. The TXT has no step
|
||
field: its fixed hexa_freq case binds to the sole Step-1 in the hash-checked input.
|
||
Modes1–10 are matched by ID, retaining repeated eigenvalues. Each mode is a
|
||
singleton using the same RMS1% policy. An absent TXT remains NOT RUN; malformed
|
||
or hash-mismatched data fail prechecks. The previous consistent-mass result failed
|
||
seven families, as recorded below; the current lumped-mass result passes all ten.
|
||
|
||
## 2026-10-11 제공된 고유치 원본의 최종 비교
|
||
|
||
사용자 제공 `reference/hexa/hexa_freq.txt`의 raw SHA256은
|
||
`3d2dacbee13cd2cc8d3f7c1a38210611a72de41d5e31d169e636bf40e00d4370`이다.
|
||
기존 `18b36c1` frozen CLI가 native0으로 자연 종료한 실제 공식 HDF5를 사용했다.
|
||
HDF5 SHA는 `f6203936883df7f27e86a20311726b7e59fefa117e5f9fa67f71bdf63ec2e4cb`이며
|
||
이번에 새 C++ solver 실행으로 표현하지 않는다. 실제 scratch 입력·결과 hash 및 closed
|
||
CLI record,442절점·300요소·51구속·10 modes, quantity/unit/finite precheck는 PASS다.
|
||
|
||
```powershell
|
||
uv run --with h5py python -B scripts/verification/compare_hex8.py `
|
||
--case hexa_freq `
|
||
--input .harness/hex8-evidence/mean-volume/original-cli/hexa_freq/hexa_freq.inp `
|
||
--results .harness/hex8-evidence/mean-volume/original-cli/hexa_freq/hexa_freq_results.h5 `
|
||
--execution-record .harness/hex8-evidence/mean-volume/original-cli/hexa_freq/native.json `
|
||
--report .harness/hex8-evidence/mean-volume/modal-final/comparison.json
|
||
```
|
||
|
||
실제 comparator native exit1, numerical FAIL이다. Mode별 singleton의 RMS/S는
|
||
`abs(lambda_fesa-lambda_reference)/abs(lambda_reference)`이며 공통1% 기준을 적용했다.
|
||
다음 표는 가독성을 위해 출력 자리만 줄였고 실제 판정에는 반올림 전 값을 사용한다.
|
||
|
||
| Mode | 원본 Value λ | FESA λ | RMS/S (%) | 판정 |
|
||
| ---: | ---: | ---: | ---: | --- |
|
||
| 1 | 496.28 | 497.153597379 | 0.176029 | PASS |
|
||
| 2 | 496.28 | 497.156908818 | 0.176696 | PASS |
|
||
| 3 | 18302 | 18519.547026780 | 1.188652 | FAIL |
|
||
| 4 | 18302 | 18519.716390186 | 1.189577 | FAIL |
|
||
| 5 | 52797 | 63489.091264684 | 20.251323 | FAIL |
|
||
| 6 | 131213 | 134772.818711666 | 2.713008 | FAIL |
|
||
| 7 | 131214 | 134773.663065696 | 2.712868 | FAIL |
|
||
| 8 | 165943 | 166062.030100247 | 0.071730 | PASS |
|
||
| 9 | 449258 | 470919.350201648 | 4.821584 | FAIL |
|
||
| 10 | 449260 | 470921.678067527 | 4.821635 | FAIL |
|
||
|
||
10 families 중7개 RMS 실패, scalar row5% 실패는 mode5의1개다. MITC4의 scoped5%
|
||
RMS 예외를 적용하거나 frequency로 변환하지 않았다. Source 반복 고유치를 합치거나
|
||
값이 가까운 모드에 재매칭하지 않았다. TXT 원본은 수정하지 않았다.
|
||
|
||
비교기 새 동작11개의 RED 실패를 관측한 뒤 원본 TXT reader와 실제 frequency 분기를 연결했다.
|
||
추가된 성공 경로까지12개 새 검사와 기존 영향 검사 모두 PASS다. 실제 명령은
|
||
`uv run --with h5py --with pytest python -B -m pytest tests/test_compare_hex8.py tests/test_compare_hht_dynamic.py -q --junitxml=.harness/hex8-evidence/mean-volume/modal-final/affected.xml`,
|
||
native0·136 PASS(95 Hex8/41 HHT)·24.52초다. Raw log·JUnit·argv/native/timestamps는
|
||
`modal-final/affected.log`, `affected.xml`, `affected.json`에 보존했다.
|
||
Schema fixture의 PASS/의도된 FAIL은 비교기 동작 근거이며 실제 modal 일치의 PASS가 아니다.
|
||
|
||
독립 read-only 감사는 native0·finding0으로 동일한7개 실패를 재현했다. 원본14개를 포함한
|
||
소비23개 artifact의 SHA를 전후 확인했다. 이번 추가 검증의 종료 요약은
|
||
`modal-final/closure.json`이며 과거 원본 부재 시의 `mean-volume/closure.json`과
|
||
`comparisons/hexa_freq/comparison.json`은 당시 NOT RUN 기록으로 보존했다.
|
||
|
||
이번 변경은 비교기·Python 검사·문서에 한정되고 C++ 수식/질량/절차/출력은 변경하지 않았다.
|
||
직전에 완료한 전체787 회귀는 아래 기록대로 native8·784 PASS·기존 FAIL2·SKIP1이며
|
||
이번 Python 검사로 전체 회귀를 새로 실행한 것으로 보고하지 않는다. 전체 Python의
|
||
기존 collection5 오류도 해결한 것으로 보고하지 않는다.
|
||
최종 modal 수치 불일치가 남아 기능 완료는 대기다. 원인 분리와 승인 경계는
|
||
[미해결 문제](../tracking/findings.md#hex8-제공-고유치-원본과-최저10-모드-불일치)에 기록한다.
|
||
독립 검토의 범위와 원시 자료는 [수치 검토](numerical-review.md)를 따른다.
|
||
|
||
## 비교기 개발과 변경 전 pointwise 구현의 관측 이력
|
||
|
||
The initial seven behavior assertions failed before implementation (pytest native
|
||
exit1). The first expanded suite passed63/63 with native exit0. Those tests include
|
||
original-sized independently declared HDF5 schema fixtures and reference values;
|
||
they are comparator behavior fixtures, not actual FESA source validation evidence.
|
||
The affected Hex8 plus legacy HHT comparator suite passed119/119 (native exit0,
|
||
62.51s) before independent review fixes. Those bounded fixes were reproduced by
|
||
safe behavior RED tests and the five targeted regressions then passed5/5. Final affected checks after all three independent findings were corrected passed
|
||
124/124 with native exit0 (81.41s), with raw stdout and JUnit retained under
|
||
`.harness/hex8-evidence/t8/final-affected/`. The preliminary whole `uv ... pytest -q` attempt and the separate exact
|
||
configured `uv run --with h5py --with pytest python -B -m pytest -v -rs`
|
||
(`docs/operations.md:87`, adding h5py) both stopped during collection with native
|
||
exit2 and five legacy operational import errors (`msvc_harness` and removed `scripts.hooks`). It is not a whole-suite PASS;
|
||
no tests were excluded and no retired orchestration was restored.
|
||
|
||
Actual official linear-static and nonlinear-static results passed source,
|
||
model, schema, point, finite and frame prechecks and failed all three numerical
|
||
families. Their closed CLI evidence records both have native exit0 and matching
|
||
original/copy/result hashes; their comparator commands have native exit1.
|
||
These are genuine comparison failures under the unchanged policy, not reader
|
||
precheck failures or solver native execution failures. Frequency official readback
|
||
passes its prechecks; its comparator exits2 with `not-run`, not PASS.
|
||
|
||
| Case / blocking quantity | Scalars | Failing rows | S | Maximum absolute error | RMS/S |
|
||
| --- | ---: | ---: | ---: | ---: | ---: |
|
||
| linear static U | 1326 | 79 | .00186131289 | .00007588175038730229 | .016739519723527385 |
|
||
| linear static RF | 51 | 34 | 513497.094 | 78630.61640144575 | .06818892528188494 |
|
||
| linear static S | 14400 | 7783 | 3430145 | 982855.3871926877 | .04270903417463437 |
|
||
| nonlinear static U | 1326 | 79 | .00186110672 | .00007586510202476195 | .016737790679783753 |
|
||
| nonlinear static RF | 51 | 34 | 513445.594 | 78623.61011241788 | .0681899286018377 |
|
||
| nonlinear static S | 14400 | 7782 | 3429817.75 | 982753.151651503 | .04270850513087158 |
|
||
|
||
Official result SHA256 values are
|
||
`3ef92c35ea83ddb4d11437ff87ef15eca7dac179d378eda19570abae579b09d0` (linear),
|
||
`0095ebf2d360a8bd8a71212af0dd500ed611a56540a173a39d9c8d88d8e05bbf` (nonlinear),
|
||
and `0ec4d2b09250bab17a8532228cd34a312518c04023076f971e929b387031c6b3` (frequency).
|
||
Scratch inputs are retained under
|
||
`.harness/hex8-evidence/t8-original-cli/<case>/<case>.inp`.
|
||
Root preserved each exact command, closed native exit and full row report under
|
||
`.harness/hex8-evidence/t8-comparator-frozen/official-comparisons/<case>/`.
|
||
The command records identify the actual scratch input, original reference directory,
|
||
HDF5 and closed native CLI record consumed. The frozen author revision
|
||
`0b93c0c59cf64db44003ebe5217a4efb8307a8ba` passed independent bounded review
|
||
and was integrated as `317fe5c`. Root and reviewer separately verified four owned
|
||
source blobs/snapshots, 65 closed raw artifacts and all13 unchanged source hashes.
|
||
The raw affected stdout/JUnit certifies124 tests (Hex8 83, legacy HHT 41), zero
|
||
failures/errors/skips and native0. This review certifies the comparator behavior
|
||
and evidence, not numerical agreement with the originals. Naturally completed
|
||
dynamic originals and whole-feature validation are tracked separately.
|
||
|
||
After integration, the root affected suite also passed124/124 with native0
|
||
(70.92s). Root comparison-only commands consumed the same naturally closed official
|
||
results and again returned static native1 with the same failed family metrics and
|
||
frequency native2 (`not-run`). These commands and raw stdout/JUnit/row reports are
|
||
retained under `.harness/hex8-evidence/t8-integrated/`. No original solver case was
|
||
rerun to perform these comparisons.
|
||
|
||
| Actual original | Closed pointwise baseline comparison state (before approved B) |
|
||
| --- | --- |
|
||
| `hexa_linearstatic` | Full precheck PASS; U/RF/S numerical FAIL (comparator native1) |
|
||
| `hexa_nonlinearstatic` | Full precheck PASS; U/RF/S numerical FAIL (comparator native1) |
|
||
| `hexa_dynlinear` | CLI native0,101-frame precheck PASS;88/101 U families FAIL (comparator native1), maximum RMS/S .08163737360707901 |
|
||
| `hexa_dynnonlinear` | CLI native0,101-frame precheck PASS;88/101 U families FAIL (comparator native1), maximum RMS/S .08160653291688992 |
|
||
| `hexa_freq` | Official HDF5 precheck PASS; modal Value absent, actual comparison NOT RUN (native2) |
|
||
|
||
Full MSVC build/CTest, original CLI orchestration, independent numerical/physics
|
||
investigation of the reference conflict and whole-feature completion are root-owned
|
||
and are not inferred from this Python implementation or its fixture tests.
|
||
|
||
The two actual dynamic CLI runs closed naturally with all101 frames before the
|
||
2026-10-10 energy change. Each comparison consumed all101 original increments,
|
||
1326 scalars per increment and44642 original node rows. Failed scalar-row totals
|
||
were74098 (linear) and73974 (nonlinear); maximum absolute errors were
|
||
.0003979358365926728 and.00039786754005028237. Full commands, native records,
|
||
source/result hashes and row reports are preserved under
|
||
`.harness/hex8-evidence/t8-dynamic-closure/<case>/`. The separately frozen API
|
||
`c49cae4` also naturally completed both101-endpoint strict-gate checks with native0;
|
||
it did not itself write official HDF5 or establish original agreement.
|
||
|
||
The closed pointwise source `1eb9cdd` full MSVC Debug build exited0. Its unfiltered
|
||
780-test CTest exited8:777 PASS,2 FAIL,1 SKIP, with all163 added tests PASS.
|
||
The baseline exception names, statuses and raw metric bodies matched exactly:
|
||
`HhtShellPhysics.C08aRigidManufacturedOrbitFullCoordinateTimeConvergence`,
|
||
`HhtShellPhysics.C08bFreeFiniteRotationPlateSelfConvergenceAndPhysicalInvariants`,
|
||
and `HhtTemporalVerification.C04aFinestReductionComparisonIsNumericallyResolved`.
|
||
Raw records and the independent closure summary are retained under
|
||
`.harness/hex8-evidence/t9-full-current/`. This is not a whole-suite PASS.
|
||
|
||
Approved B replaces the pointwise bulk energy and requires new validation of all
|
||
five procedures. None of the historical native, internal or reference outcomes
|
||
above is a validation result for the mean-volume implementation. Originals,
|
||
tolerances, strict gates and comparator contracts remain unchanged.
|
||
|
||
## 2026-10-10 체적 평균 energy 구현과 현재 재검증
|
||
|
||
Frozen 작성자 `b2abd739`를 root `18b36c1`에 연결했다. 두 pass로 reference-volume
|
||
가중 trace 평균을 계산하고 같은 energy에서 내력·전체 Hessian·복구 응력을 구한다.
|
||
Cross-GP bulk 항과 `S*:delta²E` 기하항을 함께 유지한다. LINE의 K0는 같은 식의
|
||
영변위 Hessian이다. 질량·HHT·strict gate·원본·I/O·허용오차는 변경하지 않았다.
|
||
|
||
수정한 weighted warped oracle를 이전 구현에 대입한7개 검사는 모두 실패했다.
|
||
변경본 작성자 관련150/150, 시간수렴3 GTests의4물리 사례, 최종 실제 재컴파일3/3은
|
||
각각 native build/CTest0/0이다. u/v/physical a의 최소 관측 차수1.98022는 기존1.8
|
||
기준을 충족한다. Root 실제 재컴파일 후 관련65/65도 native0이다. 정규 brick의 rank,
|
||
두 축 지정 굽힘장 에너지 수렴과 고정 두께 cantilever tip 추세는 서로 다른 증거다.
|
||
상세 범위는 [수치 검토](numerical-review.md)와 [물리 검토](physics-review.md)에 있다.
|
||
|
||
새 공식 CLI는 frozen executable과 byte-identical scratch INP를 사용한다. 아래 두
|
||
정적 해석은 자연 종료 native0이며, 변경 없는 공식 비교기도 각각 native0이다.
|
||
Source/model/schema/point/frame/finite 사전검사와 각 family의 모든 row가 통과했다.
|
||
|
||
| 원본 / blocking quantity | Scalars | Failing rows | Maximum absolute error | RMS/S |
|
||
| --- | ---: | ---: | ---: | ---: |
|
||
| linear static U | 1326 | 0 | 6.096370478748947e-11 | 9.317898154374918e-9 |
|
||
| linear static RF | 51 | 0 | .014746726665180176 | 7.3098163267228364e-9 |
|
||
| linear static S | 14400 | 0 | .12245691940188408 | 3.425934236751431e-9 |
|
||
| nonlinear static U | 1326 | 0 | 9.832466303596647e-10 | 2.169911561350724e-7 |
|
||
| nonlinear static RF | 51 | 0 | 12.826179522729944 | 6.728092996221331e-6 |
|
||
| nonlinear static S | 14400 | 0 | 93.34994950843975 | 9.338899878251489e-6 |
|
||
|
||
새 HDF5 SHA256은 linear `023769e50d05226ef8defe87e29bc9046fbdd5071783007ebb39a49fd9d7d617`,
|
||
nonlinear `2acb3471c7799597d554d4d9ee224e8c611522866808f38b2b2c202e0f98a4bd`다.
|
||
Frequency CLI도 native0으로 종료했고 공식 readback 사전검사는 PASS다. 새 결과 SHA는
|
||
`f6203936883df7f27e86a20311726b7e59fefa117e5f9fa67f71bdf63ec2e4cb`다.
|
||
원본 modal Value 부재로 비교는 native2·NOT RUN이며 수치 통과가 아니다.
|
||
|
||
새 선형 동적 CLI가 native0으로 자연 종료했고101-frame 사전검사와101개 U family가
|
||
모두 PASS다(비교 native0). 총133926개 scalar의 실패 행은0개다. 초기 exact-zero family를
|
||
포함하며100개 nonzero-scale family의 최대 RMS/S는.0031316511389477947,
|
||
전체 최대 absolute error는1.3395048822648645e-5다. 마지막 RMS/S는.001392775677333779다.
|
||
Actual HDF SHA는 `5476c557bc8e1c0a1e8b57a1cc8d763eb822a47e27aa2b2723fcbdc2246f9b40`다.
|
||
이 외부 변위 비교는 rounded HDF만으로 내부 high+low strict gate를 재계산한 검사가 아니다.
|
||
|
||
새 비선형 동적 CLI도 native0으로 자연 종료했고101-frame 사전검사 및101개 U family가
|
||
모두 PASS다(비교 native0). 총133926개 scalar의 실패 행은0개다. 초기 exact-zero와
|
||
100개 nonzero-scale family를 구분했으며 최대 RMS/S는.003133373067174733,
|
||
전체 최대 absolute error는1.3397499223151595e-5, 마지막 RMS/S는.0013958914416137816이다.
|
||
Actual HDF SHA는 `023b4558a28f8d9365f6b11346a6cb4a5d2faafa68607c5c56bbf226fe816210`다.
|
||
다섯 새 공식 CLI queue는 wrapper0으로 자연 종료했고 원본13개 SHA를 보존했다.
|
||
독립 검토의 범위는 해당 수치·물리 검토 문서를 따른다.
|
||
|
||
제외 없는 전체787 CTest는2026-10-11 자연 종료했다. MSVC x64 Debug configure/build는
|
||
native0/0이며 CTest는 native8:784 PASS·2 FAIL·1 SKIP이다. 기존617개가 모두 유지됐고
|
||
추가170개는 모두 PASS이며 새 예외는0이다. 두 기존 Shell 실패의 수치 로그20/30줄은
|
||
baseline과 정확히 같다. SKIP은 이름·상태가 동일하지만 output-on-failure raw에 상세
|
||
본문이 없어 그 metric 검증은 NOT VERIFIED다. 전체 green으로 보고하지 않는다.
|
||
정확한 CLI/비교 명령·native record·
|
||
원본/copy/result SHA·전 row report는 로컬 `.harness/hex8-evidence/mean-volume/`의
|
||
`original-cli/`, `comparisons/`, `integrated-focused/`, `full/`에 보존한다.
|
||
|
||
동일 revision에서 전체 Python 명령
|
||
`uv run --with h5py --with pytest python -B -m pytest -v -rs`도 다시 실행했다.
|
||
기존 `msvc_harness`·제거된 `scripts.hooks` import의 collection5 오류로 native2,
|
||
실행0개다. `.harness/hex8-evidence/mean-volume/python-full/`의 native 기록을 따른다.
|
||
기존 실패를 제외하거나 폐기된 절차를 복원하지 않았으며 전체 Python PASS가 아니다.
|
||
|
||
## 2026-10-11 전체 재검증 종료 기록
|
||
|
||
전체 C++ 검증은 설치된 MSVC x64와 dependency 환경에서 아래 preset backend 명령을
|
||
제외 없이 실행했다. `.harness/config.json`이 없고 generic runner는30분 deadline을
|
||
사용하므로 수시간의 전체 실행은 직접 backend로 완료했다. `scripts/execute.py`의 별도
|
||
실행 성공을 주장하지 않는다. 실제 argv·시각·native 종료 코드는 `full/`에 보존했다.
|
||
|
||
```powershell
|
||
cmake --preset windows-msvc-ninja-debug
|
||
cmake --build --preset windows-msvc-ninja-debug
|
||
ctest --preset windows-msvc-ninja-debug --show-only=json-v1
|
||
ctest --preset windows-msvc-ninja-debug --output-on-failure
|
||
```
|
||
|
||
전체 실제 시간은16839.26초다. 기존 실패는
|
||
`HhtShellPhysics.C08aRigidManufacturedOrbitFullCoordinateTimeConvergence` 및
|
||
`HhtShellPhysics.C08bFreeFiniteRotationPlateSelfConvergenceAndPhysicalInvariants`,
|
||
SKIP은 `HhtTemporalVerification.C04aFinestReductionComparisonIsNumericallyResolved`다.
|
||
기존617개와 새170개의 discovery·실행 ordinal·status 및 종료 artifact SHA 대조는
|
||
`full/independent-closure-summary.json`에 있다. 다섯 CLI·네 실제 원본 비교·modal NOT RUN·
|
||
Python collection 오류와 원본13개/frozen binaries 보존을 함께 기록한 최종 자료는
|
||
`.harness/hex8-evidence/mean-volume/closure.json`이다. 독립 감사와 실제 원본 물리 복구의
|
||
bounded 판정·한계는 [수치 검토](numerical-review.md), [물리 검토](physics-review.md)를 따른다.
|
||
|
||
종료 후 독립 전체 evidence 감사도 native0·finding0이다. 별도22개 artifact SHA와
|
||
세 실제 테스트 실행 파일의 중간 관측/종료 SHA, 모든 discovery/실행 행과 기존 상대
|
||
순서·status를 대조했다. 자료는 `final-evidence-audit-full/`에 있다. 두 실패 출력은
|
||
elapsed-ms 표기만 제외해 정확히 동일하다. 이 감사 PASS는 CTest native8이나 modal
|
||
NOT RUN을 통과로 재분류하지 않는다.
|