MICROSOFT AGENT FRAMEWORK · 0.16.0-rc.1
Exercice : action documentée intégrée
Vérifier la chaîne documentaire et son effet unique avec preuves de stockage et processus distincts.
Objectifs
- Utiliser cette page pour comprendre : Action documentée intégrée.
Préparer trois propositions séparées
Exécuter la procédure Demo470 avec trois dossiers neufs : rejected, approved, invalid. Conserver les identifiants et codes de sortie. Cet exercice utilise la fixture sans modèle ; la décision appartient à l’opérateur et non à la réponse générée.
Établir les preuves avant et après reprise
1. Démarrer rejected puis relire Waiting dans un autre processus. Copier le couple identifiant/citation depuis Draft.Summary et retrouver le passage du corpus. 2. Refuser puis rejouer le refus : aucun item. 3. Démarrer invalid avec --invalid-evidence : échec sans approbation. 4. Démarrer approved, essayer maybe, confirmer Waiting, approuver et rejouer. 5. Essayer une décision contraire puis start sur le même dossier : attendre deux refus explicites.
Sur une proposition supplémentaire en attente, sauvegarder puis modifier uniquement evidence.json avec un texte de diagnostic distinct. Relire status et approuver : Draft et StoredItem doivent rester identiques à la proposition initiale. Cette expérience démontre le rôle du fichier ; elle ne démontre aucune résistance à la modification directe de business.db.
Rendre une matrice de résultats
| Mécanisme | Portée |
|---|---|
| Citation inventée | Échec avant Approvals ; aucun item |
| maybe | Échec ; Waiting conservé |
| reject + rejeu | Rejected ; zéro ApprovedBacklogItems |
| approve + rejeu | Completed ; une ligne, même ItemId, Draft = StoredItem |
| Décision contraire | Échec ; première décision conservée |
Expliquer le rôle de chaque garde
AnswerGate rejette l’identifiant inconnu. Register fige le brouillon pour une opération. Le reçu et la version reconstruisent la même demande native. RecordDecision conserve la première décision ; Apply utilise le Draft stocké et la clé unique dans une transaction. Pour vérifier le résultat, joindre les tables par OperationId et compter les lignes, sans se limiter au texte Completed. Rattacher chaque observation à sa commande et à son dossier.
public ApprovalState Apply(ApprovalDecision decision)
{
RecordDecision(decision);
using var connection = Open();
using var transaction = connection.BeginTransaction();
using var command = connection.CreateCommand();
command.Transaction = transaction;
command.CommandText = """
INSERT INTO ApprovedBacklogItems (OperationId,Draft,CreatedUtc)
SELECT OperationId,Draft,$utc FROM Approvals WHERE OperationId=$id AND Status IN ('Approved','Completed')
ON CONFLICT(OperationId) DO NOTHING;
UPDATE Approvals SET Status='Completed' WHERE OperationId=$id AND Status='Approved';
""";
command.Parameters.AddWithValue("$id", decision.OperationId);
command.Parameters.AddWithValue("$utc", DateTimeOffset.UtcNow.ToString("O"));
command.ExecuteNonQuery();
transaction.Commit();
return Read(decision.OperationId);
Indices de vérification
Avant la correction, consigner la prédiction et le résultat observé. Distinguer texte généré, statut terminal, décision et état persistant. En cas d’écart, suivre le fichier et le test nommés dans la procédure ; ne pas supprimer le garde-fou pour obtenir le résultat attendu.
Séparer exercice et qualification
Ce succès porte sur le mécanisme local avec vecteurs et réponse contrôlés. Il ne qualifie ni modèle, ni vérité documentaire, ni identité de l’opérateur. L’effet unique ne vaut que pour cette clé et cette base ; pas pour un appel distant. Ne pas modifier les bases originales ou historiques pour réaliser l’exercice.
Reprendre la procédure et ses limites
Prérequis
- Demo220 — Business Retrieval
- Demo320 — Durable Approval
- Demo430 — Business Audit
- Demo470 — Documented Approval
