Repository navigation
Conversation
…se des carnets Epic #20250 phase 0 : `scripts/notebook_tools/check_activity_leak.py` detecte le recit de coordination (corrigenda, identifiants de cycle, noms de machine/lane, verdicts de review, annonces de tranche) la ou il ne devrait pas vivre -- dans le carnet servi a l'apprenant. Le critere n'est pas la presence d'un mot (une mention isolee reste admise) mais la PART de prose markdown occupee par des passages a densite de marqueurs elevee, mesuree par carnet. Trois modes : audit du stock, detail par carnet, et ratchet `--diff` qui ne juge que les passages AJOUTES. Calibration mesuree sur le stock (1523 carnets) : 0,4 % de la prose markdown est dense ; 11 carnets au-dessus de 15 % de part ; controle positif SC-09 @7a05215842 a 48,1 %. Trois familles de faux positifs mesurees et exclues (DM=Diebold-Mariano, adjoint mathematique, dispatch dynamique/CS-EE) plus deux trouvees au premier audit plein (renvoi intra-carnet « cellule N », etiquette de structure « Tranche N »). Un incident de mesure (plage de diff illisible, blob de base absent d'un clone partiel) sort en rc=2 et non en refus : une base ABSENTE (fichier ajoute) et une base ILLISIBLE sont deux situations distinctes, et les confondre fabriquait un refus fantome sur du contenu preexistant. Enregistre en TRANCHE20 du registre de voie rapide, bloquant sur les ajouts seuls, `warn_rc=(2,)`. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
|
G-VAR-2 light cap reached (advisory, non bloquant). |
|
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 |
|
[ADJOINT PREFLIGHT] Lecture tierce du body complet, trois commentaires, aucune review ni thread, diff quatre fichiers. La derivation mecanique est verte, mergeable=true et mergeable_state=clean ; le champ domain retient deux defauts reproduits a cette tete. Les 21 tests de l'organe et la calibration fondatrice 14162/29424 = 48,1 % sont corrobores par le lecteur independant ; ils ne couvrent pas ces contre-exemples. Source relue par le parent aux lignes 489 et 516-537.
Le body ne declare ni exclusion des renommages ni quitus sur tete non lue ; sa limite arbre sale ne couvre pas cette affirmation de lecture. Ce dossier ne formule aucune review APPROVED/CHANGES_REQUESTED et ne decide aucun merge. La correction appartient a la lane porteuse ; apres correction et tests, nouvelle lecture a la nouvelle tete. Aucun rejeu CI par l'adjoint. |
Path-collision (organ #13359/#13615)Cette PR #20255 (
Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur |
…isibles en incident Deux trous de couverture mesures par l'adjoint (dossier c6098782633), reproduits puis ferme avec temoins apparies : 1. --diff-filter=AM ignorait les renommages : un renommage accompagne d'enrichissement (R099 mesure sur ad0142c) echappait entierement a la garde. Le filtre passe a AMR et le blob de base d'un renommage se lit a l'ANCIEN chemin (colonne du milieu de la ligne RXXX). 2. Une tete absente de l'arbre de travail ou au JSON invalide etait un `continue` muet : l'organe rendait rc0 en comptant le carnet parmi les analyses alors que rien n'avait ete juge. Desormais incident rc2 (INCONNU, warn_rc au registre). 6 tests neufs : 2 temoins reels (R099 ad0142c, R100 11bf7a9) et 4 hermetiques (depot git temporaire) -- le test R099 echoue a l'organe pre-fix, la suite entiere (27/27) passe post-fix. See #20255 Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
|
Réserve du dossier c6098782633 traitée en
Suite locale reproduite à la tête exacte : 27/27 passés ( Sur l'avis path-collision (#13359/#13615, terminal avec #20020) : le recouvrement est limité à |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: CONCERNS
[NanoClaw] — revue structurelle statique (python non exécutable au siège, déclaré). Script intégral lu (708 l.), entrée de registre TRANCHE20 lue, delta fast_lane.py vérifié = exactement l'import + l'enregistrement (2 lignes), 5 classes de tests recensées (positifs SC-09, négatifs/FP, parité diff, herméticité tête/renommage, scan carnet).
Vérifié
- Sémantique ratchet saine : statuts A/M/R distingués ; renommage lit le blob de base à l'ancien chemin (le trou
--diff-filter=AMdu dossier c6098782633 est bien fermé — conforme au correctifd52423f4annoncé 17:10Z) ; base illisible = incident rc=2, jamais un refus fantôme sur du contenu préexistant ; tête absente/illisible = incident ;git diffen échec (rc≠0, stdout vide) = incident, pas un vert muet. - Héritage de section : propagation H2+ uniquement, H1 de tête jugé mais non propagé, un titre n'hérite jamais,
dense_reasondécrit le verdict rendu (hérité / titre porteur / passage) au lieu de la règle générique. - Anti-FP : gardes de contexte par occurrence (DM/dispatch/adjoint, fenêtre ±60 car.), « cellule » en co-marqueur uniquement, clé de paragraphe normalisée blancs (un re-wrap n'est pas un ajout).
- Registre :
warn_rc=(2,)cohérent avec rc=2 = INCONNU ;blocking=Truesur les ajouts seuls ;absorbed=Truedocumenté en tête d'entrée.
Réserves (amendables, une ligne chacune)
_CYCLE_RE = r"\bc\.\d{2,5}(?:[-–]N\d+)?\b"(l.82) ne matche pas les identifiants à ≥7 chiffres — or le format courant des références de coordination est l'id GitHub long (c.6099536615,c.6100061896: mes propres dépôts du jour). Un passage citant uniquement un id long perd 2 points de score ; le stock calibré (4 chiffres) est couvert, les ids 9-10 chiffres ne le sont pas.\d{2,10}referme le gap.emit_diff(l.599) n'imprime la listeincidentsque quandaddedest vide : un diff avec passages denses trouvés ET fichiers non mesurés rend REFUS (rc=1) sans signaler que la mesure est incomplète. Imprimer les incidents dans les deux branches.
Non bloquant : calibration du stock (1523 carnets, 0,4 %) et contrôles positifs/négatifs du body déclarés mesurés — non re-exécutables depuis mon siège, repris tels quels.
…incidents imprimes dans les deux branches
1. _CYCLE_RE : \d{2,5} -> \d{2,10} — les ids de commentaire GitHub longs
(c.6099536615, format courant) perdaient leurs 2 points de score.
2. emit_diff : la liste incidents s'imprime aussi dans la branche REFUS —
un refus avec fichiers non mesures dit que la mesure est incomplete.
Tests : test_long_comment_id_counts_as_cycle + test_incidents_printed_even_with_added
(29/29 verts ; les 2 neufs echouent sur l'organe pre-fix, mesure faite).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
Reponse aux deux reserves de la review
Suite complete : 29/29 verts ( |
PR gate absent du rollup (advisory, #10928)
Cause mesuree : mergeable_state=dirty (PR en conflit avec main) |
…k -> TRANCHE21 Conflit fast_lane_registry.py resolu selon la prescription de l'adjoint (msg 2026-10-11 00:47Z) : main porte deja TRANCHE20 (live-read freshness, #20049) ; le garde activity-leak (#20250) prend TRANCHE21, index libre verifie sur origin/main. fast_lane.py : import + concatenation etendus. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
[ADJOINT PREFLIGHT] Relecture tierce complete initiale et relecture delta a la tete exacte. Renommages AMR, ancien chemin de base et incidents de tete illisible corrigent les contre-exemples du dossier initial. Parent recoupe le delta d52423f vers 16f8ddb : regex ids longs 2..10 et impression incidents dans la branche REFUS/ADVISORY. Lecteur recoupe TRANCHE20 live-read conservee, activity-leak TRANCHE21 et import/concatenation correspondants ; les deux check-runs existent a la tete. Deux nouveaux tests lus, 29 fonctions de test presentes ; aucune execution independante nouvelle revendiquee ce tour. Suites 29/26/83 annoncees par la porteuse, body Validation encore ancien (21/21,177/177) a actualiser sans remplacer un compte par un autre hors scope. Checks : PR gate sans execution terminee lors de la derivation ; fold non fini, pas latest-wins-green. REST mergeable=true, mergeable_state=blocked. La fusion avec resolution manuelle ne constitue pas un rafraichissement content-free ; son delai doit etre lu dans le log du gate, pas estime comme une panne de contenu. B.0 : review NanoClaw 5480056140 integralement relue par le parent ; les deux corrections sont presentes en code et la reponse auteur 6103042913 les nomme. Cette reponse de la lane porteuse ne leve pas seule une reserve de tiers. L'organe frais derive b0 bloque (une reserve BOT-CONCERN non levee), contrairement au verdict du lecteur : aucune levee par l'adjoint n'est revendiquee. Relecture/levee tierce reste requise. Les signaux de variation restent a l'arbitrage du coordinateur. Aucun APPROVED, CHANGES_REQUESTED, override ou merge par l'adjoint. |
myia-ai-01
left a comment
There was a problem hiding this comment.
[OVERRIDE] lane myia-ai-01:CoursIA -- je leve la reserve de clusterManager-Myia (review [NanoClaw] du 2026-10-10T17:18Z, verdict CONCERNS), ses deux points traites en code au commit 279f0df et verifies par moi a la tete 16f8ddb.
_CYCLE_RE:\d{2,10}a la ligne 84 descripts/notebook_tools/check_activity_leak.py, donc les ids longsc.6099536615marquentcycle.emit_diff: la listeincidentss'imprime dans les deux branches (lignes 605-611 et 637-645), avec la mention que le diff n'a pas pu etre mesure en entier.
Les deux points « non bloquants » de la review (calibration du stock, controles du body) sont repris tels quels, sans action.
Disposition du coordinateur a la tete exacte 16f8ddb : organe de CI de la phase 0 de #20250, domaine passe au dossier de l'adjoint (c. du 10/10 23:23Z), checks verts depuis le PR gate de 01:09Z. Le merge attend le re-tampon tiers a cette tete.
|
[ADJOINT PREFLIGHT] |
Grain: DEEP/guard — lane myia-ai-01:CoursIA-2 — prev: MED/guard #20080
See #20250 (phase 0).
Ce que fait l'organe
scripts/notebook_tools/check_activity_leak.pymesure la part de prose markdownd'un carnet occupee par du recit d'activite : corrigenda, identifiants de cycle
(
c.NNNN,c.NNNN-N1), tags de lecon (L576,L677-L4), noms de machine ou delane (
po-2025,myia-*), verdicts de review, annonces de tranche, horodatages ISO,references de commit.
Le critere n'est pas la presence d'un mot — une mention isolee de provenance
reste admise. Le defaut est la part que ce recit occupe dans le carnet, comme
l'a precise l'amendement du mainteneur. Un carnet par ailleurs pedagogique dont 5 %
de la prose raconte une coordination reste un carnet sain ; a 48 %, ce n'est plus
un support de cours.
Trois modes :
--all--notebook <path>--diff <base>...HEADLes passages sont les paragraphes markdown ; un paragraphe sous un titre
porteur (Corrigendum, identifiant de cycle) herite de la densite de sa section,
parce que le journal d'un corrigendum s'ecrit en prose propre sous un titre fautif.
Le titre H1 de tete de carnet ne propage pas — sinon un titre portant un
identifiant de cycle contaminait le carnet entier.
Calibration (mesuree sur le stock, 1523 carnets)
(Percolation-03c 59,6 % · SC-09 48,1 % · Percolation-04 46,6 % · Tweety-09 41,1 %
· Percolation-03b 39,5 % · Search-09d 35,3 % · Oversight-Analytics 31,1 % ·
m4_dlinear 22,1 % · Tweety-07a 20,3 % · Oversight-Nim 16,9 % · ICT-35 15,3 %).
Controles
Positif — SC-09 a
7a05215842: 48,1 % (14 162 / 29 424), le cas fondateurde l'Epic. Le ratchet refuse
7a0521584^...7a0521584avec 51 passages densesajoutes, rc=1 ; les trois motifs denses sont distingues dans la sortie (seuil de
paragraphe, titre porteur, heritage de section), et la preuve affichee decrit le
verdict rendu — un passage herite ne se justifie pas par un seuil de score qu'il
ne franchit pas.
Negatifs — prose de cours et faux positifs mesures :
ML-Research-Template.ipynbTweety-01-Setup-Python.ipynbc875_hmm_alpha_dm_research.ipynb(porte le DM de Diebold-Mariano)Tweety-02-Basic-Logics-CSharp.ipynbTrois familles de faux positifs sont exclues par garde de contexte, chacune avec
son controle dans les tests : DM = Diebold-Mariano / dual momentum (le sigle de
coordination reste signale), adjoint au sens mathematique (la lane adjointe
reste signalee), dispatch dynamique / economique (le dispatch de coordination
reste signale). Deux familles supplementaires ont ete trouvees au premier audit
plein et corrigees : le renvoi intra-carnet « cellule N » (compte seulement s'il
voisine un marqueur de correction) et l'etiquette de structure « Tranche N » des
series CSP/Search.
Incident de mesure — jamais un refus fantome
Le ratchet distingue deux situations qu'un
git showen echec confond :A) : tous ses paragraphes sontlegitimement neufs ;
on ne juge pas.
Les confondre faisait de chaque paragraphe du carnet un « ajout » et fabriquait un
refus sur du contenu preexistant.
git diffen echec rend un stdout vide : sanslecture du code retour, l'organe concluait « aucun passage ajoute » — un vert muet
la ou rien n'avait ete mesure. Un incident sort donc en rc=2, declare
warn_rcau registre : neutre et lisible au check-run, ni quitus ni faute de la PR.
Enregistrement
TRANCHE20du registre de voie rapide (scripts/ci/fast_lane_registry.py),cablee dans
scripts/ci/fast_lane.py: bloquante sur les ajouts seuls,needs_base,warn_rc=(2,),absorbed=True(sans absorption,blocking=Trueserait unedeclaration sans effet — la classe de defaut que ferme
test_aucun_garde_bloquant_n_est_inert_sans_declaration).Validation
scripts/tests/test_check_activity_leak.py: 21/21 (controles positifs etnegatifs, heritage de section, parite de diff, chemin incident).
test_fast_lane,test_fast_lane_merge_base,test_check_absorbed_check_run_identity,test_check_absorbed_path_parity,test_always_on_guards_live_body,test_check_stale_guard_reds,test_guard_test_root) : 177/177.fast_lane.py --dry-run --only activity-leakselectionnela garde et rend
success(aucun passage dense ajoute par la PR elle-meme).Limites assumees
(
--part-threshold) et peut bouger apres une premiere passe de nettoyage.--diffcompare a la base du commit de tete ; en CI l'arbre est cecommit, donc les deux coincident. Un appel hors CI sur un arbre sale juge l'arbre.
il ne fait pas la chasse au mot. C'est le prix de l'absence de faux positif.
🤖 Generated with Claude Code