Met à jour les carnets/issues existants et ajoute les tickets #108, #109, #111, #112 créés durant le cycle. État runtime sans rapport avec le lot de code #82, isolé dans son propre commit. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
56 lines
2.9 KiB
Markdown
56 lines
2.9 KiB
Markdown
---
|
|
id: "f36ada98-0ca1-41e6-94c1-24eb81731fee"
|
|
number: 80
|
|
title: "L'environnement de QA ne peut pas ouvrir de socket — il ne peut pas valider les features réseau"
|
|
status: "closed"
|
|
priority: "medium"
|
|
sprint: null
|
|
links: [{"target":"#77","kind":"relatesTo"}]
|
|
agentRefs: []
|
|
createdBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"}
|
|
updatedBy: {"kind":"user"}
|
|
createdAt: 1784287697560
|
|
updatedAt: 1785271075219
|
|
version: 2
|
|
---
|
|
## Constat
|
|
|
|
Relevé pendant #77, confirmé indépendamment par Main et par Git.
|
|
|
|
L'agent QA exécute ses tests dans un environnement dont le sandbox **interdit les binds réseau** :
|
|
|
|
```text
|
|
failed to bind 127.0.0.1:0: Operation not permitted (os error 1)
|
|
bind: Os { code: 1, kind: PermissionDenied, message: "Operation not permitted" }
|
|
Failed building the Runtime: Os { code: 24, kind: Uncategorized, message: "Too many open files" }
|
|
```
|
|
|
|
Sur #77, QA a rapporté :
|
|
|
|
- `cargo test -p web-server` → 73 passed / **6 failed** (2 binds + 4 tests WebSocket en cascade),
|
|
- `cargo test -p domain -p application -p infrastructure -p web-server` → 275 passed / **10 failed** (tous `infrastructure::session::openai_compat`).
|
|
|
|
**Les mêmes suites passent intégralement hors de ce sandbox** : 79/79 sur `web-server`, exit 0 sur la commande combinée (vérifié par Main, puis rejoué par Git dans son propre environnement). DevBackend observe le même artefact de son côté.
|
|
|
|
## Pourquoi c'est un problème et pas une curiosité
|
|
|
|
Le cœur de #77 était précisément **la révocation de WebSockets vivants** — un durcissement de sécurité non négociable. QA ne pouvait structurellement pas le valider de bout en bout : l'environnement qui doit prouver que la feature marche est celui qui ne peut pas l'exécuter.
|
|
|
|
Le coût réel se paie deux fois :
|
|
|
|
1. **Faux rouges** : QA a bloqué son verdict sur des échecs qui n'existaient pas, et il a fallu du temps à Main pour établir que c'était l'environnement. C'était le bon réflexe de sa part — le problème n'est pas QA, c'est son bac à sable.
|
|
2. **Faux verts potentiels**, plus grave : un test réseau qui ne s'exécute jamais chez QA ne peut pas y échouer non plus. La prochaine feature réseau rejouera la scène, et rien ne garantit qu'on la relira aussi attentivement.
|
|
|
|
## Attendu
|
|
|
|
Que l'environnement de QA puisse ouvrir des sockets sur la loopback, ou à défaut que la limitation soit **explicite et connue** (QA sait ce qu'il ne peut pas valider, et le dit dans son verdict au lieu de le rapporter en échec).
|
|
|
|
À regarder aussi : le `Too many open files` (`code: 24`), qui suggère une limite de descripteurs de fichiers trop basse en plus de la restriction réseau.
|
|
|
|
## Note
|
|
|
|
Voir la mémoire `permissions-sandbox-system-state` pour l'état du système de permissions/sandbox et le risque résiduel déjà documenté.
|
|
|
|
## Périmètre
|
|
|
|
Infrastructure d'agents / configuration de sandbox. Pas de code applicatif. |