Skip to content

[Audit #17073] Série GenAI — partition NanoClaw #19451

Description

@jsboige

Ouverture de la série GenAI pour la campagne daudit #17073, partition NanoClaw (myia-ai-01) — sur le modèle des séries QuantConnect #17093, Search #18244 et GameTheory #17107.

Population : 268 notebooks hors archives (empreinte population-nc.json @7b2336565, garde-fou VERT 764/764).

Panorama d_arc (PROPOSÉ — à valider par le user)

Module Notebooks Niveau proposé
00-GenAI-Environment 7 🟢 Débutant
Audio 38 à calibrer
CaseStudies 5 à calibrer
FallacyDetection 5 à calibrer
FineTuning 14 à calibrer
Image 26 à calibrer
Integrations-DotNet 15 à calibrer
Plateformes-Conversationnelles 28 à calibrer
PostTraining 21 à calibrer
RAG-et-Memoire-Semantique 10 à calibrer
Security 6 à calibrer
SemanticKernel 23 à calibrer
Texte 41 à calibrer
Vibe-Coding 8 à calibrer
Video 22 à calibrer
_research 1 à calibrer

Ordre canonique proposé : ordre lexicographique des chemins ci-dessous (00-Environment d abord, puis modules dans l ordre du dépôt) — à valider.
Porteurs #17066 : aucun notebook GenAI cité dans #17066 (vérifié ce cycle). PRs ouvertes touchant GenAI : aucune.

Checklist (270 notebooks — aucune auditée à ce jour par la lane NC)

00-GenAI-Environment (7)

  • 00-GenAI-Environment/00-1-Environment-Setup.ipynb
  • 00-GenAI-Environment/00-2-Docker-Services-Management.ipynb
  • 00-GenAI-Environment/00-3-API-Endpoints-Configuration.ipynb
  • 00-GenAI-Environment/00-4-Environment-Validation.ipynb
  • 00-GenAI-Environment/00-5-ComfyUI-Local-Test.ipynb
  • 00-GenAI-Environment/00-6-Local-Docker-Deployment.ipynb
  • 00-GenAI-Environment/00-7-Terminal-Long-Runs.ipynb

Audio (38)

  • Audio/01-Foundation/01-1-OpenAI-TTS-Intro.ipynb
  • Audio/01-Foundation/01-2-OpenAI-Whisper-STT.ipynb
  • Audio/01-Foundation/01-3-Basic-Audio-Operations.ipynb
  • Audio/01-Foundation/01-4-Whisper-Local.ipynb
  • Audio/01-Foundation/01-5-Kokoro-TTS-Local.ipynb
  • Audio/02-Advanced/02-1-Chatterbox-TTS.ipynb
  • Audio/02-Advanced/02-2-XTTS-Voice-Cloning.ipynb
  • Audio/02-Advanced/02-3-MusicGen-Generation.ipynb
  • Audio/02-Advanced/02-4-Demucs-Source-Separation.ipynb
  • Audio/02-Advanced/02-5-Multi-Model-TTS-Gateway.ipynb
  • Audio/02-Advanced/02-6-MIDI-Generation.ipynb
  • Audio/02-Advanced/02-7-YuE2-Song-Generation.ipynb
  • Audio/02-Advanced/02-8-Expressive-TTS.ipynb
  • Audio/02-Advanced/02-9-AceStep-Music-Generation.ipynb
  • Audio/03-Orchestration/03-1-Multi-Model-Audio-Comparison.ipynb
  • Audio/03-Orchestration/03-2-Audio-Pipeline-Orchestration.ipynb
  • Audio/03-Orchestration/03-3-Realtime-Voice-API.ipynb
  • Audio/04-Applications/04-1-Educational-Audio-Content.ipynb
  • Audio/04-Applications/04-10-Annotation-Prosodique.ipynb
  • Audio/04-Applications/04-11-Generation-TTS.ipynb
  • Audio/04-Applications/04-12-Compilation-Audio.ipynb
  • Audio/04-Applications/04-13-Audiobook-FishAudio-S2Pro.ipynb
  • Audio/04-Applications/04-14-VoiceLeading-Rendu-GenAI.ipynb
  • Audio/04-Applications/04-15-MERT2-Music-Understanding.ipynb
  • Audio/04-Applications/04-16-SheetSage2-Audio-To-Score.ipynb
  • Audio/04-Applications/04-2-Transcription-Pipeline.ipynb
  • Audio/04-Applications/04-3-Music-Composition-Workflow.ipynb
  • Audio/04-Applications/04-4-Audio-Video-Sync.ipynb
  • Audio/04-Applications/04-5-LiveCoding-LLM-Music.ipynb
  • Audio/04-Applications/04-6-Audiobook-Pipeline.ipynb
  • Audio/04-Applications/04-7-TTS-Voice-Benchmark.ipynb
  • Audio/04-Applications/04-8-Lecture-Analytique.ipynb
  • Audio/04-Applications/04-9-Voice-Casting.ipynb
  • Audio/05-Diffusion-from-scratch/05-1-AudioDiffusion-Latent-From-Scratch.ipynb
  • Audio/05-Diffusion-from-scratch/05-2-Vocoder-From-Scratch.ipynb
  • Audio/06-Diffusion-SOTA/06-1-AudioLDM-SOTA-Comparison.ipynb
  • Audio/06-Diffusion-SOTA/06-2-HiFiGAN-SOTA-Comparison.ipynb
  • Audio/06-Diffusion-SOTA/06-3-AudioDiffusion-Comparison-A-vs-B.ipynb

CaseStudies (5)

  • CaseStudies/Barbie-Schreck/barbie-schreck.ipynb
  • CaseStudies/Fort-Boyard/fort-boyard-python.ipynb
  • CaseStudies/Medical-Chatbot/medical_chatbot.ipynb
  • CaseStudies/Medical-Chatbot/medical_chatbot_en.ipynb
  • CaseStudies/Recipe-Maker/receipe_maker.ipynb

FallacyDetection (5)

  • FallacyDetection/01_taxonomy_intro.ipynb
  • FallacyDetection/02_fallacy_datasets_landscape.ipynb
  • FallacyDetection/03_taxonomy_coverage_gap.ipynb
  • FallacyDetection/04_coverage_matrix.ipynb
  • FallacyDetection/05_dataset_builder.ipynb

FineTuning (14)

  • FineTuning/FT-00a-LoRA-from-scratch-Python.ipynb
  • FineTuning/FT-00b-LoRA-Hyperparams-from-scratch-Python.ipynb
  • FineTuning/FT-00c-LoRA-SOTA-Comparison-Python.ipynb
  • FineTuning/FT-00d-LoRA-QLoRA-SOTA-Comparison-Python.ipynb
  • FineTuning/FT-01-Introduction-FineTuning-Python.ipynb
  • FineTuning/FT-01-Introduction-FineTuning-Python_en.ipynb
  • FineTuning/FT-02-QLoRA-Quantization-Python.ipynb
  • FineTuning/FT-02-QLoRA-Quantization-Python_en.ipynb
  • FineTuning/FT-03-Supervised-FineTuning-SFT-Python.ipynb
  • FineTuning/FT-03-Supervised-FineTuning-SFT-Python_en.ipynb
  • FineTuning/FT-04-RLHF-DPO-Python.ipynb
  • FineTuning/FT-05-ModelMerging-Routing-Python.ipynb
  • FineTuning/FT-05-ModelMerging-Routing-Python_en.ipynb
  • FineTuning/FT-06-Vision-Language-LoRA-Python.ipynb

Image (26)

  • Image/01-Foundation/01-1-OpenAI-DALL-E-3.ipynb
  • Image/01-Foundation/01-2-GPT-5-Image-Generation.ipynb
  • Image/01-Foundation/01-3-Basic-Image-Operations.ipynb
  • Image/01-Foundation/01-4-Forge-SD-XL-Turbo.ipynb
  • Image/01-Foundation/01-5-Qwen-Image-Edit.ipynb
  • Image/01-Foundation/01-5b-Qwen-Image-Edit-2509.ipynb
  • Image/01-Foundation/01-5c-Qwen-Image-21-Workflows.ipynb
  • Image/02-Advanced/02-2-FLUX-1-Advanced-Generation.ipynb
  • Image/02-Advanced/02-3-Stable-Diffusion-3-5.ipynb
  • Image/02-Advanced/02-4-Z-Image-Lumina2.ipynb
  • Image/02-Advanced/02-5-Bonsai-Image-Ternary.ipynb
  • Image/03-Orchestration/03-1-Multi-Model-Comparison.ipynb
  • Image/03-Orchestration/03-2-Workflow-Orchestration.ipynb
  • Image/03-Orchestration/03-3-Performance-Optimization.ipynb
  • Image/03-Orchestration/03-4-VLM-Character-Design-Workflow.ipynb
  • Image/04-Applications/04-1-Educational-Content-Generation.ipynb
  • Image/04-Applications/04-2-Creative-Workflows.ipynb
  • Image/04-Applications/04-3-Production-Integration.ipynb
  • Image/04-Applications/04-4-Cross-Stitch-Pattern-Maker-Legacy.ipynb
  • Image/04-Applications/04-5-MiniMax-Cloud-Image.ipynb
  • Image/05-History/05-0-Generateurs-Symboliques.ipynb
  • Image/05-History/05-1-DiscoDiffusion-CLIP-Guided-Diffusion.ipynb
  • Image/05-History/05-2-CLIPasso-Semantic-Sketching.ipynb
  • Image/examples/history-geography.ipynb
  • Image/examples/literature-visual.ipynb
  • Image/examples/science-diagrams.ipynb

Integrations-DotNet (15)

  • Integrations-DotNet/Aspire/01-Aspire-Orchestration-GenAi.ipynb
  • Integrations-DotNet/Aspire/02-Aspire-GenAiStack-Reel.ipynb
  • Integrations-DotNet/Aspire/03-Aspire-Observabilite.ipynb
  • Integrations-DotNet/Aspire/04-Aspire-Streaming-Agent.ipynb
  • Integrations-DotNet/Aspire/05-Aspire-Tests-Integration.ipynb
  • Integrations-DotNet/Aspire/06-Aspire-GardeFous-Roslyn.ipynb
  • Integrations-DotNet/Aspire/07-Aspire-SemanticFleet-MultiConnector.ipynb
  • Integrations-DotNet/Aspire/08-Aspire-AsyncFFI-Dotnet.ipynb
  • Integrations-DotNet/Aspire/09-Aspire-Harness-CopilotSdk.ipynb
  • Integrations-DotNet/CopilotSDK/01-GitHub-Copilot-SDK-Binding.ipynb
  • Integrations-DotNet/EFCore/01-EFCore-Requetes-Compilees.ipynb
  • Integrations-DotNet/Orleans/01-Orleans-Grains-Agents.ipynb
  • Integrations-DotNet/Orleans/02-Orleans-Aspire-CoHost.ipynb
  • Integrations-DotNet/Orleans/03-Orleans-Persistance-Redis.ipynb
  • Integrations-DotNet/Orleans/04-Orleans-Aspire-Cluster-Redis.ipynb

Plateformes-Conversationnelles (28)

  • Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-1-Chatbots/configurer-chatbots-par-l-api.ipynb
  • Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-1-Chatbots/donner-une-memoire-ephemere-au-chatbot-par-l-api.ipynb
  • Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-1-Chatbots/interroger-lassistant-de-lediteur-par-l-api.ipynb
  • Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-1-Chatbots/joindre-un-fichier-au-chatbot-par-l-api.ipynb
  • Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-1-Chatbots/mesurer-la-derive-dun-copilot.ipynb
  • Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-1-Chatbots/obtenir-des-donnees-structurees-par-l-api.ipynb
  • Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-1-Chatbots/parler-au-chatbot-en-visiteur-par-l-api.ipynb
  • Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-2-Forms/administrer-les-formulaires-par-l-api.ipynb
  • Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-2-Forms/auditer-un-formulaire-conditionnel.ipynb
  • Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-3-RAG-et-Embeddings/ingestion-corpus-long-rag.ipynb
  • Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-3-RAG-et-Embeddings/separer-les-environnements-de-vecteurs.ipynb
  • Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-4-MCP-Server/auditer-un-serveur-mcp.ipynb
  • Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-4-MCP-Server/autour-du-consent-oauth-du-serveur-mcp.ipynb
  • Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-4-MCP-Server/consommer-vs-exposer-le-mcp.ipynb
  • Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-4-MCP-Server/piloter-wordpress-par-mcp.ipynb
  • Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-5-Multi-Provider/brancher-plusieurs-providers-par-l-api.ipynb
  • Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-5-Multi-Provider/eval-choisir-son-modele.ipynb
  • Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-5-Multi-Provider/presenter-ai-engine-par-son-api.ipynb
  • Plateformes-Conversationnelles/AI-Engine-WordPress/05-Playwright-AI-Engine/00-Parcours-QA-AI-Engine.ipynb
  • Plateformes-Conversationnelles/AI-Engine-WordPress/06-Securite-et-Methode/auditer-la-conformite-visuelle.ipynb
  • Plateformes-Conversationnelles/Open-WebUI/Playwright-OWUI/00-Parcours-QA-OWUI.ipynb
  • Plateformes-Conversationnelles/Open-WebUI/Playwright-OWUI/01-decouverte/01-Decouverte-QA-OWUI.ipynb
  • Plateformes-Conversationnelles/Open-WebUI/Playwright-OWUI/02-navigation-authentification/02-Navigation-Auth-QA-OWUI.ipynb
  • Plateformes-Conversationnelles/Open-WebUI/Playwright-OWUI/03-chat-streaming/03-Chat-Streaming-QA-OWUI.ipynb
  • Plateformes-Conversationnelles/Open-WebUI/Playwright-OWUI/04-rag-tools-avances/04-RAG-Tools-QA-OWUI.ipynb
  • Plateformes-Conversationnelles/Open-WebUI/Playwright-OWUI/05-multi-tenant-ci/05-Multi-Tenant-CI-QA-OWUI.ipynb
  • Plateformes-Conversationnelles/Open-WebUI/Playwright-OWUI/06-nouveautes-v0.10/06-Nouveautes-v0.10-QA-OWUI.ipynb
  • Plateformes-Conversationnelles/differencier-les-assistants.ipynb

PostTraining (21)

  • PostTraining/PT_01_intro_post_training.ipynb
  • PostTraining/PT_02_sft_baseline.ipynb
  • PostTraining/PT_03_dpo_direct_preference.ipynb
  • PostTraining/PT_04_grpo_deepseek_r1.ipynb
  • PostTraining/PT_05_rlvr_verifiable_rewards.ipynb
  • PostTraining/PT_06_eval_comparative.ipynb
  • PostTraining/PT_07_rewardspy_reward_hacking.ipynb
  • PostTraining/PT_08_grpo_from_scratch_toy_env.ipynb
  • PostTraining/PT_09_rloo_from_scratch_toy_env.ipynb
  • PostTraining/PT_10_gae_from_scratch_toy_env.ipynb
  • PostTraining/PT_11a_grpo_qwen35_rlvr.ipynb
  • PostTraining/PT_11b_grpo_qwen_rlvr_on_verifiers.ipynb
  • PostTraining/PT_11c_grpo_qwen17_rlvr.ipynb
  • PostTraining/PT_11d_multiseed_qwen35_4x100.ipynb
  • PostTraining/PT_12_multistep_delayed_credit.ipynb
  • PostTraining/PT_13_dapo_drgrpo_corrections.ipynb
  • PostTraining/PT_14_neural_thermodynamic_laws.ipynb
  • PostTraining/PT_15_controle_interpretabilite.ipynb
  • PostTraining/PT_16_vericoding_formal_verification.ipynb
  • PostTraining/PT_17_laya_proper_rewards_toy.ipynb
  • PostTraining/PT_18_laya_ablation_distillation.ipynb

RAG-et-Memoire-Semantique (10)

  • RAG-et-Memoire-Semantique/01-Hands-On-Grounding.ipynb
  • RAG-et-Memoire-Semantique/02-Retrieval-Avance.ipynb
  • RAG-et-Memoire-Semantique/03-Embeddings-From-Scratch.ipynb
  • RAG-et-Memoire-Semantique/04-Tokenisation-From-Scratch.ipynb
  • RAG-et-Memoire-Semantique/05-Stockage-Vectoriel.ipynb
  • RAG-et-Memoire-Semantique/05b-Stockage-Vectoriel-Serveur.ipynb
  • RAG-et-Memoire-Semantique/06-KernelMemory-InProcess.ipynb
  • RAG-et-Memoire-Semantique/07-KernelMemory-Python-Quickstart.ipynb
  • RAG-et-Memoire-Semantique/08-KernelMemory-Hybrid-Search.ipynb
  • RAG-et-Memoire-Semantique/09-KernelMemory-Multimodal.ipynb

Security (6)

  • Security/Control/Control-Refusal-Direction.ipynb
  • Security/Oversight/Oversight-Scaling-Laws-Analytics.ipynb
  • Security/Oversight/Oversight-Scaling-Laws-Nim.ipynb
  • Security/Oversight/Oversight-Scaling-Laws-Statistics.ipynb
  • Security/Oversight/Oversight-Scaling-Laws-Wargames.ipynb
  • Security/Tooling/Tooling-MCP-Attack-Surface.ipynb

SemanticKernel (23)

  • SemanticKernel/01-SemanticKernel-Intro.ipynb
  • SemanticKernel/02-SemanticKernel-Advanced.ipynb
  • SemanticKernel/03-SemanticKernel-Agents.ipynb
  • SemanticKernel/04-SemanticKernel-Filters-Observability.ipynb
  • SemanticKernel/05-SemanticKernel-VectorStores.ipynb
  • SemanticKernel/06-SemanticKernel-ProcessFramework.ipynb
  • SemanticKernel/07-SemanticKernel-MultiModal.ipynb
  • SemanticKernel/08-SemanticKernel-MCP.ipynb
  • SemanticKernel/09-SemanticKernel-Building-CLR.ipynb
  • SemanticKernel/10-SemanticKernel-NotebookMaker.ipynb
  • SemanticKernel/10a-SemanticKernel-NotebookMaker-batch.ipynb
  • SemanticKernel/10b-SemanticKernel-NotebookMaker-batch-parameterized.ipynb
  • SemanticKernel/11-SemanticKernel-A2A.ipynb
  • SemanticKernel/Créateur de mail personnalisé.ipynb
  • SemanticKernel/Notebook-Generated.ipynb
  • SemanticKernel/Notebook-Template.ipynb
  • SemanticKernel/Semantic-fleet-MultiConnector-Routing.ipynb
  • SemanticKernel/Semantic-fleet-Radix-PromptMatcher.ipynb
  • SemanticKernel/Semantic-kernel-AutoInteractive.ipynb
  • SemanticKernel/Workbook-Template-Python.ipynb
  • SemanticKernel/Workbook-Template.ipynb
  • SemanticKernel/fort-boyard-csharp.ipynb
  • SemanticKernel/fort-boyard-python.ipynb

Texte (41)

  • Texte/01_OpenAI_Intro.ipynb
  • Texte/02_PromptEngineering.ipynb
  • Texte/03_Structured_Outputs.ipynb
  • Texte/03b_Typed_Decisions_System1.ipynb
  • Texte/03c_Constrained_Decoding_Python.ipynb
  • Texte/04_Function_Calling.ipynb
  • Texte/05_RAG_Modern.ipynb
  • Texte/06_PDF_Web_Search.ipynb
  • Texte/07_Code_Interpreter.ipynb
  • Texte/08_Reasoning_Models.ipynb
  • Texte/09_Production_Patterns.ipynb
  • Texte/09b_Prompt_Security_RedTeam.ipynb
  • Texte/09c_Production_Routage_Repli.ipynb
  • Texte/09d_Production_Caches.ipynb
  • Texte/09e_Production_Exploitation.ipynb
  • Texte/10_LocalLlama.ipynb
  • Texte/10b_Inference_Mechanics.ipynb
  • Texte/10c_Long_Context_Strategies.ipynb
  • Texte/10d_TensorSharp_DotNet_Inference.ipynb
  • Texte/10e_LLamaSharp_DotNet_BakeOff.ipynb
  • Texte/10f_ORTGenAI_DotNet_BakeOff.ipynb
  • Texte/11_Quantization.ipynb
  • Texte/12_Test_Time_Scaling.ipynb
  • Texte/13_Agentic_Orchestration.ipynb
  • Texte/13b_Agent_Evaluation.ipynb
  • Texte/14_Persistent_Memory.ipynb
  • Texte/14b_Paginated_Memory-Python.ipynb
  • Texte/15_Tree_of_Thoughts_Search.ipynb
  • Texte/16_Scaling_Test_Time_Compute.ipynb
  • Texte/17_Native_Reasoning_vs_Scaling.ipynb
  • Texte/18_Semantic_Kernel_Plugins.ipynb
  • Texte/19_OWUI_Orchestration.ipynb
  • Texte/20_OWUI_Native_API.ipynb
  • Texte/21_LoRA_FineTuning.ipynb
  • Texte/22_Evaluating_Generated_Text.ipynb
  • Texte/22b_Profil_Cognitif_CHC.ipynb
  • Texte/TransformerVariants/TV-00a-RoPE-from-scratch.ipynb
  • Texte/TransformerVariants/TV-00b-Attention-Variants-from-scratch.ipynb
  • Texte/TransformerVariants/TV-01-Attention-Variants-SOTA.ipynb
  • Texte/TransformerVariants/TV-02-MoE-SOTA.ipynb
  • Texte/TransformerVariants/TV-03-Internalisation-CoT.ipynb

Vibe-Coding (8)

  • Vibe-Coding/Claude-Code/notebooks/01-Claude-CLI-Bases.ipynb
  • Vibe-Coding/Claude-Code/notebooks/02-Claude-CLI-Sessions.ipynb
  • Vibe-Coding/Claude-Code/notebooks/03-Claude-CLI-References.ipynb
  • Vibe-Coding/Claude-Code/notebooks/04-Claude-CLI-Agents.ipynb
  • Vibe-Coding/Claude-Code/notebooks/05-Claude-CLI-Automatisation.ipynb
  • Vibe-Coding/Claudish/notebooks/01-claude-code-via-claudish.ipynb
  • Vibe-Coding/docs/CSharpRepl-Live-Patching.ipynb
  • Vibe-Coding/docs/Roslyn-Code-Guardrails.ipynb

Video (22)

  • Video/01-Foundation/01-1-Video-Operations-Basics.ipynb
  • Video/01-Foundation/01-1b-Video-Slideshow-Bonus.ipynb
  • Video/01-Foundation/01-2-GPT-5-Video-Understanding.ipynb
  • Video/01-Foundation/01-3-Qwen-VL-Video-Analysis.ipynb
  • Video/01-Foundation/01-4-Video-Enhancement-ESRGAN.ipynb
  • Video/01-Foundation/01-5-AnimateDiff-Introduction.ipynb
  • Video/02-Advanced/02-1-HunyuanVideo-Generation.ipynb
  • Video/02-Advanced/02-2-LTX-Video-Lightweight.ipynb
  • Video/02-Advanced/02-3-Wan-Video-Generation.ipynb
  • Video/02-Advanced/02-4-SVD-Image-to-Video.ipynb
  • Video/02-Advanced/02-5-LTX2-Audiovisual.ipynb
  • Video/02-Advanced/02-6-MiniMax-H3-Architecture-Licensing.ipynb
  • Video/02-Advanced/02-7-CogVideoX-Text-to-Video.ipynb
  • Video/03-Orchestration/03-1-Multi-Model-Video-Comparison.ipynb
  • Video/03-Orchestration/03-2-Video-Workflow-Orchestration.ipynb
  • Video/03-Orchestration/03-3-ComfyUI-Video-Workflows.ipynb
  • Video/04-Applications/04-1-Educational-Video-Generation.ipynb
  • Video/04-Applications/04-2-Creative-Video-Workflows.ipynb
  • Video/04-Applications/04-3-Sora-API-Cloud-Video.ipynb
  • Video/04-Applications/04-4-Production-Video-Pipeline.ipynb
  • Video/04-Applications/04-5-MiniMax-H3-Cloud-Video.ipynb
  • Video/04-Applications/04-5b-MiniMax-video-01-v1-Cloud-Video.ipynb

_research (1)

  • _research/e2e_quant_validation.ipynb

Activity

  1. jsboige commented on Oct 6, 2026

    @jsboige
    OwnerAuthor

    [NanoClaw] Audit campagne #17073 — MyIA.AI.Notebooks/GenAI/00-GenAI-Environment/00-1-Environment-Setup.ipynb (14 cellules, extraction v2.1) — premier audit de la série, issue ouverte ce cycle sur le modèle #17093/#18244. État global sain : exécution réelle committée (25/06/2026, APIs 2/2, score 85/100 = barème 25+50+10 exact, image base64 1 547 260 chars), prose et sorties cohérentes, barème du score juste (100), navigation propre, 0 doublon, ec séquentiel. 2 findings :

    1. orphan-statement — cellule CODE[2] id=9ef8fd65.
    Extrait : « # Parameters\nBATCH_MODE = "true" » — la cellule Parameters (papermill) n'injecte que BATCH_MODE, variable définie et lue nulle part ailleurs du notebook (les paramètres réels notebook_mode, api_provider, skip_widgets, debug_level, test_generation, validation_mode sont définis dans CODE[1] id=0a1e91f2 et consommés plus bas).
    Pourquoi : une cellule Parameters qui n'injecte aucune variable consommée est du bruit mort — et elle écrase le contrat papermill du notebook (le batch réel ne peut rien régler via elle).

    2. stale-claim — cellule CODE[4] id=6aa2eef6 (message d'aide du else .env absent), à rapprocher de MD[7] id=6db1483d.
    Extrait : « 📖 Copiez .env.template vers .env et configurez vos clés API » — or le dépôt porte MyIA.AI.Notebooks/GenAI/.env.example (vérifié ls-tree @7b2336565 ; aucun .env.template n'existe) et la prose MD[7] dit correctement « Créer le fichier depuis .env.example ».
    Pourquoi : l'apprenant qui arrive sans .env reçoit du code une instruction pointant un fichier inexistant, contredite par la prose du même notebook — c'est exactement le mauvais moment (premier notebook, premier blocage).

    — NanoClaw (myia-ai-01), cycle 479 campagne #17073, partition NanoClaw.

  2. jsboige commented on Oct 6, 2026

    @jsboige
    OwnerAuthor

    [NanoClaw] Audit campagne #17073 — MyIA.AI.Notebooks/GenAI/00-GenAI-Environment/00-2-Docker-Services-Management.ipynb (17 cellules : 10 markdown / 7 code, execution_count 1→7 séquentiel, 0 doublon Jaccard>0.55, 0 CJK, nbformat 4.5)

    Passe mécanique + couche pédagogique — 4 findings, chacun prouvé par extrait :

    F1 — stale-claim — cellule MD[5] (id 325febcc)

    Variables globales créées :

    • DOCKER_AVAILABLE = True : Docker CLI est accessible
    • docker_manager : Instance du gestionnaire de services

    Pourquoi : la lecture de la cellule 3 annonce docker_manager comme variable globale créée, alors que l'output committé de CODE[4] (ec=3) ne porte que « ✅ Helpers GenAI importés / ✅ Docker CLI détecté / 🔧 Services gérés: … » — l'instance n'est créée qu'à CODE[6] (ec=4), deux cellules plus loin.

    F2 — stale-claim — cellule MD[16] (id dc11c2cb)

    1. Gerer les services via la classe DockerServiceManager

    Pourquoi : la classe ne porte que run_command, get_docker_info, list_services (CODE[6]), et CODE[12] fait retomber start / stop / restart sur « ⚠️ Action {action} non implémentée dans cette démo » — le bilan attribue au carnet une capacité de gestion (démarrage, arrêt) qu'il ne fournit pas ; le README du module annonce pourtant « démarrage, arrêt et monitoring ».

    F3 — output-uninterpreted — cellule MD[11] (id 09155a64), lecture de CODE[10] (id eba4ee26, ec=5)

    | Connectivite | Test de ports (socket) | Services accessibles sur ports |

    Pourquoi : l'output committé de CODE[10] rend 🔴 Jupyter (:8888), 🔴 Ollama (:11434), 🔴 Redis (:6379), 🔴 PostgreSQL (:5432) — 4 des 5 services GenAI injoignables, un seul ✅ (ComfyUI) — or la prose entière du carnet ne contient aucune occurrence de « 🔴 » ni de « non accessible » ; MD[15] conclut même « Services actifs | L'infrastructure fonctionne | Passer aux notebooks de generation » alors que CODE[14] recommande sur services_count (20 conteneurs actifs, dont aucun ne porte les noms des 5 services listés dans managed_services). Remède = réécrire MD[11] pour nommer les états observés — jamais ajouter une seconde lecture (frontière #13410) ; tout enrichissement resterait un candidat, pas un élément de travail.

    F4 — paraphrase-stack — cellules MD[7] (id a1a87a40) et MD[8] (id 7ba55bce)

    MD[7] : « Méthodes disponibles : » puis « - run_command(cmd, timeout) : Execute une commande système avec gestion des erreurs »
    MD[8] : « | run_command(cmd, timeout) | Execute une commande Docker avec timeout | Dict avec success/stdout/stderr | »

    Pourquoi : deux cellules markdown adjacentes empilent la même liste des trois méthodes (mêmes noms, mêmes descriptions) et la même « Note technique » sur subprocess.run() / capture_output ; MD[8] « Presentation du DockerServiceManager » est placée après l'interprétation de l'instanciation (MD[7]), donc présente la classe une fois son usage déjà interprété.

    Classes portées ailleurs (pas de re-description ici) : doublons de sections → #17066 (00-2 ne figure pas dans la liste de travail des porteurs, donc rien à signaler) ; paramètres déclarés jamais consommés → proposition d'organe sur #17073 (seuil >3 atteint : service_timeout, health_check_retries, show_logs, auto_restart, self.services_status, plus skip_widgets injecté en chaîne par la cellule injected-parameters alors que CODE[1] le déclare booléen). Aucune passe d'organes ce cycle : l'artefact ai-01 n'est pas publié sur #17073.

    Case 00-2 cochée dans la checklist de cette issue.

  3. jsboige commented on Oct 6, 2026

    @jsboige
    OwnerAuthor

    [NanoClaw] Audit campagne #17073 — MyIA.AI.Notebooks/GenAI/Integrations-DotNet/Aspire/09-Aspire-Harness-CopilotSdk.ipynb (36 cellules : 25 markdown / 11 code, execution_count 1→11 séquentiel, 0 doublon Jaccard>0.55, 0 CJK, nbformat 4.5, kernel .net-csharp)

    Passe mécanique + couche pédagogique — 1 finding prouvé par extrait ; 3 occurrences de classes gelées versées au dossier des organes (une ligne chacune, pas de re-description) ; doublons renvoyés à #17066.

    F1 — reading-before-code — cellule MD[9] (id 7328af87), lit un objet affiché en CODE[11] (id 973cadf0, ec=4)

    Lecture : Le fichier Program.cs est le point d'entrée du harness. Il implémente les différents modes : auth pour vérifier l'authentification, models pour lister les modèles disponibles, ask pour un tour complet avec prompt, et events pour consommer le flux SessionEvent.

    Pourquoi : cette « Lecture » suit la cellule CODE[8] (dotnet build, output = « La génération a réussi. 0 Avertissement(s) 0 Erreur(s) ») qu'elle ne lit pas, et décrit un fichier que le carnet n'affiche que deux cellules plus loin (CODE[11], ShowFile("…/Program.cs", 1, 40)) — la lecture est détachée de son objet, et la sortie de build reste sans aucune lecture.

    Occurrences de classes gelées (gel campagne, dashboard coordination : stale-claim, exercise-mismatch, figure-missing) — versées en une ligne, pas déposées :

    1. stale-claim — MD[3] (id 23a9269b) : « L'amorçage a réussi et a créé le projet compagnon CopilotHarness.App dans l'arborescence » — CODE[2] ne fait que résoudre le RepoRoot et afficher le chemin (output : « amorcage OK -- projet compagnon : … ») ; le .csproj pré-existe puisqu'il est affiché juste après (CODE[5]).
    2. stale-claim — MD[27] (id 39bc4368) : « L'histogramme raconte le tour dans l'ordre : session.start → session.model_change (résolution de auto) → … » — l'output committé de CODE[25] est un histogramme alphabétique à compte 1 (aucune information d'ordre), et MD[26] (id d9a9d331) donne un autre ordre (session.model_change en dernier) : les deux lectures du même output se contredisent, l'ordre cité n'est pas dans la sortie. → organe fix(ci,#18354): organes stale-claim + factual-mislabel -- etapes du workflow advisory existant (tranches 1+2) #18402 + extensions R1/R2 (c.6008669903).
    3. stale-claim / exercise-mismatch — MD[28] (id 7c8fabe3) et les outputs committés de CODE[30]/CODE[32]/CODE[34] impriment « voir TODO dans Program.cs » — le Program.cs committé (89 lignes) ne contient aucun TODO (0 occurrence, insensible à la casse) et aucun stub usage/memoire/catalogue : son switch ne porte que auth/models/ask/events. Les trois exercices renvoient l'apprenant à une ancre inexistante — le point le plus pénalisant du carnet pour un étudiant seul. → organes exercise-mismatch (c.5768531684) et stale-claim « signatures citées » (c.6008669903 R2).

    Doublons → #17066 (porteur, pas re-décrit) : le worklist de #17066 crédite ce carnet de 4 sections dup_reading en trop ; re-mesuré ici : 5 paires « Lecture » + « ### Interprétation » lisant chacune le même output (csproj CODE[5], auth CODE[13], catalogue CODE[17], ask CODE[21], events CODE[25]) — gate #17040 « max 1 lecture par output ».

    Couche pédagogique — état : arrivée bien placée (récap intro scoping exactement la série The Unexpected AI Stack 01-06 ; les carnets 07/08 du dossier sont d'autres arcs — Epic #1210 semantic-fleet, curriculum Roslyn — et ne relèvent pas de ce récap) ; exercices gradués (usage → mémoire → catalogue) avec avertissement de coût premium ; limites honnêtes (BYOK non exercé, quota consommé). Les faiblesses sont celles listées ci-dessus.

    Note de process : à compter de ce cycle, conformément au gel des classes (dashboard coordination, « >3 occurrences ⇒ stop findings individuels »), les occurrences de classes gelées sont versées en une ligne au dossier de l'organe concerné au lieu d'un finding individuel. Rétroactivement, les 2 findings stale-claim du cycle 480 (00-2, F1/F2) sont à lire comme telles (organes déjà proposés).

    Case Aspire/09 cochée dans la checklist de cette issue (PATCH vérifié : exactement 1 occurrence remplacée).

  4. jsboige commented on Oct 6, 2026

    @jsboige
    OwnerAuthor

    [NanoClaw] Audit cycle 482 — Integrations-DotNet/CopilotSDK/01-GitHub-Copilot-SDK-Binding.ipynb

    Porteur : non ; artefact ai-01 toujours absent de #17073 (SANS organes). Mécanique saine : 25 cellules (md=17/code=8), ec 1→8 séquentiel, 0 doublon Jaccard>0.55, 0 CJK, nbformat 4.5, kernel .net-csharp, exécution réelle committée (échec quota géré honnêtement par catch dédiés). Le header «Lecture du résultat» ×4 = rhythm volontaire un-par-section, contenus distincts — pas un doublon.

    Findings (3) :

    1. stale-claim — cellule MD[5] (id 8f517b2e, Lecture §1) :

    «Runtime port non-zero : le SDK a démarré le CLI en subprocess, qui ouvre un port local pour le dialogue SDK ↔ CLI. Ce numéro n'est pas un port LLM, c'est le port de la machinerie interne.»
    Aucun WriteLine du notebook n'imprime de «Runtime port» et la sortie committée de CODE[4] = 3 lignes quota + warning CS8632 — la lecture décrit une sortie que ni le code ni les outputs ne produisent.

    1. stale-claim — cellule MD[5] (id 8f517b2e, Lecture §1) :

    «Réponse factuelle attendue : « La capitale de la France est Paris. » — le modèle gpt-4.1 est routé via le provider github par défaut, donc factuel.»
    Contredit par le code du même notebook — CODE[4] (id 2caeceaa) : «Modele du CLI par defaut : gpt-4.1 a ete retire des plans Copilot (erreur "Model gpt-4.1 is not available" mesuree en 2026-09)». La lecture affirme au présent un routage que le notebook lui-même documente comme retiré.

    1. prerequisite-gap — cellule MD[0] (id 94d2ee94, Prérequis) :

    «- GitHub Copilot CLI installé et authentifié […] - Aucun Docker requis (le CLI bundle est natif ; pas d'Aspire AppHost dans cette tranche).»
    La liste oublie le build préalable de CopilotAgent.App, exigé dès la cellule 4 (CODE[4] : «Re-executer ce notebook apres avoir builde le projet CopilotAgent.App au moins une fois») et pour le dotnet run --no-build de §4 — le prérequis n'est révélé qu'en échec à mi-parcours.

    Note (pas un finding) : les renvois «règle C.1» (Exercice 3) et «règle H.1» (§4) pointent des règles internes de lane définies nulle part dans le notebook — jargon opaque pour l'apprenant, candidat nettoyage léger.

    Couche pédagogique : arrivée bien placée après Aspire/04 (axes A1/A2 cités et liés deux fois) ; paliers 1→4 bien décomposés (dialog → streaming → Scrutor → composition) ; sorties interprétées à chaque section ; exercices stubbés propres avec critères de validation. Chapeau et conclusion balancent correctement le scope.

    Case cochée ci-dessous. Ledger NC mis à jour (cycle 482).

  5. jsboige commented on Oct 6, 2026

    @jsboige
    OwnerAuthor

    [NanoClaw] Audit cycle 482 — Integrations-DotNet/CopilotSDK/01-GitHub-Copilot-SDK-Binding.ipynb

    Porteur : non ; artefact ai-01 toujours absent de #17073 (SANS organes). Mécanique saine : 25 cellules (md=17/code=8), ec 1→8 séquentiel, 0 doublon Jaccard>0.55, 0 CJK, nbformat 4.5, kernel .net-csharp, exécution réelle committée (échec quota géré honnêtement par catch dédiés). Le header «Lecture du résultat» ×4 = rhythm volontaire un-par-section, contenus distincts — pas un doublon.

    Findings (3) :

    1. stale-claim — cellule MD[5] (id 8f517b2e, Lecture §1) :

    «Runtime port non-zero : le SDK a démarré le CLI en subprocess, qui ouvre un port local pour le dialogue SDK ↔ CLI. Ce numéro n'est pas un port LLM, c'est le port de la machinerie interne.»
    Aucun WriteLine du notebook n'imprime de «Runtime port» et la sortie committée de CODE[4] = 3 lignes quota + warning CS8632 — la lecture décrit une sortie que ni le code ni les outputs ne produisent.

    1. stale-claim — cellule MD[5] (id 8f517b2e, Lecture §1) :

    «Réponse factuelle attendue : « La capitale de la France est Paris. » — le modèle gpt-4.1 est routé via le provider github par défaut, donc factuel.»
    Contredit par le code du même notebook — CODE[4] (id 2caeceaa) : «Modele du CLI par defaut : gpt-4.1 a ete retire des plans Copilot (erreur "Model gpt-4.1 is not available" mesuree en 2026-09)». La lecture affirme au présent un routage que le notebook lui-même documente comme retiré.

    1. prerequisite-gap — cellule MD[0] (id 94d2ee94, Prérequis) :

    «- GitHub Copilot CLI installé et authentifié […] - Aucun Docker requis (le CLI bundle est natif ; pas d'Aspire AppHost dans cette tranche).»
    La liste oublie le build préalable de CopilotAgent.App, exigé dès la cellule 4 (CODE[4] : «Re-executer ce notebook apres avoir builde le projet CopilotAgent.App au moins une fois») et pour le dotnet run --no-build de §4 — le prérequis n'est révélé qu'en échec à mi-parcours.

    Note (pas un finding) : les renvois «règle C.1» (Exercice 3) et «règle H.1» (§4) pointent des règles internes de lane définies nulle part dans le notebook — jargon opaque pour l'apprenant, candidat nettoyage léger.

    Couche pédagogique : arrivée bien placée après Aspire/04 (axes A1/A2 cités et liés deux fois) ; paliers 1→4 bien décomposés (dialog → streaming → Scrutor → composition) ; sorties interprétées à chaque section ; exercices stubbés propres avec critères de validation. Chapeau et conclusion balancent correctement le scope.

    Case cochée ci-dessous. Ledger NC mis à jour (cycle 482).

  6. jsboige commented on Oct 6, 2026

    @jsboige
    OwnerAuthor

    [NanoClaw] Audit cycle 483 — Integrations-DotNet/EFCore/01-EFCore-Requetes-Compilees.ipynb

    Porteur : non ; artefact ai-01 toujours absent de #17073 (SANS organes). Mécanique saine : 17 cellules (md=8/code=9), ec 1→9 séquentiel, 0 doublon Jaccard>0.55, 10 headers tous distincts, 0 CJK, nbformat 4.5, kernel .net-csharp, seed déterministe Random(42), valeurs mesurées cohérentes (médianes 192702/69417 ticks → ratio 2,78x exact ; injection 0 ligne = 0 attendu). Liens ../Aspire/distilled-axes-registry.md et notebook Roslyn vérifiés existants sur l'arbre. Domaine TranscriptionJob cohérent avec la série Aspire, position dans la série explicite et correcte.

    Findings (5) :

    1. stale-claim — cellule MD[2] (id d12fcaa4, §1) :

    «Le modèle est déclaré en C#, et c'est déjà le premier point de la differential : la table n'existe que comme propriété typée du DbContext (Transactions.Jobs).»
    Transactions.Jobs ne désigne rien dans le notebook : le contexte défini en CODE[3] (id 00d9ce3e) est TranscriptionContext avec DbSet<TranscriptionJob> Jobs, table "TranscriptionJobs" — résidu de renommage de draft (aucune classe/propriété Transactions n'existe).

    1. output-uninterpreted — cellule CODE[5] (id acb35224, ec=3) :

    sortie : «Requete typée compilee et executee : 5 job(s) termine(s) de plus de 100s / job_007.wav 151s confiance=0,320 … job_004.wav 203s confiance=0,513»
    Aucune cellule markdown ne lit ce résultat : MD[6] ouvre §3 (ToQueryString) sans le mentionner, et MD[4] n'annonce que le mécanisme — le tri croissant 151→203s et les confiances ne sont interprétés nulle part.

    1. reading-before-code — cellule MD[8] (id e5a4878f, §4) :

    «Voici une mesure honnête — pas un benchmark de production. […] le point à retenir, une fois la mesure lue : le gain est relatif (…) mais absolu de l'ordre de la microseconde.»
    La lecture du benchmark est écrite AVANT la mesure CODE[9] ; le ratio 2,78x effectivement mesuré n'est relu par aucun markdown ensuite — la seule « lecture » du résultat est un Console.WriteLine dans le code lui-même, et le notebook n'a aucune lecture placée après un output.

    1. exercise-mismatch — cellule CODE[13] (id 0f6f18d1, ec=7, Exercice 1) :

    énoncé : «ecrire une requete compilee qui renvoie les jobs en Echec, tries par duree desc» — stub : «var nbEchec = 0; // TODO etudiant : ctx.Jobs.Count(j => j.Statut == StatutJob.Echec)» puis «nb jobs en echec (a completer) = {nbEchec}»
    Le contrat du stub (un compteur) ≠ l'énoncé (requête compilée renvoyant la liste triée durée desc) : compléter le stub tel quel n'exécute pas l'exercice annoncé.

    1. solution-leak — cellule CODE[14] (id 306f8732, ec=8, Exercice 2) :

    «string sql2 = ""; // TODO etudiant : ctx.Jobs.OrderBy(j => j.Id).Skip(5).Take(10).ToQueryString()»
    Le TODO contient la solution littérale de l'exercice (« afficher le SQL d'une requete avec Take(10) + Skip(5) ») — y compris l'ordre Skip puis Take qui était précisément le point à découvrir.

    Notes (pas des findings) : (a) MD[8] affirme que la requête directe « recalcule » la traduction à chaque exécution — EF Core maintient un cache de plans de requête, la nuance contredit la doc mais n'est pas prouvable par extrait interne ; (b) la normalisation enum→int visible dans le SQL du §3 ("Statut" = 1) n'est expliquée que dans un commentaire de CODE[9] (§4) — remark de placement.

    Case cochée ci-dessous. Ledger NC mis à jour (cycle 483).

  7. jsboige commented on Oct 6, 2026

    @jsboige
    OwnerAuthor

    Audit NanoClaw cycle 484 — GenAI/Integrations-DotNet/Orleans/01-Orleans-Grains-Agents.ipynb (lane #17073, fire 14:05Z)

    Porteur : dernier axe non distillé de la Part 1 (registre #10473). Désignation vérifiée contre l'arbre : les six autres axes cités en intro sont réellement livrés — Aspire (série 01-09), OTEL (Aspire/03-Aspire-Observabilite), Channels (Aspire/04-Aspire-Streaming-Agent), Roslyn (Aspire/06-Aspire-GardeFous-Roslyn), EF Core (EFCore/01, audité cycle 483), CSharpRepl (Vibe-Coding/docs/CSharpRepl-Live-Patching).

    Passe mécanique : 16 cellules (md=8, code=8), ec 1→8 séquentiel, 11 headers distincts, 0 doublon Jaccard>0.55, 0 CJK, nbformat 4.5, kernel .net-csharp, fichier 31 648 o.

    Findings : aucun. Toutes les valeurs croisées prose↔outputs sont exactes : gpt-5.6-luna=1625 (3 appels cumulés), whisper-1=2100, total concurrence 2125 = attendu (1625+500, écart 0 imprimé), 50 totaux intermédiaires distincts, état conservé après nouvelle référence, historique alpha 2 lignes / beta 1 ; exercice 1 : 1625 × 40¢/1k = 65¢ (arithmétique exacte) ; exercice 3 : attendus 1700/800/900, cohérents (800+900=1700).

    Notes (non-findings, qualités vérifiées) :

    • Structure exemplaire lecture-après-code : trois paires CODE→Lecture (build, demo, vérification). Frontière densite pedagogique : 430 notebooks sous le plancher 1200 — surface majoritairement non suivie #13410 respectée partout — chaque lecture suit sa cellule, aucune n'est dupliquée.
    • Exercices = spécifications sans leak : les solutions vivent dans le lab adjacent OrleansAgentLab/Grains.cs (présent dans l'arbre : Grains.cs, OrleansAgentLab.csproj, Program.cs), et les outputs témoins affichent honnêtement les stubs (-1 cents, "", compteurs à 0) au lieu de simuler des résultats.
    • Garde fail-loud CODE[6] : les invariants sont vérifiés par Debug.Assert + throw sur la sortie réelle parsée (aucun nombre magique en prose) ; la lecture MD[7] cite la mesure (écart 0, 2/1 lignes) qui figure bien dans l'output.
    • Garde SOTA CODE[14] : vérifie le vrai package Microsoft.Orleans.Server 10.3.1, le UseOrleans réel et les 2 interfaces de grains.
    • Conclusion « limites honnêtes » (persistence, clustering, timers/streams/transactions, placement) clôt sans sur-promesse.

    Couche pédagogique : peau d'apprenant — aucun gap détecté. Le survol des headers suit une progression nette : pourquoi → build → demo → invariants → interprétation → 3 exercices progressifs (coût / état interne / routage grain-à-grain) → garde SOTA → limites. Le point 3 de la lecture du demo (somme 1625+500 vs produit naïf, turn-based) est une des meilleures explications du modèle acteur du corpus audité jusqu'ici.

    Case cochée : Integrations-DotNet/Orleans/01-Orleans-Grains-Agents.ipynb.

  8. jsboige commented on Oct 6, 2026

    @jsboige
    OwnerAuthor

    Audit NanoClaw cycle 485 — GenAI/Integrations-DotNet/Orleans/02-Orleans-Aspire-CoHost.ipynb (lane #17073, fire 15:05Z)

    Passe mécanique : 32 cellules (md=17, code=15), ec 1→15 séquentiel, 21 headers distincts, 0 doublon Jaccard>0.55, 0 CJK, nbformat 4.5, kernel .net-csharp, fichier 57 176 o.

    Finding (1) :

    • Cellules : CODE[3] (id a10878eb, commentaire du code) contre les outputs de CODE[12], CODE[16], CODE[19], CODE[21], CODE[23] (ids 17bc6137, e9a318e4, 6566e42c, 91563a31, 6a03c9ef).
    • Extrait verbatim : CODE[3] déclare // Chemin affiché RELATIF au dépôt : aucun chemin machine dans les sorties committées. — or CODE[12] out0 committé affiche Content root path: /home/user/wt-aspire/MyIA.AI.Notebooks/GenAI/Integrations-DotNet/Orleans/OrleansAspireLab (idem dans les quatre sorties de scénario suivantes).
    • Classe : stale-claim
    • Pourquoi : la claim générale d'hygiène est falsifiée par cinq outputs committés du ClientDriver qui impriment un chemin machine non filtré — la politique d'anonymisation existe dans le notebook (CODE[7] nettoie ?t=<jeton> et les chemins de la CLI Aspire) mais elle ne couvre pas la ligne Content root path émise par le runtime .NET du process client séparé ; la claim a été vraie pour des runs filtrés, plus pour ce run.

    Notes (non-findings, qualités vérifiées) :

    • Toutes les valeurs croisées prose↔outputs sont exactes : deux Guid distincts, « 2 tours » retrouvés par Guid, compteur 'qwen3-coder' cumulé (860 tokens, non cité en prose — pas de nombre fabriqué), événements Starting → Running / Service silo-orleans-gateway ... Ready cités en MD[10] présents mot pour mot dans le journal CODE[9], garde SOTA 3/3 (Orleans 10.3.1 silo+client, AppHost+AddOrleans, nuspec Aspire.Hosting.Orleans sans aucun package Microsoft.Orleans.* — la « précision honnête » de MD[10] point 3 est mesurée, pas affirmée).
    • Chaîne d'identité vérifiée de bout en bout : le Guid extrait par la garde CODE[14] (97ce4c00-…-b95f398f7325) est celui de la conversation A du demo CODE[12] et celui retrouvé par le resume CODE[16] — la prose ne cite jamais un Guid qui ne figure pas dans les outputs.
    • Structure lecture-après-code respectée partout (build→lecture, démarrage+événements→interprétation, demo→lecture, resume→interprétation) : une seule lecture par output, aucune dupliquée — frontière densite pedagogique : 430 notebooks sous le plancher 1200 — surface majoritairement non suivie #13410 tenue.
    • Exercices = spécifications sans leak : les trois scénarios affichent honnêtement les stubs (resume -> "", A=0 (attendu 800), B=0 (attendu 900), -1 cents), les attendus cités en MD[20]/[22]/[24] correspondent aux témoins, et l'arithmétique ex3 est exacte (1625 × 40¢/1k = 65,00). Le piège pédagogique du lab orchestré (relance du silo ~15 s avant chaque itération, MD[18]) est assumé et démontré.
    • Gardes fail-loud : CODE[14] et CODE[16] throwent sur invariant violé de la sortie réelle ; CODE[26] throw sur garde SOTA ; CODE[30] vérifie le port libéré.

    Couche pédagogique : peau d'apprenant — aucun gap. Le tableau comparatif 01 vs 02 dès l'intro installe les deux deltas (orchestration, identité générée), chaque changement est motivé avant d'être exécuté (« Pourquoi ces deux changements »), et le lien arrière vers le notebook 01 couvre le prérequis modèle acteur. Progression nette : build → démarrage orchestré → identités → reprise par adresse → exercices (résumé → routage grain-à-grain → coût partagé) → garde SOTA → dashboard vivant → arrêt propre → limites honnêtes (persistance volatile, mono-silo, ports fixes, dashboard non automatisable) et conclusion en tableau de parité. La section « Le dashboard, vivant » est introduite avant sa cellule par une phrase d'annonce, sa lecture est inline dans l'output — pas de seconde lecture.

    Claims structurelles vérifiées contre l'arbre : le lab OrleansAspireLab/ contient exactement ses quatre pièces déclarées (apphost.cs, Silo/, ClientDriver/, Grains/Grains.cs) plus aspire.config.json, et le registre Aspire/distilled-axes-registry.md référencé en intro existe.

    Case cochée : Integrations-DotNet/Orleans/02-Orleans-Aspire-CoHost.ipynb.

  9. jsboige commented on Oct 6, 2026

    @jsboige
    OwnerAuthor

    Audit NanoClaw cycle 486 — GenAI/Integrations-DotNet/Orleans/03-Orleans-Persistance-Redis.ipynb (lane #17073, fire 16:05Z)

    Passe mécanique : 29 cellules (md=16, code=13), ec 1→13 séquentiel, 25 headers distincts, 0 doublon Jaccard>0.55, 0 CJK, nbformat 4.5, kernel .net-csharp, fichier 55 859 o.

    Findings : aucun. Toutes les valeurs croisées prose↔outputs sont exactes : TTL -> -1, DBSIZE = 1, la clé complète orleans-persistence-lab/state/persistentsession/session-redis/session, le hash à deux champs data/etag, le JSON "$type":"OrleansPersistenceLab.SessionState, …" avec Turns/TokenTotal, le message de conflit avec ETag=., les témoins d'exercices (tours=-1 sentinelle, 300/500 -> False sans écriture, même ETag avant/après le stub ex1), et la garde NuGet (Microsoft.Orleans.Persistence.Redis 10.3.1, Microsoft.Orleans.Server 10.3.1, StackExchange.Redis 2.11.0 transitif).

    Notes (non-findings, qualités vérifiées) :

    • La seule valeur non imprimée par un output — la décomposition « 240 tokens cumulés (40 + 80 + 120) » de la lecture §3 — est sourcée dans le lab adjacent : OrleansPersistenceLab/Program.cs appelle AppendTurnAsync(..., 40 * i) pour i=1..3. Vérifiée, pas fabriquée.
    • Cohérence interne des outputs committés : l'ETag 47974d75… lu par le process de relecture (CODE[6]) est exactement celui stocké dans le hash Redis (CODE[12] HGETALL) — la preuve documentaire et la preuve par relecture se recoupent.
    • Deux gardes fail-loud vérifiant les constats contre les sorties réelles : CODE[10] (pids distincts, état conservé via Redis / perdu via mémoire, ETag identique) et CODE[16] (écriture de B refusée, seul le tour de A stocké, ETag relu = ETag de A) — aucune constante magique en prose.
    • Structure lecture-après-code exemplaire : une lecture par output (démarrage, build, write/read Redis, write/read mémoire, document Redis, conflit, témoins groupés des trois exercices, garde SOTA), aucune dupliquée — frontière densite pedagogique : 430 notebooks sous le plancher 1200 — surface majoritairement non suivie #13410 tenue.
    • Exercices sans leak : les indices donnent la direction (l'opération dédiée distincte de WriteStateAsync, borner les tentatives, rejouer la mutation après ReadStateAsync) sans écrire le code ; la lecture des témoins MD[23] apprend explicitement à lire ce que chaque stub laisse voir, y compris la fausse piste mesurée du ex1 (SessionState vide → a revoir).
    • Garde SOTA forte : versions résolues par NuGet (pas déclarées), branchement vérifié dans les sources (AddRedisGrainStorage("sessions", [PersistentState("session", "sessions")]), serveur réel interrogé, throw si la chaîne est incomplète.

    Couche pédagogique : peau d'apprenant — aucun gap. Le tableau 01/02/03 d'intro installe le delta (où vit l'état, ce qui le détruit) et répond directement à la limite de volatilité laissée par les deux notebooks précédents ; chaque concept arrive au bon endroit (fournisseur injecté avant la survie, document Redis avant le conflit ETag qui s'appuie sur etag du hash) ; la distinction ServiceId vs ClusterId est introduite en §4 puis exploitée en §5 pour fabriquer le conflit — pas décorative. Progression : conteneur → build → survie Redis/mémoire → document → concurrence optimiste → 3 exercices (clear/écriture conditionnelle/reprise sur conflit = les trois opérations de IPersistentState<T>) → garde → arrêt propre → limites honnêtes (durabilité de Redis elle-même non mesurée, conflit fabriqué assumé, migrations non exercées, branchement Aspire renvoyé au notebook 04).

    Claims structurelles vérifiées contre l'arbre : le lab OrleansPersistenceLab/ tient bien en trois fichiers (Grains.cs, Program.cs, .csproj) comme annoncé §1 ; le notebook 04 et le registre des axes référencés en conclusion existent tous deux.

    Case cochée : Integrations-DotNet/Orleans/03-Orleans-Persistance-Redis.ipynb.

  10. jsboige commented on Oct 6, 2026

    @jsboige
    OwnerAuthor

    Audit NanoClaw cycle 487 — GenAI/Integrations-DotNet/Orleans/04-Orleans-Aspire-Cluster-Redis.ipynb (lane #17073, fire 17:05Z)

    Passe mécanique : 44 cellules (md=28, code=16), ec 1→16 séquentiel, 31 headers distincts, 0 doublon Jaccard>0.55, 0 CJK, nbformat 4.5, kernel .net-csharp, fichier 104 776 o — le plus gros de la série.

    Findings : aucun. Croisements prose↔outputs tous exacts, y compris les plus fins :

    • L'identité de silo S<ip>:<port>:<génération> définie en §4 avant d'être nécessaire : générations imprimées 150084232 (démarrage), 150084245 sur nouveau port 46851 (réplique redémarrée en fin de section 6 — la prose annonçait « nouveau port de silo et nouvelle génération »), 150084290×2 sans aucune ligne Dead après le redémarrage complet (« la table repart de zéro ») — les trois états vérifiés dans le hash Redis.
    • « N'est pas une constante » (§5) : la lecture annonce que la ligne de colocalisation varie et que l'exercice 2 la remesure « avec un résultat qui n'a pas de raison d'être le même » — l'exercice livre 8/16 contre 13/16 en section 5, et MD[38] prédisait « un compte sous 16, qui n'égale pas forcément celui de la section 5 ». La variabilité est enseignée au lieu d'être figée.
    • Détection de panne : « 3 sondes manquées × 5 s = 15 s » calculé en tête de cellule (ProbeTimeout=5, NumMissedProbesLimit=3), premier succès à 15,4 s après 11 échecs HTTP 500 espacés d'environ une seconde — la prédiction et la fenêtre d'échec sont toutes deux committées, avec l'avertissement que la forme varie d'une exécution à l'autre.
    • Arrêt propre : tours 3→4 sur PID différent (31016→31027), ligne Dead dans la table, état relu depuis Redis, redémarrage aspire resource start — chaque affirmation de la lecture correspond à une ligne d'output.
    • Redémarrage complet : 94 écritures pas encore sur disque / dernier instantané il y a 40 s / AOF actif : False explique la perte ; tours=0, etag=(aucun) relu, volumes montés = aucun, conteneur orphelin laissé par aspire stop et retiré (1), appartenance repartie à zéro.
    • Témoins d'exercices conformes aux claims MD[38] : ex1 « aucun volume, le Redis redémarre vide » (imprimé), ex2 « attribut (aucun) + sous 16 » (imprimé), ex3 « le rejeu ajoute un second tour » avec trois ETag distincts (0e51…→c357…→1fbe…, imprimés).
    • Garde SOTA : 4 booléens True — versions résolues par NuGet (Orleans 10.3.1 + Clustering.Redis 10.3.1 + Persistence.Redis 10.3.1, Aspire.StackExchange.Redis 13.4.6), AppHost déclarant clustering/stockage/répliques, UseOrleans() sans argument vérifié au crible hors commentaires, serveur réel redis:8.6.

    Notes (non-findings, vérifiés) :

    • « Mesuré avec la CLI 13.5.2 et l'AppHost 13.4.6 » (limites honnêtes) : la version de CLI n'est imprimée par aucun output (seul « CLI Aspire presente : True » l'est ; l'AppHost 13.4.6 l'est via la garde SOTA). C'est une métadonnée d'environnement de la mesure orphelin — dont le résultat (conteneur encore en marche après aspire stop, retiré par identifiant : 1) est imprimé deux fois. Non contredite par les outputs, pas déposée.
    • Les PID du describe initial (30904/30894) diffèrent de ceux rapportés ensuite par les activations (31027/31016) : deux sources distinctes (propriété executable.pid d'Aspire vs PID rapporté par le grain via l'API). Aucune claim de prose ne relie les deux ; « autre process / PID différent » s'appuie uniquement sur la seconde source, internement cohérente d'une cellule à l'autre.
    • Politique d'hygiène codée dans le LabShell avec sa portée exacte : le jeton du dashboard est réellement masqué dans l'output committé (?t=<jeton local omis>), et la regex des chemins locaux est bornée par construction aux lecteurs isolés Windows (C:\…, lookbehind documenté) — le chemin Unix /root/.aspire/logs/… visible en sortie ne viole pas la portée codée, et aucune prose ne revendique une hygiène plus large. Écart net avec le stale-claim relevé au cycle 485 sur le notebook 02 (claim de prose « aucun chemin machine » falsifiée par 5 outputs) : ici l'hygiène est un mécanisme montré, pas une assertion.

    Couche pédagogique : peau d'apprenant — aucun gap. Le tableau 01/02/03 d'intro installe le delta (appartenance Redis vs UseLocalhostClustering, répliques, zéro code d'infra au silo) ; la génération est introduite en §4 avant que l'arrêt propre ne la rende visible, et le redémarrage complet en exploite la conséquence (table repartie à zéro) ; l'appartenance est vue de trois points de vue (runtime IManagementGrain, hash Redis brut, proxy HTTP) avant toute conclusion ; chaque scénario de mort isole une variable — l'annonce (arrêt propre), le silence (Process.Kill + sondes), la perte totale (Redis lui-même) — et l'activation unique (8 tours, activations distinctes : 1, throw sinon) précède le placement qui la complique. La lecture du placement est le meilleur moment du notebook : elle calcule pourquoi la colocalisation n'est pas garantie puis fait vérifier par l'exercice que le compteur a bougé. Exercices sans leak (indices directionnels, solutions vérifiées solubles tenues hors du dépôt, classe Verif à trois issues témoin/à revoir/OK). Limites honnêtes closes en tableau (Redis sans réplication, 2 silos/1 machine, pas de client externe, proxy de dev, geste de nettoyage à revérifier sur version ultérieure).

    Claims structurelles vérifiées contre l'arbre : OrleansClusterLab/ = apphost.cs, Silo/Program.cs, Silo/Grains.cs, Silo/Silo.csproj, aspire.config.json — conforme à l'annonce §1.

    Case cochée : Integrations-DotNet/Orleans/04-Orleans-Aspire-Cluster-Redis.ipynb — série Orleans soldée 4/4 (01: 1 finding stale-claim sur 4 notebooks, 02, 03, 04 : 0).

  11. jsboige commented on Oct 6, 2026

    @jsboige
    OwnerAuthor

    Audit NanoClaw cycle 488 — GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-1-Chatbots/configurer-chatbots-par-l-api.ipynb (lane #17073, fire 18:05Z)

    Première entrée NC dans la série AI-Engine-WordPress (20 notebooks, dont 03-1-Chatbots = 7).

    Passe mécanique : 21 cellules (md=14, code=7), ec 1→7 séquentiel, 14 headers distincts, 0 doublon Jaccard>0.55, 0 CJK, nbformat 4.5, kernel python3, fichier 28 714 o.

    Findings : 3 (stale-claim ×3).

    1. Cellule MD[11] id=39280045 (repris en MD[20] id=0e3d80ab) — extrait : « maxTokens du document n'est pas une borne stricte. Mesure sur cette instance : maxTokens à 96 dans le JSON du chatbot, le modèle a produit 3775 tokens. Passe au niveau de la requête (champ maxTokens du POST /ai/completions), le plafond est respecté — mais la réponse peut alors être vide » — classe : stale-claim — pourquoi : les valeurs citées (96 → 3775, puis « 128 tokens, 0 caractère visible » en Provenance) ne figurent dans aucun output committé et contredisent la table imprimée deux cellules plus haut (maxTokens 1024 chez valmont et comite) ainsi que les tokens réels committés (completion_tokens 1828/2001) — l'apprenant ne peut rien vérifier, alors même que le phénomène enseigné (le plafond document n'est pas une borne : 1024 → 1828/2001) est prouvé par les outputs de cette exécution.

    2. Cellule MD[11] id=39280045 — extrait : « Si la différence compte (moderation, filtrage, role metier), il faut la verifier par la mesure, jamais la supposer — c'est la lecon des grains 7-8 de cadrer-les-agents.md. » — classe : stale-claim — pourquoi : le document cible (lien valide, fichier présent) ne contient aucun « grain » — ses sections sont « Mécanisme 1 — cadrer par le catalogue », « Mécanisme 2 — cadrer par le prompt », « Le piège central »… — le renvoi interne « grains 7-8 » ne correspond à aucune structure existante du document pointé.

    3. Cellule MD[1] id=1aea394a — extrait : « | configurer-chatbots-par-l-api (ce notebook) | lire, dupliquer, écrire et interroger des chatbots | | notebooks suivants | RAG/embeddings, agents MCP, formulaires, WooCommerce | » — classe : stale-claim — pourquoi : trois des quatre volets annoncés existent (03-3 RAG-et-Embeddings, 03-4 MCP-Server, 03-2 Forms) mais aucun notebook WooCommerce n'existe dans l'arbre (mesuré sur main, casse insensible) et le README racine de la série ne mentionne WooCommerce que comme contexte du terrain livresagités (catalogue de la boutique) — le panorama de série annonce un volet notebook inexistant.

    Croisements prose↔outputs exacts (non-findings) : trois botId (default/valmont/comite) et 54 champs par document ; gpt-5.5/0.8/4096 vs qwen3.6-35b-a3b/0.6/1024 exacts dans la table ; « Ecriture acceptee : True » + relecture ['default','valmont','comite'] + « instructions persistees : True » ; la même question posée mot pour mot aux deux personas ; la mesure de vocabulaire partagé imprimée (49/100 (49%)) sans être figée par la prose, avec l'avertissement de non-déterminisme — la variabilité est enseignée au lieu d'être cachée. Le lien ../../../cadrer-les-agents.md résout bien vers Plateformes-Conversationnelles/cadrer-les-agents.md (c'est la référence interne qui est morte, pas le lien). Le renvoi « livresagites-parcours.md, parcours 0 : module Client » aboutit en deux sauts : le Parcours 0 est un bandeau de déménagement explicite vers 01-Architecture/architecture-en-modules.md, qui porte bien les trois familles Client / Server / Admin — redirection fonctionnelle, non déposé. « apiKey est vide sur les chatbots de cette instance » : métadonnée d'environnement non contredite par les outputs (l'allowlist interdit par construction d'imprimer la valeur). « Chaque exercice se vérifie d'une ligne de test » : aucune ligne de test n'est fournie dans le fichier, mais la phrase reste lisible comme une propriété des exercices (« vérifiable d'une ligne ») — pas prouvable comme faute, non déposé.

    Gates #17040 : une lecture markdown par output de code, placée après (MD[5]←CODE[4], MD[8]←CODE[7], MD[11]←CODE[10]) ; zéro narration d'exercice (stubs vides, aucune solution) ; aucune prose de remplissage.

    Couche pédagogique : peau d'apprenant — arrivée impeccable. L'ordre canonique est confirmé par le README 03-Functional : la chaîne « par son API » commence par presenter-ai-engine-par-son-api (placé dans 03-5, les dossiers sont thématiques, pas séquentiels — le README l'explicite), puis ce notebook — le positionnement « deuxième de la série » de MD[0] est correct. Le survol du notebook 1 montre que tous les prérequis y sont posés : mêmes helpers (api(), clean_text(), extrait()), catalogue des routes mwai/v1, les chatbots en lecture (sa section 3), une première completion réelle sur valmont (sa section 4) — zéro gap. La progression lire → écrire (read-modify-write, idempotence posée AVANT le POST qui l'utilise) → interroger (mesure comparative) est exactement décomposée ; l'exercice 3 compose les exercices 1+2 avec copier_configuration() déjà vue ; la découverte « un chatbot est un document JSON » est introduite par l'output (54 clés imprimées) avant d'être commentée. Les deux réponses LLM sont interprétées une fois chacune, la mesure honnête du persona (« oriente, ne garantit pas ») est le meilleur moment pédagogique du notebook. Prose aérée, trois niveaux de lecture annoncés et tenus, limites closes en Provenance.

    Note de série : les 3 stale-claims relèvent de la même famille que les ratés documentés aujourd'hui sur #17073 pour l'organe check_stale_claims (#18354) — deux sont des renvois inter-documents (grains 7-8, WooCommerce) que l'organe ne couvre pas s'il ne vérifie que les valeurs citées vs outputs. Sous le seuil « >3 occurrences » : dépôt individuel, pas de proposition d'organe de ma part ; l'information est versée ici pour la lane qui suit #18354.

    Case cochée : GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-1-Chatbots/configurer-chatbots-par-l-api.ipynb (1ʳᵉ de la série AI-Engine-WordPress).

  12. jsboige commented on Oct 6, 2026

    @jsboige
    OwnerAuthor

    Audit NanoClaw cycle 489 — GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-1-Chatbots/donner-une-memoire-ephemere-au-chatbot-par-l-api.ipynb (lane #17073, fire 21:05Z)

    Passe mécanique : 27 cellules (md=16, code=11), ec 1→11 séquentiel, 12 headers distincts, 0 doublon Jaccard>0.55, 0 CJK, nbformat 4.5, kernel python3, fichier 40 175 o.

    Findings : 3 (stale-claim ×3).

    1. Cellule MD[17] id=55937dd8 — extrait : « Le refus attendu est 403 « No authorized files to delete » — a distinguer soigneusement du 400 « No valid files to delete » du contrat mal forme (section suivante) : le premier dit ce fichier n'est pas a toi, le second dit je ne trouve aucun fichier dans ta demande. » — classe : stale-claim — pourquoi : le code 403 et son message exact sont cités verbatim (et la distinction 403/400 est le cœur du propos de la cellule) alors que l'unique output committé du test croisé (CODE[16] ec=6) dit « VALMONT_ADMIN_PASSWORD absent : test croise non execute » — aucune sortie de ce run ne porte ce 403, et le Bilan le réaffirme (« 403 croise pour l'etranger ») : invérifiable par l'apprenant qui exécute le notebook tel qu'il est committé.

    2. Cellule MD[22] id=7e154c54 — extrait : « Cinq routes, dont download et finetune — la derniere ouvre la porte au ajustement de modeles depuis les fichiers de l'installation (une fonctionnalite dont la gratuite ne montre que la porte). » — classe : stale-claim — pourquoi : la cellule censée l'imprimer (CODE[21] ec=8, « la carte du miroir admin ») n'a aucun output committé (vérifié dans le JSON brut du fichier) — ni « cinq routes », ni download, ni finetune ne sont étayés par la moindre sortie du notebook, alors que la lecture en tire une leçon de contraste entre les deux namespaces.

    3. Cellule MD[1] id=910dfb27 (dernière ligne de la table de série, clôturée par le Bilan MD[22] : « Avec cette dixieme note, la serie a couvert les quatre faces, la regie des environnements, les donnees structurees, l'autorisation deleguee et la memoire ephemere. ») — extrait : « | donner-une-memoire-ephemere-au-chatbot-par-l-api (ce notebook) | fichiers : la memoire ephemere | » — classe : stale-claim — pourquoi : le README 03-Functional (ordre canonique restauré, note de méthode docs(ai-engine,#12127): tranche 5 — 03-Functional/ + 19 notebooks reclassés #13434) compte onze notebooks dans la chaîne « par son API » — joindre-un-fichier-au-chatbot-par-l-api.ipynb (11ᵉ, « ferme le dossier pièces jointes » : comment un fichier téléversé entre-t-il dans une completion) existe sur main mais n'apparaît ni dans la table ni dans le Bilan, qui donne la série pour close à dix notes — l'apprenant qui arrive par ce panorama rate la suite directe du notebook qu'il vient de lire.

    Croisements prose↔outputs exacts (non-findings) : TTL « exactement 1:00:00 — 60 minutes » vérifié par la soustraction committée ; 400 « Purpose is required. » verbatim ; refId = 32 caractères hexadécimaux, nom du fichier dans l'URL rendue (comparaison octet pour octet True) ; fiche id: 4/userId: 4 sur carte vide ; « expire a : 0:59:59.686609 » et « 0,31 seconde s'est deja ecoulee » (3600 − 3599,686609 = 0,313 s) ; 400 « No valid files to delete » cette fois mesuré (output de CODE[18]) ; {'success': True, 'deleted': 1} puis total final : 0 — le cleanup rend l'état initial, prouvé par total. La coupure du flux stdout de CODE[12] (« total : » / « 1 » en deux morceaux) est un artefact de flux, pas du notebook.

    Non-findings arbitrés : « un appel a files/list sur une instance propre rend zero fichier » vs id: 4 — l'écart est assumé et enseigné par le notebook lui-même (« la carte ment par omission », MD[13]) ; « deux uploads du meme contenu recevront deux refIds differents » est explicitement marqué « deduit du role du refId et non mesure dans ce run » — la distinction prouvé/raisonné est déclarée, c'est la discipline de la série ; « le code du plugin montre » (partition des visiteurs anonymes par session) est présenté comme lecture du code externe, pas comme une mesure de run, et n'est contredit par aucun output. Renvis inter-documents vérifiés : « grain 6 » = parler-au-chatbot-en-visiteur et « grain 9 » = interroger-lassistant-de-lediteur conformes à l'ordre du README ; les trois routes mwai-ui/v1/files/* sont bien visibles dans la carte de routes du grain 9 ; « le sondage » et « les quatre faces du grain precedent » sont la langue de la série (constatés dans g9).

    Gates #17040 : chaque lecture suit la cellule qu'elle lit, une lecture par output (CODE[18] porte trois outputs, lus par MD[20] pour les refus et MD[19] pour le total final) ; zéro narration d'exercice (stubs pass, cahier des charges sans solution) ; pas de prose de remplissage.

    Couche pédagogique : peau d'apprenant — arrivée exemplaire en 10ᵉ de la chaîne. Les prérequis sont déclarés (instance jetable, VALMONT_EDITOR_PASSWORD posée par le grain 8, uploads www-data) et le helper login_wordpress + nonce_de_wpadmin est redéfini in extenso : aucun gap même sans relecture. La progression — carte vide → refus (purpose) → upload réel → TTL vérifié par soustraction → propriété → delete par refus → miroir admin — décompose la difficulté à chaque étape, et l'exercice 2 rattrape proprement le test croisé sauté. Les meilleurs moments : « la carte ment par omission » (l'id interne qui ne redescend jamais) et les trois précautions du TTL (la fiche declare sans executer ; photographie, pas chronometre ; horodatages naifs) — niveau d'honnêteté rare. Chaque sortie est interprétée une fois (frontière #13410 respectée). Les trois stale-claims sont d'autant plus regrettables qu'ils contredisent la discipline affichée par le notebook lui-même (« distinguer ce qui est prouve par les sorties de ce qui s'enonce par raisonnement », MD[10]).

    Note de série : 3ᵉ cycle consécutif à exactement 3 stale-claims sur AI-Engine-WordPress (488, 489). Deux des trois présents (le 403, les cinq routes) sont des valeurs citées hors outputs — la famille même des ratés documentés pour l'organe check_stale_claims (#18354) ; le troisième (table de série incomplète vs README) est un renvoi inter-document qu'un organe valeurs-seul ne couvre pas. Toujours ≤3 occurrences : dépôt individuel, pas de proposition d'organe de ma part ; l'information est versée pour la lane #18354.

    Case cochée : GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-1-Chatbots/donner-une-memoire-ephemere-au-chatbot-par-l-api.ipynb (2ᵉ de la série AI-Engine-WordPress).

  13. jsboige commented on Oct 6, 2026

    @jsboige
    OwnerAuthor

    [NanoClaw] Audit #17073 — cycle 490 — Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-1-Chatbots/interroger-lassistant-de-lediteur-par-l-api.ipynb (grain 9/11 de la chaîne « par son API », case cochée, 12/268)

    Extraction

    47 322 o → 28 cellules (15 md / 13 code), ec=1..13 séquentiel, kernel python3, cjk=0, 0 doublon Jaccard, 0 header identique (rien pour #17066). Lecture intégrale des markdown (26,7 Ko, sous le plafond) + sorties texte intégrales.

    Findings

    1. stale-claim — renvoi « grain 21 » inexistant

    • Cellule : MD[20]
    • Extrait : « le serveur refuse avec "The environment is required." : exactement l'erreur à froid du grain 21, ici déclenchée par le client »
    • Classe : stale-claim
    • Pourquoi : le parcours n'a aucun grain 21 (chaîne canonique = 11 grains ; census des renvois sur les 20 notebooks : partout 1..10, « 21 » unique à cette cellule) — l'erreur « à froid » est celle du grain 7 (obtenir-donnees-structurees, qui la cite en MD d'intro et la reproduit « Appel à froid » en section 1, vérifié firsthand).

    2. stale-claim — chatId cité sans aucun output

    • Cellule : MD[12]
    • Extrait : « Le contrat réel est newMessage — et il s'accompagne d'options découvertes de la même façon : instructions, messages, envId, model, chatId »
    • Classe : stale-claim
    • Pourquoi : chatId n'apparaît dans aucune cellule de code ni aucun output committé (0 occurrence sur le notebook entier) ; le Bilan cite correctement les quatre champs validés — la phrase sur-déclare ce que le run prouve (gate Redressement campagne densité #13410 : remplissages dégénérés — 233 notebooks, 20 paquets d'audit #17040 : valeur citée absente des outputs).

    3. mineur — paraphrase-stack intra-cellule

    • Cellule : MD[18]
    • Extrait : « rend "Le lynx.". La mémoire n'a jamais été dans le serveur. La mémoire de conversation n'est pas dans le serveur : elle est à la charge du client, qui renvoie le fil »
    • Classe : paraphrase-stack
    • Pourquoi : même proposition énoncée deux fois de suite — couture d'édition, une des deux phrases à retirer.

    Vérifications fondées (positives)

    Position 9/11 exacte dans la chaîne canonique du README 03-Functional ; table MD[1] = grains 1..8 exacte ; « tour des faces » clos à 9 sans contradiction avec les grains 10-11 (pièces jointes, ouverts ensuite) ; prérequis consent.editor correctement attribué au grain 8 ; tous les recoupements citations/outputs fondés (403 rest_cookie_invalid_nonce, 400 « Empty message. », usage 45/10/55 soit « 10 tokens pour sept mots », L'éléphant./Lion., Chat/Le lynx. avec False/True, envId 200 / model 500) ; frontière #13410 respectée (une lecture par output, aucune empilée) ; exercices calibrés sur les sections 5/7/9. Pédagogie saine : renvois grains 1/2/4/5/6/8 tous exacts.

    Famille #18354 (stale-claims de renvoi sur cette série) : 4e cycle consécutif touché, 2 occurrences ici (sous le seuil d'organe).

    — NanoClaw (myia-ai-01) [audit 22:2xZ]

  14. jsboige commented on Oct 6, 2026

    @jsboige
    OwnerAuthor

    [NanoClaw] Audit #17073 — cycle 491 — GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-1-Chatbots/joindre-un-fichier-au-chatbot-par-l-api.ipynb (grain 11/11 de la chaîne « par son API », case cochée ci-dessous — 13/268)

    Extraction

    42 877 o → 26 cellules (16 md / 10 code), ec=1..10 séquentiel, kernel python3, cjk=0, 0 doublon Jaccard, 0 header identique (rien pour #17066). Lecture intégrale des markdown (29,4 Ko, sous le plafond) + sorties texte intégrales.

    Findings — classe stale-claim ×4 sur ce grain : seuil >3 atteint → organe proposé sur #17073

    1. stale-claim — renvoi « grains 3 et 9 » fautif sur le 3

    • Cellule : MD[25] (Bilan)
    • Extrait : « Le fil de la serie croise ici trois lecons anterieures — le contrat decouvert par refus (grains 3 et 9), le silence des couches qui ne signalent pas ce qu'elles droppent (grain 7) »
    • Classe : stale-claim
    • Pourquoi : le grain 3 (administrer-les-formulaires) ne contient aucun refus committé (0 × « refus », 0 × 400/403 — son contrat y est « ecrit par l'experience », via « erreur exploitable ») ; le grain du contrat-par-refus est le 6 (parler-au-chatbot-en-visiteur : « reponse est un refus sec », refus.status_code, « le nonce a refuse »), aux côtés du 9 (403 rest_cookie_invalid_nonce + 400 « Empty message. », vérifié cycle 490). Le couple correct est 6 et 9 — même famille [Audit #17073] Implémenter les organes stale-claim et factual-mislabel (gates) — en retard 8 j / 0 j #18354 que le « grain 21 » du cycle 490.

    2. stale-claim — newFileIds cité sans aucun output

    • Cellule : MD[6]
    • Extrait : « La route lit newFileId (et sa forme plurielle newFileIds), pas fileId »
    • Classe : stale-claim
    • Pourquoi : la forme plurielle newFileIds n'apparaît dans aucune cellule de code ni aucun output committé (1 occurrence au total du notebook = la citation elle-même) ; seul le singulier est prouvé par le run (cellules code 7 et 14) — la parenthèse sur-déclare le contrat (gate Redressement campagne densité #13410 : remplissages dégénérés — 233 notebooks, 20 paquets d'audit #17040), même classe que chatId au cycle 490.

    3. stale-claim — anecdote de run non committé

    • Cellule : MD[13]
    • Extrait : « la premiere image de test etait un unique pixel semi-transparent, et la reponse « surface verte claire et unie » etait exacte (le pixel etait vert a moitie opace) »
    • Classe : stale-claim
    • Pourquoi : la réponse citée entre guillemets n'existe dans aucun output committé — 0 occurrence sur les 20 notebooks du sous-arbre AI-Engine-WordPress (seule la citation elle-même matche) ; le lecteur ne peut ni la vérifier ni la rejouer (même sous-classe que le 403 « No authorized files » du cycle 489).

    4. stale-claim — « 74 caracteres » contre un canary committé de 71

    • Cellule : MD[15]
    • Extrait : « Etre vu coute plus cher que lire. Le canary texte fait 74 caracteres ; entre dans le prompt comme message, il couterait de l'ordre de sa propre longueur »
    • Classe : stale-claim
    • Pourquoi : le canary committé (CANARY = "MON-SECRET-EXTERNE-7341 : le colibri de Valmont dort au nord du jardin.", source de la cellule code 5 + écho en output) mesure 71 caractères (mesuré depuis le fichier) ; la valeur citée est fausse — la déduction qui suit (« une quinzaine de tokens ») vaut pour 71 comme pour 74, l'erreur est purement factuelle.

    Vérifications fondées (positives)

    Position 11/11 exacte : table MD[1] = chaîne canonique des 11 grains, croisée exacte avec le README 03-Functional. Renvis fondés : « sixieme grain » = face visiteur/session anonyme ✓ ; « null silencieux du septieme grain » ✓ (7 occurrences explicites dans obtenir-des-donnees-structurees) ; « mesure par effet de bord observable » grain 10 ✓ (TTL par soustraction, cycle 489) ; 400 « Purpose is required. » du grain précédent ✓ (3 occurrences dans ses outputs committés) ; partition du dixieme grain ✓. Tous les constats du run sont fondés : 200 silencieux fileId (canary False, purpose inchangé, 105 tokens) ; newFileId → purpose analysis + query_session 862bcbf0 ≠ sessionId soumis 2aa021cc, query_envId vide, 105 ; PNG construit et auto-décodé (pixels (200,30,30)/(30,60,200) exacts) ; « Les deux couleurs dominantes sont le rouge et le bleu. » + rouge/bleu True + 170 ; contrôle négatif (réponse vide, rouge False) ; nettoyage delete 2 / total final 0. Arithmétique MD[15] (105 plancher, +65 pour 128 pixels) fondée sur les outputs. Frontière #13410 respectée (une lecture par output, aucune empilée). Cosmétique : coquilles isolées (« opace », « Le sonde du jour »).

    Famille #18354 : 5e cycle consécutif touché — 9 occurrences de stale-claim sur les 3 derniers grains (10 : 3, 9 : 2, 11 : 4). Seuil >3/notebook atteint ici → proposition d'organe déposée sur #17073.

    — NanoClaw (myia-ai-01) [audit 23:2xZ]

  15. jsboige commented on Oct 7, 2026

    @jsboige
    OwnerAuthor

    [NanoClaw] Audit #17073 — cycle 492 — GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-1-Chatbots/parler-au-chatbot-en-visiteur-par-l-api.ipynb (grain 6/11 de la chaîne « par son API », case cochée ci-dessous — 14/268)

    Ordre canonique et niveau PROPOSÉS (inchangés, cf. cycles 488-491, à valider par le user) : 1 presenter → 2 configurer-chatbots → 3 administrer-les-formulaires → 4 piloter-wordpress-par-mcp → 5 brancher-plusieurs-providers → 6 parler-au-chatbot-en-visiteur (ce cycle, position 6/11 exacte) → 7 obtenir-des-donnees-structurees → 8 autour-du-consent-oauth → 9 interroger-lassistant-de-lediteur → 10 donner-une-memoire-ephemere → 11 joindre-un-fichier ; niveau apprenant proposé : intermédiaire (REST WordPress + cycle session/nonce ; la série garde son arc admin → agent → visiteur).

    Extraction

    29 041 o → 25 cellules (16 md / 9 code), ec=1..9 séquentiel, kernel python3, cjk=0, 0 doublon Jaccard, 0 header identique (rien pour #17066). Lecture intégrale des markdown (19 Ko, sous le plafond) + sorties texte intégrales.

    Garde-fou population VERT : 763 = 763 (added 0 / removed 0, head 6aa6ba8d) ; blob audité 82a0a0b5 = contenu extrait (sha vérifié). Skip : aucun — les 160 PR ouvertes de CoursIA contrôlées fichier par fichier, zéro ne touche AI-Engine-WordPress (une seule PR au-delà du cap de 80 fichiers, #19502, vérifiée par pagination complète : 108 fichiers, aucun GenAI).

    Findings — classe stale-claim ×3 sur ce grain

    1. stale-claim — « neuf champs » contre 8 champs committés

    • Cellule : MD[16] (id 5a10691a)
    • Extrait : « reply reelle, usage compte (prompt 77 | completion 1388), neuf champs de reponse dont actions, blocks, images »
    • Classe : stale-claim
    • Pourquoi : l'output committé de la cellule code 5 (ec=5) liste 8 clés — ['actions', 'blocks', 'images', 'reply', 'responseId', 'shortcuts', 'success', 'usage'] — et le compte « neuf » n'apparaît dans aucun output : c'est un compte dérivé d'une liste imprimée (angle mort (a) de l'organe [Audit #17073] Implémenter les organes stale-claim et factual-mislabel (gates) — en retard 8 j / 0 j #18354), donc invisible pour un contrôle appariement nombre-à-nombre.

    2. stale-claim — « six routes » contre « cinq routes » pour le même objet, à deux cellules d'écart

    • Cellule : MD[5] (id 74743b15), contre MD[3] (id 1e7ccd31)
    • Extrait : « La liste des six routes de mwai-ui/v1 se lit comme un cahier des charges du visiteur : soumettre un chat (chats/submit), un editeur (editor/submit), gerer des fichiers (upload, list, delete) »
    • Classe : stale-claim
    • Pourquoi : les deux lectures décrivent le même output (cellule code 1, ec=2) avec deux comptes différents — MD[3] écrit « cinq routes seulement », MD[5] « six routes » tout en n'énumérant que 5 endpoints ; l'output imprime 6 lignes dont la première (/mwai-ui/v1) est l'index du namespace, pas une route. Quel que soit le compte retenu, une des deux cellules est fausse (compte dérivé, même angle mort (a)).

    3. stale-claim — le handshake attribué à mwai-ui/v1 alors que la cellule poste dans mwai/v1

    • Cellule : MD[10] (id 3a7eec59), contre la cellule code 3 (id 35adba2f) et MD[24] (id 463396c0)
    • Extrait : « Le handshake mwai-ui/v1 rend quatre choses, et chacune a son role dans la conversation a venir. »
    • Classe : stale-claim
    • Pourquoi : l'amorçage est posté sur /wp-json/mwai/v1/start_session (cellule code 3) et la section « Provenance et limites » du notebook le liste elle-même en « endpoint verifie ici (firsthand) : ... POST /mwai/v1/start_session » — or mwai/v1 est le namespace de l'administrateur selon la table MD[3], tandis que mwai-ui/v1 n'expose que chats/submit, editor/submit, files/{upload,list,delete} : le renvoi de namespace est faux des deux côtés (sous-famille « attribution fautive », rejointe par le grain 4 qui touche lui aussi mwai/v1, mesuré ×7 dans ses sources committées).

    Vérifications fondées (positives)

    Position 6/11 exacte (table MD[1] = chaîne canonique, grain 6 « la face navigateur : session, nonce, conversation anonyme » ✓). Toutes les valeurs citées sont présentes dans les outputs : sessionId 5024de59..., nonce dd9b3f..., prompt 77 | completion 1388, GET /discussion-valmont/ -> 404, 401 | rest_forbidden, 7 namespaces, botId default, stream True. Renvoi MD[14] « comme le 401 du serveur MCP, grain 4 » fondé (vérifié dans les sources committées du grain 4 : 401 ×5, « forbidden » ×4, « refus » ×4). « Les cinq sections » ✓ (5 sections numérotées dans les commentaires de code). Frontière #13410 respectée : une seule lecture par output, aucune empilée ; la lecture des null (MD[8]) porte sur les deux clés imprimées, sans doublon. Outputs non fake : une seule complétion LLM réelle, texte variable annoncé comme tel (MD[13]/MD[24]), tokens non ronds (77/1388/1465), 9/9 cellules exécutées en séquence. Exercices : la formule « Chaque exercice se verifie d'une ligne de test » est une convention de série (formulation et stubs identiques sur le grain 3, return [], sans cellule de test là non plus) — pas un défaut propre à ce grain, rien déposé.

    Famille #18354 — organe stale_claims

    6ᵉ cycle consécutif touché : 7 occurrences de stale-claim sur les 4 derniers grains (10 : 3, 9 : 2, 11 : 4, 6 : 3). Les 3 instances de ce cycle sont versées à la proposition d'organe déjà déposée sur #17073 (c.5753922238 / c.5755052253 / c.6027293394), sans amendment : elles relèvent des deux sous-familles existantes (« compte dérivé d'une liste imprimée » ×2, « attribution de namespace » ×1). Au-delà du seuil >3/notebook, les occurrences suivantes de cette classe ne seront plus déposées individuellement — elles iront à l'organe.

    — NanoClaw (myia-ai-01) [audit 00:1xZ]

  16. 66 remaining items

  17. jsboige commented on Oct 10, 2026

    @jsboige
    OwnerAuthor

    [NanoClaw — cycle 559, 10/10 08:16Z] — série GenAI / Audio (02-Advanced)

    Notebook : MyIA.AI.Notebooks/GenAI/Audio/02-Advanced/02-4-Demucs-Source-Separation.ipynb — 37 cellules (23 md / 14 code), 13 118 007 o (WAV embarqués), blob main a617a58f, extraction first-hand (0 lecture de JSON brut). Run committé 2026-08-20 19:20:24→19:20:32, Mode batch, device cuda (RTX 3090), ec 1→14 strictement séquentiels, CJK 0, doublons Jaccard AUCUN, 33 headers sans paire identique. Nav « << 02-3 MusicGen » / « Suivant >> 03-Orchestration/03-1 » : les deux cibles résolues contre l'arbre git du head, OK. Avec ce carnet, le dossier Audio est complet (plus aucun reste sur 01-/02-/03-/04-).

    F1 — fake-output · code 29 id=3f9669c0 · « STATISTIQUES DE SESSION … Date : 2026-08-20 19:20:32 … Resume des stems separes : drums : RMS=0.0260, Peak=0.5033 … vocals : RMS=0.0081, Peak=0.1623 » · les sorties committées de ce run se contredisent entre elles : (a) chronologie impossible — code 4 (ec=3) imprime le départ « Date : 2026-08-20 19:20:24 », code 10 mesure « Modele charge en 1.7s », code 17 mesure « Separation terminee en 15.31s », donc la séparation ne peut se terminer avant ~19:20:41, or code 29 (ec=12) imprime « 19:20:32 » — l'épilogue est horodaté ~9 s AVANT la fin de la séparation qu'il récapitule ; (b) code 29 réimprime le dict stem_results rempli par code 17 avec des valeurs différentes (vocals RMS 0.0119→0.0081 soit −32 %, other Peak 0.4829→0.5368 soit +11 %) — rien entre ec=7 et ec=12 ne mute ce dict. Les sorties proviennent d'au moins deux exécutions cousues dans un run affiché ec 1→14 (gate #17040, outputs fake).

    F2 — paraphrase-stack · md 30 id=27887774 + md 31 id=876f56bd · « ## Exemple guide : Separation et Remixage Creatif avec Metriques de Qualite … 1. Créer une fonction separate_and_evaluate qui : … 3. Experimentation creative : … Un remix "karaoke" … un remix "acapella" … calculer le SDR (Signal-to-Distortion Ratio) approximatif » puis « ## Section 5 : Exemple guide Pratique - Pipeline de Separation avec Metriques … vous implementerez deux fonctions principales » · le même exercice guidé est posé deux fois à la suite : md 30 donne l'énoncé complet (mêmes deux fonctions, mêmes 3 remixes, même SDR, avec indices), puis md 31 re-pose le brief paraphrasé avant les stubs (code 32 id=607151a5 implémente exactement separate_and_evaluate + create_custom_remix) — empilement typique campagne densité, invisible au Jaccard car c'est une paraphrase, pas une copie.

    F3 — navigation-misplaced · md 31 id=876f56bd · « ## Section 5 : Exemple guide Pratique - Pipeline de Separation avec Metriques » · la Section 5 s'ouvre après la cellule de clôture du carnet : code 29 (ec=12) imprime « PROCHAINES ETAPES … Notebook Demucs Source Separation termine - 19:20:32 » et la conclusion (md 36) n'arrive qu'après les exercices — les Sections 1 à 4 précèdent toutes leur code, la 5e et ses exercices vivent après l'épilogue statistique.

    stale-claim ×4 — comptées, organe #18402 (cumul Audio 67 → 71) :

    1. md 0 id=160674c7 · « Technologies : Meta Demucs v4 (htdemucs_ft), ~4 GB VRAM » (+ prérequis « GPU NVIDIA avec au moins 4 GB VRAM ») vs OUT[10] « VRAM utilisee : 0.64 GB » — écart ×6.
    2. md 11 id=3a59dc27 · « | Temps de chargement | runtime machine-dep : 2.6s (observe) | » vs OUT[10] « Modele charge en 1.7s » — la valeur « observée » (2.6 s) n'existe dans aucune sortie committée (+53 % vs 1.7 s) ; les 3 autres lignes du tableau sont exactes.
    3. md 18 id=fadb1259 · « 15.31 s pour 10 s d'audio signifie que la séparation n'est pas un traitement temps réel — un morceau de 3 minutes demande une quarantaine de secondes » — l'extrapolation du ratio mesuré (1,53×) donne ~276 s (~4 min 35 s), facteur ~7 : la phrase se contredit dans sa propre lecture.
    4. md 21 id=4b3a362e · « | Boost basse | Augmenter bass +3dB | » vs OUT[22] « Bass boost (+6dB) : {'drums': 1.0, 'bass': 2.0, 'vocals': 1.0, 'other': 1.0} » — les 3 autres lignes du tableau des cas d'usage correspondent aux 4 remixes exécutés, celle-ci non.

    Mineurs comptés, non déposés : md 7 id=99061a39 « ## Dependances GPU Optionnelles … Pour les activer: / Sans ces dependances, le notebook s'executera en mode API uniquement » — template inachevé (la liste annoncée par « Pour les activer: » n'existe pas) et contredit frontalement md 5 id=83a69f24 « Demucs est un modèle entièrement local … aucune cle API n'est requise » à deux cellules d'écart — récidive ×3 (cycles 557 01-5 Kokoro, 558 02-1 Chatterbox, 559) ; code 2 id=95a99de8 « BATCH_MODE = "true" » paramètre orphelin (jamais lu — code 26 teste notebook_mode/skip_widgets), déjà compté sur 00-1, non re-déposé ; numérotation : « Exercice 1 » (md 19), « Exercice 2 » (md 24), puis deux « Exemple guide » non numérotés (md 30, md 31), puis « Exercice 3 » (md 34) — deux consignes à rendre hors numérotation entre le 2 et le 3 (aval de F2) ; md 36 id=a97ba7c8 conclusion template au titre slug illisible (« les aspects essentiels de 02 4 demucs source separation »).

    Vérifié sans réserve : md 14 id=5ffb827c — les 4 caractéristiques du tableau = CODE[13] exactement (impulsions 120 BPM = interval 0,5 s ; basse 80 Hz ; voix 300±50 Hz ; accord C5/E5/G5 = 523,25/659,25/783,99 Hz), mix stéréo 10 s ✓ ; md 18 (hors instance n°3) — tableau « Valeur mesurée » exact ligne à ligne vs OUT[17] : 15,31 s, ratio ~1,5× recalculé juste, shape [1, 4, 2, 441000], les 8 RMS/crêtes ; md 23 id=a25190a4 — figure 5 axes + stems_waveforms.png + 4 remixes avec volumes exacts (colonne « Qualité résultante » qualitative, non vérifiable, non comptée) ; md 11 — VRAM 0,64 GB, 4 sources, 44100 Hz exacts ; exercices 1/2/3 — stubs TODO propres (code 20/25/35), indices exacts, 0 fuite de solution ; tableaux SDR « littérature » explicitement disclaimés (« pas des mesures de ce carnet »).

    Frontière #13410 (output-uninterpreted) : respectée — chaque sortie majeure porte sa lecture placée après son code (OUT[4]→md 5, OUT[10]→md 11, OUT[13]→md 14, OUT[17]→md 18, OUT[22]→md 23, OUT[26]→md 27), aucune lecture en double, aucun enrichissement ajouté.

    Skip : 0 — 136 PRs open croisées au pré-vol, aucune ne touche GenAI/Audio/02-Advanced ni Demucs.

    Garde population : VERT 772/772 (origin/main 07593d0bd, added 0 / removed 0, diff d'ensembles sur git ls-tree -r -z du clone blobless). Artefact organes ai-01 toujours absent de #17073 → aucune passe d'organes (python3 indispo au siège).

    Désignation 560 = GenAI/00-GenAI-Environment/00-7-Terminal-Long-Runs.ipynb (dernier non-audité du dossier 00-GenAI-Environment ; notebook le plus récent de la partition NC, ajouté 08/10 via PR #19803).

    — NanoClaw (myia-ai-01) [08:16Z]

  18. jsboige commented on Oct 10, 2026

    @jsboige
    OwnerAuthor

    [NanoClaw — cycle 560, 10/10 09:14Z] — série GenAI / 00-GenAI-Environment

    Notebook : MyIA.AI.Notebooks/GenAI/00-GenAI-Environment/00-7-Terminal-Long-Runs.ipynb — 25 cellules (15 md / 10 code), 35 611 o, blob main 2266bdd3, extraction first-hand (0 lecture de JSON brut). Run committé jeu. 2026-10-08 00:45:02 → 00:45:23 (horodaté par les sorties tmux elles-mêmes — cohérent avec l'ajout du carnet via PR #19803 le 08/10), ec 1→10 strictement séquentiels, CJK 0, doublons Jaccard AUCUN. Nav « ← 00-6 Local Docker Deployment » + lien README.md : les deux cibles résolues contre l'arbre git du head, OK (dernier carnet du dossier, pas de « Suivant », conforme). Avec ce carnet, le dossier 00-GenAI-Environment est complet (00-1 → 00-7).

    F1 — fake-output · md 12 id=286436d0 + code 6 id=2034852d · « la boucle for relève la progression toutes les 6 secondes. Le pattern est exactement ce qu'on applique à un vrai lake build : à chaque tick, capture-pane ramène les dernières lignes, on peut afficher un indicateur ou arrêter la boucle sur un mot-clé (lake build rc=0) » · les sorties committées de code 6 (ec=7) contredisent la narration : les quatre relèves capture-pane sont vides — --- t=6s ---, --- t=12s ---, --- t=18s --- puis --- fin --- sont chacune suivies de rien, alors que build_sim exécute echo "[$(date ...)] Compiling $module..." directement dans le pane (pas de redirection, contrairement à la démo 1) : la démonstration que la lecture décrit n'a pas eu lieu dans le run committé, et la ligne lake build rc=0 n'apparaît dans aucune sortie du carnet (gate #17040). La capture vide de code 3 (ec=4), elle, est expliquée (sortie redirigée vers /tmp/tmux-demo.log) — c'est le vide de code 6 qui invalide la prose.

    stale-claim ×1 — comptée, organe #18402 (cumul dossier 00-GenAI-Environment 0 → 1) :

    1. md 6 id=458fd695 · « après 6 secondes, le log montre les tick 1 à tick 3 — le for a bien tourné » vs OUT[code 2] (ec=3) : le log committé montre tick 1 at 00:45:02 … tick 4 at 00:45:08 — quatre ticks, pas trois ; le fond (session survolante) tient, la valeur citée est fausse.

    Mineurs comptés, non déposés : références de cellules « cellule 4 » (md 0), « cellule 7 » (code 7), « cellule 15 » (code 8) — vérifiées exactes en numérotation 1-indexée des cellules physiques, aucune faute ; md 13 « Le carnet doit s'exécuter end-to-end même non-complété » — vérifié : aucun raise, stubs pass, code 9 (ec=10) rend « Verdict supervise_tmux : None (attendu: OK) » sans erreur ; le carnet dévie du gabarit des siblings (pas de « ## 🎯 Objectifs d'Apprentissage / ## 📚 Prérequis », remplacés par « Pourquoi ce carnet » + prérequis inline md 0) — écart de style sans impact, non déposé ; 00-6 ne pointe pas en avant vers 00-7 (nav écrite avant l'ajout du 08/10) — hors périmètre ce cycle (00-6 déjà audité), compté.

    Vérifié sans réserve : md 3 — « tmux 3.x courant » / OpenSSH livré : OUT[code 0] « tmux 3.4 (rc=0) », « OpenSSH_9.6p1 » ✓ ; md 5 — « une ligne toutes les 2 secondes pendant 24 secondes » = code (12 × sleep 2) et ticks committés 00:45:02→00:45:23, session listée par tmux ls ✓ ; md 9 — mini-serveur « meurt avec elle (daemon=True + server.shutdown()) » = code exact, réponse « hello from WSL » ✓ ; md 10 — « un ps -ef | grep ssh montre les tunnels actifs » lu honnêtement : OUT[code 5] « aucun tunnel ssh détecté » ; md 12 (hors F1) — le bloc « Adaptation au vrai Lean » cite lake exe cache get et l'issue #19735, vérifiée open firsthand (« Lean-34 — lake build cold cache depasse le timeout 1800s en re-execution »), et le sibling Lean-03b-Formalized-Formal-Logic-Lean-Python.ipynb cité en md 14 existe dans l'arbre (1 match ls-tree) ; exercices 1/2/3 — stubs TODO propres, indices exacts, 0 fuite de solution ; honnêteté pédagogique remarquable (md 9 : « on ne peut pas tester un vrai tunnel SSH sans machine distante », cellule d'illustration qui ne prétend pas se connecter).

    Frontière #13410 (output-uninterpreted) : respectée — chaque sortie majeure porte sa lecture placée après son code (OUT[code 0]→md 3, OUT[code 1]→md 5, OUT[code 2]→md 6, OUT[code 3]→md 7, OUT[code 4]→md 9, OUT[code 5]→md 10, OUT[code 6]→md 12), aucune lecture en double ; la sortie d'exercice (code 9) est autoporteuse (bloc de test qui imprime son propre verdict). Aucun enrichissement ajouté.

    Skip : 0 — 143 PRs open croisées au pré-vol (fichiers PR par PR ; garde page-2 sur la seule PR à 100 fichiers = #19664, fichiers CI uniquement), aucune ne touche le notebook.

    Garde population : VERT 772/772 (origin/main 07593d0bd, added 0 / removed 0, diff d'ensembles sur git ls-tree -r -z du clone blobless). Artefact organes ai-01 toujours absent de #17073 (scan des 273 commentaires : les derniers myia-ai-01 sont des relais coordinateur) → aucune passe d'organes (python3 indispo au siège).

    Désignation 561 = GenAI/Image/01-Foundation/01-1-OpenAI-DALL-E-3.ipynb (dossier Image/01-Foundation vierge côté NC : 7 restants, dont 01-5c ajouté récent déjà SOURCÉ au ledger ; reprise du balayage série par série après la clôture d'Audio et du dossier 00).

    — NanoClaw (myia-ai-01) [09:14Z]

  19. jsboige commented on Oct 10, 2026

    @jsboige
    OwnerAuthor

    [NanoClaw — cycle 561, 10/10 10:15Z] — série GenAI / Image/01-Foundation

    Notebook : MyIA.AI.Notebooks/GenAI/Image/01-Foundation/01-1-OpenAI-DALL-E-3.ipynb — 37 cellules (21 md / 16 code), 6 946 060 o, blob main 9d0abc95, extraction first-hand (0 lecture de JSON brut ; les 4 figures committées vérifiées par empreinte, jamais chargées). Run committé mer. 2026-10-07 03:26:01 → 03:27:57, ec 1→16 strictement séquentiels, CJK 0, doublons headers AUCUN. Nav « Index → ../README.md » + « Suivant → 01-2 » : les deux cibles résolues contre l'arbre git ✓. Point d'entrée du dossier par design (README 01-Foundation : API cloud d'abord, « simples et immédiates ») ; note d'honnêteté documentaire DALL-E 3 → gpt-image-1 (md dalle3-gpt-image1-disclosure) vérifiée exacte contre les sorties.

    F1 — fake-output · md 11 id=eg2-lecture + code 9 id=eg2-mesure · « La mesure : à ce tirage, l'image vivid est plus saturée (135,6 contre 111,0, soit +24,6 sur 255) et plus lumineuse (86,1 contre 78,6) que l'image natural » · aucune des 4 valeurs citées n'existe dans les sorties committées, qui donnent vivid : saturation moyenne 136.6 | luminosite moyenne 84.5 / natural : saturation moyenne 123.3 | luminosite moyenne 93.1 — la lecture décrit un tirage antérieur non mis à jour, et le sens même est inversé : le run committé a natural PLUS lumineuse (93,1 > 84,5) alors que la lecture affirme vivid plus lumineuse et réserve l'inversion à « un tirage antérieur » (gate #17040 : citation absente = fabriquée).

    stale-claim ×2 — comptées, organe #18402 (cumul dossier Image/01-Foundation 0 → 2) :

    1. code 11 id=f28d27b1 · « Style 'vivid' pour images créatives, 'natural' pour réalisme / Qualité 'hd' pour impression, 'standard' pour web / DALL-E 3 Standard (1024x1024): ~$0.040 par image / DALL-E 3 HD: ~$0.080 » vs la démonstration du carnet lui-même : l'exemple guidé 2 prouve que style n'est PAS transmis (payload = model/prompt/n/size/quality, sortie « Les deux requetes etaient identiques ») et gpt-image-1 n'accepte que low/medium/high/auto — 'hd'/'standard' produit une erreur 400 ; le bloc conseils de l'ère DALL-E 3 n'a pas suivi la migration alors que la même cellule imprime « Modèle utilisé: gpt-image-1 ».
    2. md 14 id=ed100025 · « La Section 5 montre des prompts optimisés avec : … » — aucune section numérotée n'existe dans le carnet (renvoi flottant d'une numérotation antérieure ; les prompts optimisés vivent dans le bloc non numéroté « Fonction de generation et prompts »).

    Mineurs comptés, non déposés : le CHALLENGE BONUS et les « References savantes » (md 14) sont placés AU MILIEU du carnet (entre le bloc conseils code 11 et l'exemple guidé 3), le challenge renvoyant en avant à « l'exemple guidé 3 » qu'il précède ; md 12 « le mode interactif vous invite a tester vos propres prompts » vs run committé en branche batch (« [batch] Mode batch - Interface interactive desactivee ») — dualité auto-documentée dans le code, prose écrite pour la branche non exécutée ; md 3 « repli (fallback) automatique vers gpt-image-1 » — aucun fallback à l'exécution dans le run : model_name=gpt-image-1 dès la config (PR #4230), le mécanisme décrit n'est pas observable dans les sorties ; md 16 cite « 18 % / 21 % / 15 % » et « 49 % / 32 % / 64 % » de « trois exécutions successives pendant l'intégration » — explicitement attribuées à d'autres runs, invérifiables par nature (pas une violation de gate).

    Vérifié sans réserve : md 3 — « le résultat commité montre Connexion API OpenAI reussie - 0 modeles DALL-E disponibles » ✓ EXACT (sortie code 3) ; md 9 — payload {model, prompt, n, size, quality} ✓ identique au code, tableau du groupe « More saturated » ✓ ; md 7 « À savoir » — fallback revised_prompt = prompt d'origine ✓ dans le code ET les sorties (« Prompt revise : aucun renvoye par l'API (gpt-image-1) » ×3) ; md 8 — « pour les trois niveaux, l'API n'en renvoie aucun » ✓ ×3 ; md 16 (eg3) — TOUTES valeurs exactes : pixels chauds 15,1 % → 64,3 % (+49,2 pts), froids 84,8 % → 35,6 %, luminosité −4,1 (189,5 → 185,5), « 17 et 78 mots » ✓ ; conclusion — Forge SD XL Turbo (01-4) ✓, Qwen-Image-Edit (01-5) ✓, 03-1-Multi-Model-Comparison ✓ existe dans l'arbre (03-Orchestration/) ; exercices 4-6 — stubs TODO propres, indices d'une précision remarquable (HSV 0-255, circularité de la teinte, masque S<30, secteurs chauds/froids), 0 fuite de solution ; renumérotation interne « exemple guidé N = exercice N » cohérente (eg1-3 = exercices 1-3 devenus guidés, exercices étudiants 4-6).

    Frontière #13410 (output-uninterpreted) : respectée — exactement UNE lecture par exemple guidé, placée APRÈS son code (eg1 → md eg1-lecture, eg2 → md eg2-lecture après la cellule de mesure, eg3 → md eg3-lecture), aucune doublée, aucune avant son code ; la démo (code 6) reste sans lecture dédiée — pas une violation de gate (maximum 1, pas minimum). Aucun enrichissement ajouté.

    Skip : 0 — 144 PRs open croisées au pré-vol (fichiers PR par PR), aucune ne touche le notebook.

    Garde population : VERT 772/772 (origin/main 07593d0bd inchangé, added 0 / removed 0). Artefact organes ai-01 toujours absent de #17073 (274 commentaires) → aucune passe d'organes (python3 indispo au siège).

    Désignation 562 = GenAI/Image/01-Foundation/01-2-GPT-5-Image-Generation.ipynb (dossier Image/01-Foundation : 6 restants après ce cycle ; ligne checklist 01-5c ajoutée ce cycle, absente comme 00-7 l'était).

    — NanoClaw (myia-ai-01) [10:15Z]

  20. jsboige commented on Oct 10, 2026

    @jsboige
    OwnerAuthor

    [NanoClaw — cycle 562, 10/10 11:10Z] — série GenAI / Image/01-Foundation

    Notebook : MyIA.AI.Notebooks/GenAI/Image/01-Foundation/01-2-GPT-5-Image-Generation.ipynb — 30 cellules (16 md / 14 code), 90 222 o, blob main cab830ab, extraction first-hand (0 lecture de JSON brut). Run committé 2026-06-24 06:44:53, ec 1→14 strictement séquentiels, CJK 0, doublons headers AUCUN. Nav « Index → ../../README.md (GenAI) » + « Précédent → 01-1 » + « Suivant → 01-3 » : les trois cibles résolues contre l'arbre git ✓ ; la conclusion renvoie à 04-1-Educational-Content-Generation ✓ existe (Image/04-Applications). Arrivée au bon moment après 01-1 (génération → analyse), ordre du README respecté.

    F1 — reading-before-code (défaut SYSTÉMIQUE, 4 occurrences, 1 dépôt) · md vkgiro82pk7 (cellule 14) · « La cellule précédente lance trois appels successifs sur l'image Architecture Historique … | Quick | 206 | 942 | 7.76s | » · la cellule précédente réelle (code 66a1b41e) ne fait que LISTER les exemples — les trois appels et le tableau cités sont produits par code 368e963b placé APRÈS la lecture, qui décrit donc une sortie que l'apprenant n'a pas encore sous les yeux (gate #17040 : lecture placée APRÈS la cellule lue). Même inversion ×3 : md jxwlftsm05 (« la cellule précédente appelle analyze_image_with_gpt5() … 114 caractères ») avant code a01bfa80 qui génère l'alt text ; md htbu4le2fb (« la cellule précédente tente input() ») avant code 0bc5a8f8 ; md gkk2vqpxov (« la cellule précédente catalogue cinq domaines ») avant code 03146442. Les QUATRE premières lectures du carnet (on4ridys1z, c9dx4xmi4ka, 9un0u6qzrtv, r56pmixdacs) sont correctement placées — l'inversion commence à la moitié du carnet, signature d'une insertion ancrée à la mauvaise cellule. Candidat organe (marqué comme tel) : check_reading_placement — toute md « Lecture du résultat » doit suivre la cellule de code dont elle cite les sorties.

    stale-claim ×4 — comptées, organe #18402 (cumul dossier Image/01-Foundation 2 → 6) :

    1. md a07f0ce4 (Ressources complémentaires) · « Templates éducatifs : docs/genai-phase2-templates.md » — fichier ABSENT de tout le dépôt (ls-tree recursif, 0 hit).
    2. md a07f0ce4 · « Standards CoursIA : docs/genai-images-development-standards.md » — ABSENT également (0 hit repo-wide).
    3. md conclusion (cellule 30, sans id) · « le modèle ne se contente pas de générer des images à partir d'un prompt texte, il analyse et produit dans un même flux » + « GPT-5 […] couvrant l'axe compréhension + génération » — le carnet ne démontre AUCUNE génération : analyze_image_with_gpt5() ne fait que POST /chat/completions (image en entrée, texte en sortie) ; aucun output du run ne contient d'image produite par GPT-5. Le titre « Analyse et Génération d'Images » porte la même sur-promesse.
    4. md a07f0ce4 (Prochaines étapes) · « Combinez avec DALL-E 3 pour génération + analyse » — DALL-E 3 retiré au profit de gpt-image-1, comme la disclosure du carnet précédent (01-1 md 3) l'établit ; l'ère citée est celle que le dossier vient de quitter.

    Les 4 instances sont sémantiques/externes (liens morts, capacité non démontrée, ère de modèle) — hors périmètre direct de check_stale_claims.py (citation-vs-output), note de périmètre comme cycles 551/560/561.

    Mineurs comptés, non déposés : md 7 obs. 3 « 206 caractères est dans la plage WCAG (<125) après trim » — 206 > 125, l'affirmation est auto-contradictoire (l'alt text conforme du carnet fait 114 chars via prompt dédié, pas via quick + trim) ; paramètre Papermill injecté BATCH_MODE (code 17aab9f8) jamais lu dans le carnet — orphelin (dans 01-1 la branche batch est prise, ici c'est notebook_mode qui pilote tout) ; figure-missing — les 4 images URL analysées ne sont jamais affichées (matplotlib importé pour « visualisation locale optionnelle », jamais utilisé) : la « surprise factuelle » Colisée→Gran Vía est invisible pour l'apprenant sans ouvrir l'URL à la main ; en-tête md 0 « Module : 01-Images-Foundation » vs dossier réel Image/01-Foundation.

    Vérifié sans réserve : md 3 — deps + Mode: interactive, Analyse: detailed, Niveau: university, Langue: francais, Max tokens: 4000 ✓ EXACT (sortie code 3) ; md 4 — 26 modèles ✓, Contexte: 400000 pour openai/gpt-5 ✓, 1 050 000 pour 5.5-pro/5.4-pro ✓ (« 2.6× plus » = 2,625 ✓) ; md 7 — tableau comparatif INTÉGRALEMENT exact contre les sorties committées (206/942/7.76s, 2606/1791/19.14s, 2908/2256/25.73s, coûts $0.0037/$0.0113/$0.0155, reasoning_tokens 192→320→704) ; md 9 — alt text 114 caractères + citation VERBATIM ✓ (sortie code 10) ; md 11 — « Mode interactif non disponible (exécution automatisée) » ✓ (sortie code 12, except EOFError réel du run) ; md 12 — les 5 domaines + template Médecine ✓ verbatim (sortie code 13) ; exercices 1-3 — stubs TODO propres (Exercice a completer), indices précis (structure prompt, ≤125 chars, 3 modes), 0 fuite de solution ; usage exemplaire de usage/cost_details dans les lectures de la 1re moitié — c'est ce qui rend l'inversion de placement d'autant plus nette.

    Frontière #13410 (output-uninterpreted) : respectée en DENSITÉ (exactement 1 lecture par sortie majeure, aucune doublée) — le défaut F1 est de POSITION, pas de redondance ; aucune réécriture proposée (candidate marquée, jamais élément de travail).

    Skip : 0 — 131 PRs open croisées au pré-vol, aucune ne touche le notebook.

    Garde population : VERT 773/773 — drift +1 SOURCÉ firsthand : GameTheory/SocialChoice/09-Committees-STV-Monroe-ChamberlinCourant.ipynb ajouté par merge 7a0521584 (PR #19372, EPIC #19263, 10/10) ; population-nc.json mis à jour (772→773), head 9d3b6110c. Artefact organes ai-01 toujours absent de #17073 (275 commentaires, derniers = lignes additives NC) → aucune passe d'organes.

    Désignation 563 = GenAI/Image/01-Foundation/01-3-Basic-Image-Operations.ipynb (dossier Image/01-Foundation : 5 restants après ce cycle).

    — NanoClaw (myia-ai-01) [11:10Z]

  21. jsboige commented on Oct 10, 2026

    @jsboige
    OwnerAuthor

    [NanoClaw — cycle 563, 10/10 12:08Z] — série GenAI / Image/01-Foundation

    Notebook : MyIA.AI.Notebooks/GenAI/Image/01-Foundation/01-3-Basic-Image-Operations.ipynb — 43 cellules (28 md / 15 code), 3 756 503 o, blob main d395a7cd, extraction first-hand (0 lecture de JSON brut). Run committé 2026-09-27 19:58:27, mode batch (.env non trouve), PIL 11.3.0, ec 1→15 strictement séquentiels, CJK 0, doublons headers AUCUN, aucun couple md au Jaccard > 0.35. Nav résolue contre l'arbre git ✓ : « Index → ../../README.md », « précédent → 01-2-GPT-5-Image-Generation.ipynb », « suivant → 01-4-Forge-SD-XL-Turbo.ipynb » ; les 3 tutoriels cités (dalle3-complete-guide.md, gpt5-image-analysis-guide.md, educational-workflows.md) existent ✓. Arrivée au bon moment après 01-2 (analyse d'image → manipulation d'image) ; le carnet lui-même désigne sa place (Section 5 : « image de test … chargée depuis URL en Section 1 »).

    F1 — exercise-mismatch · md edf341ad (cellule 20, Exercice 3) + code 6e1e5d75 (cellule 21) · consigne « 3. Presenter les résultats dans un DataFrame avec une ligne par (filtre, canal) », dont le gabarit décommentable porte # df_hist = pd.DataFrame(rows) puis # print(df_hist.pivot(index='filtre', columns='canal', values='median')) · pandas n'est ni importé par le carnet ni dans la cellule de dépendances (les 7 paquets contrôlés sont PIL, requests, matplotlib, numpy, dotenv, ipywidgets, IPython — numpy est bien importé en np, pd n'existe nulle part) : l'apprenant qui suit l'exercice tel qu'écrit tombe sur NameError: name 'pd' is not defined. Énoncé et gabarit cohérents entre eux, mais désynchronisés des dépendances réelles.

    stale-claim ×5 — comptées, organe #18402 (cumul dossier Image/01-Foundation 6 → 11). Ces cinq instances opposent une lecture du paquet densité à la sortie committée : le carnet a été ré-exécuté le 27/09 URL redevenue joignable, et ces lectures décrivent le run précédent (hors ligne, image de test Generated) — un fait de méthode, pas cinq coquilles indépendantes.

    1. md interp-load-013 (cellule 9) · « L'URL de démonstration était indisponible (timeout réseau) : le notebook bascule sur son image de test déterministe — un gradient RGB 800x600 en mode Generated » — la sortie committée dit l'inverse : « ✅ Image chargée depuis URL … 📦 Format: JPEG » (800x600 RGB, ~1406.2 KB).
    2. md interp-api-013 (cellule 27) · « les trois variantes (1024x1024, 1792x1024, 1024x1792) pèsent ici 5.5–9.4 KB » — sortie : « ✅ 1024x1024: 1110.2 KB / ✅ 1792x1024: 1608.5 KB / ✅ 1024x1792: 1636.7 KB » (facteur ~100).
    3. md interp-api-013 · « l'image JPEG de 18 031 octets devient une chaîne de 24 044 caractères (~23.5 KB) … (24 044 caractères décodés en 18 031 octets) » — sortie : « Base64 encoded: 84340 chars / Payload size: ~82.4 KB / Round-trip vérifié : 84340 caractères -> 63253 octets décodables ».
    4. md interp-geom-013 (cellule 12) · « Le UserWarning sur les glyphes DejaVu Sans visible dans la sortie » — ce warning n'apparaît dans aucune sortie committée ; les occurrences du motif dans le fichier sont le commentaire de la cellule 5 (« ET n emet pas le UserWarning Agg dont la traceback fuitait le chemin temporaire du kernel »), c'est-à-dire la note disant que le backend a été choisi précisément pour l'éviter, et la phrase elle-même.
    5. sortie 9f06e8c5 (cellule 35, récapitulatif) · « Notebooks Suivants : 02-1-Prompt-Engineering-Visual.ipynb / 02-2-Multi-Model-Comparison.ipynb / 03-1-Advanced-Image-Processing.ipynb » — les trois sont absents de l'arbre (0 hit en ls-tree récursif) : le dossier 02-Advanced commence à 02-2-FLUX-1-Advanced-Generation.ipynb, et le 03-1 réel est 03-1-Multi-Model-Comparison.ipynb.

    Note de périmètre : contrairement aux cycles 551/560/561/562 (instances sémantiques/externes — liens morts, capacité non démontrée, ère de modèle), ces cinq-ci sont des citation-vs-output (valeur citée absente de la sortie committée) : elles tombent DANS le périmètre direct de check_stale_claims.py. C'est la première fois que la famille est capturable par l'organe, et non seulement comptable.

    Mineurs comptés, non déposés : md interp-formats-013 (cellule 33) affirme « Régime dual … la hiérarchie s'inverse » à propos de la compression d'une photo haute résolution — branche que le run n'exécute pas ; seule la branche gradient est committée, l'affirmation est donc posée comme fait (candidat d'enrichissement, marqué comme tel, jamais élément de travail) ; deux blocs de clôture successifs — cellule 41 guide-suivant-013 puis cellule 42 cell-63bd4614, cette dernière générique (« Ce notebook a permis d'explorer les aspects essentiels de 01 3 basic image opérations… ») ; en-tête md 0 « Module : 01-Images-Foundation » vs dossier réel Image/01-Foundation (même mineur qu'au cycle 562).

    Vérifié sans réserve : cellule de dépendances (code 5) — les 7 paquets réellement requis sont tous dans la liste contrôlée, sortie « Toutes les dependances sont disponibles » ✓ ; md interp-env-013 — PIL 11.3.0, mode batch, .env non trouve, widgets disponibles ✓ exacts ; md interp-geom-013 (hors point 4) — resize (400,300)/(1200,900), rotation 45°→(990,990) et 90°→(600,800), thumbnail (200,150), « 8 transformations effectuées » ✓ ; md interp-filters-013 — « 14 filtres/effets appliqués » et les 5 familles ✓ verbatim ; md interp-exif-013 — « 1 tags EXIF importants », « Total tags EXIF: 13 », Orientation 1, métadonnées PNG personnalisées ✓ ; md interp-api-013 (hors points 2-3) — image lisse 512x512 → 2.0 KB ✓, image dense 768x768 refusée par le contrat de taille (« 1770929 octets > 512000 octets autorisés ») ✓, c'est bien le ValueError du run ; md interp-formats-013 — JPEG_Q75 61.0 KB, WEBP_Q90 76.5 KB, PNG 561.2 KB, ratio 0.399, « Économie maximale: 89.1% », ~1406 KB, « chargée depuis URL en Section 1 » ✓ TOUS exacts ; md interp-widgets-013 — skip_widgets=True, désactivation propre en batch ✓ ; md note-debug-013 — la Section 7 convertit bien RGBA→RGB avant JPEG, la Section 2 montre resize ET thumbnail ✓ ; exercices 1-3 (et l'exemple guidé) — stubs Exercice a completer propres, une seule sortie par stub, 0 fuite de solution ; 3 figures PNG committées (571 220 / 1 710 856 / 1 333 200 o), aucun output fake (pas de N/A, pas de QuantBook seul, pas de nombre rond isolé).

    Frontière #13410 (output-uninterpreted) : respectée — les 10 cellules interp-*/note-debug sont placées APRÈS la cellule dont elles décrivent la sortie, jamais deux interp-* pour la même sortie (les cellules 36-37 qui suivent le récapitulatif ont des rôles distincts : lecture du résultat, puis note de débogage) ; aucune réécriture proposée (candidat marqué, jamais élément de travail).

    Skip : 0 — 127 PRs open croisées au pré-vol, aucune ne touche GenAI/Image/01-Foundation.

    Garde population : VERT 773/773 — head 603300c00f57c4d091784ea5ca6b4d444b3c5551, added 0 / removed 0 (aucun drift à sourcer). Artefact organes ai-01 toujours absent de #17073 (276 commentaires, derniers = lignes additives NC) → aucune passe d'organes.

    Désignation 564 = GenAI/Image/01-Foundation/01-4-Forge-SD-XL-Turbo.ipynb (dossier Image/01-Foundation : 4 restants après ce cycle — 01-4, 01-5, 01-5b, 01-5c).

    — NanoClaw (myia-ai-01) [12:08Z]

  22. myia-ai-01 commented on Oct 10, 2026

    @myia-ai-01
    Collaborator

    [vllm] 1 dossier(s) livrés à 12:13Z (01-4-Forge-SD-XL-Turbo) par DM RSM

  23. myia-ai-01 commented on Oct 10, 2026

    @myia-ai-01
    Collaborator

    [vllm] 3 dossier(s) livrés à 13:11Z (01-5-Qwen-Image-Edit, 01-5b-Qwen-Image-Edit-2509, 01-5c-Qwen-Image-21-Workflows) par DM RSM

  24. jsboige commented on Oct 10, 2026

    @jsboige
    OwnerAuthor

    [NanoClaw — cycle 564, 10/10 13:12Z] — série GenAI / Image/01-Foundation

    Notebook : MyIA.AI.Notebooks/GenAI/Image/01-Foundation/01-4-Forge-SD-XL-Turbo.ipynb — 28 cellules (16 md / 12 code), 9 611 060 o, blob main c09284ba, extraction first-hand (0 lecture de JSON brut). ec 1→12 strictement séquentiels, CJK 0, doublons headers AUCUN, aucun couple md au Jaccard > 0.55. Nav résolue contre l'arbre git ✓ : « Index → ../../README.md » (GenAI/README.md existe), « Précédent → 01-3-Basic-Image-Operations.ipynb », « Suivant → 01-5-Qwen-Image-Edit.ipynb » (les deux présents). Arrivée au bon moment après 01-3 (manipulation d'image → génération locale Forge). Le carnet s'annonce lui-même comme le volet local du dossier : URL turbo.stable-diffusion-webui-forge.myia.io, .env attendu dans GenAI/, FORGE_USER/FORGE_PASSWORD.

    F1 — block-pasted-wrong-section · md bb33087f (cellule 5) et md 84b5eaa7 (cellule 17)

    Deux cellules markdown dont le contenu intégral est un docstring Python nu — les guillemets triples sont rendus littéralement à l'écran, et la prose attendue n'existe pas :

    • bb33087f : """ / Vérification du statut de l'API et affichage d'une bannière visuelle / """ (77 caractères, rien d'autre) — introduit la cellule 245d391d (ec=3) qui affiche la bannière de statut.
    • 84b5eaa7 : """ / Techniques Avancées de Génération / Ce bloc explore des techniques avancées pour améliorer vos générations: / 1. Reproductibilité avec seed fixe / 2. Exploration créative avec seeds aléatoires / 3. Génération batch optimisée / """ (226 caractères) — introduit la cellule 7b1a4121 (ec=9), qui implémente exactement ces trois techniques.

    Le contenu est le bon, à la mauvaise place : un titre de section et son chapeau ont été collés comme docstring dans une cellule markdown (ou l'inverse), au lieu d'être du markdown. Effet apprenant : les deux sections charnières du carnet (statut API, techniques avancées) s'affichent avec des triples guillemets parasites et sans hiérarchie de titre, alors que les 14 autres cellules md du même carnet utilisent correctement ##/###. 2 occurrences dans ce carnet (< seuil de 3) → findings individuels, pas de proposition d'organe. Je n'ai pas pu établir l'échelle hors de ce carnet (le code-search GitHub n'indexe pas le contenu .ipynb : contrôle positif banniere = 45 hits sur des .md/.py, contrôle négatif generate_with_seed = 0 alors que la fonction est bien dans le carnet) — claim restreinte à ce fichier.

    F2 — exercise-mismatch · md b233da93 (cellule 19, Exercice 2) + code d884489c (cellule 20) contre code 7b1a4121 (cellule 18, ec=9)

    La consigne demande une comparaison paramétrique : « 2. Testez au moins 3 valeurs de cfg_scale (1.0, 2.0, 4.0) / 3. Testez au moins 2 samplers différents (DPM++ 2M, Euler a) / 4. Observez et comparez les résultats ». Or l'helper que l'apprenant est invité à utiliser — generate_with_seed(prompt: str, seed: int), défini cellule 18 — fige les deux paramètres à tester :

    "cfg_scale": 2.0,
    "sampler_name": "DPM++ 2M"

    et son corps n'expose aucun paramètre cfg_scale/sampler_name. Le gabarit de l'exercice (d884489c) définit bien cfg_values = [1.0, 2.0, 4.0] et samplers = ["DPM++ 2M", "Euler a"], boucle dessus, mais appelle generate_with_seed(prompt_fixe, seed=seed_fixe) # TODO etudiant : utilisez generate_with_seed en passant cfg_scale et sampler_name — un TODO littéralement insatisfiable : passer ces deux arguments lève TypeError: generate_with_seed() got an unexpected keyword argument. La sortie committée montre le résultat : six lignes identiques Test : cfg=1.0, DPM++ 2M … Test : cfg=4.0, Euler a puis Exercice a completer — six appels aux paramètres identiques, aucune image comparée, l'énoncé et son propre outil se contredisant. L'exercice ne peut pas être fait tel qu'écrit sans réécrire l'helper de la cellule 18.

    stale-claim ×4 — comptées, organe #18402 (cumul dossier Image/01-Foundation 11 → 15). Le carnet cite « ~18s » comme latence fixe de génération en quatre endroits, tous contredits par la sortie committée de la cellule 7b1a4121 (ec=9) : ✅ Batch terminé: 3/3 succès en 8.7s — soit ≈2,9 s/image, et par le propre avertissement du carnet (5fb555e4, cellule 9) qui pose que « le temps exact dépend du GPU … il s'observe à l'exécution de la cellule suivante, pas dans un nombre figé » :

    1. md a23ad93d (cellule 1) · « Performance: ~18s pour génération 512×512 (4 steps) ».
    2. code 245d391d (cellule 6) · la bannière HTML générée porte Génération rapide 4-steps • Performance ~18s — chaîne en dur dans le code, donc re-rendue à chaque exécution.
    3. md c36e7b8c (cellule 21) · « Timeouts courts: Génération prend ~18s, timeout < 30s risqué ».
    4. md 47afc16f (cellule 27) · « … résolution 512×512, latence ~18s par image ».

    Fait de méthode : les quatre citations décrivent un run antérieur (le même « ~18s » qu'au cycle 563 sur 01-3, où le carnet avait été ré-exécuté le 27/09 après rétablissement de l'URL) — ce n'est pas quatre coquilles indépendantes mais une valeur figée propagée, ce que la mesure committée (2,9 s/image) réfute d'un facteur ~6.

    Mineurs comptés, non déposés : (a) a791f513 (cellule 2) et 546c829a (cellule 3) décrivent le même flux d'authentification en deux blocs successifs (encadré ASCII puis mermaid, la cellule 3 disant elle-même « reprend la logique … décrite ci-dessus ») — redondance assumée par le texte, candidate à consolidation ; (b) 382be6c9 (cellule 23) annonce « La requête échoue après 60 secondes » et propose TIMEOUT = 90 # au lieu de 60, alors que le carnet définit déjà TIMEOUT = 90 (3fc1fc62, cellule 4, ec=2, commentaire « Couvre le chargement à froid du modèle ») — la valeur citée est périmée au sein du carnet, mais c'est une citation-vs-code, hors du périmètre nominal de check_stale_claims.py (citation-vs-output) ; (c) 3fc1fc62 (cellule 4) importe deux fois os et from dotenv import load_dotenv ; (d) 53e3c112 (cellule 22) s'intitule « Exemple 4 » sans Exemple 3 ni 2 ni 1 dans le carnet — numérotation orpheline ; (e) a23ad93d (cellule 1) porte un titre anglais « Use Cases » au milieu d'un carnet français ; (f) 382be6c9 (cellule 23) et 51b98993 (cellule 26) présentent tous deux GUIDE-APIS-ETUDIANTS.md comme « Documentation API Complète » via ../../../../docs/archive/suivis/genai-image/… : le chemin résout ✓ mais pointe dans docs/archive/ — guide vivant rangé aux archives, à rapatrier (candidat d'enrichissement, marqué comme tel, jamais élément de travail) ; (g) trois cellules de clôture md consécutives en fin de carnet (382be6c9 Tips/Troubleshooting, puis 249cdb76 Exercice 3, puis 51b98993 + 47afc16f).

    Vérifié sans réserve : cellule de dépendances 3fc1fc62 — sortie « Toutes les dependances sont disponibles » + .env charge depuis: .env ✓ ; 245d391d (ec=3) — bannière de statut + « ✅ API Forge accessible et prête à l'utilisation », display_data text/html ✓ ; figures — les 11 appels set_title/suptitle du carnet titrent effectivement chaque planche (comparaison de variations Comparaison: Impact des Variations de Prompt, Exploration Créative: Même Prompt, Seeds Différents, Génération Batch Thématique), les 7 sorties image/png committées ont toutes leur <Figure size … with N Axes> ✓, aucune image non légendée ; 2 stubs d'exercice (610, 801 : print("Exercice a completer")) — 0 fuite de solution, une seule sortie par stub ; réponses committées cohérentes avec les prompts affichés (✅ Image générée (512×512) après chaque 🎨 Génération en cours:), 3 variations de prompt et 3 seeds aléatoires rendues en planches de 3 ✓ ; aucun output fake (pas de N/A, pas de QuantBook seul, pas de nombre rond isolé) ; 7b1a4121 — les seeds affichés (387196 / 160912 / 552089) sont bien aléatoires et distincts ✓.

    Frontière #13410 (output-uninterpreted) : respectée — chaque lecture précède immédiatement la cellule dont elle décrit la sortie (ordre CODE→MD régulier de 9ef8fd65 à 47afc16f), jamais deux lectures pour une même sortie ; aucune réécriture proposée (le point (f) ci-dessus est un candidat marqué, pas un élément de travail).

    Skip : 0 — 133 PRs open croisées au pré-vol (pagination complète, fichiers de chaque PR lus), aucune ne touche GenAI/Image/01-Foundation.

    Garde population : VERT 773/773 — head 2efe466967e959c9c60e4424e4c4d3abf37ccd8e, added 0 / removed 0 (aucun drift à sourcer). Artefact organes ai-01 toujours absent de #17073 (derniers commentaires = lignes additives NC sur l'organe #18402) → aucune passe d'organes ; le pointeur [vllm] 1 dossier(s) livrés à 12:13Z (01-4-Forge-SD-XL-Turbo) de #19451 est signalé mais livré hors de mon siège (DM RSM), non consulté.

    Désignation 565 = GenAI/Image/01-Foundation/01-5-Qwen-Image-Edit.ipynb (dossier Image/01-Foundation : 3 restants après ce cycle — 01-5, 01-5b, 01-5c).

    — NanoClaw (myia-ai-01) [13:12Z]

  25. jsboige commented on Oct 10, 2026

    @jsboige
    OwnerAuthor

    [NanoClaw — cycle 565, 10/10 14:11Z] — série GenAI / Image/01-Foundation

    Notebook : MyIA.AI.Notebooks/GenAI/Image/01-Foundation/01-5-Qwen-Image-Edit.ipynb — 33 cellules (18 md / 15 code), 971 932 o, blob main fe3e186a, extraction first-hand (0 lecture de JSON brut). ec 1→15 strictement séquentiels, CJK 0, doublons headers AUCUN (60 headers, aucun identique), aucun couple md au Jaccard > 0.55. Nav résolue contre l'arbre git ✓ : « Index → ../../README.md », « Précédent → 01-4-Forge-SD-XL-Turbo.ipynb » — mais aucun lien « Suivant » alors que 01-5b-Qwen-Image-Edit-2509.ipynb existe et que la conclusion du carnet y renvoie explicitement (cf. mineurs). Arrivée au bon moment après 01-4 : le carnet pose ComfyUI (queue + polling) comme second backend après l'API REST Forge, architecture Phase 29 (trois loaders séparés, CFGNorm, TextEncodeQwenImageEdit).

    F1 — block-pasted-wrong-section · md c9320969 (Bonnes Pratiques, table « Optimisation Performance ») et md a2ed9f00 (section « Pattern Image-to-Image »)

    Deux blocs dont le contenu appartient à un autre carnet (générique SDXL/Forge), collés dans un carnet dont TOUTE l'architecture repose sur des règles contraires :

    • c9320969 : la table « ### 2. Optimisation Performance » recommande | **cfg** | Minimal | 7-8 optimal | et pose | **denoise** | Minimal | N/A |. Or la règle cfg=1.0 (CFGNorm gère l'amplification, pas le CFG classique) est énoncée cinq fois ailleurs dans ce même carnet : table des paramètres (« | **cfg** | 1.0 | Doit rester a 1.0 car CFGNorm gere l'amplification | »), pattern i2i réel, indices de l'Exercice 3 (« cfg doit rester a 1.0 »), inputs du gabarit ("cfg": 1.0, # cfg=1.0 obligatoire), conclusion. Et denoise est LE paramètre enseigné tout du long (table 0.1/0.5/0.9, expérience 0.2/0.5/0.8, Exercice 2) — pas « N/A ». Un apprenant qui réglerait cfg à 7-8 sur ce pipeline obtiendrait exactement les artefacts que la conclusion du carnet promet d'éviter.
    • a2ed9f00 : la section « Workflow: 1. Load Image → 2. CLIP Vision Encode → Encoder image / 3. CLIP Text Encode → Encoder prompt édition → … » décrit un pipeline IP-Adapter/SD classique : ces deux nodes n'existent dans aucun des trois workflows réels du carnet (11 + 12/14 + 12 nodes : tous encodent le prompt via TextEncodeQwenImageEdit et l'image via VAEEncode, avec ConditioningZeroOut en négatif — jamais de CLIP Vision Encode). La section correcte existe deux cellules plus loin ; celle-ci enseigne un vocabulaire de nodes que l'apprenant ne verra nulle part.

    2 occurrences dans ce carnet (< seuil de 3) → findings individuels, pas de proposition d'organe.

    F2 — progression-break · md 6b0cfba1 (et md 02b39df7) contre code f8377a10 (ec=10) et code 0ae4672d (ec=11)

    Le carnet construit une expérience de denoise en deux temps — 02b39df7 pose méthodologie, hypothèse et config ; 6b0cfba1 annonce l'exécution : « La configuration du test d'exploration est prete. La cellule suivante execute la comparaison des différentes valeurs du paramètre denoise et affiche les résultats cote a cote. » — mais aucune sortie committée n'exécute cette comparaison :

    • f8377a10 (ec=10, la cellule du test) : zéro sortie committée ; sa branche test s'arrête à results_denoise = [].
    • 0ae4672d (ec=11, « la cellule suivante » désignée) : ne fait que définir des helpers — sortie committée : « ✅ Fonctions comparaison avant/après définies … 💡 Décommentez les exemples ci-dessus pour tester avec vos images ».
    • La boucle 0.2/0.5/0.8 ne vit que dans le stub de l'Exercice 2 (748ed8f5, ec=12), dont la sortie se termine par « Exercice a completer ».

    L'arc méthodologie → exécution → lecture des résultats est cassé au maillon central : l'exécution affirmée au présent n'existe dans aucun output, et la lecture promise (« résultats cote a cote ») n'a rien à lire. (Nuance honnête : f8377a10 contient un garde-fou batch « Skip: test denoise necessite image uploadee » — mais ce message lui-même est absent des sorties committées, la cellule n'en a aucune.)

    stale-claim ×2 — comptées, organe #18402 (cumul dossier Image/01-Foundation 15 → 17). La même valeur figée « 5-10 secondes » présentée comme latence/temps attendu, contredite par les DEUX sorties committées du carnet :

    1. md 5f600ebe (cellule 1, table caractéristiques) · « | **Latence Typique** | 5-10 secondes | ».
    2. md 561a6819 (pré-cellule hello world) · « Temps attendu: 5-10 secondes (512x512) ».

    Contre : 464d7878 (ec=5) « ✅ Complet en 321.4s » (premier run à froid) et 8620219d (ec=9) « ✅ Complet en 67.3s » / « Edition complete en 67.3s » (run chaud) — facteur 7 à 32 selon le régime. Le carnet SAIT que la valeur est fausse : son propre client documente max_wait: 900s : le premier run doit charger Qwen Image Edit en VRAM (98a0a453, ec=3). Même famille que « ~18s » des cycles 563-564 : valeur figée d'un run antérieur propagée dans deux cellules.

    Mineurs comptés, non déposés : (a) 927efa2d (ec=2) importe deux fois os et from dotenv import load_dotenv ; (b) b8a7388b — lecture scindée : sa 1ʳᵉ phrase interprète le test de connectivité de 464d7878 (3 cellules plus tôt, séparée par tout l'Exercice 1), sa 2ᵉ annonce correctement fc95b446 ; (c) nav sans lien « Suivant » (cf. en-tête) alors que 01-5b existe ; (d) 15d72cb2 (Ressources) lie GUIDE-APIS-ETUDIANTS.md via ../../../../docs/archive/suivis/genai-image/… — le chemin résout ✓ mais range un guide vivant aux archives (même constat que cycle 564 sur 01-4, candidat d'enrichissement marqué, jamais élément de travail) ; (e) même cellule : « Qwen-VL Quick Start: Guide rapide édition images » classé Débutants, alors que la même cellule prend soin de poser Qwen-VL comme « distinct du modèle d'edition Qwen-Image-Edit enseigne ici » — une ressource VLM présentée comme guide d'édition.

    Vérifié sans réserve : configuration 927efa2d — « Toutes les dependances sont disponibles », .env charge depuis: .env, « API: http://127.0.0.1:8188 (LOCAL_MODE=True) », « Token: configure » ✓ ; hello world 464d7878 — 11 nodes, workflow queued (UUID affiché), image chat 512×512 rendue en figure titrée, 321.4s ✓ ; édition 8620219d — source « chat tigre » uploadée (input (2).png), panneau avant/après 1200×500 (2 axes) affiché ET sauvegardé « assets\readme\img1-qwen-edit2.png » ✓ ; cohérence inter-cellules : db2a6654 (ec=15) re-vérifie les deux assets gallery — « OK img1-qwen-edit.png (281 KB) / OK img1-qwen-edit2.png (472 KB) », exactement les fichiers que 8620219d dit avoir sauvés ✓ ; les 4 exercices sont de vrais stubs sans fuite (d421f0da : workflow_buggy = None ; 748ed8f5 : boucle d'en-têtes seulement ; 618d0c92 : loaders Phase 29 fixés + TODO sur image/prompt/denoise uniquement, rappel « cfg=1.0, scheduler='beta' » dans la sortie ; 77267186 : result = None + auto-test sur faux client qui lève ConnectionError → « renvoie None ») ✓ ; le bonus tester_prompts_exercice est explicitement étiqueté « EXEMPLE GUIDE, pas l'exercice » avec l'appel commenté — pas une fuite ✓ ; références savantes correctement différenciées (arXiv:2508.02324 rapport Qwen-Image vs 2308.12966 Qwen-VL, distinction énoncée dans le texte) ✓ ; aucun output fake (pas de N/A, pas de QuantBook, pas de nombres ronds isolés) ; aucun doublon de section ni de bloc.

    Frontière #13410 (output-uninterpreted) : respectée — aucune sortie n'a deux lectures, aucune réécriture proposée. Les deux figures majeures (chat hello-world 464d7878, panneau avant/après 8620219d) n'ont PAS de lecture postérieure — candidats d'enrichissement marqués comme tels, jamais éléments de travail.

    Skip : 0 — pré-vol du cycle (133 PRs open croisées, fichiers de chaque PR lus) : aucune ne touche GenAI/Image/01-Foundation.

    Garde population : VERT 773/773 — head 2efe466967e959c9c60e4424e4c4d3abf37ccd8e, added 0 / removed 0. Artefact organes ai-01 toujours absent de #17073 → aucune passe d'organes.

    Désignation 566 = GenAI/Image/01-Foundation/01-5b-Qwen-Image-Edit-2509.ipynb (dossier Image/01-Foundation : 2 restants après ce cycle — 01-5b, 01-5c).

    — NanoClaw (myia-ai-01) [14:11Z]

  26. myia-ai-01 commented on Oct 10, 2026

    @myia-ai-01
    Collaborator

    [vllm] 2 dossier(s) livrés à 14:12Z (02-3-Stable-Diffusion-3-5, 02-4-Z-Image-Lumina2) par DM RSM

  27. myia-ai-01 commented on Oct 10, 2026

    @myia-ai-01
    Collaborator

    [vllm] 2 dossier(s) livrés à 15:14Z (02-2-FLUX-1-Advanced-Generation, 02-5-Bonsai-Image-Ternary) par DM RSM

  28. jsboige commented on Oct 10, 2026

    @jsboige
    OwnerAuthor

    [NanoClaw — cycle 566, 10/10 16:20Z] — série GenAI / Image/01-Foundation

    Notebook : MyIA.AI.Notebooks/GenAI/Image/01-Foundation/01-5b-Qwen-Image-Edit-2509.ipynb — 42 cellules (27 md / 15 code), 6 104 931 o, blob main 9b63b26d, extraction first-hand (0 lecture de JSON brut, empreintes sha8 sur les 6 images committées). ec 1→15 strictement séquentiels. Nav résolue contre l'arbre git ✓ : « Précédent → 01-5-Qwen-Image-Edit » ✓, « Suivant → 01-5c-Qwen-Image-21-Workflows » ✓ (existe dans l'arbre). Arrivée au bon moment après 01-5 : le carnet réutilise le client ComfyUI de 01-5 et monte en gamme (denoise, masques programmatiques, batch, CFGNorm).

    F1 — stale-claim · md gjiyry24wsw (« Interpretation : Résultats de l'Inpainting »)

    Extrait : « L'inpainting a remplace la zone masquee par un nouvel élément : | Cohérence spatiale | Le laptop s'integre naturellement dans la scene | | Qualité des bords | La transition avec l'arriere-plan est fluide grace au masque adouci | | Consistance lumineuse | L'eclairage du laptop correspond a l'ambiance du coffee shop | »

    Pourquoi : la cellule d'exécution adjacente (ec=9) porte dans ses sorties committées « 🚀 Soumission du workflow... / API non disponible: Exception / Workflow defini - necessite API ComfyUI active » — aucune image n'a été générée dans le run committé. Le tableau interprète des résultats d'inpainting qui n'existent dans aucun output : trois observations qualitatives fabriquées de toutes pièces (gate #17040, valeur citée absente des sorties). C'est la classe exacte que l'organe check_stale_claims ne peut pas attraper (aucune valeur de mesure chiffrée) — sémantique, hors périmètre #18402.

    F2 — reading-before-code · md sans id (entre le client ec=3 et les workflows ec=4)

    Extrait : « Génération de l'image réussie avec dimensions 1024x768. »

    Pourquoi : placée juste après la cellule de health-check (sorties committées : « État du service: healthy / VRAM: 21.7 / 25.8 GB libre »), elle annonce une génération réussie et des dimensions qui n'apparaissent dans les sorties qu'à la cellule ec=5 (« Dimensions: (1024, 768) »), six cellules plus bas. À sa position, la claim lit une sortie qui n'existe pas encore — la lecture devance le code qu'elle prétend lire.

    F3 — block-pasted-wrong-section · md cell-0 (en-tête) et md dw2367dvov (objectifs)

    Extraits : cell-0 « # Qwen Image Edit 2509 - Édition Avancée d'Images / Module : 02-Images-Advanced / Niveau : Intermédiaire/Avancé / Durée estimée : 45 minutes » ; dw2367dvov « ## Qwen Image Edit 2509 - Édition Avancée d'Images / Module : 02-Images-Advanced / Niveau : Intermédiaire/Avancé / Durée estimée : 45 minutes »

    Pourquoi : l'en-tête complet (navigation identique + titre + module + niveau + durée + les 3 prérequis verbatim) apparaît deux fois à deux cellules d'écart — le second bloc est un collage redondant du premier. En outre, dans cell-0, la liste d'introduction est éclatée par l'insertion de la « Note savante » : les items « - Batch processing pour l'efficacité » et « - Analyse comparative des paramètres » atterrissent après le blockquote, coupés de leurs trois premiers items.

    F4 — paraphrase-stack · md dadagfpmkwo + md sans id (entre ec=7 et sa lecture), contre code ec=7

    Extraits : md sans id « 0.3 "Changements subtils, structure tres preservee", 0.5 "Modifications visibles, bonne balance", 0.7 "Transformations significatives", 0.9 "Quasi-regeneration, peu de l'original conserve" — le paramètre balaye de la retouche à la régénération » ; dadagfpmkwo « | 0.3 | Changements subtils, structure très preservee | Retouche photo, correction couleur | ... »

    Pourquoi : la cellule ec=7 imprime déjà ses quatre observations dans sa sortie committée ; le md sans id les recopie verbatim, puis dadagfpmkwo les reprend une troisième fois en tableau. Trois narrations du même output — la frontière #13410 (une lecture par sortie) est franchie deux fois sur cette cellule. Même structure une cellule plus haut : la sortie de ec=3 est lue deux fois (md p5h3jbfh8zk « Le client ComfyUI est instancie et la connexion validee », puis md sans id « healthy avec 21.7 / 25.8 GB de VRAM libre » re-placée après ec=4). Le signal : ces lectures empilées décrivent des sorties auto-narrées par le code.

    Comptées, non déposées : (a) md sans id « Le masque est prêt... mais la soumission ne passe pas dans ce run » — exacte vis-à-vis de ec=9 mais positionnée avant la cellule (même famille F2, 1 occurrence) ; (b) md sans id « Trois workflows sont définis (Architecture Phase 29)... CFG=1.0 recommandé... scheduler 'beta'... 20 steps » — re-narration verbatim de la sortie ec=4, mal placée en plus après ec=5 ; (c) md 8txuf4lm17g : « le temps total reste raisonnable » — aucune mesure de temps dans les sorties (le reste de la table est conforme : 4× « Succes » + « 4 images generees avec succes ») ; (d) md 7fbd7073 : le tableau reprend le print d'observations CFG de ec=12, mais apporte l'explication CFGNorm absente du code — frontière moins nette ; (e) étiquette « Module : 02-Images-Advanced » sur un carnet du dossier 01-Foundation (contradiction d'étiquetage, cosmétique).

    Vérifié sans réserve : config ec=2 — « Toutes les dependances sont disponibles », « API URL: http://127.0.0.1:8188 », « Token: Configure », « .env: charge » (le défaut du code est https://qwen-image-edit.myia.io, le .env du run surchargeait — la lecture md reflète la sortie, pas de contradiction) ; t2i ec=5 — workflow queued (UUID affiché), figure 1200×900, « Dimensions: (1024, 768) » ✓ ; denoise ec=7 — 4 générations (0.3/0.5/0.7/0.9), figure comparative 5 panneaux ✓ ; masque ec=8 — upload + visualisation 3 panneaux ✓ ; batch ec=11 — 4× « Succes », grille 4 images, « 4 images generees avec succes » ✓ ; les 3 exercices sont de vrais stubs sans fuite (style_prompts = None, inpaint_prompt_circle = None, scheduler_prompt = None, solutions commentées) ✓ ; références savantes correctement différenciées (arXiv:2502.13923 Qwen2.5-VL 2025 vs 2308.12966 Qwen-VL 2023, distinction énoncée dans le texte — même soin que 01-5) ✓ ; aucun output fake N/A/QuantBook ; aucune valeur numérique ronde isolée.

    Frontière #13410 (output-uninterpreted) : aucune proposition d'ajout de lecture. Les deux figures majeures sans lecture postérieure (t2i ec=5, grille batch ec=11) : candidats d'enrichissement marqués comme tels, jamais éléments de travail. Les doubles lectures existantes sont signalées en F4, pas réécrites ici.

    Skip : 0 — 143 PRs open croisées (fichiers de chaque PR lus) : aucune ne touche GenAI/Image/01-Foundation.

    Garde population : VERT 773/773 — head a492cda2b (force-push main mesuré ce cycle), added 0 / removed 0. Artefact organes #18402 publié — 0 instance du cycle dans son périmètre (F1 sémantique, F2/F4 positionnels) ; cumul dossier Image/01-Foundation inchangé à 17.

    Désignation 567 = GenAI/Image/01-Foundation/01-5c-Qwen-Image-21-Workflows.ipynb (dernier carnet du dossier 01-Foundation).

  29. jsboige commented on Oct 10, 2026

    @jsboige
    OwnerAuthor

    [NanoClaw — cycle 567, 2026-10-10 17:05Z — audit #17073, partition NanoClaw]

    Notebook : MyIA.AI.Notebooks/GenAI/Image/01-Foundation/01-5c-Qwen-Image-21-Workflows.ipynb — 26 cellules (15 md / 11 code), blob 45d9d788, extraction first-hand depuis main (streams tronqués à empreintes + extraits), execution_count 1→11 séquentiel sans trou.

    F1 — stale-claim (sémantique)

    • Cellule : markdown c14_015c (« ### Lecture du resultat », §4), en appui c12_015c (§4 intro) et sortie committée de la cellule code 13.
    • Extrait verbatim (c14_015c) : « Le temps mesure, rapporte a la reference 12 Go de l editeur, donne l'ordre de grandeur du gain de l'instance dediee. » — et (c12_015c) : « La reference de l'editeur mentionne ~2 minutes a 4 MP sur une carte a 12 Go -- l'instance dediee (24 Go, INT8) doit faire mieux ; la mesure ci-dessous le dit. »
    • Sortie committée (code 13, ec=6) : « Generation : 190 s -- 1184x1760 px (2 MP demandes) ».
    • Classe : stale-claim.
    • Pourquoi : ramenée au mégapixel, la mesure committée (190 s @ 2 MP ≈ 95 s/MP) est ~3× plus lente que la référence citée par le carnet lui-même (~120 s @ 4 MP ≈ 30 s/MP) — l'« ordre de grandeur du gain » que la lecture prétend tirer de la mesure est l'inverse de ce que la mesure montre ; aucune sortie à 4 MP n'est committée pour soutenir l'affirmation.

    Comptées non déposées (mineures)

    • c06_015c : coquille « deciderea » (« la version ComfyUI annonce deciderea si les noeuds ») — typo, pas de perte de sens.
    • c02 (palier INT8) : tailles de fichiers (7,26 Go / 9,35 Go / 676 Mo) = faits de manifeste de déploiement, non mesurés dans le run — externes plausibles, hors périmètre.
    • Lecture de couverture (c20_015c) : énumère openpose et layer_decomposition comme exemples de manquants mais nomme pas panorama/PanoramaPreview qui figure dans le tableau lu — incomplète, pas fausse (la disjonction générale couvre le cas).

    Vérifié sans réserve

    • Navigation : Précédent → 01-5b ✓, Suivant → ../02-Advanced/02-2-FLUX-1 ✓ (les deux existent, résolution correcte des chemins relatifs).
    • Frontière densite pedagogique : 430 notebooks sous le plancher 1200 — surface majoritairement non suivie #13410 : exactement UNE lecture par sortie, chacune placée après sa cellule (lecture stats → code 5, conversion → code 10, génération → code 13, graines → code 16, couverture → code 19) ; aucune double lecture, aucun enrichissement ajouté à une lecture existante.
    • Doublons : scan normalisé headers (niveau # retiré) + Jaccard blocs > 0,6 sur les 15 cellules md → 14 headers uniques, 0 doublon (contraste net avec 01-5b, MD1/MD3 dupliqués).
    • Exercices : 3 stubs (resultat_ex1/2/3 = None) avec énoncés riches, indices donnant la méthode pas la solution — 0 fuite.
    • Garde INT8 : assert manifeste sur les 3 chargeurs dans le code — cohérent avec la doctrine du §2.
    • Streams : valeurs citées par les lectures toutes présentes dans les sorties committées (190 s, 1184x1760, 3× graines ok, 981 classes, table de couverture 12 workflows) — aucune valeur fabriquée.

    Organe #18402

    0 instance dans le périmètre : la valeur de mesure (190 s) EST dans les sorties committées — le défaut ci-dessus est d'interprétation (sémantique), pas une valeur absente ; reste un finding, pas une ligne additive.

    Garde population & skips

    VERT : 773/773 (0 added / 0 removed vs population-nc.json), head main 5e96ffec4 (force-push mesuré ce cycle). 0 skip : 143 PRs ouvertes croisées (pages 1+2), aucune ne touche ce notebook.

    — Désignation 568 : Image/02-Advanced/02-2-FLUX-1-Advanced-Generation.ipynb (premier non-coché de la section 02-Advanced).

    — NanoClaw (myia-ai-01) [17:05Z]

  30. jsboige commented on Oct 10, 2026

    @jsboige
    OwnerAuthor

    [vllm] 1 dossier(s) livrés à 17:09Z (03-1-Multi-Model-Comparison) par DM RSM

  31. jsboige commented on Oct 10, 2026

    @jsboige
    OwnerAuthor

    [vllm] 1 dossier(s) livrés à 18:12Z (03-2-Workflow-Orchestration) par DM RSM

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions