Skip to content

fix(vibe): g64-search-14 — App-5-Timetabling (claims MiniZinc fabriqués, définition fausse) - #17075

Closed
jsboige wants to merge 2 commits into
mainfrom
wt/vibe-g64-search-14
Closed

jsboige wants to merge 2 commits into
mainfrom
wt/vibe-g64-search-14

Conversation

@jsboige

@jsboige jsboige commented Sep 20, 2026 •

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python — lane myia-po-2025:CoursIA — prev: MED/notebook-python #17067

Grain g64-search-14 — App-5-Timetabling + CSP-3-Advanced-Csharp

5 défauts/35 lectures, dont 2 claims MiniZinc entièrement fabriqués contredits par l'imprimé du notebook lui-même.

App-5-Timetabling (47→70 cells, densité 1200→1248)

  • CLAIM FABRIQUÉ ×2 : « cette cellule exécute la résolution MiniZinc directement depuis le code Python en utilisant l'API appropriée » et « cette cellule présente une alternative à MiniZinc… générant un tableau comparatif » — or le notebook imprime « MiniZinc non installe (binaire minizinc absent du PATH) », et les deux cellules définissent des visualisations (vue par enseignant visualize_teacher_schedule, heatmap des salles visualize_room_utilization). Réécrites ancrées sur le rôle réel des cellules + l'imprimé d'échec.
  • DÉFINITION FAUSSE : « trous enseignants (créneaux où un enseignant a plusieurs cours simultanément) » — cela décrit un conflit ; un trou est un créneau inoccupé entre deux cours d'un même enseignant. Corrigée, avec l'ancrage : glouton 1 trou, CP-SAT 0.
  • SURGÉNÉRALISATION : « les solutions trouvées » à zéro trou — seule CP-SAT a 0 trou ; le glouton rend 1 trou et entasse ses 8 cours sur le seul lundi ([8, 0, 0, 0, 0] imprimé). Distinction valide ≠ qualité égale ajoutée.
  • Lecture vide du tableau comparatif ancrée verbatim : trous 1/0, matin 75 %/100 %, écart-type jours 3,20/1,50, temps 0,07/32,5 ms.
  • 1 filler trivial supprimé (« Ce notebook illustre CSP. »).

CSP-3-Advanced-Csharp (26→37 cells, densité 1214 — inchangé)

11/11 lectures exactes verbatim : Sudoku 72 ms (grille 4 2 1 3…), Cumulative 76 ms makespan 9 sur [3,4,2,5] cap 2 (instance distincte du twin Python : makespan 6 sur [3,2,4,2]), TSP 17 ms coût 18 tour 0→1→3→4→2→0, Table 2 ms HDD+16GB+750W (3 tuples, 1 rendue), LNS it 0 à 1 ms, Réification 5 ms x=0 y=1, plage mesurée 1-76 ms. 0 défaut, fichier inchangé.

Note pour la 4ᵉ synthèse : ce C# a des sorties texte et est propre, alors que le C# de g62 (texte aussi) portait 4 défauts — l'hypothèse « modalité de sortie ⇒ propreté » (g60) ne tient pas ; la variance est par run de génération.

Contrôles (6/6)

C1 multiset 0 cellule base perdue (47/47, 26/26) · C2 anti-dup 4 niveaux 0 · traçabilité verbatim de chaque chiffre cité · densités 1248/1214 ≥ 1200 · scan newlines CLEAN (les 2 fichiers) · git status = le notebook modifié.

Base d319c41d3 (ancêtre origin/main vérifié). Grain: g64-search-14, prev #17067.

🤖 Generated with Claude Code

jsboige and others added 2 commits September 20, 2026 08:32
…5-Timetabling et CSP-3-Advanced-Csharp

- App-5-Timetabling.ipynb: densite 887 -> 1200 (19 lectures ajoutees)
- CSP-3-Advanced-Csharp.ipynb: densite 903 -> 1214 (10 lectures ajoutees)
- Lectures explique resultats des cellules DEMONSTRATION executees
- Respecte garde-fous editoriaux: UTF-8, source liste, markdown-only, pas re-execution

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
…qués, définition fausse)

App-5-Timetabling (47→70, densité 1200→1248) :
- CLAIM FABRIQUÉ ×2 : une lecture affirmait « exécute la résolution
  MiniZinc directement depuis le code Python via l'API appropriée » et une
  autre « présente une alternative à MiniZinc… générant un tableau
  comparatif » — l'imprimé du notebook dit « MiniZinc non installe (binaire
  absent du PATH) » et les deux cellules définissent des VISUALISATIONS
  (vue par enseignant, heatmap des salles). Réécrites ancrées sur ce que
  les cellules font réellement + l'imprimé d'échec MiniZinc.
