Documentation Modernisation .NET
Sur cette page
Choisir une démo
Parcours guidé

Démo Moderniser .NET

Une seule demande autopilot /squad — sans prompt à chaque étape — modernise une véritable application ancienne sur place de .NET Framework 4.8 → .NET 10 : recherche sur les dépendances, conseil avant implémentation (architecture, sécurité, IA responsable), contrôle des risques de sécurité (Risk Gate), conversion au format SDK proprement dite et boucle de revue qui détecte de véritables problèmes, les corrige et refait la revue jusqu'à zéro constat avant de donner le feu vert. Le fait marquant est la boucle complète : arrêt au contrôle, approbation humaine sous conditions, livraison du travail, détection de lacunes lors de la revue, puis corrections et preuves par la squad — le tout dans un seul dépôt.

Ouvrir le dépôt de la démo sur GitHub →

Ce que vous démontrez#

Qu'une seule ligne autopilot peut prendre une base de code ancienne et piloter de manière autonome une mise à niveau complète du framework sur place, examinée par le conseil — et, ce qui est tout aussi important, que le contrôle des risques et la boucle de revue intégrés maintiennent l'humain aux commandes et refusent de déclarer la réussite tant qu'il reste des constats. Contrairement au parcours Migration en autopilot, qui s'est arrêté au contrôle et a sollicité une décision humaine, cette exécution montre la boucle complète : contrôle → approbation conditionnelle → implémentation → revue → remédiation → nouvelle revue sans constat → feu vert. La squad a déduit elle-même tout le pipeline Recherche → Conseil → Planification → Implémentation → Revue.

CapacitéMembre de la squad (rôle)Remarques
Recherche du parcours de mise à niveauAlpha (researcher)Évaluation des dépendances et de la compatibilité ; trois blocages — csproj non SDK, MSTest v1/GAC, guide d'exploitation de la CLI dotnet.
Planification de la modernisationBeta (lead), Epsilon (modernizer)Ordonnancement de la conversion au format SDK, du remplacement de la pile de tests et du nettoyage de la configuration, avec critères de validation.
Conseil (architecture, sécurité, IA responsable)Zeta, Eta, Theta (architect, security, rai)Feu vert sous conditions ; la sécurité a signalé un risque élevé et déclenché le contrôle des risques.
Mise à niveau sur placeGamma (developer).csproj au format SDK, net10.0, MSTest via NuGet, CLI dotnet + version épinglée dans global.json.
Revue qualité + contrôle de validationDelta (tester)La vedette de cette démo — a détecté des lacunes dans les workflows, puis a revu les corrections jusqu'à zéro constat.

Avant de commencer#

Cette démo s'exécute sur un dépôt préparé, hve-squad-modernize-dotnet — le Legacy Inventory Manager, une petite application volontairement ancienne : une bibliothèque de classes, une interface en console et 20 tests unitaires MSTest, tous initialement sous .NET Framework 4.8. Toute l'exécution modifie le dépôt sur place ; sans cloud ni dépense, elle peut donc être présentée en direct sans risque.

PrérequisPourquoiVérification
hve-squad installéL'équipe de modernisation — recherche, pilotage, modernisation, développement, tests, architecture, sécurité, IA responsable — est sollicitée par le coordinateur.apm install "Peter-N91/hve-squad"
VS Code + Copilot (mode agent)Le coordinateur sollicite les membres de l'équipe en tant que sous-agents.—
Le dépôt hve-squad-modernize-dotnetContient la solution ancienne .NET Framework 4.8 (Core, ConsoleApp, Tests).Ouvrez-le comme espace de travail.
SDK .NET 10Nécessaire à la mise à niveau sur place pour compiler et exécuter les projets modernisés net10.0.dotnet --version

Sur place, sans réécriture. La squad met à niveau la solution existante — mêmes modèles métier, mêmes tests, même comportement — elle ne génère pas la structure d'une nouvelle application. C'est tout l'intérêt : une modernisation que l'on pourrait confier à un mainteneur, où chaque changement relève d'un membre nommé et est consigné dans les décisions et l'historique sous .copilot-tracking/squad/.

La demande unique#

Toute la démo tient dans cette seule ligne autopilot. Elle nomme le résultat attendu, pas les étapes — la squad organise elle-même le pipeline :

/squad mode=autopilot request="Modernize this repository from .NET Framework 4.8 to .NET 10. Assess the current projects and dependencies, define the target state, and carry out the in-place upgrade end-to-end."

