STUD-1157 — relayer POST /api/erreurs-page vers le service Rust (serveur_processus.py) #1661

Merged
hermes-fusion merged 2 commits from hermes/stud-1157-relais-erreurs-page into main 2026-10-14 23:25:03 +02:00
Collaborator

Carte t_3dd7c9c0. Le relais du serveur Python (8080) vers service-tableau (127.0.0.1:8096) ne servait que des GET.

Cause, mesurée avant le correctif (le 14/10, par import et par requête) :

concerne('/api/erreurs-page') : False
POST /api/erreurs-page -> 404 Not Found
reçu par le service Rust    : []

do_POST retombait sur recevoir_actualiser, qui rend 404 à tout chemin hors /actualiser*. L'erreur JS de la page n'atteignait donc jamais le journal, et le .catch(() => {}) du front l'avalait en silence.

Remède — _tableau/serveur_processus.py :

  • concerne_post(chemin) : liste blanche d'un chemin (/api/erreurs-page), pas de relais ouvert ;
  • recevoir_erreur_page() : corps relu borné (CORPS_MAX, 64 Ko), relayé tel quel au service, réponse reprise telle quelle (code, corps, type) ; service injoignable : le même 502 qui dit pourquoi que le relais GET ;
  • _tableau/serveur.py : la route est branchée dans do_POST, juste avant le repli sur recevoir_actualiser ; l'entrée reste derrière la session (do_POST vérifie déjà le cookie) ;
  • ni repli Python ni journal local pour cette route : une seule écriture, celle du service.
  • POST /api/processus/signaler n'est pas touché (décision du 13/10), et les gestes de l'Atelier gardent leur propre relais.

Banc — _tableau/test_serveur_processus.py étendu : relais borné, refus du service repris tel quel, routes hors liste non relayées, service muet en 502, en-têtes tordus sans exception. Rejoué sur le code d'avant : AttributeError: module 'serveur_processus' has no attribute 'concerne_post' — la panne, reproduite.

Porte — python3 _tableau/lancer-tests.py --sans-couverture : 160 bancs verts, code 0. garde_fous.py : rien à redire, code 0.

API — aucune route ni aucun champ du service Rust ne change ici. Côté serveur Python (8080), POST /api/erreurs-page cesse de rendre 404 : le front Svelte (front/src/lib/erreurs-navigateur.js, carte voisine) verra enfin son envoi arriver au journal. À signaler à svelte.

Doc : section datée STUD-1157 en fin de _tableau/LXC-132.md. Rien fusionné, rien déployé sur le 132.