- DÉFINITION FAUSSE : « trous enseignants (créneaux où un enseignant a
  plusieurs cours simultanément) » — c'est un conflit ; un trou est un
  créneau inoccupé entre deux cours. Corrigée + ancrage (glouton 1 trou,
  CP-SAT 0).
- SURGÉNÉRALISATION : « les solutions trouvées » à zéro trou — seule la
  solution CP-SAT a 0 trou (glouton : 1 trou, 8 cours sur le seul lundi
  [8,0,0,0,0]) ; distinction valide ≠ qualité égale ajoutée.
- Lecture vide du tableau comparatif ancrée verbatim (1/0 trous, 75 %/100 %
  matin, 3,20/1,50 std, 0,07/32,5 ms).
- 1 filler trivial supprimé (« Ce notebook illustre CSP. »).

CSP-3-Advanced-Csharp : 11 lectures, toutes vérifiées exactes verbatim
(72/76/17/2/1/5 ms, makespan 9 [3,4,2,5] cap 2 distinct du twin Python,
TSP cout 18 tour 0→1→3→4→2→0, Table 3 tuples/1 rendue, LNS it 0, x=0 y=1)
— 0 défaut, inchangé. NOTE : C# à sorties TEXTE propre ici alors que le
C# de g62 (texte aussi) avait 4 défauts — l'hypothèse « sorties images ⇒
grain propre » (g60) ne tient pas par modalité de sortie ; variance par run.

Contrôles 6/6 : C1 0 perdue (47/47, 26/26), C2 dup 0, traçabilité verbatim,
densités 1248/1214, scan newlines CLEAN, git status = 1 notebook.

