chore(rtc): add evidence runbook for dual-loop blocker and hw traces

This commit is contained in:
Clément SAILLANT
2026-02-21 19:22:03 +01:00
parent d77ab32707
commit 3d588007da
3 changed files with 60 additions and 122 deletions
+29 -46
View File
@@ -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."
]
}
+11 -76
View File
@@ -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 derreur 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 dintrusion : 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<JsonObject>()` au lieu de `doc.to<JsonObject>()`)
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}` |
+20
View File
@@ -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 lissue 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.