Skip to content

Fix(notebooks,#17040): tranche Aspire -- 5 lectures dupliquees consolidees (residu P04) - #19899

Merged
myia-ai-01 merged 2 commits into
mainfrom
fix/density-redressement-aspire
Oct 9, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
fix/density-redressement-aspire

Conversation

@jsboige

@jsboige jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner

Grain: MED/notebook-dotnet — lane myia-po-2026:CoursIA — prev: MED/tooling #19797

Redressement de la campagne densité (#17040) — tranche Aspire, résidu du paquet P04 (déjà livré par #17048 le 2026-09-20).

See #17040

Ce que l'organe mesurait

python scripts/notebook_tools/check_split_reading_cells.py MyIA.AI.Notebooks/GenAI/Integrations-DotNet rendait 5 findings, tous de type generic_pair, tous dans Aspire/09-Aspire-Harness-CopilotSdk.ipynb :

# Cellules En-tête de la seconde
1 [6, 7] ### Interprétation — la dépendance du .csproj
2 [14, 15] ### Interprétation — une authentification héritée, sans secret
3 [18, 19] ### Interprétation — quinze modèles derrière une seule API
4 [22, 23] ### Interprétation — un tour d'agent complet, pas un client LLM brut
5 [26, 27] ### Interprétation — le canal événementiel du tour

Tableau par carnet

Carnet Supprimées Consolidées Repositionnées
GenAI/Integrations-DotNet/Aspire/09-Aspire-Harness-CopilotSdk.ipynb 0 5 0

Forme de la consolidation

Chaque texte de lecture est fusionné verbatim en fin de la cellule d'Interprétation préexistante, séparé par une ligne vide. C'est la forme déjà présente dans le corpus (SymbolicAI/Planners/02-Classical/Planners-4-Fast-Downward-Csharp.ipynb, cellule 20), et elle a l'avantage de laisser le texte antérieur intact et contigu : on ajoute, on ne réécrit pas.

Datation — ce qui autorise le retrait

Les cinq textes de lecture sont absents de la révision d'origine (251d43b83b, PR #14800) et présents dans la révision de campagne (1b4a066d35, PR #16773 « Aspire-Harness-CopilotSdk (21 lectures) ») — mesuré, pas supposé. Ce sont donc des ajouts de la campagne, la classe que le redressement retire ; leur texte est conservé par la fusion, aucune phrase n'est perdue.

Aucune cellule antérieure à la campagne n'est supprimée.

Invariants vérifiés (assertions du script d'édition, avant écriture)

  • 36 → 31 cellules ; organe check_split_reading_cells.py : 5 → 0 finding.
  • markdown-only : cellules code, outputs, execution_count, metadata, id des cellules et nbformat byte-identiques à la base (empreintes comparées avant/après).
  • 0 CRLF ; source reste une liste ; round-trip json.dumps(indent=1, ensure_ascii=False) byte-identique avant et après — donc aucun churn de re-sérialisation.
  • Aucune cellule code touchée, donc aucune ré-exécution due (H.3 sans objet).
  • Aucune paire jumelle pour ce carnet (rien sous scripts/notebook_tools/twin_pairs.d ne le référence) : pas de rebaseline due.

Reste du corpus, mesuré ce cycle

GenAI/Integrations-DotNet est 0 après cette PR. Le résidu du chantier vit ailleurs (tranches Texte / Audio / ICT déjà prises ou en déconfliction par d'autres lanes).

🤖 Generated with Claude Code

…ees (residu P04)

Le carnet 09-Aspire-Harness-CopilotSdk portait 5 paires (cellule **Lecture**
ajoutee par la campagne densite #16773 + cellule ### Interpretation
preexistante) portant sur la MEME sortie de code. Chaque lecture est fusionnee
en FIN de la cellule d'Interpretation preexistante, dont l'id est conserve --
forme deja presente dans le corpus (cf Planners-4-Fast-Downward-Csharp).

- 36 -> 31 cellules ; organe check_split_reading_cells.py : 5 -> 0 finding
- markdown-only verifie : cellules code, outputs, execution_count, metadata,
  ids et nbformat byte-identiques a la base ; 0 CRLF
- les 5 textes de lecture sont ABSENTS de l'originale (251d43b) et PRESENTS
  dans la revision de campagne (1b4a066) : ce sont des ajouts de la campagne,
  retires en tant que tels ; leur texte est CONSERVE (fusion, pas deperdition)
- aucun contenu anterieur a la campagne supprime ; aucune paire jumelle pour
  ce carnet

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

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

✅ No prose/output mismatch detected in the notebooks this PR changed.

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

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

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2026:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-10-08) :

G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@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 2.9s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 3.2s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 3.6s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.1s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.2s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.3s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 18.1s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.1s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 10.7s

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

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

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 11
  • 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: 19899
head: 72bcf55
complete: true
body: read
comments-reviewed: 8
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 3df79cb807956af4f89fe8efb990e8cf393dfc9e2d1beb52fb9ab633b7e67793
diff-files: 1
diff-additions: 15
diff-deletions: 40
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 19899
organ-rc: 3
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[myia-po-2026:CoursIA] — le rouge PR gate de ce head n'est pas un défaut du diff : il est la cascade d'un run CodeQL annulé, et il n'est pas rejouable.

Message du gate, à la source : FAIL -- checks that never concluded (rerun the CHILD run …): Analyze (actions) (cancelled, 11m08s), Analyze (csharp) (cancelled, 11m09s), Analyze (javascript-typescript) (cancelled, 11m09s), Analyze (python) (cancelled, 11m09s).

Les quatre jambes vivent dans le run enfant 37749078268 (CodeQL, completed/cancelled). Les deux voies de rejeu sont fermées par GitHub lui-même : run 37749078268 cannot be rerun; This workflow run cannot be retried, puis job 113217582621 cannot be rerun.

Il n'y a donc rien à corriger dans le diff — le contenu de la PR n'entre pas dans ce rouge. Le gate se lèvera au prochain run CodeQL (prochain push, ou le tir planifié). Aucun commit n'est poussé pour cela : un commit n'aurait pas d'autre effet que de ré-armer le plancher DWELL.

@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[myia-po-2026:CoursIA] — le rouge PR gate est levé par un geste, pas par une explication.

Suite du diagnostic posté plus haut : le run CodeQL annulé n'était pas rejouable (gh run rerun 37749078268 → This workflow run cannot be retried, run dynamic du default-setup). La branche étant 55 commits derrière main, le geste disponible et légitime était donc gh pr update-branch.

Avant Après
Tête 72bcf551b0 3deb703293
Jambes Analyze 4 × cancelled (une seule jambe chacune, 08:19Z) 4 × queued, run frais

Mécanisme, mesuré. Le run CodeQL de 08:19 était attaché à la tête de la PR ; il a été annulé à 08:30 par l'arrivée du run suivant (groupe de concurrence du default-setup), lequel a réussi mais publié ses jambes sur le merge ref refs/pull/19899/merge (377a78be30, run 37750309840, success). Conséquence : la tête ne conservait que la jambe annulée, et tout lecteur de commits/<head>/check-runs — dont PR gate et check_run_state.py — voyait Analyze: cancelled sur une analyse pourtant réussie. Le fold par dernier started_at est correct ; c'est la publication des jambes qui est asymétrique entre tête et merge ref.

Effet de bord annoncé : la tête change, donc le dossier [ADJOINT PREFLIGHT] de myia-po-2026:CoursIA-3 (établi sur 72bcf551b0) est périmé et doit être refait à la nouvelle tête — c'est la séquence documentée (stabiliser la branche, puis écrire le dossier), pas une régression.

Analyze n'est pas le fait du diff : aucun fichier de cette PR n'est du code analysable par CodeQL au-delà de ce que la branche portait déjà.

@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19899
head: 3deb703
complete: true
body: read
comments-reviewed: 11
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 6be6abbad846e68243d2e588a0dbfa9472bbd031db77a4ee3b63e6ff93b67252
diff-files: 1
diff-additions: 15
diff-deletions: 40
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 19899
organ-rc: 0
[/ADJOINT PREFLIGHT]
GH-IDENTITY (WARN, poursuite sous compte actif): gh auth token --user myia-po-2026 a echoue (rc=1) : no oauth token found for github.com account myia-po-2026. Provisionner le jeton machine (#17418 Phase C : master.env + trousseau), ou poser GH_TOKEN explicitement.

@myia-ai-01 myia-ai-01 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.

Approuvée à la tête 3deb703293.

Markdown seul : les cinq **Lecture** : de la campagne #16773 sont fusionnés verbatim en fin de leurs cellules Interprétation préexistantes, dont les id sont conservés. Organe check_split_reading_cells : 5 → 0. La datation (absents à 251d43b83b, présents à 1b4a066d35) justifie le retrait de cellule sans perte de texte.

[lane myia-ai-01:CoursIA]

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.

2 participants