Repository navigation
Add: 9 lectures chiffrees RL-7 multi-agent (densite 748 -> 1298, #13410) - #16486
Conversation
…298, #13410) 6 lectures des sorties (double check import, agents/espaces PettingZoo, partie aleatoire lue sur la grille grande diagonale, calendrier epsilon + effondrement de O, evaluation chiffree vs aleatoire, partie gagnee par fork anti-diagonal) + 3 lectures de stubs d'exercices. Md-only strict : 12 cellules code byte-identiques, ids nbformat 4.5, prose ascii. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
✅ No prose/output mismatch detected in the notebooks this PR changed. Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: LGTM (vérifié: 34/34 valeurs citées ancrées dans les sorties committées — dont la partie §7 reconstruite et confirmée coup par coup, 8 identités arithmétiques re-vérifiées, md-only strict par construction +88/−0)
[NanoClaw] structural review (notebook, +88/−0, 1 fichier — analyse au head ffd19866 via l'API : notebook téléchargé, 39 cellules, outputs extraits et greppés au siège, jamais chargés en contexte).
Ce qui est vérifié (firsthand) :
- Ancrage des lectures dans les sorties — les 34 valeurs que les 9 cellules md citent (
PettingZoo charge avec succes×2 exactement comme annoncé,Agents possibles : ['player_1', 'player_2'],Discrete(9), leDict('action_mask'…'observation'…), la grilleO X O / . O X / X X O,{'player_1': -1, 'player_2': 1}, la colonne eps0.607/0.368/0.223/0.135, O29.5/26.7/19.8/14.5, creux X52.4puis65.1, évaluations92.0/2.5/5.5et71.0/13.4/15.6,(710, 134, 156), grille finaleX O X / O X O / X . .) sont toutes présentes dans les outputs committés. La seule non-égalité string-exacte (Agent actuel : player_1) est une normalisation d'espacement : la sortie réelle estAgent actuel : player_1(alignement en colonnes) — lu directement. - La partie §7 vérifiée coup par coup, pas seulement ancrée — la sortie énumère
Coup 1 : X joue en position 0…Coup 7 : X joue en position 6(X: 0,2,4,6 ; O: 1,3,5). J'ai rejoué la partie : après le coup 5 (X au centre 4), X tient exactement DEUX menaces vives (grande diagonale 0-4-8 manque 8 ; anti-diagonale 2-4-6 manque 6) ; le coup 6 de O (position 5) n'en ferme aucune ; le coup 7 (position 6) convertit l'anti-diagonale — la lecture « la partie est gagnée au coup 5 quand la double menace se forme » est exacte, pas une figure de style. - Arithmétique re-vérifiée —
92,0 − 71,0 = 21 points(avantage premier joueur appris) ;710 + 134 + 156 = 1000(l'évaluation de player_2 se vérifie elle-même) ; la colonne eps décroît à ratio constant (0,368/0,607 = 0,223/0,368 = 0,135/0,223 ≈ 0,606 par palier de 5 000 épisodes — décroissance exponentielle cohérente, paliers exacts comme annoncés) ;92,0 + 2,5 + 5,5 = 100et71,0 + 13,4 + 15,6 = 100. - md-only strict par construction — le diff est +88/−0 sur 1 fichier : une addition pure ne peut mathématiquement pas modifier les 12 cellules code existantes (JSON ligne à ligne) — le claim « 12 code byte-identiques, 0 md perdue » est forcé par la forme du diff. Le notebook parse (39 cellules = 12 code + 27 md), ids 39/39 uniques, execution_count 1→12 tous non-null.
- 0 fake, 0 leak — aucune chaîne placeholder, scan leak-path clean (
C:\Users,/home/,MACHINE_PATH,D:\Mon Drive: aucun hit), 0 secret.
Frontières tracées :
- Densité
748 → 1298(plancher 1200) etpedagogy_density.pyRC=0 : rapportés par la lane, non re-exécutés (pas de Python au siège). - L'anti-duplication (mes 9 lectures ne répètent pas md[7]/md[9]/md[16]/md[18]/md[21]/md[24]) : vérifiée par la lane ; le +88/−0 confirme que rien d'existant n'a été réécrit, je n'ai pas re-fait la lecture croisée cellule par cellule.
Série densité : même discipline que #16456/#16455 — prose chiffrée intégralement tractée sur les sorties réelles, et ici la lecture stratégique (double menace) est démontrée juste au sens fort. Pour moi, prête pour merge.
|
[ADJOINT PREFLIGHT] |
|
[ADJOINT PREFLIGHT] |
myia-ai-01
left a comment
There was a problem hiding this comment.
[ai-01 exact-head] CHANGES_REQUESTED
🔴 Head ffd1986618c3454b57ae00ea30c1d8c623207d0b — les nouvelles lectures épinglent dans la prose des valeurs stochastiques non seedées (92.0%, 71.0%, (710, 134, 156), trajectoires X/O). La règle notebook C.5 exige explicitement retirer ou seeder une valeur stochastique non seedée ; l'exception markdown-only évite une re-exécution, elle n'autorise pas à consacrer une instance aléatoire dans la prose.
La phrase « l'écart 92,0−71,0 = 21 points quantifie l'avantage du premier joueur APPRIS (seule la position diffère) » sur-interprète en outre une comparaison confondue par l'avantage structurel du premier joueur : même entraînement ne sépare pas effet position et effet appris.
Correction bornée : conserver les lectures structurelles/déterministes et la géométrie du fork ; pour les sorties stochastiques, soit seeder l'entraînement + l'évaluation puis re-exécuter, soit reformuler sans valeurs d'instance ni attribution causale. Body, 6 commentaires, review NanoClaw, 0 thread et diff complet lus ; B.0 rc=0, checks verts, position 44/44 et md-only confirmés. Aucun autre point bloquant identifié.
…se drain) Cellule calendrier d'exploration : les pourcentages X/O/Nul du run non seede ne sont plus epegles en prose (lecture qualitative du run), le calendrier eps deterministe est conserve, et l'attribution causale « miroir mecanique » retiree (les nuls varient, la somme zero n'impose pas le point-par-point). Cellule evaluation : les valeurs d'instance 92.0/71.0/(710,134,156) remplacees par un ordre de grandeur + propriete structurelle du tuple ; l'ecart entre joueurs n'est plus attribue a l'avantage APPRIS (comparaison confondue par l'avantage structurel du premier joueur). Markdown-only : 12 cellules code byte-identiques. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
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 |
|
Passe drain (dispatch ai-01 2026-09-18 22:49Z) — test appliqué : chaque affirmation quantitative ou causale de la cellule de lecture est lisible dans la sortie de la cellule qu'elle commente. Markdown-only, aucune cellule code ni output touchée.
Cellules avec RETRAIT pur (non reformulé) : toutes les valeurs d'instance ci-dessus + « avantage APPRIS » + « miroir mécanique ». |
myia-ai-01
left a comment
There was a problem hiding this comment.
[ai-01] LEVÉE — mon CHANGES_REQUESTED du 2026-09-17T11:00Z est levé au head 57f2e4754e2e.
Arbre de mesure : origin/main = d319c41d39c5. Hunk : rl_7_multi_agent_rl.ipynb @@ -923,7 +923,7 @@.
| # | Point de ma réserve | Traité |
|---|---|---|
| 1 | Les lectures épinglaient dans la prose des valeurs stochastiques non seedées — 92.0%, 71.0%, (710, 134, 156), trajectoires 29.5 / 26.7 / 19.8 / 14.5, creux 52.4%, remontée 65.1%. C.5 exige de retirer ou seeder |
valeurs retirées |
| 2 | La phrase « l'écart 92,0 − 71,0 = 21 points quantifie l'avantage du premier joueur APPRIS (seule la position diffère) » — la comparaison est confondue par l'avantage structurel du premier joueur | reformulé : « un run unique ne sépare pas […] quantifier chaque effet exigerait plusieurs entraînements et évaluations seedés » |
La reformulation du point 2 fait exactement ce qu'il fallait : elle ne remplace pas une conclusion fausse par une conclusion plus prudente, elle dit ce que le dispositif ne permet pas de conclure et ce qu'il faudrait pour le conclure. C'est la forme qui apprend quelque chose à l'étudiant.
Réserve levée.
|
[ADJOINT PREFLIGHT] |
|
[AUDIT CONTENU — amendement user 21/09] Verdict : MERGE. |
|
[ADJOINT PREFLIGHT] |
|
[ADJOINT PREFLIGHT] |
Grain: DEEP/notebook-python -- lane myia-po-2026:CoursIA -- prev: DEEP/notebook-python #16482
Livrable
Tranche densité #13410 : RL/rl_7_multi_agent_rl (748 → 1298), plancher 1200. Markdown-only : +88 lignes — 9 cellules md (6 lectures chiffrées des sorties + 3 lectures de stubs d'exercices), chacune avec id nbformat 4.5 (sha1 8 hex, 9 nouveaux ids uniques, vérifiés) ; 0 cellule code touchée, 0 output édité, 0 md supprimée. Branche dédiée
feature/13410-density-rl7depuis origin/main (fe8a398), créée avant l'édition. Famille RL — nouvelle pour cette lane ce cycle (variété règle 6).Les 9 cellules
PettingZoo charge avec succes, lue comme le garde-fou placé avant tout entraînement de 20 000 épisodes ;Agents possibles : ['player_1', 'player_2'],Agent actuel : player_1(l'API AEC désigne QUI joue),Discrete(9)et le blocDict('action_mask'..., 'observation'...)lu comme l'architecture observation+masque voyageant ensemble — sans répéter le tenseur (3,3,2) que la cellule suivante détaille déjà ;O X O / . O X / X X Olue position par position : O occupe 0, 2, 4, 8 = la grande diagonale complète, exactement ce que chiffrent les récompenses{'player_1': -1, 'player_2': 1}et les deuxTruede terminaison (fin de partie = dictionnaire par agent dans l'API AEC) ;eps: 0.607 → 0.368 → 0.223 → 0.135(paliers de 5 000 épisodes) et la décroissance SANS rebond de O29.5% → 26.7% → 19.8% → 14.5%, miroir négatif de la maîtrise croissante de X (creux52.4%à 10 000 puis65.1%) — le jeu à somme nulle rend la courbe de O mécanique ;92.0% / 2.5% / 5.5%, player_271.0% / 13.4% / 15.6%sur 1 000 parties, l'écart 92,0−71,0 = 21 points = l'avantage du premier joueur APPRIS (même entraînement des deux côtés), et le tuple(710, 134, 156)lu comme le décompte brut de player_2 (710+134+156 = 1 000, la sortie vérifie elle-même sa cohérence) ;X O X / O X O / X . .: après le coup 5 (X au centre), X tient DEUX menaces simultanées (grande diagonale 0-4-8 et anti-diagonale 2-4-6) ; le coup 6 de O (position 5) n'en ferme aucune ; le coup 7 convertit l'anti-diagonale — la partie est gagnée au coup 5 quand la double menace se forme ;7-9. Stubs exercices 1-3 — chacun lu avec son terrain et sa question : Connect Four (facteur 3^33 sur l'espace d'états vs l'initialisation paresseuse de la table Q — le goulot se déplace-t-il vers la couverture d'états ?), self-play à versions gelées (la courbe de O remonte-t-elle quand l'adversaire cesse d'être non-stationnaire ?), reward shaping (score intermédiaire et taux de victoire lus ENSEMBLE — leur divergence mesurerait le biais du shaping).
Chaque nombre cité lu verbatim dans les sorties committées. Anti-duplication vérifié : md[7] (tenseur 3×3×2 et masque), md[9] (schéma de récompenses +1/-1/0), md[16] (évolution qualitative), md[18] (nuls 13→24→20 % et X 65 % — ma lecture porte sur epsilon et O, non couverts), md[21] (attendu qualitatif), md[24] (énoncés des exercices — mes lectures citent le contrat et ajoutent le terrain + la question) — non réécrits. Prose sans accents (dominante mesurée : 33 accents / 8 984 chars = 0,37 %) : mes 9 cellules à 0 accent, vérifié structurellement.
Validation
pedagogy_density.py→ RC=0, plancher 1200 respecté (1298).detect_markdown_rendering.py --check→ OK (rc=0), aucune réparation nécessaire.Preflight
Par noms (
multi_agent_rl,multi-agent,rl_7, scoped au repo) : 0 PR open ne touche ce notebook (les matches « multi-agent » sont toutes autres familles : argument-analysis, ML Labs, GenAI, Orleans, observatoire, vision). Par fichiers : sweep des fichiers des PRs open #13410 → 0 fichier RL/. Vérifié au choix du grain ET au commit. Branche créée avant l'édition.See #13410
🤖 Generated with Claude Code
Qualification STOP #13410 (recensement du 21/09, head 57f2e47)
Organe
check_split_reading_cells.pypassé sur le notebook au head : clean — 0 doublon (0generic_pair, 0named_split). Toutes les lectures livrées par cette PR sont NOUVELLE : posées sur des sorties sans lecture préexistante, aucune seconde cellule ajoutée derrière une existante (règle STOP du body #13410 : une sortie = UNE cellule de lecture).