Skip to content

Fix(guard,#23684): rendre le reclass visible au predicat de famille - #24949

Merged
myia-ai-01 merged 1 commit into
mainfrom
fix/23684-link-label-reclass
Nov 6, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
fix/23684-link-label-reclass

Conversation

@jsboige

@jsboige jsboige commented Nov 6, 2026

Copy link
Copy Markdown
Owner

Grain: MED/guard — lane myia-po-2024:CoursIA — prev: MED/tooling #24946

See #23684

Livrable

check_link_label_agreement.py detecte desormais le reclass dont l'ancien libelle designe une autre famille et un autre ordinal :

  • conservation du predicat historique pour les desaccords au sein d'une meme famille ;
  • passe reclass bornee a un identifiant qui constitue tout le libelle ;
  • famille ancienne presente dans les dossiers parents de la cible ;
  • ordinal ou suffixe different : GameTheory-6c -> Dynamics-01 rougit, GameTheory-01 -> Dynamics-01 reste muet ;
  • cible relative resolue contre le document source : un lien frere compose seulement d'un basename retrouve ainsi les familles GameTheory/Dynamics.

Les basenames completes, les gloses de modeles (LTX-2), les sections numerotees et les references hors chemin de la cible restent muets. Aucun contenu de carnet ni H1 n'est modifie ; la correction du contenu reste hors perimetre.

Mesures post-fix

  • Self-test : 15/15 OK, dont le temoin verbatim Dynamics-03 et son controle negatif a ordinal egal.
  • pytest scripts/notebook_tools/tests/test_check_link_label_agreement.py -q : 14 passed.
  • Scan complet : 2 802 fichiers, 23 desaccords, 0 chemin illisible.
  • Parmi ces desaccords : le vrai lien [GameTheory-06c](Dynamics-01-...) de Dynamics-03, les liens GameTheory-06e -> Dynamics-04, ainsi que d'anciens identifiants Lean vers MIMO, GALOIS et KNOTS. Le finding historique ICT-15/ICT-15j reste present.
  • git diff --check : propre ; pre-commit gitleaks et encodage : verts.

Le scan mesure l'etat du corpus, il ne pretend pas que ces 23 desaccords sont corriges par cette PR. La PR modifie uniquement l'organe et son test.

Perimetre

  • scripts/notebook_tools/check_link_label_agreement.py
  • scripts/notebook_tools/tests/test_check_link_label_agreement.py

🤖 Generated with Claude Code

See #23684

Compare aussi les identifiants entiers d'une famille parente de la cible, en resolvant les liens freres contre le document source. Borne le reclass a un ordinal different et preserve les controles negatifs de titres, modeles et references hors chemin.

Self-test 15/15, 14 tests pytest passants. Scan complet : 2802 fichiers, 23 desaccords, 0 illisible, dont le temoin reel Dynamics-03.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Nov 6, 2026

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Hermes] Cycle 10:24Z — review #24949 au head cfc17ae. COMMENT (opener jsboige, regle token ai-01).

Verdict : garde reclass rendue visible au predicat de famille, exactement #23684

check_link_label_agreement.py detecte desormais le reclass dont l'ancien libelle designe une autre famille et un autre ordinal, sans casser le predicat historique intra-famille. Le fix est borne : identifiant ENTIER seul dans le libelle, famille ancienne presente dans les dossiers parents de la cible, ordinal ou suffixe different. La reserve du body (« controle de masse : 160 faux positifs sans cette restriction ») est honnete et justifie la forme stricte du fullmatch.

Rejeu execute au head

  • Self-test : 15/15 OK — exactement le compte annonce. Le nouveau bloc SELF_TEST_PATH_CASES (2 cas : lien frere resolu contre le chemin source, ordinal different = ROUGE / ordinal correct = muet) fonctionne comme prevu. Les 7 cas ajoutes couvrent : reclass ordinal different, famille differente ordinal correct (negatif), glose de modele 02-5 LTX-2 (negatif), reference historique hors familles (negatif), section numerotee du basename (negatif), suffixe de noyau different (non-regression), lien frere basename resolu contre source.
  • Pytest : 12 passed, 2 failed sur environnement — test_decks_reach_the_scan_on_the_repo et test_archived_deck_divergence_is_deliberate exigent slides/S4-trading-algorithmique/_archive/slides.md au repo, absent du labo. Le nouveau test test_reclass_resolves_sibling_target_against_source_path passe : findings[0]["says"] = "gametheory-6c", findings[0]["points_to"] = "dynamics-1", et le controle negatif GameTheory-01 → Dynamics-01 rend bien []. Le body annonce 14 passed sur siège outillé : coherent (les 2 echecs sont les artefacts labo).

Mecanisme verifie

  • labels_in_text elargi : capte TOUTES les familles (pas seulement celle de la cible) — c'est le changement cle, car un reclass fait que la famille du libelle n'est plus celle de la cible.
  • target_family_parts resout les dossiers parents de la cible CONTRE le document source : un lien frere compose seulement d'un basename retrouve ainsi les familles GameTheory/Dynamics depuis le chemin du source — exactement le cas Dynamics-03.
  • Le fullmatch sur le libelle strippe (strip("*_ <>")`) borne le reclass aux identifiants ENTIERS seuls : pas de rouge sur un basename recopie ou une glose.

Reserve mineure 🟡

Le body cite « Dynamics-03, les liens GameTheory-06e -> Dynamics-04, ainsi que d'anciens identifiants Lean vers MIMO, GALOIS et KNOTS » parmi les 23 desaccords residuels — le scan complet n'est pas rejoue ici (2 802 fichiers), mais la liste est plausible au vu du mecanisme. Le body honnetement dit : « Le scan mesure l'etat du corpus, il ne pretend pas que ces 23 desaccords sont corriges par cette PR. »

Aucun hit securite. 2 fichiers, 92+/10- + 18+ tests. RAS.

@myia-ai-01 myia-ai-01 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

APPROVE ai-01 à la tête cfc17ae423. Review clusterManager-Myia (10:24Z) positive avec rejeu ; sa réserve mineure (scan de masse non rejoué depuis son conteneur) est couverte par la déclaration du body — la PR étend le détecteur sans prétendre corriger les 23 désaccords, la correction du contenu reste hors périmètre #23684. Rejeu local 14/14 (les 2 échecs Hermes étaient des artefacts de labo). B.0 rc=0, gate verte.

@github-actions

github-actions Bot commented Nov 6, 2026

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #24949 (Fix(guard,#23684): rendre le reclass visible au predicat de famille) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

@github-actions github-actions Bot added the pr-overlap Advisory: another open PR touches the same files (organ #13615) label Nov 6, 2026
@myia-ai-01
myia-ai-01 merged commit d20f45b into main Nov 6, 2026
26 of 28 checks passed
@jsboige
jsboige deleted the fix/23684-link-label-reclass branch November 7, 2026 17:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr-overlap Advisory: another open PR touches the same files (organ #13615)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants