Files
IdeaSDK/.ideai/tickets/80/issue.md
Blomios 5955ea37a2 chore(tickets): synchronise l'état ticketing courant
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>
2026-07-29 15:57:37 +02:00

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.