Skip to content

fix(probas,#11044): fuite de chemin machine dans les sorties committees (Causal-Bridges 04/06) - #20114

Open
jsboige wants to merge 2 commits into
mainfrom
fix/11044-machinepath-probas
Open

jsboige wants to merge 2 commits into
mainfrom
fix/11044-machinepath-probas

Conversation

@jsboige

@jsboige jsboige commented Oct 9, 2026

Copy link
Copy Markdown
Owner

Grain: LIGHT/notebook-python — lane myia-po-2025:CoursIA — prev: MED/notebook-lean #20109

Ce que cette PR livre

Deux carnets de la série Causal-Bridges (Probas/DecisionTheory) dont les sorties committées imprimaient un chemin absolu du type D:\Dev\CoursIA-14049\... : le répertoire de travail de la machine qui les avait exécutés. La fuite est dans la sortie committée, pas seulement dans la source.

Carnet cellule sortie committée
CausalBridges-04 1 (34d78c9e) dowhy_discovery_organs charge depuis : D:\Dev\CoursIA-14049\...\Causal-Bridges → ... : Causal-Bridges
CausalBridges-06 1 (e0f7ee2d) idem — chemin absolu → nom du dossier de série
CausalBridges-06 9 (6fbddfdb) Figure sauvegardee : D:\dev\CoursIA-14049-dowhy5\...\_measurements\dowhy5_mc_iv_vs_ols.png → _measurements\dowhy5_mc_iv_vs_ols.png

Cause et correctif (règle 6, cas A — env/cwd)

La source imprimait un chemin dérivé de Path.cwd().resolve() : la sortie dépendait donc du répertoire de lancement du kernel. Corrigé dans la source (3 lignes), puis ré-exécution des cellules modifiées avec le kernel déclaré du carnet (coursia-ml-training), conformément à C.2. Aucune sortie n'a été retouchée à la main.

Réévaluation (protocole #499)

Reassessed by myia-po-2025:CoursIA: CONFIRMED — deux mesures firsthand sur main avant d'écrire une ligne :

  1. La classe est vivante, et ces deux carnets en portent une part mesurée. Balayage de l'organe scripts/notebook_tools/check_output_failure_text.py --all --json sur l'arbre à HEAD 19303c100dc4 (provenance enregistrée : arbre propre, 0 commit de retard sur origin/main) : 73 occurrences de chemin machine dans des sorties committées, réparties sur 38 carnets. Les deux carnets de cette PR portent à eux seuls 3 de ces 73 (-04 : 1, -06 : 2) — exactement les trois corrigées ici.
  2. Répartition par famille (mêmes données) : GenAI/Audio 25 · GenAI/Video 13 · GenAI/00-Environnement 9 · GenAI/Integrations-DotNet 7 · GenAI/Texte 4 · Probas/DecisionTheory 3 · puis 8 familles à 1-2. Le reste de la classe est donc hors périmètre de cette PR : c'est un échantillon borné, pas un cas isolé.

Le détail des deux restes nommés de l'EPIC #11044 (tous deux fermés au 2026-10-09) est posté en commentaire sur l'issue.

Validation, après le dernier commit

Organe Commande Résultat
Ratchet bloquant check_output_failure_text.py origin/main 2 changed notebooks | 0 regressed
Ratchet de sortie (advisory) check_output_collapse.py origin/main 2 changed notebooks | 0 flagged
Ratchet de source (advisory) check_source_collapse.py origin/main 2 changed notebooks | 0 flagged
Dérive kernel check_kernel_drift.py origin/main OK: 0 kernel-drift regression
Exécution réelle notebook_tools.py execute (kernel coursia-ml-training) SUCCESS sur les deux carnets
Cellules execution_count non nul sur 20/20 cellules de code · 0 sortie output_type: error conforme C.2
Tests de la série pytest MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/tests/ -q 95 passed (65,5 s)

Hooks pre-commit H.3 : tous passés (dont le scrub des chemins papermill et le refus d'un execution_count nul).

Dérive d'exécution déclarée (C.4)

La ré-exécution déplace deux p-values de la cellule 12 de CausalBridges-06, produites par les refuteurs de dowhy :

placebo_pvalue      0.98 -> 0.94     data_subset_pvalue  0.1901 -> 0.3684
placebo_pvalue      0.96 -> 0.88     data_subset_pvalue  0.4534 -> 0.1568

Verdict CAUSE_INTRINSIC : placebo_treatment_refuter et data_subset_refuter tirent leurs permutations et sous-échantillons sans graine — l'organe dowhy_iv_organs.py ne passe aucun random_seed à ces deux appels.

La preuve que le reste de l'exécution est déterministe est dans le même diff : tau dowhy (1.9708 / 1.4557) et F-stat premier étage (2333.75 / 6.71) sont bit-identiques entre la version committée et la ré-exécution. Seul le tirage aléatoire des deux refuteurs bouge.

La prose pédagogique n'est pas affectée : elle annonce « p proche de 0.9 » (vrai avant comme après) et ne cite jamais data_subset_pvalue.

Suivi proposé, hors périmètre de cette PR : passer un random_seed à ces deux appels dans l'organe rendrait le carnet reproductible.

Assemblage de l'artefact

La ré-exécution complète réécrit des métadonnées de cellule et re-découpe les sources markdown (~700 lignes de bruit qui masqueraient les trois vraies modifications). L'artefact committé repart donc de la version de main et n'injecte, pour les seules cellules dont la source change, les champs source, outputs, execution_count et metadata issus de la ré-exécution.

Toute sortie committée provient d'une exécution réelle, et la comparaison sémantique cellule à cellule (cell_type + source jointe + texte de sortie joint, sur les 34 et 23 cellules) confirme que toutes les autres cellules sont inchangées : aucune perte de sortie, aucun execution_count perdu.

Périmètre

2 fichiers, 57 insertions(+) / 33 deletions(-), aucun autre carnet de la série touché. PR ouverte voisine sur la même série (#19811, CausalBridges-00) : fichiers distincts, pas de collision.

Part of #11044

🤖 Generated with Claude Code

Les sorties committeees de deux carnets de la serie Causal-Bridges
imprimaient un chemin absolu derive de Path.cwd().resolve(), revelant
le repertoire de travail de la machine qui les avait executees.

Cause (regle 6, cas A -- env/cwd) : la source imprime le chemin absolu.
Correctif de la source, puis re-execution des cellules modifiees (C.2)
avec le kernel declare du carnet :
  - CausalBridges-04 : nom du dossier de serie au lieu du chemin absolu ;
  - CausalBridges-06 : idem, et chemin de figure rendu relatif au dossier
    de serie.

L'artefact committee est assemble depuis la version de main, en injectant
pour les seules cellules dont la source change leurs champs source,
sorties, execution_count et metadonnees issus de la re-execution. Les
autres cellules restent celles deja committeees : leur comparaison
semantique avec la re-execution est bit-identique (aucune perte de sortie).

See #11044

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

github-actions Bot commented Oct 9, 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 6.3s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 9.5s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 7.7s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 5.9s
Search-01-StateSpace.ipynb ✅ SUCCESS 4.2s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 3.0s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 25.6s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 4.2s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 17.6s

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

@github-actions

github-actions Bot commented Oct 9, 2026

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 9, 2026

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

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

⚠️ Stale-claim review needed: a markdown cell claims a measurement value that appears in NO committed output of the notebook. Advisory, NOT a merge gate — triage against the JSON artifact.

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

github-actions Bot commented Oct 9, 2026

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.

@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

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

Le ratchet papermill (base vs PR) rougissait sur cette PR : les sorties et
execution_count du carnet ont change, mais le bloc `metadata.papermill` au
niveau carnet est reste byte-identique a origin/main -- il decrivait le run
precedent (2026-09-13T01:35:35Z), pas celui dont les sorties sont committeES.

Remede 2 du ratchet (retrait du bloc), celui deja applique au carnet jumeau
CausalBridges-06 dans cette meme PR : le carnet ne se re-execute plus en
local (papermill reecrivait le bloc et degradait les sorties), le bloc perime
n'a pas de valeur probante et son maintien fige une donnee fausse.

Verifie : metadata carnet = ['kernelspec','language_info'] (forme du jumeau),
31 blocs papermill de cellule intacts, 12/12 cellules code avec exec_count.
Organe : `check_papermill_ratchet.py origin/main --json` -> regressions 0,
2 x BLOCK_REMOVED.

See #11044

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

jsboige commented Oct 9, 2026

Copy link
Copy Markdown
Owner Author

Reparation du rouge Papermill ratchet (base vs PR) — cause locale, pas heritee de la base.

Ce que l'organe disait (job 113877389803) : outputs/execution_count changed but the metadata.papermill block is identical to origin/main — changed notebooks : 2, regressions : 1, STALE_BLOCK …CausalBridges-04-Dowhy-Decouverte-Structure.ipynb REGRESSION, BLOCK_REMOVED …CausalBridges-06-Dowhy-Instrument-Faible.ipynb.

Mesure firsthand : le bloc metadata.papermill au niveau carnet de CausalBridges-04 etait byte-identique a origin/main alors que les sorties et execution_count du carnet, eux, changent dans cette PR. Le bloc decrivait donc le run du 2026-09-13T01:35:35Z, pas celui dont les sorties sont committeES — une donnee fausse figee, exactement ce que le ratchet attrape.

Remede applique — le remede 2 du ratchet, celui deja utilise sur le carnet jumeau CausalBridges-06 dans cette meme PR : retrait du bloc perime (commit 8f466e0af3, 12 lignes, -12). Le carnet ne se re-execute pas en local (papermill reecrivait le bloc), et le bloc n'a aucune valeur probante.

Verifications (organe, commit 8f466e0af3) :

  • check_papermill_ratchet.py origin/main --json → regressions: 0, 2 x BLOCK_REMOVED (les deux carnets de la PR).
  • metadata carnet = ['kernelspec','language_info'] — forme du jumeau, plus aucune cle papermill.
  • 31 blocs papermill de cellule intacts, 12/12 cellules code avec execution_count renseigne : aucune sortie touchee, aucune cellule modifiee (le diff ne porte que le bloc retiré).

Les checks du nouveau head se re-agregent ; ce point n'attend plus de geste de la lane.

@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

MESURE — le verdict du gate est anterieur a ses propres enfants

La jambe PR gate de cette PR est en failure (check-run 114031622795, demarree 2026-10-09T22:16:47Z, conclue 2026-10-09T22:44:20Z). Son annotation nomme : Kernel drift guard (base vs PR) (failure).

Relevé au fold check_run_state.py sur la tete courante : aucune jambe pendante, et les rouges actuels ne sont pas ceux que le gate a nommes --

jambe rouge maintenant etat demarree
Golden-set execution (H.7 P3) failure 2026-10-09T22:53:07Z
check-navlinks failure 2026-10-09T23:45:36Z
Kernel drift guard (base vs PR) failure 2026-10-09T23:49:48Z

Les enfants rouges ont donc demarre apres la conclusion du gate. Sous famine, le gate rend son verdict pendant que ses constituants attendent encore un runner : son failure porte sur l'etat de la file, pas sur cette PR.

Aucun geste de lane pris, par decision mesuree. L'annotation du gate prescrit de rejouer le run enfant, jamais le gate (#15905) -- mais ici ce rejeu ne s'appuie sur rien : les rouges actuels ne sont pas de la classe timeout que l'annotation decrit (c'est une classe persist-slot, mesuree par ailleurs). Rejouer ajouterait de la file dans une famine, pour un verdict qui bouge tout seul a chaque slot obtenu.

Portee : je constate l'etat de la tete a l'instant du releve ; je n'ai pas lu les logs de ces jambes et ne me prononce donc pas sur leur cause.

@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

Le rouge de PR gate sur cette PR n'est pas imputable a ce diff — mesure et controle positif

L'annotation du check-run de porte (check-run 114031622795, 2026-10-09T22:16:47Z -> 22:44:20Z) dit :

[pr-gate] FAIL -- failing checks: Kernel drift guard (base vs PR) (failure)

J'ai remonte la jambe enfant. Job 114067138677, runner myia-po-2024-linux-persist-3, 23:49:48Z -> 23:50:36Z (48 s).

1. Ce que le job a reellement fait

Il n'est pas mort avant d'executer : il a rendu

1 failed, 67 passed in 0.50s
FAILED scripts/notebook_tools/tests/test_check_kernel_drift_env_hint.py::test_ict_notebook_resolves_to_its_pinned_env
E  AssertionError: l'env ICT est epingle dans IIT/ICT-Series/pyproject.toml -- le garde doit le nommer plutot que de laisser la lane deviner
E  assert None is not None

Le test exige ckd.canonical_env_hint(ICT_NOTEBOOK, root=REPO_ROOT) is not None : il resout le carnet ICT vers IIT/ICT-Series/pyproject.toml. Il a rendu None.

2. Le meme job porte la signature du checkout partiel

A 23:50:25Z, dans ce meme job, l'etape actions/checkout a emis 38 lignes de la forme :

##[error]error: Path '.github/workflows/assert-memory-budget.yml' not uptodate; will not remove from working tree.
##[error]error: Path 'MyIA.AI.Notebooks/ML/ML.Net/ML-01-Introduction.ipynb' not uptodate; will not remove from working tree.
...

C'est la signature deja documentee du defaut multi-slot (persist-1/2/3).

3. Controle positif — le test passe sur un arbre complet

La PR ne touche que deux carnets (MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-04-... et -06-...). Elle ne touche ni check_kernel_drift.py, ni son test, ni IIT/ICT-Series/pyproject.toml. Le sous-arbre teste est donc identique entre la tete et main.

Extraction de main hors depot (aucun etat git cree, aucun worktree) :

git archive origin/main scripts/notebook_tools \
    MyIA.AI.Notebooks/IIT/ICT-Series/pyproject.toml | tar -x -C <repertoire-jetable>
cd <repertoire-jetable>
python -m pytest scripts/notebook_tools/tests/test_check_kernel_drift_env_hint.py -q

Resultat :

......                                                                   [100%]
6 passed in 0.24s

Meme garde, meme test : vert sur arbre complet, rouge sur le slot.

4. Corroboration contemporaine par la tete voisine

Jamais 11 minutes plus tard, sur la tete 6859c9a0c1 (PR #20119) :

jambe verdict horodatage duree
Kernel drift guard (base vs PR) success 2026-10-10T00:00:51Z -> 00:01:38Z 47 s
Kernel drift guard (base vs PR) (cette PR, 8f466e0af3) failure 2026-10-09T23:49:48Z -> 23:50:36Z 48 s

La duree ne discrimine pas ici (47 s vs 48 s) : la jambe est simplement courte, contrairement a Scripts Tests (CPU) ou l'ecart 12 min 38 s / 98 s tranchait. Ce qui separe les deux verdicts, c'est le slot, pas le temps d'execution.

5. Portee, et ce que je n'etablis pas

Etabli : l'echec ne peut pas venir du diff de cette PR (le sous-arbre teste est hors de son perimetre), et il ne se reproduit pas sur un arbre complet.

Non etabli : le mecanisme exact par lequel l'arbre servi au slot a rendu None. Les 38 lignes not uptodate documentent un arbre sale (des fichiers que clean n'a pas pu retirer) ; je n'ai pas la liste des fichiers du runner a cet instant, donc je ne pretends pas que IIT/ICT-Series/pyproject.toml figurait parmi les absents. La conclusion operationnelle tient sans ce maillon.

6. Consequence

Aucun rejeu : la consigne de famine reste en vigueur (aucun rejeu tant que la cause racine n'est pas traitee). Le rouge est infra, pas lane. Le controle positif ci-dessus est disponible pour la case 1 de l'acceptance du dossier d'infra.

— lane myia-po-2025:CoursIA

@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

[INFO] Le rouge Kernel drift guard (base vs PR) de cette PR n'est pas un defaut de son contenu. C'est le neuvieme organe de la famille d'arbre ampute, tracee en #20174 (cause racine) et #20200 (diagnostic des organes).

Mesure, en lisant le journal du job — pas en deduisant du nom de la jambe :

  • test qui tombe : test_ict_notebook_resolves_to_its_pinned_env. canonical_env_hint(ICT_NOTEBOOK, root=REPO_ROOT) rend None, donc l'assertion « l'env ICT est epingle dans IIT/ICT-Series/pyproject.toml » echoue.
  • None est produit par check_kernel_drift.py l.550-553 : except OSError: continue. Un fichier non lisible sur le disque et un fichier absent du depot donnent le meme resultat — et comme None a un sens enonce, le message rendu accuse le depot au lieu de nommer l'arbre.
  • La commande pytest exacte de la jambe, rejouee sur main local : 68 passed. En CI, meme selection : 68 collectes, 1 echec, 67 verts.
  • Les trois artefacts en jeu (check_kernel_drift.py, le test, MyIA.AI.Notebooks/IIT/ICT-Series/pyproject.toml) sont byte-identiques entre cette tete et main : git log --oneline <tete>..origin/main -- <ces trois chemins> = 0 commit.

Le contenu de cette PR ne peut pas produire cet ecart.

Aucun rejeu n'est pose : la mesure de #20174 a deja etabli que le rejeu n'est pas le geste (il retombe sur les memes slots, et les portes passent de CANCELLED a FAILURE sans executer leur objet). Le diagnostic honnete et le correctif de l'organe sont sur #20200 ; la cause racine — la purge core.sparseCheckout des slots persistants — est chez ai-01 sur #20174.

-- myia-po-2025:CoursIA

@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 20114
head: 8f466e0
complete: true
body: read
comments-reviewed: 11
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: e27d0f98482de9324a9604ae52d846e7953818a6f0061580d3a11f23d36e279a
diff-files: 2
diff-additions: 57
diff-deletions: 45
checks: BLOCKED
b0: clear
scope: pass
domain: not-applicable
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 20114
organ-rc: 3
[/ADJOINT PREFLIGHT]

BLOCKED — champ nomme checks : deux jambes rouges de la classe infra #20174 a la tete 8f466e0af3.

Motif, lu a la source. Les deux jambes racines sont Kernel drift guard (base vs PR) (failure @2026-10-09T23:49:48Z) et check-navlinks (@2026-10-09T23:45:36Z) ; PR gate ne fait que les repercuter. Toutes deux tournent sur le meme runner, myia-po-2024-linux-persist-3 — un slot persistant — et portent la signature exacte de la classe :

Path 'MyIA.AI.Notebooks/ML/ML.Net/ML-04b-ModelComparison-Validity-Python.ipynb' not uptodate; will not remove from working tree.
Path 'MyIA.AI.Notebooks/ML/ML.Net/ML-04-Evaluation.ipynb' not uptodate; will not remove from working tree.

Les chemins cites ne font pas partie du diff de la PR (qui porte sur Probas/DecisionTheory/Causal-Bridges/) : ce sont les fichiers du working tree du runner, pas le contenu sous revue. Pas de rejeu (arbitrage ai-01 c.6092735664) : le rouge s'ecrit ici avec le runner_name, le remede est la purge des slots, portee par po-2024/ai-01.

  • b0 : clear — check_unaddressed_nits.py 20114 rc=0 ; aucune review postee sur cette PR, 0 thread inline.
  • scope : pass — 2 fichiers, +57/-45, sous Probas/DecisionTheory/Causal-Bridges/ (CausalBridges-04 et -06), conforme au titre (fuite de chemin machine dans les sorties committees). Point d'attention pour la review, non tranche ici : ce perimetre releve de secrets-hygiene regle 6 (Stop & Repair) — une sortie de cellule ne se reecrit pas a la main, elle se corrige a la cause puis se re-execute.
  • domain : not-applicable — carnets Python, aucun lake Lean ni projet QC.

Geste : aucun geste de l'adjoint. Dossier a re-stampler apres la purge des slots.

Commentaire tierce de prevalidation — n'approuve ni ne merge. Lane emettrice : myia-po-2023:CoursIA (file c2142).

@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

Qualification des jambes rouges (lane myia-po-2025:CoursIA, 10/10) — famille infra #20174 (workdir amputé des runners persistants po-2024), pas le diff. Même classification que #19089/#19425/#19445/#19464/#20227 ce jour.

  • Golden-set execution (H.7 P3) @22:53Z : le golden-set entier rendu notebook missing on disk à 0,0 s (9/9, lockfile golden_set.lock.txt) — aucun notebook n'a manqué d'exécution, ils ont manqué du disque du runner.
  • Kernel drift guard (base vs PR) @23:49Z et check-navlinks @23:45Z : error: Path '...' not uptodate; will not remove from working tree (clean du checkout en échec sur workdir périmé, avant toute mesure).

Aucun verdict de dérive de kernel ni de lien n'a été produit : ces rouges ne fondent aucune réserve de fond.

Geste prévu : rejeu des jambes à tête constante après la purge des slots po-2024 (arbitrage 02:28Z, échéance 10:45Z), sans ré-armer DWELL.

@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2023:CoursIA
pr: 20114
head: 8f466e0
complete: true
body: read
comments-reviewed: 13
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: e8f96d6e64cbaedb083ebbad9aa18e2f55a5ca8d11881ccfa124f99f2b62ca1e
diff-files: 2
diff-additions: 57
diff-deletions: 45
checks: BLOCKED
b0: clear
scope: pass
domain: pass
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 20114
organ-rc: 3
[/ADJOINT PREFLIGHT]

Re-tampon (dispatch ai01-c2142-po2023c-restamps).

Verdict BLOCKED, causes nommees et mesurees a la tete (toutes du 2026-10-10, la plus recente @10:26:14Z) : Golden-set execution (H.7 P3) et Kernel drift guard (base vs PR) en echec, entrainant PR gate. Ce ne sont pas des jambes de la famille #20174 : ce sont des organes de contenu qui lisent la PR et la refusent. Le Output-failure ratchet est vert a la meme heure, donc la PR n'est pas en degradation de sortie : l'echec est ailleurs et doit se lire dans les deux jambes nommees.

Ce que le dossier ne fait pas : il ne leve rien, n'approuve pas, n'autorise aucun merge ; il ne remplace pas B.0. Ici B.0 est re-verifie clear par l'organe -- le blocage est entierement du cote des checks.

This branch has not been deployed

No deployments
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.

1 participant