app
KiCad - the KiCad Bridge
Public Made by Adomby adom
Reference implementation of the KiCad bridge: multi-instance Python server, forward path via kicad-cli, reverse path via in-process plugin. Most complex of the three bundled bridges.
master
John Lauer
Routing evidence from winvm (Codex, 0.9.340 one-net acceptance) ported from the PR 82 branch
7c58121
1mo ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749
{
"date": "2026-09-07",
"host": "winvm",
"abVersion": "2.1.68",
"kicadVersion": "10.0.6",
"bridgeVersion": "0.9.340",
"releaseSha256": "84c6b60b8cc484c502e2cc78274c9016957f0aeb9f5a34ec82b83b89f7dce68f",
"scope": "One-net live IPC acceptance on disposable six-net fixture, not whole-board routing or electrical sign-off",
"checks": {
"dryRun": true,
"staleRevisionRejected": true,
"wrongNetRejected": true,
"liveCommit": true,
"nativeUndo": true,
"nativeRedo": true,
"removeRoute": true,
"returnedToUnrouted": true
},
"records": [
{
"verb": "kicad_routing_state",
"args": {
"filePath": "C:/Users/azureuser/Documents/adom-kicad-verbtest/live/release-check-20260907.kicad_pcb"
},
"response": {
"success": true,
"status": "ok",
"error": "",
"bridgeVersion": "0.9.340",
"boardPath": "C:/Users/azureuser/Documents/adom-kicad-verbtest/live/release-check-20260907.kicad_pcb",
"revision": "d04187168f99a61592bba5f5bd17a4eaf3ab1a2e05670f068e1870789760c54f",
"source": "live-editor",
"netsRemaining": [
"NET_1",
"NET_2",
"NET_3",
"NET_4",
"NET_5",
"NET_6"
],
"segmentCount": 0,
"viaCount": 0
}
},
{
"verb": "kicad_route_net",
"args": {
"filePath": "C:/Users/azureuser/Documents/adom-kicad-verbtest/live/release-check-20260907.kicad_pcb",
"expectedRevision": "d04187168f99a61592bba5f5bd17a4eaf3ab1a2e05670f068e1870789760c54f",
"net": "NET_1",
"width": 0.25,
"points": [
"J1.1",
[
112,
85
],
[
138,
85
],
"J2.1"
],
"dryRun": true
},
"response": {
"success": true,
"status": "ok",
"error": "",
"bridgeVersion": "0.9.340",
"revision": "d04187168f99a61592bba5f5bd17a4eaf3ab1a2e05670f068e1870789760c54f",
"dryRun": true,
"drc": {
"clean": false,
"errors": 0,
"projectRulesCopied": [],
"source": "live-editor-snapshot",
"unconnected": 6,
"unconnectedItems": [
{
"description": "Missing connection between items",
"items": [
{
"description": "PTH pad 6 [NET_6] of J1",
"pos": {
"x": 105.0,
"y": 110.0
},
"uuid": "3d334398-b224-4f80-b176-09d31bce8458"
},
{
"description": "PTH pad 1 [NET_6] of J3",
"pos": {
"x": 125.0,
"y": 116.0
},
"uuid": "e6ff0f60-ddff-4083-9082-849ebf06f759"
}
],
"severity": "error",
"type": "unconnected_items"
},
{
"description": "Missing connection between items",
"items": [
{
"description": "PTH pad 1 [NET_6] of J3",
"pos": {
"x": 125.0,
"y": 116.0
},
"uuid": "e6ff0f60-ddff-4083-9082-849ebf06f759"
},
{
"description": "PTH pad 6 [NET_6] of J2",
"pos": {
"x": 145.0,
"y": 110.0
},
"uuid": "522a7227-4339-48c3-b477-dc9f2bd2d1a1"
}
],
"severity": "error",
"type": "unconnected_items"
},
{
"description": "Missing connection between items",
"items": [
{
"description": "PTH pad 2 [NET_2] of J1",
"pos": {
"x": 105.0,
"y": 90.0
},
"uuid": "e7dd8e25-b62f-44df-aaf8-2aedee11818a"
},
{
"description": "PTH pad 2 [NET_2] of J2",
"pos": {
"x": 145.0,
"y": 90.0
},
"uuid": "1907c87e-19d3-4e00-b9d2-cd8b568cec43"
}
],
"severity": "error",
"type": "unconnected_items"
},
{
"description": "Missing connection between items",
"items": [
{
"description": "PTH pad 3 [NET_3] of J1",
"pos": {
"x": 105.0,
"y": 95.0
},
"uuid": "8504368c-eb14-4118-962a-346d30cf1ba2"
},
{
"description": "PTH pad 3 [NET_3] of J2",
"pos": {
"x": 145.0,
"y": 95.0
},
"uuid": "bdc606a6-5234-4d68-9b97-af444f1f0616"
}
],
"severity": "error",
"type": "unconnected_items"
},
{
"description": "Missing connection between items",
"items": [
{
"description": "PTH pad 4 [NET_4] of J1",
"pos": {
"x": 105.0,
"y": 100.0
},
"uuid": "cf8bf00a-91a0-43db-bd10-2186c3479dce"
},
{
"description": "PTH pad 4 [NET_4] of J2",
"pos": {
"x": 145.0,
"y": 100.0
},
"uuid": "c588684d-e2e9-455a-8b41-7f9a6c0a4a66"
}
],
"severity": "error",
"type": "unconnected_items"
},
{
"description": "Missing connection between items",
"items": [
{
"description": "PTH pad 5 [NET_5] of J1",
"pos": {
"x": 105.0,
"y": 105.0
},
"uuid": "3b59115d-c3e1-4cb8-bbca-93967a13150d"
},
{
"description": "PTH pad 5 [NET_5] of J2",
"pos": {
"x": 145.0,
"y": 105.0
},
"uuid": "e38c53dc-7dd6-4461-a573-266d7c76033f"
}
],
"severity": "error",
"type": "unconnected_items"
}
],
"violations": [
{
"description": "The current configuration does not include the footprint library 'RoutingFixture'",
"items": [
{
"description": "Footprint J3",
"pos": {
"x": 125.0,
"y": 116.0
},
"uuid": "1835b937-b88a-47d8-8f8b-34ab9b51ec3b"
}
],
"severity": "warning",
"type": "lib_footprint_issues"
},
{
"description": "The current configuration does not include the footprint library 'RoutingFixture'",
"items": [
{
"description": "Footprint J1",
"pos": {
"x": 105.0,
"y": 85.0
},
"uuid": "237d23c0-9604-4f92-ae39-b797e8c7a3a0"
}
],
"severity": "warning",
"type": "lib_footprint_issues"
},
{
"description": "The current configuration does not include the footprint library 'RoutingFixture'",
"items": [
{
"description": "Footprint J2",
"pos": {
"x": 145.0,
"y": 85.0
},
"uuid": "c6a7f067-f59d-410c-aac9-86933040c91b"
}
],
"severity": "warning",
"type": "lib_footprint_issues"
}
],
"warnings": 3
},
"segmentCount": 3,
"viaCount": 0
}
},
{
"verb": "kicad_route_net",
"args": {
"filePath": "C:/Users/azureuser/Documents/adom-kicad-verbtest/live/release-check-20260907.kicad_pcb",
"expectedRevision": "wrong-revision",
"net": "NET_1",
"width": 0.25,
"points": [
"J1.1",
[
112,
85
],
[
138,
85
],
"J2.1"
]
},
"response": {
"success": false,
"status": "error",
"error": "expectedRevision must match the current live board",
"errorCode": "stale_board",
"bridgeVersion": "0.9.340",
"mutated": false
}
},
{
"verb": "kicad_route_net",
"args": {
"filePath": "C:/Users/azureuser/Documents/adom-kicad-verbtest/live/release-check-20260907.kicad_pcb",
"expectedRevision": "d04187168f99a61592bba5f5bd17a4eaf3ab1a2e05670f068e1870789760c54f",
"net": "NET_2",
"width": 0.25,
"points": [
"J1.1",
[
112,
85
],
[
138,
85
],
"J2.1"
],
"dryRun": true
},
"response": {
"success": false,
"status": "error",
"error": "Pad J1.1 is not on NET_2",
"errorCode": "net_mismatch",
"bridgeVersion": "0.9.340"
}
},
{
"verb": "kicad_route_net",
"args": {
"filePath": "C:/Users/azureuser/Documents/adom-kicad-verbtest/live/release-check-20260907.kicad_pcb",
"expectedRevision": "d04187168f99a61592bba5f5bd17a4eaf3ab1a2e05670f068e1870789760c54f",
"net": "NET_1",
"width": 0.25,
"points": [
"J1.1",
[
112,
85
],
[
138,
85
],
"J2.1"
]
},
"response": {
"success": true,
"status": "ok",
"error": "",
"bridgeVersion": "0.9.340",
"revision": "5d6e32e2b17cf9bad0c180370d3bf9e1984e0f1a615ac949af335e8d160ace39",
"mutated": true,
"itemIds": [
"cbdb2efa-0490-4d42-8c3b-f3e250953ed5",
"db30ecbb-8f85-4098-b92c-a77d40e4f597",
"0e891439-017e-4553-9a10-619187179101"
],
"undoSteps": 1,
"source": "live-editor",
"drc": {
"clean": false,
"errors": 0,
"projectRulesCopied": [],
"source": "live-editor-snapshot",
"unconnected": 6,
"unconnectedItems": [
{
"description": "Missing connection between items",
"items": [
{
"description": "PTH pad 6 [NET_6] of J1",
"pos": {
"x": 105.0,
"y": 110.0
},
"uuid": "3d334398-b224-4f80-b176-09d31bce8458"
},
{
"description": "PTH pad 1 [NET_6] of J3",
"pos": {
"x": 125.0,
"y": 116.0
},
"uuid": "e6ff0f60-ddff-4083-9082-849ebf06f759"
}
],
"severity": "error",
"type": "unconnected_items"
},
{
"description": "Missing connection between items",
"items": [
{
"description": "PTH pad 1 [NET_6] of J3",
"pos": {
"x": 125.0,
"y": 116.0
},
"uuid": "e6ff0f60-ddff-4083-9082-849ebf06f759"
},
{
"description": "PTH pad 6 [NET_6] of J2",
"pos": {
"x": 145.0,
"y": 110.0
},
"uuid": "522a7227-4339-48c3-b477-dc9f2bd2d1a1"
}
],
"severity": "error",
"type": "unconnected_items"
},
{
"description": "Missing connection between items",
"items": [
{
"description": "PTH pad 2 [NET_2] of J1",
"pos": {
"x": 105.0,
"y": 90.0
},
"uuid": "e7dd8e25-b62f-44df-aaf8-2aedee11818a"
},
{
"description": "PTH pad 2 [NET_2] of J2",
"pos": {
"x": 145.0,
"y": 90.0
},
"uuid": "1907c87e-19d3-4e00-b9d2-cd8b568cec43"
}
],
"severity": "error",
"type": "unconnected_items"
},
{
"description": "Missing connection between items",
"items": [
{
"description": "PTH pad 3 [NET_3] of J1",
"pos": {
"x": 105.0,
"y": 95.0
},
"uuid": "8504368c-eb14-4118-962a-346d30cf1ba2"
},
{
"description": "PTH pad 3 [NET_3] of J2",
"pos": {
"x": 145.0,
"y": 95.0
},
"uuid": "bdc606a6-5234-4d68-9b97-af444f1f0616"
}
],
"severity": "error",
"type": "unconnected_items"
},
{
"description": "Missing connection between items",
"items": [
{
"description": "PTH pad 4 [NET_4] of J1",
"pos": {
"x": 105.0,
"y": 100.0
},
"uuid": "cf8bf00a-91a0-43db-bd10-2186c3479dce"
},
{
"description": "PTH pad 4 [NET_4] of J2",
"pos": {
"x": 145.0,
"y": 100.0
},
"uuid": "c588684d-e2e9-455a-8b41-7f9a6c0a4a66"
}
],
"severity": "error",
"type": "unconnected_items"
},
{
"description": "Missing connection between items",
"items": [
{
"description": "PTH pad 5 [NET_5] of J1",
"pos": {
"x": 105.0,
"y": 105.0
},
"uuid": "3b59115d-c3e1-4cb8-bbca-93967a13150d"
},
{
"description": "PTH pad 5 [NET_5] of J2",
"pos": {
"x": 145.0,
"y": 105.0
},
"uuid": "e38c53dc-7dd6-4461-a573-266d7c76033f"
}
],
"severity": "error",
"type": "unconnected_items"
}
],
"violations": [
{
"description": "The current configuration does not include the footprint library 'RoutingFixture'",
"items": [
{
"description": "Footprint J3",
"pos": {
"x": 125.0,
"y": 116.0
},
"uuid": "1835b937-b88a-47d8-8f8b-34ab9b51ec3b"
}
],
"severity": "warning",
"type": "lib_footprint_issues"
},
{
"description": "The current configuration does not include the footprint library 'RoutingFixture'",
"items": [
{
"description": "Footprint J1",
"pos": {
"x": 105.0,
"y": 85.0
},
"uuid": "237d23c0-9604-4f92-ae39-b797e8c7a3a0"
}
],
"severity": "warning",
"type": "lib_footprint_issues"
},
{
"description": "The current configuration does not include the footprint library 'RoutingFixture'",
"items": [
{
"description": "Footprint J2",
"pos": {
"x": 145.0,
"y": 85.0
},
"uuid": "c6a7f067-f59d-410c-aac9-86933040c91b"
}
],
"severity": "warning",
"type": "lib_footprint_issues"
}
],
"warnings": 3
},
"segmentCount": 3,
"viaCount": 0
}
},
{
"verb": "kicad_routing_state",
"args": {
"filePath": "C:/Users/azureuser/Documents/adom-kicad-verbtest/live/release-check-20260907.kicad_pcb"
},
"response": {
"success": true,
"status": "ok",
"error": "",
"bridgeVersion": "0.9.340",
"boardPath": "C:/Users/azureuser/Documents/adom-kicad-verbtest/live/release-check-20260907.kicad_pcb",
"revision": "5d6e32e2b17cf9bad0c180370d3bf9e1984e0f1a615ac949af335e8d160ace39",
"source": "live-editor",
"netsRemaining": [
"NET_2",
"NET_3",
"NET_4",
"NET_5",
"NET_6"
],
"segmentCount": 3,
"viaCount": 0
}
},
{
"verb": "kicad_routing_validate",
"args": {
"filePath": "C:/Users/azureuser/Documents/adom-kicad-verbtest/live/release-check-20260907.kicad_pcb"
},
"response": {
"success": true,
"status": "ok",
"error": "",
"bridgeVersion": "0.9.340",
"revision": "5d6e32e2b17cf9bad0c180370d3bf9e1984e0f1a615ac949af335e8d160ace39",
"errors": 0,
"warnings": 3,
"unconnected": 6,
"stale": false,
"source": "live-editor-snapshot"
}
},
{
"verb": "kicad_send_key",
"args": {
"hwnd": 591366,
"key": "ctrl+z"
},
"response": {
"success": true,
"status": "ok",
"error": "",
"bridgeVersion": "0.9.340",
"data": {
"cmdId": 20444,
"foreground": false,
"hwnd": 591366,
"menuItem": "Undo",
"method": "menu-command",
"title": "*release-check-20260907 \u2014 PCB Editor"
}
}
},
{
"verb": "kicad_routing_state",
"args": {
"filePath": "C:/Users/azureuser/Documents/adom-kicad-verbtest/live/release-check-20260907.kicad_pcb"
},
"response": {
"success": true,
"status": "ok",
"error": "",
"bridgeVersion": "0.9.340",
"boardPath": "C:/Users/azureuser/Documents/adom-kicad-verbtest/live/release-check-20260907.kicad_pcb",
"revision": "d04187168f99a61592bba5f5bd17a4eaf3ab1a2e05670f068e1870789760c54f",
"source": "live-editor",
"netsRemaining": [
"NET_1",
"NET_2",
"NET_3",
"NET_4",
"NET_5",
"NET_6"
],
"segmentCount": 0,
"viaCount": 0
}
},
{
"verb": "kicad_send_key",
"args": {
"hwnd": 591366,
"key": "ctrl+y"
},
"response": {
"success": true,
"status": "ok",
"error": "",
"bridgeVersion": "0.9.340",
"data": {
"cmdId": 20445,
"foreground": false,
"hwnd": 591366,
"menuItem": "Redo",
"method": "menu-command",
"title": "*release-check-20260907 \u2014 PCB Editor"
}
}
},
{
"verb": "kicad_routing_state",
"args": {
"filePath": "C:/Users/azureuser/Documents/adom-kicad-verbtest/live/release-check-20260907.kicad_pcb"
},
"response": {
"success": true,
"status": "ok",
"error": "",
"bridgeVersion": "0.9.340",
"boardPath": "C:/Users/azureuser/Documents/adom-kicad-verbtest/live/release-check-20260907.kicad_pcb",
"revision": "5d6e32e2b17cf9bad0c180370d3bf9e1984e0f1a615ac949af335e8d160ace39",
"source": "live-editor",
"netsRemaining": [
"NET_2",
"NET_3",
"NET_4",
"NET_5",
"NET_6"
],
"segmentCount": 3,
"viaCount": 0
}
},
{
"verb": "kicad_remove_route",
"args": {
"filePath": "C:/Users/azureuser/Documents/adom-kicad-verbtest/live/release-check-20260907.kicad_pcb",
"expectedRevision": "5d6e32e2b17cf9bad0c180370d3bf9e1984e0f1a615ac949af335e8d160ace39",
"itemIds": [
"cbdb2efa-0490-4d42-8c3b-f3e250953ed5",
"db30ecbb-8f85-4098-b92c-a77d40e4f597",
"0e891439-017e-4553-9a10-619187179101"
]
},
"response": {
"success": true,
"status": "ok",
"error": "",
"bridgeVersion": "0.9.340",
"revision": "d04187168f99a61592bba5f5bd17a4eaf3ab1a2e05670f068e1870789760c54f",
"mutated": true,
"removedIds": [
"cbdb2efa-0490-4d42-8c3b-f3e250953ed5",
"db30ecbb-8f85-4098-b92c-a77d40e4f597",
"0e891439-017e-4553-9a10-619187179101"
],
"verified": true,
"undoSteps": 1
}
},
{
"verb": "kicad_routing_state",
"args": {
"filePath": "C:/Users/azureuser/Documents/adom-kicad-verbtest/live/release-check-20260907.kicad_pcb"
},
"response": {
"success": true,
"status": "ok",
"error": "",
"bridgeVersion": "0.9.340",
"boardPath": "C:/Users/azureuser/Documents/adom-kicad-verbtest/live/release-check-20260907.kicad_pcb",
"revision": "d04187168f99a61592bba5f5bd17a4eaf3ab1a2e05670f068e1870789760c54f",
"source": "live-editor",
"netsRemaining": [
"NET_1",
"NET_2",
"NET_3",
"NET_4",
"NET_5",
"NET_6"
],
"segmentCount": 0,
"viaCount": 0
}
}
]
}