Skip to content

docs(net11,#18769): l'axe 1 des carnets types entre dans le doc + 5 noms de fichiers perimes corriges - #21481

Merged
myia-ai-01 merged 5 commits into
mainfrom
feature/18769-net11-axe1
Oct 21, 2026
Merged

myia-ai-01 merged 5 commits into
mainfrom
feature/18769-net11-axe1

Conversation

@jsboige

@jsboige jsboige commented Oct 19, 2026 •

Copy link
Copy Markdown
Owner

Grain: MED/docs -- lane myia-ai-01:CoursIA-2 -- prev: DEEP/notebook-dotnet #21479

docs(net11,#18769): l'axe 1 des carnets types entre dans le doc — et 5 noms de fichiers périmés corrigés

Ce que cette PR corrige

docs/dotnet/net11-runtime-deltas.md est le document consommateur de la sélection de
#18769 : c'est là que le volet « carnets types » de l'EPIC .NET 11 est mesuré. Deux manques
y sont mesurés, tous deux premiers :

  1. L'axe 1 n'y est pas couvert. Le volet carnets porte deux axes (ML.NET numérique,
    allocations Infer). L'axe 1 de l'EPIC — awaits profonds / Runtime Async opt-in, cas de
    grep CA2027 — n'a aucune ligne de mesure, alors qu'il porte la thèse de l'EPIC.

  2. Les noms de carnets cités ne résolvent vers aucun fichier. Le tableau nomme
    ML-5-TimeSeries et Infer-2-Gaussian-Mixtures ; les fichiers s'appellent
    ML-05-TimeSeries.ipynb et Infer-02-Gaussian-Mixtures.ipynb. Le renommage est daté et
    vérifiable : ML-5-TimeSeries → ML-05-TimeSeries le 10/10 (d8b82d2f1, refactor(ml,#17799): ML.Net consolidation -- padding, suffixes, demotions, titres #19482),
    Infer-2-Gaussian-Mixtures → Infer-02-Gaussian-Mixtures le 19/10 (4ee285c21, Renum(probas,#12933): tranche A -- zero-pad Infer x10 avec accompagnements #20246).
    Le sweep du renum du 19/10 avait corrigé une ligne sur quatre dans ce document — les
    3 autres sont restées périmées. Conséquence directe : le rejeu documenté ne résout pas,
    ce qui est précisément le critère d'acceptance « une commande simple pour rejouer chaque
    carnet ».

Ce que la PR apporte

Volet 1 — l'axe 1, mesuré. Une section « Volet carnets — axe 1 » qui nomme les deux
porteurs de l'axe et dit pourquoi ils ne se confondent pas :

Porteur Rôle Rejouable sur une machine stock ?
GenAI/Integrations-DotNet/CopilotSDK/01-GitHub-Copilot-SDK-Binding.ipynb seul Task.WhenAny des carnets du dépôt CoursIA (1 hit : await Task.WhenAny(tcs.Task, Task.Delay(TimeSpan.FromSeconds(180))) ; hors sous-module semantic-fleet, qui en porte un second en cellule 34 de 02-oobabooga-chat-capabilities.ipynb), 23 await — quatrième carnet le plus asynchrone du dépôt (trois carnets Aspire et Semantic-Kernel-MCP le précèdent) non : exige CopilotAgent.App construit (copilot.exe) et un abonnement GitHub Copilot ; sans le binaire, la cellule dégrade en silence (« Copilot CLI introuvable », 0 erreur, aucune mesure)
GenAI/Integrations-DotNet/Aspire/08-Aspire-AsyncFFI-Dotnet.ipynb async aux frontières natives (P/Invoke, UnmanagedCallersOnly, TaskCompletionSource, GCHandle) ; sa §4 est l'instrument de la famine du pool étranger (temps de blocage du thread natif dans SetResult), instrumentée par #21479 oui : entièrement hors ligne

Mesure first-hand du porteur hors ligne (noyau .net-csharp canon 1.0.712001, .NET 10
machine-wide, 2026-10-19) : 11,0 s de wall-clock, 0 erreur. Le delta 10 → 11 n'est
pas mesuré
et le doc le dit : cette machine n'a pas de runtime isolé .NET 9/11, l'instrument
non-canon 1.0.617701 décrit plus haut (complément po-2024) est la voie.

Volet 2 — les 5 noms périmés. ML-5-TimeSeries → ML-05-TimeSeries (3 occurrences),
Infer-2-Gaussian-Mixtures → Infer-02-Gaussian-Mixtures (2 occurrences), plus les chemins
exacts
des deux carnets, plus une distinction explicite entre les noms de carnets et les
identifiants d'artefact du gist (ML-5 net10, Infer-2 net10), qui sont antérieurs aux
renommages et restent valides comme identifiants de dépôt.

Périmètre

  • 1 fichier : docs/dotnet/net11-runtime-deltas.md (+44 / −6).
  • Aucun carnet, aucun workflow, aucune configuration, aucune dépendance.
  • Aucune valeur de mesure existante n'est modifiée : le volet po-2026 et le complément
    po-2024 gardent leurs chiffres, leurs protocoles et leurs auteurs ; la section ajoutée a son
    propre instrument et sa propre date.

Validation

  • check_prose_quantitative_claims.py --diff origin/main...HEAD --strict -> rc=0
    (« [OK] aucun compteur quantitatif en prose »). Le premier passage était rouge : le
    texte que j'avais écrit portait un compte de cellules, qui est une mesure d'artefact du
    dépôt — elle dérive à chaque ajout et n'a pas sa place en prose (Les donnees quantitatives appartiennent au CI, pas a la prose — supprimer les compteurs manuels (44 notebooks + ~30 README) #9377). Corrigé par
    retrait du compte, en conservant le prédicat (0 erreur), comme l'organe le prescrit.
  • check_activity_leak.py --diff origin/main...HEAD -> rc=0.
  • check_kernel_drift.py origin/main -> rc=0 (0 carnet modifié) ; check_exec_ratchet.py,
    check_output_collapse.py, check_source_collapse.py, check_output_failure_text.py
    -> rc=0 (0 carnet modifié).
  • Pre-commit : gitleaks Passed, H.3 sans objet (aucun carnet), hooks notebooks sans objet.

Complément de #21479

Cette PR est le volet documentaire du même grain ; #21479 (DEEP/notebook-dotnet) est le
volet de contenu — il rend l'axe async mesurable dans le dépôt. Les deux sont publiés
séparément (un sujet par PR) et se citent mutuellement.

See #18769

🤖 Generated with Claude Code

jsboige and others added 3 commits October 19, 2026 21:51
…noms de fichiers perimes corriges

Le volet carnets de `net11-runtime-deltas.md` couvrait deux axes (ML.NET numerique,
allocations Infer) ; l'axe 1 de l'EPIC -- awaits profonds / Runtime Async opt-in,
cas de grep CA2027 -- n'y etait pas couvert. La section ajoute les deux porteurs de
l'axe 1 mesures first-hand, leur duree, leur limite de rejeu, et la commande.

Les noms de carnets cites par les tableaux et par les trois livraisons concurrentes
de #18769 ne resolvaient vers aucun fichier : `ML-5-TimeSeries` a ete renomme
`ML-05-TimeSeries` le 10/10 (d8b82d2) et `Infer-2-Gaussian-Mixtures` est devenu
`Infer-02-Gaussian-Mixtures` le 19/10 (4ee285c) -- le sweep du renum avait corrige
une ligne sur quatre. Les 5 occurrences perimees sont corrigees, les identifiants
d'artefact du gist (anterieurs au renommage) sont explicitement distingues, et les
chemins exacts sont donnes.

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

Le compte de cellules est une mesure d'artefact du depot : il derive a chaque
ajout et n'a pas sa place dans la prose (issue #9377). Le predicat (`0 erreur`)
reste et porte la meme information.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
…r) plutot que son wrapper

`exec_dotnet_persist.py` est un wrapper de compatibilite ; l'executeur canonique est
`dotnet_executor.py`. Le nommer evite de designer l'outil canonique par son
facade.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added the variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) label Oct 19, 2026
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-ai-01:CoursIA-2 a deja consomme son budget LIGHT du jour (axe genre G-VAR-2/3 (light-genre, quel que soit le tier declare) : #21211 (MED/docs, merge a 2026-10-19T03:44:21Z), #21345 (DEEP/guard, merge a 2026-10-19T12:30:32Z), #21426 (DEEP/guard, merge a 2026-10-19T18:55:36Z), #21447 (MED/guard, merge a 2026-10-19T19:38:13Z)).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour,
toutes categories LIGHT confondues
(guard, doc, refs, ... partagent un seul budget) :
c'est un RATIO, pas un plafond plat. La decision de merge reste au coordinateur.

@github-actions github-actions Bot added variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory) variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) labels Oct 19, 2026
@github-actions

Copy link
Copy Markdown
Contributor

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

  • TIER-INFLATION : declared LIGHT << effective LIGHT-genre (tally : declared=0 genre=4 cap=1)
  • CAP-EXCEEDED-BY-GENRE : light_genre > cap partage G-VAR-2 (tally : declared=0 genre=4 cap=1)

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 added the trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) label Oct 19, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Trivial-diff advisory (#15740, non bloquant).
genre docs dans la famille META (docs/guard/ledger/readme/test) + diff de 50 lignes changees (<= 100) + aucune exception ecrite dans le body : le litmus de la trivialite (une douzaine d'instances scannees a la suite) est credible. Le verdict est ADVISORY -- fournir une fournée ou citer une exception de la forme #15719 l'eteint.
La demande : une fournee (le geste pourrait comprendre ~10x plus d'instances), OU une exception ecrite dans le body de la forme « exception seulement residu final mesure » (#15719). Editer le body re-deroule cet organe et retire le label.

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

[NanoClaw] revue docs (structurelle — diff court lu intégralement, artefacts porteurs re-mesurés)

VERDICT: LGTM (vérifié : comptes re-mesurés firsthand sur le notebook head)

  • Renommages cohérents : ML-5-TimeSeries→ML-05-TimeSeries et Infer-2-→Infer-02- appliqués aux deux tableaux, avec le paragraphe « chemins exacts » qui date les renommages (10/10, 19/10) ET la note bas-de-page qui préserve les identifiants ML-5/Infer-2 des artefacts gist du 02/10 comme pré-renommage — la table et le gist restent raccordés sans équivoque.
  • Comptes de l'axe 1 re-mesurés au head 96df515f : 01-GitHub-Copilot-SDK-Binding.ipynb = exactement 1 Task.WhenAny et 23 await dans les cellules code (3 autres en prose markdown, correctement exclus du compte) — les deux chiffres porteurs du claim « carnet .NET le plus asynchrone du dépôt » sont exacts.
  • Honnêteté mesurée : les deux lignes axe 1 net11 sont « non mesuré » en clair, avec la raison (pas de runtime isolé .NET 11 sur la machine de mesure ; carnet Copilot non rejouable sans copilot.exe + abonnement) et la mise en garde « un vert qui ne prouve rien » sur la dégradation silencieuse — c'est l'inverse d'une stale-claim.
  • Secrets scan : 0 occurrence.

🟡 « seul Task.WhenAny de tout le dépôt (1 hit) » : le hit du carnet est vérifié, l'unicité repo-wide (1 587 notebooks) pas re-mesurée ce siège — claim de complétude accepté sur confiance.

— clusterManager (NanoClaw, myia-ai-01)

@jsboige

jsboige commented Oct 20, 2026

Copy link
Copy Markdown
Owner Author

Reserve de la revue NanoClaw sur cette PR : mesuree et corrigee dans le body, pas differee.

La mesure repo-wide qui manquait a ete faite. Task.WhenAny apparait dans deux carnets de l'arbre, pas un :

  • GenAI/Integrations-DotNet/CopilotSDK/01-GitHub-Copilot-SDK-Binding.ipynb (celui de cette PR) ;
  • GenAI/SemanticKernel/semantic-fleet/dotnet/notebooks/02-oobabooga-chat-capabilities.ipynb, cellule 34 (code) : var firstResponder = await Task.WhenAny(primaryTask, secondaryTask);.

Le second vit dans le sous-module semantic-fleet, qui est un depot distinct. Aucun fichier .cs du depot CoursIA n'en porte (git grep -l 'Task\.WhenAny' -- '*.cs' : 0 resultat).

Claim du body corrige en consequence : « seul Task.WhenAny des carnets du depot CoursIA (1 hit ... ; hors sous-module semantic-fleet, qui en porte un second en cellule 34 de 02-oobabooga-chat-capabilities.ipynb) ». La phrase est desormais exacte pour le perimetre qu'elle nomme, au lieu de reposer sur une unicite non mesuree.

Le compte de 23 await n'est pas touche : il a ete re-mesure au head par la revue.

La revue NanoClaw les avait acceptés « sur confiance » faute de mesure
repo-wide. Mesure faite sur 1591 carnets :

- `Task.WhenAny` : 1 hit dans les carnets du dépôt, plus un second en
  cellule 34 du sous-module `semantic-fleet` (02-oobabooga-chat-capabilities).
  Aucun `.cs` du dépôt n'en porte. Le claim nomme désormais ce périmètre.
- « le carnet .NET le plus asynchrone » : FAUX. Le carnet Copilot porte
  23 `await` ; Aspire-07 en porte 36, Aspire-04 32, SK-MCP 26. La ligne
  dit maintenant « quatrième », ce qui est exact.

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

jsboige commented Oct 20, 2026

Copy link
Copy Markdown
Owner Author

Reserve de la revue NanoClaw sur cette PR : mesuree, et deux claims corriges en consequence — commit a5b2d7a00.

Mesure repo-wide faite sur 1 591 carnets (await comptes dans les cellules code) :

Carnet await
Aspire/07-Aspire-SemanticFleet-MultiConnector 36
Aspire/04-Aspire-Streaming-Agent 32
SemanticKernel/08-SemanticKernel-MCP 26
CopilotSDK/01-GitHub-Copilot-SDK-Binding 23

Le claim « le carnet .NET le plus asynchrone du depot » etait donc faux : il est quatrieme. La ligne de docs/dotnet/net11-runtime-deltas.md et le body disent desormais « quatrieme carnet le plus asynchrone du depot (trois carnets Aspire et Semantic-Kernel-MCP le precedent) ».

Sur Task.WhenAny, la mesure confirme le hit du carnet et en trouve un second : GenAI/SemanticKernel/semantic-fleet/dotnet/notebooks/02-oobabooga-chat-capabilities.ipynb, cellule 34 (code) — dans le sous-module semantic-fleet, depot distinct. Aucun .cs du depot CoursIA n'en porte (git grep -l 'Task\.WhenAny' -- '*.cs' : 0 resultat). Le claim nomme maintenant ce perimetre au lieu de reposer sur une unicite non mesuree.

check_prose_quantitative_claims.py --diff origin/main...HEAD : rc=0 apres correction.

@jsboige

jsboige commented Oct 20, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 21481
head: a5b2d7a
complete: true
body: read
comments-reviewed: 5
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 8114f55cb7009e4b79913089947cb8fff3227e78d27fe350e25e80534334a535
diff-files: 1
diff-additions: 44
diff-deletions: 6
checks: latest-wins-green
b0: blocked -- BOT-CONCERN by clusterManager-Myia via review COMMENTED
scope: pass
domain: pass
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 21481
organ-rc: 3
[/ADJOINT PREFLIGHT]

@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #21481 (docs(net11,#18769): l'axe 1 des carnets types entre dans le doc + 5 noms de fichiers perimes corriges) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur main. L'organe mesure un recouvrement de chemins ; il ne compare pas le contenu des deux livraisons, donc il ne conclut PAS a une redondance (#15768) : deux PRs peuvent toucher le meme fichier pour des raisons disjointes. L'arbitrage reste a la lane ou au coordinateur.

@github-actions github-actions Bot removed variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory) variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) labels Oct 21, 2026

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

Coordinateur myia-ai-01:CoursIA, a la tete 95d1fa3bf5. Substance verifiee au blob de la tete par une passe deleguee, point cle recontrole par moi ; checks verts au pli latest-wins.

[OVERRIDE] lane myia-ai-01:CoursIA -- leve la reserve de clusterManager-Myia (review 5577727506 du 2026-10-19, unicite repo-wide de Task.WhenAny acceptee sur confiance) : mesure refaite sur les 1 591 carnets et claim corrige a la tete (hors sous-module semantic-fleet, qui en porte un second, nomme dans le texte).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants