# 01 — Correspondance : Annexe C du guide ↔ contrôles Mili

Pour chaque vérification minimale de l'Annexe C (et les exigences de §8 à
§11 qu'elle résume) : ce que Mili fournit, **la preuve à joindre**, et la
part qui reste à l'organisme. Cochez la colonne de droite quand c'est fait.

Légende des preuves : `API` = route de l'agent (authentifiée), `Audit` =
événement dans le journal d'audit (`Réglages → Audit`, filtrable par
catégorie), `Config` = clé de `config.json` (verrouillable par politique).

## A. Besoin, valeur, limites d'usage

| Vérification | Mili | Preuve | Reste à l'organisme | ✓ |
|---|---|---|---|---|
| Le besoin, la valeur attendue et les limites d'usage sont définis | Champ `purpose` du registre; niveau d'autonomie et outils interdits déclarés et appliqués | `API /api/governance/registry` ; `Config agent.registry.purpose`, `agent.autonomy_level`, `agent.forbidden_tools` | Gabarit `02` rempli et approuvé par le propriétaire | ☐ |
| Le niveau d'autonomie est documenté et proportionné au risque | 4 niveaux (`assist`, `propose`, `act_with_approval`, `autonomous`), appliqués aux schémas d'outils envoyés au modèle ET au répartiteur; en `assist` aucun outil d'écriture n'existe pour l'agent | `Audit gate.autonomy_block` ; fiche d'agent (`inventory?format=md`, section Registre) | Choisir le niveau selon §3 (proportionnalité) et le justifier dans `02` | ☐ |

## B. Données et renseignements personnels (§8)

| Vérification | Mili | Preuve | Reste à l'organisme | ✓ |
|---|---|---|---|---|
| Les données, sources, classifications et droits d'usage sont connus | Inventaire des collections RAG (sources, fragments, modèle d'incorporation) avec classification déclarée par collection | `API /api/governance/inventory` ; `Config agent.data_classification` | Déclarer la classification de chaque collection; valider la provenance et les droits d'usage | ☐ |
| Les renseignements personnels ont été évalués et l'EFVP est réalisée lorsque requise | Balayage heuristique des indices de RP (NAS, RAMQ, carte, courriel, téléphone, code postal, date de naissance) — comptes seulement, jamais les valeurs | `API /api/governance/pii` ; section « Indicateurs de RP » de la fiche | Décision du responsable PRP; EFVP si requise | ☐ |
| Sources consultées reconstituables | Chaque recherche documentaire écrit les documents retournés (identifiants, noms) | `Audit data.consult` (catégorie tool) | — | ☐ |
| Le contenu des requêtes n'est pas journalisé par le fournisseur d'inférence | Passerelle d'inférence opérée par Mili (voir politique de confidentialité §5/§7) | Fiche d'agent, section « Modèles et inférence » | Vérifier que le lieu d'inférence déclaré convient à la classification des données | ☐ |

## C. Accès et moindre privilège (§8, §9)

| Vérification | Mili | Preuve | Reste à l'organisme | ✓ |
|---|---|---|---|---|
| Accès, outils, connecteurs et permissions limités au strict nécessaire | Connecteurs activés un à un, permission d'écriture par instance, liste blanche `agent.allowed_tools`, politique de la console qui verrouille les connecteurs | Fiche d'agent, section « Systèmes connectés » (noms des identifiants, jamais les valeurs) ; `Audit policy.*`, `settings.change` | Revue des connecteurs et des identifiants avant le pilote | ☐ |
| L'agent ne peut pas élargir ses permissions, modifier ses règles, effacer ses journaux, désactiver ses garde-fous, contourner les validations | Le contenant de l'agent n'a aucun accès au répertoire `data/` (journaux, politique, coffre); les outils s'exécutent dans un espace de travail isolé; aucun outil d'auto-approbation n'existe; la politique poussée par la console est verrouillée | `Audit` (chaîne de hachage vérifiable : `Réglages → Audit → Vérifier`) | — | ☐ |

## D. Risques propres (§7, §8)

| Vérification | Mili | Preuve | Reste à l'organisme | ✓ |
|---|---|---|---|---|
| Injection d'instructions | Passerelle de contamination : une action externe influencée par du contenu non fiable (page web, fichier, courriel) est bloquée ou soumise à validation | `Audit gate.taint_block`, `hitl.decision` (kind `tainted_write`) | Sensibiliser les utilisateurs (§13) | ☐ |
| Exfiltration | Suivi des sorties réseau par outil; validation avant envoi externe; identité d'agent signée (HMAC) sur MCP | `Audit tool.call` (target), `mcp.outbound_call` | — | ☐ |
| Élévation de privilèges / usage abusif | Commandes destructives ou d'escalade bloquées (passerelle de risque); contextes autonomes en blocage dur | `Audit gate.risk_block` | — | ☐ |
| Dérive fonctionnelle | Niveau d'autonomie + outils interdits déclarés; empreinte de version qui change dès qu'une règle, un modèle, un connecteur ou un outil change | `API /api/governance/registry` → `version_fingerprint` | Comparer l'usage réel à l'usage autorisé lors de la revue (`07`) | ☐ |

## E. Journalisation (§9)

| Vérification | Mili | Preuve | Reste à l'organisme | ✓ |
|---|---|---|---|---|
| Les journaux sont suffisants, protégés et exploitables | Journal d'audit chaîné par hachage, en dehors de la portée de l'agent, synchronisé à la console; catégories : auth, http, settings, llm, tool, vault, policy, system, **hitl** (validations), **mcp** (multi-agents) | `Réglages → Audit` ; console de gestion | Définir la durée de conservation (`Config audit.retention_days`) | ☐ |
| Demande initiale, sources, outils, étapes, résultats, actions proposées/exécutées | `llm.invoke`, `data.consult`, `tool.call`, transcriptions de conversation | `Audit` | — | ☐ |
| Validations humaines | `hitl.prompt` (action proposée) → `hitl.decision` (qui a autorisé/refusé, délai); `approval.request/act`; `hitl.bot_confirm`; `hitl.escalate/escalation_resolve` | `Audit`, catégorie hitl | — | ☐ |
| Erreurs et incidents | `tool.call` (échecs), `gate.*`, `agent.suspend/resume`, `cost.turn_cap` | `Audit` | Fiche d'incident (`04`) | ☐ |
| Coûts générés | `cost.turn` par exécution (modèle, vision, voix, images, incorporations; source du coût : passerelle / estimation), `cost.budget_threshold`, `cost.background` | `Audit`, catégorie llm ; tableau de bord des métriques | — | ☐ |
| Conservation pendant un incident | L'élagage du journal est suspendu tant que l'agent est suspendu | `Audit` (`agent.suspend`) | — | ☐ |

## F. Supervision et escalade (§9)

| Vérification | Mili | Preuve | Reste à l'organisme | ✓ |
|---|---|---|---|---|
| Validation humaine préalable des actions sensibles | Fenêtre d'approbation déterministe (Autoriser / Refuser, aperçu des arguments, délai fermé par défaut); confirmation des canaux de clavardage vérifiée par le code, jamais par le modèle; passerelle d'approbation par courriel | `Audit hitl.*` | Nommer la personne responsable de la supervision (`03`) | ☐ |
| La supervision n'est pas symbolique | L'aperçu montre l'outil, les arguments (secrets caviardés), la source de contamination le cas échéant | Fenêtre d'approbation | Former la personne (§13) | ☐ |
| Mécanismes d'escalade définis à l'avance | Outil `escalate` avec les 7 déclencheurs du guide; en session autonome l'agent s'arrête et l'escalade attend une décision humaine | `API /api/escalations` ; `Audit hitl.escalate` | Traiter la file d'escalades; définir le délai de réponse | ☐ |

## G. Arrêt, reprise manuelle, incident (§9, §12)

| Vérification | Mili | Preuve | Reste à l'organisme | ✓ |
|---|---|---|---|---|
| Le mécanisme d'arrêt, la reprise manuelle et la procédure d'incident sont testés | Suspension locale (`POST /api/suspend`) ou par la console; annule les exécutions en cours, bloque toute écriture, tâches planifiées et appels d'agents; interface en lecture seule; une suspension imposée par la console ne peut être levée localement | `Audit agent.suspend` (acteur, motif, exécutions annulées), `agent.resume` ; `governance.notify` | Exécuter le **protocole de test** de `04` et consigner le résultat; documenter le retour manuel du processus d'affaires | ☐ |
| Avis aux personnes concernées | Avis automatique au propriétaire, au superviseur et à l'approbateur via la console | `Audit governance.notify` | Configurer les courriels dans `agent.registry` | ☐ |

## H. Coûts (§10)

| Vérification | Mili | Preuve | Reste à l'organisme | ✓ |
|---|---|---|---|---|
| Coûts, seuils d'alerte et plafonds de consommation définis | Plafond de la période (clé de facturation), plafond **par exécution** en jetons et en argent, seuils 50/80/95 % (configurables), arrêt automatique, coût par type de tâche | `Config agent.turn_token_cap`, `agent.turn_cost_cap_usd`, `agent.budget_alert_thresholds` ; `Audit cost.*` | Fixer les valeurs (`05`); désigner le responsable du suivi | ☐ |

## I. Rôles (§13)

| Vérification | Mili | Preuve | Reste à l'organisme | ✓ |
|---|---|---|---|---|
| Rôles de supervision, d'escalade, d'approbation et de soutien attribués | Champs `owner`, `tech_lead`, `supervisor` du registre; approbateur de la passerelle courriel | `API /api/governance/registry` | Gabarit `03` | ☐ |

## J. Cycle de vie (§11, §12)

| Vérification | Mili | Preuve | Reste à l'organisme | ✓ |
|---|---|---|---|---|
| Registre des agents | Fiche de registre dans le battement de cœur vers la console; état de déploiement (`pilot`, `production`, `suspended`, `retired`) | Console de gestion ; `API /api/governance/registry` | Tenir le registre (`06`) | ☐ |
| Versions des modèles, instructions, règles, connecteurs, outils | Empreinte de version (persona, garde-fous, modèles, politique, connecteurs, outils, autonomie, version logicielle); `settings.change` et `policy.*` dans l'audit | `version_fingerprint` ; `Audit` | Journal des changements (`06`) | ☐ |
| Tests en environnement contrôlé | Instance de pilote distincte (même installateur), politique distincte | — | Prévoir l'instance pilote | ☐ |
| Suspension, retrait, archivage, déclassement | Suspension (ci-dessus); état `retired` au registre; export de la fiche et du journal avant retrait | — | Procédure de retrait (`06`) | ☐ |
| Système multi-agents : orchestration, rôles, transferts, validations | Lignage complet : `subagent.spawn/done`, `mcp.inbound_call/outbound_call` avec identifiants de trace; identité signée; garde-fous par contact | `Audit`, catégorie mcp | Documenter les rôles des agents pairs | ☐ |
