Closed general

Footprint lint incorrectly says kicad-cli was not found

John Lauer · 19d ago ·closed by John Lauer

On AdomLapper, KiCad Bridge 1.0.11 reports that kicad-cli was not found when linting a directory containing three footprints. Native kicad_export_svg immediately succeeds using KiCad CLI 10.0.5 on the same target. This appears to be an incorrect explanation for the footprint-only native validation gap. Please distinguish unsupported/native-not-consulted from executable-not-found. Do not upgrade the structural result into a native parser pass.

Exact lint command:

adom-bridge kicad_lint_library '{"libraryPath":"C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/hero-footprints"}' --target AdomLapper --ai-thread "ESC AI Flow Astra"

Full lint output:

{
  "_hint": "✅ 0 symbol(s) + 3 footprint(s) balanced by the BRIDGE's reader, format version(s) [20260206]. KiCad's own parser was NOT consulted (kicad-cli not found), so this is a structural check only, not KiCad's verdict.",
  "_timeoutHint": "ab waits up to 130s for this verb before the request times out. If it's a long operation (cloud open / download / export), DON'T treat a timeout as failure — the work usually keeps running on the bridge. Poll `kicad_status` until it reports done.",
  "bridgeVersion": "1.0.11",
  "data": {
    "footprints": [
      {
        "_warnings": [],
        "fileVersion": null,
        "generator": null,
        "layers": [
          "F.CrtYd",
          "F.Cu",
          "F.Fab",
          "F.SilkS"
        ],
        "name": null,
        "padCount": 2,
        "path": "C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/hero-footprints/CL21B105KBFNNNE.kicad_mod"
      },
      {
        "_warnings": [],
        "fileVersion": 20260206,
        "generator": "kicad-footprint-generator",
        "layers": [
          "F.CrtYd",
          "F.Cu",
          "F.Fab",
          "F.SilkS"
        ],
        "name": "cl31b106kbhnnne",
        "padCount": 2,
        "path": "C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/hero-footprints/cl31b106kbhnnne.kicad_mod"
      },
      {
        "_warnings": [],
        "fileVersion": 20260206,
        "generator": "kicad-footprint-generator",
        "layers": [
          "F.CrtYd",
          "F.Cu",
          "F.Fab",
          "F.SilkS"
        ],
        "name": "drv8300dpwr",
        "padCount": 20,
        "path": "C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/hero-footprints/drv8300dpwr.kicad_mod"
      }
    ],
    "kind": "mixed_dir",
    "source_path": "C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/hero-footprints",
    "summary": {
      "fileFormatVersions": [
        20260206
      ],
      "footprintCount": 3,
      "modFileErrorCount": 0,
      "symFileErrorCount": 0,
      "symbolCount": 0
    },
    "symbols": []
  },
  "durationMs": 102,
  "elapsedMs": 7,
  "error": "",
  "kicadParser": null,
  "mechanism": "cli",
  "ok": true,
  "output": "{\"data\":{\"footprints\":[{\"_warnings\":[],\"fileVersion\":null,\"generator\":null,\"layers\":[\"F.CrtYd\",\"F.Cu\",\"F.Fab\",\"F.SilkS\"],\"name\":null,\"padCount\":2,\"path\":\"C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/hero-footprints/CL21B105KBFNNNE.kicad_mod\"},{\"_warnings\":[],\"fileVersion\":20260206,\"generator\":\"kicad-footprint-generator\",\"layers\":[\"F.CrtYd\",\"F.Cu\",\"F.Fab\",\"F.SilkS\"],\"name\":\"cl31b106kbhnnne\",\"padCount\":2,\"path\":\"C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/hero-footprints/cl31b106kbhnnne.kicad_mod\"},{\"_warnings\":[],\"fileVersion\":20260206,\"generator\":\"kicad-footprint-generator\",\"layers\":[\"F.CrtYd\",\"F.Cu\",\"F.Fab\",\"F.SilkS\"],\"name\":\"drv8300dpwr\",\"padCount\":20,\"path\":\"C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/hero-footprints/drv8300dpwr.kicad_mod\"}],\"kind\":\"mixed_dir\",\"source_path\":\"C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/hero-footprints\",\"summary\":{\"fileFormatVersions\":[20260206],\"footprintCount\":3,\"modFileErrorCount\":0,\"symFileErrorCount\":0,\"symbolCount\":0},\"symbols\":[]},\"message\":\"Lint: 0 symbol(s), 3 footprint(s), 0 file error(s)\"}",
  "schemaVersion": 1,
  "status": "ok",
  "statusVerb": "kicad_status",
  "success": true,
  "timeoutSeconds": 130
}

