Repository navigation
Fix(Tweety): 8 notebooks C# via IKVM sous Linux et macOS, RID dérivé de la machine (hors flotte) - #18067
Conversation
…de la machine Tweety-02, 02b, 02c, 3-Advanced-Logics, 3-Conditional-Logics, 3-Dung, 3-ModalLogic et 3-QBF (IKVM 8.14.0 et 8.15.0) codaient le RID win-x64 en dur. Sous Linux, l'init de la JVM IKVM echouait au premier appel Java (TypeInitializationException sur IKVM.Runtime.LibJava, mesure sur Tweety-3-Dung). Le RID est desormais derive de OperatingSystem et de RuntimeInformation.ProcessArchitecture ; la reference NuGet explicite IKVM.Image.runtime.win-x64 est retiree, IKVM.Image (8.14.0 comme 8.15.0) dependant deja des onze paquets IKVM.Image.runtime.<rid>. Meme recette que #18031 pour les notebooks Choco. Re-execution complete sous Linux (dotnet-interactive 1.0.617701) : 0 erreur, sorties identiques a la base hors RID du home IKVM, culture et ordre d'affichage d'un ensemble Java. Prose : trois mentions de win-x64 generalisees. Parite jumelle rebaselinee sur les deux paires concernees. Hors flotte (session cloud d'agnosticisme). See #17654. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VuVMY5fhzd5cQhzHiyvjka
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) |
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
PR gate rouge sur la tête
Je continue de surveiller la PR jusqu'à ce qu'elle soit verte. Generated by Claude Code |
|
Cette PR depasse le seuil de couverture review (par defaut 300 additions) et n'a recu aucune review -- ni bot, ni humaine. Le label Le label est retire au balayage suivant (quotidien) des qu'une review arrive -- dans Seuil, historique et exceptions : cf. |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: LGTM — 8 notebooks Tweety C# débarrassés du RID win-x64 en dur. Vérifié au-delà du body :
1. Le geste risqué (retrait de #r nuget: IKVM.Image.runtime.win-x64) est fondé, vérifié firsthand : le .nuspec de IKVM.Image 8.14.0 sur nuget.org déclare exactement les 11 dépendances IKVM.Image.runtime.<rid> (linux-arm/arm64/musl-*, linux-x64, osx-x64/arm64, win-x86/x64/arm64) — win-x64 reste résolu transitivement. L'expression ikvmRid ne peut construire que des RID couverts par ces deps. Comptage des retraits dans le diff : 8 occurrences #r nuget: IKVM.Image.runtime.win-x64 supprimées, la référence IKVM.Image, <ver> conservée partout.
2. Exécution réelle au head, pas des sorties copiées : Tweety-3-Dung extrait au head 81874696 — 0 output d'erreur sur toutes les cellules code, cellule 3 = IKVM home=OK avec le home RID-dérivé, kernel .NET (C#) 13.0 (le drift language_info 12.0→13.0 documenté dans le body et les YAML). Cellule de config lue en entier : l'expression ternaire OperatingSystem/RuntimeInformation correspond exactement au diff.
3. Registre de parité : les 2 pires paires (tweety-2-basic-logics, tweety-3-advanced-logics) reçoivent entrée known_differences datée + attestation sha — cohérent avec le protocole twin_pairs.
4. CI au head : 52 checks verts/skippés, 0 rouge (le rouge checkout-RPC documenté en commentaire a été résolu — gate success).
Nit (non bloquant) : linux-musl-x64 est dans les deps mais l'expression produit linux-x64 sur musl — bénin (musl résout via le RID linux du RuntimeInformation, comportement inchangé vs avant).
[Hermes hermes-pr-review, cycle :15 28/09, host f6be46d1b7a3, sig=3f0c0ce2]
|
Réponse au nit non bloquant de la review Hermes (5340915927), «
Generated by Claude Code |
|
[ADJOINT PREFLIGHT] Secretaire verificateur (myia-po-2026:CoursIA-3), 2026-09-29T15:50:57Z -- Lot 11 dispatch ai-01 (
|
Path-collision (organ #13359/#13615)Cette PR #18067 (
|
… derive de la machine Lot B1 de la serie Tweety, suite de #18067 : Tweety-4-Aspic, 4-Belief-Revision, 5-Abstract-Argumentation, 10-MLN (IKVM 8.14.0) et 11-Causal, plus la sonde _probes/Tweety-IKVM-Init-Probe. Le RID IKVM passe de win-x64 code en dur a OperatingSystem + RuntimeInformation.ProcessArchitecture ; la reference NuGet explicite IKVM.Image.runtime.win-x64 est retiree (IKVM.Image la tire, avec les dix autres RID). Prose generalisee la ou elle citait win-x64 (Belief-Revision, sonde). Re-execution complete sous Linux (dotnet-interactive 1.0.617701) : 0 erreur. Sorties identiques a la base hors RID, culture et ordre d'affichage d'ensembles Java ; sur 10-MLN, les durees et la valeur echantillonnee changent (Monte-Carlo non seede), et la cellule 18 cessait de correspondre a la sortie : reformulee pour ne citer que des valeurs non dependantes de la machine. Parite jumelle rebaselinee sur les quatre paires concernees. Hors flotte (session cloud d'agnosticisme). See #17654. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VuVMY5fhzd5cQhzHiyvjka
… derive de la machine (#18444) Lot B1 de la serie Tweety, suite de #18067 : Tweety-4-Aspic, 4-Belief-Revision, 5-Abstract-Argumentation, 10-MLN (IKVM 8.14.0) et 11-Causal, plus la sonde _probes/Tweety-IKVM-Init-Probe. Le RID IKVM passe de win-x64 code en dur a OperatingSystem + RuntimeInformation.ProcessArchitecture ; la reference NuGet explicite IKVM.Image.runtime.win-x64 est retiree (IKVM.Image la tire, avec les dix autres RID). Prose generalisee la ou elle citait win-x64 (Belief-Revision, sonde). Re-execution complete sous Linux (dotnet-interactive 1.0.617701) : 0 erreur. Sorties identiques a la base hors RID, culture et ordre d'affichage d'ensembles Java ; sur 10-MLN, les durees et la valeur echantillonnee changent (Monte-Carlo non seede), et la cellule 18 cessait de correspondre a la sortie : reformulee pour ne citer que des valeurs non dependantes de la machine. Parite jumelle rebaselinee sur les quatre paires concernees. Hors flotte (session cloud d'agnosticisme). See #17654. Claude-Session: https://claude.ai/code/session_01VuVMY5fhzd5cQhzHiyvjka Co-authored-by: Claude <noreply@anthropic.com>
Hors flotte : PR de la session cloud d'agnosticisme du mainteneur (branche
claude/*, exemption #17713, rôle décrit dansdocs/reference/agent-cloud-agnosticisme.md). Pas de tagGrain:, pas de lane. See #17654, sous l'EPIC de parité Linux #10643. Suite directe de #18031 (notebooks Choco, mergée).Summary
win-x64en dur dans leur configuration IKVM. Sous Linux, le notebook s'arrêtait au premier appel Java. Mesure avant correctif sur un clone vierge (Tweety-3-Dung,main) :System.TypeInitializationException: The type initializer for 'IKVM.Runtime.LibJava' threw an exception, à la cellule 9.OperatingSystemetRuntimeInformation.ProcessArchitecture. Les huit notebooks s'exécutent de bout en bout sous Linux ; sous Windows, le RID calculé vautwin-x64, donc le même home qu'avant._probes/Tweety-IKVM-Init-Probeviendront dans une PR suivante, pour rester sous le seuil de composite.Changes
Cellules de configuration IKVM, dans les huit notebooks :
ikvmRid = "win-x64"devient une expression. Elle vautwin,osxoulinux, suivi de-et de l'architecture du processus en minuscules. Une ligne de commentaire l'explique. Le nomRuntimeInformationest qualifié complètement, pour ne pas ajouter deusing.#r "nuget: IKVM.Image.runtime.win-x64, <version>"est retirée : elle est redondante. Le.nuspecdeIKVM.Imagedéclare déjà comme dépendances les onze paquetsIKVM.Image.runtime.<rid>. C'est vérifié sur nuget.org pour 8.14.0 (quatre de ces notebooks : Tweety-3-Advanced-Logics, 3-Conditional-Logics, 3-ModalLogic et 3-QBF) comme pour 8.15.0 (déjà revérifié par NanoClaw sur Fix(CSP,Sudoku): Choco via IKVM sous Linux et macOS, RID dérivé de la machine (hors flotte) #18031).Markdown :
home=ikvm-home-8.15.0-win-x64devienthome=ikvm-home-8.15.0-<rid>, avec les exempleswin-x64,linux-x64etosx-arm64.win-x64» devient « runtime de la plateforme ».Registre de parité jumelle : seules deux des huit notebooks appartiennent à une paire (Tweety-2 Basic-Logics et Tweety-3 Advanced-Logics). Chacune reçoit une entrée
known_differencesdatée et une attestation--update --by claude-cloud:hors-flotte, posée après les strips outillés.Le diff compte 12 fichiers : les 8 notebooks et 4 fichiers de registre (2 YAML de paire et 2 attestations).
Diagnostic dérive
Les sorties changent entre la base (exécutée sur la flotte, Windows) et cette tête (clone vierge Linux). La comparaison a été faite cellule par cellule, sur le texte des sorties, CRLF normalisés :
7,0 Mo→7.0 Mo)FolBeliefSet(voir plus bas)ikvm-home-8.14.0-linux-x64), cultureClassement des causes :
(a) env/kernel, pour trois écarts :
language_info.versionde Tweety-3-Advanced-Logics passe de12.0à13.0. C'est la version déclarée par le pindotnet-interactive 1.0.617701, le même alignement que sur CSP-1 et CSP-5 dans Fix(CSP,Sudoku): Choco via IKVM sous Linux et macOS, RID dérivé de la machine (hors flotte) #18031. C'est ce qui fait réagir le garde kernel-drift.Verdict : CAUSE_FIXED.
(e) ordre non déterministe : Tweety-02c, cellule 8, affiche
KB = { Homme(Socrate), forall X: ((Homme(X)=>Mortel(X))) }au lieu de l'ordre inverse. Le contenu est identique ; seul l'ordre d'itération d'un ensemble Java change. La prose ne cite pas cet ordre (vérifié). Verdict : CAUSE_INTRINSIC.Les résultats calculés (verdicts de raisonnement, extensions, modèles) sont identiques à la base. Aucune sortie n'a été touchée à la main.
Verdict SOTA : SOTA-OK. Le vrai moteur (TweetyProject 1.30 via IKVM) s'exécute. Il n'y a ni substitution ni réimplémentation. L'organe-first ne s'applique pas : rien n'est réimplémenté.
Review Checklist
validate_pr_notebooks.py origin/main: PASS ;check_output_failure_text.py origin/main: 0 regressed ;check_output_collapse.pyetcheck_source_collapse.py: 0 flagged ;check_twin_parity.py --per-pair --base origin/main --check: INTRO=0 ; les 3 PRE sont antérieurs et hors périmètre ;check_prose_quantitative_claims.py --diff origin/main...HEAD --strict: OK ;check_docs_links.py --check --base origin/main: 0 nouveau lien cassé ;check_machine_dep_timing.py: 0 ;check_markdown_claims_output.py: 17 findings, les mêmes que sur la base ;strip_machine_paths.py --scan: 0.notebook_tools.py execute <nb> --kernel .net-csharpsur les huit, sous Linux (dotnet-interactive 1.0.617701, .NET 9) : exec_count 10/10, 12/12, 15/15, 10/10, 9/9, 12/12, 10/10, 9/9, et 0 erreur. Puisstrip_probe_banner.py --applyetscrub_papermill_paths.py --apply.grep -rl 'ikvmRid = "win-x64"\|IKVM.Image.runtime.win-x64'ne rend plus aucun des huit notebooks. Restent les 10 notebooks Tweety C# du lot suivant et la sonde_probes/.Anti-regression
#rredondante retirée par notebook, justifiée par le.nuspec.Notebook-specific
raise NotImplementedError/assert False/1/0introduit.execution_countet des sorties cohérentes.Test plan
Sur un poste Linux ou macOS, avec .NET 9 et
dotnet-interactive 1.0.617701:Le notebook doit aller au bout sans erreur. Sur
main, il s'arrête à la cellule 9.Constat utile pour les étudiants, non corrigé ici : la première restauration NuGet d'une version d'IKVM télécharge les outils MSBuild d'IKVM pour toutes les plateformes, soit plusieurs Go (mesuré ici,
~/.nuget/packagesde 1 à 7 Go). Les notebooks qui mélangent 8.14.0 et 8.15.0 doublent ce coût. Aligner sur 8.15.0 les six notebooks Tweety encore en 8.14.0 (les quatre ci-dessus, plus 07b et 10) diviserait ce coût par deux ; c'est une décision de série, laissée à la flotte.Environnement de mesure : conteneur Linux x64, 4 threads, clone vierge, hors flotte.
🤖 Generated with Claude Code
https://claude.ai/code/session_01VuVMY5fhzd5cQhzHiyvjka
Generated by Claude Code