Onglet Top : il appelle bien sa route (« lire » manquait), miniature de la base #1792

Closed
hermes-bot wants to merge 1 commit from hermes/top-videos-regressions-ci into main
Collaborator

Ce que ça corrige

L'onglet Top vidéos ne montait plus dans la page d'essai : il appelait lire(api) sans l'importer.

Mesuré dans Chrome le 2026-10-16 (page /processus/?top, build fraîche) :

Onglet Top vidéos injoignable (lire is not defined). Recharger la page.

L'onglet ne posait jamais [data-top-pret] ; homogeneite-releve.mjs attendait ce marqueur en vain (« la page n'a rien monté en 10 s »). Le relevé d'homogénéité était vert sur main parce que les données venaient alors de la page (attribut data-donnees).

Cause. La branche cec09e109c (PR #1635, branche hermes/top-videos-svelte) a réintroduit dans main l'état d'avant 4b3ed1b209 : main.js lisait top.dataset.donnees au lieu de laisser l'onglet lire /api/top, et Top.svelte importait lib/composants/Miniature.svelte au lieu de la pièce de la base. C'est ce qui rend top-api.test.js, analytique-api.test.js et top.test.js rouges (4 échecs sur 519).

Le remède

  • main.js : le Top et l'Analytique sont montés avec props: { api }, comme top-api.test.js et analytique-api.test.js l'exigent déjà (la page n'écrit plus rien dans le conteneur).
  • Top.svelte : lire rejoint l'import de lib/top.js ; la miniature revient à la base (max-w-80 sur mobile) avec la largeur portée par le lien.
  • L'habillage LIEN est conservé. Le remplacer par la largeur seule perdait text-link, text-xs et no-underline : quatre écarts d'homogénéité mesurés d'un coup (STUD-1185).
  • top.test.js : les trois assertions qui contredisent top-api.test.js (top.dataset.donnees, fetch('/api/top' dans main.js, liste figée des onglets) disparaissent avec la donnée écrite dans la page ; les deux de largeur vérifient désormais la largeur et l'habillage.
  • top-route.test.js (nouveau) : monte l'onglet en jsdom avec props: { api: '/api/top' } seul et vérifie que la route est appelée et que le rendu ne dit pas « lire is not defined ». Il échoue sans le correctif (mesuré).
  • lib/composants/Miniature.svelte, sans plus aucun importateur, est retiré.

Preuve

mesure résultat
npx vitest run 520 tests sur 520 (519 avant + le nouveau)
npm run build dist/index.html, 1 126 933 octets, 21 JS de plus de 5 Ko
_tableau/test_charte_svelte.py 0 (23 écarts refusés, front réel propre)
_tableau/front/garde-habillage.py 0 (7 occurrences, 7 admises, 0 refus)
_tableau/test_homogeneite.py 0 — 56 relevés, 2 écarts connus, 0 nouveau, 0 capture changée
_tableau/lancer-tests.py --tout 5 bancs rouges, tous rouges sur main aussi (ci-dessous)
Chrome /processus/?top data-top-pret posé, l'onglet s'affiche

Les 5 bancs rouges du jeu complet, mesurés aussi sur main (worktree détaché sur 1eb9725485) :

  • test_100_svelte_rust.py : « devenu conforme, à retirer de MANQUES : page:Analytique » — message identique sur main ;
  • test_routes_front_relayees.py : « désormais servie, à retirer de HORS_RELAIS : /api/analytique » — message identique sur main ;
  • test_garde_couches.py, test_garde_doublons.py, test_garde_plafond.py : deux plafonds dépassés, rust/service/src/main.rs (604 lignes) et serveur_processus.py (615) — aucun fichier Rust ou Python touché ici (git diff --stat httpforge/main -- _tableau/rust/ est vide).

Ce que je n'ai pas mesuré

cargo test --release --locked sort en 101 chez moi sur -p orchestrateur --test http (le_serveur_garde_la_file_et_reveille_le_worker), un test d'intégration qui monte un serveur TCP : rien dans cette PR ne touche le Rust. Sur la forge, les jobs Rust (_tableau/rust) des dernières PR (#1787, #1788, #1790) sont success.

Captures (onglet Top, /processus/?top)

Bureau clair, bureau sombre, téléphone clair, téléphone sombre : la vedette et ses chiffres s'affichent, la liste et le tableau suivent, rien ne déborde. Mesure pixel du titre « Processus » à 390 px : 18 px sur cette branche comme sur main — identique.

Reste à l'opérateur

La frontière d'erreur (Frontiere, « Réessayer ») n'est plus montée sur l'Analytique — le banc analytique-api.test.js l'exige, et le Top n'en a déjà plus. Si l'opérateur veut la garder, c'est une question à poser.

## Ce que ça corrige L'onglet **Top vidéos** ne montait plus dans la page d'essai : il appelait `lire(api)` sans l'importer. **Mesuré dans Chrome le 2026-10-16** (page `/processus/?top`, build fraîche) : Onglet Top vidéos injoignable (lire is not defined). Recharger la page. L'onglet ne posait jamais `[data-top-pret]` ; `homogeneite-releve.mjs` attendait ce marqueur en vain (« la page n'a rien monté en 10 s »). Le relevé d'homogénéité était **vert sur main** parce que les données venaient alors de la page (attribut `data-donnees`). **Cause.** La branche `cec09e109c` (PR #1635, branche `hermes/top-videos-svelte`) a réintroduit dans `main` l'état d'avant `4b3ed1b209` : `main.js` lisait `top.dataset.donnees` au lieu de laisser l'onglet lire `/api/top`, et `Top.svelte` importait `lib/composants/Miniature.svelte` au lieu de la pièce de la base. C'est ce qui rend `top-api.test.js`, `analytique-api.test.js` et `top.test.js` rouges (4 échecs sur 519). ## Le remède - `main.js` : le Top et l'Analytique sont montés avec `props: { api }`, comme `top-api.test.js` et `analytique-api.test.js` l'exigent déjà (la page n'écrit plus rien dans le conteneur). - `Top.svelte` : `lire` rejoint l'import de `lib/top.js` ; la miniature revient à la base (`max-w-80` sur mobile) avec la largeur portée par le lien. - **L'habillage `LIEN` est conservé.** Le remplacer par la largeur seule perdait `text-link`, `text-xs` et `no-underline` : **quatre écarts d'homogénéité** mesurés d'un coup (STUD-1185). - `top.test.js` : les trois assertions qui contredisent `top-api.test.js` (`top.dataset.donnees`, `fetch('/api/top'` dans `main.js`, liste figée des onglets) disparaissent avec la donnée écrite dans la page ; les deux de largeur vérifient désormais la largeur **et** l'habillage. - `top-route.test.js` (nouveau) : monte l'onglet en jsdom avec `props: { api: '/api/top' }` seul et vérifie que la route est appelée et que le rendu ne dit pas « lire is not defined ». Il échoue sans le correctif (mesuré). - `lib/composants/Miniature.svelte`, sans plus aucun importateur, est retiré. ## Preuve | mesure | résultat | |---|---| | `npx vitest run` | **520 tests sur 520** (519 avant + le nouveau) | | `npm run build` | `dist/index.html`, 1 126 933 octets, 21 JS de plus de 5 Ko | | `_tableau/test_charte_svelte.py` | 0 (23 écarts refusés, front réel propre) | | `_tableau/front/garde-habillage.py` | 0 (7 occurrences, 7 admises, 0 refus) | | `_tableau/test_homogeneite.py` | **0** — 56 relevés, 2 écarts connus, **0 nouveau**, 0 capture changée | | `_tableau/lancer-tests.py --tout` | 5 bancs rouges, **tous rouges sur `main` aussi** (ci-dessous) | | Chrome `/processus/?top` | `data-top-pret` posé, l'onglet s'affiche | Les 5 bancs rouges du jeu complet, mesurés **aussi sur `main`** (worktree détaché sur `1eb9725485`) : - `test_100_svelte_rust.py` : « devenu conforme, à retirer de MANQUES : page:Analytique » — message identique sur `main` ; - `test_routes_front_relayees.py` : « désormais servie, à retirer de HORS_RELAIS : /api/analytique » — message identique sur `main` ; - `test_garde_couches.py`, `test_garde_doublons.py`, `test_garde_plafond.py` : deux plafonds dépassés, `rust/service/src/main.rs` (604 lignes) et `serveur_processus.py` (615) — aucun fichier Rust ou Python touché ici (`git diff --stat httpforge/main -- _tableau/rust/` est vide). ## Ce que je n'ai pas mesuré `cargo test --release --locked` sort en 101 **chez moi** sur `-p orchestrateur --test http` (`le_serveur_garde_la_file_et_reveille_le_worker`), un test d'intégration qui monte un serveur TCP : rien dans cette PR ne touche le Rust. Sur la forge, les jobs `Rust (_tableau/rust)` des dernières PR (`#1787`, `#1788`, `#1790`) sont `success`. ## Captures (onglet Top, `/processus/?top`) Bureau clair, bureau sombre, téléphone clair, téléphone sombre : la vedette et ses chiffres s'affichent, la liste et le tableau suivent, rien ne déborde. Mesure pixel du titre « Processus » à 390 px : **18 px** sur cette branche comme sur `main` — identique. ## Reste à l'opérateur La frontière d'erreur (`Frontiere`, « Réessayer ») n'est plus montée sur l'Analytique — le banc `analytique-api.test.js` l'exige, et le Top n'en a déjà plus. Si l'opérateur veut la garder, c'est une question à poser.
Corrige l'onglet Top : il appelle bien sa route (« lire » était manquant), miniature de la base
Some checks failed
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Failing after 43s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 2m8s
05159fb605
Cause, mesurée : la branche cec09e109c (PR #1635) a réintroduit dans main l'état d'avant 4b3ed1b209 —
`main.js` lisait les données dans `top.dataset.donnees` au lieu de laisser l'onglet lire `/api/top`, et
`Top.svelte` importait `lib/composants/Miniature.svelte` au lieu de la pièce de la base. Trois bancs en
dépendent : `top-api.test.js` et `analytique-api.test.js` (4 échecs sur 519) et `top.test.js`.

Seconde panne, mesurée dans Chrome le 2026-10-16 : `Top.svelte` appelait `lire(api)` sans importer `lire`.
Au montage, `ReferenceError` : l'onglet rendait « Onglet Top vidéos injoignable (lire is not defined) » et ne
posait jamais `[data-top-pret]` ; `homogeneite-releve.mjs` attendait ce marqueur en vain (« la page n'a rien
monté en 10 s »). Le relevé, lui, était vert sur main parce que les données venaient alors de la page.

Remède : le montage passe `props: { api }` pour le Top et l'Analytique (comme `top-api.test.js` et
`analytique-api.test.js` l'exigent), `lire` rejoint l'import de `lib/top.js`, et la miniature revient à la
base (`max-w-80` sur mobile) avec la largeur portée par le lien. L'habillage `LIEN` est conservé : le
remplacer par la largeur seule perdait `text-link` / `text-xs` / `no-underline`, quatre écarts d'homogénéité
mesurés d'un coup (STUD-1185). Les trois assertions de `top.test.js` qui contredisent `top-api.test.js`
(`top.dataset.donnees`, `fetch('/api/top'` dans `main.js`, liste figée des onglets) disparaissent avec la
donnée écrite dans la page ; les deux de largeur vérifient désormais la largeur ET l'habillage.
`lib/composants/Miniature.svelte`, sans plus aucun importateur, est retiré.

Preuve : 520 tests sur 520 ; `npm run build` (dist/index.html, 1 126 933 octets, 21 JS de plus de 5 Ko) ;
`test_charte_svelte.py`, `garde-habillage.py`, `test_homogeneite.py` (56 relevés, 0 écart nouveau) verts ;
la page `/processus/?top` monte dans Chrome (`data-top-pret` posé).
Collaborator

fusion-auto : pas de fusion, la CI est rouge (Rust). 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 (Rust). 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é.
Author
Collaborator

Doublon fermé. Le remède complet qu''elle portait est déjà dans main, reçu entre-temps par d''autres cartes :

  • 18e9b69086 — Top : l''import de lire manquait, la page ne montait rien ;
  • 44fe20ecaa — Front : le Top et l''Analytique remontent leur porteur en direct, la miniature repasse à la base ;
  • 5e1b1a4456 — Top : les deux liens de miniature reprennent la pièce LIEN de la base ;
  • feb4ca4620 — Banc top : la largeur du lien reste vérifiée, la pièce LIEN en plus.

Les quatre idées de cette branche s''y retrouvent (montage avec props: { api }, lire importé, miniature de la base, largeur portée par le lien avec l''habillage LIEN conservé). Elle était en conflit avec main, d''où le label conflit, et sa CI était rouge sur un test Rust flaky — rien de son fait.

Ce qui manquait à main, le banc qui garde la panne, part dans #1793.

Doublon fermé. Le remède complet qu''elle portait est déjà dans `main`, reçu entre-temps par d''autres cartes : - `18e9b69086` — Top : l''import de `lire` manquait, la page ne montait rien ; - `44fe20ecaa` — Front : le Top et l''Analytique remontent leur porteur en direct, la miniature repasse à la base ; - `5e1b1a4456` — Top : les deux liens de miniature reprennent la pièce `LIEN` de la base ; - `feb4ca4620` — Banc top : la largeur du lien reste vérifiée, la pièce `LIEN` en plus. Les quatre idées de cette branche s''y retrouvent (montage avec `props: { api }`, `lire` importé, miniature de la base, largeur portée par le lien avec l''habillage `LIEN` conservé). Elle était en conflit avec `main`, d''où le label `conflit`, et sa CI était rouge sur un test Rust flaky — rien de son fait. Ce qui manquait à `main`, le banc qui garde la panne, part dans #1793.
hermes-bot closed this pull request 2026-10-17 00:44:56 +02:00
Some checks failed
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Failing after 43s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 2m8s

Pull request closed

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!1792
No description provided.