You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Gateway Z3 Sudoku : démarrage dépendant du cwd, et un seed raté fait pendre l'endpoint au lieu d'échouer #22439
Le service Kernel Gateway du carnet phare Z3 Sudoku (Z3-API/gateway/) a été livré par #21101 et vérifié sur main le 2026-10-25 : avec le dossier de démarrage documenté, POST /sudoku/solve rend sat correctement. Deux fragilités mesurées le même jour, qui ne sont pas dans les critères du pli 0 mais qui coûtent à l'exploitation.
a) Démarrage dépendant du répertoire courant
La cellule 1 du carnet de service fait sys.path.insert(0, os.getcwd()) et compte trouver z3_sudoku_core.py dans le dossier courant. Lancé depuis la racine du dépôt avec un seed_uri absolu (forme naturelle quand on n'est pas dans le dossier), le kernel meurt au seed :
RuntimeError: ('Error seeding kernel memory', {... 'ename': 'ModuleNotFoundError',
'evalue': "No module named 'z3_sudoku_core'" ...})
Le README documente un seed_uri relatif, donc un démarrage depuis le dossier — le contrat est respecté à la lettre. Mais le service casse pour quiconque le lance autrement, y compris un orchestrateur ou un script de CI qui passerait un chemin absolu.
b) Un seed raté fait pendre l'endpoint au lieu d'échouer
Dans l'état ci-dessus, la mesure est :
Requête
Réponse
GET /_api/spec/swagger.json
200 (le descripteur est servi)
POST /sudoku/solve
aucune réponse, expiration du client après 90 s
GET /api
404 (attendu en v3)
Le service se présente donc comme démarré — il enregistre bien la ressource et publie son OpenAPI — pendant que le pool de kernels est vide. Un client ne peut pas distinguer un kernel mort d'un calcul long, et l'opérateur ne voit la cause que dans la trace Tornado du journal.
Ce qui serait tenu pour résolu
Démarrage indépendant du cwd : soit le chemin du cœur est résolu explicitement (variable d'environnement ou argument du lanceur), soit le README impose le dossier de façon non ambiguë et le lanceur le vérifie. Le critère : lancer le service depuis la racine du dépôt avec un seed_uri absolu fonctionne.
Échec rapide et lisible quand le seed rate : plus de pendaison. Le service doit répondre une erreur (503 ou équivalent) ou refuser de se déclarer disponible ; la cause (kernel absent) doit apparaître dans la réponse ou, à défaut, dans un message de démarrage explicite.
Une ligne de rejeu dans le README pour les deux cas : démarrage nominal, et ce que voit l'opérateur si le seed échoue.
Le second point est le plus utile : un service qui pend est plus coûteux qu'un service qui refuse.
Hors scope
Aucune modification du carnet pédagogique Z3-02-Sudoku-Python.ipynb — le correctif vit dans Z3-API/gateway/ et, si besoin, dans le lanceur documenté.
[CLAIMED] lane myia-po-2028:CoursIA -- paths: MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/gateway/** -- lanceur avec preflight : demarrage independant du repertoire courant, et echec rapide et lisible quand le coeur est absent (au lieu de la pendaison mesuree). Issue ouverte par cette lane apres verification de #21100.
Portee : run_gateway.py (neuf), son test, README.md du dossier gateway, et la cellule de preparation du carnet de service si l'env du lanceur doit y etre honoree. Aucun carnet pedagogique touche.
[DELIVERED] lane myia-po-2028:CoursIA -- PR #22444
Lanceur gateway/run_gateway.py + preflight : demarrage independant du
repertoire courant, refus explicite (rc=2) au lieu de l'etat ou swagger rend
200 et POST /sudoku/solve ne repond jamais.
Preuves dans le body de la PR : 21/21 tests, e2e depuis un repertoire etranger
(sat 76,782 ms / invalid 0,011 ms / unsat 29,753 ms, tous 200), controle negatif
rc=2 avec les deux manques nommes, carnet re-execute (2/2 cellules, sorties
reelles, aucun chemin de machine).
Un lancement anterieur a rendu un POST sans reponse ; non reproduit sur les 4
lancements propres suivants, cause non isolee -- consignee dans le body.
[DELIVERED] lane myia-po-2028:CoursIA -- PR #22555 : coeur resolu hors du dossier courant (env, cwd, puis parents sur 8 niveaux), import capture au lieu de tuer le kernel, lanceur avec pre-vol + sonde (codes 0/2/3/4), README avec le rejeu des deux cas.
Mesures : avant POST sans reponse (rc=28 apres 15,0 s) ; apres reponse structuree en 1,61 s ; depuis la racine du depot, --check rend status=sat en 78,7 ms (rc=0). 12 tests du coeur verts, carnet re-execute.
Activity
jsboige commentedon Oct 25, 2026
[CLAIMED] lane myia-po-2028:CoursIA -- paths: MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/gateway/** -- lanceur avec preflight : demarrage independant du repertoire courant, et echec rapide et lisible quand le coeur est absent (au lieu de la pendaison mesuree). Issue ouverte par cette lane apres verification de #21100.
Portee :
run_gateway.py(neuf), son test,README.mddu dossier gateway, et la cellule de preparation du carnet de service si l'env du lanceur doit y etre honoree. Aucun carnet pedagogique touche.Grain: MED/tooling -- lane myia-po-2028:CoursIA
jsboige commentedon Oct 25, 2026
[DELIVERED] lane myia-po-2028:CoursIA -- PR #22444
Lanceur
gateway/run_gateway.py+ preflight : demarrage independant durepertoire courant, refus explicite (rc=2) au lieu de l'etat ou swagger rend
200 et
POST /sudoku/solvene repond jamais.Preuves dans le body de la PR : 21/21 tests, e2e depuis un repertoire etranger
(sat 76,782 ms / invalid 0,011 ms / unsat 29,753 ms, tous 200), controle negatif
rc=2 avec les deux manques nommes, carnet re-execute (2/2 cellules, sorties
reelles, aucun chemin de machine).
Un lancement anterieur a rendu un POST sans reponse ; non reproduit sur les 4
lancements propres suivants, cause non isolee -- consignee dans le body.
jsboige commentedon Oct 25, 2026
[CLAIMED-AMEND] lane myia-po-2028:CoursIA -- paths: MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/gateway/z3-sudoku-service.ipynb, MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/gateway/README.md, MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/gateway/run_z3_sudoku_gateway.py
Reprise du grain, defauts a et b reproduits de premiere main avant tout fix (voir PR a venir pour les mesures).
jsboige commentedon Oct 25, 2026
[DELIVERED] lane myia-po-2028:CoursIA -- PR #22555 : coeur resolu hors du dossier courant (env, cwd, puis parents sur 8 niveaux), import capture au lieu de tuer le kernel, lanceur avec pre-vol + sonde (codes 0/2/3/4), README avec le rejeu des deux cas.
Mesures : avant POST sans reponse (rc=28 apres 15,0 s) ; apres reponse structuree en 1,61 s ; depuis la racine du depot, --check rend status=sat en 78,7 ms (rc=0). 12 tests du coeur verts, carnet re-execute.
Merge origin/main into fix/22439-gateway-launcher