Constructions de l'ère des agents · Schéma de carte de périmètre v0.1
La carte de périmètre d'agent
Quatre questions, une page. Que lit l'agent? Qu'écrit-il? Qui doit approuver? Comment l'arrête-t-on? La carte de périmètre répond aux quatre dans un format qu'une personne peut parcourir et qu'une machine peut analyser. Le fournisseur la publie à sa propre adresse. Le format ne coûte rien, et aucune carte ne certifie jamais l'agent.
Schéma v0.1.0 · Publié le 2026-11-04 · Statut : actuel. Les changements incompatibles seront publiés comme v0.2 à une nouvelle URL versionnée; cette page reste figée.
Pourquoi elle existe
La démo se termine; les questions commencent
La démo se passe bien. L'agent de soutien répond en français, retrouve la commande, propose le remboursement. Puis les achats posent les questions ennuyeuses. Où vont les transcriptions de nos clavardages, et pendant combien de temps? Est-ce que ce que nous tapons sert à entraîner un modèle? Quand l'agent veut émettre ce remboursement, une personne approuve-t-elle d'abord? S'il se met à mal fonctionner un vendredi à 23 h, quel est l'interrupteur d'arrêt, et qui a le droit de l'actionner?
La plaquette commerciale répond rarement. La politique de confidentialité répond en paragraphes. La carte de périmètre répond en champs : onze blocs, chacun avec un rôle, publiés à une URL stable que le fournisseur contrôle. Voyez-la comme l'étiquette nutritionnelle des agents, pour la confidentialité.
Positionnement
Votre carte, votre URL
Le fournisseur héberge sa propre carte. movahedi.ca publie le schéma et les outils qui le lisent; nous ne détenons la carte de personne et nous ne voyons le trafic de personne. Quand vous voulez la carte, vous la récupérez chez le fournisseur, pas chez nous.
Les outils de rendu et de comparaison lisent ce que le fournisseur publie. Le rendu est livré avec cette version; l'outil de comparaison, qui signale les champs modifiés et les changements de last_true_date entre les versions d'une carte, n'est pas encore construit. C'est le prochain élément prévu.
Les cartes sont gratuites, pour toujours. Ni frais, ni compte, ni barrière entre un fournisseur et le format.
Une ligne compte plus que les autres : une carte est une divulgation, pas un sceau. Aucune carte n'est jamais décrite comme certifiée, approuvée ou endossée par movahedi.ca. La carte dit ce que le fournisseur affirme. Que l'affirmation soit vraie est une autre question, et la carte n'y répond pas.
La spécification
Onze blocs, dans cet ordre
Chaque carte est un objet JSON avec ces blocs, dans cet ordre. Un bloc manquant est une erreur, pas un raccourci.
1. card_metadata : l'enveloppe
schema_version vaut "0.1.0".card_id est l'identifiant stable choisi par le fournisseur, et card_url est l'adresse où le fournisseur l'héberge; l'URL du fournisseur est la copie canonique.published_at_utc suit la norme RFC 3339.last_true_date est le champ qui a des dents : la dernière date où l'exploitant a vérifié que chaque champ était vrai. Une carte vérifiée il y a six mois décrit un système qui a été livré vingt fois depuis.french_completeness_status vaut completeou partial_marked, la même convention que l'index des actions conséquentielles.
2. operator : qui l'exploite
name, jurisdiction etcontact_url. Le nom sur la carte est celui qui répond de l'agent.
3. agent : à quoi il sert
name, purpose en une phrase et en langage clair, purpose_fr quand la carte déclare un français complet, et version. La finalité tient en une phrase. Un paragraphe de texte marketing échoue au champ.
4. access : ce qu'il lit et écrit
reads et writes énumèrent chacun unsystem_id et des data_categories. L'identifiant de système est stable, jamais un secret d'authentification ni un secret de point de terminaison. Les catégories sont des catégories, jamais des valeurs :order_ticket, pas le billet.
La règle sans exception : une carte ne contient aucun renseignement personnel brut. Si un champ exigerait un nom, une adresse courriel ou un numéro d'identité, il n'a pas sa place dans la carte.
5. human_gate : où se tient la personne
autonomous_steps_before_gate compte combien d'étapes l'agent peut exécuter avant qu'une personne doive approuver; 0 signifie que chaque étape conséquente exige une personne.step_definition dit ce qui compte pour une étape, dans les mots de l'exploitant. requires_human_approval nomme ce que seule une personne peut approuver : paiements, remboursements, et toute action conséquente parmi les douze, CA-01 à CA-12, que l'agent peut toucher.
6. prompt_handling : ce qu'il advient de vos mots
retained, retention_days,prompts_train_model et un detail en langage clair. Le booléen que les acheteurs sautent et ne devraient pas : prompts_train_model. Vrai signifie que vos mots alimentent un modèle.
7. subprocessors : qui d'autre touche les données
name, role (model_host,tool_host, log_host ouother), jurisdiction etpurpose. La juridiction est le champ qui déclenche la conversation transfrontalière.
8. kill_switch : l'interrupteur d'arrêt
procedure, who_can_trigger eteffect : ce qui s'arrête, et à quelle vitesse. Rédigé pour quelqu'un qui s'en sert à minuit. Une procédure qui exige le service de soutien du fournisseur et deux jours ouvrables n'est pas un interrupteur.
9. record_correction : quand la carte se trompe
procedure, contact etresponse_time. Les cartes deviennent périmées et les cartes se trompent. Ce bloc dit comment un champ erroné est corrigé, et à quelle vitesse.
10. legal_context : les citations (facultatif)
Chaque entrée porte une citation et unerelevance d'une ligne. Chaque affirmation juridique d'une carte porte sa citation ici, ou elle ne figure pas dans la carte.
11. non_certification_note : le littéral immuable
Identique à l'octet près dans chaque carte, dans chaque édition. Il figure ci-dessous exactement comme il doit figurer dans le JSON :
Cette carte est un format de divulgation ouvert décrivant ce qu'un agent est autorisé à faire. Elle ne constitue pas un avis juridique et n'est pas une certification, une approbation ni un endossement de movahedi.ca à l'égard d'un agent.
Le littéral fait partie de la spécification, pas de la décoration. Rien ne peut y être ajouté, rien ne peut en être retiré.
Exemple de travail
Une carte fictive, de bout en bout
Café Lumen est un détaillant montréalais fictif, le même que dans la spécification du sceau. Son agent de commandes prend les commandes à emporter en clavardage et les transmet à la cuisine. Chaque valeur ci-dessous est inventée. La carte figure dans le fichier de schéma comme exemple de travail, et il existe un rendu imprimable d'une page.
{
"access": {
"reads": [
{
"data_categories": [
"menu_items",
"prices",
"availability"
],
"note": "Read-only menu feed, refreshed hourly.",
"system_id": "pos-menu-api"
},
{
"data_categories": [
"order_status"
],
"note": "Reads status to answer where-is-my-order questions.",
"system_id": "order-queue"
}
],
"writes": [
{
"data_categories": [
"order_ticket",
"pickup_time"
],
"note": "Order tickets carry items and pickup time only; no customer names.",
"system_id": "kitchen-queue"
},
{
"data_categories": [
"payment_link_request",
"amount_cents",
"order_ref"
],
"note": "Creates payment links. The agent never sees or stores card numbers.",
"system_id": "payment-link-service"
}
]
},
"agent": {
"name": "Lumen Order Assistant (fictional)",
"purpose": "Takes customer pickup orders in chat and queues them for the kitchen; confirms payment links but never charges a card.",
"purpose_fr": "Prend les commandes à emporter en clavardage et les transmet à la cuisine; confirme les liens de paiement mais ne débite jamais une carte.",
"version": "0.9.2"
},
"card_metadata": {
"card_id": "card-fictional-cafe-lumen-001",
"card_url": "https://example.com/cards/cafe-lumen-order-assistant.json",
"fictional_example": true,
"french_completeness_status": "complete",
"last_true_date": "2026-11-01",
"published_at_utc": "2026-11-04T18:00:00Z",
"schema_version": "0.1.0",
"supersedes_card_id": null
},
"human_gate": {
"autonomous_steps_before_gate": 3,
"requires_human_approval": [
"Any refund or discount over $20",
"Any change to menu items or prices",
"Any new tracker, pixel, or server-side feed (consequential action CA-05)"
],
"step_definition": "One tool call counts as one step; a read and its follow-up write are two steps."
},
"kill_switch": {
"effect": "No new orders within 60 seconds. Tickets already in the kitchen finish normally.",
"procedure": "Press 'Pause agent' on the vendor status page, or email orders-stop@example.com with the subject 'stop'. Either works around the clock.",
"who_can_trigger": "Any staff member; any customer can trigger it by typing 'stop the bot' in chat."
},
"legal_context": [
{
"citation": "Law 25 s. 12",
"citation_fr": "Loi 25 art. 12",
"relevance": "Chat transcripts are not used to train a model; no secondary purpose."
},
{
"citation": "Law 25 s. 17",
"citation_fr": "Loi 25 art. 17",
"relevance": "The US model host is a cross-border transfer; the foreign-regime assessment is on file."
},
{
"citation": "OPC-2023-001",
"relevance": "Purchase data stays in-house; no ad-platform destinations."
}
],
"non_certification_note": "This card is an open disclosure format describing what an agent is allowed to do. It is not legal advice, and it is not a movahedi.ca certification, endorsement, or approval of any agent.",
"operator": {
"contact_url": "https://example.com/privacy",
"jurisdiction": "CA-QC",
"name": "Café Lumen (fictional)"
},
"prompt_handling": {
"detail": "Chat transcripts are kept 30 days for quality review, then deleted. Prompts and transcripts are not used to train any model.",
"prompts_train_model": false,
"retained": true,
"retention_days": 30
},
"record_correction": {
"contact": "corrections@example.com",
"procedure": "Email corrections@example.com describing the wrong field. The operator updates the card, re-verifies every field, and sets a new last_true_date.",
"response_time": "2 business days"
},
"subprocessors": [
{
"jurisdiction": "US",
"name": "Fictional Model Host",
"purpose": "Runs the chat model that powers the assistant.",
"role": "model_host"
},
{
"jurisdiction": "CA-QC",
"name": "Fictional Log Store",
"purpose": "Stores the 30-day transcripts.",
"role": "log_host"
}
]
}Lisez-la comme un acheteur. L'hôte du modèle se trouve aux États-Unis, alors le bloc legal_context nomme la Loi 25 art. 17 et l'évaluation transfrontalière au dossier.prompts_train_model est faux, ce qui répond à la question de la Loi 25 art. 12 sur les fins secondaires avant qu'elle soit posée. L'agent dispose de trois étapes avant qu'une personne doive approuver, et un remboursement de plus de 20 $ exige toujours un humain. L'interrupteur d'arrêt répond en 60 secondes et un client peut l'actionner depuis le clavardage. Etlast_true_date indique 2026-11-01 : assez récent pour être pris au sérieux, et une date à laquelle vous pouvez tenir le fournisseur.
Source lisible par machine : /schema/agent-scope-card/v0.1.0.json
Vérification
Cinq vérifications avant de lui faire confiance
- Vérifiez d'abord
last_true_date. Une date périmée signifie que la carte décrit un système qui a été livré depuis. Demandez-en une récente. - Comptez ce que l'agent peut faire sans personne. Un
requires_human_approvalvide à côté d'un nombre d'étapes généreux raconte toute l'histoire. - Lisez
prompts_train_modelcomme un oui-ou-non sur vos mots alimentant un modèle. Oui est une fin secondaire au sens de la Loi 25 art. 12, et cela exige sa propre conversation sur le consentement. - Lisez les juridictions des sous-traitants avant leurs noms. Un hôte de modèle hors du Canada est un transfert transfrontalier; selon la Loi 25 art. 17, l'évaluation du régime de protection des renseignements personnels étranger doit être au dossier.
- Lisez l'interrupteur d'arrêt comme si vous alliez vous en servir à minuit. Si arrêter l'agent exige un billet au soutien du fournisseur, c'est une demande, pas un interrupteur.
Assise juridique
Sur quel droit cela s'appuie
La carte est un format de preuve, pas un avis juridique. Ses champs correspondent à des obligations qui existent déjà :
- La Loi 25 art. 3.1 exige la désignation d'un responsable de la protection des renseignements personnels : la personne qui approuve les actions conséquentes, CA-01 à CA-12 dans l'index.
- La Loi 25 art. 8 exige la publication des politiques de gouvernance : la carte se trouve avec les pratiques publiées, pas dans une plaquette commerciale.
- La Loi 25 art. 12 régit les fins secondaires : la divulgation sur l'entraînement par les invites.
- La Loi 25 art. 17 régit les transferts transfrontaliers : la divulgation des juridictions des sous-traitants.
- OPC-2023-001, l'affaire Home Depot de 2023, où le Commissariat a conclu que des données d'achat hors ligne parvenaient à Meta sans consentement adéquat : voilà pourquoi lectures, écritures et sous-traitants sont des champs distincts plutôt qu'une note de bas de page.
Le projet de loi C-36 est en deuxième lecture, pas une loi. Son art. 57 sur l'évaluation transfrontalière obligatoire et son art. 18 sur l'évaluation des intérêts légitimes, s'ils sont adoptés tels que rédigés, s'appuieraient sur les mêmes divulgations. Chaque référence à C-36 sur cette page porte cette étiquette jusqu'à ce que le projet avance.
Versionnement
v0.2 sera une nouvelle page, jamais une modification
Les changements incompatibles seront publiés comme schéma v0.2 à une nouvelle URL versionnée. Cette page et le JSON v0.1.0 restent figés et vérifiables pour toujours; les cartes v0.1 n'auront jamais besoin d'être réémises. Des clarifications additionnelles peuvent paraître ici sous forme de notes d'errata datées, marquées comme errata. Ce qui impose v0.2 : un nouveau bloc obligatoire, un sens de champ modifié, ou une nouvelle sémantique d'étape de human_gate.
Une question reste ouverte pour v0.2 : qui vérifie la carte par rapport au système en production? Pour v0.1, c'est encore le travail d'une personne, la carte dans une main et les journaux de l'agent dans l'autre. L'outil de comparaison n'est pas encore construit; c'est le prochain élément prévu. Quand il sera livré, il comparera les versions d'une carte. Comparer la carte à la réalité reste humain.
Les fournisseurs qui publient une carte vous disent quelque chose. Ceux qui ne le peuvent pas vous disent quelque chose aussi.