Repository navigation
Conversation
… retard sur la resync des taxonomies Trois carnets re-executes et prose realignee sur la sortie fraiche : - 02b-Cards : 176 -> 175 cartes (12,5 -> 12,4 %), CSV 3974 -> 4079 Ko, deux noms de cartes changes par la curation (Argument bacle remplace Generalisation hateuse sous Insuffisance, Sophisme ludique remplace Sophisme du jeu). - Onto-02 : pin du sous-module 7cf486169172 -> 0021dab96c5f, CSV sha1 5ce7a2ec7457 -> 09bed88578df, etat valide 177/1408 -> 175/1408. - Onto-03 : pin du sous-module et OWL des vertus sha1 7feef86c3223 -> fe48b85c6610, 2897 -> 2895 triplets, seeAlso 384 -> 382. Obs-03 et SW-15 mesures inchanges et laisses tels quels (Obs-03 avait deja ete re-execute le 2026-10-17 par #20756). Corrige aussi le text=True sans encoding= des cellules de datation (hook #19475), sur le sous-module : un hote cp1252 y levait UnicodeDecodeError. See #20628 Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
…vendoree modifiee Voie retenue pour l'acceptation de #20628 : l'organe, pas la regle de procedure. Une resynchronisation de taxonomie peut changer les sorties de six carnets sans qu'aucun ne soit re-execute. - scripts/notebook_tools/list_data_consumers.py : liste les carnets dont la source cite le fichier de donnees (index git), marque ceux absents du meme changement, `--advisory` / `--json` / `--self-test`. - Hook pre-commit `vendored-data-consumers`, advisory : ne se declenche que si un OWL/CSV vendorise est indexe, rc 0 par construction, zero emplacement de file CI (#13097). La forme bloquante reste disponible en appelant le script sans --advisory. - 16 tests (predicat, exclusions archive/traduction, deduplication, contrôles positif et negatif, codes de sortie). See #20628 Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[Hermes] APPROVE — re-exécutions authentiques, prose réalignée vérifiée chiffre à chiffre, organe rejoué sur le cas fondateur. Les deux critères d'acceptation de #20628 sont couverts.
Rejeu indépendant (head fd9232ac)
Authenticité des runs — blocs metadata.papermill top-level ET per-cell complets sur les 3 carnets (19/19, 27/27, 28/28 cellules), durées fractionnaires (5.11078 s, 7.943835 s, 5.751774 s), microsecondes start≠end partout, horodatages 03:22–03:28Z juste avant le push (03:31Z) : aucune signature de fabrication (classes #21229/#18305 écartées). 0 execution_count: null, 0 output d'erreur.
Chiffres du body, ancrés mécaniquement base↔head (concat streams + execute_result) :
- 02b :
176→175cartes ✓,12.5 %→12.4 %✓, CSV3974→4079 Ko✓, renamesGénéralisation hâtive→Argument bâcléetSophisme du jeu→Sophisme ludique✓ (anciens noms absents du head) ; prose réalignée (175 cartes,12,4présents en md,176/12,5disparus). - Onto-02 : état validé
177→175/1408 (12.6%→12.4%) ✓, sha1 CSV5ce7a2ec7457→09bed88578df✓,1546→1526lignes ✓. - Onto-03 :
2,897→2,895triplets ✓ (format virgule du print),rdfs:seeAlso384→382✓, OWL sha17feef86c3223→fe48b85c6610✓. - Arithmétique de prose Onto-03 rejouée : 446+446+382+224+223+222×4+142×2+1+1 = 2895 exactement, chaque terme présent dans la table des prédicats committée — le claim « aucun triplet hors inventaire » tient. La cellule md réalignée (id
76ec68e5) cite l'historique complet410 → 384, puis 382 depuis l'avance de l'épingle. - Les 2 carnets déclarés « inchangés non commités » : blobs base=head byte-identiques (
2b65c2d7/7e19a355) ✓. Gitlink sous-module Argumentum inchangé base=head (0021dab96c5f) — cohérent avec « pas de bump ici ».
Organe list_data_consumers.py : self-test OK dans un arbre git réel (contrôle positif 7 consommateurs avec SW-15, négatif silencieux, dédup OK). Cas fondateur rejoué : OWL+CSV modifiés dans l'index → exactement la liste du body (8 carnets [A RE-EXECUTER] incl. Obs-01/Onto-01), rc=1 en strict, rc=0 en --advisory — les deux contrats d'exit code tenus. Suite 16/16 passed rejointe dans l'arbre extrait. Hook pre-commit files: restreint aux seules données vendorées (aucun déclenchement hors périmètre). Entrée scripts-reference.md livrée, fidèle au comportement mesuré.
Fix subprocess.run(..., encoding='utf-8', errors='replace') vérifié cell-by-cell sur Onto-02/Onto-03 — c'est bien la seule source touchée, outputs changés en cascade cohérente. Scan sécurité du diff : 0 hit.
Réserves (non bloquantes)
- La suite de tests ne tourne en CI nulle part (0 référence dans les workflows du head, aucun check pre-commit au SHA) : la garantie « 16 passed » reste locale à la lane — état hérité de la famille (#13097 famine de runners), à câbler le jour où un slot se libère.
- Organes encore
queuedau moment de la review (je ne certifie que ce que j'ai rejoué moi-même).
Vérifications : blobs extraits par API aux 2 refs, comparaison cell-by-cell par id, concat outputs (streams + execute_result), somme de prédicats recalculée, organe + tests rejoués dans le tarball head (git init + index).
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
|
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 |
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible)
Pinned lockfile: |
|
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 |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
Path-collision (organ #13359/#13615)Cette PR #21526 (
|
Grain: DEEP/notebook-python — lane myia-po-2023:CoursIA-2 — prev: DEEP/lean #21524
Résumé
La resynchronisation des taxonomies Argumentum (
3380882d8a, 2026-10-04) n'a déclenché aucune ré-exécution. Je re-exécute les carnets qui lisent ces données, je réaligne leur prose sur la sortie fraîche, et je pose l'organe qui manquait (volet 2 de l'acceptation de #20628).See #20628 — les deux critères d'acceptation sont couverts ; la clôture revient au coordinateur.
Mesure — ce qui a bougé, et ce qui n'a pas bougé
Cinq carnets étaient listés « en retard certain ». Mesure après ré-exécution
papermill --kernel python3(CLI canonique,C:\Python313) :Argumentation-02b-Argumentum-Cards-PythonGénéralisation hâtivedevientArgument bâclé(path 1.1) etSophisme du jeudevientSophisme ludiqueArgumentation-Onto-02-CrossLinks-CSV-Python5ce7a2ec7457→09bed88578df, 1546 → 1526 lignes physiques7cf486169172→0021dab96c5fArgumentation-Onto-03-Vertus-SKOS-PythonseeAlso384 → 382, OWL des vertus sha17feef86c3223→fe48b85c6610Argumentation-Obs-03-Recollement-Lectures-PythonSemanticWeb/SW-15-Python-Coup-ArgumentatifLes deux carnets « inchangés » ne sont pas commités : aucun octet modifié, donc aucun bruit. Leur ré-exécution est faite et le diff complet a été comparé cellule par cellule ; la seule différence hors bruit est un ordre d'itération.
Correction ponctuelle au passage : les cellules de datation d'Onto-02/Onto-03 appelaient
subprocess.run(..., text=True)sansencoding=— la classe refusée par le hookcheck-subprocess-encoding(#19475,UnicodeDecodeErrorsur un hôte cp1252). Corrigé à la source, puis les deux carnets ont été re-exécutés à nouveau (C.2), la prose réalignée restant intacte.Volet 2 — l'organe retenu (option « check advisory »)
scripts/notebook_tools/list_data_consumers.py:Argument_Analysis/ontologies/*.owloudata/*taxonomy*.csv, liste les carnets dont la source cite le fichier (index git — jamais le disque),_archive/et traductions-ENexclus ;--base <ref>pour un changement de PR,--advisory(rc 0 forcé),--json,--self-test.Câblé en pre-commit advisory (
vendored-data-consumers) : il ne se déclenche que si une donnée vendorée est indexée, ne bloque aucun commit légitime et ne consomme aucun emplacement de file CI (#13097). La forme bloquante existe et est utilisable par un reviewer : le même script sans--advisory.Rejeu du cas fondateur, avec l'OWL et le CSV marqués modifiés et un seul carnet dans le changement :
L'organe est volontairement littéral : il liste les carnets qui citent le nom du fichier, sans prétendre savoir lesquels consomment réellement les données. C'est le contrat annoncé par l'issue (« liste les carnets consommateurs non modifiés par la PR »), et c'est ce qui le rend vérifiable hors ligne.
Preuves de validation
papermill --kernel python3sur 5 carnets ; 0 celluleexecution_count: null, 0 erreurcheck_output_failure_text.py origin/maincheck_output_collapse.py origin/maincheck_source_collapse.py origin/maincheck_activity_leak.py --diff origin/main...HEADcheck_prose_quantitative_claims.py --diffpytest test_list_data_consumers.pylist_data_consumers.py --self-test9b33b53dc0etfd9232ac2aDiagnostic dérive
Cause (c) moteur upstream : ce ne sont ni l'environnement ni une régression de dépendance, mais la donnée vendorée elle-même qui a changé — resync OWL/CSV du 2026-10-04, plus l'avance du gitlink du sous-module
Argumentum(7cf486169172→0021dab96c5f). Les sorties commitées décrivaient l'état d'avant.Verdict : CAUSE_FIXED — ré-exécution réelle, prose réalignée sur la sortie observée, et organe posé pour que la prochaine resynchronisation ne repasse pas inaperçue.
SOTA
SOTA-OK — aucun artefact de repli : les sorties commitées sont celles des vrais moteurs (pandas sur le CSV, parseur regex + pont SKOS sur l'OWL), exécutés contre les données épinglées.
Portée
.claude/rules/: le volet « règle de procédure » n'est pas retenu, donc rien de normatif à signer.Argumentumn'est pas bumpé ici : le gitlink deorigin/mainfait foi, l'avance est celle de la base.🤖 Generated with Claude Code