Carte `t_3dd7c9c0`. Le relais du serveur Python (8080) vers `service-tableau` (127.0.0.1:8096) ne servait que des GET. **Cause, mesurée avant le correctif** (le 14/10, par import et par requête) : ``` concerne('/api/erreurs-page') : False POST /api/erreurs-page -> 404 Not Found reçu par le service Rust : [] ``` `do_POST` retombait sur `recevoir_actualiser`, qui rend 404 à tout chemin hors `/actualiser*`. L'erreur JS de la page n'atteignait donc jamais le journal, et le `.catch(() => {})` du front l'avalait en silence. **Remède** — `_tableau/serveur_processus.py` : - `concerne_post(chemin)` : liste blanche d'un chemin (`/api/erreurs-page`), pas de relais ouvert ; - `recevoir_erreur_page()` : corps relu borné (`CORPS_MAX`, 64 Ko), relayé tel quel au service, réponse reprise telle quelle (code, corps, type) ; service injoignable : le même 502 qui dit pourquoi que le relais GET ; - `_tableau/serveur.py` : la route est branchée dans `do_POST`, juste avant le repli sur `recevoir_actualiser` ; l'entrée reste derrière la session (`do_POST` vérifie déjà le cookie) ; - ni repli Python ni journal local pour cette route : une seule écriture, celle du service. - `POST /api/processus/signaler` n'est pas touché (décision du 13/10), et les gestes de l'Atelier gardent leur propre relais. **Banc** — `_tableau/test_serveur_processus.py` étendu : relais borné, refus du service repris tel quel, routes hors liste non relayées, service muet en 502, en-têtes tordus sans exception. Rejoué sur le code d'avant : `AttributeError: module 'serveur_processus' has no attribute 'concerne_post'` — la panne, reproduite. **Porte** — `python3 _tableau/lancer-tests.py --sans-couverture` : 160 bancs verts, code 0. `garde_fous.py` : rien à redire, code 0. **API** — aucune route ni aucun champ du service Rust ne change ici. Côté serveur Python (8080), `POST /api/erreurs-page` cesse de rendre 404 : le front Svelte (`front/src/lib/erreurs-navigateur.js`, carte voisine) verra enfin son envoi arriver au journal. À signaler à `svelte`. Doc : section datée STUD-1157 en fin de `_tableau/LXC-132.md`. Rien fusionné, rien déployé sur le 132.
Relais POST /api/erreurs-page : l'erreur JS de la page atteint le service Rust
All checks were successful
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 17s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 15s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 16s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 14s
988471e027
Cause : le relais du serveur Python vers service-tableau ne servait que des GET.
`serveur_processus.concerne('/api/erreurs-page')` rendait False et le POST retombait
sur `recevoir_actualiser`, qui répond 404 à tout chemin hors `/actualiser*`. Mesuré le
14/10 : POST /api/erreurs-page → 404, rien reçu par le service, et le
`.catch(() => {})` du front avalait l'erreur en silence.

