Onglet Top vidéos : repli /processus/?top, styles de la base et entrée dans le relevé d'homogénéité (STUD-1226, carte t_579ad264) #1635

Merged
foXaCe merged 2 commits from hermes/top-videos-svelte into main 2026-10-16 21:49:42 +02:00
Collaborator

Carte kanban t_579ad264 — « Implémenter l'onglet Top vidéos en Svelte » (reprise de STUD-1226).

Ce que la carte demandait, et ce qui manquait vraiment

Le composant _tableau/front/src/Top.svelte est déjà dans main depuis la PR #1576 (STUD-1226). L'inventaire de
parité (carte t_5263bc76, commentaire n° 163) a mesuré deux manques réels sur cette carte :

  1. /processus/?top était promis par un commentaire de main.js mais jamais implémenté : l'onglet ne montait que
    sur #top-app (la page Python). Conséquence : sur la page d'essai, l'onglet Top n'était ni regardable ni
    mesurable
    — le relevé d'homogénéité STUD-1185 ne listait pas sa page, et un rechargement après un filtre
    retombait sur Processus (l'onglet réécrivait l'adresse sans son marqueur).
  2. Au premier passage du relevé, l'onglet sortait de la base : quatre <a> sans data-base (titre, miniature,
    lien Studio) et une infobulle à 13 px là où tout le tableau est à 12 px.

