{
  "format": "lemonergy/dual-battery-claims@1",
  "reviewedAt": "2026-10-29",
  "sources": [
    {
      "id": "catl-announcement",
      "title": "CATL-issued dual-electric range extension announcement",
      "url": "https://en.prnasia.com/releases/apac/catl-unveils-dual-electric-range-extension-battery-to-accelerate-electric-heavy-duty-truck-adoption-552491.shtml",
      "publishedAt": "2026-10-20",
      "kind": "manufacturer-announcement",
      "scope": "Reported architecture and manufacturer claims; not independent hardware validation."
    },
    {
      "id": "fastsim-2015",
      "title": "Brooker et al., FASTSim: A Model to Estimate Vehicle Efficiency, Cost and Performance",
      "url": "https://doi.org/10.4271/2015-01-0973",
      "publishedAt": "2015-04-14",
      "kind": "paper",
      "scope": "Reduced powertrain modeling with declared vehicle/duty inputs; no external model parameters or results reused."
    },
    {
      "id": "preger-2020",
      "title": "Preger et al., Degradation of Commercial Lithium-Ion Cells as a Function of Chemistry and Cycling Conditions",
      "url": "https://doi.org/10.1149/1945-7111/abae37",
      "publishedAt": "2020-09-02",
      "kind": "paper",
      "scope": "Chemistry and operating-condition dependence of degradation; does not validate lifetime of this truck system."
    }
  ],
  "claims": [
    {
      "id": "independent-reserve",
      "title": "A fixed reserve supports a swappable main pack",
      "status": "manufacturer-claim",
      "source": "catl-announcement",
      "locator": "A Dual-Electric Approach to Range Extension",
      "question": "Does the reserve retain sufficient energy and discharge power at the next demand?",
      "scenarios": [
        "baseline",
        "dual"
      ],
      "parameters": [
        "mainEnergyKWh",
        "reserveEnergyKWh",
        "reserveMinSoc"
      ],
      "outputs": [
        "completedDistanceKm",
        "reserveMarginSoc",
        "unmetEnergyKWh"
      ],
      "limitation": "Actual topology, discharge maps, packaging and mass are not publicly established here.",
      "subsystems": [
        "main-pack",
        "reserve-pack",
        "source-manager"
      ]
    },
    {
      "id": "main-utilization",
      "title": "Lower the main-pack return threshold",
      "status": "scenario-testable",
      "source": "catl-announcement",
      "locator": "Dual-System Power Redundancy",
      "question": "How much of the benefit comes from changing the operational SOC window?",
      "scenarios": [
        "baseline",
        "policy-only",
        "dual"
      ],
      "parameters": [
        "mainReturnSoc"
      ],
      "outputs": [
        "packEnergyOutKWh",
        "completedDistanceKm",
        "reserveMarginSoc"
      ],
      "limitation": "The published roughly 70% to over 95% DoD claim is not a measured result of this model. Scenarios explicitly choose thresholds.",
      "subsystems": [
        "main-pack",
        "source-manager",
        "comparison"
      ]
    },
    {
      "id": "charge-versus-power",
      "title": "Reserve charging capability is separate from traction power",
      "status": "engineering-boundary",
      "source": "catl-announcement",
      "locator": "77 kWh battery capable of 3C charging",
      "question": "Can the reserve meet requested traction power under its independent limits?",
      "scenarios": [
        "dual",
        "high-power-reserve"
      ],
      "parameters": [
        "reserveEnergyKWh",
        "rechargePowerKW",
        "gradePct"
      ],
      "outputs": [
        "peakRequestedKW",
        "unmetEnergyKWh"
      ],
      "limitation": "Charging C-rate is not a discharge rating or a measured charging time.",
      "subsystems": [
        "reserve-pack",
        "thermal-state",
        "truck-duty"
      ]
    },
    {
      "id": "handover",
      "title": "Uninterrupted millisecond source handover",
      "status": "unverified-hardware-claim",
      "source": "catl-announcement",
      "locator": "Dual-System Power Redundancy",
      "question": "What bus voltage, switching sequence and protective limits support continuity?",
      "scenarios": [
        "dual"
      ],
      "parameters": [
        "mainReturnSoc",
        "sampleTimeS"
      ],
      "outputs": [
        "events"
      ],
      "limitation": "Route integration does not establish millisecond bus continuity, contactor safety, fault tolerance or interoperability.",
      "subsystems": [
        "main-pack",
        "reserve-pack",
        "source-manager"
      ]
    },
    {
      "id": "independent-upgrades",
      "title": "Tailor reserve capability independently",
      "status": "declared-variant-assumptions",
      "source": "catl-announcement",
      "locator": "1+X Architecture and Independent Upgrades",
      "question": "How do declared cold and power envelopes affect completion under the same duty?",
      "scenarios": [
        "dual",
        "cold-reserve",
        "high-power-reserve"
      ],
      "parameters": [
        "ambientC",
        "gradePct"
      ],
      "outputs": [
        "completedDistanceKm",
        "unmetEnergyKWh",
        "reserveSoc"
      ],
      "limitation": "No product chemistry or measured cold/power maps are inferred from the announcement.",
      "subsystems": [
        "reserve-pack",
        "thermal-state",
        "comparison"
      ]
    },
    {
      "id": "repeatable-service",
      "title": "Fast swapping must remain feasible across trips",
      "status": "scenario-testable",
      "source": "catl-announcement",
      "locator": "QIJI Builds a Shared Battery Swapping Ecosystem",
      "question": "What happens with finite ready packs and site power while the fixed reserve persists?",
      "scenarios": [
        "baseline",
        "dual",
        "equal-energy-fixed"
      ],
      "parameters": [
        "repeats",
        "stationReadyPacks",
        "stationSwapMinutes",
        "sitePowerKW",
        "rechargePowerKW"
      ],
      "outputs": [
        "completedRepeats",
        "delayS",
        "gridEnergyKWh",
        "swapCount"
      ],
      "limitation": "A five-minute mechanical swap claim does not include all queuing, charging or route detour time.",
      "subsystems": [
        "service-events",
        "reserve-pack"
      ]
    },
    {
      "id": "durability",
      "title": "Using a deeper window does not establish longer life",
      "status": "requires-pack-specific-data",
      "source": "preger-2020",
      "locator": "Commercial LFP, NCA and NMC cycling study",
      "question": "Which chemistry-specific data support capacity and resistance ageing under the new duty?",
      "scenarios": [
        "policy-only",
        "dual"
      ],
      "parameters": [
        "mainReturnSoc",
        "ambientC"
      ],
      "outputs": [
        "operatingData"
      ],
      "limitation": "Throughput and temperature are operational records, not a calibrated lifetime forecast.",
      "subsystems": [
        "main-pack",
        "reserve-pack",
        "thermal-state"
      ]
    },
    {
      "id": "fleet-cost",
      "title": "Fleet operating cost and rental benefits",
      "status": "deferred-cost-model",
      "source": "catl-announcement",
      "locator": "Flexible Leasing and Battery Asset Management; Standardization Supports Wider Adoption",
      "question": "Which energy, delay, asset and delivered-work data should feed a later cost model?",
      "scenarios": [
        "baseline",
        "dual",
        "equal-energy-fixed"
      ],
      "parameters": [],
      "outputs": [
        "operatingData"
      ],
      "limitation": "No tariff, capital, lease, residual-value or fleet-cost calculation is performed. Manufacturer rental claims are not modeled savings.",
      "subsystems": [
        "cost-handoff",
        "comparison",
        "service-events"
      ]
    }
  ],
  "subsystems": [
    {
      "id": "main-pack",
      "title": "Swappable main battery",
      "inputs": "Energy, SOC, temperature, SOH and requested power",
      "outputs": "Delivered power, current, terminal voltage, heat and updated state",
      "effects": "Main-pack utilization, energy balance and available traction",
      "boundary": "Generic declared pack properties; not an identified production pack.",
      "modules": [
        "physical-battery.js"
      ],
      "blockPaths": [
        "system.main.state",
        "system.main.parameters"
      ]
    },
    {
      "id": "reserve-pack",
      "title": "Fixed reserve battery",
      "inputs": "Independent SOC, temperature, capacity and charge/discharge limits",
      "outputs": "Reserve power, heat, charge state and reserve margin",
      "effects": "Handover availability and repeat-trip readiness",
      "boundary": "A main-pack swap never resets this battery's state.",
      "modules": [
        "physical-battery.js"
      ],
      "blockPaths": [
        "system.reserve.state",
        "system.reserve.parameters"
      ]
    },
    {
      "id": "source-manager",
      "title": "Source supervisor",
      "inputs": "Both pack states, demand, return threshold, reserve floor and permissions",
      "outputs": "Selected source, bounded requests, transition/event records",
      "effects": "Supply shortfall and controlled source selection",
      "boundary": "Route-level control is separate from fast bus-transient verification.",
      "modules": [
        "energy-supervisors.js",
        "dual-source-scenarios.js"
      ],
      "blockPaths": [
        "system.policy",
        "system.electricalTransfer"
      ]
    },
    {
      "id": "truck-duty",
      "title": "Truck and route duty",
      "inputs": "Requested route, payload, speed, grade and ambient condition",
      "outputs": "Traction demand, auxiliaries and delivered distance",
      "effects": "Power demand and delivered tonne·km",
      "boundary": "Declared reduced truck assumptions; no manufacturer road-test fit.",
      "modules": [
        "route-service-plan.js",
        "vehicle.js",
        "dual-source-scenarios.js"
      ],
      "blockPaths": [
        "servicePlan.vehicle",
        "servicePlan.segments"
      ]
    },
    {
      "id": "service-events",
      "title": "Swapping and recharging",
      "inputs": "Station inventory, site power, recharge power and service duration",
      "outputs": "Swap events, replenishment, delay and grid energy",
      "effects": "Repeated duty feasibility and service downtime",
      "boundary": "Explicit scenario service policy; not a forecast of a real station network.",
      "modules": [
        "swap-station.js",
        "replenishment-schedule.js",
        "dual-source-scenarios.js"
      ],
      "blockPaths": [
        "station",
        "run.events"
      ]
    },
    {
      "id": "thermal-state",
      "title": "Pack thermal state",
      "inputs": "Electrical heat, ambient condition, thermal mass and heat rejection",
      "outputs": "Pack temperatures and operating-limit conditions",
      "effects": "Power availability and thermal exposure",
      "boundary": "Reduced lumped temperatures; no coolant CFD or cell-gradient validation.",
      "modules": [
        "physical-battery.js",
        "physical-foundation.js"
      ],
      "blockPaths": [
        "system.main.parameters",
        "system.reserve.parameters",
        "run.trace[].mainTemperatureC",
        "run.trace[].reserveTemperatureC"
      ]
    },
    {
      "id": "comparison",
      "title": "Comparison and evidence",
      "inputs": "Common requested duty, versioned variants and native run results",
      "outputs": "Completion, energy, delay, shortfall, trace and source identity",
      "effects": "Separates capacity, policy and architecture changes",
      "boundary": "Numerical verification and measured hardware validation are separate.",
      "modules": [
        "dual-source-scenarios.js"
      ],
      "blockPaths": [
        "run.summary",
        "comparison.commonInputs"
      ]
    },
    {
      "id": "cost-handoff",
      "title": "Future cost-model handoff",
      "inputs": "Energy flows, asset usage, delay and delivered work",
      "outputs": "Versioned operational-data export",
      "effects": "Provides traceable inputs for later fleet economics",
      "boundary": "Cost model next stage: no TCO, tariff or profitability calculation.",
      "modules": [
        "dual-source-scenarios.js"
      ],
      "blockPaths": [
        "run.operatingData"
      ]
    }
  ]
}
