Skip to content

feat(agentguard): étendre AGENTGUARD003 à Task.Factory.StartNew nu #15780

Description

@jsboige

Constat vérifié

L’axe Roslyn de l’EPIC #10473 est presque entièrement absorbé, mais son dernier item E3 reste un exercice non livré : Task.Factory.StartNew(...) nu.

Sur origin/main :

Sous-grain

Étendre AGENTGUARD003 sans créer un diagnostic parallèle : signaler une invocation nue de Task.Factory.StartNew(...) lorsque le symbole résolu est System.Threading.Tasks.TaskFactory.StartNew, tout en conservant le comportement actuel de Task.Run.

Critères d’acceptation

  1. Le filtre sémantique accepte exactement Task.Run ou TaskFactory.StartNew, sans heuristique textuelle.
  2. Un terrain fautif Task.Factory.StartNew(...) nu rend AGENTGUARD003 x1.
  3. Des contrôles négatifs couvrent au minimum : tâche attendue ou récupérée, discard explicite _ =, et StartNew homonyme sur un type utilisateur.
  4. Le projet Demo rend le nouveau diagnostic par dotnet build ; le Verifier rend les verdicts attendus sur les terrains nouveaux et existants.
  5. Le notebook 06 transforme l’exercice 4 en exemple guidé exécuté, explique que StartNew est défini sur TaskFactory, puis conserve un exercice étudiant non résolu conforme C.1.
  6. Ré-exécution .NET complète : toutes les cellules code portent un execution_count, aucune sortie error, outputs réels committés ; strip_probe_banner.py --apply uniquement après ré-exécution.
  7. Le registre des axes cesse d’annoncer comme restants les items E3 déjà livrés et identifie cette tranche comme absorbée.
  8. Catalogue et traductions générées restent byte-identiques à main.

Périmètre

  • MyIA.AI.Notebooks/GenAI/Integrations-DotNet/Aspire/AgentGuard.Analyzers/TaskRunFireAnalyzer.cs
  • MyIA.AI.Notebooks/GenAI/Integrations-DotNet/Aspire/AgentGuard.Analyzers/AnalyzerReleases.Shipped.md
  • MyIA.AI.Notebooks/GenAI/Integrations-DotNet/Aspire/AgentGuard.Demo/Program.cs
  • MyIA.AI.Notebooks/GenAI/Integrations-DotNet/Aspire/AgentGuard.Verifier/samples/TaskFactoryStartNew*.cs
  • MyIA.AI.Notebooks/GenAI/Integrations-DotNet/Aspire/06-Aspire-GardeFous-Roslyn.ipynb
  • MyIA.AI.Notebooks/GenAI/Integrations-DotNet/Aspire/distilled-axes-registry.md

See #10473. See #10475.

Activity

  1. jsboige commented on Sep 12, 2026

    @jsboige
    OwnerAuthor

    Grain: MED/notebook-dotnet — lane myia-po-2025:CoursIA — prev: MED/research-code #15777

    [CLAIMED] lane myia-po-2025:CoursIA -- paths: MyIA.AI.Notebooks/GenAI/Integrations-DotNet/Aspire/AgentGuard.Analyzers/TaskRunFireAnalyzer.cs, MyIA.AI.Notebooks/GenAI/Integrations-DotNet/Aspire/AgentGuard.Analyzers/AnalyzerReleases.Shipped.md, MyIA.AI.Notebooks/GenAI/Integrations-DotNet/Aspire/AgentGuard.Demo/Program.cs, MyIA.AI.Notebooks/GenAI/Integrations-DotNet/Aspire/AgentGuard.Verifier/samples/TaskFactoryStartNew*.cs, MyIA.AI.Notebooks/GenAI/Integrations-DotNet/Aspire/06-Aspire-GardeFous-Roslyn.ipynb, MyIA.AI.Notebooks/GenAI/Integrations-DotNet/Aspire/distilled-axes-registry.md

    Étendre AGENTGUARD003 à Task.Factory.StartNew(...) nu avec filtre sémantique, terrains positifs/négatifs, canal build + Verifier, puis transformer l'exercice 4 en exemple guidé exécuté et conserver un nouvel exercice C.1.

  2. added a commit that references this issue on Sep 12, 2026
    6b3c047
  3. added a commit that references this issue on Sep 12, 2026
    e0828cf
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