Ce que la branche fait

  • main.js : repli ?top monté dans #processus-app (et retiré de la cible de Processus, sinon les deux onglets se
    superposaient). Données : data-donnees sur la page Python (inchangé), /api/top sur la page d'essai.
  • apercu.py : sert /api/top depuis front/tests/api-top.json, réponse figée produite par top_donnees.donnees_top
    (heure du relevé d'homogénéité, 2026-10-13 16 h 12) — 8 lignes publiques, 3 non publiques, un gain négatif, un gain
    inconnu (null, jamais 0), une chaîne sans réponse Analytics.
  • lib/top.js + Top.svelte : versAdresseOnglet garde le marqueur de page (?top) dans l'adresse.
  • Top.svelte : liens passés à data-base="lien" + LIEN de la base, infobulle à text-xs. La vedette prend la
    présentation de l'Accueil (Lien « Voir sur YouTube », titre en texte), la miniature reste cliquable.
  • homogeneite.py + homogeneite-releve.mjs : la page top entre dans le relevé (11 pages × 4 configurations).

Preuves (sorties réelles)

npx vitest run                                  Test Files 20 passed (20) / Tests 168 passed (168)
npx vite build                                  ✓ built ; dist/ = 902 684 octets, app.js 139,49 kB
python3 _tableau/front/homogeneite.py --sortie … homogénéité : 44 relevés (Chrome/155.0.8059.79),
                                                5 écarts connus, 0 nouveaux, 0 résolus, 0 captures changées
python3 _tableau/test_top_donnees.py            OK (réponse figée comprise)
python3 _tableau/test_apercu_front.py           OK (l'aperçu sert /api/top ; 404 sans instantané)
python3 _tableau/test_charte_ui.py              OK (257 classes au socle, 0 locale)
python3 _tableau/front/garde-habillage.py       38 occurrences, 38 admises, 0 refus
python3 _tableau/test_100_svelte_rust.py, test_homogeneite.py, test_charte_svelte.py, test_charte_title.py,
test_garde_plafond.py, test_garde_doublons.py, test_garde_couches.py, test_tableau_bord_page.py,
test_verifier_page.py                            tous code 0

Deux tests nouveaux reproduisent la panne : sur le main.js d'avant, les deux assertions du repli échouent
(vérifié sur git show HEAD~2:_tableau/front/src/main.js, « ÉCHEC repli ?top », « ÉCHEC lecture /api/top »).

Non-régression de la page Python : page rendue par rendu-fige.py servie avec /api/top en 404, l'onglet monte
quand même ses chiffres depuis data-donnees (mesuré dans Chrome : [data-top-pret] présent). L'ancien onglet Python
reste accessible (#o-ancien-top, panneau p-top-ancien) et #o-top reste l'onglet de la barre.

Captures

Bureau (1600) et téléphone (390), clair et sombre : top-bureau-sombre.png, top-bureau-clair.png,
top-telephone-sombre.png, top-telephone-clair.png (relevé d'homogénéité, captures pleine page). Vérifié à l'œil :
pas de débordement horizontal (scrollWidth == clientWidth), aucun title= natif, aucun emoji, tous les liens à
12 px --text-link, 24 infobulles, et le dernier paragraphe entier dans le DOM (le relevé le coupait : sa capture est
limitée à la fenêtre ; une capture captureBeyondViewport le montre complet).

À trancher par l'opérateur (dit, pas caché)

  • Le titre de la vedette n'est plus un lien : il suit la présentation de l'Accueil (titre en texte + « Voir sur
    YouTube »). Rien n'est perdu — la miniature reste cliquable, « Studio » reste là, et la liste garde ses titres
    cliquables. Si l'opérateur préfère le titre cliquable de la vedette, c'est une variante à proposer, pas un écrasement.
  • Le seuil vert reste à > 500 (le libellé dit « plus de 500 ») alors que le Python colorait à ≥ 500 : écart d'un
    cran déjà relevé par l'inventaire, non touché ici.
  • Hors périmètre, mesuré au passage : la puce « Ctrl K » de BarreOutils (base) reste visible à 390 px, ce qui est
    incongru au téléphone — même comportement dans tous les onglets ; à porter au porteur de la base.

Hors périmètre de cette carte

/api/top (route Rust) appartient à t_c54aeea1 et la bascule du front sur cette route à t_87c3e84d : le banc
test_100_svelte_rust.py continue d'y lister le Top vidéos (page Python, 0 %), c'est attendu.

Carte kanban **t_579ad264** — « Implémenter l'onglet Top vidéos en Svelte » (reprise de STUD-1226). ## Ce que la carte demandait, et ce qui manquait vraiment Le composant `_tableau/front/src/Top.svelte` est déjà dans `main` depuis la PR #1576 (STUD-1226). L'inventaire de parité (carte t_5263bc76, commentaire n° 163) a mesuré **deux manques réels** sur cette carte : 1. `/processus/?top` était **promis par un commentaire de `main.js` mais jamais implémenté** : l'onglet ne montait que sur `#top-app` (la page Python). Conséquence : sur la page d'essai, l'onglet Top n'était **ni regardable ni mesurable** — le relevé d'homogénéité STUD-1185 ne listait pas sa page, et un rechargement après un filtre retombait sur Processus (l'onglet réécrivait l'adresse sans son marqueur). 2. Au premier passage du relevé, l'onglet sortait de la base : **quatre `<a>` sans `data-base`** (titre, miniature, lien Studio) et une **infobulle à 13 px** là où tout le tableau est à 12 px. ## Ce que la branche fait - `main.js` : repli `?top` monté dans `#processus-app` (et retiré de la cible de Processus, sinon les deux onglets se superposaient). Données : `data-donnees` sur la page Python (inchangé), `/api/top` sur la page d'essai. - `apercu.py` : sert `/api/top` depuis `front/tests/api-top.json`, **réponse figée produite par `top_donnees.donnees_top`** (heure du relevé d'homogénéité, 2026-10-13 16 h 12) — 8 lignes publiques, 3 non publiques, un gain négatif, un gain inconnu (`null`, jamais 0), une chaîne sans réponse Analytics. - `lib/top.js` + `Top.svelte` : `versAdresseOnglet` garde le marqueur de page (`?top`) dans l'adresse. - `Top.svelte` : liens passés à `data-base="lien"` + `LIEN` de la base, infobulle à `text-xs`. La vedette prend la présentation de l'Accueil (`Lien` « Voir sur YouTube », titre en texte), **la miniature reste cliquable**. - `homogeneite.py` + `homogeneite-releve.mjs` : la page `top` entre dans le relevé (11 pages × 4 configurations). ## Preuves (sorties réelles) ``` npx vitest run Test Files 20 passed (20) / Tests 168 passed (168) npx vite build ✓ built ; dist/ = 902 684 octets, app.js 139,49 kB python3 _tableau/front/homogeneite.py --sortie … homogénéité : 44 relevés (Chrome/155.0.8059.79), 5 écarts connus, 0 nouveaux, 0 résolus, 0 captures changées python3 _tableau/test_top_donnees.py OK (réponse figée comprise) python3 _tableau/test_apercu_front.py OK (l'aperçu sert /api/top ; 404 sans instantané) python3 _tableau/test_charte_ui.py OK (257 classes au socle, 0 locale) python3 _tableau/front/garde-habillage.py 38 occurrences, 38 admises, 0 refus python3 _tableau/test_100_svelte_rust.py, test_homogeneite.py, test_charte_svelte.py, test_charte_title.py, test_garde_plafond.py, test_garde_doublons.py, test_garde_couches.py, test_tableau_bord_page.py, test_verifier_page.py tous code 0 ``` Deux tests nouveaux **reproduisent la panne** : sur le `main.js` d'avant, les deux assertions du repli échouent (vérifié sur `git show HEAD~2:_tableau/front/src/main.js`, « ÉCHEC repli ?top », « ÉCHEC lecture /api/top »). Non-régression de la page Python : page rendue par `rendu-fige.py` servie avec `/api/top` en **404**, l'onglet monte quand même ses chiffres depuis `data-donnees` (mesuré dans Chrome : `[data-top-pret]` présent). L'ancien onglet Python reste accessible (`#o-ancien-top`, panneau `p-top-ancien`) et `#o-top` reste l'onglet de la barre. ## Captures Bureau (1600) et téléphone (390), clair et sombre : `top-bureau-sombre.png`, `top-bureau-clair.png`, `top-telephone-sombre.png`, `top-telephone-clair.png` (relevé d'homogénéité, captures pleine page). Vérifié à l'œil : pas de débordement horizontal (`scrollWidth == clientWidth`), aucun `title=` natif, aucun emoji, tous les liens à 12 px `--text-link`, 24 infobulles, et le dernier paragraphe entier dans le DOM (le relevé le coupait : sa capture est limitée à la fenêtre ; une capture `captureBeyondViewport` le montre complet). ## À trancher par l'opérateur (dit, pas caché) - Le **titre de la vedette n'est plus un lien** : il suit la présentation de l'Accueil (titre en texte + « Voir sur YouTube »). Rien n'est perdu — la miniature reste cliquable, « Studio » reste là, et la liste garde ses titres cliquables. Si l'opérateur préfère le titre cliquable de la vedette, c'est une variante à proposer, pas un écrasement. - Le seuil vert reste à `> 500` (le libellé dit « plus de 500 ») alors que le Python colorait à `≥ 500` : écart d'un cran déjà relevé par l'inventaire, non touché ici. - Hors périmètre, mesuré au passage : la puce « Ctrl K » de `BarreOutils` (base) reste visible à 390 px, ce qui est incongru au téléphone — même comportement dans tous les onglets ; à porter au porteur de la base. ## Hors périmètre de cette carte `/api/top` (route Rust) appartient à **t_c54aeea1** et la bascule du front sur cette route à **t_87c3e84d** : le banc `test_100_svelte_rust.py` continue d'y lister le Top vidéos (page Python, 0 %), c'est attendu.
Cause : le commentaire de `main.js` annonçait `/processus/?top`, mais le code ne lisait que `#top-app` (la page
Python) ; sur la page d'essai l'onglet ne montait donc jamais, et un rechargement après un filtre retombait sur
Processus (l'onglet réécrivait l'adresse sans son marqueur). Deuxième cause, mesurée au relevé d'homogénéité : quatre
`<a>` sans `data-base` (titre, miniature, Studio) et une infobulle à 13 px là où le reste du tableau est à 12 px.

Remède : le repli `?top` monte l'onglet dans `#processus-app` (et l'ôte de la cible de Processus) ; ses données
viennent de `data-donnees` sur la page Python et de `/api/top` sur la page d'essai, l'aperçu servant cette route
depuis `front/tests/api-top.json` (réponse figée produite par `donnees_top`, vérifiée contre lui par
`test_top_donnees.py`) ; `versAdresseOnglet` garde le marqueur de page dans l'adresse ; les liens passent à
`data-base="lien"` avec `LIEN`, l'infobulle à `text-xs`, et la vedette prend la présentation de l'Accueil (titre en
texte, « Voir sur YouTube »), la miniature restant cliquable. Deux tests nouveaux reproduisent la panne : sur le
`main.js` d'avant, les deux assertions du repli échouent (mesuré).
L'onglet Top vidéos entre dans le relevé d'homogénéité (STUD-1185)
All checks were successful
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 15s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 13s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 20s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 14s
b3979424b9
Cause : le relevé ne listait pas la page du Top vidéos, alors que la charte demande qu'un nouvel onglet soit mesuré
comme Processus (« un onglet Svelte et un onglet Python sont indiscernables »). Deux écarts réels y sont apparus au
premier passage : l'infobulle de la ligne sans relevé et quatre liens hors base.

Remède : `("top", "/processus/?top")` dans les pages du relevé, la réponse figée passée à l'aperçu, et le pilote
Chrome qui attend la marque de montage `data-top-pret`. Mesuré après correctif : 44 relevés (11 pages × 4
configurations), 5 écarts connus, 0 nouveau, 0 résolu.
Author
Collaborator

Relu, conforme. Vérifié dans un arbre de travail dédié (hermes/top-videos-svelte, tête b3979424, base 119f2c12 = origin/main) ; diff de 10 fichiers, +317 −39, rien hors _tableau/front/ et _tableau/test_*.

  • CI Forgejo sur b3979424 : pc-studio verte 4/4 (Rust push/PR, Front Svelte push/PR).
  • cargo test --release --locked (_tableau/rust) : 38 tests, 0 échec, code 0.
  • npx vitest run : 20 fichiers, 168 tests passés. vite build : code 0, dist/ 903 158 octets.
  • Homogénéité STUD-1185 rejouée : 44 relevés (11 pages × 4 configurations — la page top y entre pour la première fois : 90 éléments à 1 600 px, 63 à 390 px), 5 écarts connus, 0 nouveau, 0 résolu. Comparaison pixel à pixel avec les références : NON MESURÉE (cette machine n'a pas de référence cachyos-x8664-chrome155), dit par le script lui-même.
  • Navigateur (apercu.py, données figées, Chrome 155 sans tête, heure de Paris figée) : 4 captures dans ~/atelier-hermes/captures-t_24dfb027/ (bureau et téléphone, sombre et clair) ; 0 attribut title, 0 emoji, 0 erreur console, aucun débordement horizontal à 390 px (scrollWidth = 390).
  • Filtres : clic sur « Short » → ?top&etat=short, 11 → 2 lignes ; deux clics sur l'en-tête « Vues » → ?top&etat=short&tri=-vues, la première ligne change ; « Réinitialiser » → ?top, 11 lignes. Le marqueur top reste dans l'adresse dans les trois cas. Par l'adresse : ?top&chaine=Minute Sport → 1 ligne, ?top&periode=semaine → 4 lignes, ?top&etat=long&tri=vues → 6 lignes.
  • Miniatures : 23 images, 23 chargées (i.ytimg.com), aucune cassée.
  • Infobulle du thème ouverte au survol : fond #303030 à 88 %, texte blanc, 12 px, rayon 8 px, ombre — identique en sombre et en clair, comme la charte le demande.
  • Bouton « Signaler à Mika » présent sur l'alerte « Minute Sport : pas de réponse… » ; chiffre clé « +1 982 vues en 24 h » avec sa définition ; dates « heure de Paris », aucune date ISO affichée ; aucune trace de Python dans les textes.

Réserve, à trancher par vous : le titre de la vedette n'est plus un lien (avant : <a> ; après : texte + « Voir sur YouTube »). La règle 4 de CHARTE-UI.md demande qu'une PR qui retire une fonction visible d'un onglet Svelte le dise dans son titre et ne se fusionne pas sans votre accord écrit. Trois liens restent vers la vidéo : la miniature, « Voir sur YouTube » et « Studio ». L'étiquette operateur est posée à la place de relu : la fusion vous revient.

**Relu, conforme.** Vérifié dans un arbre de travail dédié (`hermes/top-videos-svelte`, tête `b3979424`, base `119f2c12` = `origin/main`) ; diff de 10 fichiers, +317 −39, rien hors `_tableau/front/` et `_tableau/test_*`. - **CI Forgejo** sur `b3979424` : pc-studio verte 4/4 (Rust push/PR, Front Svelte push/PR). - **`cargo test --release --locked`** (`_tableau/rust`) : 38 tests, 0 échec, code 0. - **`npx vitest run`** : 20 fichiers, 168 tests passés. **`vite build`** : code 0, `dist/` 903 158 octets. - **Homogénéité STUD-1185 rejouée** : 44 relevés (11 pages × 4 configurations — la page `top` y entre pour la première fois : 90 éléments à 1 600 px, 63 à 390 px), 5 écarts connus, **0 nouveau, 0 résolu**. Comparaison pixel à pixel avec les références : **NON MESURÉE** (cette machine n'a pas de référence `cachyos-x8664-chrome155`), dit par le script lui-même. - **Navigateur** (`apercu.py`, données figées, Chrome 155 sans tête, heure de Paris figée) : 4 captures dans `~/atelier-hermes/captures-t_24dfb027/` (bureau et téléphone, sombre et clair) ; 0 attribut `title`, 0 emoji, 0 erreur console, aucun débordement horizontal à 390 px (`scrollWidth` = 390). - **Filtres** : clic sur « Short » → `?top&etat=short`, 11 → 2 lignes ; deux clics sur l'en-tête « Vues » → `?top&etat=short&tri=-vues`, la première ligne change ; « Réinitialiser » → `?top`, 11 lignes. Le marqueur `top` reste dans l'adresse dans les trois cas. Par l'adresse : `?top&chaine=Minute Sport` → 1 ligne, `?top&periode=semaine` → 4 lignes, `?top&etat=long&tri=vues` → 6 lignes. - **Miniatures** : 23 images, 23 chargées (`i.ytimg.com`), aucune cassée. - **Infobulle du thème** ouverte au survol : fond `#303030` à 88 %, texte blanc, 12 px, rayon 8 px, ombre — identique en sombre et en clair, comme la charte le demande. - **Bouton « Signaler à Mika »** présent sur l'alerte « Minute Sport : pas de réponse… » ; chiffre clé « +1 982 vues en 24 h » avec sa définition ; dates « heure de Paris », aucune date ISO affichée ; aucune trace de Python dans les textes. **Réserve, à trancher par vous :** le titre de la vedette n'est plus un lien (avant : `<a>` ; après : texte + « Voir sur YouTube »). La règle 4 de `CHARTE-UI.md` demande qu'une PR qui retire une fonction visible d'un onglet Svelte le dise dans son titre et ne se fusionne pas sans votre accord écrit. Trois liens restent vers la vidéo : la miniature, « Voir sur YouTube » et « Studio ». L'étiquette `operateur` est posée à la place de `relu` : la fusion vous revient.
Collaborator

fusion-auto : pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.

`fusion-auto` : pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.
hermes-bot force-pushed hermes/top-videos-svelte from b3979424b9
All checks were successful
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 15s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 13s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 20s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 14s
to d5af1081a6
All checks were successful
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 19s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 12s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 20s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 12s
2026-10-14 23:55:56 +02:00
Compare
Author
Collaborator

À l'opérateur de fusionner — relecture du rebasage : conforme. Aucune étiquette posée par moi (surtout pas relu : cette PR retire une fonction visible de l'onglet, règle 4 de _tableau/CHARTE-UI.md, c'est vous qui fusionnez). Rien fusionné, main non touchée, aucun fichier du dépôt modifié.

Relecture faite par relecteur2 (carte t_64c784dc) dans un arbre dédié ~/atelier-hermes/wt/t_64c784dc, jamais dans la copie principale ; arbre retiré après coup.

1. Plus de conflit, et la tête a changé

$ git fetch -q httpforge && git rev-parse httpforge/main
52de10c3cda070df438252f7c0f260aac76fa1fc
$ git merge-tree --write-tree --name-only httpforge/main d5af1081
0d3c8503842732f8a1066f10ac5e906ba4055704
code=0                     (aucun nom de fichier rendu : 0 conflit)
$ git log -1 --format=%H HEAD          # avant le rebasage : b3979424b975b83652928b55ed11cf1b3467e589
d5af1081a6ed98063bd9caf51a23809004d34461

Rejoué contre le main de 00 h 05 (52de10c3), pas seulement contre celui du rebasage (e6d89457).

2. La résolution garde les deux apports

Occurrences de analytique et de top par fichier — main = 52de10c3, avant = b3979424, après = d5af1081 :

fichier analytique main / avant / après top main / avant / après
_tableau/front/apercu.py 7 / 0 / 7 0 / 6 / 6
_tableau/front/homogeneite-releve.mjs 1 / 0 / 1 6 / 7 / 7
_tableau/front/homogeneite.py 3 / 0 / 3 6 / 10 / 10
_tableau/front/src/main.js 7 / 5 / 7 9 / 12 / 12
_tableau/test_apercu_front.py 3 / 0 / 4 0 / 8 / 8

Ce qui serait tombé, fichier par fichier : la version de la branche (b3979424) ne connaissait pas l'Analytique, donc une résolution qui aurait gardé « ma version » aurait emporté l'Analytique dans les cinq fichiers — la route /api/analytique d'apercu.py, la page ?analytique d'homogeneite.py, le [data-analytique-pret] du relevé, le bloc ana de main.js avec son entrée dans la garde anti-double-montage, et les assertions Analytique du banc d'aperçu. Symétriquement, garder la version de main aurait emporté le Top vidéos (/api/top, la page ?top, [data-top-pret], le bloc top, ses assertions).

Lignes Analytique restaurées par le rebasage, mesurées en git diff b3979424 d5af1081 -- <fichier> : apercu.py +7, homogeneite-releve.mjs +1, homogeneite.py +2, src/main.js +4, test_apercu_front.py +3. Et rien d'autre n'a été ajouté : git diff b3979424 d5af1081 sur ces cinq fichiers ne montre que du contenu Analytique (relecture ligne à ligne des cinq diffs).

3. Le fond du diff n'a pas bougé

Le contenu propre de la branche est le même avant et après le rebasage :

avant  87b23512 → 8 fichiers, +312 −35   |  b3979424 → 2 fichiers, +5 −4   (10 fichiers, +317 −39)
après  ae18abbc → 8 fichiers, +314 −37   |  d5af1081 → 2 fichiers, +6 −4   (10 fichiers, +320 −41)

Les trois insertions et deux suppressions de plus sont la seule union : analytique et top dans la signature et le __main__ d'apercu.py, la page analytique et la page top dans homogeneite.py, l'attente d'union de _tableau/front/tests/top.test.js (49 → 50 lignes touchées).

Pour mémoire, la comparaison demandée avec git diff --stat 119f2c12 b3979424 (15 fichiers, +321 −288) n'est pas comparable, et c'est confirmé ici : 119f2c12 est un commit de main postérieur à la fourche de la branche (a1988661) ; ce diff-là compte donc aussi l'aller-retour de main entre les deux. Le bon repère avant rebasage est git diff --stat a1988661 b3979424 → 10 fichiers, +317 −39, exactement le même ensemble de fichiers qu'après.

4. Les bancs, rejoués dans l'arbre

$ python3 _tableau/front/homogeneite.py                                      → code 0
homogénéité : 48 relevés (Chrome/155.0.8059.79), 4 écarts connus, 0 nouveaux, 0 résolus, 0 captures changées

$ python3 _tableau/test_apercu_front.py                                      → code 0
OK : l'aperçu sert l'Accueil, les dépenses, le Top vidéos, l'Analytique et des signalements vides (STUD-1224, 1226, 1227)

$ npx vite build                                                             → code 0
dist/index.html présent, dist/app.js 145 426 octets

$ npx vitest run                                                             → code 1
Test Files  1 failed | 25 passed (26)
     Tests  1 failed | 199 passed (200)
FAIL  tests/stockage.test.js > … > rendu : la barre et la projection s'affichent…
  attendu : '4 volumes suivis, 2 en alerte, relevé à '
  reçu    : '4 volumes suivis, 2 en alerte, relevé hier à 22 h 44'

Ce rouge n'est pas imputable au rebasage, et je le prouve plutôt que de l'affirmer : le même banc, rejoué à la même heure sur main (52de10c3, dans un second arbre dédié) →

Test Files  1 failed | 25 passed (26)
     Tests  1 failed | 195 passed (196)
FAIL  tests/stockage.test.js > … > rendu : … (même test, même message)

Cause mesurée : tests/stockage.test.js:15 fixe releve: '2026-10-14T20:44:00+00:00' et la ligne 73 rend le composant à l'heure courante ; _tableau/front/src/lib/format.js:258 écrit « hier à … » dès que la journée de Paris du relevé n'est plus celle du jour. Passé minuit (Paris) dans la nuit du 14 au 15/10, l'assertion tombe — sur main comme sur la branche. Le 4/4 vert cité plus bas a tourné avant minuit (push du rebasage à 23 h 53). C'est un banc daté de main, hors du périmètre de #1635 : une carte de suite a été ouverte pour lui.

5. La PR, à l'instant de la relecture

state open | mergeable True
head  d5af1081a6ed98063bd9caf51a23809004d34461
base  52de10c3cda070df438252f7c0f260aac76fa1fc
labels ['operateur']
CI (statuses du commit d5af1081) : etat success, total 4
  - Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) success
  - Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) success
  - Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) success
  - Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) success

Aucune étiquette posée ni retirée par moi ; aucune fusion.

6. Ce que je n'ai pas mesuré

  • La page servie par le 132 : rien dans main ne déploie et la page est derrière /connexion. Non mesuré.
  • Le rendu dans la vraie page Python du tableau : j'ai regardé les captures de la page d'essai (/processus/?top : montée, bloc vedette avec « Voir sur YouTube » et « Studio », aucun emoji, rien de cassé ; /processus/?analytique : toujours monté, courbes et fiches présentes), pas la page Python qui embarque #top-app.
  • Le banc Rust en direct : pas lancé à la main, la CI le fait.
  • Les 48 captures n'ont aucune référence pour cachyos-x8664-chrome155 : aucune comparaison pixel à pixel.
  • La CI elle-même : je ne peux pas la déclencher ; le 4/4 ci-dessus est celui du passage du 14/10 avant minuit, relu à l'API. Un nouveau passage du job Front après minuit rougirait à cause du banc daté de main décrit au § 4.
**À l'opérateur de fusionner** — relecture du rebasage : **conforme**. Aucune étiquette posée par moi (surtout pas `relu` : cette PR retire une fonction visible de l'onglet, règle 4 de `_tableau/CHARTE-UI.md`, c'est vous qui fusionnez). Rien fusionné, `main` non touchée, aucun fichier du dépôt modifié. Relecture faite par `relecteur2` (carte `t_64c784dc`) dans un arbre dédié `~/atelier-hermes/wt/t_64c784dc`, jamais dans la copie principale ; arbre retiré après coup. ## 1. Plus de conflit, et la tête a changé ``` $ git fetch -q httpforge && git rev-parse httpforge/main 52de10c3cda070df438252f7c0f260aac76fa1fc $ git merge-tree --write-tree --name-only httpforge/main d5af1081 0d3c8503842732f8a1066f10ac5e906ba4055704 code=0 (aucun nom de fichier rendu : 0 conflit) $ git log -1 --format=%H HEAD # avant le rebasage : b3979424b975b83652928b55ed11cf1b3467e589 d5af1081a6ed98063bd9caf51a23809004d34461 ``` Rejoué contre le `main` de 00 h 05 (`52de10c3`), pas seulement contre celui du rebasage (`e6d89457`). ## 2. La résolution garde les deux apports Occurrences de `analytique` et de `top` par fichier — main = `52de10c3`, avant = `b3979424`, après = `d5af1081` : | fichier | analytique main / avant / après | top main / avant / après | |---|---|---| | `_tableau/front/apercu.py` | 7 / 0 / 7 | 0 / 6 / 6 | | `_tableau/front/homogeneite-releve.mjs` | 1 / 0 / 1 | 6 / 7 / 7 | | `_tableau/front/homogeneite.py` | 3 / 0 / 3 | 6 / 10 / 10 | | `_tableau/front/src/main.js` | 7 / 5 / 7 | 9 / 12 / 12 | | `_tableau/test_apercu_front.py` | 3 / 0 / 4 | 0 / 8 / 8 | Ce qui serait tombé, fichier par fichier : la version de la branche (`b3979424`) ne connaissait **pas** l'Analytique, donc une résolution qui aurait gardé « ma version » aurait emporté **l'Analytique** dans les cinq fichiers — la route `/api/analytique` d'`apercu.py`, la page `?analytique` d'`homogeneite.py`, le `[data-analytique-pret]` du relevé, le bloc `ana` de `main.js` avec son entrée dans la garde anti-double-montage, et les assertions Analytique du banc d'aperçu. Symétriquement, garder la version de `main` aurait emporté le **Top vidéos** (`/api/top`, la page `?top`, `[data-top-pret]`, le bloc `top`, ses assertions). Lignes Analytique restaurées par le rebasage, mesurées en `git diff b3979424 d5af1081 -- <fichier>` : `apercu.py` +7, `homogeneite-releve.mjs` +1, `homogeneite.py` +2, `src/main.js` +4, `test_apercu_front.py` +3. Et rien d'autre n'a été ajouté : `git diff b3979424 d5af1081` sur ces cinq fichiers ne montre que du contenu Analytique (relecture ligne à ligne des cinq diffs). ## 3. Le fond du diff n'a pas bougé Le contenu propre de la branche est le même avant et après le rebasage : ``` avant 87b23512 → 8 fichiers, +312 −35 | b3979424 → 2 fichiers, +5 −4 (10 fichiers, +317 −39) après ae18abbc → 8 fichiers, +314 −37 | d5af1081 → 2 fichiers, +6 −4 (10 fichiers, +320 −41) ``` Les trois insertions et deux suppressions de plus sont la seule union : `analytique` **et** `top` dans la signature et le `__main__` d'`apercu.py`, la page `analytique` **et** la page `top` dans `homogeneite.py`, l'attente d'union de `_tableau/front/tests/top.test.js` (49 → 50 lignes touchées). Pour mémoire, la comparaison demandée avec `git diff --stat 119f2c12 b3979424` (15 fichiers, +321 −288) **n'est pas comparable**, et c'est confirmé ici : `119f2c12` est un commit de `main` **postérieur** à la fourche de la branche (`a1988661`) ; ce diff-là compte donc aussi l'aller-retour de `main` entre les deux. Le bon repère avant rebasage est `git diff --stat a1988661 b3979424` → **10 fichiers, +317 −39**, exactement le même ensemble de fichiers qu'après. ## 4. Les bancs, rejoués dans l'arbre ``` $ python3 _tableau/front/homogeneite.py → code 0 homogénéité : 48 relevés (Chrome/155.0.8059.79), 4 écarts connus, 0 nouveaux, 0 résolus, 0 captures changées $ python3 _tableau/test_apercu_front.py → code 0 OK : l'aperçu sert l'Accueil, les dépenses, le Top vidéos, l'Analytique et des signalements vides (STUD-1224, 1226, 1227) $ npx vite build → code 0 dist/index.html présent, dist/app.js 145 426 octets $ npx vitest run → code 1 Test Files 1 failed | 25 passed (26) Tests 1 failed | 199 passed (200) FAIL tests/stockage.test.js > … > rendu : la barre et la projection s'affichent… attendu : '4 volumes suivis, 2 en alerte, relevé à ' reçu : '4 volumes suivis, 2 en alerte, relevé hier à 22 h 44' ``` Ce rouge **n'est pas imputable au rebasage**, et je le prouve plutôt que de l'affirmer : le même banc, rejoué à la même heure sur `main` (`52de10c3`, dans un second arbre dédié) → ``` Test Files 1 failed | 25 passed (26) Tests 1 failed | 195 passed (196) FAIL tests/stockage.test.js > … > rendu : … (même test, même message) ``` Cause mesurée : `tests/stockage.test.js:15` fixe `releve: '2026-10-14T20:44:00+00:00'` et la ligne 73 rend le composant à l'heure courante ; `_tableau/front/src/lib/format.js:258` écrit « hier à … » dès que la journée de Paris du relevé n'est plus celle du jour. Passé minuit (Paris) dans la nuit du 14 au 15/10, l'assertion tombe — sur `main` comme sur la branche. Le 4/4 vert cité plus bas a tourné **avant** minuit (push du rebasage à 23 h 53). C'est un banc daté de `main`, hors du périmètre de #1635 : une carte de suite a été ouverte pour lui. ## 5. La PR, à l'instant de la relecture ``` state open | mergeable True head d5af1081a6ed98063bd9caf51a23809004d34461 base 52de10c3cda070df438252f7c0f260aac76fa1fc labels ['operateur'] CI (statuses du commit d5af1081) : etat success, total 4 - Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) success - Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) success - Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) success - Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) success ``` Aucune étiquette posée ni retirée par moi ; aucune fusion. ## 6. Ce que je n'ai pas mesuré - **La page servie par le 132** : rien dans `main` ne déploie et la page est derrière `/connexion`. Non mesuré. - **Le rendu dans la vraie page Python du tableau** : j'ai regardé les captures de la page d'essai (`/processus/?top` : montée, bloc vedette avec « Voir sur YouTube » et « Studio », aucun emoji, rien de cassé ; `/processus/?analytique` : toujours monté, courbes et fiches présentes), pas la page Python qui embarque `#top-app`. - **Le banc Rust en direct** : pas lancé à la main, la CI le fait. - **Les 48 captures** n'ont aucune référence pour `cachyos-x8664-chrome155` : aucune comparaison pixel à pixel. - **La CI elle-même** : je ne peux pas la déclencher ; le 4/4 ci-dessus est celui du passage du 14/10 avant minuit, relu à l'API. Un nouveau passage du job Front après minuit rougirait à cause du banc daté de `main` décrit au § 4.
Collaborator

fusion-auto : pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.

`fusion-auto` : pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.
hermes-bot force-pushed hermes/top-videos-svelte from d5af1081a6
All checks were successful
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 19s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 12s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 20s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 12s
to fcd4ddaa1c
All checks were successful
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 1m47s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 1m46s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 5m45s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 5m46s
2026-10-15 15:16:18 +02:00
Compare
hermes-bot force-pushed hermes/top-videos-svelte from fcd4ddaa1c
All checks were successful
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 1m47s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 1m46s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 5m45s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 5m46s
to 27aa624080
Some checks failed
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Failing after 10s
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
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Has been cancelled
2026-10-15 15:40:36 +02:00
Compare
Top vidéos : retirer les marqueurs de conflit restés dans le fichier
Some checks failed
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
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Has been cancelled
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Has been cancelled
e1730b6087
Cause : la resolution du rebasage a laisse cinq lignes de marqueur (<<<<<< HEAD) dans Top.svelte ; le fichier ne compilait plus (Unexpected token) et top.test.js ne se chargeait pas.
Remede : marqueurs retires, le fichier garde la version de main (composants de la base, 1609) plus le lien « Voir sur YouTube » de cette carte.
Author
Collaborator

Rebasé sur main et poussé (e1730b60).

Conflit _tableau/front/src/Top.svelte avec l'unification des composants (#1609, déjà fusionnée) : la carte partait d'une version antérieure où Miniature venait de lib/composants et où la pastille de chaîne s'appelait PastilleChaine. Résolution : la version de main est gardée (composants de la base, Point, classes de Miniature) et l'apport propre à cette carte est réinjecté — le lien « Voir sur YouTube » (<Lien href={lien(v.id)}>) et LIEN pour le titre. Rien de main n'est retiré.

Deuxième passe : cinq lignes de marqueur de conflit étaient restées dans le fichier et le rendaient non compilable (Unexpected token, tests/top.test.js ne se chargeait pas) — retirées.

Mesures locales : 43/43 fichiers, 374 essais verts ; npx vite build code 0, 1881 octets + 964K de JS. CI : la verte porte sur fcd4ddaa ; le run du nouveau sommet est en cours.

Rebasé sur `main` et poussé (e1730b60). Conflit `_tableau/front/src/Top.svelte` avec l'unification des composants (#1609, déjà fusionnée) : la carte partait d'une version antérieure où `Miniature` venait de `lib/composants` et où la pastille de chaîne s'appelait `PastilleChaine`. Résolution : la version de main est gardée (composants de la base, `Point`, classes de `Miniature`) et l'apport propre à cette carte est réinjecté — le lien « Voir sur YouTube » (`<Lien href={lien(v.id)}>`) et `LIEN` pour le titre. Rien de main n'est retiré. Deuxième passe : cinq lignes de marqueur de conflit étaient restées dans le fichier et le rendaient non compilable (`Unexpected token`, `tests/top.test.js` ne se chargeait pas) — retirées. Mesures locales : 43/43 fichiers, 374 essais verts ; `npx vite build` code 0, 1881 octets + 964K de JS. CI : la verte porte sur fcd4ddaa ; le run du nouveau sommet est en cours.
Collaborator

fusion-auto : pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.

`fusion-auto` : pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.
hermes-bot force-pushed hermes/top-videos-svelte from e1730b6087
Some checks failed
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
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Has been cancelled
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Has been cancelled
to 9e0eedb8df
Some checks failed
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Failing after 3s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 6m20s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Failing after 1m51s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 6m13s
2026-10-15 16:13:56 +02:00
Compare
Collaborator

fusion-auto : pas de fusion, la CI est rouge (Front Svelte). Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.

`fusion-auto` : pas de fusion, la CI est rouge (Front Svelte). Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.
hermes-bot force-pushed hermes/top-videos-svelte from 9e0eedb8df
Some checks failed
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Failing after 3s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 6m20s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Failing after 1m51s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 6m13s
to 83dcceeacf
All checks were successful
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 1m58s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 1m47s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 7m22s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 6m23s
2026-10-15 18:39:34 +02:00
Compare
Author
Collaborator

Relevé de la forge sur la tête poussée 83dcceea : 4 relevés sur 4 verts, état global success — l'étiquette ci-rouge a disparu (la forge l'a retirée elle-même).

  • Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) — succès en 7 min 22 s
  • Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) — succès en 6 min 23 s
  • Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) — succès en 1 min 47 s
  • Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) — succès en 1 min 58 s

