Repository navigation
catalog: le JSON généré franchit le plafond API contents (1,04 MB) + écart d'indexation non documenté (112) + compte README GameTheory (−12) #15606
Description
Activity
Grain: MED/tooling — lane myia-po-2023:CoursIA — prev: DEEP/research-code #15627
[CLAIMED] #15606 — myia-po-2023:CoursIA — 2026-09-11T18:20Z — tranche : point 2 (le générateur NOMME ses exclusions) + point 3 en rider (même règle de comptage).
Le point 1 (plafond contents 1 MiB : prune vs blob-only) exige d'énumérer les consommateurs
contents— je le MESURE et rapporte sur ce fil dans la même passe ; s'il appelle un correctif, il sera une PR séparée (un sujet = une PR), pas un rider.Grain: MED/tooling — lane myia-po-2023:CoursIA — prev: DEEP/research-code #15627
Mesures firsthand (2026-09-11,
origin/main@d14b1ac098) sur les points 1 et 3, livrées avec la PR #15632 (point 2 : le générateur émet désormais son compte d'exclusions par motif).Point 1 — plafond contents : mesuré, énuméré, aucun consommateur in-repo à corriger
Le catalogue = 1 096 716 octets (git cat-file), au-dessus du plafond 1 MiB de l'API contents. Mesuré en direct :
GET /contents/COURSE_CATALOG.generated.json→ HTTP 200,.sizecorrect, mais.contentvide (encoding: "none") — le point de défaillance est pire qu'une erreur franche : un consommateur qui fait.content | base64 -dreçoit une entrée VIDE en silence.GET /git/blobs/<sha>→ intact (base64, 1 486 660 chars pour les 1 096 716 octets).
Énumération des consommateurs (le vrai travail demandé) : aucun script/workflow du repo ne lit le catalogue via l'API GitHub — tout le monde lit le checkout (
grep -rn "COURSE_CATALOG" scripts/ .github/filtré API/fetch = 0). Les seuls usagescontentsdu repo portent d'autres chemins :epita_prcon_autograde.py:103(notebooks étudiants, petits fichiers) etslides-composition-pr-relay.yml:86(listing de dossier). L'exposition est donc externe : un reviewer bot qui lirait le catalogue parcontents(la review NanoClaw de #15358 citée dans l'issue vit dans roo-extensions, hors repo) serait aujourd'hui aveugle sans s'en apercevoir.Recommandation (à trancher coordinateur/user, pas un rider) : si le bot lit par
contents, le migrer versgit/blobs(marche aujourd'hui, taille non plafonnée) ou la raw URL ; le prune du JSON est une autre option mais sépare le.mddu.jsonsémantiquement. Rien à corriger dans ce repo.Point 3 — GameTheory : réconcilié, l'écart structurel est 0
Re-mesuré aujourd'hui : arbre GameTheory = 100 ipynb, catalogue = 98, marqueur README
pedagogical_count: 98(régénéré, conforme au catalogue). L'écart de 2 =GameTheory-02c-Travelers-Dilemma-Csharp.ipynb(ajouté 00:32) etGameTheory-06f-Bounded-Agents-Python.ipynb(06:21), tous deux postérieurs à la base de la régén 16:00 → retard d'ingestion cron, rattrapé au tick suivant. Le « 88 vs 100 » de l'issue mesurait le marqueur périmé d'alors (86 → 88 → 98 au fil des régén du jour).Aucune exclusion structurelle dans GameTheory : les 117 exclusions substring du scan se répartissent hors de cette série. Une fois le rattrapé cron fait, arbre 100 = catalogue 100, marqueur conforme — rien à corriger dans ce README.
Point 2 — livré : PR #15632
Le générateur émet à chaque run son compte par motif (7 motifs, précédence réelle du scan, attribution déterministe) et la règle est documentée dans
scripts/notebook_tools/README.md§Catalogue. Réconciliation de référence mesurée : 1254 = 1136 indexés + 117 exclusions + 1 racine jamais parcourue (GradeBook.ipynb— le scan itère les séries, pas les fichiers racine ; compté sous son propre motif désormais).See #15606 (point 2 livré par #15632 ; points 1 et 3 mesurés et réconciliés ci-dessus — le point 1 n'appelle un correctif que côté outil externe, hors repo).
🤖 Generated with Claude Code
- added a commit that references this issue
on Sep 12, 2026 - addedcandidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)Referenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)
on Sep 12, 2026 [ADJOINT CLOSE] Adjugée CLOSE_OK — campagne de consolidation du 2026-09-18 (mandat ai-01 2026-09-18T03:12Z, fermeture déléguée).
Acceptance vérifiée firsthand contre main :
- Organe livré : PR feat(catalog,#15606): le générateur émet son compte d'exclusions par motif #15632 MERGED 2026-09-12T00:58Z —
generate_catalog.py:1693(compte excluded/motif) +scripts/notebook_tools/README.md:592(règle d'exclusion). - Point 1 (énumération consommateurs
contents) : faite sur le fil — 0 consommateur in-repo, exposition = bot externe roo-extensions. - Point 3 (réconciliation) : écart structurel 0,
GameTheory/README.md:7pedagogical_count: 101courant.
Spot-check adjoint :
git show origin/main:MyIA.AI.Notebooks/GameTheory/README.md | grep pedagogical_count→ ligne 7 = 101 (confirmé moi-même).Réouvrir en citant le critère manquant si contestation.
- Organe livré : PR feat(catalog,#15606): le générateur émet son compte d'exclusions par motif #15632 MERGED 2026-09-12T00:58Z —
Trois faits mesurables sur le générateur de catalogue, tous structurels (identiques sur
main, pas des régressions d'une PR), remontés par la review NanoClaw de #15358 et re-mesurés firsthand au 2026-09-11. Le premier a une échéance réelle.1.
COURSE_CATALOG.generated.jsona franchi le plafond de l'API contentsConséquence déjà acquise : l'extraction par
contentséchoue pour ce fichier. Le blob API tient encore, donc rien n'est cassé aujourd'hui — mais toute revue automatisée qui lit le catalogue par la voiecontentsest désormais aveugle, et le fichier croît d'environ +150 lignes par run de cron.Deux voies, à trancher : pruner le JSON (champs git-dérivés redondants avec le
.md?) ou assumer le blob-only et corriger les consommateurs qui passent parcontents. La seconde demande d'énumérer ces consommateurs — c'est le vrai travail de ce point.2. L'écart catalogue / arbre n'est pas documenté
.ipynbdans l'arbre (origin/main, hors_archive,.lake/, checkpoints)L'écart est identique sur
main: il est structurel, le générateur exclut délibérément une classe de chemins. Mais cette classe n'est écrite nulle part, si bien que chaque run de cron peut relancer une fausse alarme « catalogue incomplet » — et qu'aucun auditeur ne peut distinguer une exclusion voulue d'un notebook réellement oublié.Le geste : nommer la règle d'exclusion dans le README du générateur (ou dans ce fil), et de préférence la faire émettre par le générateur lui-même (un compte
excluded: Npar motif), pour que la réponse ne se périme pas.3. Le compte du README GameTheory diverge de l'arbre
MyIA.AI.Notebooks/GameTheory/README.mdporte 88 (86 avant cette régénération) ; l'arbre en contient 100 avec les mêmes exclusions. Écart de 12, ancien, présent surmain. Même famille que le point 2 : une fois la règle d'exclusion nommée, ce compte doit s'y réconcilier ou être corrigé.Ce que cette issue n'est pas
Aucun des trois points ne bloque #15358 : ce sont des propriétés du générateur, que la régénération du jour n'a fait qu'exposer. #15358 est mergée en nommant cette issue comme levée B.0 des concerns 1-3 de la review NanoClaw. Le catalogue appartient à l'automatisation (
catalog-pr-hygiene.md) : la correction se porte surcatalog-cron.yml/ le générateur, jamais à la main sur une branche de contenu.🤖 Generated with Claude Code