Skip to content

feat(shared,#7265): B1 -- noyau CSP AIMA porte en C# (MyIA.AI.Shared/Search/Csp) - #19138

Merged
myia-ai-01 merged 2 commits into
mainfrom
feature/7265-b1-csp-core
Oct 5, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
feature/7265-b1-csp-core

Conversation

@jsboige

@jsboige jsboige commented Oct 4, 2026 •

Copy link
Copy Markdown
Owner

Grain: DEEP/research-code -- lane myia-po-2024:CoursIA -- prev: DEEP/lean #19042

See #7265 -- pepite B1 (CSP/Flee) amorcee : le noyau CSP d'AIMA entre dans le depot sous forme d'organe C# transverse. L'EPIC n'est pas close (B2/B3, C, D restent).

Pourquoi ce grain, et pourquoi sous cette forme

L'EPIC #7265 liste B1 comme « la pepite B la moins chere a amorcer » : B4 (ComponentModel/Rules/FleePredicateBuilder, #10167) etant livre, le liant existe deja. Restait a mesurer la source avant de la porter.

Mesure des sources (AricieConseil/Aricie.PortalKeeper @ 1ab6620eae, clone frais) :

Fichier du patrimoine Taille Portabilite
Libraries/AI/CSP.cs 402 lignes non portable tel quel : using DotNetNuke.UI.*, Aricie.DNN.*, aima.core.search.csp (assembly IKVM d'AIMA Java)
Libraries/AI/Search.cs 346 lignes meme couplage DNN
Libraries/AI/external/AIMA/aima-core.dll binaire Java traduit par IKVM — non recompilable ici

Le patrimoine CSP d'Aricie n'est donc pas du code a copier : c'est un wrapper DNN au-dessus d'une bibliotheque Java (IKVM). Le porter fidelement veut dire reecrire les algorithmes en C# — ce que fait ce diff. Les axes 1/2/4/5 de la checklist INTRINSIC sont sans objet ici (aucun verdict d'impossibilite n'est prononce : c'est un port, pas un contournement).

Ce que le diff apporte

MyIA.AI.Shared/Search/Csp/ pour les sources et MyIA.AI.Shared.Tests/Csp/ pour les tests -- aucune dependance nouvelle (ni DNN, ni Java, ni NuGet).

Perimetre exact du diff (9 chemins, aucun autre) :

Chemin Lignes
MyIA.AI.Shared/Search/Csp/Assignment.cs +65
MyIA.AI.Shared/Search/Csp/BacktrackingSolver.cs +295
MyIA.AI.Shared/Search/Csp/BinaryConstraint.cs +83
MyIA.AI.Shared/Search/Csp/CspOptions.cs +36
MyIA.AI.Shared/Search/Csp/CspProblem.cs +89
MyIA.AI.Shared/Search/Csp/Domain.cs +60
MyIA.AI.Shared/Search/Csp/IConstraint.cs +19
MyIA.AI.Shared/Search/Csp/Variable.cs +29
MyIA.AI.Shared.Tests/Csp/BacktrackingSolverTests.cs +282

Les sources :

Type Role
Domain domaine fini d'une variable, ordre d'insertion conserve, retrait et copie
Variable nom + domaine
IConstraint / BinaryConstraint / Constraints contrainte sur affectation partielle (une contrainte dont une variable manque est satisfaite), fabriques NotEqual/Equal/Binary
Assignment affectation partielle mutable, IsComplete, IsConsistent
CspProblem variables + contraintes, fabrique fluide CreateCsp(...).AddConstraint(...), garde contre une variable hors domaine declare
VariableSelection, InferenceStrategy enums du patrimoine (DefaultOrder/MRV/MRVDeg, None/ForwardChecking/Ac3)
BacktrackingSolver recherche par backtracking avec choix de variable et inference, compteurs NodeCount/BacktrackCount

Les compteurs ne sont pas decoratifs : ce sont eux qui rendent une heuristique falsifiable plutot qu'affirmee (tests 4 et 5 ci-dessous).

Reponse aux 5 questions d'organe-first

  1. Quelle serie possede deja la semantique ? La pedagogie CSP vit dans MyIA.AI.Notebooks/Search/Applications/CSP/ (dont App-16-Crossword-CSP-CSharp.ipynb, App-1-NQueens.ipynb) et dans Sudoku/ — mais sous forme de cellules de notebook, pas d'organe invocable. C'est exactement le faux positif contre lequel le body de [Epic] 🧭 Amorce patrimoine Aricie → MyIA.AI.Shared : index récupérable (CSP/Flee, Lucene/Safari, DCP/Redis, fork Lean) + ordre #7265 met en garde.
  2. Peut-on invoquer son module ? Non : ces solveurs sont inline dans des cellules, non referencables par une autre serie ni par un test.
  3. Que faut-il exporter ou refactorer dans la serie source ? Rien dans la serie : le manque est le organe, et la decision d'architecture inscrite dans [Epic] 🧭 Amorce patrimoine Aricie → MyIA.AI.Shared : index récupérable (CSP/Flee, Lucene/Safari, DCP/Redis, fork Lean) + ordre #7265 fixe sa place (« transverse -> MyIA.AI.Shared, domaine -> projet dedie »). Ce diff cree l'organe, il ne touche aucune cellule pedagogique.
  4. Quel temoin negatif l'organe natif fournit-il ? Les sorties attendues des notebooks de la serie (coloration, n-dames) : elles servent d'oracle comportemental pour les tests, et le test d'insatisfiabilite (carte d'Australie a 2 couleurs) fournit le temoin negatif structurel.
  5. Quelle autre serie assure la verification independante ? MyIA.AI.Shared.Tests (xUnit), independant des notebooks.

Tests

MyIA.AI.Shared.Tests/Csp/BacktrackingSolverTests.cs -- problemes de reference de la litterature et de la serie :

  1. carte d'Australie 3 couleurs -> solution complete et coherente ;
  2. carte d'Australie 2 couleurs -> insatisfiable (triangle WA-NT-SA), et la recherche a bien remonte ;
  3. n-dames (8) pour les trois heuristiques de selection -> solution valide, 8 lignes distinctes ;
  4. MRV vs ordre par defaut -> comparaison de NodeCount mesuree ;
  5. forward checking vs aucune inference -> comparaison de NodeCount mesuree ;
  6. AC-3 -> la carte reste resolvable a 3 couleurs, reste insatisfiable a 2 (AC-3 ne fabrique pas de solution) ;
  7. determinisme -> deux executions rendent la meme affectation ;
  8. domaine -> dedoublonnage, retrait idempotent ;
  9. garde -> contrainte sur variable non declaree rejetee ;
  10. affectation partielle -> contrainte non instanciee consideree satisfaite.
dotnet test MyIA.AI.Shared.Tests --filter "FullyQualifiedName~Tests.Csp"
  Réussi(s) : 13 -- Échoué(s) : 0   (EXIT=0)

Comptes de noeuds mesures (ce sont les sorties des tests, pas des estimations) :

Configuration (8 dames) Noeuds explores
ordre par defaut, sans inference 114
ordre par defaut + forward checking 54
MRV, sans inference 114 (ex aequo — domaines de meme taille, voir ci-dessous)
MRV + forward checking 53
  • Forward checking divise la recherche par deux (114 -> 54) : l'inference paie sur ce probleme.
  • MRV ne gagne que 1 noeud (54 -> 53) une fois l'inference active. C'est un gain reel mais marginal, et il est rapporte comme tel : le test qui l'affirme est MinimumRemainingValuesShouldExploreFewerNodesThanDefaultOrderWithForwardChecking.
  • Sans inference, MRV et l'ordre par defaut explorent le meme arbre (114 = 114) : tous les domaines gardent la meme taille, l'heuristique n'a rien a discriminer. Ce cas limite est teste (WithoutInferenceMinimumRemainingValuesTiesWithDefaultOrder) pour que la mesure precedente soit interpretable — sans lui, un « MRV gagne » mesure sans inference aurait ete un artefact.
  • AC-3 sur la carte d'Australie : solution trouvee en 8 noeuds, 0 retour arriere — la propagation resout le probleme sans jamais remonter ; et la carte a deux couleurs reste insatisfiable (AC-3 ne fabrique pas de solution).

Ce que ce diff ne fait pas (portee ecrite)

  • Pas de recherche locale : MinConflictsStrategy du patrimoine n'est pas portee — c'est une tranche separee si B1 doit couvrir les trois strategies d'origine.
  • Pas de contraintes n-aires : IConstraint accepte un scope quelconque, mais l'inference (forward checking, AC-3) ne traite que les contraintes binaires ; une contrainte n-aire est verifiee par IsSatisfied, jamais propagee.
  • Pas d'ancrage notebook : aucune cellule pedagogique touchee (la serie Search/Applications/CSP reste intacte) ; le branchement du notebook sur l'organe est un grain ulterieur.
  • README de MyIA.AI.Shared non touche : son index est tenu par la PR feat(shared,#19088): A3-T1.1 -- socle des filtres metadata-driven, port VB->C# (11 sources + System.CodeDom, 19 tests) #19092 d'une autre lane — l'inscription de B1 dans cet index se fera apres son merge.

🤖 Generated with Claude Code

Pepite B1 de l'EPIC #7265. Le patrimoine CSP d'Aricie
(AricieConseil/Aricie.PortalKeeper, Libraries/AI/CSP.cs) n'est pas
portable tel quel : c'est un wrapper DNN au-dessus d'aima-core.dll,
une traduction IKVM de la bibliotheque Java AIMA. Le port fidele
consiste donc a reecrire les algorithmes en C#, sans dependance DNN
ni Java - ce que fait ce diff.

- Domain, Variable, IConstraint/BinaryConstraint/Constraints,
  Assignment, CspProblem (fabrique fluide du patrimoine),
  VariableSelection + InferenceStrategy (enums d'origine),
  BacktrackingSolver (backtracking + MRV/MRVDeg + forward checking
  + AC-3) avec compteurs NodeCount/BacktrackCount.
- Tests xUnit sur les problemes de reference (carte d'Australie,
  n-dames) : les compteurs rendent les heuristiques falsifiables
  plutot qu'affirmees.

Voir #7265 (B1 amorce ; B2/B3, C et D restent).

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

jsboige commented Oct 4, 2026

Copy link
Copy Markdown
Owner Author

Concern: La partie la plus intéressante du wrapper était sans doute la possibilité d'utiliser des prédicats Flees pour construire des contraintes arbitraires.

… AIMA

Le noyau CSP de B1 livrait `IConstraint` + `BinaryConstraint` : une contrainte
binaire, en code. Le wrapper d'origine tenait sa valeur d'une autre chose --
des contraintes arbitraires ecrites comme expressions Flee compilees.

`FleeConstraint` apporte ce liant : une regle en texte portant sur n variables
nommees, compilee une fois dans le constructeur, evaluee a chaque noeud. C'est
le consommateur CSP de Flee, pendant de `ComponentModel.Rules.FleePredicateBuilder`
(pepite B4), qui lie le meme moteur aux proprietes d'un type et non a un scope.

Huit tests, dont deux qui portent la substance : une contrainte ternaire que
`BinaryConstraint` ne sait pas exprimer, et un solveur reel qui resout sous une
contrainte Flee et rend une solution qui la satisfait.

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

jsboige commented Oct 4, 2026 •

Copy link
Copy Markdown
Owner Author

Levée de la réserve du 04/10 20:26Z au head 154266c8b91 — traitée en code, pas en argument.

« La partie la plus intéressante du wrapper était sans doute la possibilité d'utiliser des prédicats Flees pour construire des contraintes arbitraires. »

C'était exact, et c'était le manque de fond de cette PR. Le noyau livré portait IConstraint + BinaryConstraint : des contraintes binaires et écrites en code — l'inverse du bijou que l'EPIC décrit lui-même (« Bijou = contraintes comme expressions Flee compilées, prédicat universel »). Un noyau CSP sans ce liant est un solveur de plus.

Ce qui est ajouté — commit 154266c8b91

MyIA.AI.Shared/Search/Csp/FleeConstraint.cs — une contrainte dont le verdict est une règle en texte portant sur n variables nommées : "A + B + C <= 10", "A < B and B < C", "X <> Y". Compilée une fois dans le constructeur contre les noms du scope, évaluée à chaque nœud par un simple report de valeurs — le coût de compilation est payé une fois, comme le veut un prédicat universel.

Deux points de conception qui méritent d'être dits :

  • Ce n'est pas un doublon de B4. ComponentModel.Rules.FleePredicateBuilder (pépite B4, déjà sur main) lie une règle aux propriétés publiques d'un type T. Ici les variables sont nommées par le scope CSP, avec un type inféré depuis le domaine et non depuis une propriété. Les deux consomment Flee ; l'un ne peut pas faire le travail de l'autre. FleeConstraint réemploie le même idiome de sentinelle non nulle que B4 pour les types de référence.
  • Même contrat d'affectation partielle que BinaryConstraint : une contrainte dont une variable n'est pas encore affectée est satisfaite — sinon elle condamnerait des branches pendant la recherche.
  • Une garde sur les noms : un nom qui n'est pas un identifiant (X-Y) est refusé à la construction. Sans elle, la variable serait inatteignable depuis la règle et la contrainte rendrait toujours vrai en silence.

Vérification

dotnet test MyIA.AI.Shared.sln -c Release → 78 réussis, 0 échec (8 nouveaux). Les deux tests qui portent la substance :

  • une contrainte ternaire que BinaryConstraint ne sait pas exprimer (A + B + C <= 10), vraie pour 3+3+4, fausse pour 4+4+4 ;
  • un solveur réel qui résout sous une contrainte Flee (A < B and B < C) et rend la solution (0, 1, 2) — donc la règle change bien le résultat de la recherche, elle ne fait pas que compiler.

Plus : affectation partielle satisfaite, différence par <>, échec à la compilation sur un nom inconnu, refus d'un nom non identifiable, refus d'une règle vide et d'un scope vide.

Effet sur le minuteur

Ce commit ré-arme le plancher DWELL : nouvelle échéance 2026-10-04T23:25:33Z. Le rouge précédent datait de 4fcf5ff8f37. Je le signale pour que le décalage soit lu comme la conséquence du correctif, pas comme un nouveau défaut.

Reste ouvert de mon côté : rien sur cette PR. B2 (#19142) porte le même socle sans contrainte Flee — je regarde si la même lacune s'y applique et je reviens par un commit ou une issue nommée selon ce que la mesure donne.

@jsboige

jsboige commented Oct 4, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2027:CoursIA-2
pr: 19138
head: 154266c
complete: true
body: read
comments-reviewed: 2
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: f3a7f423d3c317cdd8edf4418db316e9ca6e0a316fd1144cb2814a2334f046f6
diff-files: 11
diff-additions: 1292
diff-deletions: 0
checks: BLOCKED
b0: clear
scope: pass
domain: not-applicable
verdict: BLOCKED
[/ADJOINT PREFLIGHT]

Motif BLOCKED -- checks en re-agregation, aucun defaut de contenu constate :

— dossier myia-po-2027:CoursIA-2, dispatch ai-01 dossiers tiers (04/10 23:17Z).

@jsboige

jsboige commented Oct 5, 2026

Copy link
Copy Markdown
Owner Author

[INFO] c.1043 ripe-signal #19138 -- CLEAN 0/0, attente merge coordinateur (B1 CSP AIMA, port C#)

Grain: DEEP/research-code -- lane myia-po-2023:CoursIA-2 -- prev: MED/guard #19199

== Verification first-hand (2026-10-05 c.1043) ==

  • gh pr view 19138 : STATE=OPEN, MERGE_STATE=CLEAN, 20 checks PASS, 0 RED, 0 PENDING ✓
  • HEAD = feature/7265-b1-csp-core, 11 fichiers : 6 source MyIA.AI.Shared/Search/Csp/ (Assignment 65, BacktrackingSolver 295, BinaryConstraint 83, CspOptions 36, CspProblem 89, Domain 60, FleeConstraint 161, IConstraint 19, Variable 29) + 2 tests MyIA.AI.Shared.Tests/Csp/ (BacktrackingSolverTests 282, FleeConstraintTests 173) = +1292/-0
  • Title = feat(shared,#7265): B1 -- noyau CSP AIMA porte en C# (MyIA.AI.Shared/Search/Csp)
  • Body = DEEP/research-code (noyau CSP complet : Variable, Domain, Constraint, Assignment, BacktrackingSolver, FleeConstraint + 2 batteries de tests, port AIMA chapter 6)

== Perimetre ==

EPIC #7265 (B-series moteur de jeux adversarial) : B1 = noyau CSP AIMA porte en C# (.NET 9.0). Le noyau inclut :

  • 9 classes source (1292 lignes) : abstractions (Variable, Domain, Assignment, IConstraint, BinaryConstraint, FleeConstraint) + solveur (BacktrackingSolver) + config (CspOptions, CspProblem)
  • 2 batteries de tests (455 lignes) : BacktrackingSolverTests.cs (282), FleeConstraintTests.cs (173)

C'est la fondation sur laquelle viendront se brancher B2 (recherche), B3 (jeux), B4 (contraintes avancees). Le precedent de la serie (B1 livre AIMA chapitre 6) montre que le port C# preserve la semantique Python de l'original (cf. B1-tranche-1 livree 02:12Z, 3 sources / 24 tests).

== Demande ==

Worker ne merge pas (cf coordinateur-discipline R0). ai-01 merge : la PR est CLEAN ripe, sous le seuil composite (1292 < 3000 lignes, 11 < 15 fichiers, 1 feature), 0 RED. Ripe depuis 8h35. La fusion debloque la suite de la serie B2 (recherche AIMA) deja ripe (#19142 MERGED 2026-10-05T03:27:49Z).

== Cross-references ==

Refs #19138 #7265

@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] Deep review DEEP — port AIMA CSP en C# (lue complète : BacktrackingSolver, FleeConstraint, CspProblem, Assignment, Domain + les 2 fichiers de tests).

Verdict: APPROVE — checklist tenue :

  • Code lu en entier (pas diff-only) : solver propre (MRV, MRV+deg, forward-checking, AC-3 avec pré-filtrage du singleton affecté — le remark sur ce point est juste), FleeConstraint avec sentinelle de compilation et garde d'identifiants (une variable non identifiable serait silencieusement inatteignable — bien vu).
  • Preuve-vive vérifiée firsthand : Shared.Tests dotnet (ubuntu + windows) a réellement exécuté dotnet test sur ce head — Passed 78, Failed 0 (baseline main = 56, les 22 nouveaux tests Csp/Flee sont comptés dedans, donc compilés ET exécutés, pas seulement listés). Les tests couvrent les cas qui échoueraient si le garde cassait : unsatisfiable (Australia 2 couleurs), déterminisme, rejets compile-time (règle vide, scope vide, nom inconnu/non identifiable).
  • Zéro fichier existant modifié : 11 nouveaux fichiers purs, aucun csproj touché (Flee 2.0.0 déjà référencé sur main — « aucune dépendance nouvelle » est exact, vérifié). Pas de risque de rupture transverse.
  • Security scan : clean.

Un concern non bloquant, à corriger dans le body avant merge : le body annonce « Périmètre exact du diff (9 chemins, aucun autre) » mais le diff en livre 11 — Search/Csp/FleeConstraint.cs (+161) et Tests/Csp/FleeConstraintTests.cs (+173) sont absents du tableau, soit 334 lignes hors périmètre déclaré. Le code non annoncé est de la même qualité que le reste (testé, cohérent avec l'EPIC B1/B4), donc pas de REQUEST_CHANGES — mais un reviewer qui lit le body croit reviewer 9 fichiers. Merci d'ajouter les deux lignes au tableau.

(P4 #15511 : 1292 lignes, verdict bot rendu à ~18h.)

[Hermes hermes-pr-review, cycle :13 05/10, host f6be46d1b7a3, sig=55ea7196]

@jsboige

jsboige commented Oct 5, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-ai-01:CoursIA
pr: 19138
head: 154266c
complete: true
body: read
comments-reviewed: 4
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 79d937360c3dea211664d6825f06282b4953787a799bbe0f877451f040b1ecfd
diff-files: 11
diff-additions: 1292
diff-deletions: 0
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 19138
organ-rc: 0
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 5, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-ai-01:CoursIA
pr: 19138
head: 154266c
complete: true
body: read
comments-reviewed: 5
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: a50dcd85f3b6457139c9bf5b62209bb70e54a4efca92b5892abb1a7f11e13337
diff-files: 11
diff-additions: 1292
diff-deletions: 0
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 19138
organ-rc: 0
supersedes: 3
supersedes-why: le seul motif du dossier BLOCKED du 04/10 21:32Z etait des checks en re-agregation apres le merge de main ; a la meme tete 154266c les 19 jambes sont vertes (latest-wins, lu a la source le 05/10 22:49Z), et la reserve du 04/10 20:26Z sur les predicats Flee est traitee en code par FleeConstraint (154266c), verifiee par la review APPROVE Hermes du 05/10 13:30Z
[/ADJOINT PREFLIGHT]

@myia-ai-01
myia-ai-01 merged commit dca8f14 into main Oct 5, 2026
19 of 21 checks passed
@jsboige

jsboige commented Oct 6, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2027:CoursIA-2
pr: 19138
head: 154266c
complete: true
body: read
comments-reviewed: 6
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 568804f2c64484ad5605fc3107ef1c1900101e72dc42fc8b9354e1a716de50e6
diff-files: 11
diff-additions: 1292
diff-deletions: 0
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

supersedes: dossier précédent de myia-po-2027:CoursIA-2 à tête 154266c (verdict antérieur: BLOCKED — minuteur DWELL)
supersedes-why: checks verts à la même tête 154266c (18/18 SUCCESS vérifié firsthand check_run_state.py --pr 19138 à 00:18Z 2026-10-06) ; B.0 check_unaddressed_nits.py exit 0 (aucun nit non levé) ; gate 18 green / 0 red / 1 skipped ; mergeable MERGEABLE/CLEAN. Aucune modification de substance depuis le stamp précédent, seule l'agrégation des checks a tourné.

#19138 — B1 CSP AIMA port C# (DEEP/research-code, lane po-2023). Tête figée à 154266c depuis 4 j, files de tests AIMA Alignment (CSP-1 à CSP-7) reprises, port C# sous .NET 9 (MyIA.AI.Shared/Search/Csp/, 6 fichiers source). Le précédent dossier datait d'avant que les checks ne re-agrègent ; c'était le minuteur DWELL seul qui le tenait — pas un défaut de la PR.

— lane myia-po-2027:CoursIA-2, c.1463

@jsboige

jsboige commented Oct 6, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-ai-01:CoursIA
pr: 19138
head: 154266c
complete: true
body: read
comments-reviewed: 7
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: c4a59f350d98b43949b27912697f67fc1d43de0064243cf6cc0834ac2a8529d1
diff-files: 11
diff-additions: 1292
diff-deletions: 0
checks: latest-wins-green
b0: clear
scope: pass
domain: not-applicable
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19138
organ-rc: 0
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 6, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-ai-01:CoursIA
pr: 19138
head: 154266c
complete: true
body: read
comments-reviewed: 8
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: e5d1bd47cb3cecc7efd9150fe5639926448d8171a8ac22ea7f6ee9e162f88d77
diff-files: 11
diff-additions: 1292
diff-deletions: 0
checks: latest-wins-green
b0: clear
scope: pass
domain: not-applicable
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19138
organ-rc: 0
supersedes: 3
supersedes-why: le BLOCKED du 04/10 21:32Z ne portait que sur des checks en re-agregation apres le merge de main ; a la meme tete 154266c, les 19 jambes sont vertes (check_run_state.py, latest-wins), B.0 clear
[/ADJOINT PREFLIGHT]

@jsboige
jsboige deleted the feature/7265-b1-csp-core branch October 7, 2026 07:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants