1 Commits

Author SHA1 Message Date
Clément SAILLANT c2addfd81d feat(hw): add schops tool for schematic operations and kicad-cli integration
- Introduced `kicad_cli.sh` for local and Docker-based kicad-cli execution.
- Created `schops.py` for schematic operations including ERC, BOM, netlist exports, and bulk edits.
- Added README.md for schops with installation and usage instructions.
- Included requirements.txt for necessary Python packages.
- Implemented rules engine for applying field defaults and renaming nets.
- Added tests for rules engine functionality.
- Introduced scope guard script to enforce file modification policies based on PR labels.
- Created watch script to monitor KiCad files and trigger hardware gate on changes.
2026-02-18 23:47:56 +01:00
1200 changed files with 570 additions and 170019 deletions
-16
View File
@@ -1,16 +0,0 @@
{
"permissions": {
"allow": [
"WebFetch(domain:github.com)",
"Bash(git submodule:*)",
"WebFetch(domain:api.github.com)",
"Bash(make aperant-status:*)",
"Bash(make aperant-install:*)",
"Bash(make aperant-build:*)",
"Bash(make aperant-test:*)",
"Bash(./tools/run_knowledge_base_mcp.sh --doctor)",
"Bash(./tools/run_github_dispatch_mcp.sh --doctor)",
"Bash(./tools/hw/run_kicad_mcp.sh --doctor)"
]
}
}
-17
View File
@@ -1,17 +0,0 @@
__pycache__
*.pyc
.git
.ops
node_modules
*.egg-info
agents
specs
tools
hardware
firmware
docs
web
zeroclaw
KIKIFOU
.github
tests
-23
View File
@@ -1,23 +0,0 @@
# Kill_LIFE — Environment variables
# Copy to .env and adjust values for your setup.
# Mascarade integration (LLM router / agent execution)
MASCARADE_CORE_URL=http://localhost:8100
MASCARADE_API_URL=http://localhost:8000
MASCARADE_API_KEY=
MASCARADE_MCP_URL=http://localhost:8100/mcp
# P2P mesh bootstrap node
P2P_BOOTSTRAP=localhost:4002
# Worker config
KILL_LIFE_API_URL=http://localhost:8200
WORKER_POLL_INTERVAL=10
# MCP servers (optional)
APIFY_API_KEY=
HUGGINGFACE_API_KEY=
# CI/CD (optional)
WOKWI_CLI_TOKEN=
KILL_LIFE_ENV=development
-22
View File
@@ -1,22 +0,0 @@
# CODEOWNERS — Require review on sensitive paths
# See: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
# Security policies and tools
/tools/security/ @electron
/docs/security/ @electron
/tools/scope_guard.py @electron
/tools/scope_policy.py @electron
# CI/CD workflows
/.github/workflows/ @electron
/.github/CODEOWNERS @electron
# Compliance
/compliance/ @electron
/tools/compliance/ @electron
# AI agent configuration
/tools/ai/ @electron
# Core tooling
/Makefile @electron
@@ -1,80 +0,0 @@
name: Compliance - QA / Release
description: Validation, evidence pack, release reproductible et durcissement.
title: "[compliance] "
labels:
- needs:triage
- type:compliance
body:
- type: markdown
attributes:
value: |
Utilise ce template pour un lot compliance, QA ou release.
Triage attendu apres creation :
- ajouter `prio:*`, `risk:*` et `scope:*`
- choisir ensuite `ai:plan`, `ai:qa` ou `ai:docs` selon la phase
- type: textarea
id: compliance_goal
attributes:
label: Objectif de validation ou de release
description: Quel gate, quel profil ou quelle release doit etre fiabilise ?
placeholder: "Profil conformite, matrice de tests, evidence pack, versioning, release..."
validations:
required: true
- type: textarea
id: checks
attributes:
label: Checks et preuves attendus
description: Status checks, tests, artefacts, evidence pack, notes de release.
placeholder: "CI, test matrix, bins, exports, rapports, route parity..."
validations:
required: true
- type: textarea
id: constraints
attributes:
label: Contraintes et risques
placeholder: "Fenetre de release, exigences qualite, compatibilite, risques connus..."
- type: dropdown
id: urgency
attributes:
label: Priorite souhaitee
options:
- p0
- p1
- p2
- p3
validations:
required: true
- type: dropdown
id: risk
attributes:
label: Risque estime
options:
- low
- med
- high
validations:
required: true
- type: checkboxes
id: scopes
attributes:
label: Scopes concernes
description: Coche les labels `scope:*` a ajouter au triage.
options:
- label: ci
- label: docs
- label: firmware
- label: hardware
- label: content
- type: dropdown
id: next_ai
attributes:
label: Etape d'automation la plus probable
options:
- ai:plan
- ai:qa
- ai:docs
- ai:impl
- ai:hold
validations:
required: true
-8
View File
@@ -1,8 +0,0 @@
blank_issues_enabled: false
contact_links:
- name: Runbook operateur
url: https://github.com/electron-rare/Kill_LIFE/blob/main/RUNBOOK.md
about: Relire le flux de triage, les labels ai:* et les gates avant d'ouvrir une issue.
- name: Workflows metier
url: https://github.com/electron-rare/Kill_LIFE/blob/main/docs/workflows/README.md
about: Choisir le template le plus proche du lot a lancer.
@@ -1,85 +0,0 @@
name: Cabinet - Intake / Cadrage
description: Transformer une demande floue en decision, spec, plan et backlog actionnables.
title: "[consulting] "
labels:
- needs:triage
- type:consulting
body:
- type: markdown
attributes:
value: |
Utilise ce template pour le cadrage, le diagnostic et l'arbitrage.
Triage attendu apres creation :
- ajouter `prio:*`, `risk:*` et `scope:*`
- choisir ensuite un seul label `ai:*` pour la phase suivante
- type: textarea
id: problem
attributes:
label: Probleme a resoudre
description: Quel probleme concret faut-il traiter et pour qui ?
placeholder: "Probleme, symptomes observes, impacts metier ou techniques."
validations:
required: true
- type: textarea
id: outcomes
attributes:
label: Resultats attendus
description: Quels livrables ou decisions doivent sortir de ce lot ?
placeholder: "Decision, spec RFC2119, ADR, roadmap, backlog, evidence pack..."
validations:
required: true
- type: textarea
id: constraints
attributes:
label: Contraintes et hypotheses
description: Delai, budget, compliance, supply, limites techniques, hypotheses.
placeholder: "Contraintes du lot et hypotheses deja connues."
- type: dropdown
id: urgency
attributes:
label: Priorite souhaitee
options:
- p0
- p1
- p2
- p3
validations:
required: true
- type: dropdown
id: risk
attributes:
label: Risque estime
options:
- low
- med
- high
validations:
required: true
- type: checkboxes
id: scopes
attributes:
label: Scopes concernes
description: Coche les zones a traduire ensuite en labels `scope:*`.
options:
- label: hardware
- label: firmware
- label: docs
- label: ux
- label: content
- label: ci
- type: dropdown
id: next_ai
attributes:
label: Etape d'automation la plus probable
description: Indication pour le triage humain.
options:
- ai:spec
- ai:plan
- ai:tasks
- ai:impl
- ai:qa
- ai:docs
- ai:hold
validations:
required: true
@@ -1,80 +0,0 @@
name: Creatif - Narration / Contenu
description: Narration, scripts, assets et integration versionnee.
title: "[creative] "
labels:
- needs:triage
- type:creative
body:
- type: markdown
attributes:
value: |
Utilise ce template pour un lot narration, contenu ou assets.
Triage attendu apres creation :
- ajouter `prio:*`, `risk:*` et `scope:*`
- choisir ensuite `ai:spec`, `ai:plan`, `ai:impl`, `ai:docs` ou `ai:qa`
- type: textarea
id: narrative
attributes:
label: Intention creative
description: Quelle experience narrative ou contenu faut-il produire ?
placeholder: "Univers, ton, scenes, triggers, contenu audio/texte, contraintes de production..."
validations:
required: true
- type: textarea
id: assets
attributes:
label: Assets et formats
description: Quels assets doivent etre crees ou mis a jour, et sous quel format ?
placeholder: "Scripts, manifests, mp3, langues, checksums, placeholders..."
- type: textarea
id: deliverables
attributes:
label: Livrables attendus
placeholder: "Bible, graph de scenes, assets, guide d'integration, checks..."
validations:
required: true
- type: dropdown
id: urgency
attributes:
label: Priorite souhaitee
options:
- p0
- p1
- p2
- p3
validations:
required: true
- type: dropdown
id: risk
attributes:
label: Risque estime
options:
- low
- med
- high
validations:
required: true
- type: checkboxes
id: scopes
attributes:
label: Scopes concernes
description: Coche les labels `scope:*` a ajouter au triage.
options:
- label: content
- label: docs
- label: ux
- label: firmware
- type: dropdown
id: next_ai
attributes:
label: Etape d'automation la plus probable
options:
- ai:spec
- ai:plan
- ai:impl
- ai:docs
- ai:qa
- ai:hold
validations:
required: true
-81
View File
@@ -1,81 +0,0 @@
name: Design produit - UX / UI
description: Experience utilisateur, etats, contraintes physiques et handoff.
title: "[design] "
labels:
- needs:triage
- type:design
body:
- type: markdown
attributes:
value: |
Utilise ce template pour un lot UX/UI ou handoff produit.
Triage attendu apres creation :
- ajouter `prio:*`, `risk:*` et `scope:*`
- choisir ensuite `ai:spec`, `ai:plan`, `ai:docs` ou `ai:impl` selon le stade
- type: textarea
id: user_flow
attributes:
label: Parcours ou probleme UX
description: Quelle experience faut-il definir, corriger ou rendre robuste ?
placeholder: "Personas, contexte d'usage, point de friction, ecran/boutons, offline, erreurs..."
validations:
required: true
- type: textarea
id: constraints
attributes:
label: Contraintes produit
description: Contraintes hardware, accessibilite, latence, feedback, ecran, mapping inputs.
placeholder: "Taille ecran, boutons, leds, audio, states critiques..."
- type: textarea
id: deliverables
attributes:
label: Livrables attendus
placeholder: "Spec UX, directions, matrice d'etats, prototype, guidelines, handoff..."
validations:
required: true
- type: dropdown
id: urgency
attributes:
label: Priorite souhaitee
options:
- p0
- p1
- p2
- p3
validations:
required: true
- type: dropdown
id: risk
attributes:
label: Risque estime
options:
- low
- med
- high
validations:
required: true
- type: checkboxes
id: scopes
attributes:
label: Scopes concernes
description: Coche les labels `scope:*` a ajouter au triage.
options:
- label: ux
- label: docs
- label: firmware
- label: hardware
- label: content
- type: dropdown
id: next_ai
attributes:
label: Etape d'automation la plus probable
options:
- ai:spec
- ai:plan
- ai:docs
- ai:impl
- ai:qa
- ai:hold
validations:
required: true
-83
View File
@@ -1,83 +0,0 @@
name: R&D - Spike time-boxe
description: Protocole de mesure, prototype minimal, rapport et decision.
title: "[spike] "
labels:
- needs:triage
- type:spike
body:
- type: markdown
attributes:
value: |
Utilise ce template pour un spike time-boxe.
Triage attendu apres creation :
- ajouter `prio:*`, `risk:*` et `scope:*`
- choisir ensuite `ai:plan`, `ai:impl`, puis `ai:docs` pour la decision
- type: textarea
id: question
attributes:
label: Question a trancher
description: Quel apprentissage doit sortir de ce spike ?
placeholder: "Hypothese a tester, metrique cible, decision attendue."
validations:
required: true
- type: textarea
id: protocol
attributes:
label: Protocole et timebox
description: Methode de mesure, instrumentation, criteres d'arret et timebox.
placeholder: "Mesures, jeux de donnees, instrumentation, duree max..."
validations:
required: true
- type: textarea
id: exit_criteria
attributes:
label: Sortie attendue
placeholder: "Rapport, logs, recommandation industrialiser / re-spike / abandon..."
validations:
required: true
- type: dropdown
id: urgency
attributes:
label: Priorite souhaitee
options:
- p0
- p1
- p2
- p3
validations:
required: true
- type: dropdown
id: risk
attributes:
label: Risque estime
options:
- low
- med
- high
validations:
required: true
- type: checkboxes
id: scopes
attributes:
label: Scopes concernes
description: Coche les labels `scope:*` a ajouter au triage.
options:
- label: docs
- label: firmware
- label: hardware
- label: ci
- label: ux
- label: content
- type: dropdown
id: next_ai
attributes:
label: Etape d'automation la plus probable
options:
- ai:plan
- ai:impl
- ai:docs
- ai:qa
- ai:hold
validations:
required: true
@@ -1,81 +0,0 @@
name: Bureau d'etudes - Ingenierie systeme
description: Architecture HW/FW, interfaces, budgets, validation et backlog.
title: "[systems] "
labels:
- needs:triage
- type:systems
body:
- type: markdown
attributes:
value: |
Utilise ce template pour un lot d'ingenierie systeme.
Triage attendu apres creation :
- ajouter `prio:*`, `risk:*` et `scope:*`
- passer ensuite par `ai:spec`, `ai:plan`, `ai:tasks`, puis `ai:impl` / `ai:qa` selon le lot
- type: textarea
id: requirement
attributes:
label: Besoin systeme
description: Quel systeme ou sous-systeme faut-il concevoir, corriger ou faire evoluer ?
placeholder: "Contexte, interfaces attendues, cibles HW/FW, symptomes ou objectifs."
validations:
required: true
- type: textarea
id: interfaces
attributes:
label: Interfaces et contraintes
description: Protocoles, budgets, modes de panne, exigences de validation.
placeholder: "Bus, alim, radio, timing, memoire, power, HIL, endurance..."
- type: textarea
id: deliverables
attributes:
label: Livrables attendus
placeholder: "Spec, architecture, ADR, matrice de validation, backlog, PR d'impl..."
validations:
required: true
- type: dropdown
id: urgency
attributes:
label: Priorite souhaitee
options:
- p0
- p1
- p2
- p3
validations:
required: true
- type: dropdown
id: risk
attributes:
label: Risque estime
options:
- low
- med
- high
validations:
required: true
- type: checkboxes
id: scopes
attributes:
label: Scopes concernes
description: Coche les labels `scope:*` a ajouter au triage.
options:
- label: hardware
- label: firmware
- label: docs
- label: ci
- type: dropdown
id: next_ai
attributes:
label: Etape d'automation la plus probable
options:
- ai:spec
- ai:plan
- ai:tasks
- ai:impl
- ai:qa
- ai:docs
- ai:hold
validations:
required: true
-14
View File
@@ -1,14 +0,0 @@
# Arch-Mesh
Canonical runtime/doc agent for architecture, ADRs, and contract boundaries.
## Runtime contract
- owner_agent: `Arch-Mesh`
- subagents: `Contract-Guard`, `Mesh-Contracts`
- gate: `bmad/gates/gate_s0.md`
- handoff: `specs/contracts/agent_handoff.schema.json`
## Plan
1. Reconcile specs and constraints.
2. Keep interfaces versioned and explicit.
3. Publish architecture rationale with evidence.
-14
View File
@@ -1,14 +0,0 @@
# Docs-Research
Canonical runtime/doc agent for documentation, research, and agent catalog references.
## Runtime contract
- owner_agent: `Docs-Research`
- subagents: `Doc-Entry`, `Plan-Recorder`, `Agent-Catalog`
- gate: `bmad/gates/gate_s0.md`
- handoff: `specs/contracts/agent_handoff.schema.json`
## Plan
1. Refresh canonical entry points and docs.
2. Keep plan memory and research coherent.
3. Attach evidence links to operator-facing docs.
-14
View File
@@ -1,14 +0,0 @@
# Embedded-CAD
Canonical runtime/doc agent for CAD tooling, hardware assets, and fabrication-facing lanes.
## Runtime contract
- owner_agent: `Embedded-CAD`
- subagents: `CAD-Bridge`, `HW-BOM`, `CAD-Fusion`
- gates: `bmad/gates/gate_s0.md`, `bmad/gates/gate_s1.md`
- handoff: `specs/contracts/agent_handoff.schema.json`
## Plan
1. Keep CAD and hardware lanes coherent.
2. Emit fabrication evidence and degraded reasons.
3. Use subagents only as metadata for the active lane.
-14
View File
@@ -1,14 +0,0 @@
# Firmware
Canonical runtime/doc agent for embedded firmware and PlatformIO evidence.
## Runtime contract
- owner_agent: `Firmware`
- subagents: `FW-Build`
- gate: `bmad/gates/gate_s1.md`
- handoff: `specs/contracts/operator_lane_evidence.schema.json`
## Plan
1. Keep embedded code and tests reproducible.
2. Publish build/test evidence.
3. Escalate blockers through explicit degraded reasons.
-14
View File
@@ -1,14 +0,0 @@
# KillLife-Bridge
Canonical runtime/doc agent for cross-repo bridge contracts, continuity memory, and bridge artifacts.
## Runtime contract
- owner_agent: `KillLife-Bridge`
- subagents: `Schema-Consumer`, `Artifact-Curator`
- gate: `bmad/gates/gate_s0.md`
- handoff: `specs/contracts/agent_handoff.schema.json`
## Plan
1. Translate shared contracts into bridge-safe outputs.
2. Maintain continuity memory and handoff artifacts.
3. Keep bridge responses explicit and restart-friendly.
-14
View File
@@ -1,14 +0,0 @@
# PM-Mesh
Canonical runtime/doc agent for planning, prioritization, and mesh governance.
## Runtime contract
- owner_agent: `PM-Mesh`
- subagents: `Plan-Orchestrator`, `Intake-Guard`, `Todo-Tracker`
- gate: `bmad/gates/gate_s0.md`
- handoff: `specs/contracts/agent_handoff.schema.json`
## Plan
1. Clarify the lot, write set, dependencies, and evidence.
2. Update plans/tasks inside the assigned scope.
3. Emit a handoff with explicit owner metadata.
-14
View File
@@ -1,14 +0,0 @@
# QA-Compliance
Canonical runtime/doc agent for tests, compliance gates, and release evidence.
## Runtime contract
- owner_agent: `QA-Compliance`
- subagents: `Constraint-Gate`, `Contract-Tests`, `Release-Gates`
- gates: `bmad/gates/gate_s0.md`, `bmad/gates/gate_s1.md`
- handoff: `specs/contracts/operator_lane_evidence.schema.json`
## Plan
1. Validate contracts, tests, and evidence.
2. Guard schema and release drift.
3. Keep failures explicit and reproducible.
-14
View File
@@ -1,14 +0,0 @@
# Runtime-Companion
Canonical runtime/doc agent for runtime AI, MCP alignment, and provider bridges.
## Runtime contract
- owner_agent: `Runtime-Companion`
- subagents: `MCP-Health`, `Provider-Bridge`, `Runtime-Guard`
- gate: `bmad/gates/gate_s0.md`
- handoff: `specs/contracts/agent_handoff.schema.json`
## Plan
1. Stabilize runtime and provider routing.
2. Keep degraded-safe operator summaries.
3. Publish recovery evidence with each change.
-14
View File
@@ -1,14 +0,0 @@
# Schema-Guard
Canonical runtime/doc agent for schemas, machine-readable contracts, and strict validation.
## Runtime contract
- owner_agent: `Schema-Guard`
- subagents: `Handoff-Schema`, `Evidence-Schema`
- gate: `bmad/gates/gate_s0.md`
- handoff: `specs/contracts/workflow_handshake.schema.json`
## Plan
1. Keep schemas and examples in sync.
2. Fail on drift before consumers break.
3. Publish validation evidence with each contract change.
-14
View File
@@ -1,14 +0,0 @@
# SyncOps
Canonical runtime/doc agent for cockpit scripts, logs, SSH convergence, and operator lanes.
## Runtime contract
- owner_agent: `SyncOps`
- subagents: `TUI-Ops`, `Log-Ops`, `Ops-Governor`
- gate: `bmad/gates/gate_s0.md`
- handoff: `specs/contracts/operator_lane_evidence.schema.json`
## Plan
1. Keep short operator paths stable.
2. Publish handoffs, logs, and summaries.
3. Prefer degraded-safe behavior over silent failure.
-14
View File
@@ -1,14 +0,0 @@
# UX-Lead
Canonical runtime/doc agent for YiACAD UI/UX direction.
## Runtime contract
- owner_agent: `UX-Lead`
- subagents: `Apple-HIG`, `CAD-UX`
- gate: `bmad/gates/gate_s0.md`
- handoff: `specs/contracts/agent_handoff.schema.json`
## Plan
1. Convert product constraints into UI/UX decisions.
2. Keep UX guidance aligned with canonical specs.
3. Publish rationale and evidence without stealing execution ownership.
-14
View File
@@ -1,14 +0,0 @@
# Web-CAD-Platform
Canonical runtime/doc agent for the YiACAD web product and its queue/realtime/read-model surfaces.
## Runtime contract
- owner_agent: `Web-CAD-Platform`
- subagents: `Project-Service`, `EDA-CI-Orchestrator`, `Realtime-Collab`
- gate: `bmad/gates/gate_s0.md`
- handoff: `specs/contracts/summary_short.schema.json`
## Plan
1. Keep project state, queueing, and realtime aligned.
2. Preserve review-first product boundaries.
3. Publish web evidence and contract-safe metadata.
-71
View File
@@ -1,71 +0,0 @@
# Kill_LIFE Workspace Instructions
## Scope
Kill_LIFE is the control plane repo for spec-first governance, cockpit operations, runtime/MCP health, YiACAD web/CAD integration, firmware, and hardware evidence.
Use these instructions for all work in this repository.
## Canonical Entry Points
- Product and consolidation context: `README.md`
- Operator navigation: `docs/index.md`
- Build, test, and architecture reference: `CLAUDE.md`
- Runbooks: `RUNBOOK.md` and `docs/RUNBOOK.md`
- Spec-first source of truth: `specs/README.md`
- Cockpit and TUI entry points: `tools/cockpit/README.md`
## Build And Test
Prefer the repo commands already documented in `CLAUDE.md`. Default validation commands are:
- `bash tools/bootstrap_python_env.sh`
- `bash tools/test_python.sh --suite stable`
- `python3 tools/validate_specs.py --strict`
- `ruff check .`
Use domain-specific commands when relevant:
- Web: `cd web && npm install`, `cd web && npm run build`, `cd web && npx playwright test`
- Firmware: `cd firmware && pio run -e esp32s3_waveshare`, `cd firmware && pio test -e native`
- Hardware: `make hw SCHEM=hardware/esp32_minimal/esp32_minimal.kicad_sch`, `bash tools/hw/hw_export.sh`
- Runtime and cockpit: `bash tools/cockpit/runtime_ai_gateway.sh --action status --refresh --json`
## Architecture
Key boundaries:
- `specs/` is the source of truth: `00_intake -> 01_spec -> 02_arch -> 03_plan -> 04_tasks`
- `kill_life/` contains the Python control-plane and server logic
- `tools/cockpit/` is the canonical operator and runtime surface
- `web/` is the YiACAD Next.js frontend and worker surface
- `firmware/` is the PlatformIO firmware project
- `hardware/` contains KiCad schematics and manufacturing sources
- `specs/contracts/` defines runtime and artifact contracts that consumers rely on
## Conventions
- Specs and docs are mostly French; code and comments stay in English.
- Preserve the existing `ready`, `degraded`, `blocked` status discipline when touching runtime, cockpit, or evidence outputs.
- Keep artifact paths stable and consumable by operators; prefer `artifacts/` and `docs/evidence/`.
- When behavior changes, check whether related specs, contracts, examples, and runbooks also need updates.
- Prefer link-out to existing docs instead of duplicating long operational guidance in code comments or instructions.
## Common Pitfalls
- This repo may already be dirty; do not revert unrelated user changes.
- Many workflows depend on generated JSON or evidence artifacts; avoid changing field names or paths casually.
- The web, CAD, and cockpit surfaces share contracts indirectly through `specs/contracts/`; validate those links before closing a task.
- For execution-heavy tasks, prefer explicit `--json` outputs and operator-facing evidence.
## Area-Specific Guidance
Use the specialized instruction files when your change touches those areas:
- `.github/instructions/web.instructions.md` for `web/`
- `.github/instructions/firmware.instructions.md` for `firmware/`
- `.github/instructions/cad.instructions.md` for CAD and hardware tooling
- `.github/instructions/ops.instructions.md` for cockpit, evidence, and workflows
## Review Default
Unless explicitly asked to implement, default to a review mindset in this workspace: focus on behavioral regressions, contract drift, runtime risks, security issues, and missing tests.
@@ -1,42 +0,0 @@
---
description: "Use when running autonomous execution workflows, operator runbooks, cockpit commands, runtime diagnosis, or evidence generation in Kill_LIFE. Focuses on action order, safety checks, and prioritized command paths."
name: "Autonomous Execution"
---
# Autonomous Execution - Runbook First
## Intent
Use this instruction for execution-heavy requests (operate, verify, recover, produce evidence), not for pure code review.
## Preferred Execution Order
1. Read current runtime state first.
2. Execute the smallest high-signal command chain.
3. Verify expected artifacts and status output.
4. Only then widen scope to secondary lanes.
## Priority Commands
- Runtime health and routing:
- `bash tools/cockpit/runtime_ai_gateway.sh --action status --refresh --json`
- YiACAD operator entry:
- `bash tools/cockpit/yiacad_operator_index.sh --action status --json`
- Backend/UIUX lane:
- `bash tools/cockpit/yiacad_uiux_tui.sh --action status --json`
- `bash tools/cockpit/yiacad_backend_proof.sh --action status --json`
- CI/spec integrity:
- `python3 tools/validate_specs.py --strict`
- `bash tools/test_python.sh --suite stable`
## Safety Rules
- Never use destructive git commands unless explicitly requested.
- Preserve unrelated user changes.
- Prefer idempotent commands and explicit `--json` outputs.
- Record evidence/log outputs in `artifacts/` and link them in summaries.
## Completion Criteria
- Report: current status, blockers, and exact failing lane.
- Provide: next executable command(s) in priority order.
- Confirm: produced artifact/log paths.
-27
View File
@@ -1,27 +0,0 @@
---
description: "Use when working on YiACAD CAD lanes, KiCad/FreeCAD integrations, backend CAD actions, manufacturing exports, or CAD MCP/runtime scripts."
name: "CAD Domain"
applyTo: ["tools/cad/**", "tools/hw/**", "hardware/**", "specs/yiacad*", "specs/contracts/yiacad*"]
---
# CAD Domain Instructions
## Product Boundary
- Treat YiACAD as product shell.
- Treat KiCad/FreeCAD/KiBot/KiAuto as integrated engines behind backend actions.
## Preferred Paths
- Service-first: `tools/cad/yiacad_backend_service.py` and `tools/cad/yiacad_backend_client.py`.
- Keep outputs normalized through `context.json` and `uiux_output.json`.
## Verify With
- `python3 tools/cad/yiacad_backend_client.py --json-output status`
- `python3 tools/cad/yiacad_native_ops.py status --json-output`
- `python3 tools/validate_specs.py --strict`
## Guardrails
- Do not bypass backend boundary from UI/plugin/worker flows.
- Keep `engine_status` and `degraded_reasons` coherent across contracts and examples.
@@ -1,23 +0,0 @@
---
description: "Use when modifying or validating firmware workflows, PlatformIO targets, firmware tests, or hardware-in-the-loop checks in Kill_LIFE."
name: "Firmware Domain"
applyTo: "firmware/**"
---
# Firmware Domain Instructions
## Focus
- Keep changes scoped to firmware behavior and platform targets.
- Respect existing PlatformIO environments and test harness conventions.
## Verify With
- `cd firmware && pio run -e esp32s3_waveshare`
- `cd firmware && pio test -e native`
- `bash tools/test_python.sh --suite stable` when contracts or tooling are impacted.
## Review/Change Guardrails
- Avoid cross-domain refactors from firmware files.
- Preserve CI assumptions used by `.github/workflows/ci.yml`.
- If behavior changes, update related specs/tasks under `specs/`.
-23
View File
@@ -1,23 +0,0 @@
---
description: "Use when operating cockpit scripts, runtime gateways, evidence packs, incident briefs, weekly summaries, or operational runbooks in Kill_LIFE."
name: "Ops Domain"
applyTo: ["tools/cockpit/**", "artifacts/**", "docs/evidence/**", ".github/workflows/**"]
---
# Ops Domain Instructions
## Focus
- Prefer operational observability over assumptions.
- Keep outputs machine-readable (`--json`) and operator-readable (short markdown digest).
## Priority Commands
- `bash tools/cockpit/runtime_ai_gateway.sh --action status --refresh --json`
- `bash tools/cockpit/render_weekly_refonte_summary.sh`
- `bash tools/cockpit/render_mascarade_incident_brief.sh`
## Guardrails
- Never drop evidence artifacts silently.
- Keep CI/workflow naming and artifact naming stable when possible.
- On degraded states, always provide next executable remediation steps.
-23
View File
@@ -1,23 +0,0 @@
---
description: "Use when changing YiACAD web frontend, GraphQL schema/client, workers, realtime, PR review surfaces, or queue orchestration under web/."
name: "Web Domain"
applyTo: "web/**"
---
# Web Domain Instructions
## Focus
- Preserve compatibility between GraphQL schema, client queries, and UI types.
- Keep worker outputs aligned with backend normalized payloads.
## Verify With
- `cd web && npm ci`
- `cd web && npm run build`
- Run relevant contract tests in `test/test_yiacad_web_*`.
## Guardrails
- Do not hardcode fallback assumptions that hide missing runtime configuration.
- Maintain explicit status and summary surfaces for CI/review cards.
- Keep artifact paths and evidence links consumable by operators.
-60
View File
@@ -1,60 +0,0 @@
---
name: eurekaG1Questions
description: Wizard Step 1 — génère un formulaire à remplir (aucun plan).
argument-hint: Décris lidée en 15 lignes.
---
RÈGLE ABSOLUE : tu DOIS répondre avec UNIQUEMENT le formulaire ci-dessous, et RIEN dautre.
- Pas dexplication
- Pas de plan
- Pas de recommandations
- Pas d’étapes
- Pas de code
Remplis le formulaire avec des champs vides + suggestions de choix.
# FORMULAIRE G1 (À REMPLIR)
## 1) Objectif & succès (MUST)
- Objectif principal :
- Comment sait-on que cest réussi ? (mesurable) :
## 2) Cible & contexte
- Cible principale : (A) ESP32 (B) STM32 (C) Linux embarqué (D) multi-target
- Environnement : (A) prototype (B) produit (C) industriel (D) autre :
- Contraintes temps/budget : (optionnel)
## 3) Scope
- IN (dans le périmètre) :
- OUT (hors périmètre) :
## 4) Interfaces & IO
- Interfaces : (A) UART (B) I2C (C) SPI (D) WiFi (E) BLE (F) USB (G) autre
- Capteurs/actuateurs concernés : (optionnel)
## 5) Contraintes non-fonctionnelles (NFR)
- Conso (sleep/wake) :
- Latence :
- Mémoire :
- Robustesse / watchdog / logs :
## 6) Conformité / sécurité
- Profil compliance : (A) EU WiFi/Radio (B) CE/EMC (C) LVD (D) autre (E) inconnu
- Exigences sécurité : (optionnel)
## 7) Tests & validation
- Tests requis : (A) unit (native) (B) integration (C) HIL (D) manuels
- Evidence pack attendu :
## 8) Risques & dépendances
- Risques :
- Dépendances (libs, HW, deadlines) :
## 9) Livrables
- Livrables attendus : (A) spec (B) arch (C) firmware (D) hw (E) docs (F) assets
## 10) Phasage
- Étapes : (A) spike (B) V0 proto (C) V1 (D) release
- Date cible / jalons : (optionnel)
# FIN FORMULAIRE
@@ -1,37 +0,0 @@
---
name: eurekaG1Generate
description: Wizard Step 2 — génère intake/spec/plan/tasks/roadmap à partir du formulaire rempli.
argument-hint: Colle le formulaire rempli.
---
Tu reçois un FORMULAIRE G1 rempli. Ta tâche : générer les livrables, sans inventer.
- Si info manquante : écrire [ASSUMPTION] + proposer 1 question de clarification max (optionnel).
- Respect RFC2119 dans la spec (MUST/SHOULD/MAY).
- Output = contenu “prêt à coller” dans chaque fichier.
Génère :
1) specs/00_intake.md
2) specs/01_spec.md (RFC2119 + AC)
3) specs/03_plan.md (plan ≤ 15 lignes + risques + mitigations + gates + evidence pack)
4) specs/04_tasks.md (checklist exécutable)
5) specs/05_roadmap_hw_fw.md (jalons HW/FW synchronisés)
6) Next actions (37 actions concrètes)
FORMAT STRICT :
## FILE: specs/00_intake.md
<markdown>
## FILE: specs/01_spec.md
<markdown>
## FILE: specs/03_plan.md
<markdown>
## FILE: specs/04_tasks.md
<markdown>
## FILE: specs/05_roadmap_hw_fw.md
<markdown>
## NEXT ACTIONS
- ...
@@ -1,22 +0,0 @@
# Architect Agent — Template
## Objectif
Produire ou mettre à jour larchitecture (`02_arch.md`), respecter standards, contraintes, versionner interfaces.
## Plan
1. Analyse des specs et contraintes
2. Brainstorming architecture
3. Rédaction ou mise à jour `02_arch.md`
4. Validation gates BMAD
5. Documentation ADR
6. Evidence pack
7. Mise à jour prompts agents
> Voir checklist commune : plan_wizard_agents_coordination.prompt.md pour les étapes partagées (analyse specs, gates, evidence pack, documentation, synchronisation, feedback).
## Extension
- Ajout de diagrammes (UML, block, sequence)
- Checklist de validation architecture
- Liens vers standards et specs
- Section “Risques & alternatives”
- Historique des décisions (ADR)
-21
View File
@@ -1,21 +0,0 @@
# Doc Agent — Template
## Objectif
Maintenir docs, README, guides, FAQ, onboarding.
## Plan
1. Analyse specs, plan, evidence pack
2. Mise à jour docs, guides, FAQ
3. Ajout exemples projet minimal
4. Documentation pipelines/conventions
5. Changelog
6. Onboarding/feedback
7. Release documentation
> Voir checklist commune : plan_wizard_agents_coordination.prompt.md pour les étapes partagées (analyse specs, gates, evidence pack, documentation, synchronisation, feedback).
## Extension
- Table des docs à jour
- Section “Questions fréquentes”
- Liens vers specs, plan, evidence pack
- Historique des releases documentation
@@ -1,21 +0,0 @@
# Firmware Agent — Template
## Objectif
Implémenter le plan firmware, tests Unity, validation, evidence pack.
## Plan
1. Analyse plan/specs
2. Implémentation firmware
3. Ajout/mise à jour tests Unity
4. Validation PlatformIO
5. Evidence pack
6. Documentation commandes
7. Release/versioning
> Voir checklist commune : plan_wizard_agents_coordination.prompt.md pour les étapes partagées (analyse specs, gates, evidence pack, documentation, synchronisation, feedback).
## Extension
- Table de couverture tests
- Section “Erreurs courantes”
- Liens vers specs, plan, evidence pack
- Historique des releases firmware
@@ -1,21 +0,0 @@
# HW Schematic Agent — Template
## Objectif
Bulk edits, design blocks, analyse diff, evidence pack.
## Plan
1. Analyse specs/roadmap
2. Préparation règles bulk edit
3. Orchestration modifications
4. Exports ERC/DRC/BOM/netlist
5. Snapshots avant/après
6. Documentation artefacts
7. Release/versioning
> Voir checklist commune : plan_wizard_agents_coordination.prompt.md pour les étapes partagées (analyse specs, gates, evidence pack, documentation, synchronisation, feedback).
## Extension
- Table des modifications bulk edit
- Section “Risques hardware”
- Liens vers specs, plan, evidence pack
- Historique des releases hardware
-20
View File
@@ -1,20 +0,0 @@
---
name: installProject
description: Démarre linstallation complète du projet Kill_LIFE.
argument-hint: Spécifie options (Docker, hardware, firmware, doc, compliance).
---
Démarre linstallation du projet:
1. Lire README, INSTALL.md
2. Cloner le repo
3. Lancer le script install_kill_life.sh
4. Installer les dépendances (Python, PlatformIO, KiCad, mkdocs, Docker)
5. Initialiser la spec (tools/ai/specify_init.py)
6. Choisir le profil compliance (tools/compliance/use_profile.py)
7. Build & tests firmware (pio run/test)
8. Pipeline hardware (tools/hw/hw_gate.sh, watch_hw.py)
9. Générer la documentation (mkdocs build)
10. Activer Docker si besoin (docker-compose)
11. Vérifier la sécurité OpenClaw
12. Archiver evidence pack
13. Onboarding & feedback
> Voir checklist commune : plan_wizard_agents_coordination.prompt.md
@@ -1,11 +0,0 @@
---
name: planWizardAgenticsUpdate
description: Génère un plan pour mettre à jour les prompts et rituels agentics.
argument-hint: Spécifie les agents, prompts, rituels, gates, evidence pack.
---
Génère un plan structuré pour la mise à jour agentics:
1. Mettre à jour prompts dans agents/
2. Adapter rituels/gates dans bmad/
3. Synchroniser evidence pack et handoffs
4. Documenter les changements
5. Valider la cohérence multi-agent
@@ -1,20 +0,0 @@
---
name: planWizardAgentsCoordination
description: Génère un plan de coordination multi-agent pour éviter la redondance et optimiser les workflows.
argument-hint: Spécifie les agents canoniques, étapes communes, handoffs, evidence et synchronisation.
---
Génère un plan structuré pour la coordination multi-agent en prenant `specs/contracts/kill_life_agent_catalog.json` comme source de vérité.
## Checklist commune
- Charger `docs/GLOBAL_MULTI_AGENT_CHECKLIST.md`
- Vérifier `owner_repo`, `owner_agent`, `write_set`, `status`, `evidence`
- Valider les gates BMAD et les contrats de handoff
- Documenter la preuve et la synchronisation dans les surfaces canoniques
- Garder les sous-agents comme metadata de lane, jamais comme agents publics
## Étapes de coordination
1. Identifier quels agents canoniques parmi `PM-Mesh`, `Arch-Mesh`, `Docs-Research`, `Runtime-Companion`, `QA-Compliance`, `Embedded-CAD`, `Web-CAD-Platform`, `UX-Lead`, `Firmware`, `SyncOps`, `Schema-Guard`, `KillLife-Bridge` participent au lot.
2. Définir un unique owner top-level par write set et reléguer les sous-agents au rôle de metadata.
3. Référencer les handoffs, gates et evidence obligatoires dans le plan.
4. Organiser la synchronisation sans redondance entre docs, prompts, runtime et contrats.
5. Clore avec le validateur de catalogue, les risques restants et la prochaine action.
@@ -1,11 +0,0 @@
---
name: planWizardAgentsManagement
description: Génère un plan pour la gestion des agents.
argument-hint: Spécifie catalogue, prompts, write sets, rituels, gates, handoffs et evidence.
---
Génère un plan structuré pour la gestion des agents en prenant `specs/contracts/kill_life_agent_catalog.json` comme source de vérité.
1. Partir de la liste canonique top-level: `PM-Mesh`, `Arch-Mesh`, `Docs-Research`, `Runtime-Companion`, `QA-Compliance`, `Embedded-CAD`, `Web-CAD-Platform`, `UX-Lead`, `Firmware`, `SyncOps`, `Schema-Guard`, `KillLife-Bridge`.
2. Vérifier la parité entre contrat, `agents/`, `.github/agents/`, prompts `start_*` et `plan_wizard_*`, README et matrice.
3. Référencer `docs/GLOBAL_MULTI_AGENT_CHECKLIST.md` pour les étapes communes, handoffs et preuves.
4. Garder les sous-agents comme metadata de gouvernance, jamais comme agents API publics.
5. Conclure par le validateur à exécuter, les preuves attendues et la prochaine action.
@@ -1,11 +0,0 @@
---
name: planWizardArchMesh
description: Génère un plan canonique pour Arch-Mesh.
argument-hint: Précise les contrats, dépendances, risques et preuves attendues.
---
Génère un plan structuré pour `Arch-Mesh`, aligné sur `specs/contracts/kill_life_agent_catalog.json`.
1. Rappeler la mission, le write set et les sous-agents metadata associés.
2. Identifier préconditions, interfaces publiques, dépendances et risques de compatibilité.
3. Lister les étapes dans l'ordre avec gates, handoffs et preuves de stabilité contractuelle.
4. Vérifier que chaque sortie reste dans le write set canonique.
5. Conclure par la validation attendue, le rollback et la prochaine action.
@@ -1,11 +0,0 @@
---
name: planWizardBrainstorming
description: Génère un plan pour organiser un brainstorming multi-agent.
argument-hint: Spécifie les rôles, besoins, contraintes, intake.
---
Génère un plan structuré pour le brainstorming:
1. Organiser une session multi-agent (PM, Architect, QA, HW, Firmware, Doc)
2. Recueillir idées, besoins, contraintes
3. Documenter dans specs/00_intake.md
4. Identifier les risques et alternatives
5. Préparer la synthèse pour la spec
@@ -1,11 +0,0 @@
---
name: planWizardBulkEditHw
description: Génère un plan pour le bulk edit hardware.
argument-hint: Spécifie bulk edit, exports, snapshots, artefacts.
---
Génère un plan structuré pour le bulk edit hardware:
1. Ouvrir une issue `type:systems` + `scope:hardware`, puis ajouter `ai:plan`
2. Orchestrer bulk edit via tools/hw/schops
3. Exporter ERC/DRC/BOM/netlist, snapshot avant/après
4. Archiver artefacts dans artifacts/hw/
5. Documenter les conventions
@@ -1,11 +0,0 @@
---
name: planWizardCiCd
description: Génère un plan pour lintégration CI/CD.
argument-hint: Spécifie build, tests, compliance, scope guard, evidence pack.
---
Génère un plan structuré pour lintégration CI/CD:
1. Automatiser build/test/compliance via workflows .github/
2. Activer scope guard, evidence pack, labels
3. Documenter dans docs/RUNBOOK.md
4. Valider la reproductibilité
5. Archiver les artefacts CI/CD
@@ -1,11 +0,0 @@
---
name: planWizardComplianceSecurity
description: Génère un plan pour la conformité et la sécurité.
argument-hint: Spécifie profils, scripts, sandbox, anti-prompt injection.
---
Génère un plan structuré pour la conformité & sécurité :
1. Valider profils compliance (compliance/active_profile.yaml)
2. Auditer scripts tools/ pour sécurité
3. Appliquer politique anti-prompt injection, sandbox OpenClaw
4. Documenter les audits
5. Evidence pack sécurité
@@ -1,11 +0,0 @@
---
name: planWizardContributionFeedback
description: Génère un plan pour la contribution et le feedback.
argument-hint: Spécifie issues, profils, standards, feedback.
---
Génère un plan structuré pour la contribution & feedback:
1. Processus pour ouvrir issues, proposer profils, enrichir standards
2. Recueillir feedback via docs/FAQ.md ou issues
3. Documenter la politique de contribution
4. Suivi des contributions
5. Historique des feedbacks
@@ -1,11 +0,0 @@
---
name: planWizardDocOnboarding
description: Génère un plan pour la documentation et lonboarding.
argument-hint: Spécifie docs, guides, FAQ, exemples, README.
---
Génère un plan structuré pour la documentation & onboarding:
1. Mise à jour docs/, README, guides, FAQ
2. Ajout exemples de projet minimal
3. Documentation pipelines et conventions
4. Changelog
5. Onboarding & feedback
@@ -1,11 +0,0 @@
---
name: planWizardDocsResearch
description: Génère un plan canonique pour Docs-Research.
argument-hint: Précise la surface documentaire, les entrées canoniques et les preuves attendues.
---
Génère un plan structuré pour `Docs-Research`, aligné sur `specs/contracts/kill_life_agent_catalog.json`.
1. Rappeler la mission, le write set et les sous-agents metadata associés.
2. Identifier navigation canonique, dépendances documentaires, risques de drift et surfaces miroir.
3. Lister les étapes avec checkpoints de cohérence, evidence et handoffs.
4. Vérifier que chaque sortie reste dans le write set canonique.
5. Conclure par la validation attendue et la prochaine publication.
@@ -1,11 +0,0 @@
---
name: planWizardEmbeddedCad
description: Génère un plan canonique pour Embedded-CAD.
argument-hint: Précise la surface CAD, les outils indisponibles, les preuves et le rollback.
---
Génère un plan structuré pour `Embedded-CAD`, aligné sur `specs/contracts/kill_life_agent_catalog.json`.
1. Rappeler la mission, le write set et les sous-agents metadata associés.
2. Identifier dépendances toolchain, surfaces fabrication, risques degraded-safe et evidence attendue.
3. Lister les étapes avec checks KiCad/FreeCAD, handoffs et preuves.
4. Vérifier que chaque sortie reste dans le write set canonique.
5. Conclure par le rollback, la validation attendue et la prochaine action.
@@ -1,11 +0,0 @@
---
name: planWizardFirmware
description: Génère un plan canonique pour Firmware.
argument-hint: Précise la cible, les tests, les dépendances matérielles et les preuves attendues.
---
Génère un plan structuré pour `Firmware`, aligné sur `specs/contracts/kill_life_agent_catalog.json`.
1. Rappeler la mission, le write set et les sous-agents metadata associés.
2. Identifier cible, dépendances matérielles, risques mémoire ou boot et evidence attendue.
3. Lister les étapes avec build, tests, handoffs et preuves.
4. Vérifier que chaque sortie reste dans le write set canonique.
5. Conclure par la validation attendue, le rollback et la prochaine action.
@@ -1,11 +0,0 @@
---
name: planWizardFirstEntry
description: Génère un plan pour la première entrée dans le projet.
argument-hint: Spécifie les fichiers daccueil, guides, arborescence.
---
Génère un plan structuré pour la première entrée:
1. Lire README, INSTALL.md, FAQ
2. Cloner le repo, lancer le script dinstallation
3. Explorer larborescence, repérer specs, agents, tools, docs
4. Identifier les pipelines et conventions
5. Préparer lonboarding
@@ -1,11 +0,0 @@
---
name: planWizardHwFwRoadmap
description: Génère un plan pour la roadmap hardware/firmware.
argument-hint: Spécifie les étapes, specs, design, tests, validation, release.
---
Génère un plan structuré pour la roadmap hardware/firmware:
1. Analyse des specs et contraintes
2. Définir étapes: analyse → design → tests → validation → release
3. Documenter dans specs/03_plan.md et specs/04_tasks.md
4. Synchroniser hardware/ et firmware/ avec le plan
5. Suivi des gates et evidence pack
@@ -1,11 +0,0 @@
---
name: planWizardKillLifeBridge
description: Génère un plan canonique pour KillLife-Bridge.
argument-hint: Précise le workflow, les producteurs, les consommateurs et les preuves attendues.
---
Génère un plan structuré pour `KillLife-Bridge`, aligné sur `specs/contracts/kill_life_agent_catalog.json`.
1. Rappeler la mission, le write set et les sous-agents metadata associés.
2. Identifier producteurs d'evidence, consommateurs tri-repo, risques de propagation et dépendances.
3. Lister les étapes avec handoffs, validations et artefacts obligatoires.
4. Vérifier que chaque sortie reste dans le write set canonique.
5. Conclure par la validation attendue, le rollback et la prochaine action.
@@ -1,11 +0,0 @@
---
name: planWizardPmMesh
description: Génère un plan canonique pour PM-Mesh.
argument-hint: Précise le lot, les dépendances, les gates et les preuves à produire.
---
Génère un plan structuré pour `PM-Mesh`, aligné sur `specs/contracts/kill_life_agent_catalog.json`.
1. Rappeler la mission, le write set et les sous-agents metadata associés.
2. Identifier préconditions, dépendances, risques et surfaces de handoff.
3. Lister les étapes dans l'ordre avec gates, evidence et validations attendues.
4. Vérifier que chaque sortie reste dans le write set canonique.
5. Conclure par la prochaine action, le rollback et le statut attendu.
@@ -1,11 +0,0 @@
---
name: planWizardQaCompliance
description: Génère un plan canonique pour QA-Compliance.
argument-hint: Précise la gate, les suites ciblées, le contrat et les preuves attendues.
---
Génère un plan structuré pour `QA-Compliance`, aligné sur `specs/contracts/kill_life_agent_catalog.json`.
1. Rappeler la mission, le write set et les sous-agents metadata associés.
2. Identifier suites stables, contrats JSON, risques de régression et preuves attendues.
3. Lister les étapes avec validations, gates et handoffs.
4. Vérifier que chaque sortie reste dans le write set canonique.
5. Conclure par l'état attendu, les écarts restants et la prochaine gate.
@@ -1,11 +0,0 @@
---
name: planWizardReleaseVersioning
description: Génère un plan pour le release et le versioning.
argument-hint: Spécifie process release, tag, changelog, artefacts.
---
Génère un plan structuré pour le release & versioning:
1. Définir process de release (tag, changelog, artefacts)
2. Versionner specs, standards, firmware, hardware
3. Documenter dans docs/ et README
4. Archiver les releases
5. Suivi des versions
@@ -1,11 +0,0 @@
---
name: planWizardRuntimeCompanion
description: Génère un plan canonique pour Runtime-Companion.
argument-hint: Précise la surface runtime, les dépendances externes, la dégradation et les preuves.
---
Génère un plan structuré pour `Runtime-Companion`, aligné sur `specs/contracts/kill_life_agent_catalog.json`.
1. Rappeler la mission, le write set et les sous-agents metadata associés.
2. Identifier dépendances externes, conditions degraded-safe, artefacts et risques de latence ou disponibilité.
3. Lister les étapes avec checks runtime, handoffs et evidence obligatoires.
4. Vérifier que chaque sortie reste dans le write set canonique.
5. Conclure par la validation attendue, le fallback et la prochaine action.
@@ -1,11 +0,0 @@
---
name: planWizardSchemaGuard
description: Génère un plan canonique pour Schema-Guard.
argument-hint: Précise le schéma, les producteurs, les invariants et les preuves attendues.
---
Génère un plan structuré pour `Schema-Guard`, aligné sur `specs/contracts/kill_life_agent_catalog.json`.
1. Rappeler la mission, le write set et les sous-agents metadata associés.
2. Identifier producteurs, consommateurs, invariants cassables et evidence attendue.
3. Lister les étapes avec mises à jour de schéma, validateurs, tests et handoffs.
4. Vérifier que chaque sortie reste dans le write set canonique.
5. Conclure par la validation attendue, la compatibilité et la prochaine action.
@@ -1,11 +0,0 @@
---
name: planWizardSpecification
description: Génère un plan pour rédiger et valider une spécification.
argument-hint: Spécifie les specs, user stories, contraintes, validation.
---
Génère un plan structuré pour la spécification:
1. Rédiger la spec dans specs/01_spec.md
2. Définir user stories, contraintes, architecture
3. Valider la spec via issue avec label ai:spec
4. Synchroniser avec standards et roadmap
5. Archiver la spec validée
@@ -1,11 +0,0 @@
---
name: planWizardSpecsManagement
description: Génère un plan pour la gestion des specs.
argument-hint: Spécifie intake, rédaction, validation, injection dans workflow.
---
Génère un plan structuré pour la gestion des specs:
1. Processus intake → spec → arch → plan → tasks → validation
2. Injecter les specs dans le workflow via tools/ai/
3. Archiver les specs validées
4. Documenter les conventions
5. Suivi des évolutions
@@ -1,11 +0,0 @@
---
name: planWizardSyncOps
description: Génère un plan canonique pour SyncOps.
argument-hint: Précise la lane opératoire, les incidents, les probes et les preuves attendues.
---
Génère un plan structuré pour `SyncOps`, aligné sur `specs/contracts/kill_life_agent_catalog.json`.
1. Rappeler la mission, le write set et les sous-agents metadata associés.
2. Identifier dépendances machines, risques réseau, surfaces logs et evidence attendue.
3. Lister les étapes avec checks TUI, SSH, incident registry et handoffs.
4. Vérifier que chaque sortie reste dans le write set canonique.
5. Conclure par l'état attendu, le rollback et la prochaine action.
@@ -1,11 +0,0 @@
---
name: planWizardTroubleshooting
description: Génère un plan pour le troubleshooting du projet.
argument-hint: Spécifie erreurs build, tests, CI, hardware.
---
Génère un plan structuré pour le troubleshooting:
1. Guide pour résoudre erreurs build, tests, CI, hardware
2. Documenter dans docs/RUNBOOK.md et FAQ.md
3. Ajouter section “erreurs courantes” dans README
4. Archiver les solutions
5. Feedback sur troubleshooting
@@ -1,11 +0,0 @@
---
name: planWizardUxLead
description: Génère un plan canonique pour UX-Lead.
argument-hint: Précise la surface UX, les artefacts, les critères Apple-native et les preuves attendues.
---
Génère un plan structuré pour `UX-Lead`, aligné sur `specs/contracts/kill_life_agent_catalog.json`.
1. Rappeler la mission, le write set et les sous-agents metadata associés.
2. Identifier hypothèses UX, dépendances de shell, risques de cohérence produit et evidence attendue.
3. Lister les étapes avec sorties UI, validation design et handoffs.
4. Vérifier que chaque sortie reste dans le write set canonique.
5. Conclure par la validation attendue, les écarts et la prochaine action.
@@ -1,11 +0,0 @@
---
name: planWizardWebCadPlatform
description: Génère un plan canonique pour Web-CAD-Platform.
argument-hint: Précise la surface Next.js, GraphQL, Yjs, BullMQ ou review concernée.
---
Génère un plan structuré pour `Web-CAD-Platform`, aligné sur `specs/contracts/kill_life_agent_catalog.json`.
1. Rappeler la mission, le write set et les sous-agents metadata associés.
2. Identifier dépendances web, risques de cohérence, latence, queue et evidence attendue.
3. Lister les étapes avec checkpoints API, realtime, worker et handoffs.
4. Vérifier que chaque sortie reste dans le write set canonique.
5. Conclure par la validation attendue, le fallback et la prochaine action.
-21
View File
@@ -1,21 +0,0 @@
# PM Agent — Template
## Objectif
Piloter intake, spec, backlog, risques, synchronisation roadmap.
## Plan
1. Lecture intake, standards, contraintes
2. Brainstorming multi-agent
3. Rédaction/amélioration spec
4. Construction backlog
5. Synchronisation roadmap
6. Suivi gates BMAD
7. Mise à jour plans/prompts
> Voir checklist commune : plan_wizard_agents_coordination.prompt.md pour les étapes partagées (analyse specs, gates, evidence pack, documentation, synchronisation, feedback).
## Extension
- Table de priorisation backlog
- Section “Risques & hypothèses”
- Liens vers specs, standards, evidence pack
- Historique des releases
-21
View File
@@ -1,21 +0,0 @@
# QA Agent — Template
## Objectif
Assurer tests, evidence, gates BMAD, summary report.
## Plan
1. Analyse specs, plan, gates
2. Ajout/validation tests
3. Vérification gates BMAD
4. Génération summary report
5. Evidence pack QA
6. Documentation troubleshooting
7. Feedback/contribution
> Voir checklist commune : plan_wizard_agents_coordination.prompt.md pour les étapes partagées (analyse specs, gates, evidence pack, documentation, synchronisation, feedback).
## Extension
- Table de validation gates/tests
- Section “Erreurs courantes QA”
- Liens vers specs, plan, evidence pack
- Historique des releases QA
-11
View File
@@ -1,11 +0,0 @@
---
name: startArchMesh
description: Lance le workflow canonique Arch-Mesh.
argument-hint: Donne l'interface, le contrat ou la frontière à stabiliser.
---
Lance le workflow canonique `Arch-Mesh` en prenant `specs/contracts/kill_life_agent_catalog.json` comme source de verite.
1. Charger l'entree `Arch-Mesh`, `agents/arch_mesh.md` et les specs ou ADR lies.
2. Confirmer `owner_repo`, `owner_agent`, `write_set_roots`, gates et evidence avant toute modification.
3. Utiliser les sous-agents uniquement comme metadata de lane, jamais comme agents API autonomes.
4. Produire une execution ou un handoff strictement contenu dans le write set declare.
5. Finir avec risques restants, gate suivante et evidence mise a jour.
@@ -1,11 +0,0 @@
---
name: startDocsResearch
description: Lance le workflow canonique Docs-Research.
argument-hint: Donne la surface documentaire, la navigation ou la synthèse à mettre à jour.
---
Lance le workflow canonique `Docs-Research` en prenant `specs/contracts/kill_life_agent_catalog.json` comme source de verite.
1. Charger l'entree `Docs-Research`, `agents/docs_research.md` et les docs d'entree associees.
2. Confirmer `owner_repo`, `owner_agent`, `write_set_roots`, gates et evidence avant toute modification.
3. Utiliser les sous-agents uniquement comme metadata de lane, jamais comme agents API autonomes.
4. Produire une execution ou un handoff strictement contenu dans le write set declare.
5. Finir avec risques restants, gate suivante et evidence mise a jour.
@@ -1,11 +0,0 @@
---
name: startEmbeddedCad
description: Lance le workflow canonique Embedded-CAD.
argument-hint: Donne la lane KiCad, FreeCAD, fabrication ou CAD native à faire avancer.
---
Lance le workflow canonique `Embedded-CAD` en prenant `specs/contracts/kill_life_agent_catalog.json` comme source de verite.
1. Charger l'entree `Embedded-CAD`, `agents/embedded_cad.md` et les surfaces CAD associees.
2. Confirmer `owner_repo`, `owner_agent`, `write_set_roots`, gates et evidence avant toute modification.
3. Utiliser les sous-agents uniquement comme metadata de lane, jamais comme agents API autonomes.
4. Produire une execution ou un handoff strictement contenu dans le write set declare.
5. Finir avec risques restants, gate suivante et evidence mise a jour.
-11
View File
@@ -1,11 +0,0 @@
---
name: startFirmware
description: Lance le workflow canonique Firmware.
argument-hint: Donne la cible PlatformIO, le lot firmware, les tests et les preuves à produire.
---
Lance le workflow canonique `Firmware` en prenant `specs/contracts/kill_life_agent_catalog.json` comme source de verite.
1. Charger l'entree `Firmware`, `agents/firmware.md` et les surfaces firmware associees.
2. Confirmer `owner_repo`, `owner_agent`, `write_set_roots`, gates et evidence avant toute modification.
3. Utiliser les sous-agents uniquement comme metadata de lane, jamais comme agents API autonomes.
4. Produire une execution ou un handoff strictement contenu dans le write set declare.
5. Finir avec risques restants, gate suivante et evidence mise a jour.
@@ -1,14 +0,0 @@
---
name: startFirstProductIdea
description: Démarre le plan pour la première idée produit.
argument-hint: Spécifie intake, besoins, contraintes, brainstorming.
---
Démarre le plan pour la première idée produit:
1. Organiser un brainstorming multi-agent (PM, Architect, QA, HW, Firmware, Doc)
2. Recueillir idées, besoins, contraintes
3. Documenter dans specs/00_intake.md
4. Identifier les risques et alternatives
5. Préparer la synthèse pour la spec
6. Référencer la checklist commune : plan_wizard_agents_coordination.prompt.md
7. Archiver evidence pack
8. Onboarding & feedback
@@ -1,11 +0,0 @@
---
name: startKillLifeBridge
description: Lance le workflow canonique KillLife-Bridge.
argument-hint: Donne le workflow, le bridge tri-repo, l'evidence ou le handoff à stabiliser.
---
Lance le workflow canonique `KillLife-Bridge` en prenant `specs/contracts/kill_life_agent_catalog.json` comme source de verite.
1. Charger l'entree `KillLife-Bridge`, `agents/kill_life_bridge.md` et les surfaces bridge associées.
2. Confirmer `owner_repo`, `owner_agent`, `write_set_roots`, gates et evidence avant toute modification.
3. Utiliser les sous-agents uniquement comme metadata de lane, jamais comme agents API autonomes.
4. Produire une execution ou un handoff strictement contenu dans le write set declare.
5. Finir avec risques restants, gate suivante et evidence mise a jour.
-11
View File
@@ -1,11 +0,0 @@
---
name: startPmMesh
description: Lance le workflow canonique PM-Mesh.
argument-hint: Donne le lot, le write set, les risques et les preuves attendues.
---
Lance le workflow canonique `PM-Mesh` en prenant `specs/contracts/kill_life_agent_catalog.json` comme source de verite.
1. Charger l'entree `PM-Mesh`, `agents/pm_mesh.md` et les surfaces de plan associees.
2. Confirmer `owner_repo`, `owner_agent`, `write_set_roots`, gates et evidence avant toute modification.
3. Utiliser les sous-agents uniquement comme metadata de lane, jamais comme agents API autonomes.
4. Produire une execution ou un handoff strictement contenu dans le write set declare.
5. Finir avec risques restants, gate suivante et evidence mise a jour.
@@ -1,11 +0,0 @@
---
name: startQaCompliance
description: Lance le workflow canonique QA-Compliance.
argument-hint: Donne le contrat, la suite de tests, la gate ou la preuve de conformité à valider.
---
Lance le workflow canonique `QA-Compliance` en prenant `specs/contracts/kill_life_agent_catalog.json` comme source de verite.
1. Charger l'entree `QA-Compliance`, `agents/qa_compliance.md` et les surfaces de validation associees.
2. Confirmer `owner_repo`, `owner_agent`, `write_set_roots`, gates et evidence avant toute modification.
3. Utiliser les sous-agents uniquement comme metadata de lane, jamais comme agents API autonomes.
4. Produire une execution ou un handoff strictement contenu dans le write set declare.
5. Finir avec risques restants, gate suivante et evidence mise a jour.
@@ -1,11 +0,0 @@
---
name: startRuntimeCompanion
description: Lance le workflow canonique Runtime-Companion.
argument-hint: Donne la surface runtime, MCP, provider bridge ou dégradation à traiter.
---
Lance le workflow canonique `Runtime-Companion` en prenant `specs/contracts/kill_life_agent_catalog.json` comme source de verite.
1. Charger l'entree `Runtime-Companion`, `agents/runtime_companion.md` et les contrats runtime lies.
2. Confirmer `owner_repo`, `owner_agent`, `write_set_roots`, gates et evidence avant toute modification.
3. Utiliser les sous-agents uniquement comme metadata de lane, jamais comme agents API autonomes.
4. Produire une execution ou un handoff strictement contenu dans le write set declare.
5. Finir avec risques restants, gate suivante et evidence mise a jour.
@@ -1,11 +0,0 @@
---
name: startSchemaGuard
description: Lance le workflow canonique Schema-Guard.
argument-hint: Donne le schéma, le contrat ou la validation structurelle à durcir.
---
Lance le workflow canonique `Schema-Guard` en prenant `specs/contracts/kill_life_agent_catalog.json` comme source de verite.
1. Charger l'entree `Schema-Guard`, `agents/schema_guard.md` et les contrats associes.
2. Confirmer `owner_repo`, `owner_agent`, `write_set_roots`, gates et evidence avant toute modification.
3. Utiliser les sous-agents uniquement comme metadata de lane, jamais comme agents API autonomes.
4. Produire une execution ou un handoff strictement contenu dans le write set declare.
5. Finir avec risques restants, gate suivante et evidence mise a jour.
-11
View File
@@ -1,11 +0,0 @@
---
name: startSyncOps
description: Lance le workflow canonique SyncOps.
argument-hint: Donne la surface TUI, mesh, logs, SSH ou incident à stabiliser.
---
Lance le workflow canonique `SyncOps` en prenant `specs/contracts/kill_life_agent_catalog.json` comme source de verite.
1. Charger l'entree `SyncOps`, `agents/sync_ops.md` et les surfaces opératoires associées.
2. Confirmer `owner_repo`, `owner_agent`, `write_set_roots`, gates et evidence avant toute modification.
3. Utiliser les sous-agents uniquement comme metadata de lane, jamais comme agents API autonomes.
4. Produire une execution ou un handoff strictement contenu dans le write set declare.
5. Finir avec risques restants, gate suivante et evidence mise a jour.
-11
View File
@@ -1,11 +0,0 @@
---
name: startUxLead
description: Lance le workflow canonique UX-Lead.
argument-hint: Donne la surface UX, shell natif, review center ou recherche design à cadrer.
---
Lance le workflow canonique `UX-Lead` en prenant `specs/contracts/kill_life_agent_catalog.json` comme source de verite.
1. Charger l'entree `UX-Lead`, `agents/ux_lead.md` et les surfaces UX associees.
2. Confirmer `owner_repo`, `owner_agent`, `write_set_roots`, gates et evidence avant toute modification.
3. Utiliser les sous-agents uniquement comme metadata de lane, jamais comme agents API autonomes.
4. Produire une execution ou un handoff strictement contenu dans le write set declare.
5. Finir avec risques restants, gate suivante et evidence mise a jour.
@@ -1,11 +0,0 @@
---
name: startWebCadPlatform
description: Lance le workflow canonique Web-CAD-Platform.
argument-hint: Donne la surface web, GraphQL, realtime, queue, review ou artifacts à traiter.
---
Lance le workflow canonique `Web-CAD-Platform` en prenant `specs/contracts/kill_life_agent_catalog.json` comme source de verite.
1. Charger l'entree `Web-CAD-Platform`, `agents/web_cad_platform.md` et les surfaces web associees.
2. Confirmer `owner_repo`, `owner_agent`, `write_set_roots`, gates et evidence avant toute modification.
3. Utiliser les sous-agents uniquement comme metadata de lane, jamais comme agents API autonomes.
4. Produire une execution ou un handoff strictement contenu dans le write set declare.
5. Finir avec risques restants, gate suivante et evidence mise a jour.
-28
View File
@@ -1,28 +0,0 @@
## Spec Reference
<!-- Link to the spec this PR implements. Required for ai:impl PRs. -->
- Spec: `specs/___`
- Related issue: #___
## Acceptance Criteria
<!-- Copy AC from the spec and check them off as completed. -->
- [ ] AC 1: _paste from spec_
- [ ] AC 2: _paste from spec_
- [ ] AC 3: _paste from spec_
## Changes
<!-- Brief description of what changed and why. -->
## Verification
- [ ] Unit tests pass (`python3 tools/test_firmware.py`)
- [ ] Spec validation pass (`python3 tools/validate_specs.py`)
- [ ] Scope guard pass (`python3 tools/scope_guard.py`)
- [ ] Compliance validation pass (`python3 tools/compliance/validate.py`)
## Labels
<!-- Ensure the correct ai:* label is set. -->
- [ ] `ai:spec` / `ai:plan` / `ai:tasks` / `ai:impl` / `ai:qa` label applied
-29
View File
@@ -1,29 +0,0 @@
name: API Contract & Integration Testing
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
contents: read
jobs:
api_contract:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run API contract tests
run: |
mkdir -p docs
if [ -f tools/api/run_contract_tests.py ]; then
python3 tools/api/run_contract_tests.py > docs/api-contract-report.json
else
echo '{"status":"skipped","reason":"missing tools/api/run_contract_tests.py"}' > docs/api-contract-report.json
fi
- name: Upload API contract report
uses: actions/upload-artifact@v4
with:
name: api-contract
path: docs/api-contract-report.json
-59
View File
@@ -1,59 +0,0 @@
name: Badges & Coverage
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
contents: write
jobs:
badges:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install dependencies
run: pip install coverage pytest
- name: Run tests & collect coverage
run: |
mkdir -p docs
set +e
coverage run -m pytest
rc=$?
set -e
if [ "$rc" -ne 0 ] && [ "$rc" -ne 5 ]; then
echo "pytest failed with rc=$rc; using fallback coverage summary for baseline CI stability"
fi
coverage report || true
coverage json -o docs/coverage-summary.json || true
if [ ! -s docs/coverage-summary.json ]; then
if [ "$rc" -eq 5 ]; then
echo '{"status":"skipped","reason":"no pytest tests collected"}' > docs/coverage-summary.json
elif [ "$rc" -ne 0 ]; then
echo "{\"status\":\"warning\",\"reason\":\"pytest failed\",\"pytest_rc\":$rc}" > docs/coverage-summary.json
else
echo '{"status":"ok","reason":"coverage json not generated"}' > docs/coverage-summary.json
fi
fi
- name: Scan RFC2119 compliance
run: python3 tools/compliance/scan_rfc2119.py
- name: Commit badge JSON to badges branch
if: github.event_name == 'push'
run: |
git config --global user.name "github-actions"
git config --global user.email "github-actions@github.com"
git checkout -B badges
git add -f docs/coverage-summary.json docs/rfc2119-summary.json
git commit -m "Update badge JSONs [CI]" || echo "Nothing to commit"
git push origin badges --force
- name: Upload badge JSON as artifact
uses: actions/upload-artifact@v4
with:
name: badge-json
path: docs/*.json
-223
View File
@@ -1,223 +0,0 @@
name: CI
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
python-stable:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Bootstrap repo-local venv
run: bash tools/bootstrap_python_env.sh
- name: Run stable Python suite
run: bash tools/test_python.sh --suite stable
firmware-lint:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install clang-format
run: sudo apt-get update && sudo apt-get install -y clang-format
- name: Lint firmware (clang-format)
run: bash tools/ci/lint_firmware.sh
firmware-native:
name: Firmware — Unity tests (native)
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install PlatformIO
run: |
pip install platformio
pio --version
- name: Run Unity tests (native env)
working-directory: firmware
run: pio test -e native
firmware-build:
name: Firmware — ESP32-S3 build
runs-on: ubuntu-latest
timeout-minutes: 30
needs: firmware-native
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install PlatformIO
run: pip install platformio
- name: Cache PlatformIO packages
uses: actions/cache@v4
with:
path: ~/.platformio
key: pio-esp32s3-${{ hashFiles('firmware/platformio.ini') }}
restore-keys: pio-esp32s3-
- name: Build esp32s3_waveshare
working-directory: firmware
run: pio run -e esp32s3_waveshare
- name: Upload firmware artifact
uses: actions/upload-artifact@v4
with:
name: firmware-bin
path: /tmp/kl_pio_build/esp32s3_waveshare/firmware.bin
retention-days: 30
firmware-sim:
name: Firmware — Wokwi simulation
runs-on: ubuntu-latest
timeout-minutes: 10
needs: firmware-build
if: ${{ vars.WOKWI_CLI_TOKEN != '' }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install PlatformIO & build ELF
run: |
pip install platformio
cd firmware && pio run -e esp32s3_waveshare
# pio uses build_dir=/tmp/kl_pio_build; copy artifacts to where wokwi.toml expects them
mkdir -p .pio/build/esp32s3_waveshare
cp /tmp/kl_pio_build/esp32s3_waveshare/firmware.bin .pio/build/esp32s3_waveshare/
cp /tmp/kl_pio_build/esp32s3_waveshare/firmware.elf .pio/build/esp32s3_waveshare/
- name: Wokwi CI simulation
continue-on-error: true
uses: wokwi/wokwi-ci-action@v1
with:
token: ${{ vars.WOKWI_CLI_TOKEN }}
path: firmware
timeout: 15000
scenario: scenario.yaml
hardware-export:
name: Hardware — KiCad ERC + exports
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install KiCad 10
run: |
sudo add-apt-repository -y ppa:kicad/kicad-10.0-releases
sudo apt-get update
sudo apt-get install -y kicad
kicad-cli version
- name: Run ERC
run: |
mkdir -p artifacts/hw
kicad-cli sch erc hardware/esp32_minimal/esp32_minimal.kicad_sch \
--format json --output artifacts/hw/erc_report.json
python3 -c "
import json, sys
d = json.load(open('artifacts/hw/erc_report.json'))
v = d['sheets'][0]['violations']
errs = [x for x in v if x['severity'] == 'error']
print(f'ERC: {len(errs)} errors, {len(v)-len(errs)} warnings')
if errs: sys.exit(1)
"
- name: Export SVG + PDF + netlist
run: |
mkdir -p artifacts/hw
kicad-cli sch export svg hardware/esp32_minimal/esp32_minimal.kicad_sch \
--output artifacts/hw/
kicad-cli sch export pdf hardware/esp32_minimal/esp32_minimal.kicad_sch \
--output artifacts/hw/schematic.pdf
kicad-cli sch export netlist hardware/esp32_minimal/esp32_minimal.kicad_sch \
--output artifacts/hw/netlist.xml
- name: Install KiBot
run: pip install kibot
- name: KiBot exports (SVG, PDF, BOM, netlist)
working-directory: hardware/esp32_minimal
continue-on-error: true
run: |
mkdir -p ../../artifacts/hw/kibot
kibot -c .kibot.yaml -e esp32_minimal.kicad_sch \
-d ../../artifacts/hw/kibot/ 2>&1 || echo "[kibot] non-zero exit (KiCad 10 compat)"
- name: Compliance validation (prototype profile)
run: |
python3 tools/compliance/validate.py --strict
- name: Upload hardware artifacts
uses: actions/upload-artifact@v4
with:
name: hardware-exports
path: artifacts/hw/
retention-days: 30
playwright-e2e:
name: Playwright E2E
runs-on: ubuntu-latest
timeout-minutes: 20
defaults:
run:
working-directory: web
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "20"
cache: "npm"
cache-dependency-path: web/package-lock.json
- name: Install web dependencies
run: npm ci
- name: Install Chromium
run: npx playwright install --with-deps chromium
- name: Run smoke E2E
env:
CI: "true"
run: npx playwright test e2e/smoke.spec.ts
- name: Upload Playwright artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: playwright-e2e-artifacts
if-no-files-found: ignore
path: |
web/playwright-report/
web/test-results/
retention-days: 14
@@ -1,39 +0,0 @@
name: Community Health & Accessibilité
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
contents: read
jobs:
community:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Vérifier code of conduct, issue/pr templates
run: |
mkdir -p docs
if [ -f tools/community/check_health.py ]; then
python3 tools/community/check_health.py > docs/community-health-report.json
else
echo '{"status":"skipped","reason":"missing tools/community/check_health.py"}' > docs/community-health-report.json
fi
- name: Scanner accessibilité doc/UI
run: |
mkdir -p docs
if [ -f tools/accessibility/a11y_linter.py ]; then
python3 tools/accessibility/a11y_linter.py docs/ > docs/accessibility-report.json
else
echo '{"status":"skipped","reason":"missing tools/accessibility/a11y_linter.py"}' > docs/accessibility-report.json
fi
- name: Upload reports
uses: actions/upload-artifact@v4
with:
name: community-accessibility
path: |
docs/community-health-report.json
docs/accessibility-report.json
-26
View File
@@ -1,26 +0,0 @@
name: Automated Dependency Update
on:
schedule:
- cron: '0 3 * * 1'
permissions:
contents: read
jobs:
dependabot:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run Dependabot (exemple)
run: |
echo "Dependabot run..."
- name: Generate dependency update report
run: |
mkdir -p docs
echo '{"status":"ok","generated_by":"dependabot"}' > docs/dependabot-report.json
- name: Upload dependency update report
uses: actions/upload-artifact@v4
with:
name: dependabot
path: docs/dependabot-report.json
-34
View File
@@ -1,34 +0,0 @@
name: docs-reference-gate
on:
workflow_dispatch:
pull_request:
paths:
- "README.md"
- "docs/**"
- "specs/**"
- "tools/doc/readme_repo_coherence.sh"
- ".github/workflows/docs_reference_gate.yml"
push:
branches:
- main
paths:
- "README.md"
- "docs/**"
- "specs/**"
- "tools/doc/readme_repo_coherence.sh"
- ".github/workflows/docs_reference_gate.yml"
permissions:
contents: read
jobs:
readme-repo-coherence:
name: README repo coherence
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Audit README and repo references
shell: bash
run: bash tools/doc/readme_repo_coherence.sh audit
-87
View File
@@ -1,87 +0,0 @@
name: Evidence Pack Validation
on:
push:
branches:
- main
paths:
- "docs/evidence/**"
- "firmware/**"
- "hardware/**"
- "tools/auto_check_ci_cd.py"
- "tools/bootstrap_python_env.sh"
- "tools/compliance/**"
pull_request:
paths:
- "docs/evidence/**"
- "firmware/**"
- "hardware/**"
- "tools/auto_check_ci_cd.py"
- "tools/bootstrap_python_env.sh"
- "tools/compliance/**"
workflow_dispatch:
permissions:
contents: read
jobs:
evidence_pack:
runs-on: ubuntu-latest
timeout-minutes: 25
env:
KILL_LIFE_PIO_MODE: native
PLATFORMIO_CORE_DIR: ~/.platformio
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: pip
cache-dependency-path: |
tools/compliance/requirements.txt
tools/compliance/requirements-platformio.txt
- name: Cache PlatformIO core
uses: actions/cache@v4
with:
path: ~/.platformio
key: ${{ runner.os }}-platformio-${{ hashFiles('firmware/platformio.ini', 'tools/compliance/requirements-platformio.txt') }}
restore-keys: |
${{ runner.os }}-platformio-
- name: Bootstrap repo-local venv
run: bash tools/bootstrap_python_env.sh --with-platformio
- name: Generate evidence pack summary
run: ./.venv/bin/python tools/auto_check_ci_cd.py
- name: Install KiCad 10
run: |
sudo add-apt-repository -y ppa:kicad/kicad-10.0-releases
sudo apt-get update
sudo apt-get install -y kicad
- name: Hardware ERC + exports
run: |
mkdir -p artifacts/hw
kicad-cli sch erc hardware/esp32_minimal/esp32_minimal.kicad_sch \
--format json --output artifacts/hw/erc_report.json
kicad-cli sch export svg hardware/esp32_minimal/esp32_minimal.kicad_sch \
--output artifacts/hw/
kicad-cli sch export pdf hardware/esp32_minimal/esp32_minimal.kicad_sch \
--output artifacts/hw/schematic.pdf
kicad-cli sch export netlist hardware/esp32_minimal/esp32_minimal.kicad_sch \
--output artifacts/hw/netlist.xml
- name: Upload evidence pack artifact
if: always()
uses: actions/upload-artifact@v4
with:
name: evidence-pack
if-no-files-found: warn
path: |
docs/evidence/
artifacts/hw/
-29
View File
@@ -1,29 +0,0 @@
name: Incident Response & Security Policy
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
contents: read
jobs:
incident_response:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Vérifier politique de sécurité et incident response
run: |
mkdir -p docs
if [ -f tools/security/check_policy.py ]; then
python3 tools/security/check_policy.py > docs/security-policy-report.json
else
echo '{"status":"skipped","reason":"missing tools/security/check_policy.py"}' > docs/security-policy-report.json
fi
- name: Upload security policy report
uses: actions/upload-artifact@v4
with:
name: security-policy
path: docs/security-policy-report.json
-51
View File
@@ -1,51 +0,0 @@
# Sample workflow for building and deploying a Jekyll site to GitHub Pages
name: Deploy Jekyll with GitHub Pages dependencies preinstalled
on:
# Runs on pushes targeting the default branch
push:
branches: ["main"]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
# Build job
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Build with Jekyll
uses: actions/jekyll-build-pages@v1
with:
source: ./
destination: ./_site
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
-339
View File
@@ -1,339 +0,0 @@
name: KiCad Exports
on:
push:
branches:
- main
paths:
- "hardware/**"
- "tools/hw/**"
pull_request:
paths:
- "hardware/**"
- "tools/hw/**"
workflow_dispatch:
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
ARTIFACTS_DIR: artifacts/hw_exports
jobs:
kicad-checks:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install KiCad 10
run: |
sudo add-apt-repository -y ppa:kicad/kicad-10.0-releases
sudo apt-get update
sudo apt-get install -y --no-install-recommends kicad
kicad-cli version
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Prepare output directories
run: |
mkdir -p "$ARTIFACTS_DIR/erc"
mkdir -p "$ARTIFACTS_DIR/drc"
mkdir -p "$ARTIFACTS_DIR/pdf"
mkdir -p "$ARTIFACTS_DIR/svg"
mkdir -p "$ARTIFACTS_DIR/bom"
mkdir -p "$ARTIFACTS_DIR/netlist"
# ── Discover all KiCad projects ──────────────────────────────
- name: Discover schematics and PCBs
id: discover
run: |
# Find all .kicad_pro files (each is a project root)
SCHEMATICS=$(find hardware -name "*.kicad_sch" \
-not -path "*/.kicad_blocks/*" \
-not -path "*.kicad_blocks/*" \
-not -path "*.kicad_block/*" \
-not -path "*backup*" | sort)
PCBS=$(find hardware -name "*.kicad_pcb" | sort)
echo "Found schematics:"
echo "$SCHEMATICS"
echo ""
echo "Found PCBs:"
echo "${PCBS:-<none>}"
# Export for later steps
{
echo "schematics<<EOFSCH"
echo "$SCHEMATICS"
echo "EOFSCH"
echo "pcbs<<EOFPCB"
echo "$PCBS"
echo "EOFPCB"
} >> "$GITHUB_OUTPUT"
# ── ERC (Electrical Rules Check) ─────────────────────────────
- name: Run ERC on all schematics
id: erc
run: |
EXIT_CODE=0
while IFS= read -r SCH; do
[[ -z "$SCH" ]] && continue
BASENAME="$(basename "$SCH" .kicad_sch)"
echo "::group::ERC $SCH"
if kicad-cli sch erc "$SCH" \
--format json \
--output "$ARTIFACTS_DIR/erc/${BASENAME}_erc.json" 2>&1; then
# Parse error count
ERRORS=$(python3 -c "
import json, sys
try:
d = json.load(open('$ARTIFACTS_DIR/erc/${BASENAME}_erc.json'))
sheets = d.get('sheets', [])
errs = sum(1 for s in sheets for v in s.get('violations', []) if v.get('severity') == 'error')
print(errs)
except Exception as e:
print(f'parse-error: {e}', file=sys.stderr)
print(0)
")
if [[ "$ERRORS" -gt 0 ]]; then
echo "::error file=$SCH::ERC found $ERRORS error(s)"
EXIT_CODE=1
else
echo "ERC passed: $SCH"
fi
else
echo "::warning file=$SCH::ERC command failed (kicad-cli error)"
EXIT_CODE=1
fi
echo "::endgroup::"
done <<< "${{ steps.discover.outputs.schematics }}"
echo "erc_exit=$EXIT_CODE" >> "$GITHUB_OUTPUT"
# ── DRC (Design Rules Check) ─────────────────────────────────
- name: Run DRC on all PCBs
id: drc
run: |
EXIT_CODE=0
while IFS= read -r PCB; do
[[ -z "$PCB" ]] && continue
BASENAME="$(basename "$PCB" .kicad_pcb)"
echo "::group::DRC $PCB"
if kicad-cli pcb drc "$PCB" \
--format json \
--output "$ARTIFACTS_DIR/drc/${BASENAME}_drc.json" 2>&1; then
ERRORS=$(python3 -c "
import json, sys
try:
d = json.load(open('$ARTIFACTS_DIR/drc/${BASENAME}_drc.json'))
errs = sum(1 for v in d.get('violations', []) if v.get('severity') == 'error')
print(errs)
except Exception as e:
print(f'parse-error: {e}', file=sys.stderr)
print(0)
")
if [[ "$ERRORS" -gt 0 ]]; then
echo "::error file=$PCB::DRC found $ERRORS error(s)"
EXIT_CODE=1
else
echo "DRC passed: $PCB"
fi
else
echo "::warning file=$PCB::DRC command failed (kicad-cli error)"
EXIT_CODE=1
fi
echo "::endgroup::"
done <<< "${{ steps.discover.outputs.pcbs }}"
echo "drc_exit=$EXIT_CODE" >> "$GITHUB_OUTPUT"
# ── PDF Schematic Export ─────────────────────────────────────
- name: Export schematic PDFs
run: |
while IFS= read -r SCH; do
[[ -z "$SCH" ]] && continue
BASENAME="$(basename "$SCH" .kicad_sch)"
echo "Exporting PDF: $SCH"
kicad-cli sch export pdf "$SCH" \
--output "$ARTIFACTS_DIR/pdf/${BASENAME}.pdf" 2>&1 \
|| echo "::warning file=$SCH::PDF export failed"
done <<< "${{ steps.discover.outputs.schematics }}"
# ── SVG Schematic Export ─────────────────────────────────────
- name: Export schematic SVGs
run: |
while IFS= read -r SCH; do
[[ -z "$SCH" ]] && continue
BASENAME="$(basename "$SCH" .kicad_sch)"
SVGDIR="$ARTIFACTS_DIR/svg/${BASENAME}"
mkdir -p "$SVGDIR"
echo "Exporting SVG: $SCH"
kicad-cli sch export svg "$SCH" \
--output "$SVGDIR/" 2>&1 \
|| echo "::warning file=$SCH::SVG export failed"
done <<< "${{ steps.discover.outputs.schematics }}"
# ── BOM Export ───────────────────────────────────────────────
- name: Export BOMs
run: |
while IFS= read -r SCH; do
[[ -z "$SCH" ]] && continue
BASENAME="$(basename "$SCH" .kicad_sch)"
echo "Exporting BOM: $SCH"
kicad-cli sch export bom "$SCH" \
--output "$ARTIFACTS_DIR/bom/${BASENAME}_bom.csv" \
--fields 'Reference,Value,Footprint,Datasheet,Manufacturer,MPN,${QUANTITY},${DNP}' \
--group-by "Value" \
--sort-field "Reference" 2>&1 \
|| echo "::warning file=$SCH::BOM export failed"
done <<< "${{ steps.discover.outputs.schematics }}"
# ── Netlist Export ───────────────────────────────────────────
- name: Export netlists
run: |
while IFS= read -r SCH; do
[[ -z "$SCH" ]] && continue
BASENAME="$(basename "$SCH" .kicad_sch)"
echo "Exporting netlist: $SCH"
kicad-cli sch export netlist "$SCH" \
--output "$ARTIFACTS_DIR/netlist/${BASENAME}_netlist.xml" 2>&1 \
|| echo "::warning file=$SCH::Netlist export failed"
done <<< "${{ steps.discover.outputs.schematics }}"
# ── Summary ──────────────────────────────────────────────────
- name: Generate summary
if: always()
run: |
echo "## KiCad Export Summary" >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
# ERC results
echo "### ERC Reports" >> "$GITHUB_STEP_SUMMARY"
for f in "$ARTIFACTS_DIR"/erc/*.json; do
[[ -f "$f" ]] || continue
NAME="$(basename "$f" _erc.json)"
ERRORS=$(python3 -c "
import json
d = json.load(open('$f'))
sheets = d.get('sheets', [])
errs = sum(1 for s in sheets for v in s.get('violations', []) if v.get('severity') == 'error')
warns = sum(1 for s in sheets for v in s.get('violations', []) if v.get('severity') == 'warning')
print(f'{errs} errors, {warns} warnings')
" 2>/dev/null || echo "parse error")
echo "- **$NAME**: $ERRORS" >> "$GITHUB_STEP_SUMMARY"
done
# DRC results
echo "" >> "$GITHUB_STEP_SUMMARY"
echo "### DRC Reports" >> "$GITHUB_STEP_SUMMARY"
for f in "$ARTIFACTS_DIR"/drc/*.json; do
[[ -f "$f" ]] || continue
NAME="$(basename "$f" _drc.json)"
ERRORS=$(python3 -c "
import json
d = json.load(open('$f'))
errs = sum(1 for v in d.get('violations', []) if v.get('severity') == 'error')
warns = sum(1 for v in d.get('violations', []) if v.get('severity') == 'warning')
print(f'{errs} errors, {warns} warnings')
" 2>/dev/null || echo "parse error")
echo "- **$NAME**: $ERRORS" >> "$GITHUB_STEP_SUMMARY"
done
# Exports
echo "" >> "$GITHUB_STEP_SUMMARY"
echo "### Exported Artifacts" >> "$GITHUB_STEP_SUMMARY"
echo "- PDFs: $(find "$ARTIFACTS_DIR/pdf" -name "*.pdf" 2>/dev/null | wc -l | tr -d ' ') files" >> "$GITHUB_STEP_SUMMARY"
echo "- SVGs: $(find "$ARTIFACTS_DIR/svg" -name "*.svg" 2>/dev/null | wc -l | tr -d ' ') files" >> "$GITHUB_STEP_SUMMARY"
echo "- BOMs: $(find "$ARTIFACTS_DIR/bom" -name "*.csv" 2>/dev/null | wc -l | tr -d ' ') files" >> "$GITHUB_STEP_SUMMARY"
echo "- Netlists: $(find "$ARTIFACTS_DIR/netlist" -name "*.xml" 2>/dev/null | wc -l | tr -d ' ') files" >> "$GITHUB_STEP_SUMMARY"
# ── Upload Artifacts ─────────────────────────────────────────
- name: Upload ERC/DRC reports
if: always()
uses: actions/upload-artifact@v4
with:
name: kicad-reports
if-no-files-found: warn
path: |
artifacts/hw_exports/erc/
artifacts/hw_exports/drc/
- name: Upload schematic exports
if: always()
uses: actions/upload-artifact@v4
with:
name: kicad-schematics
if-no-files-found: warn
path: |
artifacts/hw_exports/pdf/
artifacts/hw_exports/svg/
- name: Upload BOM and netlists
if: always()
uses: actions/upload-artifact@v4
with:
name: kicad-bom-netlist
if-no-files-found: warn
path: |
artifacts/hw_exports/bom/
artifacts/hw_exports/netlist/
- name: Build normalized YiACAD evidence pack
if: always()
run: |
mkdir -p artifacts/ci
STATUS="success"
SUMMARY="KiCad export lanes passed with ERC/DRC green."
if [[ "${{ steps.erc.outputs.erc_exit }}" != "0" ]] || [[ "${{ steps.drc.outputs.drc_exit }}" != "0" ]]; then
STATUS="failure"
SUMMARY="KiCad export lane failed: ERC=${{ steps.erc.outputs.erc_exit }}, DRC=${{ steps.drc.outputs.drc_exit }}."
fi
python3 tools/ci/write_yiacad_evidence_pack.py \
--output artifacts/ci/kicad_exports_evidence.json \
--workflow "KiCad Exports" \
--lane "kicad-exports" \
--status "${STATUS}" \
--summary "${SUMMARY}" \
--repository "${GITHUB_REPOSITORY}" \
--server-url "${GITHUB_SERVER_URL}" \
--run-id "${GITHUB_RUN_ID}" \
--run-attempt "${GITHUB_RUN_ATTEMPT}" \
--ref "${GITHUB_REF}" \
--sha "${GITHUB_SHA}" \
--event "${GITHUB_EVENT_NAME}" \
--engine "kicad" \
--artifact-path "artifacts/hw_exports/erc/" \
--artifact-path "artifacts/hw_exports/drc/" \
--artifact-path "artifacts/hw_exports/pdf/" \
--artifact-path "artifacts/hw_exports/svg/" \
--artifact-path "artifacts/hw_exports/bom/" \
--artifact-path "artifacts/hw_exports/netlist/"
- name: Upload YiACAD evidence pack
if: always()
uses: actions/upload-artifact@v4
with:
name: yiacad-evidence-pack-kicad-exports
if-no-files-found: error
path: artifacts/ci/kicad_exports_evidence.json
# ── Fail if ERC or DRC had errors ────────────────────────────
- name: Check ERC/DRC results
if: always()
run: |
ERC_EXIT="${{ steps.erc.outputs.erc_exit }}"
DRC_EXIT="${{ steps.drc.outputs.drc_exit }}"
if [[ "${ERC_EXIT:-0}" -ne 0 ]] || [[ "${DRC_EXIT:-0}" -ne 0 ]]; then
echo "::error::ERC or DRC checks failed. Review the uploaded reports."
exit 1
fi
echo "All ERC/DRC checks passed."
-84
View File
@@ -1,84 +0,0 @@
name: Mesh Contract Handshake
on:
push:
branches: [main]
paths:
- "specs/contracts/**"
- "tools/specs/mesh_contract_check.py"
- "tools/specs/validate_agent_catalog.py"
- ".github/workflows/mesh_contracts.yml"
- "tools/autonomous_next_lots.py"
- "tools/cad/yiacad_fusion_lot.sh"
- "tools/cockpit/intelligence_tui.sh"
- "tools/cockpit/runtime_ai_gateway.sh"
- "kill_life/server.py"
- "kill_life/agent_catalog.py"
- "agents/**"
- ".github/agents/**"
- ".github/prompts/**"
- "README.md"
- "README_FR.md"
- "docs/plans/12_plan_gestion_des_agents.md"
- "docs/AGENT_SPEC_MODULE_MATRIX_2026-03-20.md"
pull_request:
branches: [main]
paths:
- "specs/contracts/**"
- "tools/specs/mesh_contract_check.py"
- "tools/specs/validate_agent_catalog.py"
- ".github/workflows/mesh_contracts.yml"
- "tools/autonomous_next_lots.py"
- "tools/cad/yiacad_fusion_lot.sh"
- "tools/cockpit/intelligence_tui.sh"
- "tools/cockpit/runtime_ai_gateway.sh"
- "kill_life/server.py"
- "kill_life/agent_catalog.py"
- "agents/**"
- ".github/agents/**"
- ".github/prompts/**"
- "README.md"
- "README_FR.md"
- "docs/plans/12_plan_gestion_des_agents.md"
- "docs/AGENT_SPEC_MODULE_MATRIX_2026-03-20.md"
permissions:
contents: read
jobs:
mesh_contracts:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Validate mesh contract examples
run: |
mkdir -p artifacts/ci
python3 tools/specs/mesh_contract_check.py \
--schema specs/contracts/machine_registry.schema.json \
--instance specs/contracts/machine_registry.mesh.json \
| tee artifacts/ci/machine_registry_contract.json
python3 tools/specs/mesh_contract_check.py \
--schema specs/contracts/agent_handoff.schema.json \
--instance specs/contracts/examples/agent_handoff.mesh.json \
| tee artifacts/ci/agent_handoff_contract.json
python3 tools/specs/mesh_contract_check.py \
--schema specs/contracts/repo_snapshot.schema.json \
--instance specs/contracts/examples/repo_snapshot.mesh.json \
| tee artifacts/ci/repo_snapshot_contract.json
python3 tools/specs/mesh_contract_check.py \
--schema specs/contracts/workflow_handshake.schema.json \
--instance specs/contracts/examples/workflow_handshake.mesh.json \
| tee artifacts/ci/workflow_handshake_contract.json
python3 tools/specs/validate_agent_catalog.py --json \
| tee artifacts/ci/agent_catalog_contract.json
- name: Upload mesh contract reports
uses: actions/upload-artifact@v4
with:
name: mesh-contract-handshake
path: artifacts/ci/*.json
-29
View File
@@ -1,29 +0,0 @@
name: Data/Model Validation (IA)
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
contents: read
jobs:
model_validation:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Validate IA models/datasets
run: |
mkdir -p docs
if [ -f tools/ai/validate_model.py ]; then
python3 tools/ai/validate_model.py > docs/model-validation-report.json
else
echo '{"status":"skipped","reason":"missing tools/ai/validate_model.py"}' > docs/model-validation-report.json
fi
- name: Upload model validation report
uses: actions/upload-artifact@v4
with:
name: model-validation
path: docs/model-validation-report.json
-46
View File
@@ -1,46 +0,0 @@
name: Performance & HIL
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
contents: read
jobs:
performance:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run firmware benchmarks
run: |
mkdir -p docs
if [ -f tools/benchmarks/run_benchmarks.py ]; then
python3 tools/benchmarks/run_benchmarks.py > docs/performance-report.json
else
echo '{"status":"skipped","reason":"missing tools/benchmarks/run_benchmarks.py"}' > docs/performance-report.json
fi
- name: Upload performance report
uses: actions/upload-artifact@v4
with:
name: performance
path: docs/performance-report.json
hil:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run HIL tests (émulateur/hardware cloud)
run: |
mkdir -p docs
if [ -f tools/hil/run_hil_tests.py ]; then
python3 tools/hil/run_hil_tests.py > docs/hil-report.json
else
echo '{"status":"skipped","reason":"missing tools/hil/run_hil_tests.py"}' > docs/hil-report.json
fi
- name: Upload HIL report
uses: actions/upload-artifact@v4
with:
name: hil
path: docs/hil-report.json
-87
View File
@@ -1,87 +0,0 @@
name: Release
on:
push:
tags:
- "v*"
permissions:
contents: write
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Validate tag matches VERSION file
run: |
TAG_VERSION="${GITHUB_REF_NAME#v}"
FILE_VERSION="$(cat VERSION | tr -d '[:space:]')"
if [ "$TAG_VERSION" != "$FILE_VERSION" ]; then
echo "::error::Tag $GITHUB_REF_NAME does not match VERSION file ($FILE_VERSION)"
exit 1
fi
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install Python dependencies
run: pip install -e ".[dev]"
- name: Run tests
run: pytest --tb=short -q
- name: Build Python package
run: |
pip install build
python -m build
- name: Install PlatformIO
run: pip install platformio
- name: Build firmware
run: |
cd firmware
pio run
mkdir -p ../release-artifacts
cp /tmp/kl_pio_build/esp32s3_waveshare/.pio/build/esp32s3_waveshare/firmware.bin ../release-artifacts/ 2>/dev/null || \
cp /tmp/kl_pio_build/esp32s3_waveshare/firmware.bin ../release-artifacts/ 2>/dev/null || \
echo "::warning::Firmware binary not found at expected path, skipping artifact"
- name: Collect artifacts
run: |
mkdir -p release-artifacts
cp dist/*.whl release-artifacts/ 2>/dev/null || true
cp dist/*.tar.gz release-artifacts/ 2>/dev/null || true
ls -la release-artifacts/
- name: Generate changelog
id: changelog
run: |
# Find the previous tag
PREV_TAG=$(git tag --sort=-v:refname | grep '^v' | head -2 | tail -1)
if [ "$PREV_TAG" = "$GITHUB_REF_NAME" ] || [ -z "$PREV_TAG" ]; then
# First release — show all commits
echo "## What's Changed" > changelog.md
git log --pretty=format:"- %s (%h)" >> changelog.md
else
echo "## What's Changed since $PREV_TAG" > changelog.md
git log --pretty=format:"- %s (%h)" "$PREV_TAG".."$GITHUB_REF_NAME" >> changelog.md
fi
echo "" >> changelog.md
echo "" >> changelog.md
echo "**Full Changelog**: https://github.com/${{ github.repository }}/compare/${PREV_TAG:-initial}...${{ github.ref_name }}" >> changelog.md
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
body_path: changelog.md
files: release-artifacts/*
generate_release_notes: false
draft: false
prerelease: ${{ contains(github.ref_name, '-rc') || contains(github.ref_name, '-alpha') || contains(github.ref_name, '-beta') }}
-57
View File
@@ -1,57 +0,0 @@
name: Release Automation & Signing
on:
push:
tags:
- 'v*'
workflow_dispatch:
inputs:
release_tag:
description: 'Version tag to publish (for example v1.2.3)'
required: true
type: string
permissions:
contents: write
id-token: write
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Resolve release tag
id: resolve_tag
env:
INPUT_RELEASE_TAG: ${{ github.event.inputs.release_tag || '' }}
run: |
RELEASE_TAG="${INPUT_RELEASE_TAG:-${GITHUB_REF_NAME:-}}"
case "$RELEASE_TAG" in
v*) ;;
*)
echo "release_tag must start with 'v': $RELEASE_TAG" >&2
exit 1
;;
esac
echo "release_tag=$RELEASE_TAG" >> "$GITHUB_OUTPUT"
- name: Build artefacts
run: |
mkdir -p build
printf 'Kill_LIFE release %s\n' "${{ steps.resolve_tag.outputs.release_tag }}" > build/artefact.bin
- name: Sign artefacts (cosign)
env:
COSIGN_KEY: ${{ secrets.SIGNING_KEY }}
run: |
if command -v cosign >/dev/null 2>&1 && [ -n "$COSIGN_KEY" ]; then
cosign sign --key env://COSIGN_KEY build/artefact.bin 2>/dev/null
else
echo "Skipping cosign signing (missing cosign or SIGNING_KEY)"
fi
- name: Create release
uses: softprops/action-gh-release@v1
with:
files: build/artefact.bin
tag_name: ${{ steps.resolve_tag.outputs.release_tag }}
target_commitish: ${{ github.sha }}
name: "Release ${{ steps.resolve_tag.outputs.release_tag }}"
body: "Release automatisée avec artefacts signés."
-33
View File
@@ -1,33 +0,0 @@
name: Repo State
on:
push:
pull_request:
workflow_dispatch:
permissions:
contents: read
jobs:
repo-state:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Generate repo state
run: |
python3 tools/repo_state/collect.py --repo-name Kill_LIFE
- name: Upload repo-state artifact
uses: actions/upload-artifact@v4
with:
name: repo-state
path: |
docs/REPO_STATE.md
docs/repo_state.json
@@ -1,42 +0,0 @@
name: Repo State Header Gate
on:
push:
pull_request:
workflow_dispatch:
permissions:
contents: read
jobs:
header-gate:
runs-on: ubuntu-latest
steps:
- name: Checkout Kill_LIFE
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Prepare environment integrations
run: |
echo "No sibling repo clones configured for this environment"
- name: Build global header
run: |
tools/repo_state/repo_refresh.sh --header-only
- name: Lint header contract
run: |
python3 tools/repo_state/lint_header_contract.py
- name: Upload global repo-state artifacts
uses: actions/upload-artifact@v4
with:
name: global-repo-state
path: |
artifacts/repo_state/global_summary.md
artifacts/repo_state/global_index.json
artifacts/repo_state/header.latest.md

Some files were not shown because too many files have changed in this diff Show More