{
  "capability_id": "electrical.power",
  "tool_id": "power",
  "engine": "electric-power",
  "calculation_version": "1.3.0",
  "generated_at": "2026-09-16T22:03:43.703Z",
  "engine_build": "2026-09-12",
  "test_count": 26,
  "passed": 26,
  "failed": 0,
  "tests_summary": {
    "golden": {
      "total": 14,
      "passed": 14
    },
    "boundary": {
      "total": 7,
      "passed": 7
    },
    "property": {
      "total": 5,
      "passed": 5
    }
  },
  "engine_tested": true,
  "expert_reviewed": false,
  "internally_reviewed": false,
  "review_kind": null,
  "source_checked": true,
  "reviewed_by": null,
  "reviewer_role": null,
  "last_reviewed": null,
  "expert_review": {
    "status": "optional_not_performed",
    "reviewer": null,
    "scope": [
      "formula",
      "input semantics",
      "assumptions",
      "limitations",
      "sources",
      "tests"
    ],
    "note": "Domain expert review is optional under CVP (CVP-EXP-01). Absence does not block CVP Verified. See Review policy for supplemental domain assurance."
  },
  "internal_review": {
    "status": "not_applicable",
    "reviewer": null
  },
  "page": "https://www.calculatorx.com/calc/electric/power",
  "api": "https://www.calculatorx.com/api/v1/calc/power",
  "schema_input": "https://www.calculatorx.com/schemas/electrical.power.input.json",
  "schema_output": "https://www.calculatorx.com/schemas/electrical.power.output.json",
  "assumptions": [
    "Three-phase path uses balanced line-to-line RMS voltage.",
    "PF on the V×I path is total power factor λ = |P|/S in [0, 1]; blank PF defaults to 1.",
    "I²R path assumes resistive power dissipation (I + R inputs). V²/R is the Ohm’s-law identity, not a third tab.",
    "Energy path is average power P = E/Δt with Δt > 0."
  ],
  "limitations": [
    "V×I path is real power P, not apparent power S (use amps-to-va)",
    "Three-phase is balanced sinusoidal L-L only",
    "I²R tab is I+R only; V²/R is Ohm’s law, not a third tab",
    "PF blank → 1; PF=0 → P=0; PF outside [0,1] → INVALID_POWER_FACTOR",
    "Δt ≤ 0 → INVALID_TIME_INTERVAL (not a soft 0 W)",
    "Sinusoidal PF teaching model; true PF with harmonics is not computed"
  ],
  "boundary_conditions": [
    "V×I path: zero V or I → 0 W",
    "Blank / omitted PF defaults to 1; PF = 0 is valid and yields P = 0",
    "PF < 0 or PF > 1 → INVALID_POWER_FACTOR",
    "I²R path: zero R or I → 0 W; negative R → VALUE_MUST_BE_NON_NEGATIVE",
    "Energy path: Δt ≤ 0 → INVALID_TIME_INTERVAL (not a soft 0 W)",
    "Zero energy with Δt > 0 → 0 W",
    "Non-finite inputs → INVALID_NUMBER"
  ],
  "sources": [
    {
      "title": "Watt’s law / power identity",
      "section": "Real power P = V × I × PF (1φ); P = √3 × V × I × PF (3φ L-L)",
      "supports": "P from V×I path with phase and PF",
      "kind": "definition"
    },
    {
      "title": "Joule heating / Ohm’s law forms",
      "section": "P = I²R = V²/R for resistive dissipation",
      "supports": "P from I²R mode",
      "kind": "definition"
    },
    {
      "title": "Energy–power relation",
      "section": "Average power P = E / Δt (J/s → W)",
      "supports": "P from energy mode",
      "kind": "definition"
    },
    {
      "title": "IEC 60050 — International Electrotechnical Vocabulary",
      "section": "Active power (IEV 131-11-42)",
      "url": "https://www.electropedia.org/iev/iev.nsf/display?openform&ievref=131-11-42",
      "supports": "P is active power; unit watt (W). V×I path computes P, not apparent power S.",
      "kind": "standard",
      "accessed": "2026-09-05",
      "clause": "IEV 131-11-42"
    },
    {
      "title": "IEC 60050 — International Electrotechnical Vocabulary",
      "section": "Power factor (IEV 131-11-46)",
      "url": "https://www.electropedia.org/iev/iev.nsf/display?openform&ievref=131-11-46",
      "supports": "λ = |P| / S; AC V×I path multiplies by λ",
      "kind": "standard",
      "accessed": "2026-09-05",
      "clause": "IEV 131-11-46"
    },
    {
      "title": "IEEE Std 1459-2025",
      "section": "Power factor and real vs apparent power",
      "url": "https://standards.ieee.org/ieee/1459/7578/",
      "supports": "PF on AC V×I path; power triangle context",
      "kind": "standard",
      "accessed": "2026-09-05",
      "publisher": "IEEE",
      "published": "2025-05-16",
      "errata_checked": true
    },
    {
      "title": "BIPM SI Brochure (9th edition, version 4.01)",
      "section": "SI units for watt, volt, ampere, and joule",
      "url": "https://www.bipm.org/en/publications/si-brochure",
      "supports": "W = J/s; DC P = V·I; P = I²R = V²/R for ohmic dissipation",
      "kind": "reference",
      "accessed": "2026-09-05",
      "published": "2026-06",
      "doi": "https://doi.org/10.59161/AUEZ1291"
    },
    {
      "title": "NIST Guide to the SI (SP 811)",
      "section": "Watt as joule per second",
      "url": "https://www.nist.gov/pml/special-publication-811",
      "supports": "W = J/s; SI relationships for V, A, Ω, W",
      "kind": "reference"
    }
  ],
  "methods": [],
  "fingerprint": "sha256:9fa7e190c6ae1b9eb54a06a2deec231491e27bdbfe5791cee757f494cb632c56",
  "tests": [
    {
      "id": "5V-2A",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "power-vi",
        "a": 5,
        "b": 2,
        "phase": "single",
        "pf": 1
      },
      "expect": 10,
      "expectWarning": null,
      "actual": 10,
      "tol": 0.01
    },
    {
      "id": "230V-10A",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "power-vi",
        "a": 230,
        "b": 10,
        "phase": "single",
        "pf": 1
      },
      "expect": 2300,
      "expectWarning": null,
      "actual": 2300,
      "tol": 0.01
    },
    {
      "id": "120V-10A",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "power-vi",
        "a": 120,
        "b": 10,
        "phase": "single",
        "pf": 1
      },
      "expect": 1200,
      "expectWarning": null,
      "actual": 1200,
      "tol": 0.01
    },
    {
      "id": "I2R",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "power-ir",
        "a": 10,
        "b": 0.5
      },
      "expect": 2.5,
      "expectWarning": null,
      "actual": 2.5,
      "tol": 0.01
    },
    {
      "id": "I2R-2x-I",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "power-ir",
        "a": 10,
        "b": 1
      },
      "expect": 10,
      "expectWarning": null,
      "actual": 10,
      "tol": 0.01
    },
    {
      "id": "3phi",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "power-vi",
        "a": 400,
        "b": 20,
        "phase": "three",
        "pf": 0.9
      },
      "expect": 12470.77,
      "expectWarning": null,
      "actual": 12470.765814495917,
      "tol": 1
    },
    {
      "id": "from-energy",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "power-energy",
        "a": 3600,
        "b": 3600
      },
      "expect": 1,
      "expectWarning": null,
      "actual": 1,
      "tol": 0.001
    },
    {
      "id": "linear-2x-V",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "power-vi",
        "a": 460,
        "b": 10,
        "phase": "single",
        "pf": 1
      },
      "expect": 4600,
      "expectWarning": null,
      "actual": 4600,
      "tol": 0.01
    },
    {
      "id": "linear-half-PF",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "power-vi",
        "a": 230,
        "b": 10,
        "phase": "single",
        "pf": 0.5
      },
      "expect": 1150,
      "expectWarning": null,
      "actual": 1150,
      "tol": 0.01
    },
    {
      "id": "soft-zero-V",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "power-vi",
        "a": 0,
        "b": 10,
        "phase": "single",
        "pf": 1
      },
      "expect": 0,
      "expectWarning": null,
      "actual": 0,
      "tol": 1e-12
    },
    {
      "id": "soft-zero-I",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "power-vi",
        "a": 230,
        "b": 0,
        "phase": "single",
        "pf": 1
      },
      "expect": 0,
      "expectWarning": null,
      "actual": 0,
      "tol": 1e-12
    },
    {
      "id": "pf-zero-is-zero-power",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "power-vi",
        "a": 230,
        "b": 10,
        "phase": "single",
        "pf": 0
      },
      "expect": 0,
      "expectWarning": null,
      "actual": 0,
      "tol": 1e-12
    },
    {
      "id": "pf-gt-1",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "power-vi",
        "a": 230,
        "b": 10,
        "phase": "single",
        "pf": 1.1
      },
      "expectError": "INVALID_POWER_FACTOR",
      "code": "INVALID_POWER_FACTOR",
      "error": "power_factor must be in [0, 1]"
    },
    {
      "id": "pf-negative",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "power-vi",
        "a": 230,
        "b": 10,
        "phase": "single",
        "pf": -0.1
      },
      "expectError": "INVALID_POWER_FACTOR",
      "code": "INVALID_POWER_FACTOR",
      "error": "power_factor must be in [0, 1]"
    },
    {
      "id": "zero-dt-invalid",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "power-energy",
        "a": 3600,
        "b": 0
      },
      "expectError": "INVALID_TIME_INTERVAL",
      "code": "INVALID_TIME_INTERVAL",
      "error": "Δt must be greater than zero"
    },
    {
      "id": "zero-energy-zero-dt-invalid",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "power-energy",
        "a": 0,
        "b": 0
      },
      "expectError": "INVALID_TIME_INTERVAL",
      "code": "INVALID_TIME_INTERVAL",
      "error": "Δt must be greater than zero"
    },
    {
      "id": "named-vi-fields",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "vi_ac_single",
        "V": 230,
        "I": 10,
        "power_factor": 0.8
      },
      "expect": 1840,
      "expectWarning": null,
      "actual": 1840,
      "tol": 1e-12
    },
    {
      "id": "named-three-ll",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "vi_ac_three_phase_ll",
        "V": 400,
        "I": 20,
        "power_factor": 0.9
      },
      "expect": 12470.766,
      "expectWarning": null,
      "actual": 12470.765814495917,
      "tol": 0.01
    },
    {
      "id": "boundary-dt-negative",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "power-energy",
        "E": 3600,
        "dt": -1
      },
      "expectError": "INVALID_TIME_INTERVAL",
      "code": "INVALID_TIME_INTERVAL",
      "error": "Δt must be greater than zero"
    },
    {
      "id": "boundary-neg-R",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "power-ir",
        "R": -1,
        "I": 1
      },
      "expectError": "VALUE_MUST_BE_NON_NEGATIVE",
      "code": "VALUE_MUST_BE_NON_NEGATIVE",
      "error": "R must be ≥ 0"
    },
    {
      "id": "boundary-blank-pf-default",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "power-vi",
        "V": 230,
        "I": 10,
        "phase": "single"
      },
      "expect": 2300,
      "expectWarning": null,
      "actual": 2300,
      "tol": 1e-12
    },
    {
      "id": "property-vi",
      "ok": true,
      "kind": "property",
      "detail": "230×10",
      "expect": 2300,
      "actual": 2300
    },
    {
      "id": "property-pf0",
      "ok": true,
      "kind": "property",
      "detail": "PF=0 → 0 W",
      "expect": 0,
      "actual": 0
    },
    {
      "id": "property-3phi",
      "ok": true,
      "kind": "property",
      "detail": "3φ L-L",
      "expect": 12470.765814495917,
      "actual": 12470.765814495917
    },
    {
      "id": "property-i2r",
      "ok": true,
      "kind": "property",
      "detail": "I²R",
      "expect": 2.5,
      "actual": 2.5
    },
    {
      "id": "property-energy",
      "ok": true,
      "kind": "property",
      "detail": "E/Δt",
      "expect": 1,
      "actual": 1
    }
  ],
  "tier": "engine_tested",
  "verification": {
    "tests": {
      "passed": 26,
      "total": 26,
      "golden": 14,
      "boundary": 7,
      "property": 5
    },
    "contract_checks": {
      "passed": 1,
      "total": 1
    }
  },
  "evidence_core_generated_at": "2026-09-12T23:10:59.103Z",
  "rendered_at": "2026-09-16T22:03:43.703Z",
  "release_integrity": {
    "status": "verified",
    "scope": "workspace",
    "production_attestation_required": true,
    "calculation_version": "1.3.0",
    "artifacts": {
      "engine": "1.3.0",
      "page": "1.3.0",
      "capability": "1.3.0",
      "evidence": "1.3.0",
      "input_schema": "1.3.0",
      "output_schema": "1.3.0",
      "mcp_contract": "1.3.0"
    },
    "digests": {
      "input_schema_sha256": "2e541d9c0ab753ca0b0140f198ccdec21056ab1f12cc61f59078c2cb5c22c6c7",
      "output_schema_sha256": "f6df0c7463bbd2fff8bf0bc4c2ba6082e86d1558b9597b25c8dc670a80c83bcc",
      "evidence_sha256": "6bdb07bd1d6bb519c0d6a83f7c931bcfe3730e1beae9001a37488f686a216ed5",
      "evidence_core_sha256": "6bdb07bd1d6bb519c0d6a83f7c931bcfe3730e1beae9001a37488f686a216ed5",
      "capability_sha256": "30ffafcf68c8e646cee2eb395d490d69a7966fb54e50e4fc778e6982c9a4316c",
      "engine_sha256": "c8d4ccdbfeaf61d7b024d4e1babb0c2ba3b324c1b37bd0cb456a526d8d2b1bd1",
      "mcp_contract_sha256": "863098b311a7b17dc4b229a6302b90b3545b175f716e5d84772c7be8e9716b86"
    },
    "contract_checks": {
      "total": 1,
      "passed": 1,
      "failed": 0,
      "items": [
        {
          "id": "release-artifacts-aligned",
          "status": "pass",
          "detail": "1.3.0"
        }
      ]
    },
    "report": "https://www.calculatorx.com/.well-known/calculatorx-release-integrity.json"
  }
}