À expliquer : « Une seule ligne, sans surveillance permanente. Autopilot exécute Recherche → Conseil → Planification → Implémentation → Revue, ne s'arrête que lorsque le risque exige une décision humaine, et ne déclare pas la réussite tant qu'il reste des constats. »

La première demande d'arbitrage spontanée#

Dès le début, le chercheur (Alpha) a signalé qu'il lui manquait l'outillage de délégation nécessaire et a suspendu le pipeline plutôt que d'improviser. L'humain a approuvé une dérogation à la composition de l'équipe — le Squad Modernization Planner a repris les tâches de recherche — et l'exécution a redémarré. C'est un bref épisode, mais il illustre à petite échelle la sécurité du processus : la squad s'arrête et demande une décision plutôt que de s'engager de force dans une mauvaise voie.

Ce qu'autopilot a produit (Recherche → Conseil)#

La recherche s'est terminée par un feu vert conditionnel, puis un conseil avant implémentation a évalué la mise à niveau sous trois angles avant toute modification du code :

ÉtapeResponsable(s)RésultatÉtat
1 · RechercheAlphaConstats sur les dépendances et la compatibilité ; blocages B1 csproj non SDK, B2 MSTest v1/GAC, B3 App.config propre au framework, B4 compilation dépendante des chemins VS.✅ Feu vert (conditionnel)
2 · ConseilZeta, Eta, ThetaArchitecture (rupture de plateforme de tests, dérive de compilation/configuration), sécurité (risque élevé : absence de SAST+SCA, politique de confiance des dépendances non définie), IA responsable (sans incidence significative).✅ Feu vert sous conditions
3 · Contrôle des risquesHumainLe risque de sécurité élevé a déclenché le contrôle — approbation sous conditions en mode de rigueur consultatif.✅ Approuvé
4 · ImplémentationGamma, EpsilonConversion au format SDK, MSTest via NuGet, nettoyage d'App.config, workflows de CLI dotnet, version épinglée dans global.json.✅ Terminée
5 · RevueDeltaBoucle de validation et de remédiation.✅ Feu vert (après remédiation)
6 · Validation—Validation du résultat final.⏸ En attente de l'utilisateur (Promote-to-RC)

Le contrôle des risques — l'arrêt pour décision humaine#

Le verdict du conseil était unanimement feu vert sous conditions (Go-With-Conditions), mais la sécurité (Eta) a évalué le travail comme présentant un risque élevé et identifié deux blocages impératifs, ce qui a déclenché le contrôle des risques. Autopilot ne l'a pas contourné — il s'est arrêté et a confié la décision à l'humain :

RôleVerdictConditions principales
Architecture (Zeta)Feu vert sous conditionsDocumenter la migration de la plateforme de tests ; ajouter un plan de stabilité du contrat de compilation ; expliciter la stratégie de modernisation de la configuration.
Sécurité (Eta)Feu vert sous conditions · Risque élevéAjouter un workflow d'analyse SAST + SCA et une politique de confiance des dépendances définie avant la fusion du code modernisé.
IA responsable (Theta)Feu vert sous conditionsPérimètre sans incidence significative ; préserver les contrôles de revue/qualité et la traçabilité d'audit.

L'humain a choisi Approve-With-Conditions (Approuver sous conditions) en mode de rigueur consultatif : le pipeline reprend, les conditions sont intégrées au plan et les problèmes non critiques sont consignés et suivis plutôt qu'ignorés en silence. La squad ne décide jamais à votre place lors d'un contrôle des risques.

Ce que la mise à niveau a réellement changé#

Une fois le contrôle franchi, le développeur (Gamma) et le spécialiste de la modernisation (Epsilon) ont effectué la mise à niveau sur place — en résolvant chaque blocage identifié pendant la recherche :

BlocageAvantAprès
Format du projetAncien .csproj non SDK, .NET Framework 4.8.csproj au format SDK ciblant net10.0
Pile de testsMSTest v1 raccordé via le GACMSTest via NuGet (Microsoft.NET.Test.Sdk, MSTest.TestFramework, MSTest.TestAdapter)
Compilation et testsDépendants des chemins Visual StudioCLI dotnet avec version du SDK épinglée dans global.json
Configuration de l'applicationMétadonnées App.config propres au frameworkConfiguration obsolète supprimée
CI / sécuritéAucuneAjout de dotnet-ci.yml + security-scanning.yml (SAST + SCA)

Une validation indépendante a rapporté un dotnet restore sans erreur, des compilations Debug et Release réussies et 20 tests sur 20 réussis — mêmes tests, même comportement, nouveau framework. Le renforcement des analyseurs et de la nullabilité (B5) a été reporté délibérément et suivi comme un travail ultérieur, pas abandonné en silence.

La boucle de revue — la preuve du travail accompli#

C'est le moment clé. La première revue (Delta) a validé la compilation, mais n'a pas laissé passer le travail — elle a détecté trois véritables problèmes et l'a renvoyé pour correction :

N°ConstatGravitéPourquoi c'est important
1Le job CodeQL peut dériver vers le SDK préinstallé sur le runnerMoyenneL'analyse de sécurité n'était pas épinglée sur global.json ; elle pouvait donc valider un SDK différent de celui de la CI.
2La CI ne se déclenche que sur PR + lancement manuelMoyenneDes pushes directs sur main ou des cas limites de file de fusion pouvaient contourner entièrement la CI.
3Un App.config vide est toujours inclusFaibleSans conséquence à l'exécution, mais ambigu pour les mainteneurs.

La squad a exécuté une boucle de remédiation : épinglage du SDK de CodeQL via actions/setup-dotnet avec global.json, ajout d'un déclencheur push pour main et suppression de l'inclusion du fichier App.config vide. La nouvelle revue a conclu à 0 critique · 0 élevé · 0 moyen · 0 faible, avec toujours 20 tests sur 20 réussis — verdict feu vert (Go).

C'est tout l'intérêt de la démo. Un modèle qui se serait contenté de générer du code aurait livré une compilation réussie et déclaré le travail terminé. La squad a revu son propre travail, identifié trois lacunes concrètes avec le fichier et la ligne concernés, les a corrigées et a de nouveau prouvé le résultat jusqu'à zéro constat avant de déclarer la réussite — avec une approbation humaine au contrôle des risques en cours de route.

Le point de décision#

Après un feu vert sans constat, l'exécution s'arrête à la validation du résultat final et laisse l'humain choisir — elle ne promeut jamais le code à votre place :

  • Promote-to-RC (Promouvoir en RC) (recommandé) — accepter le feu vert et marquer le code d'un tag de version candidate pour l'approbation finale.
  • Request-Changes (Demander des modifications) — renvoyer le travail dans la boucle Implémentation → Revue pour le compléter.
  • Stop (Arrêter) — interrompre l'exécution ; le code reste en l'état.

L'exécution complète a nécessité 8 tours et 11 délégations, pour environ 0,72 $ (environ 72 crédits IA), avec deux interventions humaines — la réaffectation de la recherche et l'approbation au contrôle des risques — et chaque décision conservée sous .copilot-tracking/squad/.

Solutions de repli en cas de problème#

Si…Alors…
Un rôle signale un outillage manquantC'est l'illustration de la demande d'arbitrage spontanée — la squad s'arrête et demande une dérogation à la composition de l'équipe plutôt que de forcer une mauvaise voie. Montrez l'entrée du journal des décisions.
Le SDK .NET 10 n'est pas installéRecherche, conseil et planification s'exécutent tout de même ; seuls la compilation et les tests en direct nécessitent le SDK. Montrez plutôt l'épinglage dans global.json.
La revue ne trouve aucun constat dès le premier passageMontrez tout de même le livrable de revue — la boucle de remédiation est ce qui fait la différence ; décrivez les constats qu'elle aurait détectés.
Quelqu'un demande « mets à niveau et livre, tout simplement »La squad applique tout de même le contrôle des risques et la boucle de revue — elle ne saute jamais le contrôle et ne déclare jamais la réussite tant que des constats restent ouverts.

Points clés pour conclure#

  • Une demande, tout le pipeline. Une seule ligne autopilot a piloté Recherche → Conseil → Planification → Implémentation → Revue, sans prompt à chaque étape.
  • Modernisation sur place, pas réécriture. La solution ancienne est passée de .NET Framework 4.8 à .NET 10 avec les mêmes tests réussis — 20 sur 20, avant comme après.
  • Le contrôle et la boucle sont le produit. La sécurité a déclenché un contrôle des risques approuvé par un humain, puis la revue a détecté trois lacunes et la squad les a corrigées jusqu'à zéro constat avant le feu vert.
  • Vous gardez le contrôle. Deux décisions humaines — une dérogation à la composition de l'équipe et l'approbation au contrôle des risques — et chaque choix conservé dans les décisions et l'historique.

Rechercher dans la documentation

Recherchez dans la documentation française. Appuyez sur Échap pour fermer.

Chargement de la recherche…