Skip to content

feat(ci): justification par body pour LOST_NAV_LINKS (extension du dispositif #13491) #17727

Description

@myia-ai-01

Constat

L'organe scripts/notebook_tools/detect_md_content_loss.py signale LOST_NAV_LINKS quand une cible de navigation de la base disparaît de la tête. Depuis l'option a du 2026-09-24 (commentaire 5809336658), un libellé générique qui survit sur une cible déjà pointée en base n'excuse plus la perte.

Le commentaire du code prescrit alors que la perte soit « à justifier dans le body de la PR ». Or le seul dispositif de justification par body (#13491, --pr-body-file / --pr-body) ne lit que les findings TRUNCATED_CELL, et son docstring exclut LOST_NAV_LINKS en toutes lettres. La prescription du code n'a donc aucune porte d'entrée.

Instance : #17392 (Lab6-First-Agent), qui fusionne un double bloc de navigation.

  • Deux cibles « Index » divergentes : ../../../../README.md et ../../README.md.
  • Nombre de liens de navigation : 7 → 4.
  • Le notebook grossit : 6686 → 7065 caractères normalisés, md_cells 21 → 22.

La lane a justifié la perte dans le body. Le rouge reste bloquant, et aucun geste de la lane ne peut le lever.

Grain

Étendre le dispositif #13491 à LOST_NAV_LINKS, sur le modèle de TRUNCATED_CELL_JUSTIFIED_BY_BODY :

  1. Un marker de body keyé sur le couple (notebook, cible), par exemple md-content-loss: navigation assumee -- <notebook> target <cible> : <raison>.
  2. Le finding justifié est réécrit en LOST_NAV_LINKS_JUSTIFIED_BY_BODY. La trace est préservée, jamais masquée, et le verdict binaire ne compte plus ce finding.
  3. Justification partielle. Si une seule des cibles perdues n'a pas de marker, le finding reste rouge pour les cibles restantes.
  4. Raison. Un marker sans raison, ou avec une raison vide, n'est pas valide.
  5. Tests.
  6. Docstring. Mettre à jour le point 8 et la liste des catégories non couvertes.

Hors périmètre

Pas d'assouplissement de (e2) ou de (e3). La perte reste détectée : elle devient seulement déclarable.

Critère de mort

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    candidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions