Skip to content

check(guards,#22291): le predicat de famille rend le reclass invisible -- 10 H1 GameTheory dans Dynamics/ #23684

Open

Description

@jsboige

Part of #22291

Constat

scripts/notebook_tools/check_link_label_agreement.py ne voit pas le cas du reclass : un libelle qui nomme une famille differente de celle de sa cible.

Le predicat de l'organe (lignes 99-116) fait :

prefix, tnum, tlet = tid                      # famille + ordinal tires de la CIBLE
for lnum, llet in labels_in_text(label, prefix):   # identifiants de MEME famille cherches dans le libelle

La famille de recherche est celle de la cible. Si le libelle dit GameTheory-6c et que la cible est Dynamics-01-..., la recherche porte sur Dynamics-NN : elle ne trouve rien, et le desaccord n'est jamais signale.

Mesure sur origin/main (31/10, 6d9b9936)

python scripts/notebook_tools/check_link_label_agreement.py --json
-> scanned: ..., findings: 4, unreadable: 0

Les 4 findings sont tous de la meme famille que leur cible (3 sur ANALYSE-06 vs ANALYSE-06b, 1 sur ICT-15/ICT-15j). Zero dans Dynamics/.

Or le defaut y est massif et visible par le lecteur : docs/curriculum/recherche.md ligne 66 (regenere le 31/10 02:23) affiche

| 35 | [GameTheory-6c (C#) : Jeux Repetes et Theoreme Folk](../../MyIA.AI.Notebooks/GameTheory/Dynamics/Dynamics-01-Jeux-Repetes-Folk-Theorem-CSharp.ipynb) | BETA | Oui |

Le libelle est le H1 du carnet (le generateur prend extract_title), la cible est le chemin : les deux se contredisent. C'est exactement le defaut decrit dans #22291, et il est invisible pour l'organe.

Etat mesure des H1 dans MyIA.AI.Notebooks/GameTheory/Dynamics/ (10 carnets sur 11 portent encore l'ordinal GameTheory) :

carnet H1 porte
Dynamics-01-...-CSharp.ipynb # GameTheory-6c : Jeux Repetes et Theoreme Folk (Folk Theorem)
Dynamics-02-... # GameTheory-6b — Jeux repetes en Lean ...
Dynamics-03-... # GameTheory-06d : Sympathie contre Engagement ...
Dynamics-04-... # GameTheory-06e : Transparence des programmes ...
Dynamics-04b-... # GameTheory-06k — FairBot par le theoreme de Lob ...
Dynamics-05-... # GameTheory-06f — Agents a budget explicite ...
Dynamics-06-... # GameTheory-06j — Preuves bornees ...
Dynamics-07-... # GameTheory-06g — Equilibres de jeux-programmes ...
Dynamics-08-... # GameTheory-06h — Programmes transparents ...
Dynamics-09-... # Dynamics 09 — Biens publics non-lineaires ... (seul deja aligne)

Le contenu de ces H1 est porte par la PR #20442 (ouverte, autre lane) : cette issue ne porte que le trou de l'organe, pas le correctif de contenu.

Deux remedies possibles (a arbitrer)

  1. Comparer l'ordinal du libelle a celui de la cible, quelle que soit la famille. Le predicat devient « le libelle nomme-t-il un identifiant famille-NN qui ne correspond pas a l'ordinal de la cible ? ». Inattendu : la forme « basename sans extension » et les gloses hors crochets restent hors predicat, donc l'elargissement est mechanic.
  2. Ajouter une seconde passe « reclass » : comparer le prefixe de famille du libelle a celui de la cible, et signaler quand ils diffèrent et que les deux appartiennent a l'univers des familles de notebooks du depot. Plus etroit, mais plus proche du cas mesure.

Le choix demande un controle negatif explicite (voir acceptance), sinon l'elargissement produit un rouge de masse.

Acceptance

  • Un libelle de famille differente de la cible et d'ordinal different est signale (controle positif : GameTheory-6c -> Dynamics-01-...).
  • Un libelle de famille differente et d'ordinal correct n'est pas signale (controle negatif obligatoire : sans lui, l'elargissement rouge sur tout le monde).
  • Un libelle de famille identique et d'ordinal different reste signale comme aujourd'hui (non-regression des 4 findings actuels).
  • Le cas ANALYSE-06 vs ANALYSE-06b (famille identique, suffixe de noyau) reste signale.
  • --self-test de l'organe mis a jour et vert ; rc inchangé sur origin/main hors des nouveaux cas attendus.
  • Le correctif de contenu (les 10 H1) reste porte par Fix(gametheory,#20381): materialiser l'ordre 01->08 dans les barres de nav Dynamics #20442 : cette issue ne doit pas creer de doublon de ce travail.

Portee

  • Un seul fichier : scripts/notebook_tools/check_link_label_agreement.py (+ son test).
  • Aucun artefact genere n'est touche : docs/curriculum/recherche.md, COURSE_CATALOG.generated.* et les blocs CATALOG-STATUS restent byte-identiques a main (regeneration par l'automatisation seule).

Trouve et mesure par lane myia-po-2028:CoursIA-2 le 31/10, en poussant le residu de #22291 mesure sur main (commentaire 6540820436).

Activity

  1. jsboige commented on Oct 31, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED] lane myia-po-2028:CoursIA-2 -- paths: scripts/notebook_tools/check_link_label_agreement.py

    Trou de predicat mesure sur origin/main le 31/10 (4 findings, 0 dans Dynamics/). Le predicat cherche les identifiants de la famille de la cible dans le libelle : un reclass (libelle GameTheory-6c, cible Dynamics-01-...) sort du predicat par construction.

    Perimetre : le seul fichier de l organe (+ son test). Le correctif de contenu des 10 H1 reste porte par #20442 -- pas de doublon. Aucun artefact genere touche.

    Suite au cycle courant (tranche RLPT-00e de #23384) : la reprise depend du prochain tour.

  2. myia-ai-01 commented on Nov 6, 2026

    @myia-ai-01
    Collaborator

    [CLAIMED] lane myia-po-2024:CoursIA -- rendre le reclass visible au predicat de famille (10 H1 GameTheory dans Dynamics/) (pose au dispatch par le coordinateur myia-ai-01:CoursIA, cycle c2779)

  3. jsboige commented on Nov 6, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED] lane myia-po-2024:CoursIA -- paths: scripts/notebook_tools/check_link_label_agreement.py -- reprise du claim po-2028 perime ; reclass signale seulement quand l'ordinal differe, controle negatif famille differente ordinal correct ; contenu H1 hors perimetre (#20442)

    🤖 Generated with Claude Code

  4. jsboige commented on Nov 6, 2026

    @jsboige
    OwnerAuthor

    [DELIVERED] lane myia-po-2024:CoursIA -- PR #24949 -- paths: scripts/notebook_tools/check_link_label_agreement.py, scripts/notebook_tools/tests/test_check_link_label_agreement.py -- reclass detecte pour les identifiants entiers d'une famille parente de la cible avec ordinal different ; liens freres resolus contre le chemin source ; temoin reel Dynamics-03 couvert ; 15 controles internes et 14 tests verts ; scan 2802 fichiers / 23 desaccords / 0 illisible, corrections de contenu hors perimetre

    🤖 Generated with Claude Code

  5. jsboige commented on Nov 6, 2026

    @jsboige
    OwnerAuthor

    [DELIVERED] lane myia-po-2024:CoursIA -- PR #24964 -- paths: scripts/notebook_tools/check_link_label_agreement.py, scripts/notebook_tools/tests/test_check_link_label_agreement.py -- predicat reclass : les libelles de famille differente sont desormais lus, sous deux bornes (famille presente dans le corpus, identifiant en tete du libelle). Mesure : 169 findings en lecture libre, 84 avec les bornes, 1 avant. Self-test 10/10, 17 tests verts. Aucun contenu corrige : les 10 H1 Dynamics restent #20442, aucun artefact genere touche.

  6. added a commit that references this issue on Nov 6, 2026
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

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions