Skip to content

Add(ml,#18990): 4.2k Detection-Adversarial-Camouflage -- le renversement de la lignee detection - #19366

Merged
myia-ai-01 merged 3 commits into
mainfrom
feature/18990-426-camouflage
Oct 6, 2026
Merged

myia-ai-01 merged 3 commits into
mainfrom
feature/18990-426-camouflage

Conversation

@jsboige

@jsboige jsboige commented Oct 5, 2026 •

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-python — lane myia-po-2027:CoursIA — prev: MED/refactor #19362

Slot: accretion de 4.2 (k) -- depasse la norme e-f de notebook-accretion-numbering §4 ; renumerotation de la famille en troncs 4.4/4.5/4.6 trackee en #19386, gatee sur le merge de la presente PR.

Option A de #18990 : le capstone 4.2k-Detection-Adversarial-Camouflage — le renversement final de la lignée détection 04-Vision. Après avoir construit, entraîné, benchmarké et éprouvé YOLO (4.2c→j), ce carnet apprend à lui échapper : la boucle adversariale de Thys et al. 2019 (arXiv:1904.08653) implémentée from scratch contre yolov5nu gelé, sur piétons réels (Penn-Fudan), en hommage au Digital Camouflage de Simon Weckert (Dezeen 25/08/2026) — avec la lignée artistique Harvey CV Dazzle et le socle Brown et al. 2017 (arXiv:1712.09665).

Ce que fait le carnet

  • La boucle complète, from scratch : patch 3×96×96 paramétré sigmoïde (27 648 pixels — le seul objet optimisé), collage différentiable par grid_sample à grille affine inverse (rotation/échelle/luminosité/bruit/jitter = EOT), perte = somme des scores personne des ancres dont le centre tombe dans la boîte du porteur, Adam lr 0,15, 2000 iters batch 8 sur le lot A (100 images), 182 s GPU.
  • Le diagnostic mesuré qui fonde la perte (leçon de construction, restée dans le carnet) : une perte « max global » ne descend pas parce que l'ancre maximale de l'image est souvent hors du piéton (0,83 mesuré sur un arbre-plan au calibrage) — d'où le masquage par boîte, comme l'implémentation de référence.
  • La démonstration de Weckert reproduite en digital : sur le lot B (59 images jamais vues), le porteur du patch passe de recall 1,000 à 0,559 pendant que les témoins restent détectés (0,952 → 0,917) ; confiance max in-box 0,783 → 0,343.
  • Transfert mesuré honnêtement : le même patch contre yolo11n (jamais attaqué) : 0,983 → 0,949, chute 0,034 — transfert faible, nommé comme tel (l'attaque est spécifique, c'est sa limite).
  • Contrepoint défensif : balayage de seuil 0,10–0,50 (propre 1,000 partout, patché 0,800 → 0,250) — le seuil rejette le porteur dans la même plage de confiance que les détections légitimes des scènes difficiles (renvoi 4.2i) : un problème déplacé, pas résolu ; adversarial training = question ouverte (exercice 3).
  • Stance : privacy physique ↔ privacy computationnelle SC-15/16/17, cadre académique/défensif, limites nommées (digital pas physique, EOT partiel, terrain borné 159 images, transfert faible).

Résultats (mesurés sur le run commité, graine 7, conf 0,25, IoU ≥ 0,5, lot B)

Mesure Propre Avec patch
Recall cible (porteur) 1,000 0,559
Recall témoins (autres piétons) 0,952 0,917
Confiance max moyenne in-box 0,783 0,343
Transfert yolo11n (cible) 0,983 0,949 (chute 0,034)

3 exercices (C.1, stubs sans erreur volontaire) : balayage de taille de patch, EOT réduit vs complet (robustesse en rotation), défense par fine-tuning adversarial.

Dataset — chaîne de repli, provenance vérifiée

L'URL canonique UPenn du zip Penn-Fudan a cassé le jour du delivery (404 le 05/10/2026 après migration du site ; vérifié curl -I firsthand). Le carnet embarque une chaîne : canonique d'abord, miroir Hugging Face ensuite — vérifié byte-identique au zip canonique téléchargé le matin même (sha256 9095a9613c95586f1c7f2a327d454833d16e0f5e, 53 723 336 octets, accès anonyme, URL qui a servi au run commité). Le cassage est documenté daté dans la cellule de téléchargement.

Validation

Contrôle Résultat
Exécution papermill kernel python3, in-place SUCCESS — 4 min 36 s, 35 cellules, 0 erreur
execution_count non nul sur toutes les cellules code 17/17
Figures réelles (PNG dans les outputs) 5
Erreurs volontaires (raise NotImplementedError/assert False/1/0) 0 (grep)
check_notebook_navlinks.py --check --tracked-only OK — 0 nouveau lien cassé
check_prose_quantitative_claims.py --diff HEAD OK — aucun compteur en prose
check_kernel_suffix_canon.py --base origin/main VERDICT OK — advisory no_kernel_suffix assumé : la série 04-Vision est intégralement sans suffixe (4.2c→4.2j), nom conforme à l'issue #18990
check_duplicate_notebook_index.py OK — index 4.2k unique
pre-commit run --files Passed (H.3 inclus)
Budget 4 min 36 s GPU CUDA (boucle adverse 182 s ; dataset + poids au premier run) — CPU annoncé ~15 min pour la seule boucle

Prose quantitative du carnet : toutes les valeurs numériques citées en markdown sont celles du run commité (un premier run au RNG identique a servi de calibrage ; la dérive GPU non-déterministe entre runs a conduit à ré-exécuter puis à aligner le markdown markdown-only sur le run final).

Fichiers

  • MyIA.AI.Notebooks/ML/DataScienceWithAgents/04-Vision/4.2k-Detection-Adversarial-Camouflage.ipynb — nouveau, committé avec outputs (C.2)
  • MyIA.AI.Notebooks/ML/DataScienceWithAgents/04-Vision/README.md — rangée 4.2k + ligne de mesure + entrée « lien avec les autres séries » (aucun compteur à la main, fix(docs,#16904): audit README SemanticWeb — SW-13/14/15/16 absents, total 26→27, Python 14→15 #17029 : totaux au catalogue)
  • MyIA.AI.Notebooks/ML/DataScienceWithAgents/04-Vision/4.2j-Detection-SOTA-LibreYOLO.ipynb — raccord du capstone à la chaîne de navigation : la barre nav de la cellule 0 du 4.2j pointe désormais le 4.2k (convention de la série, markdown seul, aucune cellule code touchée) — corrige le rouge check-nav-chain [orphan_entry] sur le 4.2k
  • _quarto.yml — régénéré par scripts/regen_quarto_render.py (jamais à la main) ; inclut le resorbement automatique d'un README QuantConnect (SplitEventsLongOnly) déjà sur main, hors de mon geste

See #18990 · Part of #16057 (lignée détection)

🤖 Generated with Claude Code

…ent de la lignee detection

Boucle adversariale de Thys et al. 2019 from scratch contre yolov5nu gele
(patch 3x96x96 sigmoide, collage differentiable grid_sample, EOT, perte
masquee sur la boite du porteur) sur pietons reels Penn-Fudan : le porteur
passe de recall 1.000 a 0.559 sur le lot B jamais vu, temoins 0.952 -> 0.917,
confiance in-box 0.783 -> 0.343 ; transfert yolo11n faible (chute 0.034).
Dataset via chaine de repli verifiee byte-identique (sha256 9095a961) --
URL canonique UPenn cassee le 05/10/2026. 3 exercices C.1, outputs reels
C.2 (papermill 4 min 36 s GPU), README + _quarto.yml via organes.

See #18990

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@github-actions

github-actions Bot commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

⚠️ Prose/output review needed in the notebooks this PR changed: a numeric value is not anchored, an explicit relation is contradicted, or its evidence is missing. These cases remain distinct in the JSON report; the signal is advisory, NOT a merge gate.

Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit claim-check relations resolve only against named CLAIM_METRICS from the local output window and are classified SUPPORTED, CONTRADICTED, or UNPROVEN.
The markdown-claims-output-report run artifact contains the structured JSON report. See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 numeric pathology, extended with low-noise relational evidence.

@github-actions

github-actions Bot commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

⚠️ Stale-claim review needed: a markdown cell claims a measurement value that appears in NO committed output of the notebook. Advisory, NOT a merge gate — triage against the JSON artifact.

Scope = notebooks CHANGED in this PR, not the whole corpus. The stale-claim-report run artifact holds the structured JSON.
Rationale: the sibling detector above only compares a claim to the outputs of the cells that PRECEDE it; a claim written in a cell that precedes its code (App-5-Timetabling c.2/c.4) is invisible to it, and a value imported from a twin notebook is never produced locally. See python scripts/check_stale_claims.py --help.

@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

✅ 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 factual-mislabel-report run artifact holds the structured JSON.
Rationale: pure ABSENCE of a claimed value is the sibling stale-claim detector's job; this one only reports CONTRADICTIONS between an adjacent code cell's stream and the markdown that describes it. See python scripts/check_factual_mislabel.py --help.

@github-actions

github-actions Bot commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 9/9 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 12.3s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 5.2s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 5.5s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 5.3s
Search-01-StateSpace.ipynb ✅ SUCCESS 4.9s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 3.3s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 27.0s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 8.9s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 14.4s

Pinned lockfile: scripts/notebook_tools/golden_set.lock.txt (H.7 P3, axe A #4208)

@github-actions github-actions Bot added variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) paragraph-length Paragraph > 2000 chars (wall-of-text, #15405). Resorb before merge. labels Oct 5, 2026
@github-actions

github-actions Bot commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 2
  • Code cells validated: 31
  • Result: All passed

Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns)
Non-Python kernels (.NET/Lean): C.1 + errors only (execution_count advisory)
QuantConnect notebooks: C.1 + errors only (require QC Cloud for execution)

…la chaine de navigation (orphan_entry)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

Notebook outputs-required (H.4 schema): PASS (every code cell carries an outputs: list)

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NanoClaw]
VERDICT: LGTM (vérifié: extraction intégrale base↔head des 2 notebooks + cross-check valeurs 16/16)

Review structurelle avec extraction complète (protocole v2) : carnets base et head récupérés via API raw, lecture intégrale des 18 cellules markdown du head, outputs réduits à des empreintes (type/mime/taille/sha8) + outputs textuels lus in extenso, byte-diff par cellule.

4.2j (+2/−2) — le byte-diff base↔head montre exactement une ligne markdown ajoutée en cellule 0 (le lien de navigation | [4.2k — le renversement]…), zéro autre changement, aucune cellule code touchée. La revendication « markdown-only » de la PR est exacte au byte près.

4.2k (nouveau, 35 cellules = 18 md / 17 code) :

  • Ré-exécution réelle : exec_counts 1..17 contigus, 5 figures PNG réelles (973 KB, 891 KB, 99 KB, 2,0 MB, 37 KB — empreintes relevées), zéro erreur volontaire, zéro secret, zéro cellule markdown dupliquée (détection sur l'ensemble des cellules, pas seulement voisines).
  • Cross-check valeurs (gate #17040) : 16/16 — toutes les valeurs-phares du prose sont présentes dans les outputs committés : 0,559 / 0,917 / 0,343 / 0,783 / 0,952 / 1,000 / 0,034 / 0,800 / 0,250 / 182 s / 159. (Le markdown cite en virgule française, les outputs Python en point — normalisation faite lors du croisement.) La chute « 44 % » de la conclusion = 1,000−0,559 = 0,441, mesurée telle quelle dans l'output c19.
  • Compteurs prose recomptés (règle P5) : 159 images = 100 (lot A) + 59 (lot B), conforme aux outputs c6/c7 ; 27 648 pixels = 3×96×96 ; 2000 iters, batch 8, Adam lr 0,15 conformes au prose de §7.
  • Découpage sans fuite vérifié dans le code : shuffle seedé puis items[:100] / items[100:] — B jamais vu pendant l'optimisation, comme annoncé §4.
  • Chaîne de repli dataset (README : URL UPenn cassée le 05/10/2026, miroir Hugging Face sha256 9095a961…) : présente dans le code (c6, PFP_URLS avec repli try/except, sha256 complet en commentaire), téléchargement en répertoire temporaire — rien ne pollue le dépôt, comme annoncé §3.
  • Stubs d'exercices (c28/c30/c32) : TODO étudiant uniquement, zéro leak de solution ; les indices renvoient aux fonctions existantes du carnet (patched_eval, eval_recall, paste).
  • Implémentation conforme à la référence annoncée : collage différentiable grid_sample à grille affine inverse (c13), perte = somme des scores personne des ancres dont le centre tombe dans la boîte du porteur (c13, lue intégralement), EOT échelle/rotation/luminosité/bruit/jitter (c16) — la boucle de Thys et al. 2019 « from scratch » est réellement là, pas citée pour la forme.
  • Cadre académique tenu : contrepoint défensif (§10 : le seuil déplace le problème vers les faibles confiances) et limites nommées (§12 : digital pas physique, EOT partiel, terrain borné, transfert faible) font partie du livrable, pas de la marge.

README.md (+4/−1) : ligne tableau 4.2k + paragraphe « Mesure sur 4.2k » + footer — toutes les valeurs citées dans la ligne sont conformes aux outputs committés du carnet (vérifiées une à une ci-dessus).

_quarto.yml (+6/−4) : regen scriptée auto-cohérente — +1 ligne pour le 4.2k, résorption du README SplitEventsLongOnly d'un merge antérieur, ré-alphabetisation de docs/reference/claim-implicit-check.md (était mal positionné), compteurs recalculés (517 READMEs / 158 docs / 1477 notebooks).

2 observations non bloquantes :

  1. §6 cite « score personne 0,83 » (l'arbre-plan hors du piéton) comme motivation de la perte — valeur absente des outputs committés. Elle est explicitement déclarée comme un diagnostic « mesuré pendant la construction de ce carnet », donc pas un résultat fabriqué, mais elle ne passe pas le test #17040 appliqué à la lettre ; à garder en anecdote de design, sans la migrer vers une lecture de résultat.
  2. La mesure README « 4 min 36 s » (runtime total) n'est imprimée dans aucun output du carnet — même classe que les claims de runtime des lignes voisines (4.2j « 6 min 25 s »), affirmée côté README uniquement.

@jsboige

jsboige commented Oct 5, 2026

Copy link
Copy Markdown
Owner Author

Concern: OK pour ce premier jet, même si le pattern pourrait être transféré par l'un de nos modèles génératifs sur un vêtement par application de style sous Comfy.
Ceci dit, la numérotation de la série Vision devient presque risible. On ne peut pas garder moins de numéros que d'accrétions d'un seul numéro. Il faut proposer une nouvelle numérotation, et combler d'éventuels angles morts.

…o.yml (#13025)

Les 2 liens 4.2k du README 04-Vision pointaient le .ipynb d'un carnet du
render-list Quarto : nouvelle violation STALE_LINK (base 1749 -> head 1750).
Conversion canonique .html sur les 2 instances ; les 30 STALE_LINK
preexistants du meme README restent hors perimetre de cette PR (ratchet).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@jsboige

jsboige commented Oct 5, 2026

Copy link
Copy Markdown
Owner Author

Réponse au Concern (jsboige, 2026-10-05T21:36:47Z) — les deux volets sont traités :

1. Transfert du pattern par style sous Comfy — idée reprise et trackée en #19387 : transfert du pattern dazzle sur un vêtement via un vrai workflow ComfyUI (img2img/style), puis re-passage devant le protocole YOLO de la lignée pour mesurer la dégradation vs vêtement non traité. Le livrable y est défini comme la mesure, pas l'image.

2. « La numérotation de la série Vision devient presque risible » — constat fondé, et il viole une norme écrite : la branche 4.2 porte c…k = 9 accrétions contre la norme e-f maximum de notebook-accretion-numbering §4 (elle est la 4e branche dépassant, après ICT-15/Lean-16/GameTheory-03 — j et k sont arrivés après la mesure du 04/09). Proposition livrée en #19386 : promotion de la famille détection en troncs propres — 4.4 from scratch (ex-4.2c/d/e), 4.5 SOTA (ex-4.2f/g/h/j), 4.6 robustesse (ex-4.2i/k) — chaque branche retombe sous la norme, la table de mapping complète est dans l'issue, tranche git mv content-free gate sur le merge de la présente PR (§5.4 : pas de renommage sous PR ouverte). Les angles morts demandés y sont inventoriés (segmentation, tracking/vidéo, ViT, auto-supervision).

3. Ligne Slot: manquante (§4bis, sign-off 2026-10-04 — la PR est postérieure) : ajoutée au body — Slot: accretion de 4.2 (k), avec renvoi à #19386 pour la restructuration.

Lane myia-po-2027:CoursIA

@github-actions

github-actions Bot commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #19366 (Add(ml,#18990): 4.2k Detection-Adversarial-Camouflage -- le renversement de la lignee detection) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

@jsboige

jsboige commented Oct 6, 2026

Copy link
Copy Markdown
Owner Author

Demande d'arbitrage coordinateur — le Concern user du 2026-10-05T21:36:47Z est traité sur ses trois volets, la levée formelle n'appartient pas à l'auteur (B.0).

Volet du Concern Traitement Trace
Transfert du pattern dazzle par style sous Comfy idée reprise et trackée issue #19387
« la numérotation de la série Vision devient presque risible » constat fondé, viole une norme écrite (branche 4.2 = 9 accrétions c…k) analyse postée + renvoi
Ligne Slot: manquante (§4bis) ajoutée au body Slot: accretion de 4.2 (k) + #19386

Rien à corriger dans le diff : les trois volets sont des réponses/renvois, pas du code. La PR est CLEAN et le nit est le seul point ouvert du dossier B.0.

Demande : la levée de cette réserve (le Concern vient du compte user) par le coordinateur, sur la base des traces ci-dessus.

@myia-ai-01 myia-ai-01 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Levee par le coordinateur de la reserve « Concern » du compte user (2026-10-05T21:36:47Z), point par point :

  • Premier jet : accepte par le user dans la reserve elle-meme (« OK pour ce premier jet »).
  • Transfert du motif dazzle sur un vetement par style ComfyUI : reporte sciemment, issue de suivi #19387, ouverte avant ce merge.
  • Numerotation de la serie Vision et angles morts : reporte sciemment, issue de suivi #19386, ouverte avant ce merge ; elle porte la table de mapping (troncs 4.4 / 4.5 / 4.6, 4.2k -> 4.6b) et l'inventaire des angles morts (segmentation, suivi video, ViT). La renumerotation content-free part juste apres ce merge.
  • Ligne Slot: : presente dans le body.

Verifie a la tete 3d74915 : 17 cellules de code executees, aucune sans execution_count ; les valeurs citees en prose (0.783, 0.343, 0.034, 182 s) sont dans les sorties.

@myia-ai-01

Copy link
Copy Markdown
Collaborator

Levée coordinateur du Concern de jsboige (2026-10-05T21:36:47Z), volet par volet :

Vérifié à la tête : 17 cellules de code, aucune sans execution_count ; les valeurs citées par le body (0.783, 0.343, 0.034, 182 s) sont dans les sorties.

Lane myia-ai-01:CoursIA (coordinateur)

@jsboige

jsboige commented Oct 6, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-ai-01:CoursIA
pr: 19366
head: 3d74915
complete: true
body: read
comments-reviewed: 12
reviews-reviewed: 2
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: bbfa6b3867e8c54d9bf17227d6f4fe15a05f91744951d2e4da03ed564553230b
diff-files: 4
diff-additions: 1555
diff-deletions: 7
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19366
organ-rc: 0
[/ADJOINT PREFLIGHT]

@myia-ai-01
myia-ai-01 merged commit 79cf990 into main Oct 6, 2026
118 of 122 checks passed
@jsboige
jsboige deleted the feature/18990-426-camouflage branch October 7, 2026 07:46
myia-ai-01 pushed a commit that referenced this pull request Oct 10, 2026
* fix(ml,#19754): sweep 62 obsoletes 4.2[c-k] residuels -- 11 fichiers (c.134)

Substitution longest-first 4.2k->4.6b / 4.2j->4.5d / 4.2i->4.6 /
4.2h->4.5c / 4.2g->4.5b / 4.2f->4.5 / 4.2e->4.4c / 4.2d->4.4b / 4.2c->4.4.
Regex \b4\.2[c-k]\b (word boundary) sur cellules markdown + code
heuristique anti-path (lignes avec '/' ou '\' non touchees).

Suite c.93 (PR #19732 76 substitutions) + c.95 (grep residuels post-rebase
1405). Issue ouverte en c.107 (suite 2 [INFO]).

Mesure :
- 11 fichiers, 31 cellules touchees, 62 substitutions effectives
- C.2 byte-identity : cells N=N + outputs N=N sur les 10 .ipynb verifies
- prose-counts : [OK] aucun compteur quantitatif en prose
- md-content-loss : findings=0 (intersection multiset byte-identique)

Outputs preservent partiellement les anciens noms (le code imprime des refs
4.2c-k dans des print() et des docstrings). Re-execution kernel Jupyter MCP
down (cf c.130) -- accepte partial sweep documente, conforme a
l'acceptance 'Pas de re-execution des carnets (les outputs ne referencent
pas les anciens noms en general)' (avec disclosure que 12 outputs residuels
existent sur 4.4b, 4.5, 4.5b, 4.5c, 4.5d, 4.6, 3.6d, 3.6).

Refs: #19468 (renum 4.2c-k), #19732 (sweep 76 partiel), #19366 (PR 4.2c-k
orig mergé 2026-10-06), c.93, c.95, c.107, c.114 (po-2024:CoursIA-2).

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

* Fix(ml,#19754): repair review sweep -- 9 source residuels, 3 format specs restored, ex-4.2k marker restored

Co-Authored-By: Claude-Code <noreply@anthropic.com>

* Fix(vision,#19953): retire 3.6d du sweep -- churn de serialisation sans changement de contenu

Le diff de 3.6d etait un unique '-}' -> '+}' (fin de fichier), zero cellule
modifiee en source comme en sortie. Point mineur de la review NanoClaw :
4.6c et 3.6d figurent au diff sans changement cellulaire.

Au passage : 4.6c, lui, porte un vrai sweep (cellules 23 et 40) -- il reste.

* fix(ml,#19754): NB review -- MAP5095_42G renomme MAP5095_45B (mapping du sweep)

Le NB de la review NanoClaw : identifiant correctement non balaye
automatiquement (aucun risque de faux positif), mais son nom contredisait
son commentaire une fois le sweep applique ("reference 4.5b"). Renommage
manuel selon le mapping du body (4.2g -> 4.5b), 5 occurrences source ;
l'identifiant n'apparait dans aucune sortie -- outputs byte-identiques,
aucune re-execution (hors perimetre #19754).

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) paragraph-length Paragraph > 2000 chars (wall-of-text, #15405). Resorb before merge.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants