Files
Kill_LIFE/docs/CAD_AI_NATIVE_FORK_STRATEGY.md
L'électron rare 066acde0cb docs: add feature maps, audits, research, plans lots 19-26
- Feature maps: agentic intelligence, digital factory, yiacad global/UI/UX/backend
- Audits: consolidation, refactor manifest, exhaustive refonte
- Research: OSS AI-native CAD, digital factory stack, mascarade observability
- Plans: lots 19-26 (mesh tri-repo, UI/UX refonte, yiacad global,
  intelligence agentique, mistral agents/studio, hypnoled, EDA AI tools,
  git EDA platform)
- Operator docs: machine registry, alignment, sync status, provider compat
- Mascarade/Kill_LIFE product contracts and OPS bridge
- PCB AI fab integration map, artifact WMS index
- References directory

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 00:20:32 +01:00

205 lines
8.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Fork IA-native KiCad + FreeCAD (YiACAD) pour Kill_LIFE
Objectif: disposer de forks dédiés pour la couche technique `AI-native` de Kill_LIFE
(automations MCP, scripts de conversion, audits, benchmarks) sans casser la chaîne principale.
Le lot associé est nommé **YiACAD** et pilote une fusion opérationnelle **KiCad + FreeCAD**
(avec OpenSCAD en couverture 3D) dans un mode host-first piloté par lot.
## 1) Principe de production
1. Ne pas réinventer la stack existante:
- conserver `tools/hw/cad_stack.sh`, `tools/hw/run_kicad_mcp.sh` et `tools/run_freecad_mcp.sh`.
2. Maintenir les forks locaux de référence:
- `KiCad/ KiCad`
- `FreeCAD/FreeCAD`
3. Travailler des branches IA-native par repo:
- `kill-life-ai-native`
4. Garder un manifeste de provenance et de remotes stable:
- fork `origin`
- source `upstream`
## 2) Script d'amorçage (prêt à exécuter)
Le script de base ajouté:
- `tools/cad/ai_native_forks.sh`
Flux type:
1. Préparer linfra locale:
```bash
mkdir -p .runtime-home/cad-ai-native-forks
```
2. Générer une base locale sans créer de fork GitHub:
```bash
bash tools/cad/ai_native_forks.sh --dry-run --base-dir .runtime-home/cad-ai-native-forks
```
3. Créer les forks GitHub (si besoin), puis cloner:
```bash
gh auth login
bash tools/cad/ai_native_forks.sh \
--create-forks \
--base-dir .runtime-home/cad-ai-native-forks \
--owner <ton-org-github> \
--branch kill-life-ai-native
```
4. Vérifier le manifeste:
```bash
cat .runtime-home/cad-ai-native-forks/manifest.md
```
## 3) Lot YiACAD (pilotage de fusion CAD)
Le lot `yiacad-fusion` regroupe l'amorçage + smoke CAD + preuves:
- préparation des forks (`prepare`) via `tools/cad/ai_native_forks.sh`
- smoke de santé CAD (`smoke`) via:
- `tools/hw/cad_stack.sh doctor-mcp`
- `tools/hw/run_kicad_mcp.sh --doctor`
- `tools/hw/kicad_host_mcp_smoke.py --json --quick`
- `tools/freecad_mcp_smoke.py --json --quick`
- `tools/openscad_mcp_smoke.py --json --quick`
- `tools/run_freecad_mcp.sh --doctor`
- `tools/run_openscad_mcp.sh --doctor`
- statut (`status`) et logs (`logs`) dans `artifacts/cad-fusion`
- purge contrôlée (`clean-logs`) avec rétention définie.
Entrées disponibles:
- `bash tools/cad/yiacad_fusion_lot.sh --action prepare`
- `bash tools/cad/yiacad_fusion_lot.sh --action smoke`
- `bash tools/cad/yiacad_fusion_lot.sh --action status`
- `bash tools/cad/yiacad_fusion_lot.sh --action logs`
- `bash tools/cad/yiacad_fusion_lot.sh --action clean-logs --days 7 --yes`
- via cockpit: `bash tools/cockpit/refonte_tui.sh --action yiacad-fusion:prepare`
- via cockpit: `bash tools/cockpit/refonte_tui.sh --action yiacad-fusion:smoke`
Lancement standard:
```bash
bash tools/cockpit/refonte_tui.sh --action yiacad-fusion:prepare
bash tools/cockpit/refonte_tui.sh --action yiacad-fusion:smoke
```
## 4) Intégration Kill_LIFE
- `tools/cad/ai_native_forks.sh` orchestre déjà:
- le clone local des dépôts,
- la création éventuelle de branches `kill-life-ai-native`,
- la normalisation des remotes (`origin`/`upstream`).
- Le flux de refonte attend que chaque lot touchant KiCad/FreeCAD fournisse:
- un `lot_id`,
- un `owner_agent` explicite,
- un `write_set` restreint,
- une preuve `log_ops`,
- et une validation `mesh_status` (de `mesh_sync_preflight.sh`).
- Les preuves YiACAD sont archivées dans:
- `artifacts/cad-fusion/yiacad-fusion-last.log`
- `artifacts/cad-fusion/yiacad-fusion-last-status.md`
## 5) Structure actuelle (2026-03-20 11:20)
- Base locale: `/Users/electron/Documents/Lelectron_rare/Kill_LIFE/.runtime-home/cad-ai-native-forks/`
- Répertoires détectés:
- `kicad-ki` (branche `kill-life-ai-native` préparée localement)
- `freecad-ki` (branche `kill-life-ai-native` préparée localement)
- Remotes:
- `origin` (fork GitHub cible)
- `upstream` (remote principal)
- Manifeste actif:
- `/Users/electron/Documents/Lelectron_rare/Kill_LIFE/.runtime-home/cad-ai-native-forks/manifest.md`
- Artefacts YiACAD:
- `artifacts/cad-fusion/`
## 6) Prochaine phase opérationnelle
- `--create-forks` non encore exécuté côté GitHub (forks distants non publiés).
- Après création des forks distants:
- pousser la branche `kill-life-ai-native`,
- déclarer les remotes `origin`/`upstream`,
- publier la preuve de CI dans:
- `docs/CAD_AI_NATIVE_FORK_STRATEGY.md`
- `CHANGELOG_AI_NATIVE.md` (par repo fork)
- compléter la preuve YiACAD (prepare + smoke + status + purge contrôlée).
## 6bis) Dernière exécution opératoire validée (2026-03-21 13:31 CET)
- `prepare`: `ok`
- manifeste présent
- `kicad-ki` sur `kill-life-ai-native` (`eec5b07179`)
- `freecad-ki` sur `kill-life-ai-native` (`5ea732ef3c`)
- `status`: `ok`
- snapshot canonique mis à jour dans `artifacts/cad-fusion/yiacad-fusion-last-status.md`
- `logs`: `ok`
- linventaire `artifacts/cad-fusion/*` reste lisible via `tools/cad/yiacad_fusion_lot.sh --action logs`
- `clean-logs --days 14`: `ok`
- aucun candidat à purger sur cette passe
- `smoke`: `blocked`
- `CAD stack doctor`: `ok`
- `KiCad MCP host doctor`: `ok`
- `KiCad MCP host smoke`: `blocked`
- `FreeCAD MCP smoke`: `ready`
- `OpenSCAD MCP smoke`: `ready`
- blocage observé:
- la lane `mascarade-main` ne matérialise pas lentrypoint hôte attendu: `finetune/kicad_mcp_server/dist/index.js`
- le doctor KiCad recadre désormais `REQUESTED_RUNTIME=auto` vers `SELECTED_RUNTIME=container`
- la priorité immédiate est soit de matérialiser cet entrypoint, soit de conserver explicitement le fallback conteneur comme état supporté
- preuves:
- `artifacts/cad-fusion/yiacad-fusion-last.log`
- `artifacts/cad-fusion/yiacad-fusion-last-status.md`
- `artifacts/refonte_tui/refonte_tui_20260321_133030.log`
- `artifacts/refonte_tui/refonte_tui_20260321_133042.log`
## 7) Gouvernance de livraison
- Point d'entrée IA-native:
- lier toute évolution KiCad/FreeCAD aux lots `T-LOT-*` et aux tâches mesh tri-repo.
- Règles minimales:
- aucune écriture directe sur `main` sans lot validé,
- passer par le cockpit TUI (`tools/cockpit/refonte_tui.sh`) pour préflight/log + evidence,
- valider les artefacts CAD avant export (ERC/DRC/BOM/netlist/export).
- Alignement externe:
- maintenir la veille OSS similaire (`docs/OSS_AI_NATIVE_CAD_RESEARCH_2026-03-20.md`) en revue périodique.
- Carte de conformité YiACAD:
- chaque exécution du lot doit produire un statut, un log et le fichier `status` mis à jour.
## 8) Carte opérationnelle IA-native CAD (2026-03-20)
```mermaid
flowchart TD
Docs[docs/CAD_AI_NATIVE_FORK_STRATEGY.md] --> ForkState[tools/cad/ai_native_forks.sh]
ForkState --> Branches[branches kill-life-ai-native]
Branches --> MCPOverlay[tools/hw/run_kicad_mcp.sh / tools/run_freecad_mcp.sh]
MCPOverlay --> HostFirst[tools/hw/cad_stack.sh]
HostFirst --> Preflight[tools/cockpit/mesh_sync_preflight.sh]
Preflight --> LotRouting[tools/cockpit/lot_chain.sh]
LotRouting --> Evidence[artifacts/refonte_tui/*.log + artifacts/cad-fusion/*.log]
Evidence --> RepoPlan[docs/plans/18_plan_enchainement_autonome_des_lots_utiles.md]
RepoPlan --> ReadmeGate[tools/doc/readme_repo_coherence.sh]
RepoPlan --> Revue[docs/OSS_AI_NATIVE_CAD_RESEARCH_2026-03-20.md]
```
## 9) Rappels de conformité
- `constraints.yaml` reste source de vérité pour les choix doutils.
- Les gates hardware (`ERC/DRC/netlist/BOM`) restent obligatoires pour les artefacts exportés vers `Kill_LIFE`.
- Aucune modification de source upstream nest poussée sans branche dédiée et revue.
## 10) Delta 2026-03-21 - etat reel `yiacad-fusion`
- le write-set `Kill_LIFE` du lot est maintenant proprement cadre:
- `tools/cad/yiacad_fusion_lot.sh`
- `tools/cockpit/refonte_tui.sh`
- `tools/cockpit/render_weekly_refonte_summary.sh`
- ce document de strategie
- l'hygiene locale est alignee:
- `refonte_tui.sh` propage maintenant `--days` vers `yiacad-fusion:clean-logs`
- la synthese hebdomadaire distingue explicitement le blocage externe du repo local
- le blocage dur restant reste externe a `Kill_LIFE`:
- `mascarade-main/finetune/kicad_mcp_server/dist/index.js` n'est pas materialise
- tant que cet entrypoint hote manque, `KiCad MCP host smoke` reste `blocked`
- consequence operatoire:
- `yiacad-fusion` peut etre clos comme lot `implémenté/documenté`, mais ne doit pas etre promu comme lane `ready` sans soit materialisation de cet entrypoint, soit decision explicite d'accepter le fallback conteneur comme etat supporte.