# Provenance et attribution

Préservez l'origine d'une mémoire sans confondre les métadonnées sources avec l'autorisation ou la propriété.

- Canonical: https://docs.xmemo.dev/fr/docs/concepts/provenance-attribution
- Locale: fr-FR
- Content-Locale: fr-FR
- Canonical-Content-Digest: 019b1c6aab84d15e8b791ec3f9b7ecd3d545865415ceba204e14301dea665c6a
- Edition-Digest: 7e4e039ec4f2eeeee2c12c4c3d7f85fb985e9bb0cdc8d1e871cfc9d2da8d7555
- Source-Revision: sha256:3922476e09ce20617ab30ead32aa1ccd8f95082d0f395b172b3eadd0d8fd2d45

## La provenance fait partie intégrante de l'enregistrement public de mémoire

Le contrat de mémoire expose la provenance aux côtés de content, path, source_identity, agent_id, agent_instance_id_hash et agent_instance_source. La provenance constitue un ensemble structuré de preuves décrivant la manière dont un enregistrement a été produit ; il ne s'agit pas d'un jeton porteur et elle ne peut en aucun cas élargir les accès de l'appelant.

- source_identity est le libellé compact de l'appelant ou de la source utilisé par les flux d'écriture et d'audit.
- provenance est un objet JSON contenant des champs relatifs à la source, à l'adaptateur, à l'événement ou à d'autres preuves.
- agent_instance_id_hash constitue la valeur d'attribution d'installation garantissant la protection de la vie privée.

## Les événements d'agent véhiculent leur origine

AgentEvent.to_memory_candidate génère un MemoryCandidate dont la provenance contient source=agent_integration, adapter=<event source> et event_id. Les métadonnées du candidat conservent également le type d'événement, l'horodatage, l'identifiant d'agent, l'identifiant de tâche, le nom de l'outil, la commande, le chemin du fichier et le statut une fois le filtre partagé de nettoyage exécuté.

```json
{
  "provenance": {
    "source": "agent_integration",
    "adapter": "codex",
    "event_id": "evt_<stable-event-id>"
  },
  "metadata": {
    "agent_event": {
      "event_type": "decision_made",
      "task_id": "<task-id>"
    }
  }
}
```

## Associer l'attribution lors de l'enregistrement de la mémoire

Les modèles de requête publics remember et store acceptent source et provenance. Fournissez des libellés stables et non secrets au moment de la capture ; conservez l'identifiant d'accès dans son en-tête ou ses variables d'environnement et laissez le serveur assainir le contenu, les métadonnées et la provenance avant la persistance.

```http
POST /v1/remember
X-API-Key: <your-assigned-api-key>
Content-Type: application/json

{
  "content": "The deployment decision was verified.",
  "path": "projects/memory-os/decisions",
  "source": "codex",
  "provenance": {
    "source": "agent_integration",
    "adapter": "codex",
    "event_id": "evt_<stable-event-id>"
  }
}
```

## L'assainissement n'efface pas la traçabilité

L'assainisseur de persistance parcourt structurellement le contenu, les métadonnées et la provenance. Les valeurs s'apparentant à des identifiants d'authentification sont supprimées ; si une expurgation intervient, le serveur consigne des métadonnées d'audit privacy.server_write_sanitizer tout en préservant les champs de provenance sûrs. Considérez l'enregistrement résultant comme un ensemble de preuves assainies, et non comme une archive brute d'événements.

## Utilisateur de ChatGPT

Donnez à ChatGPT un accès durable à vos préférences XMemo, faits de projet, décisions et TODOs sans coller de jetons bearer dans un chat.

Connectez le serveur MCP XMemo hébergé via le flux OAuth de l'application ChatGPT/OpenAI, puis approuvez les autorisations memory:read et memory:write pour votre compte XMemo.

Enregistrez une préférence synthétique ou une note de projet, démarrez un nouveau chat, puis demandez à ChatGPT de la rappeler via XMemo avant de poursuivre le travail.

Si OAuth échoue ou si les outils n'apparaissent pas, déconnectez-vous du serveur MCP dans l'application hôte, reconnectez l'URL du serveur XMemo et réessayez avant de créer des jetons directs.

## Développeur Copilot / Codex

Transmettez les décisions du dépôt, les conventions de codage, les notes de correctifs et l'historique des tâches entre les agents IDE et CLI.

Utilisez OAuth pour VS Code / GitHub Copilot et Gemini CLI lorsqu'il est disponible. Pour Copilot CLI, Codex, Cursor ou d'autres clients MCP directs, conservez XMEMO_KEY dans l'environnement local ou le gestionnaire de secrets et définissez un identifiant XMEMO_AGENT_INSTANCE_ID stable.

Enregistrez une décision relative au code ou un correctif, puis demandez au prochain agent de l'IDE ou de la CLI de rappeler le contexte XMemo pertinent avant toute modification.

Si les rappels sont vides, vérifiez le chemin de configuration MCP sélectionné, la variable d'environnement XMEMO_KEY pour les clients directs et tout identifiant OAuth obsolète dans l'application hôte.

## Responsable de projet pilote d'équipe / entreprise

Évaluez la mémoire partagée avec les contrôles de compte, l'attribution des sources, les flux d'exportation/suppression et des preuves de configuration sécurisées pour les évaluateurs.

Créez ou rejoignez l'espace de travail sécurisé XMemo, invitez les utilisateurs approuvés, puis connectez chaque client via OAuth ou un identifiant direct délimité selon les badges de disponibilité.

Demandez à un membre du projet pilote d'enregistrer une mémoire d'équipe synthétique, confirmez l'attribution de la source dans XMemo, puis examinez les chemins de suppression/exportation et de support.

Si un membre ne parvient pas à se connecter, vérifiez les permissions de rôle, l'approbation OAuth, l'état de disponibilité du client et les conseils du support avant d'émettre un nouveau jeton.

## Opérateur d'agents autonomes

Permettez aux agents autonomes ou planifiés d'enregistrer leur progression, de récupérer les décisions antérieures et de conserver une identité d'instance stable et non secrète.

Récupérez /api/v1/mcp/config/autonomous-agent. Privilégiez auth_modes.oauth lorsque l'exécuteur prend en charge OAuth + en-têtes personnalisés ; utilisez auth_modes.xmemo_key avec XMEMO_KEY issu d'un gestionnaire de secrets uniquement pour les exécuteurs entièrement autonomes.

Exécutez une tâche synthétique qui consigne la progression dans XMemo, redémarrez l'exécuteur et confirmez qu'il rappelle cette progression à l'aide du même XMEMO_AGENT_INSTANCE_ID.

Si l'attribution change ou si les rappels se scindent entre instances, conservez XMEMO_AGENT_INSTANCE_ID hors de git et vérifiez que l'exécuteur ne le régénère pas à chaque démarrage.
