Repository navigation
Refactor(genai,#24197): hub Integrations-DotNet declare -- EFCore absorbe a la racine - #24338
Conversation
…orbe a la racine Cas A de l'audit #24197 pour le hub .NET GenAI (Integrations-DotNet) : - EFCore/ (mono-carnet, sans projet compagnon, sans README) est absorbe a la racine du hub, soldant la promesse d'absorption de PR #14431 dont le titre "EFCore+CopilotSDK -> Integrations-DotNet/" n'avait fait que creer le dossier ; - le hub gagne son README index manquant (les 5 trajectoires, liaisons vers chaque dossier et vers le notebook EF Core a la racine) ; - CopilotSDK/ et Scrutor/ (carnet + projet .NET compagnon) declarent leur raison de niveau en une phrase (le projet qu'ils executent vit a cote) ; - la note d'arborescence de GenAI/README.md (au futur, "repertoire pas encore cree sur main") est remise a l'etat presente. 6 references re-pointees (quarto, docs/curriculum/genai, baseline de densite, registre des axes, README racine) ; catalogue genere laisse byte-identique a main (regeneration par l'automatisation, chore #24283). See #24197 · Part of #10473 Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible)
Pinned lockfile: |
|
✅ No prose/output mismatch detected in the notebooks this PR changed. Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
✅ No unanchored measurement claim detected in the notebooks this PR changed. Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
✅ 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 |
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: LGTM (vérifié: rename cohérent — arbre au head sans EFCore/, 6/6 références à l'ancien chemin migrées, clé pedagogy_density_baseline.json préservée) — 1 🟡 non bloquante
[NanoClaw] structural review — CoursIA #24338, head 03af8b793749bacb645fd61bd7fb7fa82fcce56d, 10 f +58/−8 (hub Integrations-DotNet)
Ce que j'ai lu
Le fichier neuf porteur (Integrations-DotNet/README.md, +31/−0, lu en entier), les deux README de dossier neufs (CopilotSDK/README.md +9, Scrutor/README.md +10), les diff complets du carnet renommé (+2/−2) et des quatre fichiers d'index à une ligne, et le patch d'une ligne de Aspire/distilled-axes-registry.md. Les sorties commises du carnet ont été extraites (texte seul, empreintes pour le reste — aucun JSON brut, aucun base64).
1. Le rename est cohérent — mesuré, pas supposé
- Arbre récursif au head
03af8b79:Integrations-DotNet/01-EFCore-Requetes-Compilees.ipynbest à la racine du hub, et il n'existe plus de dossierEFCore/. - Oracle « qui cite encore l'ancien chemin sur
main» (code search GitHub) : exactement 6 fichiers — le carnet,README.mdracine,docs/curriculum/genai.md,Aspire/distilled-axes-registry.md,_quarto.yml,scripts/notebook_tools/pedagogy_density_baseline.json. La PR touche les six. Zéro référence périmée laissée derrière. - Le piège classique d'un rename est évité : la clé de
pedagogy_density_baseline.jsona bien été migrée (…/EFCore/01-EFCore-Requetes-Compilees.ipynb→…/01-EFCore-Requetes-Compilees.ipynb, valeur1397.0inchangée). Une clé oubliée aurait silencieusement sorti le carnet de la porte densité — faux vert invisible en CI. Ici la couverture est conservée. - Les deux éditions du carnet sont exactement les liens relatifs que le déplacement casse :
../Aspire/distilled-axes-registry.md→Aspire/distilled-axes-registry.md, et la mention de chemin dans la prose (…/EFCore/→ hub racine). Rien d'autre n'a bougé dans le carnet : pas d'output retouché, pas de cellule déplacée.
2. La règle de niveau du hub est explicite et tenue
Le README neuf énonce la règle — « un binding sans projet compagnon vit à la racine du hub, un binding dont le carnet exécute un projet .NET réel garde son dossier » — puis l'applique de façon vérifiable : CopilotSDK/ garde son dossier et le README dit pourquoi (CopilotAgent.App/, présent dans l'arbre), Scrutor/ garde le sien (ScrutorLab/, 5 fichiers présents). EF Core est absorbé à la racine parce qu'il n'exécute qu'une librairie, et le README le dit dans la ligne même du tableau. C'est une justification de niveau, pas une rationalisation a posteriori : les trois dossiers restants sont exactement ceux qui portent un projet compagnon.
3. 🟡 Valeur re-citée sans ancrage : 2,78× dans un fichier neuf, alors que le carnet commite 2,93x
Le README neuf écrit (l. 17) : « EF.CompileQuery mesuré 2,78× ». Or les sorties commises du carnet au head portent :
requete compilee : mediane 103664 ticks
ratio directe/compilee : 2,93x
Le 2,78 provient de Aspire/distilled-axes-registry.md (l. 26, texte pré-existant que cette PR n'édite que pour le chemin) : ce n'est donc pas une valeur inventée par la PR, c'est une valeur périmée re-propagée dans un fichier neuf. La porte densité ne l'attrape pas — elle scanne la prose des carnets, pas les README. Le chiffre est d'autant plus fragile que le carnet lui-même accompagne sa mesure d'une lecture honnête (gain relatif, absolu en microsecondes, réservé aux hot paths) ; un 2,78× nu dans un index perd cette nuance.
Correctif d'une ligne : écrire 2,93× (la valeur commise), ou retirer le chiffre du tableau et laisser la ligne du registre le porter. Non bloquant pour un refactor de rangement, mais c'est exactement la classe « valeur sans ancrage » que l'audit de corpus traque depuis des semaines — autant ne pas l'installer dans un fichier qui n'en portait pas.
Ce que je n'ai pas vérifié
- Le rendu Quarto du nouveau README et du carnet déplacé : j'ai vérifié que
_quarto.ymlpointe le nouveau chemin, pas que la page se construit (le checkValidate Quarto build (PR)n'était pas terminé à mon relevé). - Le contenu des deux README de dossier au-delà de leur raison de niveau (ils sont courts et factuels au head).
Gates
Au head 03af8b79 : tous les checks conclus sont verts (valid-validate, Golden-set H.7 P3, OrphanApps build ×2, papermill/kernel/exec-sequence ratchets, gitleaks ×2, perimeter review guard, check_notebook_link_render, _quarto.yml freshness, organes advisory…). Étaient encore pendants à mon relevé : Always-on guards -- 18 organes, PR gate, Scripts Tests (CPU), qc-mcp-lite suite, math-render, cycle_time — à re-lire avant merge, mais aucun rouge organique.
— NanoClaw (myia-ai-01) [review 2026-11-03 00:5xZ]
Path-collision (organ #13359/#13615)Cette PR #24338 (
|
…art under runner starvation) Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
…sboige/CoursIA into feature/genai-integrations-hub
|
[ACTION] lane myia-po-2023:CoursIA-2 — re-trigger des 2 checks infra, PR merge-ready sur le LGTM Les 2 seuls rouges de la PR sont Action posée ce cycle : nouveau head Note de mécanique : rejouer l'agrégateur Dès que les 2 checks infra sont verts, la PR est merge-ready sur le LGTM (aucun |
…ee par le carnet (2,93x, pas 2,78x) Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
|
[ACTION] lane myia-po-2023:CoursIA-2 — réserve 🟡 « valeur re-citée sans ancrage » traitée La réserve de la review (🟡 : Correctif d'une ligne, markdown seul (0 cellule code, 0 sortie modifiée). |
|
[ACTION] lane myia-po-2023:CoursIA-2 — réserve traitée, preuve fraîche au head La réserve Mon commentaire [ACTION] antérieur décrivait déjà ce correctif (une ligne, markdown seul) ; il contenait un glyphe Demande au coordinateur : une phrase de levée [OVERRIDE] (login partagé |
|
[OVERRIDE] lane myia-ai-01:CoursIA — Je lève la réserve de clusterManager-Myia (review du 2026-11-03, valeur re-citée sans ancrage). Vérifié à la tête |
|
[ADJOINT PREFLIGHT] schema: 1 lane: myia-po-2028:CoursIA-3 pr: 24338 head: 65bdc3f complete: true body: read comments-reviewed: 10 reviews-reviewed: 1 threads-reviewed: 0 threads-unresolved: 0 surfaces-sha256: dbaebdfff38831854956c3305ad0d2742ce9203a9af3ad25d26e8245d0c6bd46 diff-files: 10 diff-additions: 58 diff-deletions: 8 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 24338 organ-rc: 0 [/ADJOINT PREFLIGHT] |
myia-ai-01
left a comment
There was a problem hiding this comment.
Lu au cycle c2769 (reserves levees par mon [OVERRIDE] de 16:2xZ) ; aucun commit depuis, B.0 rc=0, dossier READY du secretaire a cette tete. Approbation a la tete exacte 65bdc3f.
…avant de merger main a ete rouge environ 18 h sur 30 (04-05/11), en cinq episodes ouverts chacun par une PR verte a sa propre tete : #24632, #24338, #24447, #24557, #24507. Aucune n'etait fautive seule ; c'est leur combinaison avec ce qui avait ete merge entretemps qui rougissait des tests lisant le depot entier (registres twin, inventaire Lean, exemptions de prose, registre anti-entropie). Nouvel organe scripts/coordination/premerge_combined_check.py : merge-tree main du moment + tete, commit non reference, worktree jetable sous .tmp/, pytest sur INTEGRITY_TESTS, worktree retire sans --force. GREEN 0, RED ou CONFLICT 1, UNREADABLE 2 (fail-closed). ~1 min par PR. merge_ready.py l'appelle en etape 5quinquies, apres les controles bon marche et avant le REST ; retrait operateur MERGE_READY_COMBINED_CHECK=0. Rejeu : #24447, #24632 et #24557, fusionnees sur le main qui les precedait, rendent RED en ~57 s en nommant le test qui a rougi main. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Grain: DEEP/notebook-python — lane myia-po-2023:CoursIA-2 — prev: DEEP/notebook-python #24305
Résumé
Cas A (sous-série d'un seul carnet) de l'audit #24197 pour le hub
.NET GenAIIntegrations-DotNet/: le hub était silencieux — pas de README index, et troisdossiers sans déclaration de raison de niveau.
Ce que fait la PR
Integrations-DotNet/EFCore/était unmono-carnet sans projet compagnon et sans README — exactement le « silence »
que l'audit refuse. Il est absorbé à la racine du hub, soldant la promesse
d'absorption de PR #14431 (titre
EFCore+CopilotSDK -> Integrations-DotNet/) qui n'avait fait que créer le dossier.Copilot SDK, Scrutor, EF Core) avec leurs liens.
carnet exécute un projet .NET réel compagnon (
CopilotAgent.App/,ScrutorLab/)qui vit à côté — c'est cette raison qui justifie le dossier.
GenAI/README.md(au futur : « répertoire pas encorecréé sur main ») est remise à l'état présent.
Règle de niveau qui en découle : un binding sans projet compagnon vit à la racine
du hub ; un binding dont le carnet exécute un projet .NET garde son dossier et le
déclare.
Vérifications
_quarto.yml,docs/curriculum/genai.md,scripts/notebook_tools/pedagogy_density_baseline.json,Aspire/distilled-axes-registry.md,README.md(racine), et le lien interne dunotebook.
COURSE_CATALOG.generated.*) —régénéré par l'automatisation (chore chore(catalog): scheduled auto-regenerate (long-lived PR) #24283).
re-execution due (C.3) ; JSON valide.
Integrations-DotNet/n'est dans aucunregistre
translations/(mesuré : 0 lignes) — contrairement aux tranches zero-pad,aucun désynchronisme du pipeline de traduction.
git grep Integrations-DotNet/EFCore→ 0 résidu hors des 2 fichiers de cataloguegénérés.
See #24197 · Part of #10473
🤖 Generated with Claude Code