Files
Kill_LIFE/docs/MASCARADE_BRIDGE.md
T
root e67fb754c2 feat: KiCad 10 native, QEMU simulation, compliance EU, firmware fixes
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>
2026-03-26 09:52:00 +01:00

7.8 KiB
Raw Blame History

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 dexé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_life
  • Kill_LIFE : ../Kill_LIFE
  • Mascarade : ../mascarade

Règle de bridge retenue :

  • crazy_life reste la source canonique pour le shell web et sa release.
  • mascarade/web reste un mécanisme de sync et de snapshot local, pas un gate de release.
  • Kill_LIFE reste la source de vérité pour le runtime, les workflows JSON, levidence, 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.yml
  • tools/hw/cad_stack.sh

Elle fournit :

  • kicad-headless via kicad-cli sur une image KiCad 10 compatible
  • kicad-mcp en transport stdio, lancé via tools/hw/run_kicad_mcp.sh
  • freecad-headless via FreeCADCmd
  • platformio via CLI pio

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 :

  • kicad
  • freecad
  • platformio
  • esp32/iot
  • spice

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 cest le repo canonique web/devops
Specs, ADR, gates, evidence packs Kill_LIFE cest la source de vérité méthodologique
Exécution LLM locale et orchestration provider/model Mascarade cest le cockpit dexé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 :

  1. stabiliser et publier crazy_life depuis son propre repo
  2. n'utiliser mascarade/scripts/sync_crazy_life.sh qu'après ce gate
  3. ne jamais traiter mascarade/web comme 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
  • FreeCADCmd
  • pio

Le flux recommandé est :

  1. préparer la spec et les critères dacceptation dans Kill_LIFE
  2. exécuter les outils CAD/EDA dans Kill_LIFE
  3. rapatrier les rapports, exports et décisions dans Kill_LIFE/docs/ et Kill_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 :

  1. extraire ou générer des datasets depuis Kill_LIFE
  2. entraîner les students côté Mascarade
  3. réinjecter lusage de ces students dans les workflows agents de Kill_LIFE

Alignement avec l’état de lart au 6 mars 2026

Points retenus pendant la recherche :

  • kicad-cli est la voie officielle pour le headless KiCad
  • pour MCP, stdio reste le bon choix en local
  • Streamable HTTP ne doit être ajouté que si on expose un vrai serveur distant
  • FreeCADCmd est le mode headless propre pour FreeCAD
  • PlatformIO reste le plus simple à conteneuriser via CLI Python

Conséquence pour Kill_LIFE :

  • ne pas mélanger la méthode et la couche dexécution
  • documenter Mascarade comme 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-text via mascarade-ollama-runtime (RTX 4090, GPU)
  • Reranking: qwen3:4b via Ollama (scoring 0-10)
  • Synthèse: devstral:latest via 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 dauth requise) :

  • POST /v1/rag/ingest — ingestion de textes bruts
  • POST /v1/rag/search — recherche sémantique dans une collection
  • POST /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 dinté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.yml
  • deploy/cad/Dockerfile.kicad-mcp
  • deploy/cad/Dockerfile.freecad-headless
  • deploy/cad/Dockerfile.platformio
  • tools/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.sh
  • tools/hw/run_kicad_mcp.sh

Ce launcher :

  • monte Kill_LIFE comme workspace par défaut
  • pilote directement deploy/cad/docker-compose.yml
  • évite de cacher une dépendance implicite vers Mascarade
  • laisse Mascarade jouer 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