{
  "format": "lemonergy/charging-runs@1",
  "engineSha256": "9b68a0e34d8a4294d683838fc60adfdcfd405296013133d1943c1a70e77247a1",
  "environment": {
    "node": "v24.19.0",
    "platform": "win32"
  },
  "qualification": "Native execution of authored reduced models. No measured battery, vehicle, grid-protection or hardware-interoperability qualification is asserted.",
  "runs": [
    {
      "id": "charging-home",
      "modelChecksum": "fnv1a32:c7ae7c38",
      "engineSha256": "9b68a0e34d8a4294d683838fc60adfdcfd405296013133d1943c1a70e77247a1",
      "samples": 481,
      "measuredRuntimeMs": 365.9192000000003,
      "signalSelection": [
        "signal:battery-1/socSignal",
        "policy-1/state",
        "policy-1/reason",
        "policy-1/departureShortfallJ",
        "site/totalAllocated",
        "battery-1/soc",
        "battery-1/loss",
        "charger-1/state",
        "charger-1/reason",
        "charger-1/chargeCurrent",
        "charger-1/gridPower",
        "charger-1/loss",
        "charger-1/energyJ",
        "charger-1/gridEnergyJ",
        "charger-1/cost"
      ],
      "first": {
        "timeS": 0,
        "values": {
          "signal:battery-1/socSignal": 0.25,
          "policy-1/state": 1,
          "policy-1/reason": 3,
          "policy-1/departureShortfallJ": 0,
          "site/totalAllocated": 0,
          "battery-1/soc": 0.25,
          "battery-1/loss": 0,
          "charger-1/state": 0,
          "charger-1/reason": 0,
          "charger-1/chargeCurrent": 0,
          "charger-1/gridPower": 0,
          "charger-1/loss": 0,
          "charger-1/energyJ": 0,
          "charger-1/gridEnergyJ": 0,
          "charger-1/cost": 0
        }
      },
      "last": {
        "timeS": 28800,
        "values": {
          "signal:battery-1/socSignal": 0.8002781743773195,
          "policy-1/state": 4.000000000526356,
          "policy-1/reason": 5.0000000007484005,
          "policy-1/departureShortfallJ": 0,
          "site/totalAllocated": 0,
          "battery-1/soc": 0.8002781743773195,
          "battery-1/loss": 0,
          "charger-1/state": 5,
          "charger-1/reason": 1,
          "charger-1/chargeCurrent": 0,
          "charger-1/gridPower": 0,
          "charger-1/loss": 0,
          "charger-1/energyJ": 72230400.00000003,
          "charger-1/gridEnergyJ": 76031999.99999991,
          "charger-1/cost": 2.1119999999999974
        }
      },
      "trace": "./traces/charging-home.csv",
      "traceSha256": "f6794ec0a8d3b604a28b284ee5447b123360484b4483f4632e2364b8318abc3a",
      "summary": {
        "format": "lemonergy/charging-summary@1",
        "preset": "home",
        "strategy": "scheduled",
        "modelChecksum": "fnv1a32:c7ae7c38",
        "engine": "rust-wasm-physical",
        "observedUntilS": 28800,
        "importEnergyKWh": 21.119999999999976,
        "exportEnergyKWh": 0,
        "deliveredEnergyKWh": 20.064000000000007,
        "cost": 2.1119999999999974,
        "peakImportKW": 7.200000000000402,
        "peakExportKW": 0,
        "shortfallKWh": 0,
        "vehicles": [
          {
            "id": "battery-1",
            "initialSoc": 0.25,
            "finalSoc": 0.8002781743773195,
            "targetSoc": 0.8,
            "atDeparture": true,
            "departureCaptured": true,
            "departurePending": false,
            "captureEvidence": "Native supervisory observation at 28800 s",
            "shortfallKWh": 0,
            "shortfallBasis": "Native sampled departure capture",
            "ready": true
          }
        ],
        "states": {
          "charger-1": [
            "idle",
            "constant-current",
            "inhibited"
          ]
        },
        "assumptions": [
          "Original reduced physical example with authored parameters; no measured vehicle, charger or tariff calibration.",
          "Battery OCV varies linearly with SOC; resistance is fixed. Temperature is an external supervisory input, not a predicted thermal or ageing state.",
          "Costs use one user-authored currency unit without taxes, demand charges or currency conversion. Peak power is the maximum retained native sample.",
          "All converters are assumed compatible by the user. Connector negotiation, protection hardware and communication protocols are outside this model."
        ],
        "departurePending": false,
        "ready": true
      },
      "diagnostics": {
        "equations": 37,
        "unknowns": 37,
        "operations": 199,
        "sampledControls": 2,
        "breakpoints": 0,
        "method": "Adaptive backward Euler; consistent initialization; bounded damped Newton; accepted-time sampled controls",
        "indexPolicy": "Index-1 electrical/gas/shaft residuals; supported mechanical holonomic constraints reduced analytically to acceleration equations. Higher-index or singular circuits refuse.",
        "acceptedSteps": 480,
        "rejectedSteps": 0,
        "peakScaledResidual": 7.484004527213983e-10
      }
    },
    {
      "id": "charging-depot",
      "modelChecksum": "fnv1a32:819739d6",
      "engineSha256": "9b68a0e34d8a4294d683838fc60adfdcfd405296013133d1943c1a70e77247a1",
      "samples": 481,
      "measuredRuntimeMs": 6289.166300000001,
      "signalSelection": [
        "signal:battery-1/socSignal",
        "policy-1/state",
        "policy-1/reason",
        "policy-1/departureShortfallJ",
        "signal:battery-2/socSignal",
        "policy-2/state",
        "policy-2/reason",
        "policy-2/departureShortfallJ",
        "signal:battery-3/socSignal",
        "policy-3/state",
        "policy-3/reason",
        "policy-3/departureShortfallJ",
        "site/totalAllocated",
        "battery-1/soc",
        "battery-1/loss",
        "charger-1/state",
        "charger-1/reason",
        "charger-1/chargeCurrent",
        "charger-1/gridPower",
        "charger-1/loss",
        "charger-1/energyJ",
        "charger-1/gridEnergyJ",
        "charger-1/cost",
        "battery-2/soc",
        "battery-2/loss",
        "charger-2/state",
        "charger-2/reason",
        "charger-2/chargeCurrent",
        "charger-2/gridPower",
        "charger-2/loss",
        "charger-2/energyJ",
        "charger-2/gridEnergyJ"
      ],
      "first": {
        "timeS": 0,
        "values": {
          "signal:battery-1/socSignal": 0.25,
          "policy-1/state": 1,
          "policy-1/reason": 3,
          "policy-1/departureShortfallJ": 0,
          "signal:battery-2/socSignal": 0.25,
          "policy-2/state": 1,
          "policy-2/reason": 3,
          "policy-2/departureShortfallJ": 0,
          "signal:battery-3/socSignal": 0.25,
          "policy-3/state": 1,
          "policy-3/reason": 3,
          "policy-3/departureShortfallJ": 0,
          "site/totalAllocated": 0,
          "battery-1/soc": 0.25,
          "battery-1/loss": 0,
          "charger-1/state": 0,
          "charger-1/reason": 0,
          "charger-1/chargeCurrent": 0,
          "charger-1/gridPower": 0,
          "charger-1/loss": 0,
          "charger-1/energyJ": 0,
          "charger-1/gridEnergyJ": 0,
          "charger-1/cost": 0,
          "battery-2/soc": 0.25,
          "battery-2/loss": 0,
          "charger-2/state": 0,
          "charger-2/reason": 0,
          "charger-2/chargeCurrent": 0,
          "charger-2/gridPower": 0,
          "charger-2/loss": 0,
          "charger-2/energyJ": 0,
          "charger-2/gridEnergyJ": 0
        }
      },
      "last": {
        "timeS": 28800,
        "values": {
          "signal:battery-1/socSignal": 0.800821500149525,
          "policy-1/state": 4,
          "policy-1/reason": 5,
          "policy-1/departureShortfallJ": 0,
          "signal:battery-2/socSignal": 0.800821500149525,
          "policy-2/state": 4,
          "policy-2/reason": 5,
          "policy-2/departureShortfallJ": 0,
          "signal:battery-3/socSignal": 0.800821500149525,
          "policy-3/state": 4.000000000526356,
          "policy-3/reason": 5.0000000007484005,
          "policy-3/departureShortfallJ": 0,
          "site/totalAllocated": 0,
          "battery-1/soc": 0.800821500149525,
          "battery-1/loss": 0,
          "charger-1/state": 5,
          "charger-1/reason": 1,
          "charger-1/chargeCurrent": 0,
          "charger-1/gridPower": 0,
          "charger-1/loss": 0,
          "charger-1/energyJ": 72314000,
          "charger-1/gridEnergyJ": 76119999.99999994,
          "charger-1/cost": 2.1144444444444535,
          "battery-2/soc": 0.800821500149525,
          "battery-2/loss": 0,
          "charger-2/state": 5,
          "charger-2/reason": 1,
          "charger-2/chargeCurrent": 0,
          "charger-2/gridPower": 0,
          "charger-2/loss": 0,
          "charger-2/energyJ": 72314000,
          "charger-2/gridEnergyJ": 76119999.99999994
        }
      },
      "trace": "./traces/charging-depot.csv",
      "traceSha256": "09c89bd6757e9821a54959135aa167328067d842a5c8909464b8a30e66126b84",
      "summary": {
        "format": "lemonergy/charging-summary@1",
        "preset": "depot",
        "strategy": "scheduled",
        "modelChecksum": "fnv1a32:819739d6",
        "engine": "rust-wasm-physical",
        "observedUntilS": 28800,
        "importEnergyKWh": 63.43333333333328,
        "exportEnergyKWh": 0,
        "deliveredEnergyKWh": 60.26166666666667,
        "cost": 6.34333333333336,
        "peakImportKW": 22.000000000000973,
        "peakExportKW": 0,
        "shortfallKWh": 0,
        "vehicles": [
          {
            "id": "battery-1",
            "initialSoc": 0.25,
            "finalSoc": 0.800821500149525,
            "targetSoc": 0.8,
            "atDeparture": true,
            "departureCaptured": true,
            "departurePending": false,
            "captureEvidence": "Native supervisory observation at 28800 s",
            "shortfallKWh": 0,
            "shortfallBasis": "Native sampled departure capture",
            "ready": true
          },
          {
            "id": "battery-2",
            "initialSoc": 0.25,
            "finalSoc": 0.800821500149525,
            "targetSoc": 0.8,
            "atDeparture": true,
            "departureCaptured": true,
            "departurePending": false,
            "captureEvidence": "Native supervisory observation at 28800 s",
            "shortfallKWh": 0,
            "shortfallBasis": "Native sampled departure capture",
            "ready": true
          },
          {
            "id": "battery-3",
            "initialSoc": 0.25,
            "finalSoc": 0.800821500149525,
            "targetSoc": 0.8,
            "atDeparture": true,
            "departureCaptured": true,
            "departurePending": false,
            "captureEvidence": "Native supervisory observation at 28800 s",
            "shortfallKWh": 0,
            "shortfallBasis": "Native sampled departure capture",
            "ready": true
          }
        ],
        "states": {
          "charger-1": [
            "idle",
            "constant-current",
            "inhibited"
          ],
          "charger-2": [
            "idle",
            "constant-current",
            "inhibited"
          ],
          "charger-3": [
            "idle",
            "constant-current",
            "inhibited"
          ]
        },
        "assumptions": [
          "Original reduced physical example with authored parameters; no measured vehicle, charger or tariff calibration.",
          "Battery OCV varies linearly with SOC; resistance is fixed. Temperature is an external supervisory input, not a predicted thermal or ageing state.",
          "Costs use one user-authored currency unit without taxes, demand charges or currency conversion. Peak power is the maximum retained native sample.",
          "All converters are assumed compatible by the user. Connector negotiation, protection hardware and communication protocols are outside this model."
        ],
        "departurePending": false,
        "ready": true
      },
      "diagnostics": {
        "equations": 99,
        "unknowns": 99,
        "operations": 537,
        "sampledControls": 6,
        "breakpoints": 0,
        "method": "Adaptive backward Euler; consistent initialization; bounded damped Newton; accepted-time sampled controls",
        "indexPolicy": "Index-1 electrical/gas/shaft residuals; supported mechanical holonomic constraints reduced analytically to acceleration equations. Higher-index or singular circuits refuse.",
        "acceptedSteps": 480,
        "rejectedSteps": 0,
        "peakScaledResidual": 7.484004527213983e-10
      }
    },
    {
      "id": "charging-opportunity",
      "modelChecksum": "fnv1a32:d0d67c66",
      "engineSha256": "9b68a0e34d8a4294d683838fc60adfdcfd405296013133d1943c1a70e77247a1",
      "samples": 975,
      "measuredRuntimeMs": 643.4003000000012,
      "signalSelection": [
        "signal:battery-1/socSignal",
        "policy-1/state",
        "policy-1/reason",
        "policy-1/departureShortfallJ",
        "site/totalAllocated",
        "battery-1/soc",
        "battery-1/loss",
        "charger-1/state",
        "charger-1/reason",
        "charger-1/chargeCurrent",
        "charger-1/gridPower",
        "charger-1/loss",
        "charger-1/energyJ",
        "charger-1/gridEnergyJ",
        "charger-1/cost"
      ],
      "first": {
        "timeS": 0,
        "values": {
          "signal:battery-1/socSignal": 0.3,
          "policy-1/state": 1,
          "policy-1/reason": 2,
          "policy-1/departureShortfallJ": 0,
          "site/totalAllocated": 0,
          "battery-1/soc": 0.3,
          "battery-1/loss": 0,
          "charger-1/state": 0,
          "charger-1/reason": 0,
          "charger-1/chargeCurrent": 0,
          "charger-1/gridPower": 0,
          "charger-1/loss": 0,
          "charger-1/energyJ": 0,
          "charger-1/gridEnergyJ": 0,
          "charger-1/cost": 0
        }
      },
      "last": {
        "timeS": 7200,
        "values": {
          "signal:battery-1/socSignal": 0.8002533647485931,
          "policy-1/state": 4,
          "policy-1/reason": 5,
          "policy-1/departureShortfallJ": 0,
          "site/totalAllocated": 0,
          "battery-1/soc": 0.8002533647485931,
          "battery-1/loss": 0,
          "charger-1/state": 5,
          "charger-1/reason": 11,
          "charger-1/chargeCurrent": 0,
          "charger-1/gridPower": 0,
          "charger-1/loss": 0,
          "charger-1/energyJ": 104159658.4580926,
          "charger-1/gridEnergyJ": 109641745.7453607,
          "charger-1/cost": 3.0456040484822346
        }
      },
      "trace": "./traces/charging-opportunity.csv",
      "traceSha256": "577b9a60c25832f0b3f1db5aee44eb62a10147f3ca3e982104716bb3712350d2",
      "summary": {
        "format": "lemonergy/charging-summary@1",
        "preset": "opportunity",
        "strategy": "opportunity",
        "modelChecksum": "fnv1a32:d0d67c66",
        "engine": "rust-wasm-physical",
        "observedUntilS": 7200,
        "importEnergyKWh": 30.456040484822417,
        "exportEnergyKWh": 0,
        "deliveredEnergyKWh": 28.93323846058128,
        "cost": 3.0456040484822346,
        "peakImportKW": 100.00000000000001,
        "peakExportKW": 0,
        "shortfallKWh": 0,
        "vehicles": [
          {
            "id": "battery-1",
            "initialSoc": 0.3,
            "finalSoc": 0.8002533647485931,
            "targetSoc": 0.8,
            "atDeparture": true,
            "departureCaptured": true,
            "departurePending": false,
            "captureEvidence": "Native supervisory observation at 7200 s",
            "shortfallKWh": 0,
            "shortfallBasis": "Native sampled departure capture",
            "ready": true
          }
        ],
        "states": {
          "charger-1": [
            "idle",
            "constant-current",
            "inhibited"
          ]
        },
        "assumptions": [
          "Original reduced physical example with authored parameters; no measured vehicle, charger or tariff calibration.",
          "Battery OCV varies linearly with SOC; resistance is fixed. Temperature is an external supervisory input, not a predicted thermal or ageing state.",
          "Costs use one user-authored currency unit without taxes, demand charges or currency conversion. Peak power is the maximum retained native sample.",
          "All converters are assumed compatible by the user. Connector negotiation, protection hardware and communication protocols are outside this model.",
          "Opportunity stop availability is a separate physical input shared by every comparison policy; no charging is possible between stops."
        ],
        "departurePending": false,
        "ready": true
      },
      "diagnostics": {
        "equations": 38,
        "unknowns": 38,
        "operations": 215,
        "sampledControls": 2,
        "breakpoints": 4,
        "method": "Adaptive backward Euler; consistent initialization; bounded damped Newton; accepted-time sampled controls",
        "indexPolicy": "Index-1 electrical/gas/shaft residuals; supported mechanical holonomic constraints reduced analytically to acceleration equations. Higher-index or singular circuits refuse.",
        "acceptedSteps": 974,
        "rejectedSteps": 3,
        "peakScaledResidual": 5.26355847796367e-10
      }
    },
    {
      "id": "charging-trickle",
      "modelChecksum": "fnv1a32:425fad19",
      "engineSha256": "9b68a0e34d8a4294d683838fc60adfdcfd405296013133d1943c1a70e77247a1",
      "samples": 601,
      "measuredRuntimeMs": 551.7309999999998,
      "signalSelection": [
        "signal:battery-1/socSignal",
        "policy-1/state",
        "policy-1/reason",
        "policy-1/departureShortfallJ",
        "site/totalAllocated",
        "battery-1/soc",
        "battery-1/loss",
        "charger-1/state",
        "charger-1/reason",
        "charger-1/chargeCurrent",
        "charger-1/gridPower",
        "charger-1/loss",
        "charger-1/energyJ",
        "charger-1/gridEnergyJ",
        "charger-1/cost"
      ],
      "first": {
        "timeS": 0,
        "values": {
          "signal:battery-1/socSignal": 0.6,
          "policy-1/state": 2,
          "policy-1/reason": 0,
          "policy-1/departureShortfallJ": 0,
          "site/totalAllocated": 300,
          "battery-1/soc": 0.6,
          "battery-1/loss": 0.04694082895861573,
          "charger-1/state": 2,
          "charger-1/reason": 6,
          "charger-1/chargeCurrent": 0.7660028472339848,
          "charger-1/gridPower": 300.00000015790675,
          "charger-1/loss": 15.000000000089077,
          "charger-1/energyJ": 0,
          "charger-1/gridEnergyJ": 0,
          "charger-1/cost": 0
        }
      },
      "last": {
        "timeS": 36000,
        "values": {
          "signal:battery-1/socSignal": 0.8003393424430492,
          "policy-1/state": 4.000000000526356,
          "policy-1/reason": 5.0000000007484005,
          "policy-1/departureShortfallJ": 0,
          "site/totalAllocated": 0,
          "battery-1/soc": 0.8003393424430492,
          "battery-1/loss": 0,
          "charger-1/state": 5,
          "charger-1/reason": 1,
          "charger-1/chargeCurrent": 0,
          "charger-1/gridPower": 2.1382117680737565e-46,
          "charger-1/loss": 1.0691058840368783e-47,
          "charger-1/energyJ": 5540400.000000023,
          "charger-1/gridEnergyJ": 5832000.000000001,
          "charger-1/cost": 0.16200000000000012
        }
      },
      "trace": "./traces/charging-trickle.csv",
      "traceSha256": "c674c488fe84328644440121db213eede3f565b7fbea0b8107fa6dd37256df97",
      "summary": {
        "format": "lemonergy/charging-summary@1",
        "preset": "trickle",
        "strategy": "immediate",
        "modelChecksum": "fnv1a32:425fad19",
        "engine": "rust-wasm-physical",
        "observedUntilS": 36000,
        "importEnergyKWh": 1.6200000000000003,
        "exportEnergyKWh": 0,
        "deliveredEnergyKWh": 1.5390000000000064,
        "cost": 0.16200000000000012,
        "peakImportKW": 0.30000000015790673,
        "peakExportKW": 0,
        "shortfallKWh": 0,
        "vehicles": [
          {
            "id": "battery-1",
            "initialSoc": 0.6,
            "finalSoc": 0.8003393424430492,
            "targetSoc": 0.8,
            "atDeparture": true,
            "departureCaptured": true,
            "departurePending": false,
            "captureEvidence": "Native supervisory observation at 36000 s",
            "shortfallKWh": 0,
            "shortfallBasis": "Native sampled departure capture",
            "ready": true
          }
        ],
        "states": {
          "charger-1": [
            "constant-current",
            "inhibited"
          ]
        },
        "assumptions": [
          "Original reduced physical example with authored parameters; no measured vehicle, charger or tariff calibration.",
          "Battery OCV varies linearly with SOC; resistance is fixed. Temperature is an external supervisory input, not a predicted thermal or ageing state.",
          "Costs use one user-authored currency unit without taxes, demand charges or currency conversion. Peak power is the maximum retained native sample.",
          "All converters are assumed compatible by the user. Connector negotiation, protection hardware and communication protocols are outside this model.",
          "This is bounded low-current charging with a target and CC/CV cutoff. Precharge applies only below its voltage threshold; lithium is not held indefinitely in lead-acid float."
        ],
        "departurePending": false,
        "ready": true
      },
      "diagnostics": {
        "equations": 37,
        "unknowns": 37,
        "operations": 199,
        "sampledControls": 2,
        "breakpoints": 0,
        "method": "Adaptive backward Euler; consistent initialization; bounded damped Newton; accepted-time sampled controls",
        "indexPolicy": "Index-1 electrical/gas/shaft residuals; supported mechanical holonomic constraints reduced analytically to acceleration equations. Higher-index or singular circuits refuse.",
        "acceptedSteps": 600,
        "rejectedSteps": 0,
        "peakScaledResidual": 7.484004527213983e-10
      }
    },
    {
      "id": "charging-maintenance",
      "modelChecksum": "fnv1a32:aee0bd1e",
      "engineSha256": "9b68a0e34d8a4294d683838fc60adfdcfd405296013133d1943c1a70e77247a1",
      "samples": 1081,
      "measuredRuntimeMs": 816.0311000000002,
      "signalSelection": [
        "signal:battery-1/socSignal",
        "policy-1/state",
        "policy-1/reason",
        "policy-1/departureShortfallJ",
        "site/totalAllocated",
        "battery-1/soc",
        "battery-1/loss",
        "charger-1/state",
        "charger-1/reason",
        "charger-1/chargeCurrent",
        "charger-1/gridPower",
        "charger-1/loss",
        "charger-1/energyJ",
        "charger-1/gridEnergyJ",
        "charger-1/cost"
      ],
      "first": {
        "timeS": 0,
        "values": {
          "signal:battery-1/socSignal": 0.75,
          "policy-1/state": 2,
          "policy-1/reason": 0,
          "policy-1/departureShortfallJ": 0,
          "site/totalAllocated": 100,
          "battery-1/soc": 0.75,
          "battery-1/loss": 3.2400000000297213,
          "charger-1/state": 2,
          "charger-1/reason": 6,
          "charger-1/chargeCurrent": 3.600000000000001,
          "charger-1/gridPower": 54.568421047276004,
          "charger-1/loss": 2.728421052635955,
          "charger-1/energyJ": 0,
          "charger-1/gridEnergyJ": 0,
          "charger-1/cost": 0
        }
      },
      "last": {
        "timeS": 10800,
        "values": {
          "signal:battery-1/socSignal": 0.9503390088180238,
          "policy-1/state": 4,
          "policy-1/reason": 5,
          "policy-1/departureShortfallJ": 0,
          "site/totalAllocated": 0,
          "battery-1/soc": 0.9503390088180238,
          "battery-1/loss": 0,
          "charger-1/state": 5,
          "charger-1/reason": 1,
          "charger-1/chargeCurrent": 0,
          "charger-1/gridPower": 0,
          "charger-1/loss": 0,
          "charger-1/energyJ": 103855.74217126293,
          "charger-1/gridEnergyJ": 109321.83386448747,
          "charger-1/cost": 0.0030367176073468707
        }
      },
      "trace": "./traces/charging-maintenance.csv",
      "traceSha256": "e6121177a4646e96c20f1a0e3ec66ec95190be9997af5f34f4523bfcb3cff924",
      "summary": {
        "format": "lemonergy/charging-summary@1",
        "preset": "maintenance",
        "strategy": "maintenance",
        "modelChecksum": "fnv1a32:aee0bd1e",
        "engine": "rust-wasm-physical",
        "observedUntilS": 10800,
        "importEnergyKWh": 0.030367176073468744,
        "exportEnergyKWh": 0,
        "deliveredEnergyKWh": 0.028848817269795258,
        "cost": 0.0030367176073468707,
        "peakImportKW": 0.054568421047276,
        "peakExportKW": 0,
        "shortfallKWh": 0,
        "vehicles": [
          {
            "id": "battery-1",
            "initialSoc": 0.75,
            "finalSoc": 0.9503390088180238,
            "targetSoc": 0.95,
            "atDeparture": true,
            "departureCaptured": true,
            "departurePending": false,
            "captureEvidence": "Native supervisory observation at 10800 s",
            "shortfallKWh": 0,
            "shortfallBasis": "Native sampled departure capture",
            "ready": true
          }
        ],
        "states": {
          "charger-1": [
            "constant-current",
            "constant-voltage",
            "float",
            "inhibited"
          ]
        },
        "assumptions": [
          "Original reduced physical example with authored parameters; no measured vehicle, charger or tariff calibration.",
          "Battery OCV varies linearly with SOC; resistance is fixed. Temperature is an external supervisory input, not a predicted thermal or ageing state.",
          "Costs use one user-authored currency unit without taxes, demand charges or currency conversion. Peak power is the maximum retained native sample.",
          "All converters are assumed compatible by the user. Connector negotiation, protection hardware and communication protocols are outside this model.",
          "The lead-acid float example uses an illustrative effective OCV curve to exercise regulation states. It is not a measured lead-acid electrochemical model."
        ],
        "departurePending": false,
        "ready": true
      },
      "diagnostics": {
        "equations": 37,
        "unknowns": 37,
        "operations": 199,
        "sampledControls": 2,
        "breakpoints": 0,
        "method": "Adaptive backward Euler; consistent initialization; bounded damped Newton; accepted-time sampled controls",
        "indexPolicy": "Index-1 electrical/gas/shaft residuals; supported mechanical holonomic constraints reduced analytically to acceleration equations. Higher-index or singular circuits refuse.",
        "acceptedSteps": 1080,
        "rejectedSteps": 0,
        "peakScaledResidual": 9.968061931431293e-10
      }
    },
    {
      "id": "charging-v2g",
      "modelChecksum": "fnv1a32:56ab5719",
      "engineSha256": "9b68a0e34d8a4294d683838fc60adfdcfd405296013133d1943c1a70e77247a1",
      "samples": 527,
      "measuredRuntimeMs": 341.41419999999925,
      "signalSelection": [
        "signal:battery/socSignal",
        "dispatch/state",
        "dispatch/reason",
        "dispatch/departureShortfallJ",
        "battery/soc",
        "battery/loss",
        "exchange/gridPower",
        "exchange/loss",
        "exchange/importEnergyJ",
        "exchange/exportEnergyJ",
        "exchange/netCost"
      ],
      "first": {
        "timeS": 0,
        "values": {
          "signal:battery/socSignal": 0.8,
          "dispatch/state": 4,
          "dispatch/reason": 4,
          "dispatch/departureShortfallJ": 0,
          "battery/soc": 0.8,
          "battery/loss": 0,
          "exchange/gridPower": 0,
          "exchange/loss": 0,
          "exchange/importEnergyJ": 0,
          "exchange/exportEnergyJ": 0,
          "exchange/netCost": 0
        }
      },
      "last": {
        "timeS": 14400,
        "values": {
          "signal:battery/socSignal": 0.799999999999905,
          "dispatch/state": 6,
          "dispatch/reason": 5,
          "dispatch/departureShortfallJ": 0.000024633095563331153,
          "battery/soc": 0.799999999999905,
          "battery/loss": -2.8282443060579244e-14,
          "exchange/gridPower": 2.608596538755777e-7,
          "exchange/loss": 3.505627787838193e-8,
          "exchange/importEnergyJ": 20080437.606820203,
          "exchange/exportEnergyJ": 17999999.999997366,
          "exchange/netCost": -0.32663019943142046
        }
      },
      "trace": "./traces/charging-v2g.csv",
      "traceSha256": "6192da114a040173a34dc29c6ca5ed84c8d833c90def2cacc940bbbf87017fc9",
      "summary": {
        "format": "lemonergy/charging-summary@1",
        "preset": "v2g",
        "strategy": "scheduled",
        "modelChecksum": "fnv1a32:56ab5719",
        "engine": "rust-wasm-physical",
        "observedUntilS": 14400,
        "importEnergyKWh": 5.577899335227834,
        "exportEnergyKWh": 4.999999999999268,
        "deliveredEnergyKWh": 4.999999999999268,
        "cost": -0.32663019943142046,
        "peakImportKW": 7.200000000000162,
        "peakExportKW": 5.000000000000001,
        "shortfallKWh": 6.842526545369765e-12,
        "vehicles": [
          {
            "id": "battery",
            "initialSoc": 0.8,
            "finalSoc": 0.799999999999905,
            "reserveSoc": 0.4,
            "targetSoc": 0.8,
            "ready": true,
            "reserveMaintained": true,
            "atDeparture": true,
            "departureCaptured": true,
            "departurePending": false,
            "captureEvidence": "Native supervisory observation at 14400 s",
            "shortfallKWh": 6.842526545369765e-12,
            "shortfallBasis": "Native sampled departure capture"
          }
        ],
        "states": {},
        "assumptions": [
          "Original reduced physical example with authored parameters; no measured vehicle, charger or tariff calibration.",
          "Battery OCV varies linearly with SOC; resistance is fixed. Temperature is an external supervisory input, not a predicted thermal or ageing state.",
          "Costs use one user-authored currency unit without taxes, demand charges or currency conversion. Peak power is the maximum retained native sample.",
          "All converters are assumed compatible by the user. Connector negotiation, protection hardware and communication protocols are outside this model.",
          "The grid, home or load is an average power boundary. AC waveforms, frequency, islanding, transfer switches and installation feasibility are not simulated.",
          "Departure shortfall is the native dispatch policy’s SOC-target energy deficit, distinct from the reserve constraint. Supplying a load can preserve reserve while leaving the departure target unmet."
        ],
        "departurePending": false,
        "ready": true
      },
      "diagnostics": {
        "equations": 31,
        "unknowns": 31,
        "operations": 196,
        "sampledControls": 1,
        "breakpoints": 0,
        "method": "Adaptive backward Euler; consistent initialization; bounded damped Newton; accepted-time sampled controls",
        "indexPolicy": "Index-1 electrical/gas/shaft residuals; supported mechanical holonomic constraints reduced analytically to acceleration equations. Higher-index or singular circuits refuse.",
        "acceptedSteps": 526,
        "rejectedSteps": 84,
        "peakScaledResidual": 9.976418705952805e-10
      }
    },
    {
      "id": "charging-v2v",
      "modelChecksum": "fnv1a32:b5c484e7",
      "engineSha256": "9b68a0e34d8a4294d683838fc60adfdcfd405296013133d1943c1a70e77247a1",
      "samples": 220,
      "measuredRuntimeMs": 254.03700000000026,
      "signalSelection": [
        "signal:recipient/socSignal",
        "dispatch/state",
        "dispatch/reason",
        "dispatch/departureShortfallJ",
        "battery/soc",
        "battery/socSignal",
        "battery/loss",
        "recipient/soc",
        "recipient/loss",
        "exchange/donorPower",
        "exchange/recipientPower",
        "exchange/loss",
        "exchange/energyJ",
        "exchange/donorEnergyJ"
      ],
      "first": {
        "timeS": 0,
        "values": {
          "signal:recipient/socSignal": 0.25,
          "dispatch/state": 2,
          "dispatch/reason": 0,
          "dispatch/departureShortfallJ": 0,
          "battery/soc": 0.8,
          "battery/socSignal": 0.8,
          "battery/loss": 15.835321039888766,
          "recipient/soc": 0.25,
          "recipient/loss": 18.231782970217214,
          "exchange/donorPower": 5555.555555555555,
          "exchange/recipientPower": 5000,
          "exchange/loss": 555.5555555555554,
          "exchange/energyJ": 0,
          "exchange/donorEnergyJ": 0
        }
      },
      "last": {
        "timeS": 10800,
        "values": {
          "signal:recipient/socSignal": 0.7499978428052513,
          "dispatch/state": 6,
          "dispatch/reason": 5,
          "dispatch/departureShortfallJ": 223.65795154726698,
          "battery/soc": 0.364476364080938,
          "battery/socSignal": 0.364476364080938,
          "battery/loss": -2.9901822584551375e-12,
          "recipient/soc": 0.7499978428052513,
          "recipient/loss": -9.738227812648446e-14,
          "exchange/donorPower": 8.612723224866181e-7,
          "exchange/recipientPower": 7.751450902379572e-7,
          "exchange/loss": 8.612723224866139e-8,
          "exchange/energyJ": 52011603.28017648,
          "exchange/donorEnergyJ": 57790670.31130736
        }
      },
      "trace": "./traces/charging-v2v.csv",
      "traceSha256": "dc17edce453aefd817844124eacc97168072c036b0faa05ed25abc6a3342ce00",
      "summary": {
        "format": "lemonergy/charging-summary@1",
        "preset": "v2v",
        "strategy": "immediate",
        "modelChecksum": "fnv1a32:b5c484e7",
        "engine": "rust-wasm-physical",
        "observedUntilS": 10800,
        "importEnergyKWh": 0,
        "exportEnergyKWh": 16.052963975363156,
        "deliveredEnergyKWh": 14.4476675778268,
        "cost": 4.815889192608947,
        "peakImportKW": 0,
        "peakExportKW": 5.555555555555556,
        "shortfallKWh": 0.00006212720876312972,
        "vehicles": [
          {
            "id": "battery",
            "initialSoc": 0.8,
            "finalSoc": 0.364476364080938,
            "reserveSoc": 0.3,
            "ready": true
          },
          {
            "id": "recipient",
            "initialSoc": 0.25,
            "finalSoc": 0.7499978428052513,
            "targetSoc": 0.75,
            "atDeparture": true,
            "departureCaptured": true,
            "departurePending": false,
            "captureEvidence": "Native supervisory observation at 10800 s",
            "shortfallKWh": 0.00006212720876312972,
            "shortfallBasis": "Native sampled departure capture",
            "ready": false
          }
        ],
        "states": {},
        "assumptions": [
          "Original reduced physical example with authored parameters; no measured vehicle, charger or tariff calibration.",
          "Battery OCV varies linearly with SOC; resistance is fixed. Temperature is an external supervisory input, not a predicted thermal or ageing state.",
          "Costs use one user-authored currency unit without taxes, demand charges or currency conversion. Peak power is the maximum retained native sample.",
          "All converters are assumed compatible by the user. Connector negotiation, protection hardware and communication protocols are outside this model.",
          "V2V cost is the authored value of native donor energy at the policy base tariff, not a metered payment or electricity bill."
        ],
        "departurePending": false,
        "ready": false
      },
      "diagnostics": {
        "equations": 37,
        "unknowns": 37,
        "operations": 223,
        "sampledControls": 1,
        "breakpoints": 0,
        "method": "Adaptive backward Euler; consistent initialization; bounded damped Newton; accepted-time sampled controls",
        "indexPolicy": "Index-1 electrical/gas/shaft residuals; supported mechanical holonomic constraints reduced analytically to acceleration equations. Higher-index or singular circuits refuse.",
        "acceptedSteps": 219,
        "rejectedSteps": 5,
        "peakScaledResidual": 8.612723224866182e-10
      }
    },
    {
      "id": "charging-v2h",
      "modelChecksum": "fnv1a32:9cda5417",
      "engineSha256": "9b68a0e34d8a4294d683838fc60adfdcfd405296013133d1943c1a70e77247a1",
      "samples": 301,
      "measuredRuntimeMs": 212.17199999999866,
      "signalSelection": [
        "signal:battery/socSignal",
        "dispatch/state",
        "dispatch/reason",
        "dispatch/departureShortfallJ",
        "battery/soc",
        "battery/loss",
        "exchange/gridPower",
        "exchange/loss",
        "exchange/importEnergyJ",
        "exchange/exportEnergyJ",
        "exchange/netCost"
      ],
      "first": {
        "timeS": 0,
        "values": {
          "signal:battery/socSignal": 0.8,
          "dispatch/state": 4,
          "dispatch/reason": 4,
          "dispatch/departureShortfallJ": 0,
          "battery/soc": 0.8,
          "battery/loss": 0,
          "exchange/gridPower": 0,
          "exchange/loss": 0,
          "exchange/importEnergyJ": 0,
          "exchange/exportEnergyJ": 0,
          "exchange/netCost": 0
        }
      },
      "last": {
        "timeS": 18000,
        "values": {
          "signal:battery/socSignal": 0.4632273155143214,
          "dispatch/state": 6,
          "dispatch/reason": 5,
          "dispatch/departureShortfallJ": 43645739.90934395,
          "battery/soc": 0.4632273155143214,
          "battery/loss": 5.179447653782436e-16,
          "exchange/gridPower": 5.801569795436874e-13,
          "exchange/loss": 5.801569807844584e-13,
          "exchange/importEnergyJ": 0,
          "exchange/exportEnergyJ": 43200000.000000104,
          "exchange/netCost": -1.1999999999999855
        }
      },
      "trace": "./traces/charging-v2h.csv",
      "traceSha256": "9afb362dcb56c07cd36cc35d74746b0ecaa290f1b4ba66ae4c9e5059935ba662",
      "summary": {
        "format": "lemonergy/charging-summary@1",
        "preset": "v2h",
        "strategy": "outage-support",
        "modelChecksum": "fnv1a32:9cda5417",
        "engine": "rust-wasm-physical",
        "observedUntilS": 18000,
        "importEnergyKWh": 0,
        "exportEnergyKWh": 12.000000000000028,
        "deliveredEnergyKWh": 12.000000000000028,
        "cost": -1.1999999999999855,
        "peakImportKW": 5.801569795436874e-16,
        "peakExportKW": 3.0000000000041958,
        "shortfallKWh": 12.123816641484431,
        "vehicles": [
          {
            "id": "battery",
            "initialSoc": 0.8,
            "finalSoc": 0.4632273155143214,
            "reserveSoc": 0.3,
            "targetSoc": 0.8,
            "ready": false,
            "reserveMaintained": true,
            "atDeparture": true,
            "departureCaptured": true,
            "departurePending": false,
            "captureEvidence": "Native supervisory observation at 18000 s",
            "shortfallKWh": 12.123816641484431,
            "shortfallBasis": "Native sampled departure capture"
          }
        ],
        "states": {},
        "assumptions": [
          "Original reduced physical example with authored parameters; no measured vehicle, charger or tariff calibration.",
          "Battery OCV varies linearly with SOC; resistance is fixed. Temperature is an external supervisory input, not a predicted thermal or ageing state.",
          "Costs use one user-authored currency unit without taxes, demand charges or currency conversion. Peak power is the maximum retained native sample.",
          "All converters are assumed compatible by the user. Connector negotiation, protection hardware and communication protocols are outside this model.",
          "The grid, home or load is an average power boundary. AC waveforms, frequency, islanding, transfer switches and installation feasibility are not simulated.",
          "Departure shortfall is the native dispatch policy’s SOC-target energy deficit, distinct from the reserve constraint. Supplying a load can preserve reserve while leaving the departure target unmet."
        ],
        "departurePending": false,
        "ready": false
      },
      "diagnostics": {
        "equations": 31,
        "unknowns": 31,
        "operations": 196,
        "sampledControls": 1,
        "breakpoints": 0,
        "method": "Adaptive backward Euler; consistent initialization; bounded damped Newton; accepted-time sampled controls",
        "indexPolicy": "Index-1 electrical/gas/shaft residuals; supported mechanical holonomic constraints reduced analytically to acceleration equations. Higher-index or singular circuits refuse.",
        "acceptedSteps": 300,
        "rejectedSteps": 0,
        "peakScaledResidual": 5.26355847796367e-10
      }
    },
    {
      "id": "charging-v2l",
      "modelChecksum": "fnv1a32:4bbcb5f4",
      "engineSha256": "9b68a0e34d8a4294d683838fc60adfdcfd405296013133d1943c1a70e77247a1",
      "samples": 481,
      "measuredRuntimeMs": 393.75350000000253,
      "signalSelection": [
        "signal:battery/socSignal",
        "dispatch/state",
        "dispatch/reason",
        "dispatch/departureShortfallJ",
        "battery/soc",
        "battery/loss",
        "exchange/gridPower",
        "exchange/loss",
        "exchange/importEnergyJ",
        "exchange/exportEnergyJ",
        "exchange/netCost"
      ],
      "first": {
        "timeS": 0,
        "values": {
          "signal:battery/socSignal": 0.8,
          "dispatch/state": 3,
          "dispatch/reason": 0,
          "dispatch/departureShortfallJ": 0,
          "battery/soc": 0.8,
          "battery/loss": 0.815032936315462,
          "exchange/gridPower": -1199.9999999998322,
          "exchange/loss": 63.15789473684118,
          "exchange/importEnergyJ": 0,
          "exchange/exportEnergyJ": 0,
          "exchange/netCost": 0
        }
      },
      "last": {
        "timeS": 28800,
        "values": {
          "signal:battery/socSignal": 0.5338976247503402,
          "dispatch/state": 6,
          "dispatch/reason": 5,
          "dispatch/departureShortfallJ": 34486867.83235592,
          "battery/soc": 0.5338976247503402,
          "battery/loss": 3.29739834762626e-17,
          "exchange/gridPower": 2.8231134571085144e-15,
          "exchange/loss": 2.823113489420257e-15,
          "exchange/importEnergyJ": 0,
          "exchange/exportEnergyJ": 34559999.999999925,
          "exchange/netCost": -0.9600000000000007
        }
      },
      "trace": "./traces/charging-v2l.csv",
      "traceSha256": "d8206addf45f2f17bf44fbce3f22fc5d1744fa0119f0bdb6f9c0ec15ec61b1c4",
      "summary": {
        "format": "lemonergy/charging-summary@1",
        "preset": "v2l",
        "strategy": "load-following",
        "modelChecksum": "fnv1a32:4bbcb5f4",
        "engine": "rust-wasm-physical",
        "observedUntilS": 28800,
        "importEnergyKWh": 0,
        "exportEnergyKWh": 9.59999999999998,
        "deliveredEnergyKWh": 9.59999999999998,
        "cost": -0.9600000000000007,
        "peakImportKW": 2.8231134571085144e-18,
        "peakExportKW": 1.2000000000000002,
        "shortfallKWh": 9.579685508987755,
        "vehicles": [
          {
            "id": "battery",
            "initialSoc": 0.8,
            "finalSoc": 0.5338976247503402,
            "reserveSoc": 0.3,
            "targetSoc": 0.8,
            "ready": false,
            "reserveMaintained": true,
            "atDeparture": true,
            "departureCaptured": true,
            "departurePending": false,
            "captureEvidence": "Native supervisory observation at 28800 s",
            "shortfallKWh": 9.579685508987755,
            "shortfallBasis": "Native sampled departure capture"
          }
        ],
        "states": {},
        "assumptions": [
          "Original reduced physical example with authored parameters; no measured vehicle, charger or tariff calibration.",
          "Battery OCV varies linearly with SOC; resistance is fixed. Temperature is an external supervisory input, not a predicted thermal or ageing state.",
          "Costs use one user-authored currency unit without taxes, demand charges or currency conversion. Peak power is the maximum retained native sample.",
          "All converters are assumed compatible by the user. Connector negotiation, protection hardware and communication protocols are outside this model.",
          "The grid, home or load is an average power boundary. AC waveforms, frequency, islanding, transfer switches and installation feasibility are not simulated.",
          "Departure shortfall is the native dispatch policy’s SOC-target energy deficit, distinct from the reserve constraint. Supplying a load can preserve reserve while leaving the departure target unmet."
        ],
        "departurePending": false,
        "ready": false
      },
      "diagnostics": {
        "equations": 31,
        "unknowns": 31,
        "operations": 196,
        "sampledControls": 1,
        "breakpoints": 0,
        "method": "Adaptive backward Euler; consistent initialization; bounded damped Newton; accepted-time sampled controls",
        "indexPolicy": "Index-1 electrical/gas/shaft residuals; supported mechanical holonomic constraints reduced analytically to acceleration equations. Higher-index or singular circuits refuse.",
        "acceptedSteps": 480,
        "rejectedSteps": 0,
        "peakScaledResidual": 3.055902197957039e-10
      }
    }
  ]
}
