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.
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
| 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 "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.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 v0.3.0 scope)