{
  "formatVersion": 1,
  "kits": [
    {
      "id": "algora-skills",
      "track": "adventures",
      "title": "The Skills of Algora",
      "path": "adventures/algora-skills.zip",
      "bytes": 187894,
      "sha256": "cad5f55f4f99913942c31aea426a4bcc72f9f5371305625cf6f76f198b73052c",
      "files": 16,
      "source": "labs/algora-skills",
      "lesson": "adventures/02-intermediate/algora-skills/README.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "node verify.js"
        ],
        "expected": "intentional-failure",
        "message": "The verifier rejects the unfinished starter. Record its specific diagnostics before implementing the mission."
      }
    },
    {
      "id": "automaton-foundry",
      "track": "adventures",
      "title": "The Automaton Foundry",
      "path": "adventures/automaton-foundry.zip",
      "bytes": 188493,
      "sha256": "a7e3672e37d636d02f30df88957bdd83ac54e8ea35664fc3ac767c7248383ad2",
      "files": 18,
      "source": "labs/automaton-foundry",
      "lesson": "adventures/04-surfaces/automaton-foundry/README.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "node verify.js"
        ],
        "expected": "intentional-failure",
        "message": "The verifier rejects the unfinished starter. Record its specific diagnostics before implementing the mission."
      }
    },
    {
      "id": "cartographer-mcp",
      "track": "adventures",
      "title": "The MCP Cartographer",
      "path": "adventures/cartographer-mcp.zip",
      "bytes": 267969,
      "sha256": "c8bfa722b8a3b49d792c67d49082047d5b3bb2d1073e4c82ed6528c730ecec51",
      "files": 18,
      "source": "labs/cartographer-mcp",
      "lesson": "adventures/03-advanced/cartographer-mcp/README.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "node verify.js"
        ],
        "expected": "intentional-failure",
        "message": "The verifier rejects the unfinished starter. Record its specific diagnostics before implementing the mission."
      }
    },
    {
      "id": "cloud-citadel",
      "track": "adventures",
      "title": "The Cloud Citadel",
      "path": "adventures/cloud-citadel.zip",
      "bytes": 216620,
      "sha256": "e7c7f1b43f62872a0ff7596971b0329362b3f1dd31160b9bb93d32cf8152b084",
      "files": 16,
      "source": "labs/cloud-citadel",
      "lesson": "adventures/04-surfaces/cloud-citadel/README.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "node verify.js"
        ],
        "expected": "intentional-failure",
        "message": "The verifier rejects the unfinished starter. Record its specific diagnostics before implementing the mission."
      }
    },
    {
      "id": "context-mirrors",
      "track": "adventures",
      "title": "The Context Mirrors",
      "path": "adventures/context-mirrors.zip",
      "bytes": 317092,
      "sha256": "fc7ce79917a147384ed2473632e1edd32462aab73a984ef1ed5a6a7853de2938",
      "files": 27,
      "source": "labs/context-mirrors",
      "lesson": "adventures/00-foundations/context-mirrors/README.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "node verify.js"
        ],
        "expected": "pass",
        "message": "The supplied sequence baseline passes. Run a fresh copy for each context experiment."
      }
    },
    {
      "id": "convergence-of-three-realms",
      "track": "adventures",
      "title": "The Convergence of Three Realms",
      "path": "adventures/convergence-of-three-realms.zip",
      "bytes": 242481,
      "sha256": "b71bd08af98ae69216e7f4d9586b4f436e61777ddfd54092a600e68784c7625d",
      "files": 16,
      "source": "labs/convergence-of-three-realms",
      "lesson": "adventures/99-capstone/convergence-of-three-realms/README.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "node verify.js"
        ],
        "expected": "intentional-failure",
        "message": "The verifier rejects the unfinished starter. Record its specific diagnostics before implementing the mission."
      }
    },
    {
      "id": "eldoria-laws",
      "track": "adventures",
      "title": "The Laws of Eldoria",
      "path": "adventures/eldoria-laws.zip",
      "bytes": 263177,
      "sha256": "c23db841908939a38957c6665f90f74aec7e0ceba1a0d5aea71197062883fabd",
      "files": 16,
      "source": "labs/eldoria-laws",
      "lesson": "adventures/01-basics/eldoria-laws/README.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "node verify.js"
        ],
        "expected": "intentional-failure",
        "message": "The verifier rejects the unfinished starter. Record its specific diagnostics before implementing the mission."
      }
    },
    {
      "id": "lumoria-graph",
      "track": "adventures",
      "title": "The Knowledge Graph of Lumoria",
      "path": "adventures/lumoria-graph.zip",
      "bytes": 171474,
      "sha256": "dd3d373f6c95a5e1a59c17480011b82e64746c3c6963961315ecc80db58d999a",
      "files": 16,
      "source": "labs/lumoria-graph",
      "lesson": "adventures/03-advanced/lumoria-graph/README.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "node verify.js"
        ],
        "expected": "intentional-failure",
        "message": "The verifier rejects the unfinished starter. Record its specific diagnostics before implementing the mission."
      }
    },
    {
      "id": "mythos-parallel",
      "track": "adventures",
      "title": "The Parallel Trials of Mythos",
      "path": "adventures/mythos-parallel.zip",
      "bytes": 280995,
      "sha256": "3ea6adf2158bcbdab1cf6f7e747915710d9d96d6b269e585d04c69cde496c1e9",
      "files": 16,
      "source": "labs/mythos-parallel",
      "lesson": "adventures/03-advanced/mythos-parallel/README.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "node verify.js"
        ],
        "expected": "intentional-failure",
        "message": "The verifier rejects the unfinished starter. Record its specific diagnostics before implementing the mission."
      }
    },
    {
      "id": "portals-of-nexus",
      "track": "adventures",
      "title": "The Portals of Nexus",
      "path": "adventures/portals-of-nexus.zip",
      "bytes": 274820,
      "sha256": "648d65d835ec3ad70f65d1d283b6eacc84290221ffef9ca0373579f4635251c4",
      "files": 16,
      "source": "labs/portals-of-nexus",
      "lesson": "adventures/00-foundations/portals-of-nexus/README.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "node verify.js"
        ],
        "expected": "intentional-failure",
        "message": "The verifier rejects the unfinished starter. Record its specific diagnostics before implementing the mission."
      }
    },
    {
      "id": "stellaris-agents",
      "track": "adventures",
      "title": "The Agents of Stellaris",
      "path": "adventures/stellaris-agents.zip",
      "bytes": 294545,
      "sha256": "135d272bca6d587fd4f8fa4e79e2222bf303e2df18306a5f66769f3287beae89",
      "files": 16,
      "source": "labs/stellaris-agents",
      "lesson": "adventures/02-intermediate/stellaris-agents/README.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "node verify.js"
        ],
        "expected": "intentional-failure",
        "message": "The verifier rejects the unfinished starter. Record its specific diagnostics before implementing the mission."
      }
    },
    {
      "id": "stonevale-guardrails",
      "track": "adventures",
      "title": "The Guardrails of Stonevale",
      "path": "adventures/stonevale-guardrails.zip",
      "bytes": 235218,
      "sha256": "52ed8b8b18eb6abbc79be6ae1f4a646ac0eeab1477396b11a7bd50c34111c655",
      "files": 16,
      "source": "labs/stonevale-guardrails",
      "lesson": "adventures/02-intermediate/stonevale-guardrails/README.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "node verify.js"
        ],
        "expected": "intentional-failure",
        "message": "The verifier rejects the unfinished starter. Record its specific diagnostics before implementing the mission."
      }
    },
    {
      "id": "tempora-loop",
      "track": "adventures",
      "title": "The Tempora Loop",
      "path": "adventures/tempora-loop.zip",
      "bytes": 189103,
      "sha256": "d2055e5d1758182240e42f676df5391e0834ec3022c887988efb0a1bb1fbab09",
      "files": 16,
      "source": "labs/tempora-loop",
      "lesson": "adventures/01-basics/tempora-loop/README.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "node verify.js"
        ],
        "expected": "intentional-failure",
        "message": "The verifier rejects the unfinished starter. Record its specific diagnostics before implementing the mission."
      }
    },
    {
      "id": "terminal-gate",
      "track": "adventures",
      "title": "The Terminal Gate",
      "path": "adventures/terminal-gate.zip",
      "bytes": 182195,
      "sha256": "f9a5665147055ded33fc13b6137484469188810bf80036211da887177fe20614",
      "files": 16,
      "source": "labs/terminal-gate",
      "lesson": "adventures/04-surfaces/terminal-gate/README.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "node verify.js"
        ],
        "expected": "intentional-failure",
        "message": "The verifier rejects the unfinished starter. Record its specific diagnostics before implementing the mission."
      }
    },
    {
      "id": "01-interface",
      "track": "hands-on",
      "title": "Choose context, roles and permissions",
      "path": "hands-on/01-interface.zip",
      "bytes": 148222,
      "sha256": "8b648bbcf9b2b5d9ac8ff532facc26bd4ecaa27c46205d7876c8deae88d9d6a1",
      "files": 16,
      "source": "mslearn-github-copilot/LabFiles/01-copilot-interface",
      "lesson": "mslearn-github-copilot/Instructions/Labs/LAB_AK_01_examine_settings_interface.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "node --test --test-concurrency=1 greeting.test.mjs"
        ],
        "expected": "pass",
        "message": "The supplied baseline tests pass."
      }
    },
    {
      "id": "02-csharp",
      "track": "hands-on",
      "title": "Analyze and document the library in C#",
      "path": "hands-on/02-csharp.zip",
      "bytes": 223739,
      "sha256": "39ecf098614f316ced779476f4d6978b12683786723c371fb0aaab3847abdea8",
      "files": 51,
      "source": "mslearn-github-copilot/LabFiles/02-analyze-document-code/AccelerateDevGHCopilot",
      "lesson": "mslearn-github-copilot/Instructions/Labs/LAB_AK_02_analyze_document_code.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "dotnet test tests/UnitTests/UnitTests.csproj -m:1 -p:UseSharedCompilation=false"
        ],
        "expected": "pass",
        "message": "The supplied tests pass. New feature requirements still need their own tests."
      }
    },
    {
      "id": "02-python",
      "track": "hands-on",
      "title": "Analyze and document the library in Python",
      "path": "hands-on/02-python.zip",
      "bytes": 189017,
      "sha256": "e13fb58f343b38646c2a9cfac4f54dde043fbb0ab197ad104374e1e8cbf55532",
      "files": 42,
      "source": "mslearn-github-copilot/LabFiles/02-python-analyze-document-code/AccelerateDevGHCopilot",
      "lesson": "mslearn-github-copilot/Instructions/Labs/LAB_AK_02_analyze_document_code_py.md",
      "baseline": {
        "workingDirectory": "library",
        "commands": [
          "python -m unittest discover -s tests -p \"test_*.py\" -v"
        ],
        "expected": "pass",
        "message": "The existing unittest tests are discovered and pass."
      }
    },
    {
      "id": "03-csharp",
      "track": "hands-on",
      "title": "Develop library search in C#",
      "path": "hands-on/03-csharp.zip",
      "bytes": 240532,
      "sha256": "ffc177143232ff594f440ed75e5d358d000ad3dbc52157034713c4302e945ae5",
      "files": 52,
      "source": "mslearn-github-copilot/LabFiles/03-develop-code-features/AccelerateDevGHCopilot",
      "lesson": "mslearn-github-copilot/Instructions/Labs/LAB_AK_03_develop_code_features.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "dotnet test tests/UnitTests/UnitTests.csproj -m:1 -p:UseSharedCompilation=false"
        ],
        "expected": "pass",
        "message": "The supplied tests pass. New feature requirements still need their own tests."
      }
    },
    {
      "id": "03-python",
      "track": "hands-on",
      "title": "Develop library search in Python",
      "path": "hands-on/03-python.zip",
      "bytes": 206204,
      "sha256": "5e6856d08afae79364f6366fc33926a64d3f075f5574b1a5c318c53ed387bc1b",
      "files": 45,
      "source": "mslearn-github-copilot/LabFiles/03-python-develop-code-features/AccelerateDevGHCopilot",
      "lesson": "mslearn-github-copilot/Instructions/Labs/LAB_AK_03_develop_code_features_py.md",
      "baseline": {
        "workingDirectory": "library",
        "commands": [
          "python -m unittest discover -s tests -p \"test_*.py\" -v"
        ],
        "expected": "pass",
        "message": "The existing unittest tests are discovered and pass."
      }
    },
    {
      "id": "04-pytest",
      "track": "hands-on",
      "title": "Develop discriminating pytest tests",
      "path": "hands-on/04-pytest.zip",
      "bytes": 210882,
      "sha256": "aa21c633cd659431c3b6e843140f12241143effa9df8168720fce308d13ca350",
      "files": 46,
      "source": "mslearn-github-copilot/LabFiles/04-python-develop-unit-tests-pytest/AccelerateDevGHCopilot",
      "lesson": "mslearn-github-copilot/Instructions/Labs/LAB_AK_04_develop_unit_tests_pytest.md",
      "baseline": {
        "workingDirectory": "library",
        "commands": [
          "python -m unittest discover -s tests -p \"test_*.py\" -v"
        ],
        "expected": "pass",
        "message": "The existing unittest tests are discovered and pass."
      }
    },
    {
      "id": "04-xunit",
      "track": "hands-on",
      "title": "Develop discriminating xUnit tests",
      "path": "hands-on/04-xunit.zip",
      "bytes": 257301,
      "sha256": "aa2cb6b7d7dff4228add0a957d52d5288efd1d77aed4dd29335bbaa9ccd2e757",
      "files": 52,
      "source": "mslearn-github-copilot/LabFiles/04-develop-unit-tests-xunit/AccelerateDevGHCopilot",
      "lesson": "mslearn-github-copilot/Instructions/Labs/LAB_AK_04_develop_unit_tests_xunit.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "dotnet test tests/UnitTests/UnitTests.csproj -m:1 -p:UseSharedCompilation=false"
        ],
        "expected": "pass",
        "message": "The supplied tests pass. New feature requirements still need their own tests."
      }
    },
    {
      "id": "05-csharp",
      "track": "hands-on",
      "title": "Refactor library code in C#",
      "path": "hands-on/05-csharp.zip",
      "bytes": 285335,
      "sha256": "0df8146a595112373be817ddaae7bd61a50c663c358aef62323a66edd529f14a",
      "files": 53,
      "source": "mslearn-github-copilot/LabFiles/05-refactor-improve-existing-code/AccelerateDevGHCopilot",
      "lesson": "mslearn-github-copilot/Instructions/Labs/LAB_AK_05_refactor_improve_existing_code.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "dotnet test tests/UnitTests/UnitTests.csproj -m:1 -p:UseSharedCompilation=false"
        ],
        "expected": "pass",
        "message": "The supplied tests pass. New feature requirements still need their own tests."
      }
    },
    {
      "id": "05-python",
      "track": "hands-on",
      "title": "Refactor library code in Python",
      "path": "hands-on/05-python.zip",
      "bytes": 259232,
      "sha256": "eb05914a9dd7737c43669ceb174939201f7c10361e8480860ac19f139c90c598",
      "files": 46,
      "source": "mslearn-github-copilot/LabFiles/05-python-refactor-improve-existing-code/AccelerateDevGHCopilot",
      "lesson": "mslearn-github-copilot/Instructions/Labs/LAB_AK_05_refactor_improve_existing_code_py.md",
      "baseline": {
        "workingDirectory": "library",
        "commands": [
          "python -m unittest discover -s tests -p \"test_*.py\" -v"
        ],
        "expected": "pass",
        "message": "The existing unittest tests are discovered and pass."
      }
    },
    {
      "id": "06-prototype",
      "track": "hands-on",
      "title": "Prototype an accessible shopping flow",
      "path": "hands-on/06-prototype.zip",
      "bytes": 176271,
      "sha256": "b9910ed1301a67d76993b3a1b6c905e4c52300c931de451f37de5996bd7758b4",
      "files": 18,
      "source": "mslearn-github-copilot/LabFiles/06-shopping-prototype",
      "lesson": "mslearn-github-copilot/Instructions/Labs/LAB_AK_06_vibe_coding_prototype_ecommerce_app.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "node --test --test-concurrency=1 cart.test.mjs"
        ],
        "expected": "pass",
        "message": "The supplied baseline tests pass."
      }
    },
    {
      "id": "07-duplication",
      "track": "hands-on",
      "title": "Consolidate duplication without merging business rules",
      "path": "hands-on/07-duplication.zip",
      "bytes": 175565,
      "sha256": "34a48a73442a99ecd326c0d8ee3fc3c7573416cd200a28cc5054a41b4fe7fa22",
      "files": 27,
      "source": "mslearn-github-copilot/LabFiles/07-consolidate-duplicate-code/ECommerceOrderAndReturn",
      "lesson": "mslearn-github-copilot/Instructions/Labs/LAB_AK_07_consolidate_duplicate_code.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "dotnet build ECommerceOrderAndReturn.csproj -m:1 -p:UseSharedCompilation=false"
        ],
        "expected": "pass",
        "message": "The selected project builds. Compilation alone does not prove behavior."
      }
    },
    {
      "id": "08-functions",
      "track": "hands-on",
      "title": "Extract functions and preserve compensation",
      "path": "hands-on/08-functions.zip",
      "bytes": 184085,
      "sha256": "df10483b14ed6ab13e830571c8bce28c9914e9881898f3b5a85dc9aebf4fd4d4",
      "files": 40,
      "source": "mslearn-github-copilot/LabFiles/08-refactor-large-functions/ECommerceOrderProcessing",
      "lesson": "mslearn-github-copilot/Instructions/Labs/LAB_AK_08_refactor_large_functions.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "dotnet build src/ECommerce.Console/ECommerce.Console.csproj -m:1 -p:UseSharedCompilation=false"
        ],
        "expected": "pass",
        "message": "The console entry project builds; compensation behavior needs separate assertions."
      }
    },
    {
      "id": "09-conditionals",
      "track": "hands-on",
      "title": "Simplify decision rules with boundary tests",
      "path": "hands-on/09-conditionals.zip",
      "bytes": 223243,
      "sha256": "cc96c9bd172dd85ee93e6cd2b667e7482c315f4f3542c87b53d1aa7927a3c62e",
      "files": 18,
      "source": "mslearn-github-copilot/LabFiles/09-simplify-complex-conditionals/ECommercePricingEngine",
      "lesson": "mslearn-github-copilot/Instructions/Labs/LAB_AK_09_simplify_complex_conditionals.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "dotnet build ECommercePricingEngine.csproj -m:1 -p:UseSharedCompilation=false"
        ],
        "expected": "pass",
        "message": "The selected project builds. Compilation alone does not prove behavior."
      }
    },
    {
      "id": "10-profiling",
      "track": "hands-on",
      "title": "Profile a bounded workload and verify a hypothesis",
      "path": "hands-on/10-profiling.zip",
      "bytes": 129940,
      "sha256": "d4b83c8250f52eeb7409836352a60880d446538467d87a4f6932e6ad1460e764",
      "files": 22,
      "source": "mslearn-github-copilot/LabFiles/10-implement-performance-profiling/DataAnalyzerReporter",
      "lesson": "mslearn-github-copilot/Instructions/Labs/LAB_AK_10_implement_performance_profiling.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "dotnet build DataAnalyzerReporter.csproj -m:1 -p:UseSharedCompilation=false"
        ],
        "expected": "pass",
        "message": "The selected project builds. Compilation alone does not prove behavior."
      }
    },
    {
      "id": "11-issues",
      "track": "hands-on",
      "title": "Turn an issue into a reviewed change",
      "path": "hands-on/11-issues.zip",
      "bytes": 126257,
      "sha256": "6951fd34ce58e8c124d71388c818d083f928a64b3fe6b006e54a4d3e3915ff0c",
      "files": 18,
      "source": "mslearn-github-copilot/LabFiles/11-issue-workflow",
      "lesson": "mslearn-github-copilot/Instructions/Labs/LAB_AK_11_resolve_github_issues.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "node --test --test-concurrency=1 pricing.test.mjs"
        ],
        "expected": "pass",
        "message": "The supplied baseline tests pass."
      }
    },
    {
      "id": "12-secrets",
      "track": "hands-on",
      "title": "Rehearse secret-remediation decisions safely",
      "path": "hands-on/12-secrets.zip",
      "bytes": 143616,
      "sha256": "d8ac124a0991c3d5521cdeea579b9b48890d909896dfd4198062c1b7fc47a28a",
      "files": 19,
      "source": "mslearn-github-copilot/LabFiles/12-secret-remediation",
      "lesson": "mslearn-github-copilot/Instructions/Labs/LAB_AK_12_resolve_github_secret_scanning_alerts.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "node --test --test-concurrency=1 policy.test.mjs"
        ],
        "expected": "pass",
        "message": "The supplied baseline tests pass."
      }
    },
    {
      "id": "13-greenfield",
      "track": "hands-on",
      "title": "Specify a greenfield RSS reader",
      "path": "hands-on/13-greenfield.zip",
      "bytes": 212073,
      "sha256": "4b20f5cd3dc858f1ed752d91432af5f74921d6779f4f07c41e3714810c0c3a15",
      "files": 22,
      "source": "mslearn-github-copilot/LabFiles/13-spec-driven-development",
      "lesson": "mslearn-github-copilot/Instructions/Labs/LAB_AK_13_get-started-spec-driven-development.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "node --test --test-concurrency=1 contract.test.mjs"
        ],
        "expected": "intentional-failure",
        "message": "The unfinished RSS store fails with the documented exercise error. A missing runtime or syntax error is not the expected failure."
      }
    },
    {
      "id": "14-brownfield",
      "track": "hands-on",
      "title": "Add document metadata to an existing dashboard",
      "path": "hands-on/14-brownfield.zip",
      "bytes": 160525,
      "sha256": "73314d65e259e1b242e6431719e33a96fe8cbc3a27a5623e8c52d036066dbbb0",
      "files": 22,
      "source": "mslearn-github-copilot/LabFiles/14-spec-driven-feature",
      "lesson": "mslearn-github-copilot/Instructions/Labs/LAB_AK_14_implement-spec-driven-development.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "node --test --test-concurrency=1 baseline.test.mjs"
        ],
        "expected": "pass",
        "message": "The supplied baseline tests pass."
      }
    },
    {
      "id": "15-customization",
      "track": "hands-on",
      "title": "Configure instructions, prompts, skills and agents",
      "path": "hands-on/15-customization.zip",
      "bytes": 131863,
      "sha256": "0650a98ce176980130120b642134c5c547986d9abd5af51bee3b357badd41b57",
      "files": 16,
      "source": "mslearn-github-copilot/LabFiles/15-copilot-customization",
      "lesson": "mslearn-github-copilot/Instructions/Labs/LAB_AK_15_configure_customize_github_copilot_vscode.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "node --test --test-concurrency=1 inventory.test.mjs"
        ],
        "expected": "pass",
        "message": "The supplied baseline tests pass."
      }
    },
    {
      "id": "16-sdk",
      "track": "hands-on",
      "title": "Build a bounded application with Copilot SDK",
      "path": "hands-on/16-sdk.zip",
      "bytes": 150604,
      "sha256": "e6a44514ee45a8af70db6b6e1fc521abbed065439a8fe18fc0a2c9b2a18bdacd",
      "files": 20,
      "source": "mslearn-github-copilot/LabFiles/16-copilot-sdk",
      "lesson": "mslearn-github-copilot/Instructions/Labs/LAB_AK_16_develop_ai_enabled_apps_github_copilot_sdk.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "node --test --test-concurrency=1 app.test.mjs"
        ],
        "expected": "pass",
        "message": "The supplied baseline tests pass."
      }
    },
    {
      "id": "17-modernization",
      "track": "hands-on",
      "title": "Modernize CSV storage to SQLite with Spec Kit",
      "path": "hands-on/17-modernization.zip",
      "bytes": 162367,
      "sha256": "7f6e8e5ed230582d02aed36b851cb09f832e04489201f7e2b041a3a897b269f6",
      "files": 26,
      "source": "mslearn-github-copilot/LabFiles/17-spec-kit-modernization",
      "lesson": "mslearn-github-copilot/Instructions/Labs/LAB_AK_17_modernize_existing_app_spec_kit.md",
      "baseline": {
        "workingDirectory": ".",
        "commands": [
          "python -m unittest test_legacy -v"
        ],
        "expected": "pass",
        "message": "The CSV characterization tests pass. The separate modernization suite intentionally fails until implementation."
      }
    }
  ]
}
