From 3d588007da6c59ff4b8fcbc5bbf79387624c27d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20SAILLANT?= <108685187+electron-rare@users.noreply.github.com> Date: Sat, 21 Feb 2026 19:22:03 +0100 Subject: [PATCH] chore(rtc): add evidence runbook for dual-loop blocker and hw traces --- docs/rapport_hw.json | 75 ++++++++++---------------- docs/rapport_tests_fonctionnels.md | 87 ++++-------------------------- docs/zeroclaw_orchestration.md | 20 +++++++ 3 files changed, 60 insertions(+), 122 deletions(-) diff --git a/docs/rapport_hw.json b/docs/rapport_hw.json index 7b9f6a3..5010153 100644 --- a/docs/rapport_hw.json +++ b/docs/rapport_hw.json @@ -1,71 +1,54 @@ { - "timestamp_utc": "2026-02-21T03:15:00Z", - "scope": "esp32_audio_dev_a252_only", - "overall_passed": true, - "bench_context": { - "active_env": "esp32dev", - "flash_port": "/dev/cu.SLAB_USBtoUART", - "s3_present": false - }, + "timestamp_utc": "2026-02-21T18:20:29.000908+00:00", + "overall_passed": false, "results": [ { - "name": "ZeroClaw preflight", - "passed": true, + "name": "SLIC transition A252", + "passed": false, "details": { - "command": "python3 scripts/zeroclaw_hw_preflight.py --require-port --zeroclaw-bin /Users/cils/Documents/Lelectron_rare/Kill_LIFE/zeroclaw/target/release/zeroclaw", - "ports_seen": [ - "/dev/tty.SLAB_USBtoUART", - "/dev/tty.usbserial-0001", - "/dev/tty.usbmodem5AB90753301" - ] + "error": "Timeout waiting response to 'CALL' on /dev/cu.usbmodem5AB90753301; last='UNKNOWN CALL'" } }, { - "name": "esp32dev build", - "passed": true, + "name": "SLIC transition S3", + "passed": false, "details": { - "command": "pio run -e esp32dev" + "ring_state": "OFF_HOOK", + "offhook_state": "OFF_HOOK", + "idle_state": "OFF_HOOK" } }, { - "name": "esp32dev upload", - "passed": true, + "name": "A252 full-duplex", + "passed": false, "details": { - "command": "pio run -e esp32dev -t upload --upload-port /dev/cu.SLAB_USBtoUART" + "duration_s": 120, + "error": "Timeout waiting response to 'RESET_METRICS' on /dev/cu.usbmodem5AB90753301; last='UNKNOWN RESET_METRICS'" } }, { - "name": "serial smoke", - "passed": true, + "name": "S3 local mode", + "passed": false, "details": { - "ping": "PONG", - "status_keys": [ - "board_profile", - "telephony", - "hook", - "full_duplex", - "audio_drop_frames" - ], - "status_snapshot": { - "board_profile": "ESP32_A252", - "full_duplex": true, - "audio_drop_frames": 0 - } + "duration_s": 20, + "telephony_state": "OFF_HOOK", + "audio_drop_frames": 0, + "bench_latency_ms": 9999 } }, { - "name": "startup stability", + "name": "A252 web endpoints", "passed": true, "details": { - "fixed_issue": "lwIP Invalid mbox reboot loop", - "evidence": [ - "[RTC_BL_PHONE] AP ready: ssid=RTC_BL_PHONE ip=192.168.4.1", - "[WebServerManager] HTTP server started" - ] + "skipped": true + } + }, + { + "name": "S3 web endpoints", + "passed": true, + "details": { + "skipped": true } } - ], - "notes": [ - "Run execute on ESP32 audio dev only; S3 validation skipped for this bench." ] } diff --git a/docs/rapport_tests_fonctionnels.md b/docs/rapport_tests_fonctionnels.md index 96afb04..1754118 100644 --- a/docs/rapport_tests_fonctionnels.md +++ b/docs/rapport_tests_fonctionnels.md @@ -1,78 +1,13 @@ -# Rapport campagne globale de tests fonctionnels — RTC_BL_PHONE +# Rapport validation HW -## Résumé global -Tous les modules ont été testés individuellement et en intégration. Les résultats sont détaillés par module ci-dessous. +- Date UTC: 2026-02-21T18:20:29.000908+00:00 +- Verdict global: FAIL ---- - -### AudioManager -- Initialisation : OK -- Abstraction codec (ES8388, PCM5102, Generic) : OK -- Volume/mute : OK, tests edge cases -- Monitoring signal : OK -- Logs : conformes, traçabilité assurée -- Robustesse : aucun crash, gestion d’erreur efficace - -### RTOSManager -- Multitâche : création et gestion de tâches FreeRTOS OK -- Watchdog : activation, feed, timeout OK -- Audit des tâches : reporting complet -- Logs : conformes, traçabilité assurée -- Robustesse : aucun deadlock, timing stable - -### BluetoothManager -- Initialisation : OK -- Connexion/déconnexion : OK (HFP, BLE) -- Sécurité : activation/désactivation OK -- Logs : conformes, traçabilité assurée -- Robustesse : gestion des erreurs, fallback ESP32-S3 OK - -### Endpoints HTTP -- Tests GET/POST sur tous les endpoints : OK -- Sécurisation (authentification, validation) : OK -- Charge et scénarios multi-utilisateurs : OK -- Logs et artefacts centralisés - -### Sécurité -- Authentification endpoints : OK -- Validation des données : OK -- Tests d’intrusion : aucun accès non autorisé -- Traçabilité : logs et artefacts CI - ---- - -## Conclusion -Tous les modules sont validés, robustes et intégrés. La traçabilité, la sécurité et la documentation sont assurées. Prêt pour la phase suivante ou la livraison. - -**Version :** 2026-02-17 - ---- - -## Campagne terrain ZeroClaw — 2026-02-21 (ESP32 audio dev) - -Contexte: - -- Cible active: `esp32dev` (ESP32 audio dev) -- Port flash: `/dev/cu.SLAB_USBtoUART` -- Scope: terminal build/flash/smoke, sans carte S3 sur ce bench - -Resultats: - -- Preflight ZeroClaw USB: OK -- Build `pio run -e esp32dev`: OK -- Upload `pio run -e esp32dev -t upload --upload-port /dev/cu.SLAB_USBtoUART`: OK -- Smoke serie: - - `PING` => `PONG` (OK) - - `STATUS` => JSON complet (OK) - -Incident corrige pendant la campagne: - -- Reboot loop `lwIP Invalid mbox` au demarrage web. -- Cause: `AsyncWebServer::begin()` lance avant init reseau. -- Correctif applique: - - init Wi-Fi AP (`RTC_BL_PHONE`) avant `g_web.begin()` - - correction payload `STATUS` (`doc.as()` au lieu de `doc.to()`) - -Verdict campagne 2026-02-21: - -- PASS pour le flux `esp32dev` en terminal. +| Scénario | Verdict | Détails | +|---|---|---| +| SLIC transition A252 | FAIL | `{"error": "Timeout waiting response to 'CALL' on /dev/cu.usbmodem5AB90753301; last='UNKNOWN CALL'"}` | +| SLIC transition S3 | FAIL | `{"ring_state": "OFF_HOOK", "offhook_state": "OFF_HOOK", "idle_state": "OFF_HOOK"}` | +| A252 full-duplex | FAIL | `{"duration_s": 120, "error": "Timeout waiting response to 'RESET_METRICS' on /dev/cu.usbmodem5AB90753301; last='UNKNOWN RESET_METRICS'"}` | +| S3 local mode | FAIL | `{"duration_s": 20, "telephony_state": "OFF_HOOK", "audio_drop_frames": 0, "bench_latency_ms": 9999}` | +| A252 web endpoints | PASS | `{"skipped": true}` | +| S3 web endpoints | PASS | `{"skipped": true}` | diff --git a/docs/zeroclaw_orchestration.md b/docs/zeroclaw_orchestration.md index cfa93b0..de3f646 100644 --- a/docs/zeroclaw_orchestration.md +++ b/docs/zeroclaw_orchestration.md @@ -68,3 +68,23 @@ Note technique: - Sur `esp32dev`, il faut initialiser le stack reseau avant `AsyncWebServer::begin()` pour eviter le crash `lwIP Invalid mbox`. + +## 5) Preuve boucle complète (2026-02-21) + +Etat courant: + +- `PR #20` (RTC) et `PR #22` (repo_state) sont déjà intégrées. +- `Kill_LIFE`: PR `#11` intégrée pour le watcher 1min + realtime log. +- `Zacus`: PR `#101` et `#103`/`#105` déjà intégrées. + +Run proof: + +- `python3 scripts/zeroclaw_hw_preflight.py --require-port --zeroclaw-bin /Users/cils/Documents/Lelectron_rare/Kill_LIFE/zeroclaw/target/release/zeroclaw` ✅ +- `pio run -e esp32dev -e esp32-s3-devkitc-1` ✅ +- `python3 scripts/hw_validation.py --port-a252 ... --port-s3 ... --bench-port ... --flash` ❌ + - bloqué: ports sérielles non distincts / indisponibles pour l’état bench (erreurs Resource busy + commandes inconnues). + +Actions: + +- Poursuivre sur l’issue RTC dédiée: https://github.com/electron-rare/RTC_BL_PHONE/issues/23 +- Re-lancer la boucle dès que les ports A252, S3 et bench sont explicitement valables.