MICROSOFT AGENT FRAMEWORK · 0.16.0-rc.1
Analyse et action : Start/End
Comparer une analyse valide et un brouillon prêt pour l’action, sans écrire en base.
Objectifs
- Comparer trois validations.
- Expliquer pourquoi la validation n’accorde pas une autorisation.
Fichiers de travail et prérequis
Prérequis : Demo050 et Demo080. Travailler dans une copie de la distribution complète, avec exercises/Actionability/Start, End et shared/Maf.Backlog. Seul cet exercice distribue une complétion Start/End ; aucun modèle ou fichier d’état n’est nécessaire.
| Projet | Rôle |
|---|---|
| Start/Actionability.Start.csproj | Version volontairement incomplète ; code de sortie 2 |
| End/Actionability.End.csproj | Solution vérifiant les trois comptes ; code de sortie 0 si conformes |
| shared/Maf.Backlog | Validation commune à conserver sans modification |
using Maf.Backlog;
var draft = new BacklogDraft("CSV export", "Bug", "high", "Reporting",
"Large CSV exports freeze the UI.", ["Which dataset size reproduces the issue?"]);
Console.WriteLine("Exercise incomplete: implement the read-only analysis/action comparison.");
Console.WriteLine($"Analysis errors: {draft.Validate(forAction: false).Length}");
return 2;
Travail à réaliser
dotnet build BaseTechnique.slnx -m:1 -c Release
dotnet run --project exercises/Actionability/Start/Actionability.Start.csproj -c Release --no-buildDans Start, appeler Validate(forAction: false) puis Validate(forAction: true) sur le brouillon initial. Créer ensuite une copie avec ClarifyingQuestions vide et valider cette copie pour action. Afficher les trois comptes d’erreurs. Ne pas ajouter de persistance, de permission ni modifier le validateur partagé.
Ce qu’il faut expliquer
Le brouillon initial contient une question ouverte sur la taille du jeu de données. Il peut être recevable comme analyse tout en restant bloqué pour action. Le fait de retirer cette question dans une fixture contrôlée ne prouve pas qu’un utilisateur réel a répondu.
Indices avant la correction
Comparer Validate(forAction: false) à Validate(forAction: true). Utiliser with pour créer un nouveau brouillon ; ne pas changer le validateur partagé. Afficher les trois compteurs puis retourner un code qui vérifie leur valeur.
Comparer à End
dotnet run --project exercises/Actionability/End/Actionability.End.csproj -c Release --no-buildRésultats attendus, issus du fichier End : Analysis errors: 0 ; Action errors before clarification: 1 ; Action errors after clarification: 0. End vérifie ces trois valeurs et termine avec 0 si elles concordent, 1 sinon. Aucun nouveau lancement de l’exercice n’est revendiqué ici.
using Maf.Backlog;
var draft = new BacklogDraft("CSV export", "Bug", "high", "Reporting",
"Large CSV exports freeze the UI.", ["Which dataset size reproduces the issue?"]);
int analysisErrors = draft.Validate(forAction: false).Length;
int actionErrors = draft.Validate(forAction: true).Length;
var clarified = draft with { ClarifyingQuestions = [] };
int clarifiedErrors = clarified.Validate(forAction: true).Length;
Console.WriteLine($"Analysis errors: {analysisErrors}");
Console.WriteLine($"Action errors before clarification: {actionErrors}");
Console.WriteLine($"Action errors after clarification: {clarifiedErrors}");
Console.WriteLine("Validation does not grant permission or approval. No business write was attempted.");
return analysisErrors == 0 && actionErrors == 1 && clarifiedErrors == 0 ? 0 : 1;
