Couverture : mesurer les scripts que leurs bancs lancent en sous-processus, et couvrir ce qui restait #1699

Merged
hermes-fusion merged 2 commits from hermes/cliquet-coeur-decoupage into main 2026-10-15 07:45:03 +02:00
Collaborator

Carte t_bad78dbb (remplace t_6ccf34c4). Branche hermes/cliquet-coeur-decoupage, tete dde7ba23, base main a3575e4d (rebased sur la fusion de #1653).

La panne, mesuree sur un arbre neuf de main

CŒUR revue/retours*/serveur      99%   objectif 100 %
ENSEMBLE _tableau/               97%   objectif 100 %
CLIQUET — la couverture a BAISSÉ : cœur 99.1 % < 99.4 % (dernière mesure) ; ensemble 96.7 % < 99.0 % (dernière mesure)
code=1

Comptes bruts : cœur 3076/3103 (99,1299 %), ensemble 12916/13357 (96,6984 %). Sur main, le cœur vaut 2894/2921 (99,08 %) : les 182 lignes d'ecart sont les modules du decoupage de serveur.py, deja comptes sur la branche.

Cause : _tableau/deploiement-issue.py (134 lignes) et _tableau/verifier-onglets.py (172) etaient a 0 %. Leurs bancs les lancent pourtant pour de vrai par subprocess.run([sys.executable, SCRIPT, …]) ; coverage run ne mesure que le processus qu'il lance, et COVERAGE_PROCESS_START n'etait pose nulle part (aucun .coveragerc). 306 lignes reelles comptees comme du code mort : la cause etait la metrique, pas le code.

Apres (jeu complet --tout --complet)

deploiement-issue.py                  134    134   100%
verifier-onglets.py                   172    172   100%
sous_processus.py                      14     14   100%
CŒUR revue/retours*/serveur                         100%   objectif 100 %
ENSEMBLE _tableau/                                   99%   objectif 100 %
(aucune phrase du cliquet)
1 banc(s) en échec : _tableau/test_accueil_parite.py
  • ensemble : 13254/13371 = 99,1250 % → arrondi 99,1 (avant 96,7) ≥ 99,0 ;
  • cœur : 3089/3103 = 99,5488 % → arrondi 99,5 (avant 99,1) ≥ 99,4 ;
  • seul banc rouge : _tableau/test_accueil_parite.py, rouge d'environnement reproduit tel quel sur un arbre vierge de main (git archive a3575e4d) : AssertionError: complet : le JSON doré n'est plus la sortie de Python. 169 bancs verts, aucun LENT, git status propre hors le cliquet.

Ce que la PR apporte

  1. _tableau/sous_processus.py (module neuf : lancer-tests.py est au plafond de 600 lignes du garde test_garde_plafond.py, mesure a 642 lignes avec le bloc en place → decoupage, le fichier repasse a 582). Il ecrit la configuration des enfants (parallel = True, source en absolu) et le sitecustomize.py qui appelle coverage.process_startup() ; lancer() ajoute COVERAGE_PROCESS_START et PYTHONPATH, COVERAGE_FILE etant deja pose et herite.
  2. Les bancs des deux scripts couvrent leurs chemins d'erreur (forge 404/500/injoignable, reponse non JSON, cinq pages d'issues etrangeres, commentaire ou fermeture refuses, capture non televersee, jeton de ~/.git-credentials dont la valeur ne s'affiche jamais, heure de secours sans base de fuseaux ; HTML sans script, script absent ou tronque, page sans conteneur, /api/processus absent ou illisible, navigateur non executable, tunnel ssh impossible puis tunnel ouvert et referme). test_retours_attente.py couvre 13 des 27 lignes manquantes du cœur.
  3. _tableau/test_lanceur_sous_processus.py : la garde de la mesure. Un script lance en sous-processus entre dans le chiffre, la meme chose sans l'amorce retombe a 0 ligne couverte (la panne, rejouee), et le vrai deploiement-issue.py est mesure.
  4. test_choix_vignette.py prend TMPDIR au lieu de /tmp en dur.

Aucun champ d'API /api/... n'est touche : le front n'a rien a reprendre.

Non mesure

  • La CI Forgejo ne joue que Rust + Svelte : les 169 bancs Python et la couverture restent locaux.
  • Le seuil de 60 s par banc a ete tenu sous une charge partagee (d'autres passes tournaient en parallele) ; aucun LENT.
  • lancer-tests.py --tout sort 1 a cause du seul rouge d'environnement test_accueil_parite.py ; hors ce banc, la porte ne refuse plus rien (aucune phrase du cliquet).

Preuves

/home/atelier/atelier-hermes/preuves-t_bad78dbb/ : avant-tout.log, apres2-tout.log, vierge-accueil-parite.log, rendu/ (cmp identique octet pour octet, 474398 octets).

Carte **t_bad78dbb** (remplace t_6ccf34c4). Branche `hermes/cliquet-coeur-decoupage`, tete `dde7ba23`, base `main` `a3575e4d` (rebased sur la fusion de #1653). ## La panne, mesuree sur un arbre neuf de `main` CŒUR revue/retours*/serveur 99% objectif 100 % ENSEMBLE _tableau/ 97% objectif 100 % CLIQUET — la couverture a BAISSÉ : cœur 99.1 % < 99.4 % (dernière mesure) ; ensemble 96.7 % < 99.0 % (dernière mesure) code=1 Comptes bruts : cœur 3076/3103 (99,1299 %), ensemble 12916/13357 (96,6984 %). Sur `main`, le cœur vaut 2894/2921 (99,08 %) : les 182 lignes d'ecart sont les modules du decoupage de `serveur.py`, deja comptes sur la branche. **Cause** : `_tableau/deploiement-issue.py` (134 lignes) et `_tableau/verifier-onglets.py` (172) etaient a **0 %**. Leurs bancs les lancent pourtant pour de vrai par `subprocess.run([sys.executable, SCRIPT, …])` ; `coverage run` ne mesure que le processus qu'il lance, et `COVERAGE_PROCESS_START` n'etait pose nulle part (aucun `.coveragerc`). 306 lignes reelles comptees comme du code mort : la cause etait la metrique, pas le code. ## Apres (jeu complet `--tout --complet`) deploiement-issue.py 134 134 100% verifier-onglets.py 172 172 100% sous_processus.py 14 14 100% CŒUR revue/retours*/serveur 100% objectif 100 % ENSEMBLE _tableau/ 99% objectif 100 % (aucune phrase du cliquet) 1 banc(s) en échec : _tableau/test_accueil_parite.py - **ensemble** : 13254/13371 = 99,1250 % → arrondi **99,1** (avant 96,7) ≥ 99,0 ; - **cœur** : 3089/3103 = 99,5488 % → arrondi **99,5** (avant 99,1) ≥ 99,4 ; - **seul banc rouge** : `_tableau/test_accueil_parite.py`, rouge d'environnement **reproduit tel quel sur un arbre vierge de `main`** (`git archive a3575e4d`) : `AssertionError: complet : le JSON doré n'est plus la sortie de Python`. 169 bancs verts, aucun LENT, `git status` propre hors le cliquet. ## Ce que la PR apporte 1. `_tableau/sous_processus.py` (module neuf : `lancer-tests.py` est au plafond de 600 lignes du garde `test_garde_plafond.py`, mesure a 642 lignes avec le bloc en place → decoupage, le fichier repasse a 582). Il ecrit la configuration des enfants (`parallel = True`, `source` en absolu) et le `sitecustomize.py` qui appelle `coverage.process_startup()` ; `lancer()` ajoute `COVERAGE_PROCESS_START` et `PYTHONPATH`, `COVERAGE_FILE` etant deja pose et herite. 2. Les bancs des deux scripts couvrent leurs chemins d'erreur (forge 404/500/injoignable, reponse non JSON, cinq pages d'issues etrangeres, commentaire ou fermeture refuses, capture non televersee, jeton de `~/.git-credentials` dont la valeur ne s'affiche jamais, heure de secours sans base de fuseaux ; HTML sans script, script absent ou tronque, page sans conteneur, `/api/processus` absent ou illisible, navigateur non executable, tunnel ssh impossible puis tunnel ouvert et referme). `test_retours_attente.py` couvre 13 des 27 lignes manquantes du cœur. 3. `_tableau/test_lanceur_sous_processus.py` : la garde de la mesure. Un script lance en sous-processus entre dans le chiffre, la meme chose sans l'amorce retombe a 0 ligne couverte (la panne, rejouee), et le vrai `deploiement-issue.py` est mesure. 4. `test_choix_vignette.py` prend `TMPDIR` au lieu de `/tmp` en dur. Aucun champ d'API `/api/...` n'est touche : le front n'a rien a reprendre. ## Non mesure - La CI Forgejo ne joue que Rust + Svelte : les 169 bancs Python et la couverture restent locaux. - Le seuil de 60 s par banc a ete tenu sous une charge partagee (d'autres passes tournaient en parallele) ; aucun LENT. - `lancer-tests.py --tout` sort **1** a cause du seul rouge d'environnement `test_accueil_parite.py` ; hors ce banc, la porte ne refuse plus rien (aucune phrase du cliquet). ## Preuves `/home/atelier/atelier-hermes/preuves-t_bad78dbb/` : `avant-tout.log`, `apres2-tout.log`, `vierge-accueil-parite.log`, `rendu/` (`cmp` identique octet pour octet, 474398 octets).
Cause. Le découpage de `serveur.py` a sorti des lignes COUVERTES vers des
modules neufs (`serveur_auth.py`, `serveur_collecte.py`, `serveur_images.py`)
tandis que `serveur.py` gardait ses lignes non couvertes. Le cœur mesuré
baissait donc, et le cliquet refusait — un refus qui accusait la métrique,
pas le code qu'elle protège.

Remède. `COEUR` gagne, par liste explicite, les modules issus de ce découpage
(plus `serveur_badge.py`, posé d'avance pour la PR #1602). Aucun motif
`serveur*` : mesuré par t_15d1b161, il ferait entrer les `serveur_*` qui ne
viennent pas du découpage (dont `serveur_processus.py`, 91 %) et ferait
chuter la mesure pour de bon. `test_lanceur_compte.py` garde la liste : chaque
module du découpage doit compter au cœur, chaque `serveur_*` préexistant doit
rester dehors, et `resume` doit les peser.

Mesure. Jeu complet `--tout --complet` sur un arbre de `main` (babcc421) :
cœur 2894/2921 = 99,076 % avant, 3076/3103 = 99,130 % après. La page rendue
à heure figée est identique octet pour octet.

L'ENSEMBLE refuse encore pour une cause INDÉPENDANTE : 96,54 % < 99,0 %,
depuis la fusion de d747d11f (#1626) qui a ajouté `deploiement-issue.py` (134
l.) et `verifier-onglets.py` (172 l.), mesurés à 0 % : leurs bancs les lancent
en sous-processus, que `coverage` ne voit pas.
Couverture : mesurer les scripts que leurs bancs lancent en sous-processus, et couvrir ce qui restait
All checks were successful
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 22s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 17s
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 15s
dde7ba234d
Cause. `_tableau/deploiement-issue.py` (134 lignes) et `_tableau/verifier-onglets.py` (172) étaient
comptés à 0 % par la porte de couverture, alors que leurs bancs les exécutent pour de vrai par
`subprocess.run([sys.executable, SCRIPT, …])` : `coverage run` ne mesure que le processus qu'il lance,
et `COVERAGE_PROCESS_START` n'était posé nulle part (aucun `.coveragerc` dans le dépôt). Mesuré sur un
arbre neuf de `main` : ensemble 96,70 % (12916/13357) au lieu de 98,97 % (12916/13051) avant que la
fusion `d747d11f` n'ajoute les deux scripts, cœur 99,1 %. Le cliquet refusait donc une baisse que
personne n'avait causée : `lancer-tests.py` sortait 1 pour tout le monde, `livrer.sh` refusait toute
livraison. La cause était la métrique, pas le code.

Remède, trois pièces.

1. `_tableau/sous_processus.py`, un module neuf — `lancer-tests.py` est au plafond de 600 lignes du
   garde `test_garde_plafond.py`, et le rôle a son fichier. Il écrit dans le dossier du passage la
   configuration des enfants (`parallel = True`, `source` en absolu) et le `sitecustomize.py` qui
   appelle `coverage.process_startup()` ; `lancer()` ajoute `COVERAGE_PROCESS_START` et `PYTHONPATH` à
   l'environnement des bancs, `COVERAGE_FILE` étant déjà posé et hérité. Les deux scripts passent de
   0 % à 306/306.

2. Les bancs de ces deux scripts couvrent leurs chemins d'erreur, qui n'étaient exécutés par aucun
   banc : forge qui répond 404, 500 ou pas du tout, article de liste qui n'est pas du JSON, cinq pages
   d'issues étrangères, commentaire ou fermeture refusés, capture non téléversée, échec sans journal,
   jeton pris dans `~/.git-credentials` (dont la valeur ne doit jamais s'afficher) et `--jeton`
   explicite, heure de secours sans base de fuseaux ; HTML sans script, script absent ou tronqué, page
   sans le conteneur de l'onglet, `/api/processus` absent ou illisible, navigateur présent mais non
   exécutable, tunnel ssh impossible, et tunnel ouvert puis refermé. `test_retours_attente.py` couvre
   de même les filets de `retours_attente.py` : Multica muet sur un ticket, refus d'écriture, date de
   mise à jour illisible, bloqué de plus de 24 h sans le label, aucun agent Mika — 13 des 27 lignes
   manquantes du cœur.

3. `_tableau/test_lanceur_sous_processus.py` tient la mesure : un script lancé en sous-processus par
   un banc entre dans le chiffre, la même chose sans l'amorce retombe à 0 ligne couverte (la panne,
   rejouée), et le vrai `deploiement-issue.py` est mesuré. Sans lui, la mesure se reperdrait au premier
   banc neuf — c'est exactement ce qui est arrivé quand `d747d11f` a ajouté les deux scripts.

4. `test_choix_vignette.py` prend le dossier temporaire de l'environnement au lieu de `/tmp` en dur :
   un banc rouge perd ses lignes de couverture, et `/tmp` plein coûtait 0,16 point à l'ensemble.

Mesuré, jeu complet `--tout --complet` : ensemble 13254/13371 = 99,1 % (avant 96,7), cœur 3089/3103 =
99,5 % (avant 99,1), aucune phrase du cliquet, 306/306 sur les deux scripts, `sous_processus.py`
14/14. Seul banc rouge : `_tableau/test_accueil_parite.py`, reproduit tel quel sur un arbre vierge de
`main`. Le rendu à heure figée est identique octet pour octet.
Author
Collaborator

Preuves, mesurees le 2026-10-15 sur un arbre de travail dedie.

Carte t_bad78dbb (remplace t_6ccf34c4). Branche hermes/cliquet-coeur-decoupage, tete dde7ba23, base main a3575e4d (rebased sur la fusion de #1653).

La panne, mesuree sur un arbre neuf de main

CŒUR revue/retours*/serveur      99%   objectif 100 %
ENSEMBLE _tableau/               97%   objectif 100 %
CLIQUET — la couverture a BAISSÉ : cœur 99.1 % < 99.4 % (dernière mesure) ; ensemble 96.7 % < 99.0 % (dernière mesure)
code=1

Comptes bruts : cœur 3076/3103 (99,1299 %), ensemble 12916/13357 (96,6984 %). Sur main, le cœur vaut 2894/2921 (99,08 %) : les 182 lignes d'ecart sont les modules du decoupage de serveur.py, deja comptes sur la branche.

Cause : _tableau/deploiement-issue.py (134 lignes) et _tableau/verifier-onglets.py (172) etaient a 0 %. Leurs bancs les lancent pourtant pour de vrai par subprocess.run([sys.executable, SCRIPT, …]) ; coverage run ne mesure que le processus qu'il lance, et COVERAGE_PROCESS_START n'etait pose nulle part (aucun .coveragerc). 306 lignes reelles comptees comme du code mort : la cause etait la metrique, pas le code.

Apres (jeu complet --tout --complet)

deploiement-issue.py                  134    134   100%
verifier-onglets.py                   172    172   100%
sous_processus.py                      14     14   100%
CŒUR revue/retours*/serveur                         100%   objectif 100 %
ENSEMBLE _tableau/                                   99%   objectif 100 %
(aucune phrase du cliquet)
1 banc(s) en échec : _tableau/test_accueil_parite.py
  • ensemble : 13254/13371 = 99,1250 % → arrondi 99,1 (avant 96,7) ≥ 99,0 ;
  • cœur : 3089/3103 = 99,5488 % → arrondi 99,5 (avant 99,1) ≥ 99,4 ;
  • seul banc rouge : _tableau/test_accueil_parite.py, rouge d'environnement reproduit tel quel sur un arbre vierge de main (git archive a3575e4d) : AssertionError: complet : le JSON doré n'est plus la sortie de Python. 169 bancs verts, aucun LENT, git status propre hors le cliquet.

Ce que la PR apporte

  1. _tableau/sous_processus.py (module neuf : lancer-tests.py est au plafond de 600 lignes du garde test_garde_plafond.py, mesure a 642 lignes avec le bloc en place → decoupage, le fichier repasse a 582). Il ecrit la configuration des enfants (parallel = True, source en absolu) et le sitecustomize.py qui appelle coverage.process_startup() ; lancer() ajoute COVERAGE_PROCESS_START et PYTHONPATH, COVERAGE_FILE etant deja pose et herite.
  2. Les bancs des deux scripts couvrent leurs chemins d'erreur (forge 404/500/injoignable, reponse non JSON, cinq pages d'issues etrangeres, commentaire ou fermeture refuses, capture non televersee, jeton de ~/.git-credentials dont la valeur ne s'affiche jamais, heure de secours sans base de fuseaux ; HTML sans script, script absent ou tronque, page sans conteneur, /api/processus absent ou illisible, navigateur non executable, tunnel ssh impossible puis tunnel ouvert et referme). test_retours_attente.py couvre 13 des 27 lignes manquantes du cœur.
  3. _tableau/test_lanceur_sous_processus.py : la garde de la mesure. Un script lance en sous-processus entre dans le chiffre, la meme chose sans l'amorce retombe a 0 ligne couverte (la panne, rejouee), et le vrai deploiement-issue.py est mesure.
  4. test_choix_vignette.py prend TMPDIR au lieu de /tmp en dur.

Aucun champ d'API /api/... n'est touche : le front n'a rien a reprendre.

Non mesure

  • La CI Forgejo ne joue que Rust + Svelte : les 169 bancs Python et la couverture restent locaux.
  • Le seuil de 60 s par banc a ete tenu sous une charge partagee (d'autres passes tournaient en parallele) ; aucun LENT.
  • lancer-tests.py --tout sort 1 a cause du seul rouge d'environnement test_accueil_parite.py ; hors ce banc, la porte ne refuse plus rien (aucune phrase du cliquet).

Preuves

/home/atelier/atelier-hermes/preuves-t_bad78dbb/ : avant-tout.log, apres2-tout.log, vierge-accueil-parite.log, rendu/ (cmp identique octet pour octet, 474398 octets).

Preuves, mesurees le 2026-10-15 sur un arbre de travail dedie. Carte **t_bad78dbb** (remplace t_6ccf34c4). Branche `hermes/cliquet-coeur-decoupage`, tete `dde7ba23`, base `main` `a3575e4d` (rebased sur la fusion de #1653). ## La panne, mesuree sur un arbre neuf de `main` CŒUR revue/retours*/serveur 99% objectif 100 % ENSEMBLE _tableau/ 97% objectif 100 % CLIQUET — la couverture a BAISSÉ : cœur 99.1 % < 99.4 % (dernière mesure) ; ensemble 96.7 % < 99.0 % (dernière mesure) code=1 Comptes bruts : cœur 3076/3103 (99,1299 %), ensemble 12916/13357 (96,6984 %). Sur `main`, le cœur vaut 2894/2921 (99,08 %) : les 182 lignes d'ecart sont les modules du decoupage de `serveur.py`, deja comptes sur la branche. **Cause** : `_tableau/deploiement-issue.py` (134 lignes) et `_tableau/verifier-onglets.py` (172) etaient a **0 %**. Leurs bancs les lancent pourtant pour de vrai par `subprocess.run([sys.executable, SCRIPT, …])` ; `coverage run` ne mesure que le processus qu'il lance, et `COVERAGE_PROCESS_START` n'etait pose nulle part (aucun `.coveragerc`). 306 lignes reelles comptees comme du code mort : la cause etait la metrique, pas le code. ## Apres (jeu complet `--tout --complet`) deploiement-issue.py 134 134 100% verifier-onglets.py 172 172 100% sous_processus.py 14 14 100% CŒUR revue/retours*/serveur 100% objectif 100 % ENSEMBLE _tableau/ 99% objectif 100 % (aucune phrase du cliquet) 1 banc(s) en échec : _tableau/test_accueil_parite.py - **ensemble** : 13254/13371 = 99,1250 % → arrondi **99,1** (avant 96,7) ≥ 99,0 ; - **cœur** : 3089/3103 = 99,5488 % → arrondi **99,5** (avant 99,1) ≥ 99,4 ; - **seul banc rouge** : `_tableau/test_accueil_parite.py`, rouge d'environnement **reproduit tel quel sur un arbre vierge de `main`** (`git archive a3575e4d`) : `AssertionError: complet : le JSON doré n'est plus la sortie de Python`. 169 bancs verts, aucun LENT, `git status` propre hors le cliquet. ## Ce que la PR apporte 1. `_tableau/sous_processus.py` (module neuf : `lancer-tests.py` est au plafond de 600 lignes du garde `test_garde_plafond.py`, mesure a 642 lignes avec le bloc en place → decoupage, le fichier repasse a 582). Il ecrit la configuration des enfants (`parallel = True`, `source` en absolu) et le `sitecustomize.py` qui appelle `coverage.process_startup()` ; `lancer()` ajoute `COVERAGE_PROCESS_START` et `PYTHONPATH`, `COVERAGE_FILE` etant deja pose et herite. 2. Les bancs des deux scripts couvrent leurs chemins d'erreur (forge 404/500/injoignable, reponse non JSON, cinq pages d'issues etrangeres, commentaire ou fermeture refuses, capture non televersee, jeton de `~/.git-credentials` dont la valeur ne s'affiche jamais, heure de secours sans base de fuseaux ; HTML sans script, script absent ou tronque, page sans conteneur, `/api/processus` absent ou illisible, navigateur non executable, tunnel ssh impossible puis tunnel ouvert et referme). `test_retours_attente.py` couvre 13 des 27 lignes manquantes du cœur. 3. `_tableau/test_lanceur_sous_processus.py` : la garde de la mesure. Un script lance en sous-processus entre dans le chiffre, la meme chose sans l'amorce retombe a 0 ligne couverte (la panne, rejouee), et le vrai `deploiement-issue.py` est mesure. 4. `test_choix_vignette.py` prend `TMPDIR` au lieu de `/tmp` en dur. Aucun champ d'API `/api/...` n'est touche : le front n'a rien a reprendre. ## Non mesure - La CI Forgejo ne joue que Rust + Svelte : les 169 bancs Python et la couverture restent locaux. - Le seuil de 60 s par banc a ete tenu sous une charge partagee (d'autres passes tournaient en parallele) ; aucun LENT. - `lancer-tests.py --tout` sort **1** a cause du seul rouge d'environnement `test_accueil_parite.py` ; hors ce banc, la porte ne refuse plus rien (aucune phrase du cliquet). ## Preuves `/home/atelier/atelier-hermes/preuves-t_bad78dbb/` : `avant-tout.log`, `apres2-tout.log`, `vierge-accueil-parite.log`, `rendu/` (`cmp` identique octet pour octet, 474398 octets).
hermes-bot force-pushed hermes/cliquet-coeur-decoupage from dde7ba234d
All checks were successful
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 22s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 17s
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 15s
to 2b0ad288f1
All checks were successful
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 30s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 22s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 22s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 21s
2026-10-15 02:02:18 +02:00
Compare
Author
Collaborator

Rebasage sur main b613cad4 (la PR #1694 est entree entre-temps ; elle ne touche aucun de mes fichiers). Tete 2b0ad288, CI relancee.

Nouvelle mesure sur l'arbre fusionne, jeu complet --tout --complet :

  • ensemble 13290/13409 = 99,1125 % → arrondi 99,1 ≥ 99,0 ;
  • cœur 3089/3103 = 99,5488 % → arrondi 99,5 ≥ 99,4 ;
  • aucune phrase du cliquet ; deploiement-issue.py 134/134, verifier-onglets.py 172/172, sous_processus.py 14/14 ;
  • 170 bancs verts, un seul rouge : _tableau/test_accueil_parite.py, deja reproduit tel quel sur un arbre vierge ;
  • git status vide apres la mesure (le cliquet ne se reecrit pas quand la mesure ne bouge pas).

Le rebasage n'a pas change une ligne de mes fichiers ; c'est la meme mesure, sur la base a jour.

**Rebasage sur `main` `b613cad4`** (la PR #1694 est entree entre-temps ; elle ne touche aucun de mes fichiers). Tete **`2b0ad288`**, CI relancee. Nouvelle mesure sur l'arbre fusionne, jeu complet `--tout --complet` : - **ensemble** 13290/13409 = 99,1125 % → arrondi **99,1** ≥ 99,0 ; - **cœur** 3089/3103 = 99,5488 % → arrondi **99,5** ≥ 99,4 ; - aucune phrase du cliquet ; `deploiement-issue.py` 134/134, `verifier-onglets.py` 172/172, `sous_processus.py` 14/14 ; - 170 bancs verts, **un seul rouge** : `_tableau/test_accueil_parite.py`, deja reproduit tel quel sur un arbre vierge ; - `git status` vide apres la mesure (le cliquet ne se reecrit pas quand la mesure ne bouge pas). Le rebasage n'a pas change une ligne de mes fichiers ; c'est la meme mesure, sur la base a jour.
hermes-fusion deleted branch hermes/cliquet-coeur-decoupage 2026-10-15 07:45: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!1699
No description provided.