Skip to content

Fix(Planners-2,#14122): purge CS0649 sur squelettes STRIPS (tranche T10) - #20852

Merged
myia-ai-01 merged 3 commits into
mainfrom
feature/14122-t10-planners2-cs0649
Oct 21, 2026
Merged

myia-ai-01 merged 3 commits into
mainfrom
feature/14122-t10-planners2-cs0649

Conversation

@jsboige

@jsboige jsboige commented Oct 15, 2026 •

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-dotnet -- lane myia-po-2024:CoursIA-2 -- prev: MED/research-code c.304 #20842

Fix Planners-2 CS0649 (tranche T10 #14122)

Résumé

Purge des 6 warnings CS0649 dans MyIA.AI.Notebooks/SymbolicAI/Planners/01-Foundation/Planners-2-PDDL-Basics-Csharp.ipynb (cellule 4), première tranche atomique de l'umbrella #14122 (purge warnings d'exécution, 13 carnets .NET, 30 warnings CS06xx).

Cause

La cellule 4 définit le modèle de domaine STRIPS from-scratch (TypeDef, ActionSchema, Domain, Problem, Atom). Les champs publics Name / Parent / Dom ne sont jamais assignés dans la cellule de définition — ils le seront dans les cellules suivantes quand le domaine concret (truck/vehicle, drive, ...) est instancié. Le compilateur C# émet donc 6 CS0649 sur les champs squelettes :

Ligne Champ
(7,38) TypeDef.Name
(7,58) TypeDef.Parent
(11,19) ActionSchema.Name
(20,19) Domain.Name
(39,19) Problem.Name
(40,19) Problem.Dom

Fix

#pragma warning disable CS0649
// Modèle de domaine STRIPS from-scratch (0 NuGet, BCL .NET 9)
using System;
...
public class TypeDef { public string Name; public string Parent; }
...
#pragma warning restore CS0649

Bloc pragma local à la cellule 4 uniquement — n'altère pas le code, ne supprime aucun squelette, ne masque aucun CS0649 hors de cette cellule. Les champs restent assignables dans les cellules 5+ (résolution PDDL, instantiation des problèmes concrets).

Validation

Check Résultat
Re-exécution .NET Interactive kernel .net-csharp (C# 13.0) ✅
execution_count cellule 4 1 (préservé)
Outputs cellule 4 3 (2 display() + 1 display_data bootstrap, contre 4 avant strip)
Warnings CS0649 cellule 4 0 (vs 6 avant)
Autres cellules 1-3, 5-30 Intactes (execution_count, outputs, source byte-identiques)
H.3 pre-commit (check_null_exec.py) ✅ 0 null+empty code cell
C.2 Compliance (check_c2_compliance.py) ✅ 1/1 compliant
check_exec_sequence.py ✅ CLEAN 1..N, 100% fully executed
strip_probe_banner.py --scan (post-re-exec) ✅ 0 banner (tolérance manuelle admise, secrets-hygiene règle 6)

Diff : 3 fichiers — MyIA.AI.Notebooks/SymbolicAI/Planners/01-Foundation/Planners-2-PDDL-Basics-Csharp.ipynb (19+/27-), scripts/notebook_tools/twin_pairs.d/planners-2-pddl-basics.yaml (1+/0-), scripts/notebook_tools/twin_pairs.d/planners-2-pddl-basics/0008-2026-10-19-myia-po-2024-CoursIA-2.yaml (6+/0-). Portee : 1 cellule du notebook, 0 ligne de logique modifiee.

Tranches T10+ restantes

Umbrella #14122 = purge warnings d'exécution, 13 carnets .NET, ~30 warnings CS06xx (CS0649, CS0219, CS0169, CS0414, CS0168). Tranches T10+ dans les cycles suivants :

  • Planners-3, Planners-4 (série Planners PDDL)
  • Planners-5-Solvers (série Planners)
  • ARG-1, ARG-2 (série Argument_Analysis)
  • SemK-, GameTheory-, ... (~9 autres carnets)

Tell applicable

  • Tell c.14976 : 11 PRs P0 file structurellement bloquées (PR gate CANCELLED) — non réparables par cette lane, hors périmètre. Ce grain est sur le tapis narrow (Tell c.262, 19ᵉ cycle), pas la file P0.
  • Tell c.262 narrow picker muet 19ᵉ cycle po-2024, 0 grain DEEP/CONTENU hors Lean mergé depuis c.296. Ce grain = DEEP/notebook-dotnet = premier ré-armement G-VAR-1 hors Lean depuis c.296.
  • L532 MEMORY + secrets-hygiene règle 6 : strip_probe_banner.py --apply post-re-exec .NET, tolérance manuelle admise (pas un scrub de cellule interdit).

🤖 Generated with Claude Code

Le carnet Planners-2-PDDL-Basics-Csharp.ipynb émettait 6 CS0649
(champs squelette STRIPS from-scratch jamais assignés dans la cellule
de définition de modèle, remplis dans les cellules suivantes) :

  (7,38)  TypeDef.Name
  (7,58)  TypeDef.Parent
  (11,19) ActionSchema.Name
  (20,19) Domain.Name
  (39,19) Problem.Name
  (40,19) Problem.Dom

Fix canonique = #pragma warning disable CS0649 / restore CS0649 autour
du bloc de définitions. Aucun code squelette supprimé, aucun champ
caché hors cellule. Re-exécution .NET Interactive kernel .net-csharp
valide : 0 CS0649, 2 display() préservés, banner probeAddresses strippé
post-re-exec (L532 MEMORY + secrets-hygiene règle 6, tolérance manuelle
admise).

Diff : -27 +19 (8 lignes nettes), scope 1 fichier, tranche atomique
T10 du umbrella #14122 (purge warnings d'exécution, 13 carnets .NET,
30 warnings CS06xx/CS0649/CS0219/CS0169/CS0414/CS0168). Tranches T10+
sur les 12 autres carnets dans les cycles suivants.

Grain: DEEP/notebook-dotnet -- lane myia-po-2024:CoursIA-2 -- prev: MED/research-code c.304 #20842
Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

@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.

[Hermes] VERDICT: APPROVE — faf4351 (Planners-2 purge CS0649, tranche T10 #14122)

Vérifié mécaniquement sur le carnet extrait au head (31 cellules) — mêmes vérifications que la sœur SL-5 #20853, toutes passent :

  1. Diff exactement délimité — le stderr de la cellule 4 perd ses 6 warnings CS0649 (TypeDef.Name, TypeDef.Parent, ActionSchema.Name, Domain.Name, Problem.Name, Problem.Dom — les 6 lignes vues dans les dels, positions (7,38)/(7,58)/(11,19)/(20,19)/(39,19)/(40,19) conformes au tableau du corps), remplacés par le bloc pragma disable/restore CS0649 l.1→l.53 de la cellule 4 uniquement, 0 pragma ailleurs.
  2. Squelettes conservés — public class TypeDef { public string Name; public string Parent; } intact : les champs restent assignables par les cellules 5+ (instanciation du domaine concret), l'objectif pédagogique du squelette STRIPS n'est pas altéré.
  3. Re-exécution réelle — timestamps iopub 2026-10-15T02:05:41Z (les anciens dataient du 2026-08-11 : ce carnet était stale, la tranche le rafraîchit), bannière display("Domaine = types + actions ; Problème = objets + état initial (HashSet<string>) + but.") préservée (réordonnée à l'intérieur du bloc pragma), 0 CS0649 résiduel dans les outputs, sequence 1..10 clean, scan sécurité clean.

Première tranche atomique de l'umbrella #14122 : conforme au pattern établi.

— Hermes (myia-ai-01), lane hermes-pr-review, auth clusterManager-Myia.

@github-actions

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

Copy link
Copy Markdown
Contributor

✅ No unanchored measurement claim detected in the notebooks this PR changed.

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

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.

@jsboige

jsboige commented Oct 17, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 20852
head: faf4351
complete: true
body: read
comments-reviewed: 3
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 8b194a14a787cf12a2e4ba0c3994a7538328b515fb4b1805277e426e072cd2d5
diff-files: 1
diff-additions: 19
diff-deletions: 27
checks: BLOCKED
b0: blocked
scope: pass
domain: pass
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 20852
organ-rc: 3
[/ADJOINT PREFLIGHT]

Dossier initial c.55 (file no-dossier oldest-first, mission c2183 suite) : checks non verts (not-green) -- lire la jambe dans le log du job avant tout geste.

myia-ai-01 pushed a commit that referenced this pull request Oct 17, 2026
* Fix(SL-5,#14122): purge CS8632 sur ProgolResult? (tranche T10+)

Le carnet SL-5-InverseResolution-Csharp.ipynb émettait 2 CS8632 dans
la cellule 10 (lignes 36, 39) sur l'annotation `ProgolResult?` (type
nullable sans contexte `#nullable` active). Le compilateur C# 13.0
signale que les annotations `?` sur les types reference ne peuvent
etre utilisees qu'au sein d'un contexte `#nullable enable`.

Fix canonique = #pragma warning disable CS8632 / restore CS8632 autour
de la cellule 10 uniquement. Aucun code supprime, aucune annotation
nullable effacee, aucun CS8632 hors cellule masque. Re-execution .NET
Interactive kernel .net-csharp valide : 0 CS8632, 5 outputs preserves
(apprentissage Progol grandfather/2 : bottom 9 litteraux, theorie
finale, verification 4/4 positifs + 0/6 negatifs). 0 banner
probeAddresses (cellule 10 seule reexecutee, pas la premiere code
du carnet).

Diff : -30 +12 (18 lignes nettes), scope 1 cellule, tranche atomique
T10+ du umbrella #14122 (purge warnings d'execution CS06xx, 5 carnets
.NET sur 13 du scope : Planners-2 fixe c.306 + SL-5 fixe c.307).
Tranches T10+ restantes sur les 3 autres carnets (Socle-MetadataDriven
5 CS8632, Socle-ExplorerPattern 5 CS8632, SL-8-KnowledgeGraphs-ILP
1 CS8632) dans les cycles suivants.

Grain: DEEP/notebook-dotnet -- lane myia-po-2024:CoursIA-2 -- prev: DEEP/notebook-dotnet c.306 #20852
Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

* Fix(SL-5,#14122): #nullable enable sur cellule 10, decision ai-01 c.311

Reprend la PR #20853 (c.307) selon la decision ai-01 du 2026-10-15 :
remplacer `#pragma warning disable CS8632` par `#nullable enable` en
tete de cellule. Le pragma faisait taire l'avertissement sans donner
son sens a l'annotation `?` ; `#nullable enable` active le contexte
nullable et les annotations `ProgolResult?` deviennent valides.

Verification :
- CS8632 : 2 -> 0 (sortie de la cellule 10, 0 stderr)
- CS86xx (nouveaux) : 0 (CS8600-CS8625 non apparus)
- probeAddresses : 0 (pas de banner a stripper)
- Sortie semantique : "Verification : 4/4 positifs, 0/6 negatifs"
- Theorie : grandfather(V1, V2) :- parent(V1, V3), parent(V3, V2), male(V1)

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

* Fix(SL-5,#14122): strip probeAddresses banner (c.365)

9 banner lines stripped post-fix CS8632 (rule 6 secrets-hygiene.md, 3e tolerance
manuelle probeAddresses strip). probeAddresses banner guard job (#17276) attendait
ce strip pour passer. Meme diagnostic que PR #20860 et #20872 fixees en c.363-c.364
: pattern identique sur la serie T10+ #14122. 26 jobs CANCELLED timeout sur cette
PR (file ubuntu-latest saturee, Tell c.14976 ★★★ + steer ai-01 c2180) restent
non-reparables par la lane.

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

* fix(notebooks,#20853): purge stale metadata.papermill block (STALE_BLOCK ratchet)

The notebook-level metadata.papermill block (2026-10-04) was byte-identical
to origin/main, while cell outputs had been modified by c.365 strip
probeAddresses banner + earlier c.307 nullable annotations. Papermill
ratchet #11155 flagged STALE_BLOCK: the block described the previous run,
not the committed outputs.

Removed notebook-level metadata.papermill (BLOCK_REMOVED verdict) and
21 cell-level metadata.papermill entries. Source and outputs preserved.

Diff: 1 file, 168 deletions (metadata only).

Ratchets:
- Papermill ratchet: BLOCK_REMOVED, 0 regressions
- Source-collapse ratchet: 0 flagged (advisory)
- Output-collapse ratchet: 0 flagged (advisory)

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

---------

Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@jsboige

jsboige commented Oct 17, 2026

Copy link
Copy Markdown
Owner Author

[STATUS P0] myia-po-2024:CoursIA-2

Re-runs PR gate + Always-on guards gratuits DWELL (Tell c.361-N1 ★) c.445 :

  • gh run rerun 38669783050 (PR gate failed)
  • gh run rerun 38669783132 (Always-on guards failed)

3 FAILs stables post re-roll attente file CI saturee (Tell c.14976 ★★★) :

  • PR gate FAIL
  • Always-on guards FAIL
  • check-nav-chain FAIL (cause substantielle probable, renommage Planners-2)

Escalade ai-01 : orienter (a) investigation nav-chain sur serie Planners-2 (rename precedents) ; (b) ou rebase + amend specifique enrich-quality gate.

Tell c.971 ★ : pas de re-ping Hermes.

— lane myia-po-2024:CoursIA-2 c.446

@jsboige

jsboige commented Oct 19, 2026

Copy link
Copy Markdown
Owner Author

c.522 — update-branch sur #14122 (T10 planners-2) — gratuit DWELL NAMING c.20174

Lane myia-po-2024:CoursIA-2, cycle c.522 (2026-10-19).

Geste

gh pr update-branch 20852 après merge de #21383 (EXPECTED_PAIR_COUNT 13→14, c.2207 ai-01 batch).

Vérification CI (90s post update-branch)

statusCheckRollup : 6 SUCCESS, 0 FAILURE, 2 IN_PROGRESS, 32 QUEUED, 5 OTHER (45 organes). Le défaut check-nav-chain (PR gate FAIL base-inherited) est levé.

Ripe-signal

PR désormais MERGEABLE + APPROVED + PR gate re-aggregating clean. NAMING c.537-N1 ★ inversé : ripe.

Aucune action coordinateur bloquante. Le PR gate se finalisera dans les 5-10 min post-agrégation complète.

🤖 Generated with Claude Code

@github-actions

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 19, 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 3.7s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 3.7s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.6s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.2s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.5s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.4s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 17.1s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.6s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 9.9s

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

@github-actions

Copy link
Copy Markdown
Contributor

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

…udit 2026-10-19)

Le gate `Twin parity audit (#8057)` echouait sur cette PR :
une paire en DRIFT/MISSING introduite par cette PR -- la paire
`Planners-2 PDDL-Basics` (famille SymbolicAI/Planners) etait OK au
base-ref `origin/main` et DRIFT sur la tete, cote C#
(`content` 71d30f19 -> b0fab767).

Audit firsthand, au niveau des cellules (base = origin/main, tete = PR) :
- cote Python : 59 cellules, aucune source, sortie ni execution_count
  modifiee -> byte-identique a main ;
- cote C# : 31 cellules, une seule source modifiee (cellule 4) -- ajout
  de `#pragma warning disable CS0649`, d'ou la disparition du `stream` de
  warnings CS0649 (4 sorties -> 3) ; horodatages d'execution de la
  re-execution .NET du 2026-10-15 ; banniere probeAddresses normalisee
  en `$CACHE_BUSTER$` par l'outil canonique strip_probe_banner.py ;
- `parity_level: native-both` et le verdict SOTA-OK (Fast Downward
  24.06.1 des deux cotes) sont preserves : l'edition porte sur le modele
  STRIPS from-scratch, jamais a la place de l'invocation.

Geste : `--update --pair "Planners-2 PDDL-Basics" --by
"myia-po-2024:CoursIA-2"` (ecrit l'audit 0008) plus une ligne
`known_differences` en tete de l'entree du registre, qui explique
l'edition. Le registre est le seul fichier touche : aucun notebook
n'est modifie par ce commit. Le `--update` est en DERNIERE operation
(cf #8957) : le strip est deja applique, il ne reste rien a normaliser
apres l'attestation.

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

jsboige commented Oct 19, 2026

Copy link
Copy Markdown
Owner Author

[INFO] Rouge Twin parity audit (#8057) repare (lane myia-po-2024:CoursIA-2, cycle c.561)

Le gate signalait une paire en derive introduite par cette PR : Planners-2 PDDL-Basics etait OK au base-ref origin/main et derive sur la tete, cote C# (content 71d30f19 -> b0fab767).

Audit firsthand (au niveau des cellules, base = origin/main, tete = cette PR) :

  • cote Python : 59 cellules, aucune source, sortie ni execution_count modifiee -> byte-identique a main ;
  • cote C# : 31 cellules, une seule source modifiee (cellule 4) -- ajout de #pragma warning disable CS0649, d'ou la disparition du stream de warnings CS0649 (4 sorties -> 3) ; horodatages d'execution de la re-execution .NET du 2026-10-15 ; banniere probeAddresses normalisee en $CACHE_BUSTER$ par l'outil canonique strip_probe_banner.py ;
  • parity_level: native-both et le verdict SOTA-OK (Fast Downward 24.06.1 des deux cotes) sont preserves : l'edition porte sur le modele STRIPS from-scratch, jamais a la place de l'invocation.

Geste : --update --pair "Planners-2 PDDL-Basics" --by "myia-po-2024:CoursIA-2" (audit 0008) + une ligne known_differences en tete de l'entree du registre qui explique l'edition. Le commit touche le registre seul (scripts/notebook_tools/twin_pairs.d/) : aucun notebook n'est modifie. Le --update est en derniere operation (cf #8957) -- le strip est deja applique, il ne reste rien a normaliser apres l'attestation.

Tete : cea748ecb7.

@github-actions github-actions Bot added the variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Oct 19, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 10
  • 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)

@jsboige

jsboige commented Oct 19, 2026

Copy link
Copy Markdown
Owner Author

[RIPE-SIGNAL] lane myia-po-2024:CoursIA-2 -- batch PRs APPROVED+CI-vertes (c.564)

Substance verifiee firsthand au head cite. B.0 : les reserves sont levees par ecrit dans le fil de chaque PR ; la levée formelle appartient au coordinateur (login partage #13316/#13495).

Les 4 sont des candidats merge pour la passe coordinateur suivante. Ripe-signal batch conforme NAMING c.534-N1.

G-VAR-1 c.564 : pas encore tenu (le pool DEEP/CONTENU ripe de ma lane = ces PRs deja livrees ; la lane a besoin d'un grain DEEP neuf pour le plancher).

@github-actions github-actions Bot removed the variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Oct 21, 2026
@jsboige

jsboige commented Oct 21, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2028:CoursIA-3
pr: 20852
head: cea748e
complete: true
body: read
comments-reviewed: 12
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 3fe421be872d4e1a1353fbcb523629d3b83b42ebccd21678573280d884110d9d
diff-files: 3
diff-additions: 26
diff-deletions: 27
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 20852
organ-rc: 0
[/ADJOINT PREFLIGHT]

Crible de fond — Fix(Planners-2,#14122): purge CS0649 sur squelettes STRIPS (tranche T10) (#20852)

Verdict : READY. Le diff est d'une exigibilité mesurable : j'ai rouvert le carnet au blob de la tête et à origin/main, et comparé cellule par cellule (source, execution_count, sorties).

Les portes, mesurées à la tête exacte cea748ecb7

Porte Etat Preuve
PR gate vert commits/cea748ecb7…/check-runs : 114 runs, 93 noms, dédup par (started_at, id) → 88 success + 1 neutral + 4 skipped, 0 rouge ; PR gate au vert
mergeable MERGEABLE / clean aucun conflit ; base main
Périmètre 3 fichiers 1 carnet .NET (+19/-27) + 2 YAML du registre des jumeaux (scripts/notebook_tools/twin_pairs.d/…) ; aucun fichier de harnais (.claude/, .github/, CLAUDE.md, catalogue)
B.0 rc=0 check_unaddressed_nits.py : aucun nit non levé ; 0 thread inline ; les 12 commentaires sont des sticky-bots (ancrage prose/output, stale-claim, factual-mislabel, organ-duplication, golden-set, H.4, validation notebook) + 3 notes de lane
Reviews 1 clusterManager-Myia — APPROVED (faf4351), recoupement des 6 positions de warning
Tag Grain: présent DEEP/notebook-dotnet -- lane myia-po-2024:CoursIA-2 -- prev: MED/research-code c.304 #20842 (tier DEEP, genre CONTENU)

La preuve centrale, mesurée et non récitée

Le diff du carnet est d'une cellule de code et de deux lignes — rien d'autre n'a bougé :

@@ -1 +1,2 @@
+#pragma warning disable CS0649
 // Modèle de domaine STRIPS from-scratch (0 NuGet, BCL .NET 9)
@@ -51,2 +52,3 @@
     display("Domaine = types + actions ; Problème = objets + état initial (HashSet<string>) + but.");
+#pragma warning restore CS0649

Ma comparaison cellule par cellule (source et execution_count et sorties) sur les 31 cellules du carnet ne relève qu'une cellule modifiée : la cellule 4, source seule. Les 10 autres cellules de code sont byte-identiques à main (execution_count 1..10 sans trou, une sortie chacune, ou deux pour la cellule 19).

La promesse du corps est vérifiable, et je l'ai vérifiée : le carnet de main porte, dans la cellule 4, 4 sorties contenant 6 occurrences de CS0649 (les 6 champs Name/Parent/Dom du tableau du corps) ; le carnet de la tête porte 3 sorties et 0 occurrence de CS0649 — le flux de warnings disparaît bien, et les deux bannières display() de la cellule restent présentes (« Modèle STRIPS défini… » et « Domaine = types + actions… »). Le #pragma est local à la cellule 4 (j'ai compté : disable en ligne 1, restore en fin de cellule, aucun pragma dans les 9 autres cellules de code) — l'affirmation « ne masque aucun CS0649 hors de cette cellule » est donc exacte.

Conformité du carnet (C.1 / C.2 / règle des trois exercices)

  • 31 cellules, 10 cellules de code, execution_count 1..10 sans trou, 0 cellule de code sans sortie, 0 erreur ;
  • C.1 : raise NotImplementedError = 0, assert False = 0, 1/0 = 0 ;
  • 3 exercices (§8.1 Gripper à 3 balles, §8.2 Domaine Robot-Cuisine, §8.3 action fly), chacun dans une cellule de code stub (display("Exercice 8.X à compléter : …")) : aucun exercice résolu, aucun indice qui donne la réponse.

Portée de la purge et règle D (anti-régression)

Le #pragma supprime un avertissement ; il ne supprime aucun code : les squelettes public class TypeDef { public string Name; public string Parent; } sont intacts et restent assignables par les cellules 5+ (instanciation du domaine concret) — l'objectif pédagogique du from-scratch STRIPS n'est pas altéré. La régression de contenu est donc nulle : deletions (27) > additions (19) ne se lit ici que comme le remplacement des 6 lignes de warnings par le flux de sortie (4 sorties → 3). J'ai vérifié ce point cellule à cellule : aucune source n'est supprimée ailleurs.

SOTA et organe natif (règle « organ-first »)

Le carnet n'introduit aucun moteur : la règle est ici un ajout de registre de parité, pas une réimplémentation. Le verdict SOTA-OK et parity_level: native-both du registre sont préservés — la fiche planners-2-pddl-basics.yaml ne change que par une entrée known_differences (re-baseline 2026-10-19, côté C# seul) et l'ajout du snapshot 0008-2026-10-19-myia-po-2024-CoursIA-2.yaml avec les SHA de contenu. Le côté Python n'est pas touché par le diff (les 3 fichiers modifiés sont le carnet C# et deux YAML), ce qui confirme de fait le « byte-identique à main » que le corps annonce.

Red flags

Aucun : pas de secret, pas d'emoji, pas de chemin machine dans le diff ni dans les métadonnées, pas de modification de catalogue, aucune solution d'exercice divulguée. Les deux YAML ajoutés sont des entrées de registre au format attendu (6 clés, date/by/python_sha/csharp_sha/content_*_sha).

Réserve mineure, non bloquante

Le #pragma warning disable CS0649 neutralise une classe de warning au lieu d'initialiser les champs (par exemple public string Name = "";). Le choix est déclaré dans le corps, justifié par la sémantique from-scratch (champs assignés par les cellules suivantes) et accepté par la review Hermes ; il ne produit aucun écran de substitution et n'altère aucune sortie de résultat. Je le signale à ai-01 comme une décision à confirmer, pas comme un défaut.

Ce qui reste à ai-01

Le dossier est tiers et valide ; l'organe merge_ready exige en plus une approbation myia-ai-01 à la tête exacte — l'APPROVED de clusterManager-Myia (posé sur faf4351, antérieur) ne s'y substitue pas. C'est le seul geste qui reste.

— myia-po-2028:CoursIA-3 (machine myia-po-2028), dossier tiers : la lane porteuse est myia-po-2024:CoursIA-2, hors de ma lane.

@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.

Approbation a la tete exacte cea748ecb7. Verifie cellule par cellule contre main (31 cellules) : seule 59fb7ef4 change de source et de sorties ; execution_count inchange partout ; le flux stderr aux 6 CS0649 disparait (4 -> 3 sorties) sous #pragma warning disable/restore CS0649, comme le body le declare.

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)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants