1c6c1952e8
Regressions fixed (aa916de simplification):
- firmware/platformio.ini: restore esp32s3_waveshare (pioarduino platform,
lib_deps: ArduinoJson/ESP32_Display_Panel/ESP32-audioI2S/IO_Expander,
BOARD_HAS_PSRAM, I2S pins), restore esp32s3_qemu (extends waveshare +
QEMU_BUILD), fix default_envs=esp32s3_waveshare, keep build_dir=/tmp/kl_pio_build
- .github/workflows/ci.yml: restore firmware-native (112 Unity tests),
firmware-build (esp32s3_waveshare artifact), firmware-sim (Wokwi gated),
hardware-export (KiCad ERC + SVG/PDF/netlist + KiBot + compliance)
- .gitignore: add .kibot-venv/ and .pio-venv/ (prevent committing venvs)
Dataset (HuggingFace clemsail/kill-life-embedded-qa v2):
- generate_hf_dataset.py: rag_query timeout 30s->120s (LLM takes ~45s),
rag_search timeout 15s->30s; resolves intermittent server-busy failures
- 30 entries (10+10+5+5) -- 100% coverage vs 21/40 previously
Firmware tests (112/112):
- 4 suites: test_basic (39), test_modules (32), test_radio_state (26),
test_wifi_state (15); test_logic.cpp now a stub (content moved to test_basic)
Hardware:
- esp32_minimal.kicad_pcb, esp32s3_enclosure.FCStd/.step, gen_pcb.py,
gen_enclosure.py, REGISTRY.md, ERC reports for all design blocks
MCP tools:
- apify_mcp.py: +5 Kill_LIFE tools (fetch_espressif_docs, fetch_kicad_library_info,
fetch_platformio_registry, ingest_to_rag, get_runtime_info)
- mcp_runtime_status.py: fix classify_overall -- accept_degraded respected for
failed checks, task annotations, optional_degraded logic cleaned up
- deploy/cad/docker-compose.yml: path mascarade->mascarade-main
Specs & docs:
- docs/plans/TODO_2026-03-26.md, TODO_2026-03-27.md
- ai-agentic-embedded-base/specs: arch, tasks, intake, spec updates
- docs/playbooks/kicad_happy_hw_bom_forge.md
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
133 lines
4.1 KiB
JSON
133 lines
4.1 KiB
JSON
{
|
|
"version": "2026-03-22",
|
|
"scope": "pcb-ai-fab",
|
|
"source_of_truth": {
|
|
"doc": "docs/PCB_AI_FAB_INTEGRATION_MAP_2026-03-22.md",
|
|
"registry": "specs/contracts/pcb_ai_fab_registry.json",
|
|
"tui": "tools/cockpit/pcb_ai_fab_tui.sh"
|
|
},
|
|
"tools": [
|
|
{
|
|
"id": "pcbdesigner-ai",
|
|
"name": "PCB Designer AI",
|
|
"kind": "saas-eda-fast-fab",
|
|
"status": "evaluate-fast-fab",
|
|
"owner_agent": "Embedded-CAD",
|
|
"sub_agent": "HW-BOM",
|
|
"inputs": ["schematic", "kicad-import", "altium-import"],
|
|
"outputs": ["gerber", "odb++", "kicad", "altium", "bom"],
|
|
"strengths": [
|
|
"upload schematic then AI placement+routing",
|
|
"one-click fab ordering",
|
|
"live BOM pricing and alternates",
|
|
"JLCPCB and PCBWay oriented DRC"
|
|
],
|
|
"risks": [
|
|
"external SaaS IP boundary",
|
|
"vendor-managed rule interpretation",
|
|
"needs local fab package gate before acceptance"
|
|
],
|
|
"fit_with_kill_life": [
|
|
"prototype acceleration",
|
|
"bom and fabrication handoff",
|
|
"quick-turn board ordering"
|
|
],
|
|
"links": [
|
|
"https://pcbdesigner.ai/"
|
|
]
|
|
},
|
|
{
|
|
"id": "quilter",
|
|
"name": "Quilter",
|
|
"kind": "physics-driven-routing-engine",
|
|
"status": "canary-route",
|
|
"owner_agent": "CAD-Bridge",
|
|
"sub_agent": "CAD-Smoke",
|
|
"inputs": ["schematic", "board-file", "project-file"],
|
|
"outputs": ["same-cad-format", "layout-candidates", "constraint-review"],
|
|
"strengths": [
|
|
"physics constraints from schematic",
|
|
"candidate review workflow",
|
|
"fabricator and stack-up parameters",
|
|
"returns output in source CAD format"
|
|
],
|
|
"risks": [
|
|
"no verified one-click JLCPCB claim in source reviewed",
|
|
"needs guarded round-trip into local proof chain",
|
|
"requires per-project routing acceptance criteria"
|
|
],
|
|
"fit_with_kill_life": [
|
|
"routing canary",
|
|
"constraint-heavy boards",
|
|
"candidate comparison against YiACAD"
|
|
],
|
|
"links": [
|
|
"https://www.quilter.ai/",
|
|
"https://docs.quilter.ai/using-quilter/upload-your-design-files"
|
|
]
|
|
},
|
|
{
|
|
"id": "kicad-happy",
|
|
"name": "kicad-happy",
|
|
"kind": "open-source-claude-skills",
|
|
"status": "adopt-patterns",
|
|
"owner_agent": "HW-BOM",
|
|
"sub_agent": "Forge",
|
|
"inputs": ["kicad-sch", "kicad-pcb", "gerbers", "bom"],
|
|
"outputs": ["reviews", "pricing", "supplier-orders", "jlcpcb-order-files"],
|
|
"strengths": [
|
|
"schematic and PCB analysis",
|
|
"BOM lifecycle and pricing",
|
|
"DigiKey Mouser LCSC sourcing",
|
|
"JLCPCB fabrication and assembly workflow"
|
|
],
|
|
"risks": [
|
|
"Claude Code specific",
|
|
"reference workflow more than drop-in runtime dependency",
|
|
"needs adaptation into local prompts and runbooks"
|
|
],
|
|
"fit_with_kill_life": [
|
|
"review.bom patterns",
|
|
"sourcing playbooks",
|
|
"fabrication prep patterns"
|
|
],
|
|
"links": [
|
|
"https://github.com/aklofas/kicad-happy"
|
|
]
|
|
}
|
|
],
|
|
"gaps": [
|
|
"no canonical fab package contract in Kill_LIFE today",
|
|
"no direct one-click JLCPCB workflow implemented in Kill_LIFE",
|
|
"no external PCB AI canary lane with round-trip evidence",
|
|
"no unified BOM alternates plus sourcing plus CPL preparation flow"
|
|
],
|
|
"recommended_lots": [
|
|
{
|
|
"id": "T-RE-294",
|
|
"title": "Document PCB AI / Forge / BOM / fabrication map",
|
|
"status": "done"
|
|
},
|
|
{
|
|
"id": "T-RE-295",
|
|
"title": "Publish machine-readable PCB AI registry and TUI",
|
|
"status": "done"
|
|
},
|
|
{
|
|
"id": "T-RE-296",
|
|
"title": "Run Quilter routing canary on Hypnoled and compare round-trip evidence",
|
|
"status": "todo"
|
|
},
|
|
{
|
|
"id": "T-RE-297",
|
|
"title": "Formalize fab package contract for JLCPCB BOM CPL Gerber provenance",
|
|
"status": "todo"
|
|
},
|
|
{
|
|
"id": "T-RE-298",
|
|
"title": "Translate kicad-happy patterns into YiACAD and Forge playbooks",
|
|
"status": "todo"
|
|
}
|
|
]
|
|
}
|