Ce qui a changé depuis la tête précédente (9e0eedb8) : un seul commit au-dessus de main (le commit a été amendé), la branche rebasée sur origin/main, et les écarts data-base de _tableau/front/src/Top.svelte corrigés — c'était la cause de l'ancien rouge.

Mesures locales, sur la même tête :

  • npx vitest run dans _tableau/front : 47 fichiers, 417 tests, tous verts (code 0) ;
  • npx vite build : code 0, dist/index.html présent (1,88 kB) et dist/assets/*.js de taille réelle.

Non mesuré : pas de capture d'écran jointe à ce commentaire ; le relevé d'homogénéité du dépôt couvre l'onglet Top et passe dans le job Front Svelte vert ci-dessus.

Relevé de la forge sur la tête poussée `83dcceea` : **4 relevés sur 4 verts**, état global `success` — l'étiquette `ci-rouge` a disparu (la forge l'a retirée elle-même). - `Tests du tableau (Rust + Svelte) / Rust (_tableau/rust)` (push) — succès en 7 min 22 s - `Tests du tableau (Rust + Svelte) / Rust (_tableau/rust)` (pull_request) — succès en 6 min 23 s - `Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front)` (push) — succès en 1 min 47 s - `Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front)` (pull_request) — succès en 1 min 58 s Ce qui a changé depuis la tête précédente (`9e0eedb8`) : un seul commit au-dessus de `main` (le commit a été amendé), la branche rebasée sur `origin/main`, et les écarts `data-base` de `_tableau/front/src/Top.svelte` corrigés — c'était la cause de l'ancien rouge. Mesures locales, sur la même tête : - `npx vitest run` dans `_tableau/front` : 47 fichiers, 417 tests, tous verts (code 0) ; - `npx vite build` : code 0, `dist/index.html` présent (1,88 kB) et `dist/assets/*.js` de taille réelle. Non mesuré : pas de capture d'écran jointe à ce commentaire ; le relevé d'homogénéité du dépôt couvre l'onglet Top et passe dans le job `Front Svelte` vert ci-dessus.
Author
Collaborator

Mesure demandée du relevé d'homogénéité sur cette tête (83dcceea), refaite localement après le correctif data-base :

python3 _tableau/front/homogeneite.py
homogénéité : 48 relevés (Chrome/155.0.8059.79), 4 écarts connus, 0 nouveaux, 0 résolus, 0 captures changées
code 0

Autrement dit : plus aucun écart nouveau sur l'onglet Top, les 4 écarts restants sont ceux déjà connus et acceptés du dépôt. Le relevé se monte sur un dist/ fraîchement construit (npx vite build, code 0, dist/index.html 1,88 kB).

Non mesuré : les captures d'image n'ont pas de référence pour ce navigateur (NON MESURÉ : captures sans référence pour cachyos-x8664-chrome155 (48)) — la référence se pose avec l'accord de l'opérateur.

Mesure demandée du relevé d'homogénéité sur cette tête (`83dcceea`), refaite localement après le correctif `data-base` : python3 _tableau/front/homogeneite.py homogénéité : 48 relevés (Chrome/155.0.8059.79), 4 écarts connus, 0 nouveaux, 0 résolus, 0 captures changées code 0 Autrement dit : plus aucun écart nouveau sur l'onglet Top, les 4 écarts restants sont ceux déjà connus et acceptés du dépôt. Le relevé se monte sur un `dist/` fraîchement construit (`npx vite build`, code 0, `dist/index.html` 1,88 kB). Non mesuré : les captures d'image n'ont pas de référence pour ce navigateur (`NON MESURÉ : captures sans référence pour cachyos-x8664-chrome155 (48)`) — la référence se pose avec l'accord de l'opérateur.
Collaborator

fusion-auto : pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.

`fusion-auto` : pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.
Fusion de main dans Top vidéos : sujets et top coexistent (STUD-1226)
Some checks failed
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Failing after 30s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Failing after 33s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Failing after 11m7s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 12m18s
db901183eb
main avait ajouté l'onglet Sujets, la branche l'onglet Top : les deux sont
gardés (cible de main.js, aperçu /api/top et /api/sujets, relevé d'homogénéité).
/api/top est déclaré hors relais, comme /api/analytique : la page du 132 porte
ses données et seul l'aperçu du front le lit.
Collaborator

fusion-auto : pas de fusion, la CI est rouge (Front Svelte). Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.

`fusion-auto` : pas de fusion, la CI est rouge (Front Svelte). Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.
Collaborator

fusion-auto : pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.

`fusion-auto` : pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.
hermes-bot force-pushed hermes/top-videos-svelte from db901183eb
Some checks failed
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Failing after 30s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Failing after 33s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Failing after 11m7s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 12m18s
to 7eea821d00
Some checks failed
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Failing after 42s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Failing after 42s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Failing after 2m2s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 10m54s
2026-10-16 21:36:59 +02:00
Compare
foXaCe merged commit cac500360d into main 2026-10-16 21:49:42 +02:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
3 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!1635
No description provided.