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>
CAD Stack
Last updated: 2026-03-14
Stack Docker CAD/EDA integree directement dans Kill_LIFE.
Important:
- cette stack reste la base headless et containerisee;
- YiACAD ajoute des surfaces GUI natives utilisateur dans KiCad et FreeCAD;
- la strategie GUI/native est documentee dans
docs/CAD_AI_NATIVE_GUI_RUNBOOK_2026-03-20.md,docs/CAD_AI_NATIVE_HOOKS_2026-03-20.mdetdocs/YIACAD_APPLE_UI_UX_AUDIT_2026-03-20.md.
Backlogs canoniques associes:
- plan modelling local:
docs/plans/16_plan_cad_modeling_stack.md - TODO modelling local:
specs/cad_modeling_tasks.md - backlog cible MCP/agentics:
specs/mcp_agentics_target_backlog.md - backlog MCP/provenance:
specs/mcp_tasks.md - benchmark KiCad adjacent:
docs/KICAD_BENCHMARK_MATRIX.md
Direction retenue
KiCad headless:kicad-clivia une image KiCad 10KiCad MCP:tools/hw/run_kicad_mcp.shet l'aliastools/hw/cad_stack.sh mcpFreeCAD headless:FreeCADCmdOpenSCAD headless:openscadPlatformIO:piodans un conteneur Python leger
Provenance outillage CAD
officiel: surface publiee par le projet ou l'organisation qui own l'outilcommunity valide: projet tiers etabli, retenu comme reference ou benchmarkcustom local: wrapper, launcher ou garde-fou maintenu dansKill_LIFE
| Surface / outil | Provenance | Statut | Usage retenu |
|---|---|---|---|
KiCad.app + kicad-cli + image KiCad 10 |
officiel | supporte | source de verite headless pour ERC/DRC/export |
FreeCADCmd + releases FreeCAD |
officiel | supporte | modelling headless et backend du serveur freecad |
OpenSCAD CLI + releases/snapshots |
officiel | supporte | rendu/export headless et backend du serveur openscad |
KiAuto |
community valide | benchmark outille | appoint opt-in si un lot concret demande plus de checks/export que kicad-cli + kicad-mcp |
kicad-automation-scripts |
community valide | benchmark classe | reference historique pour patterns Docker/doc; pas de promotion runtime par defaut |
InteractiveHtmlBom |
community valide | reference utile | BOM interactive offline si la couche doc/fabrication le justifie |
tools/hw/cad_stack.sh, tools/hw/run_kicad_mcp.sh, tools/run_freecad_mcp.sh, tools/run_openscad_mcp.sh, tools/tui/cad_mcp_audit.sh, tools/tui/kicad_benchmark_review.sh |
custom local | supporte | wrappers, garde-fou et helper doc benchmark operateur Kill_LIFE |
Le classement custom local ne change jamais la source de verite runtime: les wrappers Kill_LIFE restent bornes par les binaires officiels detectes ou par les fallbacks conteneurises supportes.
Usage rapide
tools/hw/cad_stack.sh up
tools/hw/cad_stack.sh doctor
tools/hw/cad_stack.sh kicad-cli version
tools/hw/cad_stack.sh freecad-cmd -c "import FreeCAD; print('.'.join(FreeCAD.Version()[:3]))"
tools/hw/cad_stack.sh openscad --version
tools/hw/cad_stack.sh pio system info
tools/hw/cad_stack.sh mcp
bash tools/tui/kicad_benchmark_review.sh report
bash tools/tui/kicad_benchmark_review.sh purge --yes
python3 tools/hw/freecad_smoke.py --json
python3 tools/hw/openscad_smoke.py --json
Le workspace monte dans les conteneurs est la racine de Kill_LIFE par defaut.
Statut modelling local
FreeCAD: supporte en headless, avec smoke versionnepython3 tools/hw/freecad_smoke.py --jsonOpenSCAD: supporte en headless, avec smoke versionnepython3 tools/hw/openscad_smoke.py --json
Limites explicites:
- la stack Docker documentee ici reste headless par nature
- l'UI graphique YiACAD ne passe pas par ces conteneurs, mais par les surfaces natives utilisateur KiCad/FreeCAD
- les serveurs MCP
FreeCADetOpenSCADrestent des surfaces MCP separees; ils ne remplacent ni les wrappers CLI locaux ni les surfaces GUI YiACAD
MCP CAD locaux
Launchers supportes:
bash tools/run_freecad_mcp.sh --doctor
bash tools/run_openscad_mcp.sh --doctor
python3 tools/freecad_mcp_smoke.py --json
python3 tools/openscad_mcp_smoke.py --json
Statut:
freecad: supporte enstdiolocal, visible aussi danspython3 tools/mcp_runtime_status.py --jsonopenscad: supporte enstdiolocal, visible aussi danspython3 tools/mcp_runtime_status.py --json
Variables utiles
KICAD_DOCKER_IMAGE: image KiCad 10 a utiliserCAD_WORKSPACE_DIR: workspace monte dans/workspaceKILL_LIFE_RUNTIME_HOMEouKILL_LIFE_RUNTIME_BASE_DIR: surcharge du runtime home des wrappers locaux et MCP
Gouvernance
- la couche modelling locale
FreeCAD/OpenSCADreste gouvernee dansspecs/cad_modeling_tasks.md - la trajectoire MCP/agentics reste gouvernee dans
specs/mcp_agentics_target_backlog.md mcp_tasks.mdporte le lot provenance MCP/CAD;docs/KICAD_BENCHMARK_MATRIX.mdfixe la decision benchmarkKiAuto/kicad-automation-scriptsbash tools/tui/cad_mcp_audit.sh auditreste le garde-fou minimal avant toute promotion documentaire ou operateur du lot MCP/CAD