{
  "schema": "hardware-lab-ai-environment-manifest/v1",
  "generatedFor": "Hardware Lab compile/flash local backend",
  "date": "2026-07-26",
  "primaryUserGoal": "Use the downloaded kit to configure Windows MCU compile, scan and flash environment as quickly as possible, with offline-first behavior and no repeated downloads.",
  "startHere": [
    "Read AI_README_FIRST.md before any install or download.",
    "Run: powershell -NoProfile -ExecutionPolicy Bypass -File .\\check-environment.ps1",
    "Read generated hardware-lab-env-detection.json.",
    "Install only missing components."
  ],
  "noRedownloadPolicy": {
    "mustNotDownloadWhenCommandExists": [
      "python",
      "node",
      "pyocd",
      "arm-none-eabi-gcc",
      "mingw32-make",
      "cmake",
      "ninja",
      "STM32_Programmer_CLI"
    ],
    "mustUseBundledFirst": [
      "files/pyocd-wheelhouse",
      "files/packs/TexasInstruments.MSPM0G1X0X_G3X0X_DFP.1.3.1.pack",
      "backend/hardware_lab_backend.js"
    ],
    "networkIsLastResort": true,
    "doNotBlindlyUseWingetForLargeToolchain": true
  },
  "includedInThisKit": [
    {
      "name": "Hardware Lab backend",
      "path": "backend/hardware_lab_backend.js",
      "purpose": "Local API bridge for health, scan, build, flash and uart."
    },
    {
      "name": "pyOCD offline wheelhouse",
      "path": "files/pyocd-wheelhouse",
      "purpose": "Install pyOCD 0.43.1 without pip internet access."
    },
    {
      "name": "TI MSPM0 DFP pack",
      "path": "files/packs/TexasInstruments.MSPM0G1X0X_G3X0X_DFP.1.3.1.pack",
      "purpose": "pyOCD target pack for MSPM0G3507 family."
    },
    {
      "name": "environment detector",
      "path": "check-environment.ps1",
      "purpose": "Detect installed tools and write hardware-lab-env-detection.json."
    },
    {
      "name": "backend launcher",
      "path": "start-hardware-lab-backend.cmd",
      "purpose": "Start local backend on http://127.0.0.1:8765."
    }
  ],
  "notIncludedBecauseTooLargeOrLicenseSensitive": [
    "Node.js installer",
    "Python installer",
    "Arm GNU Toolchain installer",
    "TI MSPM0 SDK installer",
    "Keil MDK",
    "STM32CubeProgrammer"
  ],
  "fastDownloadEntrypoints": {
    "downloadPage": "https://nuedc-components-atlas-public.pages.dev/download-accelerator",
    "fullZip": "https://nuedc-components-atlas-public.pages.dev/downloads/hardware-lab-compile-flash-kit-20260725.zip",
    "manifest": "https://nuedc-components-atlas-public.pages.dev/downloads/hardware-lab-compile-flash-kit-20260725.manifest.json",
    "partsAnchor": "https://nuedc-components-atlas-public.pages.dev/download-accelerator#parts",
    "mergeScript": "https://nuedc-components-atlas-public.pages.dev/downloads/merge-hardware-lab-kit-windows.cmd",
    "edgeOnePreferredMirror": "Upload site_edgeone_ascii.zip to EdgeOne and share the EdgeOne domain for fastest mainland China downloads."
  },
  "localSearchPlan": {
    "armGcc": [
      "PATH arm-none-eabi-gcc",
      "C:\\Program Files (x86)\\Arm GNU Toolchain arm-none-eabi\\*\\bin\\arm-none-eabi-gcc.exe",
      "C:\\Program Files\\Arm GNU Toolchain arm-none-eabi\\*\\bin\\arm-none-eabi-gcc.exe"
    ],
    "mspm0Sdk": [
      "%MSPM0_SDK_INSTALL_DIR%\\imports.mak",
      "C:\\ti\\mspm0_sdk_*\\imports.mak",
      "D:\\ti\\mspm0_sdk_*\\imports.mak",
      "D:\\ccs\\M0_SDK\\imports.mak",
      "nearby mspm0_sdk_*.zip archives"
    ],
    "pyocd": [
      "PATH pyocd",
      "install-pyocd-offline.cmd if missing"
    ]
  },
  "verification": [
    "python --version",
    "node --version",
    "pyocd --version",
    "arm-none-eabi-gcc --version",
    "mingw32-make --version",
    "powershell -NoProfile -ExecutionPolicy Bypass -File .\\check-environment.ps1",
    "start-hardware-lab-backend.cmd",
    "Invoke-RestMethod http://127.0.0.1:8765/api/health",
    "Invoke-RestMethod http://127.0.0.1:8765/api/scan"
  ],
  "flashSafety": {
    "realFlashRequiresExplicitUserApproval": true,
    "doNotReuseOtherPeopleProbeUid": true,
    "targetProbeMustComeFromCurrentScan": true
  }
}
