{
  "schema": "physrun.validation-manifest/1",
  "workbench": "EM-INDUCTION",
  "sceneVersion": "physrun.em-induction/1",
  "scientificModelVersion": "em-induction/0.1.0",
  "scientificSpecificationPath": "docs/EM-INDUCTION-scientific-spec-v1.md",
  "constantsSet": "CODATA-2022",
  "phasorConvention": "Re{X_hat exp(+i omega t)}",
  "credibility": {
    "currentLabel": "Preview",
    "target": "separate T2 claims for filament coupling, moving circuits, 1D skin effect, and 2D linear eddy currents; C3 for the complete workbench only after product evidence",
    "reason": "Native physics, optimized WASM parity, strict scenes, production builds, and all fifteen experiments are automated across Chromium, Firefox, and WebKit. External physics review, benchmark-wide convergence thresholds, independent eddy-current solver comparisons, accessibility auditing, classroom-device distributions, and traceable hardware measurements remain open; no T2, T3, or C3 badge is asserted."
  },
  "models": [
    {
      "id": "filament-coupling-3d",
      "claim": "Stationary oriented thin circular loops in arbitrary three-dimensional poses, uniform prescribed B(t), mutual and thin-wire self inductance, and limited open/passive/series-RL closure",
      "numericBackend": "controlled Neumann quadrature, complete-elliptic-integral coaxial reference, named thin-wire self model, analytic waveform derivatives, and implicit trapezoidal linear ODE solves in Rust f64",
      "boundaryModel": "unbounded vacuum filament interaction; wire radii enforce clearance and self-model validity but do not soften mutual induction",
      "currentCredibility": "Preview"
    },
    {
      "id": "moving-circuit-3d",
      "claim": "Rigid rotating loop, oriented moving segment, translating dipole, prescribed coaxial finite-loop motion, and prescribed moving passive ring with transformer/motional decomposition",
      "numericBackend": "analytic rigid motion, Lorentz line integral, independent vector-potential path EMF, elliptic mutual-inductance geometry derivative, and implicit passive-ring current solve in Rust f64",
      "boundaryModel": "magnetoquasistatic prescribed-source model with explicit source exclusions and wave-ratio diagnostic",
      "currentCredibility": "Preview"
    },
    {
      "id": "eddy-current-2d-extruded",
      "claim": "Finite rectangular translation-invariant transient Az diffusion with prescribed Jz, linear isotropic stationary permeability and conductivity, and no imposed axial scalar-potential gradient",
      "numericBackend": "conservative structured five-point reluctivity stencil, backward Euler or Crank-Nicolson with Rannacher startup, and Jacobi-PCG in Rust f64",
      "boundaryModel": "finite magnetic-insulation truncation (Az constant), not infinity",
      "currentCredibility": "Preview"
    },
    {
      "id": "skin-effect-1d-harmonic",
      "claim": "Homogeneous linear good-conductor half-space driven by a tangential harmonic surface H field",
      "numericBackend": "analytic complex profile and surface impedance in Rust f64 under Re{X_hat exp(+i omega t)}",
      "boundaryModel": "semi-infinite homogeneous half-space",
      "currentCredibility": "Preview"
    }
  ],
  "wasmArtifact": {
    "path": "/wasm/em-induction.wasm",
    "abiVersion": 1,
    "precision": "f64",
    "bytes": 166065,
    "sha256": "86e278ee7c1ab8f5ceaa9e24aab55169750b0b3844932a46067b2384cc054bc2"
  },
  "officialExperiments": [
    "IND-01 uniform Faraday loop",
    "IND-02 two-coil switching",
    "IND-03 mutual inductance versus 3D pose",
    "IND-04 passive secondary",
    "IND-05 series-RL transient",
    "IND-06 rotating generator",
    "IND-07 moving finite source loop",
    "IND-08 oriented sliding conductor",
    "IND-09 passive Lenz ring force and energy",
    "IND-10 transient magnetic diffusion",
    "IND-11 harmonic skin effect",
    "IND-12 eddy-current shielding",
    "IND-13 eddy-current loss",
    "IND-14 slotted conducting plate",
    "IND-15 linear core and conducting region"
  ],
  "evidenceGates": [
    {
      "id": "native-kernel-vv",
      "command": "cargo test -p em-induction -p em-induction-wasm",
      "status": "automated",
      "covers": [
        "right-handed loop parameterization and rigid rotation",
        "Neumann mutual-inductance reciprocity in arbitrary pose, orientation sign, certified clearance rejection, elliptic coaxial comparison, and dipole far limit",
        "named thin-wire self-inductance model, N-squared scaling, positive-definite coupled energy, and uniform-field turns/area/orientation scaling",
        "analytic sine derivatives and finite smooth-step behavior",
        "series-RL analytic rise, open pickup sinusoidal EMF, passive-secondary analytic response, and power ledgers",
        "rotating-loop NAB-omega amplitude, oriented Blv, stationary Faraday law, moving-dipole independent path/flux closure, moving finite-loop bipolar response, and passive-ring Lenz force/energy closure",
        "zero-state and manufactured magnetic diffusion, three-level second-order spatial convergence, three-step first-order backward-Euler temporal convergence, PCG residual, nonnegative Joule loss, and explicit under-resolved skin-depth diagnosis",
        "half-space one-skin-depth amplitude/phase, square-root scaling, and DC rejection"
      ]
    },
    {
      "id": "native-wasm-parity-and-abi",
      "command": "node scripts/verify-em-induction-wasm.mjs",
      "status": "automated",
      "covers": [
        "optimized wasm32 artifact, required export surface, ABI/model/constants/precision identity, and artifact hash",
        "native/WASM f64 golden parity across 51 representative self/mutual, Faraday, series-RL, coupled-coil, rotating-loop, moving-segment, moving-loop, moving-dipole, passive-ring, skin, and transient-eddy channels",
        "strict integer discriminators, null pointers, nonfinite vectors, invalid resistance, invalid snapshot stride, packed-array lengths, allocation and last-error contracts"
      ]
    },
    {
      "id": "scene-compiler-and-preset-tests",
      "command": "pnpm --filter @phys/web exec vitest run src/lib/induction/__tests__/induction.test.ts",
      "status": "automated",
      "covers": [
        "strict versioned parsing for all fifteen presets and all four models",
        "bounded share round trip and hostile unknown-field rejection",
        "physics fingerprint invariance under view changes and sensitivity to physical changes",
        "explicit unit normals and orientation in the packed ABI",
        "nonmutating final-to-preview compilation",
        "deterministic eddy-region rasterization with signed source topology"
      ]
    },
    {
      "id": "production-and-supported-browser-acceptance",
      "command": "node scripts/verify-induction-lab.mjs",
      "status": "automated",
      "covers": [
        "production Astro build and canonical /lab/induction route",
        "Chromium, Firefox, and WebKit execution of all fifteen official experiments",
        "real Three/WebGL workspace for all 3D experiments and model-specific eddy/skin workspaces",
        "production CSP, application/wasm MIME, Dedicated Worker execution, and per-study runtime budget",
        "English, German, and Simplified Chinese locale changes without scientific-state mutation",
        "signed Faraday EMF reversal under orientation reversal, real Three.js centre-handle drag, superseded-request hard cancellation, and WebGL context loss/recovery",
        "direct eddy Rust-array node probe without color-pixel sampling",
        "scene JSON, exact time CSV, full field CSV, provenance-bearing evidence report, share hash, and deterministic shared-scene reload",
        "public ValidationManifest/artifact identity, global landing card, laboratory catalog card, desktop sizing, and 390 px mobile overflow"
      ]
    }
  ],
  "releasePolicy": {
    "previewIsRecordableEvidence": false,
    "unsettledResultIsAuthoritative": false,
    "unconvergedIsVerified": false,
    "silentSingularitySoftening": false,
    "silentModelSubstitution": false,
    "finiteBoundaryMayBeCalledInfinity": false,
    "extruded2DMayBeCalledGeneral3D": false,
    "renderPixelsMayFeedQuantitativeInstruments": false,
    "canonicalPrecision": "f64",
    "claimsAreModelScoped": true
  },
  "capabilityLimits": {
    "generalCircuitSimulation": "delegated to DigiSim; only named series-RL and one passive secondary are implemented",
    "general3DEddyCurrent": false,
    "fullMaxwellWavePropagation": false,
    "nonlinearOrHystereticMaterials": false,
    "thermalFeedback": false,
    "dynamicMechanicalTrajectory": false,
    "traceableVirtualInstrumentUncertainty": false
  },
  "openEvidence": {
    "filamentCouplingT2": [
      "External physics-review sign-off on sign, self-inductance validity, and published numerical acceptance limits",
      "Broader arbitrary-pose convergence/property suite and independent high-precision reference corpus"
    ],
    "movingCircuitT2": [
      "Systematic time-refinement and rigid-motion covariance suite for every moving model",
      "Independent derivation/review of force, transformer/motional decomposition, and energy acceptance limits"
    ],
    "skinEffectT2": [
      "Independent complex-reference implementation and published edge-case acceptance limits"
    ],
    "linearEddyCurrentT2": [
      "Published three-mesh, three-time-step, and three-domain convergence studies for target observables",
      "Independent dense/sparse solver comparison and interface jump-condition suite",
      "Time-domain periodic-state comparison with the harmonic half-space reference",
      "Accepted TEAM or equivalent benchmark evidence for the exact supported 2D model boundary"
    ],
    "C3Workbench": [
      "Independent accessibility audit, keyboard direct-manipulation audit, and reduced-motion/color-vision verification",
      "Classroom usability and supported-device performance distributions",
      "External educator review of the complete fifteen-experiment progression"
    ],
    "T3ValidatedObservables": [
      "Traceable coil/current/pose/material/probe measurements with a complete uncertainty budget",
      "Published raw data, calibration records, analysis scripts, and discrepancy discussion"
    ]
  }
}
