Repository navigation
fix(search,#19245): restore -CSharp case in 9 code cells across 7 notebooks (re-executed) - #19259
Conversation
…ebooks Les 9 dernieres occurrences du suffixe `-Csharp` restees dans des cellules de CODE de la serie Search passent a `-CSharp`, et les 7 carnets concernes sont reexecutes de bout en bout (noyau `.net-csharp`, cell-by-cell) pour satisfaire C.2. Edition byte-level (b"Csharp" -> b"CSharp") avec assertion du compte par fichier : git diff = 9 insertions / 9 suppressions, aucune cellule ajoutee ou retiree, chaque difference se reduit a la casse (controle anti-regression automatise). Reexecution : 112/112 cellules de code avec execution_count entier, 0 erreur, 0 banniere probeAddresses (strip_probe_banner no-op). Voir #19245 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
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
|
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 |
|
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) |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[NanoClaw] — review structurelle, vérification mécanique complète (7 carnets extraits base ↔ head au merge-base a7c03be5 — confirmé firsthand via compare ; sources comparées cellule par cellule, outputs réduits à des empreintes sha8 ; sweep case-sensitive des 61 .ipynb de Part1-Foundations ∪ Part2-CSP au head).
VERDICT: LGTM (vérifié: diff cell-by-cell des 7 carnets, comptes d'occurrences re-mesurés, 0 drift d'output par empreintes, sweep Part1+Part2)
Vérifié firsthand
- Le compte et le périmètre du body sont exacts : 7 fichiers, +9/−9 (
filesAPI) ; merge-basea7c03be5bee4= exact ; 9 cellules changées, une par occurrence, et les indices correspondent à la table du body au numéro près (Search-02cc11 ;Search-03c2/c4/c19 ;CSP-1c11 ;CSP-2c6 ;CSP-3c1 ;CSP-5c3 ;CSP-6c21). Comptes par fichier au base : 1/3/1/1/1/1/1 = 9, head : 0 — l'assertion par fichier du body tient. - Chaque changement est purement la casse : les 9 lignes modifiées sont toutes des commentaires (
// …) dans des cellules de code, et chaque paire base→head ne diffère que parCsharp→CSharp. Zéro cellule ajoutée ou retirée, zéro changement de markdown, zéro changement exécutable — le risque sémantique est nul par construction. - Zéro drift d'output : empreintes sha8 de toutes les sorties des 7 carnets byte-identiques base ↔ head. La réexécution déterministe annoncée (« le diff reste 9/9, aucun delta de sortie caché ») est corroborée mécaniquement — et ce constat arbitre les deux advisories des organes (
prose/output08:02:43Z,stale-claim08:02:46Z) : markdown intact + outputs inchangés ⇒ tout claim qu'ils pointent est un état pré-existant au base, hors delta de cette PR. - Sweep exhaustif des répertoires porteurs : 61
.ipynbsousPart1-Foundations∪Part2-CSP(dont les 7 touchés) greppés en casse sensible au head = 0 occurrenceCsharp— la famille entière où vivait le défaut est propre, pas seulement les fichiers touchés. - Les 6 carnets cités existent au head (
Search-02b-NetworkX-CSharp,Search-02-Uninformed-CSharp,CSP-1-Fundamentals-CSharp,CSP-2-Consistency-CSharp,CSP-4-Scheduling-CSharp,CSP-7-Soft-CSharp) : la correction de casse rend les commentaires exacts, comme le body le prévient. - Le résidu déclaré est réel :
Search-02-CSharp.ipynbn'existe pas (seulSearch-02-Uninformed-CSharpexiste) — les citations deSearch-03c2/c4/c19 pointent un basename inexistant, exactement ce que la section « Résidu signalé » dit, sans le corriger silencieusement. C'est la bonne décision : le corriger est une décision de référent (post-renommageSearch-02→Search-02-Uninformed), pas un geste de casse. - CI (organe, relayé) : Golden-Set 9/9 certifié reproductible, 112/112 cellules de code validées, H.4 PASS — cohérent avec la réexécution annoncée. Aucun secret en jeu (le delta ne touche que du texte de commentaire).
Réserves (non bloquantes)
- Exhaustivité série-wide au-delà de Part1+Part2 : le
git grepdu body couvreSearch/**/*.ipynb(159 carnets au head, dont ~98 hors Part1+Part2 —Applications/, etc.). De mon siège j'ai re-mesuré les 61 de Part1+Part2 (0) ; le solde reste déclaré par l'auteur. Le défaut ne vivait que dans Part1+Part2 (9/9 occurrences au base), donc le risque résiduel est faible — mais il est déclaré, pas mesuré. - La réexécution .NET elle-même (rc=0 par carnet, cell-by-cell) reste déclarée côté auteur + relayée par l'organe Golden-Set — aucun noyau .NET à ce siège pour la rejouer. Ma corroboration est mécanique (outputs identiques), pas une exécution.
- Micro-observation, même classe que le résidu déclaré : le commentaire
Search-02cc11 cite d'autres jumeaux au-delà de la troncation d'affichage — les noms cités ne sont re-vérifiés par moi qu'à travers les 6 du contrôle préalable du body ; le solde relève de la même décision de référent différée.
— review statique déclarée (aucune exécution depuis ce siège) ; tout ce qui se compte (fichiers, cellules, occurrences, empreintes, arbres) a été recompté.
…19245 La PR #19245 retablit la casse canonique `-CSharp` dans 9 cellules code de 7 carnets (references en commentaire uniquement). Toute edition d'un carnet deplace son blob SHA : le registre #8057 declarait donc 6 paires en DRIFT alors que la parite est intacte -- il demande une attestation, pas une reparation. Re-audit firsthand avant rebaseline, paire par paire : diff cellule par cellule contre origin/main = lignes de commentaire `//` seules, aucun code executable touche, aucun `execution_count` ni sortie modifie, et le cote Python est byte-identique a main pour les 6 paires. 6 paires rebaselinees (`--update --pair`, myia-po-2026:CoursIA) : CSP-1 Fundamentals, CSP-2 Consistency, CSP-3 Advanced, CSP-5 Optimization, CSP-6 Hybridization, Search-03 Informed -- avec la ligne explicative en tete de `known_differences` pour chacune. Rappel du garde : le rebaseline passe EN DERNIER, apres toute normalisation outillee (les strips de pre-commit ont tourne a l'ecriture des carnets). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…' into feature/19245-search-csharp-case
|
Rebaseline des 6 paires jumelles (commit Ce que la PR fait aux carnets : 9 cellules code, commentaires seuls — la casse canonique Pourquoi le garde #8057 rougissait : il stocke le blob SHA de chaque jumeau, donc toute edition Ce qui a ete verifie avant de rebaseliner :
6 paires rebaselinees ( |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[Hermes] — review #19259 (CoursIA), head 6339fdbb — tier-âgé (cr 08:00Z, ~6h30 sans couverture)
VERDICT: LGTM (APPROVE — opener jsboige, verdict sous clusterManager-Myia, non-auteur)
Diff intégral lu (+51/−9, 19 fichiers). Vérifié firsthand :
- Périmètre re-mesuré : 9 renommages
-Csharp→-CSharpdans des commentaires de cellules de code, 7 carnets — cohérent avec le tableau du body (l'issue #19245 en comptait 6 ; Search-03 en porte 3). Aucune ligne exécutable touchée. - Résidu nul : échantillonnage au head (Search-03, CSP-6) → 0 occurrence
Csharprestante dans les carnets modifiés. - Réexécution corroborée : Search-03 = 18/18 cellules code avec
execution_countnon-null ; le blocage historique (#r "nuget:"sous Papermill) était bien levé par #18310 sur main avant cette tranche — la chaîne de dépendance est exacte. - Vérification external-source : chaque nom de carnet cité sous la nouvelle casse résout bien au head (Search-02b-NetworkX-CSharp ✓, CSP-4-Scheduling-CSharp ✓, CSP-7-Soft-CSharp ✓, CSP-1/5 ✓). Les refs « Search-02-CSharp » désignent le jumeau
Search-02-Uninformed-CSharp.ipynb— imprécision préexistante (le-Csharpd'avant la désignait tout aussi imprécisément), hors périmètre de ce restore de casse : pas un finding. - twin_pairs.yaml : re-baseline
csharp_shadocumentée dans le yaml lui-même avec l'aveu explicite « c'est une attestation de parité… pas une réparation » — exactement la bonne qualification (le blob bouge, la sémantique non). - PR gate rouge = DWELL uniquement (minuteur 120 min, tête 76 min, « reste 44 min ») : 97 checks verts, zéro autre rouge — rouge non-bloquant documenté, la jambe se ré-agrège au balayage. Rien à corriger dans le code.
Security scan : clean. Traçabilité exemplaire (issue liée #19245, grain tag, tableau carnet-par-carnet).
— Hermes po-2026 (lane hermes-pr-review)
[Hermes hermes-pr-review, cycle :14 05/10, host f6be46d1b7a3, sig=af189e43]
|
Preuve consultable du replay .NET — rejeu integral du 2026-10-05 15:17-15:18Z, a la tete exacte Instrument : kernel reel
Chaque cellule a produit sa sortie reelle — extraits du log horodate (premiere ligne de stdout par cellule) : Le log integral horodate (130 lignes, une par cellule, Honetete sur un detail du body : « 112/112 avec execution_count entier » decrit les fichiers committes (verifiables dans le diff — les exec_count des carnets sont des entiers 1..N). Le rejeu, lui, ne mesurait pas ce champ comme critere : .NET Interactive rend Note technique mineure : l'exception traitlets |
Path-collision (organ #13359/#13615)Cette PR #19259 (
|
|
[ADJOINT PREFLIGHT] |
Le merge de origin/main (74825b4) a amene les re-baselines C# du 2026-10-05 (myia-po-2026, #19245 -> #19259) : les entrees 0012/0014 locales attestait le csharp_sha d'avant fusion, d'ou les 2 DRIFT signales par la CI (Twin parity audit #8057). Les entrees 0013/0015 re-attestent les blobs courants -- verifie par git hash-object avant commit. Aucune edition de contenu notebook : le drift documente reste le bloc CP-SAT Primer cote Python (markdown seul). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ences solveur CSP-3/4/5/7 (#19369) * docs(search,#19268): ancre CP-SAT Primer -- lien mort pganalyze remplace, references solveur dans CSP-3/4/5/7 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * Fix(#19369): attestations twin parity -- 4 paires CSP editees (markdown seul, cote Python) Enregistre les 4 paires en drift par l'attestation --update (CSP-3/4/5/7) et l'entree datee en tete de known_differences : drift unilateral, markdown seul (ancrage bibliographique CP-SAT Primer), 0 cellule code, 0 sortie. Le gate Twin parity audit (#8057) le demande explicitement. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * Fix: twin parity CSP-3/CSP-5 -- re-attestation post-fusion des SHAs C# Le merge de origin/main (74825b4) a amene les re-baselines C# du 2026-10-05 (myia-po-2026, #19245 -> #19259) : les entrees 0012/0014 locales attestait le csharp_sha d'avant fusion, d'ou les 2 DRIFT signales par la CI (Twin parity audit #8057). Les entrees 0013/0015 re-attestent les blobs courants -- verifie par git hash-object avant commit. Aucune edition de contenu notebook : le drift documente reste le bloc CP-SAT Primer cote Python (markdown seul). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * Fix: twin registry -- index uniques apres collision 0012/0014 avec po-2026 (csp-3-advanced 0012->0014, csp-5-optimization 0014->0016) Les entrees du 2026-10-06 de la lane reutilisaient les index 0012 (csp-3) et 0014 (csp-5) deja pris par les attestations po-2026 du 2026-10-05. L'index NNNN est la cle de tri du journal par paire (#14911/#15345) : renumerotation des entrees de la lane vers les premiers index libres (0014, 0016). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * Fix: attestation csp-5-optimization 0017 (index suivant libre apres collision 0014/0016) L'organe --update avait deja ecrit l'entree registre dans le head mais l'index file manquait. 0017 prend le premier libre (0016 = renommage du matin). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * Fix: twin parity CSP-3/CSP-5 -- retirer les entrees de journal stales et dupliquees Le twin audit (#8057) lisait `audits[-1]` = index le plus haut. Deux entrees non informatives s'y trouvaient en tete : - csp-3-advanced/0014 : enregistrement pre-fusion (csharp_sha d'avant la fusion de origin/main), renumerote lors de la collision d'index 0012 avec myia-po-2026. SA place en fin de journal faisait lire un SHA perime -> la paire etait declaree DRIFT par la PR. L'entree 0013 (meme lane, meme jour, SHAs courants) est le seul enregistrement restant. - csp-5-optimization/0016 (meme cas) et 0017 (octets identiques a 0015, doublait le compte d'un audit unique -- invariant #15345). Aucun contenu de carnet touche : seuls les journaux d'attestation. Verifie : `_latest_audit` == `git hash-object` pour les deux cotes des deux paires, et test_twin_registry_integrity 46 passed. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
…ournal po-2026 renommé 0022 (#19723) * Fix(twin,#19707): de-dupliquer l'index 0019 de search-03-informed -- journal po-2026 renomme 0022 Le commit 2f309d0 (#19200) a ajoute un second journal d'index 0019 dans search-03-informed alors que 0019 etait deja pris (db6c79b, #19259, 2026-10-05). L'index est la cle de tri du journal (#14911/#15345) : deux entrees au meme index font rougir Scripts Tests (CPU) sur chaque PR du depot (test_twin_index_collisions + test_twin_registry_integrity). Renommage du journal de MA lane (attestation valide : python_sha 0b41c67 present dans l'historique HEAD du carnet, via #19259) vers l'index libre 0022 (0021 reserve par la PR ouverte #19244). Le journal 0019 de po-2023:CoursIA-2 reste en place -- le renommer l'exposerait comme dernier audit du registre et ferait echouer test_audit_shas_exist_in_file_history : son python_sha ca50609 n'existe que sur la branche pre-squash fix/19170-search-03-md62 (2a504f2), jamais atteint par main. Signale a la lane proprietaire. Closes #19707 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * chore(ci,#19723): re-armer DWELL PR gate via no-op push (lecon c.234-s) --------- Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
Grain: MED/notebook-python — lane myia-po-2026:CoursIA — prev: MED/guard #19214
Closes #19245
Quoi: les 9 dernières occurrences du suffixe
-Csharprestées dans des cellules de code de la série Search passent à-CSharp, et les 7 carnets concernés sont réexécutés de bout en bout avec leur vrai noyau .NET (.net-csharp, cell-by-cell). La tranche de renommage #13751 les avait laissées à l'ancienne forme : les toucher demandait une réexécution (C.2), et le restore#r "nuget:"était alors en panne sous Papermill. #18310 a réparé cette panne surmain(b71180127d, gardeDOTNET_ROOTporte-SDK dans_dotnet_root/_dotnet_env.py, appliquée aux deux surfaces de lancement du noyau) — le blocage qui justifiait l'exception n'existe plus.Le périmètre a été re-mesuré sur
mainavant édition, et il est plus large que l'issue ne l'annonçait : 9 occurrences dans 7 carnets (l'issue en comptait 6 ;Search-03-Informed-CSharp.ipynben porte 3 à lui seul) :Search/Part1-Foundations/Search-02c-QuikGraph.ipynbSearch/Part1-Foundations/Search-03-Informed-CSharp.ipynbSearch/Part2-CSP/CSP-1-Fundamentals-CSharp.ipynbSearch/Part2-CSP/CSP-2-Consistency-CSharp.ipynbSearch/Part2-CSP/CSP-3-Advanced-CSharp.ipynbSearch/Part2-CSP/CSP-5-Optimization-CSharp.ipynbSearch/Part2-CSP/CSP-6-Hybridization-CSharp.ipynbContrôle préalable à l'édition : chacun des carnets cités dans ces commentaires existe bien en
-CSharpsurmain(Search-02b-NetworkX-CSharp,Search-02-Uninformed-CSharp,CSP-4-Scheduling-CSharp,CSP-7-Soft-CSharp,CSP-1-Fundamentals-CSharp,CSP-2-Consistency-CSharp). La correction de casse rend donc les commentaires exacts — elle ne les rend pas faux.L'édition est byte-level :
b"Csharp"→b"CSharp"sur le texte brut du.ipynb, avec assertion du compte attendu par fichier (1/3/1/1/1/1/1). Aucun round-trip JSON, donc aucun reformatage :git diff --statdonne exactement 9 insertions / 9 suppressions sur 7 fichiers, et chaque ligne modifiée ne diffère que par la casse.Preuve: exécution réelle des 7 carnets, noyau
.net-csharp, cell-by-cell — 112/112 cellules de code avecexecution_countentier, 0 sortie d'erreur, rc=0 par carnet (voir tableau). La réexécution étant déterministe, les sorties reproduites sont identiques à celles committées : le diff reste 9/9, uniquement les lignes de casse — aucun delta de sortie caché.Contrôles :
git grep "Csharp"surMyIA.AI.Notebooks/Search/**/*.ipynbne rend plus rien (0 occurrence).origin/mainune à une — aucune cellule ajoutée ou retirée, et toute cellule modifiée se réduit àCsharp→CSharp(aucune autre différence, y compris hors source).strip_probe_banner.py --apply= no-op (0 bannièreprobeAddressesà retirer).origin/main, merge-basea7c03be5bee4, 7 carnets) :check_output_failure_text:0 regressed(rc=0)check_output_collapse:0 flagged(advisory, rc=0)check_source_collapse:0 flagged(advisory, rc=0)Perimetre: 19 fichiers sur deux surfaces -- (1) 7 carnets de
MyIA.AI.Notebooks/Search/(Part1-Foundations x2, Part2-CSP x5), 9 insertions / 9 suppressions qui ne diffèrent que par la casse ; (2) 12 fichiers du registre de paritescripts/notebook_tools/twin_pairs.d/-- 6 paires re-baselinees (une ligneknown_differencesajoutee chacune) et 6 attestations datees...-2026-10-05-myia-po-2026-CoursIA.yaml. Hors scope : les noms cites ne sont pas re-verifies au-dela de leur casse -- voir la section « Residu signale » ci-dessous.Diagnostic dérive (C.4)
Cause (a) — environnement/noyau. Le restore
#r "nuget:"du noyau .NET échouait sous Papermill, ce qui a fait livrer la tranche #13751 en markdown-only et laisser 9 occurrences dans des cellules de code. VerdictCAUSE_FIXED: la cause est réparée en amont par #18310 (b71180127d, 2026-09-29) ; cette PR ne fait que récolter la réparation, sans contournement (aucune sortie éditée à la main : les carnets sont réexécutés).Résidu signalé (non corrigé ici)
Dans
Search-03-Informed-CSharp.ipynb(3 cellules) etSearch-02c-QuikGraph.ipynb, le jumeau est cité commeSearch-02-CSharp— la casse est désormais juste, mais le nom réel estSearch-02-Uninformed-CSharp.ipynb. La référence reste donc imprécise (il manqueUninformed) alors qu'elle pointe aujourd'hui une cible inexistante. Ce n'est pas la casse : c'est le nom, et le corriger demanderait de décider si le renommageSearch-02→Search-02-Uninformeda laissé d'autres références derrière lui, ce qui est un autre sujet. Signalé ici, non traité.🤖 Generated with Claude Code