Session kxkm-ai 25-26 mars 2026 — 98/98 tâches TODO complétées. Hardware: - KiCad 10.0.0 native avec sym/fp-lib-table locales - Nouveau block SPI (gen_spi_header.py), ERC clean - Module partagé hardware/lib/kicad_gen.py (5 générateurs refactorisés) - Pipeline export: tools/hw/hw_export.sh (ERC + SVG + PDF + netlist) - KiBot 1.8.5 installé, .kibot.yaml configuré Firmware: - Fix I2S driver conflict: migration I2sMic vers nouvelle API i2s_channel_* - Fix WDT risk: yield() dans CompletePushToTalk (voice_controller.cpp) - Fix XSS wifi_manager.cpp: innerHTML → createElement/textContent - Fix null check FwIsValidWavHeader - Dead code supprimé: i2s_audio.cpp.bak, i2s_audio.h Simulation MCU: - QEMU ESP32-S3 v9.2.2 installé (tools/sim/) - Script run_qemu_esp32s3.sh — boot OK vérifié - [env:esp32s3_qemu] dans platformio.ini - Wokwi CI: wokwi.toml + diagram.json + scenario.yaml - SPICE bridge POC: tools/sim/spice_bridge.py (ngspice → ADC/brownout) Compliance: - Profil iot_wifi_eu validé (16 standards, 8 evidence) - 4 evidence remplis: risk_assessment, security_architecture, test_plan_radio_emc, supply_chain_declarations - plan.yaml complété avec données produit réelles CI: - Job hardware-export (KiCad 10 ERC + SVG + PDF + netlist) - Job firmware-sim (Wokwi, conditionnel WOKWI_CLI_TOKEN) - evidence_pack.yml enrichi avec exports hardware Docs & RAG: - specs/02_arch.md complet (481 lignes, 4 ADR, diagrammes) - docs/SIMULATION.md (3 niveaux: native, QEMU, Wokwi) - 6 chunks ingérés dans kb-kicad RAG - Dataset HF: tools/generate_hf_dataset.py + datasets/kb_kicad_qa.jsonl - Rapport analyse: docs/plans/ANALYSIS_REPORT_2026-03-25.md - Recherche OSS: docs/research/oss_similar_projects.md Infra: - ZeroClaw 0.1.7 installé (cargo install) - APIFY_API_KEY configurée, smoke OK - Tests: 39/39 firmware + 26/26 Python stable Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
7.8 KiB
Pont Kill_LIFE <-> Mascarade
Ce document rattache les décisions et implémentations produites pendant la session de travail locale au repo Kill_LIFE.
But
Garder une séparation propre entre :
crazy_life: repo canonique web/devops et release du shell cockpit.Kill_LIFE: repo de méthode, specs, gates, evidence packs, workflows hardware/firmware.Mascarade: repo compagnon d’exécution locale pour orchestration LLM, distillation/fine-tuning, et outillage CAD conteneurisé.
En local, les trois dépôts sont côte à côte :
crazy_life:../crazy_lifeKill_LIFE:../Kill_LIFEMascarade:../mascarade
Règle de bridge retenue :
crazy_lifereste la source canonique pour le shell web et sa release.mascarade/webreste un mécanisme de sync et de snapshot local, pas un gate de release.Kill_LIFEreste la source de vérité pour le runtime, les workflows JSON, l’evidence, le firmware, le CAD et la compliance.
Ce qui a été mis en place côté Mascarade
1. Stack CAD/EDA locale
La stack CAD/EDA a maintenant été intégrée directement dans Kill_LIFE :
deploy/cad/docker-compose.ymltools/hw/cad_stack.sh
Elle fournit :
kicad-headlessviakicad-clisur une image KiCad 10 compatiblekicad-mcpen transportstdio, lancé viatools/hw/run_kicad_mcp.shfreecad-headlessviaFreeCADCmdplatformiovia CLIpio
Le repo Mascarade reste utile comme repo compagnon pour :
- orchestration LLM
- distillation / fine-tuning
- modèles students spécialisés
2. Pipeline local teacher -> student
Le repo compagnon contient aussi un pipeline local de distillation et fine-tuning :
../mascarade/finetune/distill_dataset.py../mascarade/finetune/distill_and_train.py../mascarade/finetune/run_local.py../mascarade/finetune/batch_local.py
Domaines déjà traités ou préparés :
kicadfreecadplatformioesp32/iotspice
Ce pipeline sert à produire de petits modèles spécialisés exploitables localement pour les agents HW, Firmware, Doc et QA.
Répartition recommandée des rôles
| Besoin | Repo recommandé | Raison |
|---|---|---|
| Shell web, Hono API, publication du cockpit | crazy_life |
c’est le repo canonique web/devops |
| Specs, ADR, gates, evidence packs | Kill_LIFE |
c’est la source de vérité méthodologique |
| Exécution LLM locale et orchestration provider/model | Mascarade |
c’est le cockpit d’exécution |
| KiCad/FreeCAD/PlatformIO en conteneur | Kill_LIFE |
stack CAD désormais intégrée localement |
| Simulation SPICE (ngspice) | Kill_LIFE |
MCP ngspice local, circuits dans spice/ |
| Build/test firmware PlatformIO | Kill_LIFE |
MCP platformio local, pio dans .pio-venv/ |
| Fetch docs Espressif/KiCad | Kill_LIFE |
MCP apify, mode scrape direct |
| Pipeline RAG (embed + rerank + synthèse) | Mascarade |
nomic-embed-text + qwen3:4b + devstral sur RTX 4090 |
| Agents spécialisés avec RAG contextuel | Mascarade |
18 agents dont firmware-engineer, spice-expert, openseeker |
| Datasets, distillation, adapters LoRA/QLoRA | Mascarade |
pipeline de training déjà opérationnel |
| Rapports finaux, runbooks, conformité | Kill_LIFE |
cohérence des artefacts et traçabilité |
Comment relier les deux dépôts
Le flux web/release reste à part :
- stabiliser et publier
crazy_lifedepuis son propre repo - n'utiliser
mascarade/scripts/sync_crazy_life.shqu'après ce gate - ne jamais traiter
mascarade/webcomme source de vérité de release
Pour le hardware / CAD
Kill_LIFE garde :
- les règles
- les schémas
- les evidence packs
- les handoffs
Kill_LIFE exécute maintenant directement :
kicad-cli- le serveur
kicad-mcp FreeCADCmdpio
Le flux recommandé est :
- préparer la spec et les critères d’acceptation dans
Kill_LIFE - exécuter les outils CAD/EDA dans
Kill_LIFE - rapatrier les rapports, exports et décisions dans
Kill_LIFE/docs/etKill_LIFE/artifacts/
Pour les agents IA spécialisés
Kill_LIFE fournit la matière de domaine :
specs/docs/hardware/tools/- conventions et profils compliance
Mascarade transforme cette matière en :
- datasets
ShareGPT JSONL - distillation teacher -> student
- adapters LoRA/QLoRA locaux
Le flux recommandé est :
- extraire ou générer des datasets depuis
Kill_LIFE - entraîner les students côté
Mascarade - réinjecter l’usage de ces students dans les workflows agents de
Kill_LIFE
Alignement avec l’état de l’art au 6 mars 2026
Points retenus pendant la recherche :
kicad-cliest la voie officielle pour le headless KiCad- pour MCP,
stdioreste le bon choix en local Streamable HTTPne doit être ajouté que si on expose un vrai serveur distantFreeCADCmdest le mode headless propre pour FreeCADPlatformIOreste le plus simple à conteneuriser via CLI Python
Conséquence pour Kill_LIFE :
- ne pas mélanger la méthode et la couche d’exécution
- documenter
Mascaradecomme repo compagnon, pas comme dépendance cachée - garder les evidence packs et la gouvernance dans
Kill_LIFE
3. Pipeline RAG agentic (ajouté 2026-03-25)
Mascarade est maintenant le compute backend RAG pour Kill_LIFE :
- Embeddings:
nomic-embed-textviamascarade-ollama-runtime(RTX 4090, GPU) - Reranking:
qwen3:4bvia Ollama (scoring 0-10) - Synthèse:
devstral:latestvia Ollama (code model 4090) - Stockage vectoriel: Qdrant local dans
mascarade-main_mascarade-network
Collections peuplées (2026-03-25) :
| Collection | Chunks | Contenu |
|---|---|---|
kb-firmware |
~113 | Code ESP32-S3, specs, plans firmware |
kb-kicad |
~119 | Docs KiCad, hardware rules, MCP specs |
kb-espressif |
~146 | Docs ESP-IDF live (I2S, WiFi, BLE, GPIO, FreeRTOS, OTA...) |
kb-freecad |
~11 | CAD modeling specs |
kb-components |
~16 | YAML fields, footprints, compliance |
kb-spice |
~11 | 4 netlists référence + README |
Endpoints RAG (port 8100, pas d’auth requise) :
POST /v1/rag/ingest— ingestion de textes brutsPOST /v1/rag/search— recherche sémantique dans une collectionPOST /v1/rag/query— pipeline complet (embed → search → rerank → synthèse)POST /v1/agents/openseeker/search— multi-hop fan-out sur N collections
4. Agents spécialisés Mascarade pour Kill_LIFE (2026-03-25)
18 agents enregistrés. Agents avec RAG contextuel automatique:
| Agent | Modèle | Collection RAG |
|---|---|---|
firmware-engineer |
devstral:latest (Ollama) | kb-firmware + kb-espressif |
spice-expert |
mistral-large | kb-spice |
kicad-designer |
mascarade-kicad (Ollama) | kb-kicad |
freecad-designer |
ollama | kb-freecad |
components-expert |
ollama | kb-components |
openseeker |
routellm strong | fan-out sur toutes collections |
Appel via POST /v1/agents/{name}/run ou endpoint dédié openseeker/search.
Statut actuel
L’étape d’intégration côté Kill_LIFE est maintenant réalisée.
La couche CAD/EDA locale vit directement dans ce dépôt :
deploy/cad/docker-compose.ymldeploy/cad/Dockerfile.kicad-mcpdeploy/cad/Dockerfile.freecad-headlessdeploy/cad/Dockerfile.platformiotools/hw/cad_stack.sh
Intégration actuelle dans Kill_LIFE
Le dépôt Kill_LIFE expose maintenant un launcher local natif :
tools/hw/cad_stack.shtools/hw/run_kicad_mcp.sh
Ce launcher :
- monte
Kill_LIFEcomme workspace par défaut - pilote directement
deploy/cad/docker-compose.yml - évite de cacher une dépendance implicite vers
Mascarade - laisse
Mascaradejouer son rôle de repo compagnon pour LLM local et fine-tuning
Exemples :
tools/hw/cad_stack.sh doctor
tools/hw/cad_stack.sh kicad-cli version
tools/hw/cad_stack.sh pio system info
tools/hw/run_kicad_mcp.sh --doctor
tools/hw/cad_stack.sh mcp