|
14 | 14 |
|
15 | 15 | | Aspect | Current state | |
16 | 16 | |------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |
17 | | -| Algorithm Relationship | **Port** with 3 PR-#1438 intentional changes (float→double accumulation, `counter[]++` reorder, error-code re-numbering / preflight-warning removed) + PR #1472 EbsdLib 2.0 refactor + PR #1582 cancel-check additions + Phase-7 V&V refactor (`counter==0` → NaN at finalize + final per-feature normalize) | |
18 | | -| Oracle (confirmed) | **Class 1 (Analytical) primary** — 11-cell hand-built dataset with closed-form expected `AvgCAxes` per feature, covering 8 of 12 code paths (gaps: all-hex-ensemble preflight, background-voxel skip, and the two cancel-check paths). **Class 4 (Invariant) companion** — `||AvgCAxes[i]|| == 1.0` for hex-valid features (post-normalize unit-vector contract), `NaN` whenever `counter[feature] == 0` at finalize (placeholder feature, no-cells feature, all-non-hex feature). F7's direction is implementation-dependent at the precision-sensitive antipodal-flip boundary; only the unit-vector magnitude is asserted. (Class 3 dropped — standard/Bunge inform the quaternion-to-matrix convention but no paper has a worked example for this specific filter; hand-derivation is more direct.) | |
| 17 | +| Algorithm Relationship | **Port with Minor Changes** — float→double accumulation + counter-reorder + error-code re-numbering (PR #1438); EbsdLib 2.0 API (PR #1472); cancel checks (PR #1582); `counter==0`→NaN finalize + per-feature normalize (V&V refactor). 7 deltas total — see Algorithm Relationship. | |
| 18 | +| Oracle (confirmed) | **Class 1 (Analytical)** — 11-cell hand-built dataset, closed-form `AvgCAxes` per feature, 8 of 12 code paths covered. **Class 4 (Invariant)** — `||AvgCAxes||==1.0` for hex-valid; `NaN` for empty/non-hex. F7 only asserts unit-vector magnitude (direction is precision-sensitive at the antipodal-flip cancellation boundary). Class 3 N/A. | |
19 | 19 | | Code paths enumerated | 12 (from line-by-line scan of `ComputeAvgCAxes.cpp`) | |
20 | 20 | | Tests today | 3: 1 valid-execution exemplar (positive), 1 all-non-hex error (negative), 1 SIMPL 6.4+6.5 backwards-compat (DYNAMIC_SECTION) | |
21 | 21 | | Exemplar archive | **`7_2_AvgCAxis.tar.gz` retired** — confirmed legacy-by-reputation oracle: reference values produced by a "special build of DREAM3D 6.6.379 with micro-texture bug fixes," not by an independent oracle. Per policy line 33, not eligible as a correctness oracle. Replaced by `compute_avg_c_axis.tar.gz` (hand-built Class 1 dataset, this V&V cycle). | |
|
60 | 60 | - *(excluded — doc typo)* #1547 — "DOC: Fix filter documentation and documentation related code bugs" (2026-03-10) — docs `+1/-1` ("Crystallographic" → "Crystallography" subgroup typo). No algorithm or API change. |
61 | 61 | - *(pruned — broad refactor, no behavioral change to this filter)* #1439 (NeighborList tuple API), #1457 (static-inline cleanup), #1501 (Vec3 unification), #1538 (zlib tar.gz extraction in tests). |
62 | 62 |
|
63 | | -<!-- end vv-discover DRAFT --> |
64 | | - |
65 | 63 | ## Oracle |
66 | 64 |
|
67 | 65 | *Class:* **1 (Analytical)** primary, **4 (Invariant)** companion. |
68 | 66 |
|
69 | | -### Phase 2 exemplar-provenance finding (recorded for the audit trail) |
70 | | - |
71 | | -The pre-existing primary exemplar `7_2_AvgCAxis.tar.gz` was investigated per the "circular oracle" cross-cutting finding from the retroactive audit's INDEX. Its inline `ReadMe.md` confirms: |
72 | | - |
73 | | -> Processed with [a] special build of DREAM3D Version 6.6.379 (or close to that) — this version had specific bug fixes for micro-texture data. Used the output file from the 6.6.379 version as the input into DREAM3D-NX version 7.3.0. Final output file has results from both versions. All results should be within 5.0E-7 tolerance of each other. |
| 67 | +### Phase 2 exemplar-provenance finding |
74 | 68 |
|
75 | | -This makes `7_2_AvgCAxis.tar.gz` a **regression-style oracle pinned to a 6.6.379 special build** — closer to Class 5 (regression / golden-master with a "trust the legacy" assumption) than to any of the policy's preferred Class 1–4 oracles. The DREAM3D 6.6.379 special build itself was never independently verified, and per V&V policy line 33 ("Legacy 6.5.171 produced this output is never a valid oracle for correctness") this is doubly disqualified: it's not even 6.5.171 baseline — it's a later, divergent special build. The exemplar is **retired** as the primary oracle for this filter. |
| 69 | +The pre-existing exemplar `7_2_AvgCAxis.tar.gz` is a regression-style oracle pinned to a custom DREAM3D 6.6.379 "micro-texture special build" (per its inline ReadMe). Per V&V policy line 33, legacy output is never a valid correctness oracle — doubly disqualified here, since the reference build isn't even 6.5.171 baseline. **Retired** in favor of the hand-built Class 1 dataset below. |
76 | 70 |
|
77 | 71 | ### Applied (Class 1 — Analytical) |
78 | 72 |
|
|
0 commit comments