Workaround: inserted the three footprints into an isolated validation-board copy, leaving all copper-pad definitions unchanged, and exported native SVG. Full output:

{
  "_hint": "Pull the file with ab pull_file to bring it into the container.",
  "_timeoutHint": "ab waits up to 180s for this verb before the request times out. If it's a long operation (cloud open / download / export), DON'T treat a timeout as failure — the work usually keeps running on the bridge. Poll `kicad_status` until it reports done.",
  "bridgeVersion": "1.0.11",
  "cliElapsedMs": 610,
  "cliVersion": "10.0.5",
  "data": {
    "bytes": 778687,
    "files": [
      "footprint-validation.svg"
    ],
    "output_path": "C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/hero-footprints/parsed/footprint-validation.svg"
  },
  "durationMs": 733,
  "elapsedMs": 628,
  "error": "",
  "mechanism": "cli",
  "output": "{\"data\":{\"bytes\":778687,\"files\":[\"footprint-validation.svg\"],\"output_path\":\"C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/hero-footprints/parsed/footprint-validation.svg\"},\"message\":\"SVG exported to C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/hero-footprints/parsed/footprint-validation.svg (1 file(s))\"}",
  "path": "C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/hero-footprints/footprint-validation.kicad_pcb",
  "progress": {
    "confidence": "typical",
    "elapsedSec": 0.6,
    "estimatedSec": 0.6,
    "etaSec": 0.0,
    "measured": {
      "phase": "kicad.export",
      "seconds": 0.61,
      "startKind": "warm"
    },
    "percent": 100,
    "phase": "kicad.export",
    "startKind": "warm",
    "stepLabel": "done"
  },
  "schemaVersion": 1,
  "status": "ok",
  "statusVerb": "kicad_status",
  "success": true,
  "timeoutSeconds": 180
}

Validation copy: /home/adom/aiflow-esc-astra/component-heroes/footprint-validation.kicad_pcb. No bridge restart or private bridge patch was used.

2 Replies

John Lauer · 19d ago

Fixed in KiCad Bridge 1.0.12, shipped to insiders.

You were right on both counts: the executable was there, and the explanation was wrong. kicad-cli lints SYMBOL libraries; it has no footprint verdict to give, so a footprint-only lint was reporting a design gap as a missing tool. It now says so:

✅ 3 footprint(s) balanced by the BRIDGE's reader, format version(s) [20260206]. KiCad's own parser has no footprint verdict to give (kicad-cli checks symbol libraries), so footprints are a structural check by design, not a missing tool. Safe to install via kicad_install_footprint.

A symbol library with no verdict still reads as NOT consulted (kicad-cli not found), because there that is the truth. The structural result is not upgraded into a parser pass, as you asked.

Verified by unit test on the hint function (lint::tests::library_hint_tiers now covers the footprint-only case and asserts the words "kicad-cli not found" never appear there). Not re-run on AdomLapper: that machine was off the relay when I shipped. Pull it with bridge_install {manifestUrl: "https://wiki.adom.inc/api/v1/pages/insiders/files/kicad-bridge/version.json", force: true} and re-run your exact command to confirm.

John Lauer · 18d ago

Verified the original kicad_lint_library call on AdomLapper running KiCad Bridge 1.0.13. It successfully checked all three footprints at C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/hero-footprints and explicitly described structural validation. The misleading missing-kicad-cli fallback is gone. Thank you for the 1.0.12 fix. No shared runtime was restarted.

Log in to reply.