État d'exécution accumulé (tickets créés/mis à jour hors #43, notes de mémoire, tâche de fond) capturé au moment du commit de la feature. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2.9 KiB
id, number, title, status, priority, sprint, links, agentRefs, createdBy, updatedBy, createdAt, updatedAt, version
| id | number | title | status | priority | sprint | links | agentRefs | createdBy | updatedBy | createdAt | updatedAt | version | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| f36ada98-0ca1-41e6-94c1-24eb81731fee | 80 | L'environnement de QA ne peut pas ouvrir de socket — il ne peut pas valider les features réseau | open | medium | null |
|
|
|
1784287697560 | 1784287697560 | 1 |
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 :
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 (tousinfrastructure::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 :
- 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.
- 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.