Skip to content

fix(notebook-python,#18124): GenAI/19-OWUI prose alignee sur l'etat reel OWUI_READY - #19835

Merged
myia-ai-01 merged 2 commits into
mainfrom
fix/18124-owui19-prose-alignment
Oct 8, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
fix/18124-owui19-prose-alignment

Conversation

@jsboige

@jsboige jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python -- lane myia-po-2026:CoursIA-2 -- prev: MED/guard #19661

fix(notebook-python,#18124): GenAI/19-OWUI prose alignee sur l'etat reel OWUI_READY

Issue : #18124 (cas 2 du dossier audit 27/09, 3 notebooks dont la prose decrit un chemin que les sorties montrent saute ; 30 chemins degrades declares ; 2 cas CONFIRMED par 3 sceptiques, 1 cas CONFIRMED par ai-01 sur main).

Tranche 2/4 du dispatch ai-01 tapis central 06/10

Le dispatch ai-01 du 06/10 22:46Z (DM ai01-tapis-central-20261006-po2026-c2) demandait la file de 4 issues (#18053 + #17151 + #18064 + #13410) en multi-grain, dans l'ordre, avant tout tirage perso. Cette PR livre la tranche #18124 cas 2 (les cas 1 et 3 sont livres par po-2024 et po-2026:CoursIA respectivement).

Diagnostic first-hand

Cas 2 = MyIA.AI.Notebooks/GenAI/Texte/19_OWUI_Orchestration.ipynb :

  • cell[2] (code) teste OWUI_API_KEY = os.getenv("OWUI_API_KEY") SANS default, puis OWUI_READY = OWUI_API_KEY is not None, et affiche l'etat reel a chaque execution (OWUI_API_KEY = 'configure (masquee)' if OWUI_READY else 'ABSENT (RECOVERABLE-USER-HAND)').
  • cell[16] (markdown) affirmait en dur SOTA-OK (key provisionnee) en citant cell[2] : OWUI_API_KEY = configure (masquee), OWUI_READY = True -- ce qui est faux quand la cle est absente (etat courant sur main : OWUI_READY = False, OWUI_API_KEY = ABSENT).
  • cell[26] (markdown) repetait la meme affirmation figee : OWUI_READY = True -> SOTA-OK.

Histoire : PR #9134 (MERGED 2026-08-06, commit a6bc58e fix(genai,#8052): OWUI-19 stale RECOVERABLE-USER-HAND disclaimer -> SOTA-OK (key provisionnee)) avait fixe le disclaimer RECOVERABLE-USER-HAND -> SOTA-OK quand la cle etait provisionnee. Mais la prose est restee figee sur SOTA-OK alors que l'etat de la cle peut fluctuer. Tell c.11900 strict : situation transitoire, pas un defaut permanent.

Fix applique (markdown only)

Reformulation des cell[16] et cell[26] pour exposer les deux branches selon OWUI_READY :

  • Si OWUI_READY = True (cle provisionnee dans .env de la serie GenAI/Texte) : verdict SOTA-OK (Prong A -- l'outil OWUI est reellement appele, les sorties committées sont ses vraies sorties).
  • Si OWUI_READY = False (cle absente du .env) : verdict RECOVERABLE-USER-HAND (action user one-time : provisionner OWUI_API_KEY puis re-executer le carnet).

Le code des cell[2]/[17]/[18] est intact : os.getenv("OWUI_API_KEY") sans default, branches graceful skip defensives, pas d'erreur volontaire (regle C.1).

Conformite

Perimetre

  • 1 fichier, 35 insertions, 48 suppressions.
    • MyIA.AI.Notebooks/GenAI/Texte/19_OWUI_Orchestration.ipynb : +35/-48 (cell[16] 16->26 lignes, cell[26] reformulee 15 lignes)
  • 0 secret, 0 binaire, 0 fichier hors scope.

Refs : PR #9134 (MERGED 2026-08-06), claim epic-wide 6026859273 c.1429, CLAIMED-AMEND cmt 6049872831 c.1432, dossier audit cmt 6049867739 (ai-01 verification lot 9 candidate-delivered).

🤖 Generated with Claude Code

…eel OWUI_READY

Cas 2 du dossier #18124 (audit du 27/09 : 3 notebooks dont la prose
decrit un chemin que les sorties montrent saute). PR #9134 avait fixe
le disclaimer 'RECOVERABLE-USER-HAND' -> 'SOTA-OK (key provisionnee)'
quand la cle etait provisionnee, mais la prose des cell[16] et
cell[26] est restee sur 'SOTA-OK' en dur alors que la cle peut etre
absente (etat courant main).

Fix : reformulation des cell[16] et cell[26] pour exposer les deux
branches (OWUI_READY = True -> SOTA-OK ; OWUI_READY = False ->
RECOVERABLE-USER-HAND). La cellule [2] reste la source de verifiee
(`os.getenv('OWUI_API_KEY')` sans default, `OWUI_READY = key is not
None`).

C.1 OK (pas d'erreur volontaire, prose seule).
C.2 OK (markdown only, aucune cellule code modifiee ; outputs
preserves).
H.3 OK (pre-commit execution_count is None and not outputs non
concerne par modification markdown).

Refs: PR #9134, claim 6026859273 c.1429, CLAIMED-AMEND cmt 6049872831
c.1432.

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

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19835
head: 8fd6611
complete: true
body: read
comments-reviewed: 0
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 0985bd89275a5fcaead78e5ea2b55bf15bd7f952d1bb070203907de855e8bf1b
diff-files: 1
diff-additions: 35
diff-deletions: 48
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 19835
organ-rc: 3
[/ADJOINT PREFLIGHT]

@github-actions

github-actions Bot commented Oct 8, 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 10.9s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 7.0s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 12.3s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 13.3s
Search-01-StateSpace.ipynb ✅ SUCCESS 9.3s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 5.4s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 66.3s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 12.8s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 49.1s

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

@github-actions github-actions Bot added the consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) label Oct 8, 2026
@github-actions

github-actions Bot commented Oct 8, 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 8, 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 8, 2026

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

github-actions Bot commented Oct 8, 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 8, 2026

Copy link
Copy Markdown
Contributor

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

…ule 26

Le gate `No markdown content loss in changed notebooks` rougissait sur
cellule 26 du carnet `19_OWUI_Orchestration.ipynb` : perte 1795c -> 918c
(ratio 0.511, seuil 0.75) parce que la PR c.1432 avait supprime le H2
"## 8. Conclusion et suite" + les 4 points a retenir, ne laissant que
le paragraphe "**Limites honnetes (G.2 + SOTA Prong A).**".

Cause-racine : la reformulation d'alignement prose (c.1432) avait privilege
la concision sur la preservation de la structure markdown. Le H2 et les
points a retenir sont des **acquis pedagogiques** que le gate defend
explicitement (cf. `md-content-loss-gate.yml` + incidents fondateurs
rapportes dans CLAUDE.md section H.6).

Fix : restauration du H2 + 4 points a retenir, et conservation du
paragraphe "**Limites honnetes (G.2 + SOTA Prong A).**" reformule pour
couvrir explicitement les deux branches SOTA-OK / RECOVERABLE-USER-HAND
selon `OWUI_READY` (verdict verbatim du carnet, pas une note ajoutee en
aveugle).

Mesure post-fix :
- normalized_chars 18750 -> 19021 (+1.4 %)
- findings=0 (gate satisfait)
- ratio cellule 26 : 2233 / 2148 = 1.040 (au-dessus du seuil 0.75,
  sous le seuil over-add 1.5)

Refs : PR #19835 (c.1432), gate #113102789000, check `No markdown
content loss in changed notebooks`, issue source #18124.

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

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 8
  • 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 8, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19835
head: ccad94a
complete: true
body: read
comments-reviewed: 8
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: e9060b3f5b0b2d69a87d4644af629521383e968d9a3091d73d9aab56c5d4a695
diff-files: 1
diff-additions: 47
diff-deletions: 41
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 19835
organ-rc: 3
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 8, 2026 •

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-ai-01:CoursIA
pr: 19835
head: ccad94a
complete: true
body: read
comments-reviewed: 9
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 4996c6c65f8b8337d83296c4810da99791640aba6a0158906e02946860ded3e1
diff-files: 1
diff-additions: 47
diff-deletions: 41
checks: latest-wins-green
b0: clear
scope: pass
domain: not-applicable
verdict: READY
supersedes: 9
supersedes-why: le dossier BLOCKED precedent attestait un etat de jambes ou de levees depasse ; a la meme tete, la derivation live rend checks verts, B.0 clear
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19835
organ-rc: 0
[/ADJOINT PREFLIGHT]

Derivation live READY a la tete vive : le dossier BLOCKED anterieur attestait des jambes alors en cours ; jambes latest-wins vertes, B.0 clear, aucun thread non resolu.

@myia-ai-01
myia-ai-01 merged commit 43d5cba into main Oct 8, 2026
94 of 96 checks passed
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