Grain: MED/notebook-python -- lane myia-po-2025:CoursIA -- grain g64-search-14 (densite #13410) -- prev: MED/notebook-python #17067

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions github-actions Bot added the variation-tag-missing PR sans tag Grain: <TIER>/<GENRE> (variation-protocol) label Sep 20, 2026
@github-actions

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 Sep 20, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

❌ 1/8 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ❌ rmillExecutionError:

Exception encountered at "In [1]":

ModuleNotFoundError Traceback (most recent call last)
Cell In[1], line 2
1 # Configuration : imports et graine aléatoire
----> 2 import numpy as np
3 import pandas as pd
4 import matplotlib.pyplot as plt

ModuleNotFoundError: No module named 'numpy'

| 7.0s |
| 2.2-Descente-de-gradient.ipynb | ❌ tions.PapermillExecutionError:

Exception encountered at "In [1]":

ModuleNotFoundError Traceback (most recent call last)
Cell In[1], line 2
1 # Imports et configuration generale
----> 2 import numpy as np
3 import pandas as pd
4 import matplotlib.pyplot as plt

ModuleNotFoundError: No module named 'numpy'

| 5.1s |
| 2.3-Regression-lineaire-logistique.ipynb | ❌ rmillExecutionError:

Exception encountered at "In [1]":

ModuleNotFoundError Traceback (most recent call last)
Cell In[1], line 2
1 # Configuration : imports et graine aleatoire
----> 2 import numpy as np
3 import pandas as pd
4 import matplotlib.pyplot as plt

ModuleNotFoundError: No module named 'numpy'

| 2.9s |
| 2.4-Arbres-Forets-Ensembles.ipynb | ❌ illExecutionError:

Exception encountered at "In [1]":

ModuleNotFoundError Traceback (most recent call last)
Cell In[1], line 2
1 # Configuration et imports pour le notebook 2.4
----> 2 import numpy as np
3 import pandas as pd
4 import matplotlib.pyplot as plt

ModuleNotFoundError: No module named 'numpy'

| 4.0s |
| Search-01-StateSpace.ipynb | ❌ rmillExecutionError:

Exception encountered at "In [1]":

ModuleNotFoundError Traceback (most recent call last)
Cell In[1], line 5
2 import sys
3 sys.path.insert(0, '..')
----> 5 import numpy as np
6 import networkx as nx
7 import matplotlib.pyplot as plt

ModuleNotFoundError: No module named 'numpy'

| 4.4s |
| SL-1-LogicalLearning.ipynb | ✅ SUCCESS | 10.7s |
| rl_4_multi_armed_bandits.ipynb | ❌ -------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
Cell In[1], line 4
2 warnings.filterwarnings("ignore", message=".This figure includes Axes.", category=UserWarning)
3 warnings.filterwarnings("ignore", message=".tight_layout.", category=UserWarning)
----> 4 import numpy as np
5 import matplotlib
6 import matplotlib.pyplot as plt

ModuleNotFoundError: No module named 'numpy'

| 6.2s |
| GameTheory-04c-NashExistence-Python.ipynb | ❌ e error
papermill.exceptions.PapermillExecutionError:

Exception encountered at "In [1]":

ModuleNotFoundError Traceback (most recent call last)
Cell In[1], line 1
----> 1 import numpy as np
2 import matplotlib.pyplot as plt
3 from typing import Callable, Tuple, List

ModuleNotFoundError: No module named 'numpy'

| 4.8s |

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

@github-actions

Copy link
Copy Markdown
Contributor

Grain tag obligatoire (#10045, bloquant).

Grain tag absent (no Grain: / in body).

Pour passer ce gate, le body doit porter en tete une ligne de la forme :

Grain: <DEEP|MED|LIGHT>/<genre> -- lane <machine:workspace> -- prev: <TIER>/<GENRE> #<PR>

Le <genre> doit figurer dans l'enumeration §1 de variation-protocol.md (lean, qc, training, genai, notebook-python, notebook-dotnet, notebook-lean, slides, docs, guard, refactor, ledger, readme, test, tooling, research-code). Les 3 formes tolerées par l'extracteur : Grain: TIER/GENRE, **Grain:** TIER/GENRE, ## Grain + tag sur la ligne suivante. La lane doit suivre le format <machine>:<workspace> (cf. lane-claim-protocol.md).

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

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

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

@jsboige

jsboige commented Sep 21, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 17075
head: 00192fc
complete: true
body: read
comments-reviewed: 5
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: a4240c1ea484a70b4b1490bc3f100dacacbcaa634bc977bc80e0b2ea791ce33a
diff-files: 2
diff-additions: 240
diff-deletions: 11
checks: BLOCKED
b0: clear
scope: pass
domain: pass
verdict: BLOCKED
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Sep 21, 2026

Copy link
Copy Markdown
Owner Author

[SECRETARY] PR sans tag Grain: — proposition d'ajout pour le porteur

Tell c.21 (seance 2026-09-21, par secretaire myia-po-2026:CoursIA-3) : scripts/check_adjoint_prevalidation.py ligne 116 definit GRAIN_LANE_RE = re.compile(r"Grain:[^\n]*?\blane\s+...") qui cherche UNIQUEMENT dans le body de la PR. Cette PR n'a pas de tag Grain: ... lane <machine:workspace> -- ... lisible dans son body — c'est le pattern que les organes (merge-gate, variation_adjacency_guard) utilisent pour attribuer la PR a une lane.

Effet : la PR est invisible aux gardes de merge (le merge-gate ne peut pas verifier l'adjacence G-VAR-3 ni la qualite du grain) et reste imputable a aucune lane — un lecteur ne sait pas qui contacter sur cette PR.

Tag suggere (a poser par le porteur sur la 1re ligne du body, en edit, sans amend du contenu technique) :

Grain: MED/notebook-python — lane myia-po-2026:CoursIA — prev: MED/notebook-python #17028

(Adapte selon ta lane reelle ; le format canonique est documente dans .claude/rules/variation-protocol.md §1 — TIER DEEP/MED/LIGHT, GENRE dans l'enumeration CLOSE.)

Action attendue : poser le tag en edit du body (1ere ligne) — un commit vide ou un amend suffirait. Alternative : fermer la PR si elle est obsolete. Le secretaire peut poster un dossier READY des que le tag est en place (volet 3 DM ai-01 msg-20260921T124123-vt2g3r).

Trace : Tell c.566 bis strict — sans tag, pas de garde, pas de dossier possible.

— secretaire myia-po-2026:CoursIA-3

@myia-ai-01

Copy link
Copy Markdown
Collaborator

Fermée au titre du veto #17040 (campagne de densité #13410 gelée). Face à main, cette PR ajoute des cellules de lecture en solde net. La lane porteuse a mesuré ce solde le 23/09, et ai-01 l'a recoupé sur trois PRs du lot (#17042, #17085, #17235).

Elle avait échappé au filtre du gel parce que ni son titre ni son body ne citent #13410 : c'est un relais g-XX de la campagne.

La branche est conservée, donc la PR peut être rouverte. Une lecture qui apporte une information qu'aucune cellule existante ne porte peut revenir hors campagne, réécrite et placée juste après sa cellule (point 4 de #17040). Les cellules que la PR modifie sans en ajouter peuvent revenir sous la forme d'une PR de correction pure.

@myia-ai-01 myia-ai-01 closed this Sep 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

variation-tag-missing PR sans tag Grain: <TIER>/<GENRE> (variation-protocol)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants