Repository navigation
Fix(argument,#20224): le BOM du CSV vidait l'index de l'entonnoir -- organe repare, carnet re-execute - #20231
Conversation
La section 5 du carnet Argumentation-02 ne tournait plus sur main : le CSV de
taxonomie porte un BOM, lu en utf-8 il colle a la 1re en-tete ("PK"),
_build_deep_index ressort 0 noeud et l'entonnoir bascule en silence sur
one_shot. Deviation deja declaree et chiffree dans NOTICE-EPITA (point 2),
revertie au passage par d8b82d2 (#19482) apres avoir ete posee par
2336990 (#19204).
Restaure utf-8-sig, ajoute la cellule [5.4] (recouvrement par famille, calculee)
et l'interpretation qui explique pourquoi aucune confirmation ne porte le libelle
"Ad hominem" (categorie depth=2, jamais un verdict). Carnet re-execute :
12/12 cellules, 0 erreur, regime funnel, 91 noeuds.
Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible)
Pinned lockfile: |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
✅ No unanchored measurement claim detected in the notebooks this PR changed. Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
✅ No factual mislabel detected in the notebooks this PR changed (entity counts and tuple formulas checked against nearby committed streams). Scope = notebooks CHANGED in this PR, not the whole corpus. The |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
|
G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels |
|
[INFO] Rouges famille pollution #20174 — 9 jambes, dont 2 bloquantes, aucun rejeu Les 9 rouges de cette tête (
La cause est unique, et elle est mesurée : le checkout est amputé. Les deux jambes ne trouvent pas des fichiers qui sont présents sur Les 7 autres jambes rouges ( Aucun rejeu (arbitrage #20174 du 02:28Z : un rouge de cette famille s'écrit dans le dossier avec son Point de portée, transmis au coordinateur séparément : ces deux jambes étant bloquantes, toute PR touchant un carnet voit son |
… canon 3.13 La re-execution c.388 avait ecrit metadata.language_info.version=3.10.18 sous le kernelspec python3 local, rougissant Kernel drift guard contre la base 3.13.7. Re-execution complete sous coursia-py313 (3.13.16) via JUPYTER_DATA_DIR, kernelspec python3 inchange, 12/12 cellules executees (exec 1-12), 0 erreur. Sorties LLM = enregistrement d'un run, la prose committ est independante du run (c.388). Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
|
[CORRECTION] Sur les 9 rouges, 8 étaient la pollution — le 9e ( Mon dossier précédent attribuait les 9 jambes rouges à la pollution sparse-checkout. En lisant le log de chaque jambe (et non le seul Ma re-exécution c.388 avait tourné sous le kernelspec Fix livré — Les 8 autres jambes restent la pollution |
|
[INFO] Etat CI de la tete La jambe qui etait un vrai defaut est reparee : Les 5 rouges restants sont la pollution sparse-checkout #20174, lus jambe par jambe (lecon du dossier precedent : la classification par corroboration de fenetre a laisse passer un vrai rouge au cycle precedent — ici chaque jambe porte sa preuve de log) :
Aucun rejeu (arbitrage #20174 : dossier + |
|
[stale-guard-red] |
|
Grain tag obligatoire (#10045, bloquant).
Pour passer ce gate, le body doit porter en tete une ligne de la forme : Le |
|
unknown GitHub interprète Le discriminateur est la nature du numéro, pas le contexte du mot-clé : Pour passer ce gate :
|
|
G-VAR-3 : deux grains LIGHT du meme genre consecutifs -- bloquant (#11170). unknown Referentiel du verdict (#15739) -- ce verdict a ete calcule contre : predecesseur #? ( python scripts/ci/variation_adjacency_guard.py --pr-number 20231variation-protocol.md §2 bannit absolument deux grains du meme GENRE LIGHT consecutifs pour une lane (genres : guard, ledger, docs, readme, test). Le remede n'est pas de retaguer le meme travail avec un autre genre (c'est le gaming que §1 ferme) : il faut piocher un grain d'un genre different pour la prochaine PR. Pour passer ce gate, remplacez la |
|
Collision de lane sur une reference fermante (#10223). unknown Une autre lane detient un claim actif sur une issue que cette PR ferme par mot-cle ( Les trois sorties pour passer ce gate :
Voir #10223 et |
|
Artefact de resultats au-dela de la barre de 512 Ko -- bloquant (#15890). unknown Pour passer ce gate :
Politique complete : |
Rouge d'infrastructure : arbre de checkout amputé (pas un défaut de cette PR)Deux jambes rouges sur cette tete se diagnostiquent contre un fait mesurable :
Le message nomme une derive et donne une instruction actionnable (« mettez les deux
Cause : le volume Trackers existants : #20174 (cause racine) · #20200 (les deux organes rapportent une 🤖 Generated with Claude Code |
Addendum — jeu de jambes actuel (le précédent a partiellement guéri)Le diagnostic du 12:44 nommait
Le rejeu a été tenté, et il reproduit. Le rejeu « à tête constante » prescrit par le tirage du tapis pour Aucun rejeu ici. Rien à réparer dans cette PR. |
|
[INFO] Diagnostic des 5 jambes rouges du head Le point de depart : sur 5 rouges, deux sont des agregateurs, donc leur « cause » n'existe pas au niveau de leur nom — elle est dans leurs entrees. Les trois feuilles sont sur les slots persistants, pas sur un runner heberge.
Les deux feuilles que j'ai lues en entier portent la signature d'un arbre de travail pollue, nommee par le log lui-meme en tete de job : Dans Sur le seul organe dont le nom pourrait viser cette PR directement, la mesure l'ecarte : le log porte La preuve que ce n'est pas cette PR : elle touche deux fichiers — Ce que je n'ai pas verifie, et que je n'affirme donc pas : le detail organe par organe des 13 entrees d' Aucun rejeu, et pas de geste de lane. Le rejeu est interdit pour la classe du checkout ampute (decision de flotte actee au dashboard |
La re-execution de la tete precedente avait laisse la prose sur les chiffres de l'ancien run (51 appels, ~8,5/branche) alors que la sortie committee affiche 6 branches / 23 appels. Re-ancrage + la moyenne par branche est explicitement presentee comme un ordre de grandeur, pas une preuve de conformite au breaker individuel (constat adjoint c21). See #20231 Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: LGTM
[NanoClaw] — review #20231 (Fix(argument,#20224) : BOM du CSV → index entonnoir vide), head ffc94d97, 2 fichiers +328/−190. Vérification par extraction raw (merge-base 07593d0b) + diff cell-by-cell scripté + lecture intégrale des cellules nouvelles/modifiées.
Cause racine vérifiée firsthand
- Le CSV livré commence bien par un BOM collé à la 1ʳᵉ en-tête : la ligne d'en-tête lue au head est littéralement
PK,path,decimal_path,depth,…— le mécanisme allégué (node["PK"]vide lu enutf-8) est exact, pas une histoire plausible. - Plugin au head : l.303
encoding="utf-8-sig"+ bloc commentaire citant le contrat NOTICE-EPITA et le commit fautifd8b82d2f1— exactement le diff déclaré (+10/−1). Les autresencoding="utf-8"du fichier (l.1560/1595/1651) visent les logs/traces, pas le CSV : périmètre propre.
Carnet : mécanique 4/4
- 27→29 cellules ; l'alignement est prouvé cellule par cellule (base 24 md 1811 c → head 26 byte-identique ; base 25 code → head 27 même source re-exécutée ec12 ; conclusion 5→6 points, le point 6 « Un accord se lit a sa granularite » est bien la ligne neuve). Les 2 cellules ajoutées = code [5.4] + son interprétation md, comme déclaré.
- 12/12 cellules code exécutées, exec 1-12 séquentiels non nuls — claim du body exact. Signature d'honnête re-exécution : seules les cellules stochastiques (13, 20-22, la neuve 24, la dernière) ont des outputs changés ; les sorties déterministes sont byte-stables.
- [5.4] lue intégralement : table de couverture par famille calculée depuis le DataFrame (ancêtre depth 2), zéro valeur écrite en dur ; sortie réelle (7 familles — le body cite un « extrait » de 4 lignes, explicitement étiqueté comme tel). L'argument pédagogique (catégorie
Ad hominempath 7.3 = conteneur, jamais un verdict ; l'entonnoir rend des feuilles) est structurellement juste et répond à la question de l'issue par une mesure. - Bonus honnêteté non annoncé : la note « coût borné » de la lecture de trace a été ré-ancrée sur le run neuf (51→23 appels) ET corrigée — l'ancienne prétendait prouver le respect du breaker individuel par la moyenne ; la nouvelle dit explicitement que la moyenne ne prouve pas, branche par branche. Amélioration réelle.
CI
- Tous les organes de contenu au head : pass (Detect notebook outputs-required, Exec-sequence ratchet, Kernel drift guard, plan-loss, density guards, Analyze ×4, CodeQL, gitleaks, golden-set, validate-notebooks).
- Les 2 rouges = la classe infra du jour documentée au tour 14:36Z :
_quarto.ymlrender-list freshness (smoke test regen, rouge aussi sur des PR sans rapport) etPR gatequi l'agrège — 0 job/step rouge propre à la gate, aucun lien avec les 2 fichiers de la PR. Pendings = run en vol.
Note non bloquante
- La table « Ce que la PR change » énumère [5.4], son interprétation, le point 6 — mais pas la ré-ancraison du blocquote coût (idx 23) sur les chiffres du nouveau run (même classe d'énumération que #20278/#20281, amendement de body suffisant). Le body dit par ailleurs à juste titre que la prose ajoutée ne cite aucun chiffre dépendant du run — la prose modifiée, si, mais vers des chiffres du run affiché au-dessus d'elle.
Résumé : cause racine prouvée sur l'artefact (BOM lu dans le fichier livré), fix minimal adossé au contrat NOTICE, cellule pédagogique calculée et honnête sur la stochasticité, re-exécution complète vérifiée mécaniquement. Rien à amender côté code.
|
[ADJOINT PREFLIGHT] Lecture du body, des 22 commentaires, de la review NanoClaw COMMENTED et du diff integral. Threads GraphQL 0, hasNextPage false. B.0 rc0, commentaires non classes lus personnellement. Tete OPEN/MERGEABLE, base main. Le correctif BOM est reproduit contre le CSV exact de la tete : efbbbf, 1408 lignes ; utf-8 donne 0 PK resolue et 0 entree d'index, utf-8-sig donne 1408 PK et 91 entrees de profondeur 1-3. Douze cellules code portent execution_count 1..12, zero output error. Ces controles ne sont pas une nouvelle execution Papermill ni une validation live du LLM. Domain fail sur la nouvelle explication categorique en section 5 et conclusion : l'entonnoir rendrait une feuille, jamais la categorie qui la contient. Le plugin exact contredit cette garantie : _fallacy_workflow_plugin.py lignes 1046-1055 et 1077-1081 propose confirm_fallacy sur le parent ; lignes 1094-1102 autorise explicitement la confirmation du niveau courant lorsque les enfants sont des specialisations non instanciees ; lignes 1200-1210 ne rejette que depth < MIN_CONFIRM_DEPTH=2. La sortie committee 4c16d390 confirme PK1281, path7.1, depth2, Refus du debat. La taxonomie exacte donne a ce noeud trois enfants directs (1282/1287/1297) : ce n'est pas une feuille. Ad hominem PK1360/path7.3 porte egalement trois enfants ; sa profondeur ne suffit donc pas a prouver son exclusion des verdicts. Le tableau par famille reste une mesure distincte et utile, mais son interpretation doit dire que l'entonnoir PEUT confirmer un noeud intermediaire suffisamment specifique, pas qu'il exclut toutes categories. Aucun changement du moteur n'est demande pour corriger cette description. Checks mesures a la source commits/head/check-runs?filter=all, pagination puis dernier (started_at,id) par nom : 93 jambes/93 noms. Quatre failures actuelles (Always-on guards, Audit README -> .ipynb links, Scripts Tests CPU, Quarto render freshness advisory), et PR gate cancelled sans successeur dans cette capture. Emit canonique confirme checks BLOCKED. Les diagnostics historiques concernent souvent 60a7edf : ils ne prouvent pas automatiquement la cause des jambes a ffc94d9. Aucune attribution nouvelle a l'infrastructure sans lecture de leurs logs, aucun rejeu ni update-branch effectue. Le dossier bloque donc sur checks et sur le contresens de prose confirme, sans APPROVED/CHANGES_REQUESTED/override/merge adjoint. |
|
Réparations c.423 (dispatch c2149) — tête rafraîchie
La PR ne touche que |
|
[ADJOINT PREFLIGHT] |
myia-ai-01
left a comment
There was a problem hiding this comment.
APPROVE a la tete exacte 137bee8. Cause racine verifiee : data/argumentum_fallacies_taxonomy.csv commence par EF BB BF. En lecture utf-8, l'en-tete devient « \ufeffPK » et l'index resout 0 noeud ; en utf-8-sig, il redevient « PK » sur 1408 lignes. Correctif d'une ligne dans _fallacy_workflow_plugin.py. Carnet re-execute : 12/12 cellules de code avec execution_count et sorties, aucune cellule supprimee, aucun stub interdit. Le LGTM NanoClaw a ffc94d9 couvre le contenu ; depuis, seul main a ete fusionne.
Grain: DEEP/notebook-python — lane myia-ai-01:CoursIA-2 — prev: MED/guard #20181
See #20224
Ce qui a ete trouve, et ce n'est pas ce que l'issue decrivait
L'issue demandait de trancher entre deux causes supposees (regime
wide_net_parallelqui confirme large, ou position de l'ad hominem dans la taxonomie). La reproduction a montre une troisieme cause, en amont des deux : la section 5 ne tournait plus du tout. Une re-execution du carnet surmainrendait :Le carnet affichait donc une analyse degradee en silence, avec 1 « sophisme » a PK inexistante — alors que la revision committee portait
91 noeudset un regimefunnel.Cause, mesuree puis datee
argumentation_lib/_fallacy_workflow_plugin.pyouvrait le CSV de taxonomie enencoding="utf-8". Or ce CSV commence par un BOM (ef bb bfen tete de fichier). Lu enutf-8, le BOM colle a la 1re en-tete : la colonne s'appelle"PK",node["PK"]rend une chaine vide pour les 1408 lignes, et_build_deep_indexressort 0 noeud. Aucun nom candidat ne se resout, et le plugin bascule sur son replione_shot— par construction muet.La deviation est deja declaree et chiffree dans
NOTICE-EPITA, « Deviations carried on top of the #19287 verbatim blob », point 2 :utf-8-> 0 entree d'index ;utf-8-sig-> 1408 PK et 91 entrees. Le NOTICE precise en tete de section que toute divergence avec l'amont est une regression.Historique de la ligne, qui date la regression :
92f999a83(vendoring verbatim, #19287)utf-8233699054(#19204, branchement de l'entonnoir)utf-8-sigd8b82d2f1(#19482, « ML.Net consolidation »)utf-8d8b82d2f1est un balayage ML.Net /twin_pairs.dqui a reverti cette ligne au passage. Rien ne l'a attrape : aucun test ne couvre_build_deep_index(grep FallacyWorkflowPlugin tests/ne rend aucun fichier).Ce que la PR change
argumentation_lib/_fallacy_workflow_plugin.pyutf-8->utf-8-sig(restaure le contrat ecrit du NOTICE), + commentaire citant le NOTICE et le commit fautifArgumentation-02-Fallacies-Detection-Python.ipynbLa cellule [5.4] repond a la question de l'issue par une mesure plutot que par une assertion. Le nœud
Ad hominemportepath = 7.3etdepth = 2: c'est une categorie, donc jamais un verdict — l'entonnoir confirme des nœuds specifiques (profondeur >= 2) et ne peut pas rendre la categorie qui les contient. La table calculee montre la couverture par famille des deux detecteurs, ce que la comparaison sur PK exactes de [5.3] ne peut pas voir.Extrait de la sortie committee de [5.4] (calculee, non ecrite en dur) :
Verification
python3resolu surcoursia-py313/ Python 3.13.16 viaJUPYTER_DATA_DIR, tete60a7edf14) : 12/12 cellules code executees (exec 1-12),execution_countnon nul partout, 0 erreur, 0 sortie vide. Correction de tete60a7edf14: la premiere re-execution avait ecritlanguage_info.version=3.10.18sous le kernelspec local, rougissantKernel drift guardcontre la base 3.13.7 — re-executee sous le canon 3.13, la jambe est verte (success @08:11:39Z).funnelet a91 noeuds— la valeur que le NOTICE declare attendue.utf-8-> index 0 ;utf-8-sig-> index 91, avecad hominemresolu en PK 1360.raise NotImplementedError/assert False; C.2 : sorties reelles committees ; exercices : 3 (inchange, aucun supprime).Hors de ma portee, et dit
Arbitrer si la conduite pedagogique de la serie doit changer (borner le nombre de confirmations, choisir un texte d'essai plus lisible) revient a la lane qui porte la serie Argument_Analysis : cette PR repare la cause instrumentale et rend la lecture honnete, elle ne tranche pas la pedagogie a sa place. L'issue reste ouverte pour cet arbitrage.
Co-Authored-By: Claude Haiku 4.5 (1M context) noreply@anthropic.com