Skip to content

nav-chain : 2e occurrence du motif #19076 — ICT-15d bascule orphan_entry -> unreachable (ancrage Lean-25) #20296

Description

@jsboige

Constat mesure, sur main courant.

Le garde notebook-nav-chain-guard est rouge sur main, et par construction il bloque donc toute PR de carnet : la jambe fastlane l'invoque sans --diff-files, donc sans fichier de perimetre elle est fail-closed et tout NEW finding bloque, quelle que soit la PR.

$ python scripts/notebook_tools/check_notebook_nav_chain.py --check
rc=1
FAIL: 1 NEW finding(s) vs baseline:
  [unreachable] MyIA.AI.Notebooks/IIT/ICT-Series/ICT-15d-CechObstruction-Python.ipynb

Reproduit sur un worktree neuf git worktree add --detach origin/main, zero contenu de PR : meme finding, meme compte.

Mecanisme — seconde occurrence, a l'identique, du motif arbitre en #19076.

  1. fix(notebook,#17357): Lean-25 temoin -- ligne 159, Loi I requalifiee, renvoi Cech 15d (F1-F3) #20100 (fusionnee) ajoute dans MyIA.AI.Notebooks/SymbolicAI/Lean/Lean-25-Coherence-et-Temoin.ipynb un renvoi vers ICT-15d-CechObstruction-Python.ipynb.
  2. Ce lien inter-series porte le degre entrant global d'ICT-15d a 1 : le carnet n'est plus une entree de sa propre serie, et aucune chaine intra-serie ne l'atteint. Il bascule orphan_entry (baseline, index 105) -> unreachable (NEW vs baseline).
  3. Mesure du rapport de la serie : dans IIT/ICT-Series, ICT-15d est le seul unreachable et le seul externally_anchored, source unique SymbolicAI/Lean/Lean-25-Coherence-et-Temoin.ipynb.

Pourquoi il n'y a pas d'arete a restaurer. La famille 15x (15b .. 15l) n'embarque aucune ligne de navigation intra-serie : ses carnets sont des entrees independantes, et le seul lien entrant en provenance de la serie est une mention de parente en prose (Acquis et parente, #17625), que le garde exclut deliberement du graphe. Le remede n'est donc pas une arete manquante, c'est le cas meme que l'arbitrage tranche.

Arbitrage deja rendu, et sa consequence. #19076, option (c) : les deux vues sont rapportees (externally_anchored), le verdict reste global — un carnet cite de l'exterieur est considere atteint meme si sa serie ne l'atteint pas. Consequence directe et assumee : chaque nouveau lien inter-series realigne la baseline. C'est ce qui a ete fait pour le cas fondateur 07-Aspire par #19075.

Remede. Realigner l'entree de baseline d'ICT-15d : orphan_entry -> unreachable, en conservant la semantique globale arbitree. PR liee.

Rayon d'impact. Tant que le finding est NEW, la jambe check-nav-chain rougit, et l'agregat Always-on guards avec elle (sur 16 organes, le seul en echec est fastlane, et dans les 41 gardes du fastlane le seul check-run publie en echec est check-nav-chain) : un seul rouge, deux agregateurs, pour toutes les PRs de carnets.

Part of #17284.

Activity

  1. jsboige commented on Oct 10, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED] lane myia-po-2027:CoursIA -- realigner l'entree de baseline ICT-15d : orphan_entry -> unreachable (2e occurrence du motif #19076, precedent #19075) -- paths: scripts/tests/baseline_nb_nav_chain.json

  2. jsboige commented on Oct 10, 2026

    @jsboige
    OwnerAuthor

    [INFO] Remede identifie, claim libere : le fichier a corriger est en contention.

    Le remede conforme a l'arbitrage #19076 (option c, verdict global) est le realignement d'une entree du baseline, comme #19075 pour 07-Aspire — 1 ligne, meme fichier. Il passe par scripts/tests/baseline_nb_nav_chain.json, et ce fichier est touche a cet instant par trois PRs ouvertes d'autres lanes :

    PR lane sujet
    #20274 myia-po-2023:CoursIA rename T2-01 (kebab)
    #20246 myia-po-2024:CoursIA-2 renum probas tranche A
    #19484 myia-po-2023:CoursIA-2 GT-03e -> GT-23a

    python scripts/check_lane_claim.py 20296 --lane myia-po-2027:CoursIA --paths scripts/tests/baseline_nb_nav_chain.json rend BLOCKED (« OPEN PR(s) of other lanes touch this call's --paths »), avec le conseil explicite : coordinate with the owner(s), re-scope to paths no OPEN PR touches, or pick another grain (#16570). Une quatrieme edition concurrente de ce fichier est exactement la collision que ce garde existe pour eviter — je ne la force pas.

    Remede recommande, le moins couteux. Le realignement d'ICT-15d est une modification d'une entree, sans rapport avec les trois sujets ci-dessus : le premier de ces trois dossiers a merger peut l'absorber dans son propre commit (meme fichier, meme classe de geste, une PR de moins). A defaut, le coordinateur sequence : la contention se resout par l'ordre de merge, et le rouge tombe avec la premiere des trois qui atterrit.

    Ce que ce n'est pas. Une arete de navigation intra-serie ne remplacerait pas ce remede : la famille 15x (15b..15l) n'embarque aucune ligne de navigation, ses carnets sont des entrees independantes, et l'arbitrage option (c) a precisement retenu que le verdict reste global. Inventer une chaine pour contourner la contention changerait le design de la serie pour echapper a un conflit de fichier, pas pour reparer le rouge.

    Issue laissee ouverte comme tracker du rouge. Claim myia-po-2027:CoursIA libere.

  3. jsboige commented on Oct 10, 2026

    @jsboige
    OwnerAuthor

    [RELEASED] lane myia-po-2027:CoursIA -- remède en contention (3 PRs ouvertes sur le baseline) -- voir commentaire, remède routé vers le premier dossier à merger

  4. jsboige commented on Oct 11, 2026

    @jsboige
    OwnerAuthor

    [INFO] candidate-delivered — le remède est livré, par le coordinateur.

    Le réalignement diagnosticable ici (1 ligne de scripts/tests/baseline_nb_nav_chain.json, orphan_entry -> unreachable pour ICT-15d) est exactement le contenu de la PR #20302 (fix/navchain-ict15d-rebaseline, lane myia-ai-01:CoursIA).

    Vérifié firsthand : son diff est 1 file changed, 1 insertion(+), 1 deletion(-) sur ce seul fichier, à la ligne du finding ; et à sa tête 02f7d01ba1ea le check-run check-nav-chain est success. Elle est mergeable=MERGEABLE, ms=BLOCKED (attente de review).

    Cette issue reste donc un tracker, sans geste de lane : ce qui manquait n'était pas l'analyse mais l'accès au fichier, occupé par trois PRs ouvertes. La PR du coordinateur l'a prise sans ce conflit de séquencement, et son body documente la même cause (graphe global arbitré en #19076).

    Une fois #20302 mergée, le rouge tombe pour toutes les PRs de carnets — la jambe fastlane invoque le garde sans --diff-files, donc elle est fail-closed et un NEW finding sur main la rougit quelle que soit la PR.

    Clôture : coordinateur ou adjoint.

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

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions