{
  "format": "rearrangements-curriculum-audit-v1",
  "method": "Exact enumeration through nine pieces, checked lower-bound certificates for twelve/sixteen; 32 seeded starts plus bounded strict steepest pair swaps per fixed asset. Indicators do not establish enjoyment, human difficulty, control usability, or actual tool usefulness.",
  "sourceFiles": [
    "dist/curriculum.js",
    "dist/career.js",
    "dist/authored-puzzles.js",
    "dist/progression.js",
    "dist/training-path.js"
  ],
  "summary": {
    "stages": 157,
    "playable": 71,
    "historicalPlayable": 101,
    "visibleDestinations": 97,
    "assets": 77,
    "toolTests": 26,
    "historicalToolTests": 50,
    "rewards": 26,
    "drafts": 6,
    "allPlayableReachable": true,
    "toolsWithoutReward": [],
    "verificationIssues": []
  },
  "releaseRecommendations": {
    "opening": [
      "opening",
      "easy-six",
      "first",
      "rows",
      "columns",
      "colors"
    ],
    "firstBranch": {
      "from": "first",
      "to": "beb-six"
    },
    "parkAdvanced": [
      "main-twelve-advanced",
      "main-sixteen-advanced",
      "beb-six-advanced",
      "beb-nine-advanced",
      "beb-twelve-advanced",
      "beb-sixteen-advanced"
    ],
    "rewire": {
      "shading": [
        "beb-six"
      ],
      "main-sixteen": [
        "main-twelve"
      ],
      "beb-twelve": [
        "shading"
      ],
      "beb-sixteen": [
        "beb-twelve"
      ],
      "oldhand": [
        "main-sixteen",
        "beb-sixteen"
      ]
    },
    "oldhandGate": "any(main-sixteen >= 2, beb-sixteen >= 2, legacy main-sixteen-advanced >= 2, legacy beb-sixteen-advanced >= 2)",
    "newToolTests": [
      {
        "id": "test-portals-r1",
        "after": "push",
        "lesson": "Push one tile through a paired border while the character remains at the entry; blocked exit demonstrates rejection.",
        "reward": "portals",
        "requires": "two stars at push; optional test earns equipment at three stars"
      },
      {
        "id": "test-ramps-r1",
        "after": "pairs",
        "lesson": "Reach a walking destination over a tile barrier without changing the underlying arrangement.",
        "reward": "ramps",
        "requires": "two stars at pairs; optional test earns equipment at three stars"
      }
    ],
    "saveCompatibility": "Keep all existing stage, puzzle, paid-star, equipment, and saved-work identities. New tool lesson puzzles get new stage and asset IDs; do not transfer old three-star mastery onto changed data or pay for it twice. Parked attempted stages remain reopenable in extra practice.",
    "humanReview": "Opening and first branch; one representative of each distinct geometry and physical interaction; tool demonstrations; final pacing requires voluntary friends-and-family feedback."
  },
  "assets": {
    "first": {
      "definitionHash": "b284ff642b4e8ad481b12ab7bacfd0278a8136ce046ba9ed1255f5efecb32a7e",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-first",
        "loadedPairs": 9,
        "totalLoad": 730,
        "directedNonzero": 18,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 10,
        "randomMedianPenalty": 190,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 2.22,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "first",
        "test-binary"
      ]
    },
    "rows": {
      "definitionHash": "f26d4d3cfe6fcbf24d223f5135a52787c7da940c11a1543386d620164e052abf",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 96,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-rows",
        "loadedPairs": 5,
        "totalLoad": 425,
        "directedNonzero": 10,
        "ruleCount": 0,
        "randomExact": 5,
        "randomTwoStar": 8,
        "randomMedianPenalty": 105,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "rows",
        "test-rows"
      ]
    },
    "columns": {
      "definitionHash": "0274fa0f8cd499f0b1bda2c7db94ef3a27568dd2db6c9a5f178c695fb0ef2ed9",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 80,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-columns",
        "loadedPairs": 6,
        "totalLoad": 470,
        "directedNonzero": 11,
        "ruleCount": 0,
        "randomExact": 4,
        "randomTwoStar": 11,
        "randomMedianPenalty": 145,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1.22,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "columns",
        "test-cols"
      ]
    },
    "colors": {
      "definitionHash": "068ddee0a19afc3fb725037402cd822fdd0963af280e4f9354ab503583ab2a6d",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "families",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 7,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-colors",
        "loadedPairs": 13,
        "totalLoad": 1405,
        "directedNonzero": 24,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 645,
        "localExact": 25,
        "localTwoStar": 32,
        "localMeanSwaps": 3.94,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "colors",
        "test-rearrange"
      ]
    },
    "organize": {
      "definitionHash": "3c9bbc87f7baef60601c3a75156f0fc7ef060744619bfa80a926ff190232a87b",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "families",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 146,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-organize",
        "loadedPairs": 8,
        "totalLoad": 825,
        "directedNonzero": 15,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 335,
        "localExact": 28,
        "localTwoStar": 32,
        "localMeanSwaps": 2.38,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "organize",
        "test-reorder",
        "test-bookie",
        "test-cellmates"
      ]
    },
    "shading": {
      "definitionHash": "3608349de165eca6dd747495efa0cf4ce7f62358a106b06d661c7994c58d4ef7",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "families",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 555,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-shading",
        "loadedPairs": 28,
        "totalLoad": 2695,
        "directedNonzero": 53,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 6,
        "randomMedianPenalty": 1170,
        "localExact": 11,
        "localTwoStar": 32,
        "localMeanSwaps": 4.25,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "shading",
        "test-shaded",
        "test-tablelight"
      ]
    },
    "goodset": {
      "definitionHash": "18b55c46559e4bc730bc01edf83f6fb61f2c39e3abb11550e9aab0ecfa19320d",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "families",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 2,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-goodset",
        "loadedPairs": 10,
        "totalLoad": 1190,
        "directedNonzero": 19,
        "ruleCount": 3,
        "randomExact": 0,
        "randomTwoStar": 1,
        "randomMedianPenalty": 520,
        "localExact": 7,
        "localTwoStar": 30,
        "localMeanSwaps": 3.53,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "goodset",
        "test-goodset"
      ]
    },
    "arrows": {
      "definitionHash": "7f6a74c340ba184831279fe322162bc8f447f0dba065c52e00e6d83450acb3c5",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "families",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 98,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-arrows",
        "loadedPairs": 8,
        "totalLoad": 665,
        "directedNonzero": 15,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 1,
        "randomMedianPenalty": 285,
        "localExact": 25,
        "localTwoStar": 32,
        "localMeanSwaps": 2.38,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "arrows",
        "test-arrow"
      ]
    },
    "locks": {
      "definitionHash": "263aab19f75f706e47d1ec13e509e6945b2a7c927e9a89b551d1650cd9bc3b83",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "families",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-locks",
        "loadedPairs": 18,
        "totalLoad": 1800,
        "directedNonzero": 36,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 885,
        "localExact": 16,
        "localTwoStar": 32,
        "localMeanSwaps": 4.41,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "locks",
        "test-lock"
      ]
    },
    "links": {
      "definitionHash": "924696860b86c5d7fd768aa8d970d2272830d4a4e658b192dbb63eb35f2cc970",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "families",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 131,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-links",
        "loadedPairs": 8,
        "totalLoad": 760,
        "directedNonzero": 16,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 1,
        "randomMedianPenalty": 370,
        "localExact": 21,
        "localTwoStar": 31,
        "localMeanSwaps": 2.16,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "links",
        "test-links",
        "test-paper"
      ]
    },
    "side": {
      "definitionHash": "0575e6a3c4b9f306a9d6c0ade28cc73d2b7b1fedc4073ed987f69b61e4a82257",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "families",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 3,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-side",
        "loadedPairs": 10,
        "totalLoad": 780,
        "directedNonzero": 19,
        "ruleCount": 6,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 340,
        "localExact": 12,
        "localTwoStar": 25,
        "localMeanSwaps": 3.88,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "side",
        "test-hazard"
      ]
    },
    "corner": {
      "definitionHash": "90514bc7e618bb595f7743fc14e21746a36564b2feca6b4e8c39039b5670f9bc",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "families",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 52,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-corner",
        "loadedPairs": 6,
        "totalLoad": 535,
        "directedNonzero": 10,
        "ruleCount": 3,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 205,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 3.03,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "corner"
      ]
    },
    "courtyard": {
      "definitionHash": "90d914ac284704e52c81e48aa55d606a6072fa046d3a2090158a9236822dba8d",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 4,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-courtyard",
        "loadedPairs": 11,
        "totalLoad": 890,
        "directedNonzero": 21,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 520,
        "localExact": 7,
        "localTwoStar": 29,
        "localMeanSwaps": 3.78,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "courtyard",
        "test-sticker",
        "test-chalk"
      ]
    },
    "honey": {
      "definitionHash": "e9e4d322a77a95ad9796f7f910eb3da6bf35c38f65c963a4fec529d64153bb13",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 4,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-honey",
        "loadedPairs": 13,
        "totalLoad": 1410,
        "directedNonzero": 25,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 760,
        "localExact": 5,
        "localTwoStar": 19,
        "localMeanSwaps": 3.72,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "honey"
      ]
    },
    "triangle": {
      "definitionHash": "d0a0c1f020386acb494ff2bb78da15484b976cc0239c107298033420f43f0390",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 24,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-triangle",
        "loadedPairs": 18,
        "totalLoad": 1455,
        "directedNonzero": 34,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 2,
        "randomMedianPenalty": 455,
        "localExact": 10,
        "localTwoStar": 32,
        "localMeanSwaps": 3.53,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "triangle",
        "test-turvy"
      ]
    },
    "push": {
      "definitionHash": "80ca691dde99bb7758bef69dd2be8d7393670d2001ab9d7d7ca90d8b414d249a",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-push",
        "loadedPairs": 9,
        "totalLoad": 840,
        "directedNonzero": 17,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 4,
        "randomMedianPenalty": 220,
        "localExact": 21,
        "localTwoStar": 32,
        "localMeanSwaps": 1.66,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "push",
        "test-tracks"
      ]
    },
    "diagonals": {
      "definitionHash": "703e07916da3f02791f5044746b8db0fde3f15903bbfe12242b70a417d32c41d",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "families",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-diagonals",
        "loadedPairs": 16,
        "totalLoad": 1640,
        "directedNonzero": 31,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 1,
        "randomMedianPenalty": 720,
        "localExact": 13,
        "localTwoStar": 30,
        "localMeanSwaps": 3.75,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "diagonals",
        "test-diagonals"
      ]
    },
    "compass": {
      "definitionHash": "db27d61b0322cecd53a7a5905a3fb3023ae4416c3b50274db1475a9790e0cc32",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "families",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-compass",
        "loadedPairs": 17,
        "totalLoad": 1570,
        "directedNonzero": 33,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 735,
        "localExact": 11,
        "localTwoStar": 32,
        "localMeanSwaps": 4.28,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "compass",
        "test-compass"
      ]
    },
    "pairs": {
      "definitionHash": "03883201f827d3fd41f35c10202b1d533a4be22d69cc555f4a5ef4830b97512a",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "families",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 146,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-pairs",
        "loadedPairs": 8,
        "totalLoad": 630,
        "directedNonzero": 15,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 2,
        "randomMedianPenalty": 290,
        "localExact": 25,
        "localTwoStar": 32,
        "localMeanSwaps": 2.19,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "pairs",
        "test-weld"
      ]
    },
    "oldhand": {
      "definitionHash": "76bdb408beba9da6b2f57c15339bf4f5a63c8cc9b96eaab914d2c189654d7e0c",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "families",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-oldhand",
        "loadedPairs": 15,
        "totalLoad": 1830,
        "directedNonzero": 30,
        "ruleCount": 3,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 825,
        "localExact": 4,
        "localTwoStar": 20,
        "localMeanSwaps": 3.94,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "oldhand",
        "test-network"
      ]
    },
    "opening": {
      "definitionHash": "c2d0a5a409915f3c4ab177be024b554536efa90bd57fef82117122244d68a8e3",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 5,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 4,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:CITY-OPEN-1",
        "loadedPairs": 8,
        "totalLoad": 720,
        "directedNonzero": 16,
        "ruleCount": 0,
        "randomExact": 1,
        "randomTwoStar": 11,
        "randomMedianPenalty": 145,
        "localExact": 16,
        "localTwoStar": 32,
        "localMeanSwaps": 1.44,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "opening"
      ]
    },
    "easy-six": {
      "definitionHash": "e7e81a6b295229d2447673368c0aea78b32fe1f5507db70a21410b0e669a0021",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 96,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:CITY-EASY-1",
        "loadedPairs": 5,
        "totalLoad": 650,
        "directedNonzero": 9,
        "ruleCount": 0,
        "randomExact": 4,
        "randomTwoStar": 7,
        "randomMedianPenalty": 165,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1.03,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "easy-six"
      ]
    },
    "beb-six": {
      "definitionHash": "49f59c872a356b95ec10e704fb3e4f87c0a67ea0ad9c460485e31b94ed619a7a",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 240,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:CITY-BEB-1",
        "loadedPairs": 15,
        "totalLoad": 1725,
        "directedNonzero": 27,
        "ruleCount": 0,
        "randomExact": 1,
        "randomTwoStar": 22,
        "randomMedianPenalty": 440,
        "localExact": 21,
        "localTwoStar": 32,
        "localMeanSwaps": 1.47,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "beb-six",
        "test-traffic"
      ]
    },
    "sep-fit": {
      "definitionHash": "d49bc1dd602cee7d310f26acbd1a54a9fbe9ab558e3ceeca42fa887caa4c4adf",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "families",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:CITY-SEPARATION-1",
        "loadedPairs": 10,
        "totalLoad": 995,
        "directedNonzero": 19,
        "ruleCount": 6,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 475,
        "localExact": 5,
        "localTwoStar": 5,
        "localMeanSwaps": 3.72,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "separation-one-fit"
      ]
    },
    "sep-best": {
      "definitionHash": "b77e20d85e785f966828314cccbe17298c55176af2f71029f3c31a1d92a57166",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "families",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 950,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:CITY-SEPARATION-2",
        "loadedPairs": 28,
        "totalLoad": 3180,
        "directedNonzero": 53,
        "ruleCount": 6,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 1415,
        "localExact": 7,
        "localTwoStar": 31,
        "localMeanSwaps": 4.06,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "separation-one-best"
      ]
    },
    "main-twelve": {
      "definitionHash": "91d7603c38f66a8fbd5393a9bb2e98ba9f82a6a23b37fb9c3a54528329a724e3",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "certified",
      "solverVersion": "clique-witness-1",
      "pieceCount": 12,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": null,
        "solutionKind": "certified"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TOWN-main-twelve",
        "loadedPairs": 21,
        "totalLoad": 1760,
        "directedNonzero": 39,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 1045,
        "localExact": 5,
        "localTwoStar": 27,
        "localMeanSwaps": 6.72,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "main-twelve"
      ]
    },
    "main-twelve-advanced": {
      "definitionHash": "91d95ca696f8d4968c575200ab97ad07ae74ad08b6aacbb95f93cbc73dfe18c1",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "certified",
      "solverVersion": "clique-witness-1",
      "pieceCount": 12,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": null,
        "solutionKind": "certified"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TOWN-main-twelve-advanced",
        "loadedPairs": 19,
        "totalLoad": 1430,
        "directedNonzero": 37,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 875,
        "localExact": 5,
        "localTwoStar": 27,
        "localMeanSwaps": 5.28,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "main-twelve-advanced"
      ]
    },
    "main-sixteen": {
      "definitionHash": "f61e8c5b96860492745379662003a87f6ff20aa5a2f97ded0421ee92a4725fc4",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "certified",
      "solverVersion": "clique-witness-1",
      "pieceCount": 16,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": null,
        "solutionKind": "certified"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TOWN-main-sixteen",
        "loadedPairs": 24,
        "totalLoad": 2010,
        "directedNonzero": 46,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 1265,
        "localExact": 1,
        "localTwoStar": 22,
        "localMeanSwaps": 7,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "main-sixteen"
      ]
    },
    "main-sixteen-advanced": {
      "definitionHash": "ace9388b21b8108b3971133dc307bc0685d77cf1ffc29456b30b06109065ae45",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "certified",
      "solverVersion": "clique-witness-1",
      "pieceCount": 16,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": null,
        "solutionKind": "certified"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TOWN-main-sixteen-advanced",
        "loadedPairs": 21,
        "totalLoad": 1380,
        "directedNonzero": 40,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 925,
        "localExact": 2,
        "localTwoStar": 27,
        "localMeanSwaps": 6.75,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "main-sixteen-advanced"
      ]
    },
    "beb-six-advanced": {
      "definitionHash": "3afbc911e69d27b12929c8795ee0f80dce2d381fb53f01ebc961dfc49bc10b87",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 145,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TOWN-beb-six-advanced",
        "loadedPairs": 15,
        "totalLoad": 1215,
        "directedNonzero": 29,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 18,
        "randomMedianPenalty": 325,
        "localExact": 21,
        "localTwoStar": 32,
        "localMeanSwaps": 1.59,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "beb-six-advanced"
      ]
    },
    "beb-nine-advanced": {
      "definitionHash": "f14cf19c3ecc397841a138ca4c5265ea8644d7b150ff034cebe8d90eb02ccfe7",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "families",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 520,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TOWN-beb-nine-advanced",
        "loadedPairs": 28,
        "totalLoad": 2775,
        "directedNonzero": 54,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 1,
        "randomMedianPenalty": 1235,
        "localExact": 8,
        "localTwoStar": 32,
        "localMeanSwaps": 4.19,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "beb-nine-advanced"
      ]
    },
    "beb-twelve": {
      "definitionHash": "ae0eaff8299ca789a3a3d9b4ed1e731330225b048471549bcabac9d937bc0332",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "certified",
      "solverVersion": "clique-witness-1",
      "pieceCount": 12,
      "optimum": {
        "penalty": 40,
        "violations": 0,
        "solutions": null,
        "solutionKind": "certified"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TOWN-beb-twelve",
        "loadedPairs": 24,
        "totalLoad": 1405,
        "directedNonzero": 43,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 820,
        "localExact": 2,
        "localTwoStar": 32,
        "localMeanSwaps": 5.25,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "beb-twelve"
      ]
    },
    "beb-twelve-advanced": {
      "definitionHash": "155dc7ee65670cb98002261f7ec40255f9d8404b53e8dfbd51cd32cc325c2018",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "certified",
      "solverVersion": "clique-witness-1",
      "pieceCount": 12,
      "optimum": {
        "penalty": 40,
        "violations": 0,
        "solutions": null,
        "solutionKind": "certified"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TOWN-beb-twelve-advanced",
        "loadedPairs": 27,
        "totalLoad": 1530,
        "directedNonzero": 44,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 900,
        "localExact": 4,
        "localTwoStar": 28,
        "localMeanSwaps": 5.53,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "beb-twelve-advanced"
      ]
    },
    "beb-sixteen": {
      "definitionHash": "c20d00d55e8630c576212c889418d7a51dd9a4fbcfb4b777b7d6da844263130f",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "certified",
      "solverVersion": "clique-witness-1",
      "pieceCount": 16,
      "optimum": {
        "penalty": 40,
        "violations": 0,
        "solutions": null,
        "solutionKind": "certified"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TOWN-beb-sixteen",
        "loadedPairs": 35,
        "totalLoad": 2410,
        "directedNonzero": 61,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 1535,
        "localExact": 0,
        "localTwoStar": 14,
        "localMeanSwaps": 7.94,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "beb-sixteen"
      ]
    },
    "beb-sixteen-advanced": {
      "definitionHash": "477a7355c73333a141281db37f04dfe4e8488bf7d65274c14a2e264594ad34a7",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "certified",
      "solverVersion": "clique-witness-1",
      "pieceCount": 16,
      "optimum": {
        "penalty": 40,
        "violations": 0,
        "solutions": null,
        "solutionKind": "certified"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TOWN-beb-sixteen-advanced",
        "loadedPairs": 41,
        "totalLoad": 2680,
        "directedNonzero": 71,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 1730,
        "localExact": 3,
        "localTwoStar": 13,
        "localMeanSwaps": 9.59,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "beb-sixteen-advanced"
      ]
    },
    "sep-two-fit": {
      "definitionHash": "d0cc94da1b995bca3cf817f68385c6be4f7e1409b62604cfefd8bc8f644b33dc",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "certified",
      "solverVersion": "clique-witness-1",
      "pieceCount": 12,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": null,
        "solutionKind": "certified"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TOWN-sep-two-fit",
        "loadedPairs": 13,
        "totalLoad": 920,
        "directedNonzero": 25,
        "ruleCount": 3,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 485,
        "localExact": 2,
        "localTwoStar": 27,
        "localMeanSwaps": 4.66,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "separation-two-fit"
      ]
    },
    "sep-two-best": {
      "definitionHash": "16e2e42984ceec2cfef48aed7f505400b19c6a9b0accab8beec1615bcb563b85",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "certified",
      "solverVersion": "clique-witness-1",
      "pieceCount": 12,
      "optimum": {
        "penalty": 40,
        "violations": 0,
        "solutions": null,
        "solutionKind": "certified"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TOWN-sep-two-best",
        "loadedPairs": 21,
        "totalLoad": 750,
        "directedNonzero": 35,
        "ruleCount": 3,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 430,
        "localExact": 7,
        "localTwoStar": 32,
        "localMeanSwaps": 5.25,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "separation-two-best"
      ]
    },
    "sep-three-fit": {
      "definitionHash": "9eb699e5a411a676aeb8f9d7ec12c20428fbbe50e5fa4dfe58674e090d7c69de",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "certified",
      "solverVersion": "clique-witness-1",
      "pieceCount": 16,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": null,
        "solutionKind": "certified"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TOWN-sep-three-fit",
        "loadedPairs": 13,
        "totalLoad": 920,
        "directedNonzero": 25,
        "ruleCount": 3,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 600,
        "localExact": 7,
        "localTwoStar": 31,
        "localMeanSwaps": 5.34,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "separation-three-fit"
      ]
    },
    "sep-three-best": {
      "definitionHash": "214c78e422954961d5bdf519940d2044873e968fec905e54d055972c67bcfedc",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "certified",
      "solverVersion": "clique-witness-1",
      "pieceCount": 16,
      "optimum": {
        "penalty": 40,
        "violations": 0,
        "solutions": null,
        "solutionKind": "certified"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TOWN-sep-three-best",
        "loadedPairs": 24,
        "totalLoad": 1365,
        "directedNonzero": 40,
        "ruleCount": 3,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 985,
        "localExact": 1,
        "localTwoStar": 29,
        "localMeanSwaps": 7.06,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "separation-three-best"
      ]
    },
    "yits-demo-1": {
      "definitionHash": "4bf23b458b352a1626474630a10a182239d4b4f962a417a57d9cb424bafbdcc2",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "families",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:Y2000-01-01-1",
        "loadedPairs": 17,
        "totalLoad": 1485,
        "directedNonzero": 32,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 725,
        "localExact": 11,
        "localTwoStar": 32,
        "localMeanSwaps": 4.13,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "yits-demo-1"
      ]
    },
    "yits-demo-2": {
      "definitionHash": "d88bb6e5145d3b064c8c2cb26c47458e6eb9b59694acd157f57474c84caaa999",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "families",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:Y2000-01-01-2",
        "loadedPairs": 17,
        "totalLoad": 1655,
        "directedNonzero": 33,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 755,
        "localExact": 11,
        "localTwoStar": 30,
        "localMeanSwaps": 4.38,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "yits-demo-2"
      ]
    },
    "yits-demo-3": {
      "definitionHash": "715b9e3176dd4f37d6e24d4d54f3bb2eb310bb2c2cdef81f647e7ff383a40100",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "families",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:Y2000-01-01-3",
        "loadedPairs": 19,
        "totalLoad": 1940,
        "directedNonzero": 37,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 910,
        "localExact": 22,
        "localTwoStar": 22,
        "localMeanSwaps": 4.59,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "yits-demo-3"
      ]
    },
    "yits-demo-4": {
      "definitionHash": "48a63c66f9f09453332d79c2c8a4bea26fb56463b5f46aa46041764fbe99df9c",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "families",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:Y2000-01-01-4",
        "loadedPairs": 20,
        "totalLoad": 2040,
        "directedNonzero": 39,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 1,
        "randomMedianPenalty": 935,
        "localExact": 23,
        "localTwoStar": 28,
        "localMeanSwaps": 4.91,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "yits-demo-4"
      ]
    },
    "yits-demo-5": {
      "definitionHash": "ad6deb11cc0eab6e434f5fdad82907d30782f42d32e10071b9541abb10460071",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "families",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:Y2000-01-01-5",
        "loadedPairs": 18,
        "totalLoad": 1980,
        "directedNonzero": 35,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 845,
        "localExact": 17,
        "localTwoStar": 29,
        "localMeanSwaps": 4.09,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "yits-demo-5"
      ]
    },
    "yits-demo-6": {
      "definitionHash": "a8de4dafaa8bc7737adf149aaee8d820c566a73129e4296ca9350b1d071c7861",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "families",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:Y2000-01-01-6",
        "loadedPairs": 19,
        "totalLoad": 1925,
        "directedNonzero": 37,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 805,
        "localExact": 21,
        "localTwoStar": 25,
        "localMeanSwaps": 4.28,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "yits-demo-6"
      ]
    },
    "yits-demo-7": {
      "definitionHash": "c2d3100df0c00b58b5372bf532ace2dc22126b024a1b2022cc343dbd6bf16a65",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "families",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:Y2000-01-01-7",
        "loadedPairs": 18,
        "totalLoad": 1810,
        "directedNonzero": 35,
        "ruleCount": 3,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 800,
        "localExact": 21,
        "localTwoStar": 31,
        "localMeanSwaps": 5.09,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "yits-demo-7"
      ]
    },
    "yits-demo-8": {
      "definitionHash": "e909ab09e73907ff5b84e04b8166cab67761ae68066043388b7279abbdb2343a",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "families",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 2,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:Y2000-01-01-8",
        "loadedPairs": 18,
        "totalLoad": 1765,
        "directedNonzero": 35,
        "ruleCount": 3,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 870,
        "localExact": 18,
        "localTwoStar": 21,
        "localMeanSwaps": 4.63,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "yits-demo-8"
      ]
    },
    "yits-demo-9": {
      "definitionHash": "1218b161dd7a8e621360354726ccf6a12208f1c1110c9c983267de6be86649c2",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "families",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 2,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:Y2000-01-01-9",
        "loadedPairs": 18,
        "totalLoad": 1780,
        "directedNonzero": 35,
        "ruleCount": 3,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 720,
        "localExact": 17,
        "localTwoStar": 23,
        "localMeanSwaps": 4.03,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "yits-demo-9"
      ]
    },
    "yits-demo-10": {
      "definitionHash": "1ebb83feaa317c428f6866570c83e8261e45f51768a32d23330ec64f2f055616",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "families",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 2,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:Y2000-01-01-10",
        "loadedPairs": 17,
        "totalLoad": 1605,
        "directedNonzero": 33,
        "ruleCount": 3,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 690,
        "localExact": 22,
        "localTwoStar": 32,
        "localMeanSwaps": 4.25,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "yits-demo-10"
      ]
    },
    "yits-demo-11": {
      "definitionHash": "da9d6b8dbdf7186fd133f70bd8178472e7708423ac08c16427ee1a9691a01dd8",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "families",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:Y2000-01-01-11",
        "loadedPairs": 17,
        "totalLoad": 1395,
        "directedNonzero": 33,
        "ruleCount": 3,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 600,
        "localExact": 11,
        "localTwoStar": 29,
        "localMeanSwaps": 4.41,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "yits-demo-11"
      ]
    },
    "yits-demo-12": {
      "definitionHash": "06cb59f22a9e03197381155a5c88c42524ce3b7699d82959cb966d10f6944cd6",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "families",
      "solverVersion": "enumeration-1",
      "pieceCount": 9,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:Y2000-01-01-12",
        "loadedPairs": 17,
        "totalLoad": 1605,
        "directedNonzero": 32,
        "ruleCount": 3,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 755,
        "localExact": 16,
        "localTwoStar": 31,
        "localMeanSwaps": 4.22,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "yits-demo-12"
      ]
    },
    "lesson-binary-r1": {
      "definitionHash": "cbb25dd5c5656b7bd428645500ab10a51e34b4fefc895670b54e414d481e08a6",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 96,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-binary",
        "loadedPairs": 5,
        "totalLoad": 500,
        "directedNonzero": 10,
        "ruleCount": 0,
        "randomExact": 4,
        "randomTwoStar": 10,
        "randomMedianPenalty": 145,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 0.91,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "test-binary-r1"
      ]
    },
    "lesson-rows-r1": {
      "definitionHash": "286ddd50f9ff3ac04e16dd80331f5e51b7195b4d29ca9adf53af8d4a7ffbcf80",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-rows",
        "loadedPairs": 9,
        "totalLoad": 940,
        "directedNonzero": 18,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 3,
        "randomMedianPenalty": 255,
        "localExact": 17,
        "localTwoStar": 32,
        "localMeanSwaps": 1.63,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "test-rows-r1"
      ]
    },
    "lesson-cols-r1": {
      "definitionHash": "30d2bea2f0fb19290965f47113e215b9d2dbcdf3120e677aad52ff727d317507",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 96,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-cols",
        "loadedPairs": 5,
        "totalLoad": 555,
        "directedNonzero": 10,
        "ruleCount": 0,
        "randomExact": 5,
        "randomTwoStar": 5,
        "randomMedianPenalty": 175,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1.09,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "test-cols-r1"
      ]
    },
    "lesson-traffic-r1": {
      "definitionHash": "21253f325eceb81b98fe93ed8571b66a4557d658661cfeb21b8aedab31b81e65",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 135,
        "violations": 0,
        "solutions": 32,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-traffic",
        "loadedPairs": 15,
        "totalLoad": 1215,
        "directedNonzero": 30,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 19,
        "randomMedianPenalty": 300,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 2,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "test-traffic-r1"
      ]
    },
    "lesson-reorder-r1": {
      "definitionHash": "66edf6c271124a5f4136791e1a6a40a30d8dceea231aee55e31be08059f69337",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 96,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-reorder",
        "loadedPairs": 5,
        "totalLoad": 535,
        "directedNonzero": 10,
        "ruleCount": 0,
        "randomExact": 3,
        "randomTwoStar": 6,
        "randomMedianPenalty": 170,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1.06,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "test-reorder-r1"
      ]
    },
    "lesson-shaded-r1": {
      "definitionHash": "6f833a9e94805dc8a794d6c04bd1077d8f0d733f69665c11dbd52db69c0c429f",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 170,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-shaded",
        "loadedPairs": 15,
        "totalLoad": 1325,
        "directedNonzero": 30,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 14,
        "randomMedianPenalty": 375,
        "localExact": 28,
        "localTwoStar": 32,
        "localMeanSwaps": 1.81,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "test-shaded-r1"
      ]
    },
    "lesson-tablelight-r1": {
      "definitionHash": "6292ab996997237b0eea8f5fe6f48f4f87b039df341df1ecafd05330a33da30e",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 270,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-tablelight",
        "loadedPairs": 15,
        "totalLoad": 1725,
        "directedNonzero": 28,
        "ruleCount": 0,
        "randomExact": 1,
        "randomTwoStar": 23,
        "randomMedianPenalty": 490,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 2.03,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "test-tablelight-r1"
      ]
    },
    "lesson-goodset-r1": {
      "definitionHash": "d5bc824b36ada4981c463d20d48d4ce63d17af0111ed874aca676ab41816160b",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-goodset",
        "loadedPairs": 10,
        "totalLoad": 1175,
        "directedNonzero": 19,
        "ruleCount": 0,
        "randomExact": 2,
        "randomTwoStar": 5,
        "randomMedianPenalty": 310,
        "localExact": 23,
        "localTwoStar": 32,
        "localMeanSwaps": 1.5,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "test-goodset-r1"
      ]
    },
    "lesson-arrow-r1": {
      "definitionHash": "8b8c3ea8517adc910a5143de70c3aca01b29afb8e3476981f5203d900ee8b05b",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 96,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-arrow",
        "loadedPairs": 5,
        "totalLoad": 550,
        "directedNonzero": 10,
        "ruleCount": 0,
        "randomExact": 5,
        "randomTwoStar": 7,
        "randomMedianPenalty": 130,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1.09,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "test-arrow-r1"
      ]
    },
    "lesson-lock-r1": {
      "definitionHash": "5f26d92ad4414f8e595c495a395ade5777eaebeebaf319e9d8540925709353fa",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-lock",
        "loadedPairs": 9,
        "totalLoad": 1210,
        "directedNonzero": 18,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 6,
        "randomMedianPenalty": 305,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1.81,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "test-lock-r1"
      ]
    },
    "lesson-links-r1": {
      "definitionHash": "bc0904cfacfe0d4d2c2c855508dfedb258512c237bd43e992323f85e71ac6890",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 112,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-links",
        "loadedPairs": 5,
        "totalLoad": 295,
        "directedNonzero": 10,
        "ruleCount": 0,
        "randomExact": 5,
        "randomTwoStar": 9,
        "randomMedianPenalty": 75,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 0.94,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "test-links-r1"
      ]
    },
    "lesson-hazard-r1": {
      "definitionHash": "ef933069f84ce71f5b268ddf6745adb9aee966e240fb7facf1d77c65d500d14e",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 4,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-hazard",
        "loadedPairs": 5,
        "totalLoad": 365,
        "directedNonzero": 10,
        "ruleCount": 6,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 75,
        "localExact": 24,
        "localTwoStar": 24,
        "localMeanSwaps": 2.44,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "test-hazard-r1"
      ]
    },
    "lesson-sticker-r1": {
      "definitionHash": "6c354b355eebf104a297f010e3f9a71d085b1e565ec341722179dd41913fe780",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 96,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-sticker",
        "loadedPairs": 5,
        "totalLoad": 500,
        "directedNonzero": 10,
        "ruleCount": 0,
        "randomExact": 5,
        "randomTwoStar": 15,
        "randomMedianPenalty": 95,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 0.91,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "test-sticker-r1"
      ]
    },
    "lesson-turvy-r1": {
      "definitionHash": "da8fd819e2ce38be25f48241cd1eec929c4701fd2639143925c27f74aaabd2ea",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 80,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-turvy",
        "loadedPairs": 7,
        "totalLoad": 795,
        "directedNonzero": 13,
        "ruleCount": 0,
        "randomExact": 5,
        "randomTwoStar": 7,
        "randomMedianPenalty": 185,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1.19,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "test-turvy-r1"
      ]
    },
    "lesson-tracks-r1": {
      "definitionHash": "54195ed931b512668563e93e044470fe7a6f61e9297c396cb4b2fffa2c28e515",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-tracks",
        "loadedPairs": 10,
        "totalLoad": 1095,
        "directedNonzero": 20,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 4,
        "randomMedianPenalty": 285,
        "localExact": 20,
        "localTwoStar": 32,
        "localMeanSwaps": 1.38,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "test-tracks-r1"
      ]
    },
    "lesson-diagonals-r1": {
      "definitionHash": "ce4d0d2a3fbb16b304463151304fd3a9c3f58cb37781b8721e44954118503f6b",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-diagonals",
        "loadedPairs": 10,
        "totalLoad": 880,
        "directedNonzero": 18,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 5,
        "randomMedianPenalty": 270,
        "localExact": 25,
        "localTwoStar": 32,
        "localMeanSwaps": 1.66,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "test-diagonals-r1"
      ]
    },
    "lesson-compass-r1": {
      "definitionHash": "4e05848a79eb47ebfffcf66846189de5b4e25bf5bd2bfcc39b1ca9e09c5dbf04",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 96,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-compass",
        "loadedPairs": 5,
        "totalLoad": 725,
        "directedNonzero": 9,
        "ruleCount": 0,
        "randomExact": 3,
        "randomTwoStar": 3,
        "randomMedianPenalty": 165,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "test-compass-r1"
      ]
    },
    "lesson-weld-r1": {
      "definitionHash": "40609aca37f6ace378b8cf5ade5abb96e2a0679b6ffcfceb6744a6a11e6eb000",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 96,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-weld",
        "loadedPairs": 5,
        "totalLoad": 675,
        "directedNonzero": 8,
        "ruleCount": 0,
        "randomExact": 3,
        "randomTwoStar": 3,
        "randomMedianPenalty": 150,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1.09,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "test-weld-r1"
      ]
    },
    "lesson-network-r1": {
      "definitionHash": "41e02edddf1dd9b0effbd4f83a8c8c68efb9e9b1cb5d41860e3c26e7f99f786e",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-network",
        "loadedPairs": 11,
        "totalLoad": 1010,
        "directedNonzero": 22,
        "ruleCount": 0,
        "randomExact": 1,
        "randomTwoStar": 5,
        "randomMedianPenalty": 265,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1.94,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "test-network-r1"
      ]
    },
    "lesson-paper-r1": {
      "definitionHash": "9a34c5c0064dae27ed84d5ea4bb9d0479429e801c0ca9f064200216eb3d8ce18",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 96,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-paper",
        "loadedPairs": 5,
        "totalLoad": 525,
        "directedNonzero": 10,
        "ruleCount": 0,
        "randomExact": 5,
        "randomTwoStar": 10,
        "randomMedianPenalty": 100,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1.03,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "test-paper-r1"
      ]
    },
    "lesson-bookie-r1": {
      "definitionHash": "5b1719169236bbd72b9aef2d519ddaebdf0a17845e4b35d40072282320d0d40f",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-bookie",
        "loadedPairs": 9,
        "totalLoad": 915,
        "directedNonzero": 16,
        "ruleCount": 0,
        "randomExact": 2,
        "randomTwoStar": 12,
        "randomMedianPenalty": 220,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1.69,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "test-bookie-r1"
      ]
    },
    "lesson-cellmates-r1": {
      "definitionHash": "58100ebf4b1fafc1bae78f2580122c9c0b821b70b2f66fdf0732ecf3a533b38d",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-cellmates",
        "loadedPairs": 11,
        "totalLoad": 1265,
        "directedNonzero": 22,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 1,
        "randomMedianPenalty": 375,
        "localExact": 18,
        "localTwoStar": 25,
        "localMeanSwaps": 1.44,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "test-cellmates-r1"
      ]
    },
    "lesson-chalk-r1": {
      "definitionHash": "350578556fa6d6cb7433061dc43e585c211f488dc776bdfa16e7f3a58a58b98b",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 8,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-chalk",
        "loadedPairs": 7,
        "totalLoad": 585,
        "directedNonzero": 13,
        "ruleCount": 3,
        "randomExact": 2,
        "randomTwoStar": 2,
        "randomMedianPenalty": 145,
        "localExact": 29,
        "localTwoStar": 29,
        "localMeanSwaps": 2.06,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "test-chalk-r1"
      ]
    },
    "lesson-rearrange-r1": {
      "definitionHash": "5177db704343526f35a0aa2b3f29e782c9ce876e09bf4e4a409e59148145ba13",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 96,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-rearrange",
        "loadedPairs": 5,
        "totalLoad": 545,
        "directedNonzero": 9,
        "ruleCount": 0,
        "randomExact": 3,
        "randomTwoStar": 7,
        "randomMedianPenalty": 160,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1.06,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "test-rearrange-r1"
      ]
    },
    "lesson-portals-r1": {
      "definitionHash": "da1a4fdd199d04de506ca8c9d45e7b9916f083e9b0bffb7f3e080763bf51aab8",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-portals",
        "loadedPairs": 9,
        "totalLoad": 830,
        "directedNonzero": 18,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 10,
        "randomMedianPenalty": 205,
        "localExact": 22,
        "localTwoStar": 32,
        "localMeanSwaps": 1.47,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "test-portals-r1"
      ]
    },
    "lesson-ramps-r1": {
      "definitionHash": "813640f68cc4c39e26f330539bf0c39dd6c647e38324b0be86be95ce7a9cdf50",
      "hashVerified": true,
      "witnessVerified": true,
      "proofVerified": true,
      "proofKind": "layouts",
      "solverVersion": "enumeration-1",
      "pieceCount": 6,
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 48,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-ramps",
        "loadedPairs": 7,
        "totalLoad": 800,
        "directedNonzero": 13,
        "ruleCount": 0,
        "randomExact": 2,
        "randomTwoStar": 7,
        "randomMedianPenalty": 250,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1.31,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "usedBy": [
        "test-ramps-r1"
      ]
    }
  },
  "stages": [
    {
      "id": "opening",
      "title": "One corner missing",
      "kind": "puzzle",
      "lane": "Main Street",
      "board": "small-minus",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Five departments on a floor with one corner missing. Both sides and corners count as touching.",
      "prerequisites": [],
      "achievementGate": null,
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "opening",
      "fixedPuzzleId": "fit-CITY-OPEN-1-false-small-minus-mixed",
      "definitionHash": "c2d0a5a409915f3c4ab177be024b554536efa90bd57fef82117122244d68a8e3",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 4,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:CITY-OPEN-1",
        "loadedPairs": 8,
        "totalLoad": 720,
        "directedNonzero": 16,
        "ruleCount": 0,
        "randomExact": 1,
        "randomTwoStar": 11,
        "randomMedianPenalty": 145,
        "localExact": 16,
        "localTwoStar": 32,
        "localMeanSwaps": 1.44,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
      },
      "reasonToExist": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
    },
    {
      "id": "easy-six",
      "title": "A little more room",
      "kind": "puzzle",
      "lane": "Main Street",
      "board": "small",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Six departments. Spread them out and arrange their relationships before filling the shop.",
      "prerequisites": [
        "opening"
      ],
      "achievementGate": {
        "stars": {
          "node": "opening",
          "min": 2
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "easy-six",
      "fixedPuzzleId": "fit-CITY-EASY-1-false-small-relay",
      "definitionHash": "e7e81a6b295229d2447673368c0aea78b32fe1f5507db70a21410b0e669a0021",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 96,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:CITY-EASY-1",
        "loadedPairs": 5,
        "totalLoad": 650,
        "directedNonzero": 9,
        "ruleCount": 0,
        "randomExact": 4,
        "randomTwoStar": 7,
        "randomMedianPenalty": 165,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1.03,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
      },
      "reasonToExist": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
    },
    {
      "id": "first",
      "title": "A few scraps",
      "kind": "puzzle",
      "lane": "Main Street",
      "board": "small",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Six pieces, one shop. Drag freely, then fill the outlined cells and check. Edges and diagonals both count.",
      "prerequisites": [
        "easy-six"
      ],
      "achievementGate": {
        "stars": {
          "node": "easy-six",
          "min": 2
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "first",
      "fixedPuzzleId": "fit-TRAIN-first-false-small-mixed",
      "definitionHash": "b284ff642b4e8ad481b12ab7bacfd0278a8136ce046ba9ed1255f5efecb32a7e",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-first",
        "loadedPairs": 9,
        "totalLoad": 730,
        "directedNonzero": 18,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 10,
        "randomMedianPenalty": 190,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 2.22,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
      },
      "reasonToExist": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
    },
    {
      "id": "rows",
      "title": "One row at a time",
      "kind": "puzzle",
      "lane": "Main Street",
      "board": "small",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Read from row to column, then read the other direction. Optional review tools help you keep your place.",
      "prerequisites": [
        "first"
      ],
      "achievementGate": {
        "all": [
          {
            "stars": {
              "node": "first",
              "min": 2
            }
          }
        ]
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "rows",
      "fixedPuzzleId": "fit-TRAIN-rows-false-small-relay",
      "definitionHash": "f26d4d3cfe6fcbf24d223f5135a52787c7da940c11a1543386d620164e052abf",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 96,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-rows",
        "loadedPairs": 5,
        "totalLoad": 425,
        "directedNonzero": 10,
        "ruleCount": 0,
        "randomExact": 5,
        "randomTwoStar": 8,
        "randomMedianPenalty": 105,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
      },
      "reasonToExist": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
    },
    {
      "id": "columns",
      "title": "Read it both ways",
      "kind": "puzzle",
      "lane": "Main Street",
      "board": "small",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on small; author a more specific lesson before release.",
      "prerequisites": [
        "rows"
      ],
      "achievementGate": {
        "all": [
          {
            "stars": {
              "node": "rows",
              "min": 2
            }
          }
        ]
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "columns",
      "fixedPuzzleId": "fit-TRAIN-columns-false-small-mixed",
      "definitionHash": "0274fa0f8cd499f0b1bda2c7db94ef3a27568dd2db6c9a5f178c695fb0ef2ed9",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 80,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-columns",
        "loadedPairs": 6,
        "totalLoad": 470,
        "directedNonzero": 11,
        "ruleCount": 0,
        "randomExact": 4,
        "randomTwoStar": 11,
        "randomMedianPenalty": 145,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1.22,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
      },
      "reasonToExist": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
    },
    {
      "id": "colors",
      "title": "Trust your notes",
      "kind": "puzzle",
      "lane": "Main Street",
      "board": "square",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Your notes are your own. Optional tool tests sit off the road; you can continue without collecting them.",
      "prerequisites": [
        "columns"
      ],
      "achievementGate": {
        "all": [
          {
            "stars": {
              "node": "columns",
              "min": 2
            }
          }
        ]
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "colors",
      "fixedPuzzleId": "fit-TRAIN-colors-false-square-mixed",
      "definitionHash": "068ddee0a19afc3fb725037402cd822fdd0963af280e4f9354ab503583ab2a6d",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 7,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-colors",
        "loadedPairs": 13,
        "totalLoad": 1405,
        "directedNonzero": 24,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 645,
        "localExact": 25,
        "localTwoStar": 32,
        "localMeanSwaps": 3.94,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
      },
      "reasonToExist": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
    },
    {
      "id": "organize",
      "title": "Change the filing system",
      "kind": "puzzle",
      "lane": "Main Street",
      "board": "square",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice relay relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "colors"
      ],
      "achievementGate": {
        "all": [
          {
            "stars": {
              "node": "colors",
              "min": 2
            }
          }
        ]
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "organize",
      "fixedPuzzleId": "fit-TRAIN-organize-false-square-relay",
      "definitionHash": "3c9bbc87f7baef60601c3a75156f0fc7ef060744619bfa80a926ff190232a87b",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 146,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-organize",
        "loadedPairs": 8,
        "totalLoad": 825,
        "directedNonzero": 15,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 335,
        "localExact": 28,
        "localTwoStar": 32,
        "localMeanSwaps": 2.38,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
      },
      "reasonToExist": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
    },
    {
      "id": "shading",
      "title": "Heavy traffic",
      "kind": "puzzle",
      "lane": "Best Effort Boulevard",
      "board": "square",
      "mode": "best",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "beb-six"
      ],
      "achievementGate": {
        "stars": {
          "node": "beb-six",
          "min": 2
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "shading",
      "fixedPuzzleId": "best-TRAIN-shading-false-square-mixed",
      "definitionHash": "3608349de165eca6dd747495efa0cf4ce7f62358a106b06d661c7994c58d4ef7",
      "optimum": {
        "penalty": 555,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-shading",
        "loadedPairs": 28,
        "totalLoad": 2695,
        "directedNonzero": 53,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 6,
        "randomMedianPenalty": 1170,
        "localExact": 11,
        "localTwoStar": 32,
        "localMeanSwaps": 4.25,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
      },
      "reasonToExist": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
    },
    {
      "id": "goodset",
      "title": "Close company",
      "kind": "puzzle",
      "lane": "Main Street",
      "board": "square",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice edge relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "organize"
      ],
      "achievementGate": {
        "stars": {
          "node": "organize",
          "min": 2
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "goodset",
      "fixedPuzzleId": "fit-TRAIN-goodset-false-square-edge",
      "definitionHash": "18b55c46559e4bc730bc01edf83f6fb61f2c39e3abb11550e9aab0ecfa19320d",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 2,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-goodset",
        "loadedPairs": 10,
        "totalLoad": 1190,
        "directedNonzero": 19,
        "ruleCount": 3,
        "randomExact": 0,
        "randomTwoStar": 1,
        "randomMedianPenalty": 520,
        "localExact": 7,
        "localTwoStar": 30,
        "localMeanSwaps": 3.53,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
      },
      "reasonToExist": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
    },
    {
      "id": "arrows",
      "title": "This way, probably",
      "kind": "puzzle",
      "lane": "Hold That Thought",
      "board": "square",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice relay relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "colors"
      ],
      "achievementGate": {
        "all": [
          {
            "stars": {
              "node": "colors",
              "min": 2
            }
          }
        ]
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "arrows",
      "fixedPuzzleId": "fit-TRAIN-arrows-false-square-relay",
      "definitionHash": "7f6a74c340ba184831279fe322162bc8f447f0dba065c52e00e6d83450acb3c5",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 98,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-arrows",
        "loadedPairs": 8,
        "totalLoad": 665,
        "directedNonzero": 15,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 1,
        "randomMedianPenalty": 285,
        "localExact": 25,
        "localTwoStar": 32,
        "localMeanSwaps": 2.38,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
      },
      "reasonToExist": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
    },
    {
      "id": "locks",
      "title": "Hold that thought",
      "kind": "puzzle",
      "lane": "Hold That Thought",
      "board": "square",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "arrows"
      ],
      "achievementGate": {
        "all": [
          {
            "stars": {
              "node": "arrows",
              "min": 2
            }
          }
        ]
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "locks",
      "fixedPuzzleId": "fit-TRAIN-locks-false-square-mixed",
      "definitionHash": "263aab19f75f706e47d1ec13e509e6945b2a7c927e9a89b551d1650cd9bc3b83",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-locks",
        "loadedPairs": 18,
        "totalLoad": 1800,
        "directedNonzero": 36,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 885,
        "localExact": 16,
        "localTwoStar": 32,
        "localMeanSwaps": 4.41,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
      },
      "reasonToExist": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
    },
    {
      "id": "links",
      "title": "Loose connections",
      "kind": "puzzle",
      "lane": "Hold That Thought",
      "board": "square",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice relay relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "locks"
      ],
      "achievementGate": {
        "all": [
          {
            "stars": {
              "node": "locks",
              "min": 2
            }
          }
        ]
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "links",
      "fixedPuzzleId": "fit-TRAIN-links-false-square-relay",
      "definitionHash": "924696860b86c5d7fd768aa8d970d2272830d4a4e658b192dbb63eb35f2cc970",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 131,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-links",
        "loadedPairs": 8,
        "totalLoad": 760,
        "directedNonzero": 16,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 1,
        "randomMedianPenalty": 370,
        "localExact": 21,
        "localTwoStar": 31,
        "localMeanSwaps": 2.16,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
      },
      "reasonToExist": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
    },
    {
      "id": "side",
      "title": "Share a side",
      "kind": "puzzle",
      "lane": "Odd Jobs",
      "board": "square",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "A must-share-a-side pair fails when it only touches diagonally. Separation rules are listed below the table.",
      "prerequisites": [
        "colors"
      ],
      "achievementGate": {
        "all": [
          {
            "stars": {
              "node": "colors",
              "min": 2
            }
          }
        ]
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "side",
      "fixedPuzzleId": "fit-TRAIN-side-true-square-edge",
      "definitionHash": "0575e6a3c4b9f306a9d6c0ade28cc73d2b7b1fedc4073ed987f69b61e4a82257",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 3,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-side",
        "loadedPairs": 10,
        "totalLoad": 780,
        "directedNonzero": 19,
        "ruleCount": 6,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 340,
        "localExact": 12,
        "localTwoStar": 25,
        "localMeanSwaps": 3.88,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
      },
      "reasonToExist": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
    },
    {
      "id": "corner",
      "title": "Just around the corner",
      "kind": "puzzle",
      "lane": "Odd Jobs",
      "board": "square",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice corner relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "side"
      ],
      "achievementGate": {
        "all": [
          {
            "stars": {
              "node": "side",
              "min": 2
            }
          }
        ]
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "corner",
      "fixedPuzzleId": "fit-TRAIN-corner-false-square-corner",
      "definitionHash": "90514bc7e618bb595f7743fc14e21746a36564b2feca6b4e8c39039b5670f9bc",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 52,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-corner",
        "loadedPairs": 6,
        "totalLoad": 535,
        "directedNonzero": 10,
        "ruleCount": 3,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 205,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 3.03,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
      },
      "reasonToExist": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
    },
    {
      "id": "courtyard",
      "title": "Mind the gap",
      "kind": "puzzle",
      "lane": "Odd Jobs",
      "board": "courtyard",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on courtyard; author a more specific lesson before release.",
      "prerequisites": [
        "corner"
      ],
      "achievementGate": {
        "all": [
          {
            "stars": {
              "node": "corner",
              "min": 2
            }
          }
        ]
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "courtyard",
      "fixedPuzzleId": "fit-TRAIN-courtyard-false-courtyard-mixed",
      "definitionHash": "90d914ac284704e52c81e48aa55d606a6072fa046d3a2090158a9236822dba8d",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 4,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-courtyard",
        "loadedPairs": 11,
        "totalLoad": 890,
        "directedNonzero": 21,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 520,
        "localExact": 7,
        "localTwoStar": 29,
        "localMeanSwaps": 3.78,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Introduces a genuinely different board geometry."
      },
      "reasonToExist": "Introduces a genuinely different board geometry."
    },
    {
      "id": "honey",
      "title": "Six directions",
      "kind": "puzzle",
      "lane": "Odd Jobs",
      "board": "hex",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Every touching hex pair shares a side. Corner-only contact does not exist here.",
      "prerequisites": [
        "courtyard"
      ],
      "achievementGate": {
        "all": [
          {
            "stars": {
              "node": "courtyard",
              "min": 2
            }
          }
        ]
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "honey",
      "fixedPuzzleId": "fit-TRAIN-honey-false-hex-mixed",
      "definitionHash": "e9e4d322a77a95ad9796f7f910eb3da6bf35c38f65c963a4fec529d64153bb13",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 4,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-honey",
        "loadedPairs": 13,
        "totalLoad": 1410,
        "directedNonzero": 25,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 760,
        "localExact": 5,
        "localTwoStar": 19,
        "localMeanSwaps": 3.72,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Introduces a genuinely different board geometry."
      },
      "reasonToExist": "Introduces a genuinely different board geometry."
    },
    {
      "id": "triangle",
      "title": "A different angle",
      "kind": "puzzle",
      "lane": "Odd Jobs",
      "board": "triangle",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on triangle; author a more specific lesson before release.",
      "prerequisites": [
        "honey"
      ],
      "achievementGate": {
        "all": [
          {
            "stars": {
              "node": "honey",
              "min": 2
            }
          }
        ]
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "triangle",
      "fixedPuzzleId": "fit-TRAIN-triangle-false-triangle-mixed",
      "definitionHash": "d0a0c1f020386acb494ff2bb78da15484b976cc0239c107298033420f43f0390",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 24,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-triangle",
        "loadedPairs": 18,
        "totalLoad": 1455,
        "directedNonzero": 34,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 2,
        "randomMedianPenalty": 455,
        "localExact": 10,
        "localTwoStar": 32,
        "localMeanSwaps": 3.53,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Introduces a genuinely different board geometry."
      },
      "reasonToExist": "Introduces a genuinely different board geometry."
    },
    {
      "id": "push",
      "title": "Take the long way",
      "kind": "puzzle",
      "lane": "Material Handling",
      "board": "small",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Character-required stage: use WASD to push tiles; Q/E/Z/C moves diagonally. Direct dragging, swaps, and arrow-key moves are disabled here. WASD elsewhere is optional.",
      "prerequisites": [
        "colors"
      ],
      "achievementGate": {
        "stars": {
          "node": "colors",
          "min": 2
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "push",
      "fixedPuzzleId": "fit-TRAIN-push-false-small-mixed",
      "definitionHash": "80ca691dde99bb7758bef69dd2be8d7393670d2001ab9d7d7ca90d8b414d249a",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-push",
        "loadedPairs": 9,
        "totalLoad": 840,
        "directedNonzero": 17,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 4,
        "randomMedianPenalty": 220,
        "localExact": 21,
        "localTwoStar": 32,
        "localMeanSwaps": 1.66,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Only existing character-required puzzle; retain a dedicated introduction to pushing."
      },
      "reasonToExist": "Only existing character-required puzzle; retain a dedicated introduction to pushing."
    },
    {
      "id": "diagonals",
      "title": "On an incline",
      "kind": "puzzle",
      "lane": "Material Handling",
      "board": "square",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "push"
      ],
      "achievementGate": {
        "all": [
          {
            "stars": {
              "node": "push",
              "min": 2
            }
          }
        ]
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "diagonals",
      "fixedPuzzleId": "fit-TRAIN-diagonals-false-square-mixed",
      "definitionHash": "703e07916da3f02791f5044746b8db0fde3f15903bbfe12242b70a417d32c41d",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-diagonals",
        "loadedPairs": 16,
        "totalLoad": 1640,
        "directedNonzero": 31,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 1,
        "randomMedianPenalty": 720,
        "localExact": 13,
        "localTwoStar": 30,
        "localMeanSwaps": 3.75,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
      },
      "reasonToExist": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
    },
    {
      "id": "compass",
      "title": "Around the shop",
      "kind": "puzzle",
      "lane": "Material Handling",
      "board": "square",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "diagonals"
      ],
      "achievementGate": {
        "all": [
          {
            "stars": {
              "node": "diagonals",
              "min": 2
            }
          }
        ]
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "compass",
      "fixedPuzzleId": "fit-TRAIN-compass-false-square-mixed",
      "definitionHash": "db27d61b0322cecd53a7a5905a3fb3023ae4416c3b50274db1475a9790e0cc32",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-compass",
        "loadedPairs": 17,
        "totalLoad": 1570,
        "directedNonzero": 33,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 735,
        "localExact": 11,
        "localTwoStar": 32,
        "localMeanSwaps": 4.28,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
      },
      "reasonToExist": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
    },
    {
      "id": "pairs",
      "title": "Better together",
      "kind": "puzzle",
      "lane": "Material Handling",
      "board": "square",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice relay relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "compass"
      ],
      "achievementGate": {
        "all": [
          {
            "stars": {
              "node": "compass",
              "min": 2
            }
          }
        ]
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "pairs",
      "fixedPuzzleId": "fit-TRAIN-pairs-false-square-relay",
      "definitionHash": "03883201f827d3fd41f35c10202b1d533a4be22d69cc555f4a5ef4830b97512a",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 146,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-pairs",
        "loadedPairs": 8,
        "totalLoad": 630,
        "directedNonzero": 15,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 2,
        "randomMedianPenalty": 290,
        "localExact": 25,
        "localTwoStar": 32,
        "localMeanSwaps": 2.19,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
      },
      "reasonToExist": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
    },
    {
      "id": "oldhand",
      "title": "Check once, trust twice",
      "kind": "puzzle",
      "lane": "Northern junction",
      "board": "square",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Either Main Street or Best Effort Boulevard brings you here. Tool collecting is optional.",
      "prerequisites": [
        "main-sixteen",
        "beb-sixteen"
      ],
      "achievementGate": {
        "any": [
          {
            "stars": {
              "node": "main-sixteen",
              "min": 2
            }
          },
          {
            "stars": {
              "node": "beb-sixteen",
              "min": 2
            }
          },
          {
            "stars": {
              "node": "main-sixteen-advanced",
              "min": 2
            }
          },
          {
            "stars": {
              "node": "beb-sixteen-advanced",
              "min": 2
            }
          }
        ]
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "oldhand",
      "fixedPuzzleId": "fit-TRAIN-oldhand-true-square-mixed",
      "definitionHash": "76bdb408beba9da6b2f57c15339bf4f5a63c8cc9b96eaab914d2c189654d7e0c",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-oldhand",
        "loadedPairs": 15,
        "totalLoad": 1830,
        "directedNonzero": 30,
        "ruleCount": 3,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 825,
        "localExact": 4,
        "localTwoStar": 20,
        "localMeanSwaps": 3.94,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
      },
      "reasonToExist": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
    },
    {
      "id": "beb-six",
      "title": "A small compromise",
      "kind": "puzzle",
      "lane": "Best Effort Boulevard",
      "board": "small",
      "mode": "best",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Some loads must stay separated. Check as often as you like and improve your best arrangement. Two stars opens the next stop.",
      "prerequisites": [
        "first"
      ],
      "achievementGate": {
        "stars": {
          "node": "first",
          "min": 2
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "beb-six",
      "fixedPuzzleId": "best-CITY-BEB-1-false-small-mixed",
      "definitionHash": "49f59c872a356b95ec10e704fb3e4f87c0a67ea0ad9c460485e31b94ed619a7a",
      "optimum": {
        "penalty": 240,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:CITY-BEB-1",
        "loadedPairs": 15,
        "totalLoad": 1725,
        "directedNonzero": 27,
        "ruleCount": 0,
        "randomExact": 1,
        "randomTwoStar": 22,
        "randomMedianPenalty": 440,
        "localExact": 21,
        "localTwoStar": 32,
        "localMeanSwaps": 1.47,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
      },
      "reasonToExist": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
    },
    {
      "id": "main-twelve",
      "title": "Room to grow",
      "kind": "puzzle",
      "lane": "Main Street",
      "board": "twelve",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "More departments, the same rules. Make your own notes, then bring the loaded pairs together.",
      "prerequisites": [
        "goodset"
      ],
      "achievementGate": {
        "stars": {
          "node": "goodset",
          "min": 2
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "main-twelve",
      "fixedPuzzleId": "fit-TOWN-main-twelve-false-twelve-mixed",
      "definitionHash": "91d7603c38f66a8fbd5393a9bb2e98ba9f82a6a23b37fb9c3a54528329a724e3",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": null,
        "solutionKind": "certified"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TOWN-main-twelve",
        "loadedPairs": 21,
        "totalLoad": 1760,
        "directedNonzero": 39,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 1045,
        "localExact": 5,
        "localTwoStar": 27,
        "localMeanSwaps": 6.72,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
      },
      "reasonToExist": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
    },
    {
      "id": "main-twelve-advanced",
      "title": "A wider brief",
      "kind": "puzzle",
      "lane": "Main Street",
      "board": "twelve",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "More departments, the same rules. Make your own notes, then bring the loaded pairs together.",
      "prerequisites": [
        "main-twelve"
      ],
      "achievementGate": {
        "stars": {
          "node": "main-twelve",
          "min": 2
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "main-twelve-advanced",
      "fixedPuzzleId": "fit-TOWN-main-twelve-advanced-false-twelve-mixed",
      "definitionHash": "91d95ca696f8d4968c575200ab97ad07ae74ad08b6aacbb95f93cbc73dfe18c1",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": null,
        "solutionKind": "certified"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TOWN-main-twelve-advanced",
        "loadedPairs": 19,
        "totalLoad": 1430,
        "directedNonzero": 37,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 875,
        "localExact": 5,
        "localTwoStar": 27,
        "localMeanSwaps": 5.28,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Extra practice: preserved fixed identity and saved attempts; removed from required release progression."
      },
      "reasonToExist": "Extra practice: preserved fixed identity and saved attempts; removed from required release progression."
    },
    {
      "id": "main-sixteen",
      "title": "A bigger operation",
      "kind": "puzzle",
      "lane": "Main Street",
      "board": "sixteen",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "More departments, the same rules. Make your own notes, then bring the loaded pairs together.",
      "prerequisites": [
        "main-twelve"
      ],
      "achievementGate": {
        "stars": {
          "node": "main-twelve",
          "min": 2
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "main-sixteen",
      "fixedPuzzleId": "fit-TOWN-main-sixteen-false-sixteen-mixed",
      "definitionHash": "f61e8c5b96860492745379662003a87f6ff20aa5a2f97ded0421ee92a4725fc4",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": null,
        "solutionKind": "certified"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TOWN-main-sixteen",
        "loadedPairs": 24,
        "totalLoad": 2010,
        "directedNonzero": 46,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 1265,
        "localExact": 1,
        "localTwoStar": 22,
        "localMeanSwaps": 7,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
      },
      "reasonToExist": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
    },
    {
      "id": "main-sixteen-advanced",
      "title": "The long view",
      "kind": "puzzle",
      "lane": "Main Street",
      "board": "sixteen",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "More departments, the same rules. Make your own notes, then bring the loaded pairs together.",
      "prerequisites": [
        "main-sixteen"
      ],
      "achievementGate": {
        "stars": {
          "node": "main-sixteen",
          "min": 2
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "main-sixteen-advanced",
      "fixedPuzzleId": "fit-TOWN-main-sixteen-advanced-false-sixteen-mixed",
      "definitionHash": "ace9388b21b8108b3971133dc307bc0685d77cf1ffc29456b30b06109065ae45",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": null,
        "solutionKind": "certified"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TOWN-main-sixteen-advanced",
        "loadedPairs": 21,
        "totalLoad": 1380,
        "directedNonzero": 40,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 925,
        "localExact": 2,
        "localTwoStar": 27,
        "localMeanSwaps": 6.75,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Extra practice: preserved fixed identity and saved attempts; removed from required release progression."
      },
      "reasonToExist": "Extra practice: preserved fixed identity and saved attempts; removed from required release progression."
    },
    {
      "id": "beb-six-advanced",
      "title": "Pick your priorities",
      "kind": "puzzle",
      "lane": "Best Effort Boulevard",
      "board": "small",
      "mode": "best",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Keep the strongest relationships close; check and refine freely. The optimum is proved in advance.",
      "prerequisites": [
        "beb-six"
      ],
      "achievementGate": {
        "stars": {
          "node": "beb-six",
          "min": 2
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "beb-six-advanced",
      "fixedPuzzleId": "best-TOWN-beb-six-advanced-false-small-mixed",
      "definitionHash": "3afbc911e69d27b12929c8795ee0f80dce2d381fb53f01ebc961dfc49bc10b87",
      "optimum": {
        "penalty": 145,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TOWN-beb-six-advanced",
        "loadedPairs": 15,
        "totalLoad": 1215,
        "directedNonzero": 29,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 18,
        "randomMedianPenalty": 325,
        "localExact": 21,
        "localTwoStar": 32,
        "localMeanSwaps": 1.59,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Extra practice: preserved fixed identity and saved attempts; removed from required release progression."
      },
      "reasonToExist": "Extra practice: preserved fixed identity and saved attempts; removed from required release progression."
    },
    {
      "id": "beb-nine-advanced",
      "title": "Give and take",
      "kind": "puzzle",
      "lane": "Best Effort Boulevard",
      "board": "square",
      "mode": "best",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Keep the strongest relationships close; check and refine freely. The optimum is proved in advance.",
      "prerequisites": [
        "shading"
      ],
      "achievementGate": {
        "stars": {
          "node": "shading",
          "min": 2
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "beb-nine-advanced",
      "fixedPuzzleId": "best-TOWN-beb-nine-advanced-false-square-mixed",
      "definitionHash": "f14cf19c3ecc397841a138ca4c5265ea8644d7b150ff034cebe8d90eb02ccfe7",
      "optimum": {
        "penalty": 520,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TOWN-beb-nine-advanced",
        "loadedPairs": 28,
        "totalLoad": 2775,
        "directedNonzero": 54,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 1,
        "randomMedianPenalty": 1235,
        "localExact": 8,
        "localTwoStar": 32,
        "localMeanSwaps": 4.19,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Extra practice: preserved fixed identity and saved attempts; removed from required release progression."
      },
      "reasonToExist": "Extra practice: preserved fixed identity and saved attempts; removed from required release progression."
    },
    {
      "id": "beb-twelve",
      "title": "Competing departments",
      "kind": "puzzle",
      "lane": "Best Effort Boulevard",
      "board": "twelve",
      "mode": "best",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Keep the strongest relationships close; check and refine freely. The optimum is proved in advance.",
      "prerequisites": [
        "shading"
      ],
      "achievementGate": {
        "stars": {
          "node": "shading",
          "min": 2
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "beb-twelve",
      "fixedPuzzleId": "best-TOWN-beb-twelve-false-twelve-mixed",
      "definitionHash": "ae0eaff8299ca789a3a3d9b4ed1e731330225b048471549bcabac9d937bc0332",
      "optimum": {
        "penalty": 40,
        "violations": 0,
        "solutions": null,
        "solutionKind": "certified"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TOWN-beb-twelve",
        "loadedPairs": 24,
        "totalLoad": 1405,
        "directedNonzero": 43,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 820,
        "localExact": 2,
        "localTwoStar": 32,
        "localMeanSwaps": 5.25,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
      },
      "reasonToExist": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
    },
    {
      "id": "beb-twelve-advanced",
      "title": "A careful compromise",
      "kind": "puzzle",
      "lane": "Best Effort Boulevard",
      "board": "twelve",
      "mode": "best",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Keep the strongest relationships close; check and refine freely. The optimum is proved in advance.",
      "prerequisites": [
        "beb-twelve"
      ],
      "achievementGate": {
        "stars": {
          "node": "beb-twelve",
          "min": 2
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "beb-twelve-advanced",
      "fixedPuzzleId": "best-TOWN-beb-twelve-advanced-false-twelve-mixed",
      "definitionHash": "155dc7ee65670cb98002261f7ec40255f9d8404b53e8dfbd51cd32cc325c2018",
      "optimum": {
        "penalty": 40,
        "violations": 0,
        "solutions": null,
        "solutionKind": "certified"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TOWN-beb-twelve-advanced",
        "loadedPairs": 27,
        "totalLoad": 1530,
        "directedNonzero": 44,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 900,
        "localExact": 4,
        "localTwoStar": 28,
        "localMeanSwaps": 5.53,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Extra practice: preserved fixed identity and saved attempts; removed from required release progression."
      },
      "reasonToExist": "Extra practice: preserved fixed identity and saved attempts; removed from required release progression."
    },
    {
      "id": "beb-sixteen",
      "title": "The bigger picture",
      "kind": "puzzle",
      "lane": "Best Effort Boulevard",
      "board": "sixteen",
      "mode": "best",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Keep the strongest relationships close; check and refine freely. The optimum is proved in advance.",
      "prerequisites": [
        "beb-twelve"
      ],
      "achievementGate": {
        "stars": {
          "node": "beb-twelve",
          "min": 2
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "beb-sixteen",
      "fixedPuzzleId": "best-TOWN-beb-sixteen-false-sixteen-mixed",
      "definitionHash": "c20d00d55e8630c576212c889418d7a51dd9a4fbcfb4b777b7d6da844263130f",
      "optimum": {
        "penalty": 40,
        "violations": 0,
        "solutions": null,
        "solutionKind": "certified"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TOWN-beb-sixteen",
        "loadedPairs": 35,
        "totalLoad": 2410,
        "directedNonzero": 61,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 1535,
        "localExact": 0,
        "localTwoStar": 14,
        "localMeanSwaps": 7.94,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "strict-swap-search-never-exact"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
      },
      "reasonToExist": "Retained named lesson or first milestone of its board/mode. Confirm pacing through representative human feedback."
    },
    {
      "id": "beb-sixteen-advanced",
      "title": "Make the trade-off",
      "kind": "puzzle",
      "lane": "Best Effort Boulevard",
      "board": "sixteen",
      "mode": "best",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Keep the strongest relationships close; check and refine freely. The optimum is proved in advance.",
      "prerequisites": [
        "beb-sixteen"
      ],
      "achievementGate": {
        "stars": {
          "node": "beb-sixteen",
          "min": 2
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "beb-sixteen-advanced",
      "fixedPuzzleId": "best-TOWN-beb-sixteen-advanced-false-sixteen-mixed",
      "definitionHash": "477a7355c73333a141281db37f04dfe4e8488bf7d65274c14a2e264594ad34a7",
      "optimum": {
        "penalty": 40,
        "violations": 0,
        "solutions": null,
        "solutionKind": "certified"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TOWN-beb-sixteen-advanced",
        "loadedPairs": 41,
        "totalLoad": 2680,
        "directedNonzero": 71,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 1730,
        "localExact": 3,
        "localTwoStar": 13,
        "localMeanSwaps": 9.59,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Extra practice: preserved fixed identity and saved attempts; removed from required release progression."
      },
      "reasonToExist": "Extra practice: preserved fixed identity and saved attempts; removed from required release progression."
    },
    {
      "id": "separation-one-fit",
      "title": "Room to spare",
      "kind": "puzzle",
      "lane": "Separation Street one",
      "board": "square",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "This street can be completed from either end. Its connection does not open a locked stop on the opposite road.",
      "prerequisites": [
        "colors",
        "beb-six",
        "separation-one-best"
      ],
      "achievementGate": {
        "any": [
          {
            "stars": {
              "node": "colors",
              "min": 2
            }
          },
          {
            "stars": {
              "node": "beb-six",
              "min": 2
            }
          },
          {
            "stars": {
              "node": "separation-one-best",
              "min": 2
            }
          }
        ]
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "sep-fit",
      "fixedPuzzleId": "fit-CITY-SEPARATION-1-true-square-edge",
      "definitionHash": "d49bc1dd602cee7d310f26acbd1a54a9fbe9ab558e3ceeca42fa887caa4c4adf",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:CITY-SEPARATION-1",
        "loadedPairs": 10,
        "totalLoad": 995,
        "directedNonzero": 19,
        "ruleCount": 6,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 475,
        "localExact": 5,
        "localTwoStar": 5,
        "localMeanSwaps": 3.72,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Distinct side-rule bridge; retain no-bypass gates independently of path coordinates."
      },
      "reasonToExist": "Distinct side-rule bridge; retain no-bypass gates independently of path coordinates."
    },
    {
      "id": "separation-one-best",
      "title": "Room for compromise",
      "kind": "puzzle",
      "lane": "Separation Street one",
      "board": "square",
      "mode": "best",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "This street can be completed from either end. Its connection does not open a locked stop on the opposite road.",
      "prerequisites": [
        "colors",
        "beb-six",
        "separation-one-fit"
      ],
      "achievementGate": {
        "any": [
          {
            "stars": {
              "node": "colors",
              "min": 2
            }
          },
          {
            "stars": {
              "node": "beb-six",
              "min": 2
            }
          },
          {
            "stars": {
              "node": "separation-one-fit",
              "min": 2
            }
          }
        ]
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "sep-best",
      "fixedPuzzleId": "best-CITY-SEPARATION-2-false-square-mixed",
      "definitionHash": "b77e20d85e785f966828314cccbe17298c55176af2f71029f3c31a1d92a57166",
      "optimum": {
        "penalty": 950,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:CITY-SEPARATION-2",
        "loadedPairs": 28,
        "totalLoad": 3180,
        "directedNonzero": 53,
        "ruleCount": 6,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 1415,
        "localExact": 7,
        "localTwoStar": 31,
        "localMeanSwaps": 4.06,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Distinct side-rule bridge; retain no-bypass gates independently of path coordinates."
      },
      "reasonToExist": "Distinct side-rule bridge; retain no-bypass gates independently of path coordinates."
    },
    {
      "id": "separation-two-fit",
      "title": "Room to spare",
      "kind": "puzzle",
      "lane": "Separation Street two",
      "board": "twelve",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "This street can be completed from either end. Its connection does not open a locked stop on the opposite road.",
      "prerequisites": [
        "main-twelve",
        "beb-twelve",
        "separation-two-best"
      ],
      "achievementGate": {
        "any": [
          {
            "stars": {
              "node": "main-twelve",
              "min": 2
            }
          },
          {
            "stars": {
              "node": "beb-twelve",
              "min": 2
            }
          },
          {
            "stars": {
              "node": "separation-two-best",
              "min": 2
            }
          }
        ]
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "sep-two-fit",
      "fixedPuzzleId": "fit-TOWN-sep-two-fit-false-twelve-edge",
      "definitionHash": "d0cc94da1b995bca3cf817f68385c6be4f7e1409b62604cfefd8bc8f644b33dc",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": null,
        "solutionKind": "certified"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TOWN-sep-two-fit",
        "loadedPairs": 13,
        "totalLoad": 920,
        "directedNonzero": 25,
        "ruleCount": 3,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 485,
        "localExact": 2,
        "localTwoStar": 27,
        "localMeanSwaps": 4.66,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Distinct side-rule bridge; retain no-bypass gates independently of path coordinates."
      },
      "reasonToExist": "Distinct side-rule bridge; retain no-bypass gates independently of path coordinates."
    },
    {
      "id": "separation-two-best",
      "title": "Room for compromise",
      "kind": "puzzle",
      "lane": "Separation Street two",
      "board": "twelve",
      "mode": "best",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "This street can be completed from either end. Its connection does not open a locked stop on the opposite road.",
      "prerequisites": [
        "main-twelve",
        "beb-twelve",
        "separation-two-fit"
      ],
      "achievementGate": {
        "any": [
          {
            "stars": {
              "node": "main-twelve",
              "min": 2
            }
          },
          {
            "stars": {
              "node": "beb-twelve",
              "min": 2
            }
          },
          {
            "stars": {
              "node": "separation-two-fit",
              "min": 2
            }
          }
        ]
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "sep-two-best",
      "fixedPuzzleId": "best-TOWN-sep-two-best-false-twelve-edge",
      "definitionHash": "16e2e42984ceec2cfef48aed7f505400b19c6a9b0accab8beec1615bcb563b85",
      "optimum": {
        "penalty": 40,
        "violations": 0,
        "solutions": null,
        "solutionKind": "certified"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TOWN-sep-two-best",
        "loadedPairs": 21,
        "totalLoad": 750,
        "directedNonzero": 35,
        "ruleCount": 3,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 430,
        "localExact": 7,
        "localTwoStar": 32,
        "localMeanSwaps": 5.25,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Distinct side-rule bridge; retain no-bypass gates independently of path coordinates."
      },
      "reasonToExist": "Distinct side-rule bridge; retain no-bypass gates independently of path coordinates."
    },
    {
      "id": "separation-three-fit",
      "title": "Room to spare",
      "kind": "puzzle",
      "lane": "Separation Street three",
      "board": "sixteen",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "This street can be completed from either end. Its connection does not open a locked stop on the opposite road.",
      "prerequisites": [
        "main-sixteen",
        "beb-sixteen",
        "separation-three-best"
      ],
      "achievementGate": {
        "any": [
          {
            "stars": {
              "node": "main-sixteen",
              "min": 2
            }
          },
          {
            "stars": {
              "node": "beb-sixteen",
              "min": 2
            }
          },
          {
            "stars": {
              "node": "separation-three-best",
              "min": 2
            }
          }
        ]
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "sep-three-fit",
      "fixedPuzzleId": "fit-TOWN-sep-three-fit-false-sixteen-edge",
      "definitionHash": "9eb699e5a411a676aeb8f9d7ec12c20428fbbe50e5fa4dfe58674e090d7c69de",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": null,
        "solutionKind": "certified"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TOWN-sep-three-fit",
        "loadedPairs": 13,
        "totalLoad": 920,
        "directedNonzero": 25,
        "ruleCount": 3,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 600,
        "localExact": 7,
        "localTwoStar": 31,
        "localMeanSwaps": 5.34,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Distinct side-rule bridge; retain no-bypass gates independently of path coordinates."
      },
      "reasonToExist": "Distinct side-rule bridge; retain no-bypass gates independently of path coordinates."
    },
    {
      "id": "separation-three-best",
      "title": "Room for compromise",
      "kind": "puzzle",
      "lane": "Separation Street three",
      "board": "sixteen",
      "mode": "best",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "This street can be completed from either end. Its connection does not open a locked stop on the opposite road.",
      "prerequisites": [
        "main-sixteen",
        "beb-sixteen",
        "separation-three-fit"
      ],
      "achievementGate": {
        "any": [
          {
            "stars": {
              "node": "main-sixteen",
              "min": 2
            }
          },
          {
            "stars": {
              "node": "beb-sixteen",
              "min": 2
            }
          },
          {
            "stars": {
              "node": "separation-three-fit",
              "min": 2
            }
          }
        ]
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "sep-three-best",
      "fixedPuzzleId": "best-TOWN-sep-three-best-false-sixteen-edge",
      "definitionHash": "214c78e422954961d5bdf519940d2044873e968fec905e54d055972c67bcfedc",
      "optimum": {
        "penalty": 40,
        "violations": 0,
        "solutions": null,
        "solutionKind": "certified"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TOWN-sep-three-best",
        "loadedPairs": 24,
        "totalLoad": 1365,
        "directedNonzero": 40,
        "ruleCount": 3,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 985,
        "localExact": 1,
        "localTwoStar": 29,
        "localMeanSwaps": 7.06,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Distinct side-rule bridge; retain no-bypass gates independently of path coordinates."
      },
      "reasonToExist": "Distinct side-rule bridge; retain no-bypass gates independently of path coordinates."
    },
    {
      "id": "test-binary",
      "title": "Try Binary little-numbers",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": "test-binary-r1",
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Try on/off notes while recording relationships. Marking the two copies independently is intentional. Borrowed for this test. Three stars earns the tool; the main road stays open.",
      "prerequisites": [
        "easy-six"
      ],
      "achievementGate": {
        "stars": {
          "node": "easy-six",
          "min": 2
        }
      },
      "loanedTools": [
        "binary"
      ],
      "rewards": [
        "binary"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "first",
      "fixedPuzzleId": "fit-TRAIN-first-false-small-mixed",
      "definitionHash": "b284ff642b4e8ad481b12ab7bacfd0278a8136ce046ba9ed1255f5efecb32a7e",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-first",
        "loadedPairs": 9,
        "totalLoad": 730,
        "directedNonzero": 18,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 10,
        "randomMedianPenalty": 190,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 2.22,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "park",
        "reason": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-binary-r1."
      },
      "reasonToExist": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-binary-r1."
    },
    {
      "id": "test-rows",
      "title": "Try Review rows",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": "test-rows-r1",
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Use row marks to keep your place as you read the source table. Borrowed for this test. Three stars earns the tool; the main road stays open.",
      "prerequisites": [
        "first"
      ],
      "achievementGate": {
        "stars": {
          "node": "first",
          "min": 2
        }
      },
      "loanedTools": [
        "rows"
      ],
      "rewards": [
        "rows"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "rows",
      "fixedPuzzleId": "fit-TRAIN-rows-false-small-relay",
      "definitionHash": "f26d4d3cfe6fcbf24d223f5135a52787c7da940c11a1543386d620164e052abf",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 96,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-rows",
        "loadedPairs": 5,
        "totalLoad": 425,
        "directedNonzero": 10,
        "ruleCount": 0,
        "randomExact": 5,
        "randomTwoStar": 8,
        "randomMedianPenalty": 105,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "park",
        "reason": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-rows-r1."
      },
      "reasonToExist": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-rows-r1."
    },
    {
      "id": "test-cols",
      "title": "Try Review columns",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": "test-cols-r1",
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Review column and row directions independently. Borrowed for this test. Three stars earns the tool; the main road stays open.",
      "prerequisites": [
        "rows"
      ],
      "achievementGate": {
        "stars": {
          "node": "rows",
          "min": 2
        }
      },
      "loanedTools": [
        "cols"
      ],
      "rewards": [
        "cols"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "columns",
      "fixedPuzzleId": "fit-TRAIN-columns-false-small-mixed",
      "definitionHash": "0274fa0f8cd499f0b1bda2c7db94ef3a27568dd2db6c9a5f178c695fb0ef2ed9",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 80,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-columns",
        "loadedPairs": 6,
        "totalLoad": 470,
        "directedNonzero": 11,
        "ruleCount": 0,
        "randomExact": 4,
        "randomTwoStar": 11,
        "randomMedianPenalty": 145,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1.22,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "park",
        "reason": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-cols-r1."
      },
      "reasonToExist": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-cols-r1."
    },
    {
      "id": "test-traffic",
      "title": "Try Traffic-light notes",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "best",
      "releaseHidden": true,
      "supersededBy": "test-traffic-r1",
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Try your own color code for competing loads. Each note can still be wrong. Borrowed for this test. Three stars earns the tool; the main road stays open.",
      "prerequisites": [
        "beb-six"
      ],
      "achievementGate": {
        "stars": {
          "node": "beb-six",
          "min": 2
        }
      },
      "loanedTools": [
        "binary",
        "traffic"
      ],
      "rewards": [
        "traffic"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "beb-six",
      "fixedPuzzleId": "best-CITY-BEB-1-false-small-mixed",
      "definitionHash": "49f59c872a356b95ec10e704fb3e4f87c0a67ea0ad9c460485e31b94ed619a7a",
      "optimum": {
        "penalty": 240,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:CITY-BEB-1",
        "loadedPairs": 15,
        "totalLoad": 1725,
        "directedNonzero": 27,
        "ruleCount": 0,
        "randomExact": 1,
        "randomTwoStar": 22,
        "randomMedianPenalty": 440,
        "localExact": 21,
        "localTwoStar": 32,
        "localMeanSwaps": 1.47,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "park",
        "reason": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-traffic-r1."
      },
      "reasonToExist": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-traffic-r1."
    },
    {
      "id": "test-reorder",
      "title": "Try Reorder the table",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "square",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": "test-reorder-r1",
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Reorder headers to bring related departments together. The source values follow their identities. Borrowed for this test. Three stars earns the tool; the main road stays open.",
      "prerequisites": [
        "colors"
      ],
      "achievementGate": {
        "stars": {
          "node": "colors",
          "min": 2
        }
      },
      "loanedTools": [
        "reorder-rows",
        "reorder-cols"
      ],
      "rewards": [
        "reorder-rows",
        "reorder-cols"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "organize",
      "fixedPuzzleId": "fit-TRAIN-organize-false-square-relay",
      "definitionHash": "3c9bbc87f7baef60601c3a75156f0fc7ef060744619bfa80a926ff190232a87b",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 146,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-organize",
        "loadedPairs": 8,
        "totalLoad": 825,
        "directedNonzero": 15,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 335,
        "localExact": 28,
        "localTwoStar": 32,
        "localMeanSwaps": 2.38,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "park",
        "reason": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-reorder-r1."
      },
      "reasonToExist": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-reorder-r1."
    },
    {
      "id": "test-shaded",
      "title": "Try Shaded table",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "square",
      "mode": "best",
      "releaseHidden": true,
      "supersededBy": "test-shaded-r1",
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Use the shading to read individual directed loads. Values are never added for you. Borrowed for this test. Three stars earns the tool; the main road stays open.",
      "prerequisites": [
        "beb-six"
      ],
      "achievementGate": {
        "stars": {
          "node": "beb-six",
          "min": 2
        }
      },
      "loanedTools": [
        "shaded"
      ],
      "rewards": [
        "shaded"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "shading",
      "fixedPuzzleId": "best-TRAIN-shading-false-square-mixed",
      "definitionHash": "3608349de165eca6dd747495efa0cf4ce7f62358a106b06d661c7994c58d4ef7",
      "optimum": {
        "penalty": 555,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-shading",
        "loadedPairs": 28,
        "totalLoad": 2695,
        "directedNonzero": 53,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 6,
        "randomMedianPenalty": 1170,
        "localExact": 11,
        "localTwoStar": 32,
        "localMeanSwaps": 4.25,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "park",
        "reason": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-shaded-r1."
      },
      "reasonToExist": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-shaded-r1."
    },
    {
      "id": "test-tablelight",
      "title": "Try Traffic-light table",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "square",
      "mode": "best",
      "releaseHidden": true,
      "supersededBy": "test-tablelight-r1",
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Record your own color code on individual directed table cells. Borrowed for this test. Three stars earns the tool; the main road stays open.",
      "prerequisites": [
        "beb-six"
      ],
      "achievementGate": {
        "stars": {
          "node": "beb-six",
          "min": 2
        }
      },
      "loanedTools": [
        "tablelight"
      ],
      "rewards": [
        "tablelight"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "shading",
      "fixedPuzzleId": "best-TRAIN-shading-false-square-mixed",
      "definitionHash": "3608349de165eca6dd747495efa0cf4ce7f62358a106b06d661c7994c58d4ef7",
      "optimum": {
        "penalty": 555,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-shading",
        "loadedPairs": 28,
        "totalLoad": 2695,
        "directedNonzero": 53,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 6,
        "randomMedianPenalty": 1170,
        "localExact": 11,
        "localTwoStar": 32,
        "localMeanSwaps": 4.25,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "park",
        "reason": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-tablelight-r1."
      },
      "reasonToExist": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-tablelight-r1."
    },
    {
      "id": "test-goodset",
      "title": "Try Good Set",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "square",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": "test-goodset-r1",
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "This explicit aid marks actual board neighbors in the table. It does not correct your notes. Borrowed for this test. Three stars earns the tool; the main road stays open.",
      "prerequisites": [
        "organize"
      ],
      "achievementGate": {
        "stars": {
          "node": "organize",
          "min": 2
        }
      },
      "loanedTools": [
        "goodset"
      ],
      "rewards": [
        "goodset"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "goodset",
      "fixedPuzzleId": "fit-TRAIN-goodset-false-square-edge",
      "definitionHash": "18b55c46559e4bc730bc01edf83f6fb61f2c39e3abb11550e9aab0ecfa19320d",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 2,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-goodset",
        "loadedPairs": 10,
        "totalLoad": 1190,
        "directedNonzero": 19,
        "ruleCount": 3,
        "randomExact": 0,
        "randomTwoStar": 1,
        "randomMedianPenalty": 520,
        "localExact": 7,
        "localTwoStar": 30,
        "localMeanSwaps": 3.53,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "park",
        "reason": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-goodset-r1."
      },
      "reasonToExist": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-goodset-r1."
    },
    {
      "id": "test-arrow",
      "title": "Try Arrows",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "square",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": "test-arrow-r1",
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Record directional assumptions with arrow tokens on little-numbers. Borrowed for this test. Three stars earns the tool; the main road stays open.",
      "prerequisites": [
        "colors"
      ],
      "achievementGate": {
        "stars": {
          "node": "colors",
          "min": 2
        }
      },
      "loanedTools": [
        "binary",
        "arrow"
      ],
      "rewards": [
        "arrow"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "arrows",
      "fixedPuzzleId": "fit-TRAIN-arrows-false-square-relay",
      "definitionHash": "7f6a74c340ba184831279fe322162bc8f447f0dba065c52e00e6d83450acb3c5",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 98,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-arrows",
        "loadedPairs": 8,
        "totalLoad": 665,
        "directedNonzero": 15,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 1,
        "randomMedianPenalty": 285,
        "localExact": 25,
        "localTwoStar": 32,
        "localMeanSwaps": 2.38,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "park",
        "reason": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-arrow-r1."
      },
      "reasonToExist": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-arrow-r1."
    },
    {
      "id": "test-lock",
      "title": "Try Lock",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "square",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": "test-lock-r1",
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Pin an assumption in place. The first direct drag removes its lock without moving the tile. Borrowed for this test. Three stars earns the tool; the main road stays open.",
      "prerequisites": [
        "arrows"
      ],
      "achievementGate": {
        "stars": {
          "node": "arrows",
          "min": 2
        }
      },
      "loanedTools": [
        "lock"
      ],
      "rewards": [
        "lock"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "locks",
      "fixedPuzzleId": "fit-TRAIN-locks-false-square-mixed",
      "definitionHash": "263aab19f75f706e47d1ec13e509e6945b2a7c927e9a89b551d1650cd9bc3b83",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-locks",
        "loadedPairs": 18,
        "totalLoad": 1800,
        "directedNonzero": 36,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 885,
        "localExact": 16,
        "localTwoStar": 32,
        "localMeanSwaps": 4.41,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "park",
        "reason": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-lock-r1."
      },
      "reasonToExist": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-lock-r1."
    },
    {
      "id": "test-links",
      "title": "Try Bands and cables",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "square",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": "test-links-r1",
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Link relationships visually. Straight bands and hanging colored cables do not constrain movement. Borrowed for this test. Three stars earns the tool; the main road stays open.",
      "prerequisites": [
        "locks"
      ],
      "achievementGate": {
        "stars": {
          "node": "locks",
          "min": 2
        }
      },
      "loanedTools": [
        "band",
        "cable"
      ],
      "rewards": [
        "band",
        "cable"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "links",
      "fixedPuzzleId": "fit-TRAIN-links-false-square-relay",
      "definitionHash": "924696860b86c5d7fd768aa8d970d2272830d4a4e658b192dbb63eb35f2cc970",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 131,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-links",
        "loadedPairs": 8,
        "totalLoad": 760,
        "directedNonzero": 16,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 1,
        "randomMedianPenalty": 370,
        "localExact": 21,
        "localTwoStar": 31,
        "localMeanSwaps": 2.16,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "park",
        "reason": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-links-r1."
      },
      "reasonToExist": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-links-r1."
    },
    {
      "id": "test-hazard",
      "title": "Try Hazard",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "square",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": "test-hazard-r1",
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Watch actual prohibited and required contact boundaries as you place departments. Borrowed for this test. Three stars earns the tool; the main road stays open.",
      "prerequisites": [
        "colors"
      ],
      "achievementGate": {
        "stars": {
          "node": "colors",
          "min": 2
        }
      },
      "loanedTools": [
        "hazard"
      ],
      "rewards": [
        "hazard"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "side",
      "fixedPuzzleId": "fit-TRAIN-side-true-square-edge",
      "definitionHash": "0575e6a3c4b9f306a9d6c0ade28cc73d2b7b1fedc4073ed987f69b61e4a82257",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 3,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-side",
        "loadedPairs": 10,
        "totalLoad": 780,
        "directedNonzero": 19,
        "ruleCount": 6,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 340,
        "localExact": 12,
        "localTwoStar": 25,
        "localMeanSwaps": 3.88,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "park",
        "reason": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-hazard-r1."
      },
      "reasonToExist": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-hazard-r1."
    },
    {
      "id": "test-sticker",
      "title": "Try Stickers",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "courtyard",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": "test-sticker-r1",
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Cover little-numbers or table cells you want out of sight. Their source values and notes remain. Borrowed for this test. Three stars earns the tool; the main road stays open.",
      "prerequisites": [
        "corner"
      ],
      "achievementGate": {
        "stars": {
          "node": "corner",
          "min": 2
        }
      },
      "loanedTools": [
        "binary",
        "sticker"
      ],
      "rewards": [
        "sticker"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "courtyard",
      "fixedPuzzleId": "fit-TRAIN-courtyard-false-courtyard-mixed",
      "definitionHash": "90d914ac284704e52c81e48aa55d606a6072fa046d3a2090158a9236822dba8d",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 4,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-courtyard",
        "loadedPairs": 11,
        "totalLoad": 890,
        "directedNonzero": 21,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 520,
        "localExact": 7,
        "localTwoStar": 29,
        "localMeanSwaps": 3.78,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "park",
        "reason": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-sticker-r1."
      },
      "reasonToExist": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-sticker-r1."
    },
    {
      "id": "test-turvy",
      "title": "Try Turvy",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "triangle",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": "test-turvy-r1",
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Turn number text for a different perspective. The puzzle itself does not rotate. Borrowed for this test. Three stars earns the tool; the main road stays open.",
      "prerequisites": [
        "honey"
      ],
      "achievementGate": {
        "stars": {
          "node": "honey",
          "min": 2
        }
      },
      "loanedTools": [
        "turvy"
      ],
      "rewards": [
        "turvy"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "triangle",
      "fixedPuzzleId": "fit-TRAIN-triangle-false-triangle-mixed",
      "definitionHash": "d0a0c1f020386acb494ff2bb78da15484b976cc0239c107298033420f43f0390",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 24,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-triangle",
        "loadedPairs": 18,
        "totalLoad": 1455,
        "directedNonzero": 34,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 2,
        "randomMedianPenalty": 455,
        "localExact": 10,
        "localTwoStar": 32,
        "localMeanSwaps": 3.53,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "park",
        "reason": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-turvy-r1."
      },
      "reasonToExist": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-turvy-r1."
    },
    {
      "id": "test-tracks",
      "title": "Try Horizontal and vertical tracks",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": "test-tracks-r1",
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Borrow tracks to hold row or column hypotheses while pushing. Borrowed for this test. Three stars earns the tool; the main road stays open.",
      "prerequisites": [
        "colors"
      ],
      "achievementGate": {
        "stars": {
          "node": "colors",
          "min": 2
        }
      },
      "loanedTools": [
        "htrack",
        "vtrack"
      ],
      "rewards": [
        "htrack",
        "vtrack"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "push",
      "fixedPuzzleId": "fit-TRAIN-push-false-small-mixed",
      "definitionHash": "80ca691dde99bb7758bef69dd2be8d7393670d2001ab9d7d7ca90d8b414d249a",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-push",
        "loadedPairs": 9,
        "totalLoad": 840,
        "directedNonzero": 17,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 4,
        "randomMedianPenalty": 220,
        "localExact": 21,
        "localTwoStar": 32,
        "localMeanSwaps": 1.66,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "park",
        "reason": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-tracks-r1."
      },
      "reasonToExist": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-tracks-r1."
    },
    {
      "id": "test-diagonals",
      "title": "Try Incline and decline",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "square",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": "test-diagonals-r1",
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Try both diagonal constraints. Direct movement must respect the attached track. Borrowed for this test. Three stars earns the tool; the main road stays open.",
      "prerequisites": [
        "push"
      ],
      "achievementGate": {
        "stars": {
          "node": "push",
          "min": 2
        }
      },
      "loanedTools": [
        "incline",
        "decline"
      ],
      "rewards": [
        "incline",
        "decline"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "diagonals",
      "fixedPuzzleId": "fit-TRAIN-diagonals-false-square-mixed",
      "definitionHash": "703e07916da3f02791f5044746b8db0fde3f15903bbfe12242b70a417d32c41d",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-diagonals",
        "loadedPairs": 16,
        "totalLoad": 1640,
        "directedNonzero": 31,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 1,
        "randomMedianPenalty": 720,
        "localExact": 13,
        "localTwoStar": 30,
        "localMeanSwaps": 3.75,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "park",
        "reason": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-diagonals-r1."
      },
      "reasonToExist": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-diagonals-r1."
    },
    {
      "id": "test-compass",
      "title": "Try Cross and Star",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "square",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": "test-compass-r1",
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Compare central row/column movement with eight compass destinations. Borrowed for this test. Three stars earns the tool; the main road stays open.",
      "prerequisites": [
        "diagonals"
      ],
      "achievementGate": {
        "stars": {
          "node": "diagonals",
          "min": 2
        }
      },
      "loanedTools": [
        "cross",
        "star"
      ],
      "rewards": [
        "cross",
        "star"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "compass",
      "fixedPuzzleId": "fit-TRAIN-compass-false-square-mixed",
      "definitionHash": "db27d61b0322cecd53a7a5905a3fb3023ae4416c3b50274db1475a9790e0cc32",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-compass",
        "loadedPairs": 17,
        "totalLoad": 1570,
        "directedNonzero": 33,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 735,
        "localExact": 11,
        "localTwoStar": 32,
        "localMeanSwaps": 4.28,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "park",
        "reason": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-compass-r1."
      },
      "reasonToExist": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-compass-r1."
    },
    {
      "id": "test-weld",
      "title": "Try Domino / Scissor",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "square",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": "test-weld-r1",
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Join a pair and try rotating it. Cut it again to return the token. Borrowed for this test. Three stars earns the tool; the main road stays open.",
      "prerequisites": [
        "compass"
      ],
      "achievementGate": {
        "stars": {
          "node": "compass",
          "min": 2
        }
      },
      "loanedTools": [
        "weld"
      ],
      "rewards": [
        "weld"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "pairs",
      "fixedPuzzleId": "fit-TRAIN-pairs-false-square-relay",
      "definitionHash": "03883201f827d3fd41f35c10202b1d533a4be22d69cc555f4a5ef4830b97512a",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 146,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-pairs",
        "loadedPairs": 8,
        "totalLoad": 630,
        "directedNonzero": 15,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 2,
        "randomMedianPenalty": 290,
        "localExact": 25,
        "localTwoStar": 32,
        "localMeanSwaps": 2.19,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "park",
        "reason": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-weld-r1."
      },
      "reasonToExist": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-weld-r1."
    },
    {
      "id": "test-network",
      "title": "Try Network Tiles",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "square",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": "test-network-r1",
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Mirror future reciprocal color edits when you want to skip transcription. Old discrepancies stay untouched. Borrowed for this test. Three stars earns the tool; the main road stays open.",
      "prerequisites": [
        "oldhand"
      ],
      "achievementGate": {
        "stars": {
          "node": "oldhand",
          "min": 2
        }
      },
      "loanedTools": [
        "binary",
        "traffic",
        "network"
      ],
      "rewards": [
        "network"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "oldhand",
      "fixedPuzzleId": "fit-TRAIN-oldhand-true-square-mixed",
      "definitionHash": "76bdb408beba9da6b2f57c15339bf4f5a63c8cc9b96eaab914d2c189654d7e0c",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-oldhand",
        "loadedPairs": 15,
        "totalLoad": 1830,
        "directedNonzero": 30,
        "ruleCount": 3,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 825,
        "localExact": 4,
        "localTwoStar": 20,
        "localMeanSwaps": 3.94,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "park",
        "reason": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-network-r1."
      },
      "reasonToExist": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-network-r1."
    },
    {
      "id": "test-paper",
      "title": "Try Paper strips",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "square",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": "test-paper-r1",
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Write your own short quantities and arrows. Place the strip on Bench; it can be covered by a tile. Borrowed for this test. Three stars earns the tool; the main road stays open.",
      "prerequisites": [
        "locks"
      ],
      "achievementGate": {
        "stars": {
          "node": "locks",
          "min": 2
        }
      },
      "loanedTools": [
        "paper"
      ],
      "rewards": [
        "paper"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "links",
      "fixedPuzzleId": "fit-TRAIN-links-false-square-relay",
      "definitionHash": "924696860b86c5d7fd768aa8d970d2272830d4a4e658b192dbb63eb35f2cc970",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 131,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-links",
        "loadedPairs": 8,
        "totalLoad": 760,
        "directedNonzero": 16,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 1,
        "randomMedianPenalty": 370,
        "localExact": 21,
        "localTwoStar": 31,
        "localMeanSwaps": 2.16,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "park",
        "reason": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-paper-r1."
      },
      "reasonToExist": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-paper-r1."
    },
    {
      "id": "test-bookie",
      "title": "Try Bookie",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "square",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": "test-bookie-r1",
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Use the two-cell station to read both directed loads, without adding them. Borrowed for this test. Three stars earns the tool; the main road stays open.",
      "prerequisites": [
        "colors"
      ],
      "achievementGate": {
        "stars": {
          "node": "colors",
          "min": 2
        }
      },
      "loanedTools": [
        "bookie"
      ],
      "rewards": [
        "bookie"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "organize",
      "fixedPuzzleId": "fit-TRAIN-organize-false-square-relay",
      "definitionHash": "3c9bbc87f7baef60601c3a75156f0fc7ef060744619bfa80a926ff190232a87b",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 146,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-organize",
        "loadedPairs": 8,
        "totalLoad": 825,
        "directedNonzero": 15,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 335,
        "localExact": 28,
        "localTwoStar": 32,
        "localMeanSwaps": 2.38,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "park",
        "reason": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-bookie-r1."
      },
      "reasonToExist": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-bookie-r1."
    },
    {
      "id": "test-cellmates",
      "title": "Try Cellmates",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "square",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": "test-cellmates-r1",
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Touch an enlarged little-number to locate both directed source cells. Nothing is added. Borrowed for this test. Three stars earns the tool; the main road stays open.",
      "prerequisites": [
        "colors"
      ],
      "achievementGate": {
        "stars": {
          "node": "colors",
          "min": 2
        }
      },
      "loanedTools": [
        "binary",
        "cellmates"
      ],
      "rewards": [
        "cellmates"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "organize",
      "fixedPuzzleId": "fit-TRAIN-organize-false-square-relay",
      "definitionHash": "3c9bbc87f7baef60601c3a75156f0fc7ef060744619bfa80a926ff190232a87b",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 146,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-organize",
        "loadedPairs": 8,
        "totalLoad": 825,
        "directedNonzero": 15,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 335,
        "localExact": 28,
        "localTwoStar": 32,
        "localMeanSwaps": 2.38,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "park",
        "reason": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-cellmates-r1."
      },
      "reasonToExist": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-cellmates-r1."
    },
    {
      "id": "test-chalk",
      "title": "Try Chalk",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "courtyard",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": "test-chalk-r1",
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Make floor notes. Tiles can cover them; moving the tile reveals them again. Borrowed for this test. Three stars earns the tool; the main road stays open.",
      "prerequisites": [
        "side"
      ],
      "achievementGate": {
        "stars": {
          "node": "side",
          "min": 2
        }
      },
      "loanedTools": [
        "chalk"
      ],
      "rewards": [
        "chalk"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "courtyard",
      "fixedPuzzleId": "fit-TRAIN-courtyard-false-courtyard-mixed",
      "definitionHash": "90d914ac284704e52c81e48aa55d606a6072fa046d3a2090158a9236822dba8d",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 4,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-courtyard",
        "loadedPairs": 11,
        "totalLoad": 890,
        "directedNonzero": 21,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 520,
        "localExact": 7,
        "localTwoStar": 29,
        "localMeanSwaps": 3.78,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "park",
        "reason": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-chalk-r1."
      },
      "reasonToExist": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-chalk-r1."
    },
    {
      "id": "test-rearrange",
      "title": "Try Rearrange little-numbers",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "square",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": "test-rearrange-r1",
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Drag enlarged little-numbers to arrange your own tile layout. Borrowed for this test. Three stars earns the tool; the main road stays open.",
      "prerequisites": [
        "columns"
      ],
      "achievementGate": {
        "stars": {
          "node": "columns",
          "min": 2
        }
      },
      "loanedTools": [
        "binary",
        "rearrange"
      ],
      "rewards": [
        "rearrange"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "colors",
      "fixedPuzzleId": "fit-TRAIN-colors-false-square-mixed",
      "definitionHash": "068ddee0a19afc3fb725037402cd822fdd0963af280e4f9354ab503583ab2a6d",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 7,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:TRAIN-colors",
        "loadedPairs": 13,
        "totalLoad": 1405,
        "directedNonzero": 24,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 645,
        "localExact": 25,
        "localTwoStar": 32,
        "localMeanSwaps": 3.94,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "shared-puzzle-definition"
      ],
      "recommendation": {
        "action": "park",
        "reason": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-rearrange-r1."
      },
      "reasonToExist": "Historical shared-puzzle tool test retained for stars, equipment, paid records and journal reopening; replaced on the visible path by test-rearrange-r1."
    },
    {
      "id": "test-binary-r1",
      "title": "Try Binary little-numbers",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": "test-binary",
      "workshopScenario": "notes",
      "exercise": {
        "revision": 1,
        "purpose": "Track a sparse branching network with independent on/off copies of each relationship.",
        "demonstrate": [
          "binary"
        ]
      },
      "intendedLesson": "Track a sparse branching network with independent on/off copies of each relationship. Equipment is loaned here. You can finish in your own way; three stars earns ownership.",
      "prerequisites": [
        "easy-six"
      ],
      "achievementGate": {
        "stars": {
          "node": "easy-six",
          "min": 2
        }
      },
      "loanedTools": [
        "binary"
      ],
      "rewards": [
        "binary"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "lesson-binary-r1",
      "fixedPuzzleId": "fit-LESSON-R1-binary-false-small-relay",
      "definitionHash": "cbb25dd5c5656b7bd428645500ab10a51e34b4fefc895670b54e414d481e08a6",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 96,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-binary",
        "loadedPairs": 5,
        "totalLoad": 500,
        "directedNonzero": 10,
        "ruleCount": 0,
        "randomExact": 4,
        "randomTwoStar": 10,
        "randomMedianPenalty": 145,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 0.91,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "tool-interaction-demonstration-review-pending"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Revisioned independent fixed lesson: Track a sparse branching network with independent on/off copies of each relationship. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
      },
      "reasonToExist": "Revisioned independent fixed lesson: Track a sparse branching network with independent on/off copies of each relationship. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
    },
    {
      "id": "test-rows-r1",
      "title": "Try Review rows",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": "test-rows",
      "workshopScenario": "notes",
      "exercise": {
        "revision": 1,
        "purpose": "Read asymmetric directed loads row by row and keep a manual review place.",
        "demonstrate": [
          "rows"
        ]
      },
      "intendedLesson": "Read asymmetric directed loads row by row and keep a manual review place. Equipment is loaned here. You can finish in your own way; three stars earns ownership.",
      "prerequisites": [
        "first"
      ],
      "achievementGate": {
        "stars": {
          "node": "first",
          "min": 2
        }
      },
      "loanedTools": [
        "rows"
      ],
      "rewards": [
        "rows"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "lesson-rows-r1",
      "fixedPuzzleId": "fit-LESSON-R1-rows-false-small-mixed",
      "definitionHash": "286ddd50f9ff3ac04e16dd80331f5e51b7195b4d29ca9adf53af8d4a7ffbcf80",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-rows",
        "loadedPairs": 9,
        "totalLoad": 940,
        "directedNonzero": 18,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 3,
        "randomMedianPenalty": 255,
        "localExact": 17,
        "localTwoStar": 32,
        "localMeanSwaps": 1.63,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "tool-interaction-demonstration-review-pending"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Revisioned independent fixed lesson: Read asymmetric directed loads row by row and keep a manual review place. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
      },
      "reasonToExist": "Revisioned independent fixed lesson: Read asymmetric directed loads row by row and keep a manual review place. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
    },
    {
      "id": "test-cols-r1",
      "title": "Try Review columns",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": "test-cols",
      "workshopScenario": "notes",
      "exercise": {
        "revision": 1,
        "purpose": "Read the same asymmetric table down columns without confusing reverse-direction values.",
        "demonstrate": [
          "cols"
        ]
      },
      "intendedLesson": "Read the same asymmetric table down columns without confusing reverse-direction values. Equipment is loaned here. You can finish in your own way; three stars earns ownership.",
      "prerequisites": [
        "rows"
      ],
      "achievementGate": {
        "stars": {
          "node": "rows",
          "min": 2
        }
      },
      "loanedTools": [
        "cols"
      ],
      "rewards": [
        "cols"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "lesson-cols-r1",
      "fixedPuzzleId": "fit-LESSON-R1-cols-false-small-relay",
      "definitionHash": "30d2bea2f0fb19290965f47113e215b9d2dbcdf3120e677aad52ff727d317507",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 96,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-cols",
        "loadedPairs": 5,
        "totalLoad": 555,
        "directedNonzero": 10,
        "ruleCount": 0,
        "randomExact": 5,
        "randomTwoStar": 5,
        "randomMedianPenalty": 175,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1.09,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "tool-interaction-demonstration-review-pending"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Revisioned independent fixed lesson: Read the same asymmetric table down columns without confusing reverse-direction values. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
      },
      "reasonToExist": "Revisioned independent fixed lesson: Read the same asymmetric table down columns without confusing reverse-direction values. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
    },
    {
      "id": "test-traffic-r1",
      "title": "Try Traffic-light notes",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "best",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": "test-traffic",
      "workshopScenario": "notes",
      "exercise": {
        "revision": 1,
        "purpose": "Record strong, weak and unwanted relationships in a competing-load table without automatic correction.",
        "demonstrate": [
          "binary",
          "traffic"
        ]
      },
      "intendedLesson": "Record strong, weak and unwanted relationships in a competing-load table without automatic correction. Equipment is loaned here. You can finish in your own way; three stars earns ownership.",
      "prerequisites": [
        "beb-six"
      ],
      "achievementGate": {
        "stars": {
          "node": "beb-six",
          "min": 2
        }
      },
      "loanedTools": [
        "binary",
        "traffic"
      ],
      "rewards": [
        "traffic"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "lesson-traffic-r1",
      "fixedPuzzleId": "best-LESSON-R1-traffic-false-small-mixed",
      "definitionHash": "21253f325eceb81b98fe93ed8571b66a4557d658661cfeb21b8aedab31b81e65",
      "optimum": {
        "penalty": 135,
        "violations": 0,
        "solutions": 32,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-traffic",
        "loadedPairs": 15,
        "totalLoad": 1215,
        "directedNonzero": 30,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 19,
        "randomMedianPenalty": 300,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 2,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "tool-interaction-demonstration-review-pending"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Revisioned independent fixed lesson: Record strong, weak and unwanted relationships in a competing-load table without automatic correction. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
      },
      "reasonToExist": "Revisioned independent fixed lesson: Record strong, weak and unwanted relationships in a competing-load table without automatic correction. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
    },
    {
      "id": "test-reorder-r1",
      "title": "Try Reorder the table",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": "test-reorder",
      "workshopScenario": "notes",
      "exercise": {
        "revision": 1,
        "purpose": "Bring a branching cluster together in the table while retaining department identities and source values.",
        "demonstrate": [
          "reorder-rows",
          "reorder-cols"
        ]
      },
      "intendedLesson": "Bring a branching cluster together in the table while retaining department identities and source values. Equipment is loaned here. You can finish in your own way; three stars earns ownership.",
      "prerequisites": [
        "colors"
      ],
      "achievementGate": {
        "stars": {
          "node": "colors",
          "min": 2
        }
      },
      "loanedTools": [
        "reorder-rows",
        "reorder-cols"
      ],
      "rewards": [
        "reorder-rows",
        "reorder-cols"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "lesson-reorder-r1",
      "fixedPuzzleId": "fit-LESSON-R1-reorder-false-small-relay",
      "definitionHash": "66edf6c271124a5f4136791e1a6a40a30d8dceea231aee55e31be08059f69337",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 96,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-reorder",
        "loadedPairs": 5,
        "totalLoad": 535,
        "directedNonzero": 10,
        "ruleCount": 0,
        "randomExact": 3,
        "randomTwoStar": 6,
        "randomMedianPenalty": 170,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1.06,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "tool-interaction-demonstration-review-pending"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Revisioned independent fixed lesson: Bring a branching cluster together in the table while retaining department identities and source values. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
      },
      "reasonToExist": "Revisioned independent fixed lesson: Bring a branching cluster together in the table while retaining department identities and source values. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
    },
    {
      "id": "test-shaded-r1",
      "title": "Try Shaded table",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "best",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": "test-shaded",
      "workshopScenario": "notes",
      "exercise": {
        "revision": 1,
        "purpose": "Compare weak and strong directed values; shading each direction does not add the pair for you.",
        "demonstrate": [
          "shaded"
        ]
      },
      "intendedLesson": "Compare weak and strong directed values; shading each direction does not add the pair for you. Equipment is loaned here. You can finish in your own way; three stars earns ownership.",
      "prerequisites": [
        "beb-six"
      ],
      "achievementGate": {
        "stars": {
          "node": "beb-six",
          "min": 2
        }
      },
      "loanedTools": [
        "shaded"
      ],
      "rewards": [
        "shaded"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "lesson-shaded-r1",
      "fixedPuzzleId": "best-LESSON-R1-shaded-false-small-mixed",
      "definitionHash": "6f833a9e94805dc8a794d6c04bd1077d8f0d733f69665c11dbd52db69c0c429f",
      "optimum": {
        "penalty": 170,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-shaded",
        "loadedPairs": 15,
        "totalLoad": 1325,
        "directedNonzero": 30,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 14,
        "randomMedianPenalty": 375,
        "localExact": 28,
        "localTwoStar": 32,
        "localMeanSwaps": 1.81,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "tool-interaction-demonstration-review-pending"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Revisioned independent fixed lesson: Compare weak and strong directed values; shading each direction does not add the pair for you. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
      },
      "reasonToExist": "Revisioned independent fixed lesson: Compare weak and strong directed values; shading each direction does not add the pair for you. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
    },
    {
      "id": "test-tablelight-r1",
      "title": "Try Traffic-light table",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "best",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": "test-tablelight",
      "workshopScenario": "notes",
      "exercise": {
        "revision": 1,
        "purpose": "Maintain an independent color key on directed source cells while choosing a compromise.",
        "demonstrate": [
          "tablelight"
        ]
      },
      "intendedLesson": "Maintain an independent color key on directed source cells while choosing a compromise. Equipment is loaned here. You can finish in your own way; three stars earns ownership.",
      "prerequisites": [
        "beb-six"
      ],
      "achievementGate": {
        "stars": {
          "node": "beb-six",
          "min": 2
        }
      },
      "loanedTools": [
        "tablelight"
      ],
      "rewards": [
        "tablelight"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "lesson-tablelight-r1",
      "fixedPuzzleId": "best-LESSON-R1-tablelight-false-small-mixed",
      "definitionHash": "6292ab996997237b0eea8f5fe6f48f4f87b039df341df1ecafd05330a33da30e",
      "optimum": {
        "penalty": 270,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-tablelight",
        "loadedPairs": 15,
        "totalLoad": 1725,
        "directedNonzero": 28,
        "ruleCount": 0,
        "randomExact": 1,
        "randomTwoStar": 23,
        "randomMedianPenalty": 490,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 2.03,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "tool-interaction-demonstration-review-pending"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Revisioned independent fixed lesson: Maintain an independent color key on directed source cells while choosing a compromise. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
      },
      "reasonToExist": "Revisioned independent fixed lesson: Maintain an independent color key on directed source cells while choosing a compromise. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
    },
    {
      "id": "test-goodset-r1",
      "title": "Try Good Set",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": "test-goodset",
      "workshopScenario": "notes",
      "exercise": {
        "revision": 1,
        "purpose": "Compare a partial placement with highlighted actual adjacencies; distinguish it from your own notes.",
        "demonstrate": [
          "goodset"
        ]
      },
      "intendedLesson": "Compare a partial placement with highlighted actual adjacencies; distinguish it from your own notes. Equipment is loaned here. You can finish in your own way; three stars earns ownership.",
      "prerequisites": [
        "organize"
      ],
      "achievementGate": {
        "stars": {
          "node": "organize",
          "min": 2
        }
      },
      "loanedTools": [
        "goodset"
      ],
      "rewards": [
        "goodset"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "lesson-goodset-r1",
      "fixedPuzzleId": "fit-LESSON-R1-goodset-false-small-mixed",
      "definitionHash": "d5bc824b36ada4981c463d20d48d4ce63d17af0111ed874aca676ab41816160b",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-goodset",
        "loadedPairs": 10,
        "totalLoad": 1175,
        "directedNonzero": 19,
        "ruleCount": 0,
        "randomExact": 2,
        "randomTwoStar": 5,
        "randomMedianPenalty": 310,
        "localExact": 23,
        "localTwoStar": 32,
        "localMeanSwaps": 1.5,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "tool-interaction-demonstration-review-pending"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Revisioned independent fixed lesson: Compare a partial placement with highlighted actual adjacencies; distinguish it from your own notes. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
      },
      "reasonToExist": "Revisioned independent fixed lesson: Compare a partial placement with highlighted actual adjacencies; distinguish it from your own notes. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
    },
    {
      "id": "test-arrow-r1",
      "title": "Try Arrows",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": "test-arrow",
      "workshopScenario": "notes",
      "exercise": {
        "revision": 1,
        "purpose": "Record proposed relative directions on a sparse network, then revise an assumption.",
        "demonstrate": [
          "binary",
          "arrow"
        ]
      },
      "intendedLesson": "Record proposed relative directions on a sparse network, then revise an assumption. Equipment is loaned here. You can finish in your own way; three stars earns ownership.",
      "prerequisites": [
        "colors"
      ],
      "achievementGate": {
        "stars": {
          "node": "colors",
          "min": 2
        }
      },
      "loanedTools": [
        "binary",
        "arrow"
      ],
      "rewards": [
        "arrow"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "lesson-arrow-r1",
      "fixedPuzzleId": "fit-LESSON-R1-arrow-false-small-relay",
      "definitionHash": "8b8c3ea8517adc910a5143de70c3aca01b29afb8e3476981f5203d900ee8b05b",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 96,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-arrow",
        "loadedPairs": 5,
        "totalLoad": 550,
        "directedNonzero": 10,
        "ruleCount": 0,
        "randomExact": 5,
        "randomTwoStar": 7,
        "randomMedianPenalty": 130,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1.09,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "tool-interaction-demonstration-review-pending"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Revisioned independent fixed lesson: Record proposed relative directions on a sparse network, then revise an assumption. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
      },
      "reasonToExist": "Revisioned independent fixed lesson: Record proposed relative directions on a sparse network, then revise an assumption. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
    },
    {
      "id": "test-lock-r1",
      "title": "Try Lock",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": "test-lock",
      "workshopScenario": "constraints",
      "exercise": {
        "revision": 1,
        "purpose": "Hold one tentative placement; remove the lock deliberately before revising it.",
        "demonstrate": [
          "lock"
        ]
      },
      "intendedLesson": "Hold one tentative placement; remove the lock deliberately before revising it. Equipment is loaned here. You can finish in your own way; three stars earns ownership.",
      "prerequisites": [
        "arrows"
      ],
      "achievementGate": {
        "stars": {
          "node": "arrows",
          "min": 2
        }
      },
      "loanedTools": [
        "lock"
      ],
      "rewards": [
        "lock"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "lesson-lock-r1",
      "fixedPuzzleId": "fit-LESSON-R1-lock-false-small-mixed",
      "definitionHash": "5f26d92ad4414f8e595c495a395ade5777eaebeebaf319e9d8540925709353fa",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-lock",
        "loadedPairs": 9,
        "totalLoad": 1210,
        "directedNonzero": 18,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 6,
        "randomMedianPenalty": 305,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1.81,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "tool-interaction-demonstration-review-pending"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Revisioned independent fixed lesson: Hold one tentative placement; remove the lock deliberately before revising it. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
      },
      "reasonToExist": "Revisioned independent fixed lesson: Hold one tentative placement; remove the lock deliberately before revising it. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
    },
    {
      "id": "test-links-r1",
      "title": "Try Bands and cables",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": "test-links",
      "workshopScenario": "domino",
      "exercise": {
        "revision": 1,
        "purpose": "Keep two visual hypotheses visible while moving tiles independently; links impose no distance constraint.",
        "demonstrate": [
          "band",
          "cable"
        ]
      },
      "intendedLesson": "Keep two visual hypotheses visible while moving tiles independently; links impose no distance constraint. Equipment is loaned here. You can finish in your own way; three stars earns ownership.",
      "prerequisites": [
        "locks"
      ],
      "achievementGate": {
        "stars": {
          "node": "locks",
          "min": 2
        }
      },
      "loanedTools": [
        "band",
        "cable"
      ],
      "rewards": [
        "band",
        "cable"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "lesson-links-r1",
      "fixedPuzzleId": "fit-LESSON-R1-links-false-small-relay",
      "definitionHash": "bc0904cfacfe0d4d2c2c855508dfedb258512c237bd43e992323f85e71ac6890",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 112,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-links",
        "loadedPairs": 5,
        "totalLoad": 295,
        "directedNonzero": 10,
        "ruleCount": 0,
        "randomExact": 5,
        "randomTwoStar": 9,
        "randomMedianPenalty": 75,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 0.94,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "tool-interaction-demonstration-review-pending"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Revisioned independent fixed lesson: Keep two visual hypotheses visible while moving tiles independently; links impose no distance constraint. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
      },
      "reasonToExist": "Revisioned independent fixed lesson: Keep two visual hypotheses visible while moving tiles independently; links impose no distance constraint. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
    },
    {
      "id": "test-hazard-r1",
      "title": "Try Hazard",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": "test-hazard",
      "workshopScenario": "constraints",
      "exercise": {
        "revision": 1,
        "purpose": "Distinguish required side contact from prohibited contact; inspect actual violated boundaries.",
        "demonstrate": [
          "hazard"
        ]
      },
      "intendedLesson": "Distinguish required side contact from prohibited contact; inspect actual violated boundaries. Equipment is loaned here. You can finish in your own way; three stars earns ownership.",
      "prerequisites": [
        "colors"
      ],
      "achievementGate": {
        "stars": {
          "node": "colors",
          "min": 2
        }
      },
      "loanedTools": [
        "hazard"
      ],
      "rewards": [
        "hazard"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "lesson-hazard-r1",
      "fixedPuzzleId": "fit-LESSON-R1-hazard-true-small-edge",
      "definitionHash": "ef933069f84ce71f5b268ddf6745adb9aee966e240fb7facf1d77c65d500d14e",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 4,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-hazard",
        "loadedPairs": 5,
        "totalLoad": 365,
        "directedNonzero": 10,
        "ruleCount": 6,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 75,
        "localExact": 24,
        "localTwoStar": 24,
        "localMeanSwaps": 2.44,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "tool-interaction-demonstration-review-pending"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Revisioned independent fixed lesson: Distinguish required side contact from prohibited contact; inspect actual violated boundaries. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
      },
      "reasonToExist": "Revisioned independent fixed lesson: Distinguish required side contact from prohibited contact; inspect actual violated boundaries. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
    },
    {
      "id": "test-sticker-r1",
      "title": "Try Stickers",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": "test-sticker",
      "workshopScenario": "notes",
      "exercise": {
        "revision": 1,
        "purpose": "Hide a finished note or source value without deleting it; uncover it when the hypothesis changes.",
        "demonstrate": [
          "binary",
          "sticker"
        ]
      },
      "intendedLesson": "Hide a finished note or source value without deleting it; uncover it when the hypothesis changes. Equipment is loaned here. You can finish in your own way; three stars earns ownership.",
      "prerequisites": [
        "corner"
      ],
      "achievementGate": {
        "stars": {
          "node": "corner",
          "min": 2
        }
      },
      "loanedTools": [
        "binary",
        "sticker"
      ],
      "rewards": [
        "sticker"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "lesson-sticker-r1",
      "fixedPuzzleId": "fit-LESSON-R1-sticker-false-small-relay",
      "definitionHash": "6c354b355eebf104a297f010e3f9a71d085b1e565ec341722179dd41913fe780",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 96,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-sticker",
        "loadedPairs": 5,
        "totalLoad": 500,
        "directedNonzero": 10,
        "ruleCount": 0,
        "randomExact": 5,
        "randomTwoStar": 15,
        "randomMedianPenalty": 95,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 0.91,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "tool-interaction-demonstration-review-pending"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Revisioned independent fixed lesson: Hide a finished note or source value without deleting it; uncover it when the hypothesis changes. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
      },
      "reasonToExist": "Revisioned independent fixed lesson: Hide a finished note or source value without deleting it; uncover it when the hypothesis changes. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
    },
    {
      "id": "test-turvy-r1",
      "title": "Try Turvy",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": "test-turvy",
      "workshopScenario": "domino",
      "exercise": {
        "revision": 1,
        "purpose": "Change text orientation while preserving the tile identity and its relationships.",
        "demonstrate": [
          "turvy"
        ]
      },
      "intendedLesson": "Change text orientation while preserving the tile identity and its relationships. Equipment is loaned here. You can finish in your own way; three stars earns ownership.",
      "prerequisites": [
        "honey"
      ],
      "achievementGate": {
        "stars": {
          "node": "honey",
          "min": 2
        }
      },
      "loanedTools": [
        "turvy"
      ],
      "rewards": [
        "turvy"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "lesson-turvy-r1",
      "fixedPuzzleId": "fit-LESSON-R1-turvy-false-small-mixed",
      "definitionHash": "da8fd819e2ce38be25f48241cd1eec929c4701fd2639143925c27f74aaabd2ea",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 80,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-turvy",
        "loadedPairs": 7,
        "totalLoad": 795,
        "directedNonzero": 13,
        "ruleCount": 0,
        "randomExact": 5,
        "randomTwoStar": 7,
        "randomMedianPenalty": 185,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1.19,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "tool-interaction-demonstration-review-pending"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Revisioned independent fixed lesson: Change text orientation while preserving the tile identity and its relationships. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
      },
      "reasonToExist": "Revisioned independent fixed lesson: Change text orientation while preserving the tile identity and its relationships. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
    },
    {
      "id": "test-tracks-r1",
      "title": "Try Horizontal and vertical tracks",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": "test-tracks",
      "workshopScenario": "constraints",
      "exercise": {
        "revision": 1,
        "purpose": "Try row and column hypotheses on placed tiles, and observe the allowed movement axes.",
        "demonstrate": [
          "htrack",
          "vtrack"
        ]
      },
      "intendedLesson": "Try row and column hypotheses on placed tiles, and observe the allowed movement axes. Equipment is loaned here. You can finish in your own way; three stars earns ownership.",
      "prerequisites": [
        "colors"
      ],
      "achievementGate": {
        "stars": {
          "node": "colors",
          "min": 2
        }
      },
      "loanedTools": [
        "htrack",
        "vtrack"
      ],
      "rewards": [
        "htrack",
        "vtrack"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "lesson-tracks-r1",
      "fixedPuzzleId": "fit-LESSON-R1-tracks-false-small-mixed",
      "definitionHash": "54195ed931b512668563e93e044470fe7a6f61e9297c396cb4b2fffa2c28e515",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-tracks",
        "loadedPairs": 10,
        "totalLoad": 1095,
        "directedNonzero": 20,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 4,
        "randomMedianPenalty": 285,
        "localExact": 20,
        "localTwoStar": 32,
        "localMeanSwaps": 1.38,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "tool-interaction-demonstration-review-pending"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Revisioned independent fixed lesson: Try row and column hypotheses on placed tiles, and observe the allowed movement axes. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
      },
      "reasonToExist": "Revisioned independent fixed lesson: Try row and column hypotheses on placed tiles, and observe the allowed movement axes. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
    },
    {
      "id": "test-diagonals-r1",
      "title": "Try Incline and decline",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": "test-diagonals",
      "workshopScenario": "constraints",
      "exercise": {
        "revision": 1,
        "purpose": "Compare ascending and descending diagonal constraints without changing the underlying table.",
        "demonstrate": [
          "incline",
          "decline"
        ]
      },
      "intendedLesson": "Compare ascending and descending diagonal constraints without changing the underlying table. Equipment is loaned here. You can finish in your own way; three stars earns ownership.",
      "prerequisites": [
        "push"
      ],
      "achievementGate": {
        "stars": {
          "node": "push",
          "min": 2
        }
      },
      "loanedTools": [
        "incline",
        "decline"
      ],
      "rewards": [
        "incline",
        "decline"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "lesson-diagonals-r1",
      "fixedPuzzleId": "fit-LESSON-R1-diagonals-false-small-mixed",
      "definitionHash": "ce4d0d2a3fbb16b304463151304fd3a9c3f58cb37781b8721e44954118503f6b",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-diagonals",
        "loadedPairs": 10,
        "totalLoad": 880,
        "directedNonzero": 18,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 5,
        "randomMedianPenalty": 270,
        "localExact": 25,
        "localTwoStar": 32,
        "localMeanSwaps": 1.66,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "tool-interaction-demonstration-review-pending"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Revisioned independent fixed lesson: Compare ascending and descending diagonal constraints without changing the underlying table. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
      },
      "reasonToExist": "Revisioned independent fixed lesson: Compare ascending and descending diagonal constraints without changing the underlying table. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
    },
    {
      "id": "test-compass-r1",
      "title": "Try Cross and Star",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": "test-compass",
      "workshopScenario": "constraints",
      "exercise": {
        "revision": 1,
        "purpose": "Contrast a row-or-column Cross with the eight compass destinations of a Star.",
        "demonstrate": [
          "cross",
          "star"
        ]
      },
      "intendedLesson": "Contrast a row-or-column Cross with the eight compass destinations of a Star. Equipment is loaned here. You can finish in your own way; three stars earns ownership.",
      "prerequisites": [
        "diagonals"
      ],
      "achievementGate": {
        "stars": {
          "node": "diagonals",
          "min": 2
        }
      },
      "loanedTools": [
        "cross",
        "star"
      ],
      "rewards": [
        "cross",
        "star"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "lesson-compass-r1",
      "fixedPuzzleId": "fit-LESSON-R1-compass-false-small-relay",
      "definitionHash": "4e05848a79eb47ebfffcf66846189de5b4e25bf5bd2bfcc39b1ca9e09c5dbf04",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 96,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-compass",
        "loadedPairs": 5,
        "totalLoad": 725,
        "directedNonzero": 9,
        "ruleCount": 0,
        "randomExact": 3,
        "randomTwoStar": 3,
        "randomMedianPenalty": 165,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "tool-interaction-demonstration-review-pending"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Revisioned independent fixed lesson: Contrast a row-or-column Cross with the eight compass destinations of a Star. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
      },
      "reasonToExist": "Revisioned independent fixed lesson: Contrast a row-or-column Cross with the eight compass destinations of a Star. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
    },
    {
      "id": "test-weld-r1",
      "title": "Try Domino / Scissor",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": "test-weld",
      "workshopScenario": "domino",
      "exercise": {
        "revision": 1,
        "purpose": "Move a joined pair from either end, turn around an obstacle, and cut the pair to recover the tool.",
        "demonstrate": [
          "weld"
        ]
      },
      "intendedLesson": "Move a joined pair from either end, turn around an obstacle, and cut the pair to recover the tool. Equipment is loaned here. You can finish in your own way; three stars earns ownership.",
      "prerequisites": [
        "compass"
      ],
      "achievementGate": {
        "stars": {
          "node": "compass",
          "min": 2
        }
      },
      "loanedTools": [
        "weld"
      ],
      "rewards": [
        "weld"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "lesson-weld-r1",
      "fixedPuzzleId": "fit-LESSON-R1-weld-false-small-relay",
      "definitionHash": "40609aca37f6ace378b8cf5ade5abb96e2a0679b6ffcfceb6744a6a11e6eb000",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 96,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-weld",
        "loadedPairs": 5,
        "totalLoad": 675,
        "directedNonzero": 8,
        "ruleCount": 0,
        "randomExact": 3,
        "randomTwoStar": 3,
        "randomMedianPenalty": 150,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1.09,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "tool-interaction-demonstration-review-pending"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Revisioned independent fixed lesson: Move a joined pair from either end, turn around an obstacle, and cut the pair to recover the tool. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
      },
      "reasonToExist": "Revisioned independent fixed lesson: Move a joined pair from either end, turn around an obstacle, and cut the pair to recover the tool. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
    },
    {
      "id": "test-network-r1",
      "title": "Try Network Tiles",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": "test-network",
      "workshopScenario": "notes",
      "exercise": {
        "revision": 1,
        "purpose": "Retain an old conflicting note, then mirror a future reciprocal color edit explicitly.",
        "demonstrate": [
          "binary",
          "traffic",
          "network"
        ]
      },
      "intendedLesson": "Retain an old conflicting note, then mirror a future reciprocal color edit explicitly. Equipment is loaned here. You can finish in your own way; three stars earns ownership.",
      "prerequisites": [
        "oldhand"
      ],
      "achievementGate": {
        "stars": {
          "node": "oldhand",
          "min": 2
        }
      },
      "loanedTools": [
        "binary",
        "traffic",
        "network"
      ],
      "rewards": [
        "network"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "lesson-network-r1",
      "fixedPuzzleId": "fit-LESSON-R1-network-false-small-mixed",
      "definitionHash": "41e02edddf1dd9b0effbd4f83a8c8c68efb9e9b1cb5d41860e3c26e7f99f786e",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-network",
        "loadedPairs": 11,
        "totalLoad": 1010,
        "directedNonzero": 22,
        "ruleCount": 0,
        "randomExact": 1,
        "randomTwoStar": 5,
        "randomMedianPenalty": 265,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1.94,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "tool-interaction-demonstration-review-pending"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Revisioned independent fixed lesson: Retain an old conflicting note, then mirror a future reciprocal color edit explicitly. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
      },
      "reasonToExist": "Revisioned independent fixed lesson: Retain an old conflicting note, then mirror a future reciprocal color edit explicitly. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
    },
    {
      "id": "test-paper-r1",
      "title": "Try Paper strips",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": "test-paper",
      "workshopScenario": "notes",
      "exercise": {
        "revision": 1,
        "purpose": "Record a directed pair in your own shorthand on a movable strip; cover and reveal the strip.",
        "demonstrate": [
          "paper"
        ]
      },
      "intendedLesson": "Record a directed pair in your own shorthand on a movable strip; cover and reveal the strip. Equipment is loaned here. You can finish in your own way; three stars earns ownership.",
      "prerequisites": [
        "locks"
      ],
      "achievementGate": {
        "stars": {
          "node": "locks",
          "min": 2
        }
      },
      "loanedTools": [
        "paper"
      ],
      "rewards": [
        "paper"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "lesson-paper-r1",
      "fixedPuzzleId": "fit-LESSON-R1-paper-false-small-relay",
      "definitionHash": "9a34c5c0064dae27ed84d5ea4bb9d0479429e801c0ca9f064200216eb3d8ce18",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 96,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-paper",
        "loadedPairs": 5,
        "totalLoad": 525,
        "directedNonzero": 10,
        "ruleCount": 0,
        "randomExact": 5,
        "randomTwoStar": 10,
        "randomMedianPenalty": 100,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1.03,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "tool-interaction-demonstration-review-pending"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Revisioned independent fixed lesson: Record a directed pair in your own shorthand on a movable strip; cover and reveal the strip. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
      },
      "reasonToExist": "Revisioned independent fixed lesson: Record a directed pair in your own shorthand on a movable strip; cover and reveal the strip. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
    },
    {
      "id": "test-bookie-r1",
      "title": "Try Bookie",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": "test-bookie",
      "workshopScenario": "notes",
      "exercise": {
        "revision": 1,
        "purpose": "Compare two selected departments in both directions without receiving an automatic sum.",
        "demonstrate": [
          "bookie"
        ]
      },
      "intendedLesson": "Compare two selected departments in both directions without receiving an automatic sum. Equipment is loaned here. You can finish in your own way; three stars earns ownership.",
      "prerequisites": [
        "colors"
      ],
      "achievementGate": {
        "stars": {
          "node": "colors",
          "min": 2
        }
      },
      "loanedTools": [
        "bookie"
      ],
      "rewards": [
        "bookie"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "lesson-bookie-r1",
      "fixedPuzzleId": "fit-LESSON-R1-bookie-false-small-mixed",
      "definitionHash": "5b1719169236bbd72b9aef2d519ddaebdf0a17845e4b35d40072282320d0d40f",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-bookie",
        "loadedPairs": 9,
        "totalLoad": 915,
        "directedNonzero": 16,
        "ruleCount": 0,
        "randomExact": 2,
        "randomTwoStar": 12,
        "randomMedianPenalty": 220,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1.69,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "tool-interaction-demonstration-review-pending"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Revisioned independent fixed lesson: Compare two selected departments in both directions without receiving an automatic sum. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
      },
      "reasonToExist": "Revisioned independent fixed lesson: Compare two selected departments in both directions without receiving an automatic sum. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
    },
    {
      "id": "test-cellmates-r1",
      "title": "Try Cellmates",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": "test-cellmates",
      "workshopScenario": "notes",
      "exercise": {
        "revision": 1,
        "purpose": "Trace an enlarged relationship note back to both directed source-table cells.",
        "demonstrate": [
          "binary",
          "cellmates"
        ]
      },
      "intendedLesson": "Trace an enlarged relationship note back to both directed source-table cells. Equipment is loaned here. You can finish in your own way; three stars earns ownership.",
      "prerequisites": [
        "colors"
      ],
      "achievementGate": {
        "stars": {
          "node": "colors",
          "min": 2
        }
      },
      "loanedTools": [
        "binary",
        "cellmates"
      ],
      "rewards": [
        "cellmates"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "lesson-cellmates-r1",
      "fixedPuzzleId": "fit-LESSON-R1-cellmates-false-small-mixed",
      "definitionHash": "58100ebf4b1fafc1bae78f2580122c9c0b821b70b2f66fdf0732ecf3a533b38d",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-cellmates",
        "loadedPairs": 11,
        "totalLoad": 1265,
        "directedNonzero": 22,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 1,
        "randomMedianPenalty": 375,
        "localExact": 18,
        "localTwoStar": 25,
        "localMeanSwaps": 1.44,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "tool-interaction-demonstration-review-pending"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Revisioned independent fixed lesson: Trace an enlarged relationship note back to both directed source-table cells. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
      },
      "reasonToExist": "Revisioned independent fixed lesson: Trace an enlarged relationship note back to both directed source-table cells. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
    },
    {
      "id": "test-chalk-r1",
      "title": "Try Chalk",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": "test-chalk",
      "workshopScenario": "notes",
      "exercise": {
        "revision": 1,
        "purpose": "Mark a location hypothesis on the floor; moving a tile uncovers the same mark.",
        "demonstrate": [
          "chalk"
        ]
      },
      "intendedLesson": "Mark a location hypothesis on the floor; moving a tile uncovers the same mark. Equipment is loaned here. You can finish in your own way; three stars earns ownership.",
      "prerequisites": [
        "side"
      ],
      "achievementGate": {
        "stars": {
          "node": "side",
          "min": 2
        }
      },
      "loanedTools": [
        "chalk"
      ],
      "rewards": [
        "chalk"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "lesson-chalk-r1",
      "fixedPuzzleId": "fit-LESSON-R1-chalk-false-small-edge",
      "definitionHash": "350578556fa6d6cb7433061dc43e585c211f488dc776bdfa16e7f3a58a58b98b",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 8,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-chalk",
        "loadedPairs": 7,
        "totalLoad": 585,
        "directedNonzero": 13,
        "ruleCount": 3,
        "randomExact": 2,
        "randomTwoStar": 2,
        "randomMedianPenalty": 145,
        "localExact": 29,
        "localTwoStar": 29,
        "localMeanSwaps": 2.06,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "tool-interaction-demonstration-review-pending"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Revisioned independent fixed lesson: Mark a location hypothesis on the floor; moving a tile uncovers the same mark. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
      },
      "reasonToExist": "Revisioned independent fixed lesson: Mark a location hypothesis on the floor; moving a tile uncovers the same mark. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
    },
    {
      "id": "test-rearrange-r1",
      "title": "Try Rearrange little-numbers",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": "test-rearrange",
      "workshopScenario": "notes",
      "exercise": {
        "revision": 1,
        "purpose": "Group related little-number notes locally on a tile without changing their source identities.",
        "demonstrate": [
          "binary",
          "rearrange"
        ]
      },
      "intendedLesson": "Group related little-number notes locally on a tile without changing their source identities. Equipment is loaned here. You can finish in your own way; three stars earns ownership.",
      "prerequisites": [
        "columns"
      ],
      "achievementGate": {
        "stars": {
          "node": "columns",
          "min": 2
        }
      },
      "loanedTools": [
        "binary",
        "rearrange"
      ],
      "rewards": [
        "rearrange"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "lesson-rearrange-r1",
      "fixedPuzzleId": "fit-LESSON-R1-rearrange-false-small-relay",
      "definitionHash": "5177db704343526f35a0aa2b3f29e782c9ce876e09bf4e4a409e59148145ba13",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 96,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-rearrange",
        "loadedPairs": 5,
        "totalLoad": 545,
        "directedNonzero": 9,
        "ruleCount": 0,
        "randomExact": 3,
        "randomTwoStar": 7,
        "randomMedianPenalty": 160,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1.06,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "tool-interaction-demonstration-review-pending"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Revisioned independent fixed lesson: Group related little-number notes locally on a tile without changing their source identities. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
      },
      "reasonToExist": "Revisioned independent fixed lesson: Group related little-number notes locally on a tile without changing their source identities. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
    },
    {
      "id": "test-portals-r1",
      "title": "Try Portals",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": "portals",
      "exercise": {
        "revision": 1,
        "purpose": "Push one tile through paired vertical borders, leave the character at the entrance, and examine a blocked exit.",
        "demonstrate": [
          "portals"
        ]
      },
      "intendedLesson": "Push one tile through paired vertical borders, leave the character at the entrance, and examine a blocked exit. Character movement is required; equipment use is optional. Three stars earns the tool.",
      "prerequisites": [
        "push"
      ],
      "achievementGate": {
        "stars": {
          "node": "push",
          "min": 2
        }
      },
      "loanedTools": [
        "portals"
      ],
      "rewards": [
        "portals"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "lesson-portals-r1",
      "fixedPuzzleId": "fit-LESSON-R1-portals-false-small-mixed",
      "definitionHash": "da1a4fdd199d04de506ca8c9d45e7b9916f083e9b0bffb7f3e080763bf51aab8",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 16,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-portals",
        "loadedPairs": 9,
        "totalLoad": 830,
        "directedNonzero": 18,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 10,
        "randomMedianPenalty": 205,
        "localExact": 22,
        "localTwoStar": 32,
        "localMeanSwaps": 1.47,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "tool-interaction-demonstration-review-pending"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Revisioned independent fixed lesson: Push one tile through paired vertical borders, leave the character at the entrance, and examine a blocked exit. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
      },
      "reasonToExist": "Revisioned independent fixed lesson: Push one tile through paired vertical borders, leave the character at the entrance, and examine a blocked exit. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
    },
    {
      "id": "test-ramps-r1",
      "title": "Try Ramps",
      "kind": "tool_test",
      "lane": "Tool tests",
      "board": "small",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": "ramps",
      "exercise": {
        "revision": 1,
        "purpose": "Approach a ramp at different speeds, cross a tile barrier, and walk over connected tops without pushing tiles.",
        "demonstrate": [
          "ramps"
        ]
      },
      "intendedLesson": "Approach a ramp at different speeds, cross a tile barrier, and walk over connected tops without pushing tiles. Character movement is required; equipment use is optional. Three stars earns the tool.",
      "prerequisites": [
        "pairs"
      ],
      "achievementGate": {
        "stars": {
          "node": "pairs",
          "min": 2
        }
      },
      "loanedTools": [
        "ramps"
      ],
      "rewards": [
        "ramps"
      ],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "lesson-ramps-r1",
      "fixedPuzzleId": "fit-LESSON-R1-ramps-false-small-mixed",
      "definitionHash": "813640f68cc4c39e26f330539bf0c39dd6c647e38324b0be86be95ce7a9cdf50",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 48,
        "solutionKind": "layouts"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:LESSON-R1-ramps",
        "loadedPairs": 7,
        "totalLoad": 800,
        "directedNonzero": 13,
        "ruleCount": 0,
        "randomExact": 2,
        "randomTwoStar": 7,
        "randomMedianPenalty": 250,
        "localExact": 32,
        "localTwoStar": 32,
        "localMeanSwaps": 1.31,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [
        "tool-interaction-demonstration-review-pending"
      ],
      "recommendation": {
        "action": "retain",
        "reason": "Revisioned independent fixed lesson: Approach a ramp at different speeds, cross a tile barrier, and walk over connected tops without pushing tiles. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
      },
      "reasonToExist": "Revisioned independent fixed lesson: Approach a ramp at different speeds, cross a tile barrier, and walk over connected tops without pushing tiles. Exact data/gates verified; actual tool usefulness still requires the workshop demonstration review."
    },
    {
      "id": "yits-demo-1",
      "title": "January",
      "kind": "yits_month",
      "lane": "A year in training",
      "board": "square",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "A fixed twelve-month training year. Your arrangement and notes carry forward; changed source loads are outlined. No deadline. This is separate from real-day rewards.",
      "prerequisites": [
        "easy-six"
      ],
      "achievementGate": {
        "stars": {
          "node": "easy-six",
          "min": 2
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "yits-demo-1",
      "fixedPuzzleId": "fit-Y2000-01-01-1-false-square-mixed",
      "definitionHash": "4bf23b458b352a1626474630a10a182239d4b4f962a417a57d9cb424bafbdcc2",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:Y2000-01-01-1",
        "loadedPairs": 17,
        "totalLoad": 1485,
        "directedNonzero": 32,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 725,
        "localExact": 11,
        "localTwoStar": 32,
        "localMeanSwaps": 4.13,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Distinct changed-table carry-forward lesson in the fixed training year; check continuity across all twelve months."
      },
      "reasonToExist": "Distinct changed-table carry-forward lesson in the fixed training year; check continuity across all twelve months."
    },
    {
      "id": "yits-demo-2",
      "title": "February",
      "kind": "yits_month",
      "lane": "A year in training",
      "board": "square",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "A fixed twelve-month training year. Your arrangement and notes carry forward; changed source loads are outlined. No deadline. This is separate from real-day rewards.",
      "prerequisites": [
        "yits-demo-1"
      ],
      "achievementGate": {
        "stars": {
          "node": "yits-demo-1",
          "min": 2
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "yits-demo-2",
      "fixedPuzzleId": "fit-Y2000-01-01-2-false-square-mixed",
      "definitionHash": "d88bb6e5145d3b064c8c2cb26c47458e6eb9b59694acd157f57474c84caaa999",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:Y2000-01-01-2",
        "loadedPairs": 17,
        "totalLoad": 1655,
        "directedNonzero": 33,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 755,
        "localExact": 11,
        "localTwoStar": 30,
        "localMeanSwaps": 4.38,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Distinct changed-table carry-forward lesson in the fixed training year; check continuity across all twelve months."
      },
      "reasonToExist": "Distinct changed-table carry-forward lesson in the fixed training year; check continuity across all twelve months."
    },
    {
      "id": "yits-demo-3",
      "title": "March",
      "kind": "yits_month",
      "lane": "A year in training",
      "board": "square",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "A fixed twelve-month training year. Your arrangement and notes carry forward; changed source loads are outlined. No deadline. This is separate from real-day rewards.",
      "prerequisites": [
        "yits-demo-2"
      ],
      "achievementGate": {
        "stars": {
          "node": "yits-demo-2",
          "min": 2
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "yits-demo-3",
      "fixedPuzzleId": "fit-Y2000-01-01-3-false-square-mixed",
      "definitionHash": "715b9e3176dd4f37d6e24d4d54f3bb2eb310bb2c2cdef81f647e7ff383a40100",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:Y2000-01-01-3",
        "loadedPairs": 19,
        "totalLoad": 1940,
        "directedNonzero": 37,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 910,
        "localExact": 22,
        "localTwoStar": 22,
        "localMeanSwaps": 4.59,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Distinct changed-table carry-forward lesson in the fixed training year; check continuity across all twelve months."
      },
      "reasonToExist": "Distinct changed-table carry-forward lesson in the fixed training year; check continuity across all twelve months."
    },
    {
      "id": "yits-demo-4",
      "title": "April",
      "kind": "yits_month",
      "lane": "A year in training",
      "board": "square",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "A fixed twelve-month training year. Your arrangement and notes carry forward; changed source loads are outlined. No deadline. This is separate from real-day rewards.",
      "prerequisites": [
        "yits-demo-3"
      ],
      "achievementGate": {
        "stars": {
          "node": "yits-demo-3",
          "min": 2
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "yits-demo-4",
      "fixedPuzzleId": "fit-Y2000-01-01-4-false-square-mixed",
      "definitionHash": "48a63c66f9f09453332d79c2c8a4bea26fb56463b5f46aa46041764fbe99df9c",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:Y2000-01-01-4",
        "loadedPairs": 20,
        "totalLoad": 2040,
        "directedNonzero": 39,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 1,
        "randomMedianPenalty": 935,
        "localExact": 23,
        "localTwoStar": 28,
        "localMeanSwaps": 4.91,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Distinct changed-table carry-forward lesson in the fixed training year; check continuity across all twelve months."
      },
      "reasonToExist": "Distinct changed-table carry-forward lesson in the fixed training year; check continuity across all twelve months."
    },
    {
      "id": "yits-demo-5",
      "title": "May",
      "kind": "yits_month",
      "lane": "A year in training",
      "board": "square",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "A fixed twelve-month training year. Your arrangement and notes carry forward; changed source loads are outlined. No deadline. This is separate from real-day rewards.",
      "prerequisites": [
        "yits-demo-4"
      ],
      "achievementGate": {
        "stars": {
          "node": "yits-demo-4",
          "min": 2
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "yits-demo-5",
      "fixedPuzzleId": "fit-Y2000-01-01-5-false-square-mixed",
      "definitionHash": "ad6deb11cc0eab6e434f5fdad82907d30782f42d32e10071b9541abb10460071",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:Y2000-01-01-5",
        "loadedPairs": 18,
        "totalLoad": 1980,
        "directedNonzero": 35,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 845,
        "localExact": 17,
        "localTwoStar": 29,
        "localMeanSwaps": 4.09,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Distinct changed-table carry-forward lesson in the fixed training year; check continuity across all twelve months."
      },
      "reasonToExist": "Distinct changed-table carry-forward lesson in the fixed training year; check continuity across all twelve months."
    },
    {
      "id": "yits-demo-6",
      "title": "June",
      "kind": "yits_month",
      "lane": "A year in training",
      "board": "square",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "A fixed twelve-month training year. Your arrangement and notes carry forward; changed source loads are outlined. No deadline. This is separate from real-day rewards.",
      "prerequisites": [
        "yits-demo-5"
      ],
      "achievementGate": {
        "stars": {
          "node": "yits-demo-5",
          "min": 2
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "yits-demo-6",
      "fixedPuzzleId": "fit-Y2000-01-01-6-false-square-mixed",
      "definitionHash": "a8de4dafaa8bc7737adf149aaee8d820c566a73129e4296ca9350b1d071c7861",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:Y2000-01-01-6",
        "loadedPairs": 19,
        "totalLoad": 1925,
        "directedNonzero": 37,
        "ruleCount": 0,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 805,
        "localExact": 21,
        "localTwoStar": 25,
        "localMeanSwaps": 4.28,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Distinct changed-table carry-forward lesson in the fixed training year; check continuity across all twelve months."
      },
      "reasonToExist": "Distinct changed-table carry-forward lesson in the fixed training year; check continuity across all twelve months."
    },
    {
      "id": "yits-demo-7",
      "title": "July",
      "kind": "yits_month",
      "lane": "A year in training",
      "board": "square",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "A fixed twelve-month training year. Your arrangement and notes carry forward; changed source loads are outlined. No deadline. This is separate from real-day rewards.",
      "prerequisites": [
        "yits-demo-6"
      ],
      "achievementGate": {
        "stars": {
          "node": "yits-demo-6",
          "min": 2
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "yits-demo-7",
      "fixedPuzzleId": "fit-Y2000-01-01-7-true-square-mixed",
      "definitionHash": "c2d3100df0c00b58b5372bf532ace2dc22126b024a1b2022cc343dbd6bf16a65",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:Y2000-01-01-7",
        "loadedPairs": 18,
        "totalLoad": 1810,
        "directedNonzero": 35,
        "ruleCount": 3,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 800,
        "localExact": 21,
        "localTwoStar": 31,
        "localMeanSwaps": 5.09,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Distinct changed-table carry-forward lesson in the fixed training year; check continuity across all twelve months."
      },
      "reasonToExist": "Distinct changed-table carry-forward lesson in the fixed training year; check continuity across all twelve months."
    },
    {
      "id": "yits-demo-8",
      "title": "August",
      "kind": "yits_month",
      "lane": "A year in training",
      "board": "square",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "A fixed twelve-month training year. Your arrangement and notes carry forward; changed source loads are outlined. No deadline. This is separate from real-day rewards.",
      "prerequisites": [
        "yits-demo-7"
      ],
      "achievementGate": {
        "stars": {
          "node": "yits-demo-7",
          "min": 2
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "yits-demo-8",
      "fixedPuzzleId": "fit-Y2000-01-01-8-true-square-mixed",
      "definitionHash": "e909ab09e73907ff5b84e04b8166cab67761ae68066043388b7279abbdb2343a",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 2,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:Y2000-01-01-8",
        "loadedPairs": 18,
        "totalLoad": 1765,
        "directedNonzero": 35,
        "ruleCount": 3,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 870,
        "localExact": 18,
        "localTwoStar": 21,
        "localMeanSwaps": 4.63,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Distinct changed-table carry-forward lesson in the fixed training year; check continuity across all twelve months."
      },
      "reasonToExist": "Distinct changed-table carry-forward lesson in the fixed training year; check continuity across all twelve months."
    },
    {
      "id": "yits-demo-9",
      "title": "September",
      "kind": "yits_month",
      "lane": "A year in training",
      "board": "square",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "A fixed twelve-month training year. Your arrangement and notes carry forward; changed source loads are outlined. No deadline. This is separate from real-day rewards.",
      "prerequisites": [
        "yits-demo-8"
      ],
      "achievementGate": {
        "stars": {
          "node": "yits-demo-8",
          "min": 2
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "yits-demo-9",
      "fixedPuzzleId": "fit-Y2000-01-01-9-true-square-mixed",
      "definitionHash": "1218b161dd7a8e621360354726ccf6a12208f1c1110c9c983267de6be86649c2",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 2,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:Y2000-01-01-9",
        "loadedPairs": 18,
        "totalLoad": 1780,
        "directedNonzero": 35,
        "ruleCount": 3,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 720,
        "localExact": 17,
        "localTwoStar": 23,
        "localMeanSwaps": 4.03,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Distinct changed-table carry-forward lesson in the fixed training year; check continuity across all twelve months."
      },
      "reasonToExist": "Distinct changed-table carry-forward lesson in the fixed training year; check continuity across all twelve months."
    },
    {
      "id": "yits-demo-10",
      "title": "October",
      "kind": "yits_month",
      "lane": "A year in training",
      "board": "square",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "A fixed twelve-month training year. Your arrangement and notes carry forward; changed source loads are outlined. No deadline. This is separate from real-day rewards.",
      "prerequisites": [
        "yits-demo-9"
      ],
      "achievementGate": {
        "stars": {
          "node": "yits-demo-9",
          "min": 2
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "yits-demo-10",
      "fixedPuzzleId": "fit-Y2000-01-01-10-true-square-mixed",
      "definitionHash": "1ebb83feaa317c428f6866570c83e8261e45f51768a32d23330ec64f2f055616",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 2,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:Y2000-01-01-10",
        "loadedPairs": 17,
        "totalLoad": 1605,
        "directedNonzero": 33,
        "ruleCount": 3,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 690,
        "localExact": 22,
        "localTwoStar": 32,
        "localMeanSwaps": 4.25,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Distinct changed-table carry-forward lesson in the fixed training year; check continuity across all twelve months."
      },
      "reasonToExist": "Distinct changed-table carry-forward lesson in the fixed training year; check continuity across all twelve months."
    },
    {
      "id": "yits-demo-11",
      "title": "November",
      "kind": "yits_month",
      "lane": "A year in training",
      "board": "square",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "A fixed twelve-month training year. Your arrangement and notes carry forward; changed source loads are outlined. No deadline. This is separate from real-day rewards.",
      "prerequisites": [
        "yits-demo-10"
      ],
      "achievementGate": {
        "stars": {
          "node": "yits-demo-10",
          "min": 2
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "yits-demo-11",
      "fixedPuzzleId": "fit-Y2000-01-01-11-true-square-mixed",
      "definitionHash": "da9d6b8dbdf7186fd133f70bd8178472e7708423ac08c16427ee1a9691a01dd8",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:Y2000-01-01-11",
        "loadedPairs": 17,
        "totalLoad": 1395,
        "directedNonzero": 33,
        "ruleCount": 3,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 600,
        "localExact": 11,
        "localTwoStar": 29,
        "localMeanSwaps": 4.41,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Distinct changed-table carry-forward lesson in the fixed training year; check continuity across all twelve months."
      },
      "reasonToExist": "Distinct changed-table carry-forward lesson in the fixed training year; check continuity across all twelve months."
    },
    {
      "id": "yits-demo-12",
      "title": "December",
      "kind": "yits_month",
      "lane": "A year in training",
      "board": "square",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "A fixed twelve-month training year. Your arrangement and notes carry forward; changed source loads are outlined. No deadline. This is separate from real-day rewards.",
      "prerequisites": [
        "yits-demo-11"
      ],
      "achievementGate": {
        "stars": {
          "node": "yits-demo-11",
          "min": 2
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": "yits-demo-12",
      "fixedPuzzleId": "fit-Y2000-01-01-12-true-square-mixed",
      "definitionHash": "06cb59f22a9e03197381155a5c88c42524ce3b7699d82959cb966d10f6944cd6",
      "optimum": {
        "penalty": 0,
        "violations": 0,
        "solutions": 1,
        "solutionKind": "families"
      },
      "indicators": {
        "samples": 32,
        "seed": "release-audit-v1:Y2000-01-01-12",
        "loadedPairs": 17,
        "totalLoad": 1605,
        "directedNonzero": 32,
        "ruleCount": 3,
        "randomExact": 0,
        "randomTwoStar": 0,
        "randomMedianPenalty": 755,
        "localExact": 16,
        "localTwoStar": 31,
        "localMeanSwaps": 4.22,
        "algorithm": "32 seeded random starts; lexicographic violations/penalty steepest pair swaps; at most 24 strict improvements; no sideways moves or human notes"
      },
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Distinct changed-table carry-forward lesson in the fixed training year; check continuity across all twelve months."
      },
      "reasonToExist": "Distinct changed-table carry-forward lesson in the fixed training year; check continuity across all twelve months."
    },
    {
      "id": "reward-test-binary",
      "title": "Little-numbers",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-binary"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-binary",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
      },
      "reasonToExist": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
    },
    {
      "id": "reward-test-rows",
      "title": "Review rows",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-rows"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-rows",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
      },
      "reasonToExist": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
    },
    {
      "id": "reward-test-cols",
      "title": "Review columns",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-cols"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-cols",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
      },
      "reasonToExist": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
    },
    {
      "id": "reward-test-traffic",
      "title": "Traffic-light notes",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-traffic"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-traffic",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
      },
      "reasonToExist": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
    },
    {
      "id": "reward-test-reorder",
      "title": "Reorder rows + Reorder columns",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-reorder"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-reorder",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
      },
      "reasonToExist": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
    },
    {
      "id": "reward-test-shaded",
      "title": "Shaded table",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-shaded"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-shaded",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
      },
      "reasonToExist": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
    },
    {
      "id": "reward-test-tablelight",
      "title": "Traffic-light table",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-tablelight"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-tablelight",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
      },
      "reasonToExist": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
    },
    {
      "id": "reward-test-goodset",
      "title": "Good Set",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-goodset"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-goodset",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
      },
      "reasonToExist": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
    },
    {
      "id": "reward-test-arrow",
      "title": "Arrows",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-arrow"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-arrow",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
      },
      "reasonToExist": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
    },
    {
      "id": "reward-test-lock",
      "title": "Lock",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-lock"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-lock",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
      },
      "reasonToExist": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
    },
    {
      "id": "reward-test-links",
      "title": "Rubber Band + Jumper Cables",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-links"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-links",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
      },
      "reasonToExist": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
    },
    {
      "id": "reward-test-hazard",
      "title": "Hazard",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-hazard"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-hazard",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
      },
      "reasonToExist": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
    },
    {
      "id": "reward-test-sticker",
      "title": "Stickers",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-sticker"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-sticker",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
      },
      "reasonToExist": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
    },
    {
      "id": "reward-test-turvy",
      "title": "Turvy",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-turvy"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-turvy",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
      },
      "reasonToExist": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
    },
    {
      "id": "reward-test-tracks",
      "title": "Horizontal Track + Vertical Track",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-tracks"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-tracks",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
      },
      "reasonToExist": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
    },
    {
      "id": "reward-test-diagonals",
      "title": "Incline + Decline",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-diagonals"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-diagonals",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
      },
      "reasonToExist": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
    },
    {
      "id": "reward-test-compass",
      "title": "Cross + Star",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-compass"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-compass",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
      },
      "reasonToExist": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
    },
    {
      "id": "reward-test-weld",
      "title": "Domino / Scissor",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-weld"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-weld",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
      },
      "reasonToExist": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
    },
    {
      "id": "reward-test-network",
      "title": "Network Tiles",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-network"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-network",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
      },
      "reasonToExist": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
    },
    {
      "id": "reward-test-paper",
      "title": "Paper strips",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-paper"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-paper",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
      },
      "reasonToExist": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
    },
    {
      "id": "reward-test-bookie",
      "title": "Bookie",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-bookie"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-bookie",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
      },
      "reasonToExist": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
    },
    {
      "id": "reward-test-cellmates",
      "title": "Cellmates",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-cellmates"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-cellmates",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
      },
      "reasonToExist": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
    },
    {
      "id": "reward-test-chalk",
      "title": "Chalk",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-chalk"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-chalk",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
      },
      "reasonToExist": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
    },
    {
      "id": "reward-test-rearrange",
      "title": "Rearrange little-numbers",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-rearrange"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-rearrange",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
      },
      "reasonToExist": "Historical terminal reward retained for existing ownership; replacement reward appears on the release path."
    },
    {
      "id": "reward-test-binary-r1",
      "title": "Little-numbers",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-binary-r1"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-binary-r1",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Terminal optional equipment reward; keep three-star gate."
      },
      "reasonToExist": "Terminal optional equipment reward; keep three-star gate."
    },
    {
      "id": "reward-test-rows-r1",
      "title": "Review rows",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-rows-r1"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-rows-r1",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Terminal optional equipment reward; keep three-star gate."
      },
      "reasonToExist": "Terminal optional equipment reward; keep three-star gate."
    },
    {
      "id": "reward-test-cols-r1",
      "title": "Review columns",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-cols-r1"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-cols-r1",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Terminal optional equipment reward; keep three-star gate."
      },
      "reasonToExist": "Terminal optional equipment reward; keep three-star gate."
    },
    {
      "id": "reward-test-traffic-r1",
      "title": "Traffic-light notes",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-traffic-r1"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-traffic-r1",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Terminal optional equipment reward; keep three-star gate."
      },
      "reasonToExist": "Terminal optional equipment reward; keep three-star gate."
    },
    {
      "id": "reward-test-reorder-r1",
      "title": "Reorder rows + Reorder columns",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-reorder-r1"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-reorder-r1",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Terminal optional equipment reward; keep three-star gate."
      },
      "reasonToExist": "Terminal optional equipment reward; keep three-star gate."
    },
    {
      "id": "reward-test-shaded-r1",
      "title": "Shaded table",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-shaded-r1"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-shaded-r1",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Terminal optional equipment reward; keep three-star gate."
      },
      "reasonToExist": "Terminal optional equipment reward; keep three-star gate."
    },
    {
      "id": "reward-test-tablelight-r1",
      "title": "Traffic-light table",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-tablelight-r1"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-tablelight-r1",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Terminal optional equipment reward; keep three-star gate."
      },
      "reasonToExist": "Terminal optional equipment reward; keep three-star gate."
    },
    {
      "id": "reward-test-goodset-r1",
      "title": "Good Set",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-goodset-r1"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-goodset-r1",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Terminal optional equipment reward; keep three-star gate."
      },
      "reasonToExist": "Terminal optional equipment reward; keep three-star gate."
    },
    {
      "id": "reward-test-arrow-r1",
      "title": "Arrows",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-arrow-r1"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-arrow-r1",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Terminal optional equipment reward; keep three-star gate."
      },
      "reasonToExist": "Terminal optional equipment reward; keep three-star gate."
    },
    {
      "id": "reward-test-lock-r1",
      "title": "Lock",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-lock-r1"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-lock-r1",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Terminal optional equipment reward; keep three-star gate."
      },
      "reasonToExist": "Terminal optional equipment reward; keep three-star gate."
    },
    {
      "id": "reward-test-links-r1",
      "title": "Rubber Band + Jumper Cables",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-links-r1"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-links-r1",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Terminal optional equipment reward; keep three-star gate."
      },
      "reasonToExist": "Terminal optional equipment reward; keep three-star gate."
    },
    {
      "id": "reward-test-hazard-r1",
      "title": "Hazard",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-hazard-r1"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-hazard-r1",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Terminal optional equipment reward; keep three-star gate."
      },
      "reasonToExist": "Terminal optional equipment reward; keep three-star gate."
    },
    {
      "id": "reward-test-sticker-r1",
      "title": "Stickers",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-sticker-r1"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-sticker-r1",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Terminal optional equipment reward; keep three-star gate."
      },
      "reasonToExist": "Terminal optional equipment reward; keep three-star gate."
    },
    {
      "id": "reward-test-turvy-r1",
      "title": "Turvy",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-turvy-r1"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-turvy-r1",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Terminal optional equipment reward; keep three-star gate."
      },
      "reasonToExist": "Terminal optional equipment reward; keep three-star gate."
    },
    {
      "id": "reward-test-tracks-r1",
      "title": "Horizontal Track + Vertical Track",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-tracks-r1"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-tracks-r1",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Terminal optional equipment reward; keep three-star gate."
      },
      "reasonToExist": "Terminal optional equipment reward; keep three-star gate."
    },
    {
      "id": "reward-test-diagonals-r1",
      "title": "Incline + Decline",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-diagonals-r1"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-diagonals-r1",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Terminal optional equipment reward; keep three-star gate."
      },
      "reasonToExist": "Terminal optional equipment reward; keep three-star gate."
    },
    {
      "id": "reward-test-compass-r1",
      "title": "Cross + Star",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-compass-r1"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-compass-r1",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Terminal optional equipment reward; keep three-star gate."
      },
      "reasonToExist": "Terminal optional equipment reward; keep three-star gate."
    },
    {
      "id": "reward-test-weld-r1",
      "title": "Domino / Scissor",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-weld-r1"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-weld-r1",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Terminal optional equipment reward; keep three-star gate."
      },
      "reasonToExist": "Terminal optional equipment reward; keep three-star gate."
    },
    {
      "id": "reward-test-network-r1",
      "title": "Network Tiles",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-network-r1"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-network-r1",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Terminal optional equipment reward; keep three-star gate."
      },
      "reasonToExist": "Terminal optional equipment reward; keep three-star gate."
    },
    {
      "id": "reward-test-paper-r1",
      "title": "Paper strips",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-paper-r1"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-paper-r1",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Terminal optional equipment reward; keep three-star gate."
      },
      "reasonToExist": "Terminal optional equipment reward; keep three-star gate."
    },
    {
      "id": "reward-test-bookie-r1",
      "title": "Bookie",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-bookie-r1"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-bookie-r1",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Terminal optional equipment reward; keep three-star gate."
      },
      "reasonToExist": "Terminal optional equipment reward; keep three-star gate."
    },
    {
      "id": "reward-test-cellmates-r1",
      "title": "Cellmates",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-cellmates-r1"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-cellmates-r1",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Terminal optional equipment reward; keep three-star gate."
      },
      "reasonToExist": "Terminal optional equipment reward; keep three-star gate."
    },
    {
      "id": "reward-test-chalk-r1",
      "title": "Chalk",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-chalk-r1"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-chalk-r1",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Terminal optional equipment reward; keep three-star gate."
      },
      "reasonToExist": "Terminal optional equipment reward; keep three-star gate."
    },
    {
      "id": "reward-test-rearrange-r1",
      "title": "Rearrange little-numbers",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-rearrange-r1"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-rearrange-r1",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Terminal optional equipment reward; keep three-star gate."
      },
      "reasonToExist": "Terminal optional equipment reward; keep three-star gate."
    },
    {
      "id": "reward-test-portals-r1",
      "title": "Portals",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-portals-r1"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-portals-r1",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Terminal optional equipment reward; keep three-star gate."
      },
      "reasonToExist": "Terminal optional equipment reward; keep three-star gate."
    },
    {
      "id": "reward-test-ramps-r1",
      "title": "Ramps",
      "kind": "reward",
      "lane": "Tool rewards",
      "mode": "fit",
      "releaseHidden": false,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Practice mixed relationships on square; author a more specific lesson before release.",
      "prerequisites": [
        "test-ramps-r1"
      ],
      "achievementGate": {
        "stars": {
          "node": "test-ramps-r1",
          "min": 3
        }
      },
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": true,
      "flags": [],
      "recommendation": {
        "action": "retain",
        "reason": "Terminal optional equipment reward; keep three-star gate."
      },
      "reasonToExist": "Terminal optional equipment reward; keep three-star gate."
    },
    {
      "id": "larger",
      "title": "Larger floors",
      "kind": "draft",
      "lane": "Main Street",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Planned destination. Authored puzzle data and grading are still being prepared.",
      "prerequisites": [],
      "achievementGate": null,
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": false,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Unauthored placeholder; outside the share-ready path."
      },
      "reasonToExist": "Unauthored placeholder; outside the share-ready path."
    },
    {
      "id": "best-large",
      "title": "Larger compromises",
      "kind": "draft",
      "lane": "Best Effort Boulevard",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Planned destination. Authored puzzle data and grading are still being prepared.",
      "prerequisites": [],
      "achievementGate": null,
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": false,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Unauthored placeholder; outside the share-ready path."
      },
      "reasonToExist": "Unauthored placeholder; outside the share-ready path."
    },
    {
      "id": "hex-nine",
      "title": "Nine-star honeycomb",
      "kind": "draft",
      "lane": "Hex Road",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Planned destination. Authored puzzle data and grading are still being prepared.",
      "prerequisites": [],
      "achievementGate": null,
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": false,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Unauthored placeholder; outside the share-ready path."
      },
      "reasonToExist": "Unauthored placeholder; outside the share-ready path."
    },
    {
      "id": "triangle-nine",
      "title": "Nine-star angles",
      "kind": "draft",
      "lane": "Triangle Road",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Planned destination. Authored puzzle data and grading are still being prepared.",
      "prerequisites": [],
      "achievementGate": null,
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": false,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Unauthored placeholder; outside the share-ready path."
      },
      "reasonToExist": "Unauthored placeholder; outside the share-ready path."
    },
    {
      "id": "irregular-nine",
      "title": "Nine-star footprints",
      "kind": "draft",
      "lane": "Irregular Road",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Planned destination. Authored puzzle data and grading are still being prepared.",
      "prerequisites": [],
      "achievementGate": null,
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": false,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Unauthored placeholder; outside the share-ready path."
      },
      "reasonToExist": "Unauthored placeholder; outside the share-ready path."
    },
    {
      "id": "hard-year",
      "title": "A harder year",
      "kind": "draft",
      "lane": "Western outskirts",
      "mode": "fit",
      "releaseHidden": true,
      "supersededBy": null,
      "replaces": null,
      "workshopScenario": null,
      "exercise": null,
      "intendedLesson": "Reserved for a hard twelve-month training variant. The month definitions and grading are still being designed.",
      "prerequisites": [],
      "achievementGate": null,
      "loanedTools": [],
      "rewards": [],
      "permanentTools": "Any previously earned equipment; ordinary progression does not require collecting optional tools.",
      "fixedPuzzleAsset": null,
      "fixedPuzzleId": null,
      "definitionHash": null,
      "optimum": null,
      "indicators": null,
      "reachable": false,
      "flags": [],
      "recommendation": {
        "action": "park",
        "reason": "Unauthored placeholder; outside the share-ready path."
      },
      "reasonToExist": "Unauthored placeholder; outside the share-ready path."
    }
  ]
}