Remède : `serveur_processus.concerne_post` (liste blanche d'un chemin) et
`recevoir_erreur_page` relaient le POST au service — corps relu borné (CORPS_MAX, 64 Ko),
réponse reprise telle quelle (code, corps, type). La route est branchée dans `do_POST`
de serveur.py avant le repli sur `recevoir_actualiser` ; elle reste derrière la session.
Service injoignable : le même 502 qui dit pourquoi que le relais GET. Ni repli Python ni
journal local : une seule écriture, celle du service.

Banc : `test_serveur_processus.py` étendu (relais borné, refus du service repris tel quel,
routes hors liste non relayées, service muet en 502) — il échoue sur le code d'avant, où
`concerne_post` n'existe pas. Doc : section STUD-1157 en fin de `_tableau/LXC-132.md`.
hermes-bot force-pushed hermes/stud-1157-relais-erreurs-page from 988471e027
All checks were successful
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 17s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 15s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 16s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 14s
to b609fa4a41
Some checks failed
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Has been cancelled
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Has been cancelled
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Has been cancelled
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Has been cancelled
2026-10-14 23:05:50 +02:00
Compare
hermes-bot force-pushed hermes/stud-1157-relais-erreurs-page from b609fa4a41
Some checks failed
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Has been cancelled
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Has been cancelled
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Has been cancelled
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Has been cancelled
to 1daf7a9df7
All checks were successful
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 34s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 14s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 23s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 21s
2026-10-14 23:08:27 +02:00
Compare
Author
Collaborator

Le relais GET /api/erreurs-page est livré (même branche, même PR)

Tête : 1daf7a9d, rebasé sur httpforge/main = a49cd411. Un seul commit ajouté ; e6479410 (le relais POST) ne bouge pas.

Ce qui change

  • _tableau/serveur_processus.py : /api/erreurs-page entre dans la liste blanche des chemins relayés en GET (concerne), à côté de /api/processus, /api/calendrier et /api/accueil. Aucune logique recopiée : Processus.processus relaie déjà et rend le 502 qui dit pourquoi quand le service est muet.
  • En-tête du module : POST /api/erreurs-page est la seule écriture de cette liste (concerne_post), GET /api/erreurs-page est relayé comme les autres JSON. Le « deux adresses » de l'intro devient « les adresses ci-dessous » (la liste en porte cinq).
  • _tableau/LXC-132.md : section STUD-1157 complétée du GET (deux lignes de tableau, trois puces). Aucune autre section touchée.
  • Ni _tableau/serveur.py au-delà du branchement déjà fait, ni le front, ni /api/processus/signaler.

La panne, mesurée avant / après

Avant (code d'avant le correctif, le même montage que le banc) :

concerne('/api/erreurs-page') : False
HTTP /api/erreurs-page       : 404 | text/plain; charset=utf-8
corps                        : Not Found
chemins vus par le service   : []

Après :

concerne('/api/erreurs-page') : True
HTTP /api/erreurs-page       : 200 | application/json; charset=utf-8
corps                        : {"erreurs": [{"message": "Cannot read properties of undefined", "compte": 2}], "total_24h"
chemins vus par le service   : ['/api/erreurs-page']

Le banc neuf échoue sur le code d'avant :

AssertionError: le relevé des erreurs est relayé en GET
(test_serveur_processus.py, ligne 332)  rc=1

Banc et suite

$ python3 _tableau/test_serveur_processus.py
OK : le relais de l'onglet Processus tient (session, front, JSON, chemins, signalement à Mika, erreur de la page relayée bornée, relevé des erreurs relayé, service muet)
rc=0

$ python3 _tableau/lancer-tests.py --sans-couverture
162 banc(s) verts.
rc=0

$ python3 _tableau/garde_fous.py
garde-fous : rien à redire

Cas neufs : concerne('/api/erreurs-page') vrai ; un voisin n'est pas relayé (/api/erreurs-page/x, /api/erreurs-pages, /api/erreurs, /api/processus/signaler) ; le GET relayé reprend la réponse du service telle quelle (code, corps octet pour octet, type) et le service l'a bien vue passer ; service muet, le 502 dont l'erreur dit « injoignable », comme les trois autres JSON.

CI (pc-studio, workflow tableau.yml)

Rust (_tableau/rust) (push)                -> success (34s)
Front Svelte (_tableau/front) (push)       -> success (14s)
Rust (_tableau/rust) (pull_request)        -> success (23s)
Front Svelte (_tableau/front) (pull_request) -> success (21s)
état combiné : success (4/4)

Journal de la branche

$ git log --oneline httpforge/main..HEAD
1daf7a9d Relais GET /api/erreurs-page : le relevé des erreurs arrive à l'onglet Processus
e6479410 Relais POST /api/erreurs-page : l'erreur JS de la page atteint le service Rust

Ce que je n'ai PAS mesuré

  • Le 132 n'est pas atteignable depuis ce poste (pas de service-tableau ici) : le relais se mesure contre un service de banc, jamais contre le vrai.
  • La route Rust GET /api/erreurs-page n'est pas dans cette branche (elle est sur hermes/stud-1157-backend-erreurs, ab165f74). Le relais Python est prêt ; ce que rend le service déployé aujourd'hui, je ne l'ai pas interrogé.
  • Le rendu de la section « Erreurs de la page et des services » sur la page servie par Python (front, PR #1650) : pas de capture — je ne touche pas au front.
## Le relais `GET /api/erreurs-page` est livré (même branche, même PR) Tête : `1daf7a9d`, rebasé sur `httpforge/main` = `a49cd411`. Un seul commit ajouté ; `e6479410` (le relais POST) ne bouge pas. ### Ce qui change - `_tableau/serveur_processus.py` : `/api/erreurs-page` entre dans la liste blanche des chemins relayés en GET (`concerne`), à côté de `/api/processus`, `/api/calendrier` et `/api/accueil`. Aucune logique recopiée : `Processus.processus` relaie déjà et rend le 502 qui dit pourquoi quand le service est muet. - En-tête du module : `POST /api/erreurs-page` est la seule écriture de cette liste (`concerne_post`), `GET /api/erreurs-page` est relayé comme les autres JSON. Le « deux adresses » de l'intro devient « les adresses ci-dessous » (la liste en porte cinq). - `_tableau/LXC-132.md` : section STUD-1157 complétée du GET (deux lignes de tableau, trois puces). Aucune autre section touchée. - Ni `_tableau/serveur.py` au-delà du branchement déjà fait, ni le front, ni `/api/processus/signaler`. ### La panne, mesurée avant / après Avant (code d'avant le correctif, le même montage que le banc) : concerne('/api/erreurs-page') : False HTTP /api/erreurs-page : 404 | text/plain; charset=utf-8 corps : Not Found chemins vus par le service : [] Après : concerne('/api/erreurs-page') : True HTTP /api/erreurs-page : 200 | application/json; charset=utf-8 corps : {"erreurs": [{"message": "Cannot read properties of undefined", "compte": 2}], "total_24h" chemins vus par le service : ['/api/erreurs-page'] Le banc neuf échoue sur le code d'avant : AssertionError: le relevé des erreurs est relayé en GET (test_serveur_processus.py, ligne 332) rc=1 ### Banc et suite $ python3 _tableau/test_serveur_processus.py OK : le relais de l'onglet Processus tient (session, front, JSON, chemins, signalement à Mika, erreur de la page relayée bornée, relevé des erreurs relayé, service muet) rc=0 $ python3 _tableau/lancer-tests.py --sans-couverture 162 banc(s) verts. rc=0 $ python3 _tableau/garde_fous.py garde-fous : rien à redire Cas neufs : `concerne('/api/erreurs-page')` vrai ; un voisin n'est pas relayé (`/api/erreurs-page/x`, `/api/erreurs-pages`, `/api/erreurs`, `/api/processus/signaler`) ; le GET relayé reprend la réponse du service telle quelle (code, corps octet pour octet, type) et le service l'a bien vue passer ; service muet, le 502 dont l'erreur dit « injoignable », comme les trois autres JSON. ### CI (pc-studio, workflow `tableau.yml`) Rust (_tableau/rust) (push) -> success (34s) Front Svelte (_tableau/front) (push) -> success (14s) Rust (_tableau/rust) (pull_request) -> success (23s) Front Svelte (_tableau/front) (pull_request) -> success (21s) état combiné : success (4/4) ### Journal de la branche $ git log --oneline httpforge/main..HEAD 1daf7a9d Relais GET /api/erreurs-page : le relevé des erreurs arrive à l'onglet Processus e6479410 Relais POST /api/erreurs-page : l'erreur JS de la page atteint le service Rust ### Ce que je n'ai PAS mesuré - Le 132 n'est pas atteignable depuis ce poste (pas de `service-tableau` ici) : le relais se mesure contre un service de banc, jamais contre le vrai. - La route Rust `GET /api/erreurs-page` n'est pas dans cette branche (elle est sur `hermes/stud-1157-backend-erreurs`, `ab165f74`). Le relais Python est prêt ; ce que rend le service déployé aujourd'hui, je ne l'ai pas interrogé. - Le rendu de la section « Erreurs de la page et des services » sur la page servie par Python (front, PR #1650) : pas de capture — je ne touche pas au front.
Author
Collaborator

Relecture — verdict : « Relu, conforme » (8/10). Étiquette relu posée. Je ne fusionne pas.

Commandes rejouées par moi sur le PC, arbre dédié (jamais la copie principale) : git worktree add ~/atelier-hermes/wt/t_c44db485 hermes/stud-1157-relais-erreurs-page (+ un arbre détaché sur httpforge/main = a49cd411).

  1. La panne d'avant est reproduite.
    Sur httpforge/main (a49cd411) : concerne('/api/erreurs-page') → False, concerne_post absent, POST /api/erreurs-page → 404 text/plain « Not Found », rien vu du service.
    Sur la branche (1daf7a9d) : concerne → True, concerne_post → True, POST → 201 application/json, le service reçoit 50 octets sur /api/erreurs-page. Le GET aussi : 404 avant, 200 application/json avec le corps du service tel quel après.

  2. Liste blanche, pas relais ouvert.
    POST /api/erreurs-page seul : /api/erreurs-page/x, /api/erreurs-pages, /api/processus, /api/ailleurs, /actualiser, /reglages, /retour, /cadence restent servis par Python, le service n'en voit aucun. /api/processus/signaler reste servi par Python (403, en-tête X-Retour manquant) : la décision du 13/10 « une seule écriture » tient. Les quatre gestes de l'Atelier gardent leur relais d'avant (ECRITURES), rien de neuf. La route est derrière la session : sans cookie, 401 et rien au service. concerne_post n'est vrai que pour le chemin exact (?x=1 passe par le même chemin, la requête est retirée comme dans le relais GET).

  3. Bornes, mesurées.
    Corps de 100 015 octets → le service reçoit exactement CORPS_MAX = 65 536 octets, réponse 201 reprise. Refus du service (422 text/plain; charset=latin-1) repris tel quel : code, corps et type identiques. Service muet → 502 application/json, corps {"erreur": "service-tableau injoignable : [Errno 111] Connection refused"}, jamais un 200 trompeur. Le corps est lu borné sans exception sur Content-Length absent, illisible ou négatif.

  4. Banc.
    python3 _tableau/test_serveur_processus.py → code 0. Rejoué sur le code d'avant : code 1, AttributeError: module 'serveur_processus' has no attribute 'concerne_post' (ligne 270) : le banc reproduit bien la panne.
    python3 _tableau/lancer-tests.py --sans-couverture → 162 bancs verts, code 0, sur la branche comme sur main : aucun échec préexistant.
    python3 _tableau/garde_fous.py → code 0, rien à redire.

  5. Propreté.
    Base httpforge/main = a49cd411, diff 4 fichiers, +233/-8 (serveur_processus.py, serveur.py, test_serveur_processus.py, LXC-132.md), 0 fichier front, 0 emoji, 0 base64, 0 secret. Deux commits, messages français, sans co-auteur. Branche poussée (1daf7a9d, identique au distant). PR ouverte par hermes-bot, CI pc-studio verte 4/4 sur 1daf7a9d. Rien fusionné, rien déployé (un seul workflow, tableau.yml, tests seulement).

Deux remarques (elles ne bloquent pas la livraison) :

  • Le fichier du front cité deux fois, front/src/lib/erreurs-navigateur.js (docstring de recevoir_erreur_page et ligne 2061 de LXC-132.md), n'existe sur aucune branche : le fichier livré par la carte de la capture est _tableau/front/src/lib/capture-erreurs.js.
  • Le relais POST suit les redirections (urllib.request.urlopen), contrairement aux gestes de l'Atelier (_SansRedirection). Sans effet aujourd'hui : la route Rust de la PR #1642 rend 200, 400, 429 ou 500, jamais de renvoi.

Ce que je n'ai PAS mesuré : le vrai service-tableau du 132 et son journal (/opt/studio/journaux/erreurs-page.jsonl), injoignables d'ici — le relais a été mesuré contre un service de banc ; la rotation du journal passés 4 Mo ; la route Rust, absente de cette branche (PR #1642, encore ouverte).

Point de collision : _tableau/serveur_processus.py est aussi touché par la PR #1650 (régions différentes : NOM_ERREURS et recevoir_signalement) ; le rebasage de #1650 sur main est en échec aujourd'hui (mergeable=false).

Relecture — verdict : « Relu, conforme » (8/10). Étiquette `relu` posée. Je ne fusionne pas. Commandes rejouées par moi sur le PC, arbre dédié (jamais la copie principale) : `git worktree add ~/atelier-hermes/wt/t_c44db485 hermes/stud-1157-relais-erreurs-page` (+ un arbre détaché sur `httpforge/main` = `a49cd411`). 1. La panne d'avant est reproduite. Sur `httpforge/main` (`a49cd411`) : `concerne('/api/erreurs-page')` → `False`, `concerne_post` absent, `POST /api/erreurs-page` → `404 text/plain « Not Found »`, rien vu du service. Sur la branche (`1daf7a9d`) : `concerne` → `True`, `concerne_post` → `True`, `POST` → `201 application/json`, le service reçoit 50 octets sur `/api/erreurs-page`. Le GET aussi : `404` avant, `200 application/json` avec le corps du service tel quel après. 2. Liste blanche, pas relais ouvert. `POST /api/erreurs-page` seul : `/api/erreurs-page/x`, `/api/erreurs-pages`, `/api/processus`, `/api/ailleurs`, `/actualiser`, `/reglages`, `/retour`, `/cadence` restent servis par Python, le service n'en voit aucun. `/api/processus/signaler` reste servi par Python (`403, en-tête X-Retour manquant`) : la décision du 13/10 « une seule écriture » tient. Les quatre gestes de l'Atelier gardent leur relais d'avant (`ECRITURES`), rien de neuf. La route est derrière la session : sans cookie, `401` et rien au service. `concerne_post` n'est vrai que pour le chemin exact (`?x=1` passe par le même chemin, la requête est retirée comme dans le relais GET). 3. Bornes, mesurées. Corps de 100 015 octets → le service reçoit exactement `CORPS_MAX` = 65 536 octets, réponse `201` reprise. Refus du service (`422 text/plain; charset=latin-1`) repris tel quel : code, corps et type identiques. Service muet → `502 application/json`, corps `{"erreur": "service-tableau injoignable : [Errno 111] Connection refused"}`, jamais un 200 trompeur. Le corps est lu borné sans exception sur `Content-Length` absent, illisible ou négatif. 4. Banc. `python3 _tableau/test_serveur_processus.py` → code 0. Rejoué sur le code d'avant : code 1, `AttributeError: module 'serveur_processus' has no attribute 'concerne_post'` (ligne 270) : le banc reproduit bien la panne. `python3 _tableau/lancer-tests.py --sans-couverture` → 162 bancs verts, code 0, sur la branche comme sur `main` : aucun échec préexistant. `python3 _tableau/garde_fous.py` → code 0, rien à redire. 5. Propreté. Base `httpforge/main` = `a49cd411`, diff `4 fichiers, +233/-8` (`serveur_processus.py`, `serveur.py`, `test_serveur_processus.py`, `LXC-132.md`), 0 fichier front, 0 emoji, 0 base64, 0 secret. Deux commits, messages français, sans co-auteur. Branche poussée (`1daf7a9d`, identique au distant). PR ouverte par `hermes-bot`, CI pc-studio verte 4/4 sur `1daf7a9d`. Rien fusionné, rien déployé (un seul workflow, `tableau.yml`, tests seulement). Deux remarques (elles ne bloquent pas la livraison) : - Le fichier du front cité deux fois, `front/src/lib/erreurs-navigateur.js` (docstring de `recevoir_erreur_page` et ligne 2061 de `LXC-132.md`), n'existe sur aucune branche : le fichier livré par la carte de la capture est `_tableau/front/src/lib/capture-erreurs.js`. - Le relais POST suit les redirections (`urllib.request.urlopen`), contrairement aux gestes de l'Atelier (`_SansRedirection`). Sans effet aujourd'hui : la route Rust de la PR #1642 rend `200`, `400`, `429` ou `500`, jamais de renvoi. Ce que je n'ai PAS mesuré : le vrai service-tableau du 132 et son journal (`/opt/studio/journaux/erreurs-page.jsonl`), injoignables d'ici — le relais a été mesuré contre un service de banc ; la rotation du journal passés 4 Mo ; la route Rust, absente de cette branche (PR #1642, encore ouverte). Point de collision : `_tableau/serveur_processus.py` est aussi touché par la PR #1650 (régions différentes : `NOM_ERREURS` et `recevoir_signalement`) ; le rebasage de #1650 sur `main` est en échec aujourd'hui (`mergeable=false`).
hermes-fusion deleted branch hermes/stud-1157-relais-erreurs-page 2026-10-14 23:25:03 +02:00
Collaborator

Fusionnée automatiquement par fusion-auto (forge) : CI verte (Rust et Front Svelte), PR relue (étiquette relu), sans conflit.

Fusionnée automatiquement par `fusion-auto` (forge) : CI verte (Rust et Front Svelte), PR relue (étiquette `relu`), sans conflit.
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
foXaCe/studio!1661
No description provided.