{
  "formula": "towers-of-hanoi",
  "description": "Solve Towers of Hanoi for {disks} disks. Generates 2^{disks} - 1 steps, each a trivial move operation. Demonstrates mechanical structure generation for arbitrarily long workflows.",
  "version": 1,
  "vars": {
    "disks": {
      "description": "Number of disks to solve",
      "required": true
    },
    "source_peg": {
      "description": "Starting peg",
      "default": "A"
    },
    "target_peg": {
      "description": "Target peg",
      "default": "C"
    },
    "auxiliary_peg": {
      "description": "Helper peg",
      "default": "B"
    }
  },
  "generate": {
    "for-each": {
      "var": "move_num",
      "range": "1..2^{disks}"
    },
    "step": {
      "id": "move-{move_num}",
      "description": "Move {computed_disk} from {computed_source} to {computed_target}. This is move {move_num} of {total_moves}. Simply execute the move - no decision needed.",
      "needs": ["move-{move_num - 1}"],
      "compute": {
        "disk": "lowest_set_bit({move_num})",
        "source": "peg_for_disk({disk}, {move_num}, 'source')",
        "target": "peg_for_disk({disk}, {move_num}, 'target')"
      }
    }
  },
  "steps": [
    {
      "id": "setup",
      "description": "Verify initial state: {disks} disks stacked on peg {source_peg}. All disks in order (largest on bottom)."
    },
    {
      "id": "solve",
      "description": "Execute all {total_moves} moves to transfer tower from {source_peg} to {target_peg}.",
      "needs": ["setup"]
    },
    {
      "id": "verify",
      "description": "Verify final state: all {disks} disks now on peg {target_peg}. Tower intact, all moves were legal.",
      "needs": ["solve"]
    }
  ],
  "example_3_disk": {
    "steps": [
      {"id": "move-1", "description": "Move disk 1 from A to C"},
      {"id": "move-2", "description": "Move disk 2 from A to B", "needs": ["move-1"]},
      {"id": "move-3", "description": "Move disk 1 from C to B", "needs": ["move-2"]},
      {"id": "move-4", "description": "Move disk 3 from A to C", "needs": ["move-3"]},
      {"id": "move-5", "description": "Move disk 1 from B to A", "needs": ["move-4"]},
      {"id": "move-6", "description": "Move disk 2 from B to C", "needs": ["move-5"]},
      {"id": "move-7", "description": "Move disk 1 from A to C", "needs": ["move-6"]}
    ]
  }
}
