v0.4-dev · tabular evidence

v0.4-dev evidence (S5-S11)

Every cited measurement on the v0.4 what's new page 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/. v0.3.0 results are untouched and still live on the main evidence section.

Honest label discipline. The v0.4 validation matrix (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 torque (J = 2.5e6 A/m², phi = pi/2) −11.41 Nm (Arkkio); −11.43 Nm (Maxwell); agreement 99.880 % |T| ≥ 1e−3 Nm sanity band S5-W2 · pipeline_annular_torque/evidence_slotted_motor.md PASS
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 Top 2.508 Nm; Tcog 3.022 Nm; Biron,med 0.639 T; wall 0.135 s demo deliverable: signed report ≥ 5 KB S6-W4 · v0_4_dev/real_cad_demo/demo_report.md (7.5 KB) PASS
14 Full real-geometry pipeline (S7 promotion) Top 2.508 Nm; cogging period 0.000 % error; FEM residual 4.7e−15 declared: residual < 1e−10; period < 0.5 % S7-W2 · v0_4_dev/real_cad_pipeline/evidence_full_pipeline.md PASS
15 Customer demo notebook walkthrough 13.5 KB, 9 sections, 7 citations; Top = −75.4 Nm (sweep) declared: full provenance + citations S7-W3 · v0_4_dev/customer_demo/PMSM_DEMO_WALKTHROUGH.md PASS
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
SprintModulesPASSPARTIALFAILWall (s)Exit
S5 baseline332490246.870
S639291000
S743321000

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.

ResultSHA-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 "Still NOT yet" section on the v0.4 what's new page is the authoritative list of v0.4-dev blockers. 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; awaits Fujiwara & Nakata 1990 paper acquisition.
  • B4 — 3-D magnetic curl-curl FEM (Phase J.8) — user-blocked on pilot revenue or ≥ 50 % 3-D demand.
  • True sliding-mesh — design document only; deferred to v0.5+ per S11-W3.

Every v0.3.0 limitation in docs/limitations.html remains in force for v0.4.

6. Source files (read-only)

  • v0_4_dev/orchestrator/v0_4_s5_loop_summary.md
  • v0_4_dev/orchestrator/v0_4_s6_loop_summary.md
  • v0_4_dev/orchestrator/v0_4_s7_loop_summary.md
  • v0_4_dev/orchestrator/v0_4_s8_loop_summary.md
  • v0_4_dev/orchestrator/v0_4_s9_loop_summary.md
  • v0_4_dev/orchestrator/v0_4_s10_loop_summary.md
  • v0_4_dev/orchestrator/v0_4_s11_loop_summary.md
  • v0_4_dev/pipeline_annular_torque/evidence_slotted_motor.md
  • v0_4_dev/pipeline_annular_torque/evidence_slotted_cogging.md
  • v0_4_dev/pipeline_annular_torque/evidence_nonlinear_sector.md
  • v0_4_dev/real_motor_geometry/evidence_material_adapter_v2.md
  • v0_4_dev/real_motor_geometry/evidence_material_library_extended.md
  • v0_4_dev/real_cad_demo/demo_report.md
  • v0_4_dev/real_cad_pipeline/evidence_full_pipeline.md
  • v0_4_dev/gpu/SCALING_REPORT.md
  • v0_4_dev/validation_matrix/validation_matrix.md
  • v0_4_dev/scripts/run_v0_4_regression.py
  • docs/HARD_LIMITATIONS.md (authoritative for v0.3.0 scope)