Skip to content

fix(17391): Lab17 -- le schema passe en Mermaid, l'attribution DS-STAR corrigee #11082

fix(17391): Lab17 -- le schema passe en Mermaid, l'attribution DS-STAR corrigee

fix(17391): Lab17 -- le schema passe en Mermaid, l'attribution DS-STAR corrigee #11082

name: Notebook Navlink Check
# CI gate for broken relative navlinks INSIDE .ipynb markdown cells.
# Like docs-link-check.yml: deliberately NO --quiet, so on failure each broken
# navlink is printed (source:line -> target) and the CI log is self-diagnosing;
# on success the output is a single summary line, so verbosity costs nothing.
# --quiet stays available for local/pre-commit use. Checker: check_notebook_navlinks.py (PR #6813). Enforces the
# EPIC #5081 renumbering hygiene: any NEW broken navlink 404 introduced by a PR
# fails the gate (exit 1). Pre-existing broken are tracked in the baseline
# (scripts/tests/baseline_nb_navlinks.json) and do not block.
#
# The checker is stdlib-only (no deps) and handles un-checked-out submodules
# (deep-links into git submodules are filtered via .gitmodules parse).
on:
pull_request:
paths:
- '**/*.ipynb'
- 'scripts/notebook_tools/check_notebook_navlinks.py'
- 'scripts/tests/baseline_nb_navlinks.json'
- '.github/workflows/notebook-navlink-check.yml'
permissions:
contents: read
concurrency:
group: notebook-navlink-check-${{ github.ref }}
cancel-in-progress: true
jobs:
check-navlinks:
# Route vers la jambe Linux auto-hebergee (#13378 tranche 1, decision ai-01
# 2026-09-01) : garde Python pur, sans secret ni usage du GITHUB_TOKEN. La garde
# same-repo ci-dessous saute les PRs de fork (pr_gate.py compte `skipped` comme
# OK) : aucun code de fork n'atteint le runner. Retour arriere = revert de la PR.
runs-on: [self-hosted, coursia-ephemeral, coursia-linux]
if: github.event.pull_request.head.repo.full_name == null || github.event.pull_request.head.repo.full_name == github.repository
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
# La jambe Linux conteneurisee n'expose pas de `python` systeme (job
# 100021313259, exit 127) : le checker est stdlib-only, mais l'interprete
# vient de setup-python, comme dans les dix autres gardes de la tranche 1.
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Check notebook navlinks
run: python scripts/notebook_tools/check_notebook_navlinks.py --check