v0.4-dev evidence (S5-S11)
Every cited measurement on the v0.4 development track is reproduced below with its
sprint, source file path, declared tolerance band, and verdict. Numbers come from the sprint
closeouts in v0_4_dev/orchestrator/v0_4_s{5..11}_loop_summary.md and the evidence
files under v0_4_dev/. The single canonical validation fact for the shipped
product lives on the docs overview and the homepage
validation section; this page does not restate those numbers.
v0_4_dev/validation_matrix/) refuses to emit a
PUBLISHED_MEASURED_PASS verdict when the reference is
analytical or textbook_formula. Any "PASS" against an
analytical reference is reported as PASS only, never as
PUBLISHED_MEASURED_PASS.
1. Sprint-by-sprint summary (S5-S11)
Source: v0_4_dev/orchestrator/v0_4_s{5..11}_loop_summary.md.
All sprints additive on top of frozen v0.3.0.
| Sprint | Theme | Workers | Suite result | Verdict |
|---|---|---|---|---|
| S5 | 2-D polish + cogging waveform | 6 (W1-W6) | 33 modules · 24 PASS / 9 PARTIAL / 0 FAIL · 246.87 s · exit 0 | PASS |
| S6 | Real CAD intake + multigrade + QA triage | 4 | 39 modules · 29 PASS / 10 PARTIAL / 0 FAIL · exit 0 | PASS |
| S7 | Real-geometry FEM pipeline | 4 | 43 modules · 32 PASS / 10 PARTIAL / 0 FAIL · exit 0 | PASS |
| S8 | First textbook-analytical benchmark PASS | 3 | 4 cases PASS (Hanselman / Furlani / Griffiths / Timoshenko) | PASS |
| S9 | GPU port (cupy) | 3 | Structural PASS + honest NOT_IMPLEMENTED runtime (cupy absent on dev host) | PARTIAL (dev host) |
| S10 | Iron hysteresis loss | 3 | 14 sub-tests PASS · 4 grades cited | PASS |
| S11 | Sliding mesh / rotor rotation | 3 | 6 PASS + 3 PASS/PARTIAL + 1 ANALYTICAL_CPU_OK design doc | PASS |
Cumulative: 26 worker passes across S5-S11. v0.3.0
isolation verified every sprint: 72 source files in
src/cufemlab/, 0 newer than 2026-05-24 freeze date.
2. Measurement table (every cited number)
Each row cites a specific value from a specific sprint, with the source evidence file. Tolerances are the ones declared in the sprint closeouts; "verdict" is the verdict recorded for that measurement.
| # | Quantity | Measured | Reference / tolerance | Sprint · source | Verdict |
|---|---|---|---|---|---|
| 1 | Nonlinear-BH full vs sector torque (bit-exact) | rel diff 1.23e−9; 3.94× wall-time speedup at p=2 | full-domain reference; declared cross-check tolerance < 1e−6 | S5-W1 · pipeline_annular_torque/evidence_nonlinear_sector.md |
PASS |
| 2 | Cogging period for 4p/24-slot PMSM | 0.000 % rel diff vs 2π / lcm(2p, n_slots) = 15° | cogging-period theory (Hanselman 1994 ch.4); declared 0.5 % | S5-W2 · pipeline_annular_torque/evidence_slotted_cogging.md |
PASS |
| 3 | Slotted-PMSM PM-only cogging torque (Arkkio) | +2.183 Nm | declared PM-cogging band 1e−6 … 10 Nm | S5-W2 · pipeline_annular_torque/evidence_slotted_motor.md |
PASS |
| 4 | Slotted-PMSM PM-only cogging torque (Maxwell stress) | +2.169 Nm; Arkkio/Maxwell agreement 99.373 % | Arkkio vs Maxwell cross-check, declared tolerance 10 % | S5-W2 · pipeline_annular_torque/evidence_slotted_motor.md |
PASS |
| 5 | Slotted-PMSM operating (on-load) torque (J = 2.5e6 A/m², phi = pi/2) — roadmap / v0.4-dev, NOT validated | −11.41 Nm (Arkkio); −11.43 Nm (Maxwell); internal Arkkio-vs-Maxwell self-consistency 99.880 % — development sanity-check only, no cited external reference | |T| ≥ 1e−3 Nm internal sanity band (not a validation tolerance) | S5-W2 · pipeline_annular_torque/evidence_slotted_motor.md |
roadmap (not validated) |
| 6 | PM line-current amplitude vs Br/(μ0·Δθ·r) | matched to 1.92e−16 (machine epsilon) | analytical bound-current formula (Meeker FEMM 4.2 / Hanselman 4.6) | S5-W3 · real_motor_geometry/evidence_material_adapter_v2.md |
PASS |
| 7 | PM-airgap ringing reduction (max element |B|) | 24 T → 2.97 T (8.1× reduction); midairgap |B| 0.14 → 1.17 T (8.4×) | realistic peak airgap acceptance band 0.4 - 1.5 T; artefact gate < 3 T | S5-W3 · real_motor_geometry/evidence_material_adapter_v2.md |
PASS |
| 8 | Material library extension | 10 new datasheet-cited grades (M270-35A, M330-50A, Hiperco50, SMC, N52, N42SH, SmCo 2:17, Y30, C11000, Al6061-T6) | multi-grade-per-mesh test with 2 distinct iron μr values | S5-W4 · real_motor_geometry/evidence_material_library_extended.md |
PASS |
| 9 | Regression-runner discovery + run | 33 modules / 24 PASS / 9 PARTIAL / 0 FAIL; 246.87 s; exit 0 | declared: 0 FAIL, suite-level PASS | S5-W5 · v0_4_dev/scripts/run_v0_4_regression.py |
PASS |
| 10 | QA standalone audit (7-dim, ast-based) | 4/7 audits PASS, 3 PARTIAL with 5 surfaced findings; 0 hard FAIL | declared: 0 hard FAIL acceptable | S5-W6 · v0_4_dev/scripts/v0_4_qa_audit.py |
PARTIAL (triage backlog) |
| 11 | Multigrade integration + cogging_v2 DC bias | 18 % → 7.34 % (64× absolute reduction); distinct μr 7000 / 1000 | declared: DC bias < 10 % | S6-W2 · sprint summary v0_4_s6 | PASS |
| 12 | OCC-free STL cross-section → polar mesh | area error 2.03e−4; FEM residual 8.24e−14 | declared area err < 1e−3; residual < 1e−10 | S6-W1 · v0_4_dev/phase_u/ |
PASS |
| 13 | First real-CAD-proxy customer demo (deliverable check) — on-load torque values are roadmap / v0.4-dev, NOT validated | signed report 7.5 KB; Biron,med 0.639 T; wall 0.142 s. On-load operating-torque figures from this dev demo are not a validated capability and are omitted here; the validated torque claim is 2-D no-load cogging only. | demo deliverable: signed report ≥ 5 KB | S6-W4 · v0_4_dev/real_cad_demo/demo_report.md (7.5 KB) |
PASS (deliverable only) |
| 14 | Full real-geometry pipeline (S7 promotion) — numerics check (residual, cogging period) | cogging period 0.000 % error; FEM residual 4.7e−15. The on-load operating-torque output of this dev pipeline is roadmap / v0.4-dev, not validated, and is not claimed here. | declared: residual < 1e−10; period < 0.5 % | S7-W2 · v0_4_dev/real_cad_pipeline/evidence_full_pipeline.md |
PASS (numerics) |
| 15 | Customer demo notebook walkthrough (provenance + citation check) | 13.5 KB, 9 sections, 7 citations. Any on-load operating-torque sweep shown in the dev notebook is roadmap / v0.4-dev, not a validated number, and is not claimed here. | declared: full provenance + citations | S7-W3 · v0_4_dev/customer_demo/PMSM_DEMO_WALKTHROUGH.md |
PASS (provenance) |
| 16 | Slotless PMSM Bg vs Hanselman analytical | cufemlab 0.892 T vs Hanselman 0.975 T; 8.56 % rel diff | analytical tolerance band 20 % | S8-W1 · analytical benchmark suite (case 1) | PASS |
| 17 | Helmholtz analytical case (S8 suite) | error at machine epsilon | analytical 1e−12 | S8-W1 · analytical benchmark suite | PASS |
| 18 | TEAM 30 schema + loader | refuses skeleton; FILL guard; awaiting Davey 1992 paper acquisition | declared: refuse measurement claim until real data loaded | S8-W3 · v0_4_dev/team30_benchmark/ |
awaiting paper (B3) |
| 19 | CPU FEM scaling exponent (1k - 64k unknowns) | complexity exponent 0.994 (near-linear for sparse direct) | declared: exponent < 1.10 for sparse direct solver | S9-W3 · v0_4_dev/gpu/SCALING_REPORT.md |
PASS |
| 20 | GPU FEM assembly + solve (cupy) | NotYetImplementedError raised (cupy absent on dev host); no silent CPU fallback; CUDA event > 0 gate enforced in code | declared: structural PASS, runtime honest NOT_IMPLEMENTED | S9-W1 · v0_4_dev/a5_linear_fem/ |
PARTIAL (B1 dev host) |
| 21 | Steinmetz iron loss (M19 @ 50 Hz / 1.5 T) | 21.4 kW/m³ (2.8 W/kg); Bα slope exact 1.780 | industry datasheet range ≈ 2-3 W/kg | S10-W1 · docs/module_reports/V10_STEINMETZ_LOSS.md |
PASS |
| 22 | Bertotti 3-term separation (50 Hz / 1.5 T) | excess term < 0.2 % (ke = 0.05 for M19); fractions sum to 1.0 | declared: fractions sum to 1 ± 1e−6; excess regime check | S10-W2 · docs/module_reports/V10_BERTOTTI_LOSS.md |
PASS |
| 23 | Default PMSM total iron loss @ 50 Hz | 10.38 W total (0.82 W/kg); per-region sum exact; f-doubling ratio 2.193 (hyst-dominated) | industry small-PMSM range ≈ 5-25 W | S10-W3 · docs/module_reports/V10_MOTOR_IRON_LOSS.md |
PASS |
| 24 | Rigid-rotor rotation primitive (S11) | rotor area drift 1.90e−14; PM magnetisation rotation exact | declared: area drift < 1e−10; PM rotation analytical | S11-W1 · docs/module_reports/V11_ROTOR_ROTATION.md |
PASS |
| 25 | Continuous cogging sweep (rigid rotor) | peak T = 2.466 Nm; degeneracy guard fires for ψ > 1 airgap angular cell (by design) | small-ψ sweep valid; large-ψ deliberately refused | S11-W2 · docs/module_reports/V11_CONTINUOUS_COGGING.md |
PARTIAL (small-ψ only) |
| 26 | True sliding-mesh (airgap re-triangulation) | 3 approaches compared (mortar / retri / airgap_band); recommended retri for v0.5, mortar for v0.6+; cost estimates calibrated to S9 exponent 0.994 | design document only | S11-W3 · v0_4_dev/sliding_mesh/SLIDING_MESH_DESIGN.md |
deferred to v0.5+ |
3. Regression-runner status
Single command from repo root reproduces every v0.4 test
(see v0_4_dev/scripts/run_v0_4_regression.py):
cd "d:/Projects/Eba/Simulation Software" python -X utf8 -m v0_4_dev.scripts.run_v0_4_regression
| Sprint | Modules | PASS | PARTIAL | FAIL | Wall (s) | Exit |
|---|---|---|---|---|---|---|
| S5 baseline | 33 | 24 | 9 | 0 | 246.87 | 0 |
| S6 | 39 | 29 | 10 | 0 | — | 0 |
| S7 | 43 | 32 | 10 | 0 | — | 0 |
All sprint runs exit 0. PARTIAL counts are honest physics documentation (e.g. DC-bias staircase artefact, operating/cogging ratio for 4p/24-slot geometry — both surfaced, neither hidden).
4. Provenance hashes for headline results
SHA-256 hashes recorded inside result_*.json envelopes. Bit-identical
re-runs reproduce the hash.
| Result | SHA-256 (truncated) | Sprint |
|---|---|---|
| Real-CAD-proxy demo (S6-W4) | sha256:70f4be93ab22ee54c24f497feda58a402d920eb32830643b157cf96c282be38d |
S6 |
| Slotted-motor PM-only (S5-W2, pm_only setup) | sha256:2c9f216dd8ac74fb3caf3800c7ec6a5422e8a84eb0615f8005a5134b1f955071 |
S5 |
| Regression-runner envelope | deterministic per-run; see v0_4_dev/scripts/regression_report.json |
S5+ |
| Nonlinear-sector pipeline | deterministic; stages.*.provenance per stage | S5-W1 |
5. What v0.4-dev does not claim
The authoritative product scope boundary is docs/limitations.html. None of the items below are claimed as PASS in any sprint closeout:
- B1 — GPU verified on a CUDA host (cupy CUDA event > 0)
— structural PASS only; runtime needs
cupy-cuda12x. - B2 — Real customer STEP — we ship CAD-proxy demo instead.
- B3 — TEAM 30 / TEAM 7 measured-benchmark PASS — schema/loader ready; TEAM 30 awaits Davey 1992 and TEAM 7 awaits Fujiwara & Nakata 1990 paper acquisition.
- B4 — 3-D magnetic curl-curl FEM — roadmap / not validated; Lane B 3-D field artifact; full 3-D torque on the roadmap.
- On-load / operating torque — roadmap / v0.4-dev, not a validated capability; the validated torque claim is 2-D no-load cogging only.
- True sliding-mesh — design document only; deferred to v0.5+ per S11-W3.
Every limitation in docs/limitations.html remains in force. For the canonical validated result, see /#validation.
6. Source files (read-only)
v0_4_dev/orchestrator/v0_4_s5_loop_summary.mdv0_4_dev/orchestrator/v0_4_s6_loop_summary.mdv0_4_dev/orchestrator/v0_4_s7_loop_summary.mdv0_4_dev/orchestrator/v0_4_s8_loop_summary.mdv0_4_dev/orchestrator/v0_4_s9_loop_summary.mdv0_4_dev/orchestrator/v0_4_s10_loop_summary.mdv0_4_dev/orchestrator/v0_4_s11_loop_summary.mdv0_4_dev/pipeline_annular_torque/evidence_slotted_motor.mdv0_4_dev/pipeline_annular_torque/evidence_slotted_cogging.mdv0_4_dev/pipeline_annular_torque/evidence_nonlinear_sector.mdv0_4_dev/real_motor_geometry/evidence_material_adapter_v2.mdv0_4_dev/real_motor_geometry/evidence_material_library_extended.mdv0_4_dev/real_cad_demo/demo_report.mdv0_4_dev/real_cad_pipeline/evidence_full_pipeline.mdv0_4_dev/gpu/SCALING_REPORT.mdv0_4_dev/validation_matrix/validation_matrix.mdv0_4_dev/scripts/run_v0_4_regression.pydocs/HARD_LIMITATIONS.md(authoritative for product scope)