{
  "node": {
    "id": "block:repeat",
    "type": "Block",
    "label": "Repeat",
    "properties": {
      "id": "repeat",
      "name": "Repeat",
      "kind": "protocol",
      "summary": "Repeat an ordered group of protocol steps.",
      "behavior": "The blocks array must be nonempty. Count is an integer from 1 to 10000. Nesting is limited to two levels and expansion remains within the protocol resource limits.",
      "ports": [],
      "parameters": [
        {
          "key": "count",
          "label": "count",
          "unit": "count",
          "description": "Integer repetitions from 1 to 10000."
        },
        {
          "key": "blocks",
          "label": "blocks",
          "unit": "ordered step array",
          "description": "Nonempty sequence of protocol steps."
        }
      ],
      "equations": [],
      "example": {
        "title": "Inspect pulse characterization",
        "text": "0.2 V change after a 10 A step gives 20 mΩ by ΔV/ΔI on the same cell/pack basis.",
        "url": "https://design.lemonergy.com/",
        "label": "Open Design → Protocol bench"
      },
      "limits": [
        "The estimate depends on timing, temperature and state; this is not AC impedance spectroscopy.",
        "Scheduling cycles does not supply calibrated degradation or physical lifetime evidence.",
        "Protocol dtS is 1e-6 to 60 s. CC and CP segments cannot share one protocol; CCCV charge must stand alone. Protocol samples use discharge-positive iPack."
      ],
      "evidence": [
        "js/test-protocol.js"
      ],
      "caseIds": [
        "hppc",
        "cycle-protocol"
      ],
      "type": "repeat",
      "implementationId": "repeat",
      "url": "https://lemonergy.com/learn/glossary/blocks/repeat/",
      "documentationUrl": "https://lemonergy.com/learn/glossary/blocks/repeat/",
      "sourceFile": "block-library.json",
      "sourceRepository": "battery-design",
      "sourceRevision": "ef9802329b75bc15bb96885f8ed5d49425106696",
      "reviewed": "2026-10-27"
    }
  },
  "incoming": [
    {
      "id": "edge:usesBlock/cycle-protocol/0",
      "type": "usesBlock",
      "source": "workflow:cycle-protocol",
      "target": "block:repeat",
      "properties": {
        "sourceFile": "wiki-blocks.json",
        "position": 0,
        "name": "Repeat",
        "type": "repeat",
        "role": "Repeats blocks",
        "settings": [
          "count"
        ]
      }
    },
    {
      "id": "edge:usesBlock/hppc/2",
      "type": "usesBlock",
      "source": "workflow:hppc",
      "target": "block:repeat",
      "properties": {
        "sourceFile": "wiki-blocks.json",
        "position": 2,
        "name": "Repeat",
        "type": "repeat",
        "role": "Repeats SOC points",
        "settings": [
          "count"
        ]
      }
    }
  ],
  "neighbors": [
    {
      "id": "workflow:cycle-protocol",
      "type": "Workflow",
      "label": "Repeat charge/discharge",
      "properties": {
        "id": "cycle-protocol",
        "title": "Repeat charge/discharge",
        "kind": "protocol",
        "summary": "Cycle aging block repeats charge, discharge and rest.",
        "steps": [
          "Open Cycle aging block.",
          "Review currents and rests; compare throughput."
        ],
        "example": "Twenty 50%-depth discharges give ten discharge-equivalent full cycles at fixed nominal capacity.",
        "observe": "Cycle count differs from throughput.",
        "limits": "Scheduling cycles does not supply calibrated degradation or physical lifetime evidence.",
        "url": "https://design.lemonergy.com/",
        "label": "Open Design → Protocol bench",
        "evidence": [
          "js/test-protocol.js"
        ]
      }
    },
    {
      "id": "workflow:hppc",
      "type": "Workflow",
      "label": "Inspect pulse characterization",
      "properties": {
        "id": "hppc",
        "title": "Inspect pulse characterization",
        "kind": "protocol",
        "summary": "HPPC alternates pulses, moves SOC and includes long rests.",
        "steps": [
          "Open HPPC pulse characterization.",
          "Compare immediate voltage change and recovery."
        ],
        "example": "0.2 V change after a 10 A step gives 20 mΩ by ΔV/ΔI on the same cell/pack basis.",
        "observe": "Long rests differ from the immediate resistive jump.",
        "limits": "The estimate depends on timing, temperature and state; this is not AC impedance spectroscopy.",
        "url": "https://design.lemonergy.com/",
        "label": "Open Design → Protocol bench",
        "evidence": [
          "js/test-protocol.js"
        ]
      }
    }
  ]
}
