La plupart des décisions organisationnelles laissent une trace quelque part — un e-mail, un ticket, un commentaire dans un outil de workflow, une ligne dans un tableur. Cette trace est rarement structurée, rarement ancrée dans le temps de manière inviolable, et rarement conçue pour survivre en dehors du système qui l’a créée. Lorsqu’une décision est remise en question ultérieurement — lors d’un audit, d’un litige, d’une enquête réglementaire ou d’une investigation interne — reconstituer exactement ce qui a été décidé, par qui, dans quel rôle déclaré, et dans quelles conditions, peut être lent, incomplet ou impossible.
Human Structured Intake offre à une personne un moyen structuré de déclarer une décision au moment de sa clôture : le type de décision, qui l’a déclarée et dans quel rôle, quand elle a été clôturée, le contexte de classification et de seuil applicable, si un gate de disponibilité était impliqué, et tout signal resté non résolu. EVIDE canonicalise ensuite cette déclaration, calcule un hachage déterministe sur celle-ci, et la préserve comme un enregistrement récupérable de manière indépendante.
Cette distinction traverse chaque champ documenté sur cette page. Lorsqu’une valeur utilise un mot comme « verified », ce mot décrit ce qu’une personne ou un mécanisme en amont a déclaré — pas une évaluation effectuée par EVIDE elle-même, sauf indication contraire pour ce champ spécifique.
Les sept scénarios ci-dessous sont des exemples illustratifs de la manière dont différentes fonctions pourraient utiliser Human Structured Intake. Chacun montre le type de décision impliqué, les informations qui pourraient raisonnablement être déclarées et, tout aussi important, la limite de ce que la préservation de cet enregistrement par EVIDE établit et n’établit pas.
Événement / ContexteUn Compliance Officer est chargé d’autoriser temporairement une exception à une procédure qui serait normalement bloquée, sous pression temporelle et avec une justification commerciale documentée.
Décision HumaineL’officer approuve une exception temporaire et circonscrite, soumise à des conditions spécifiques et à un point de révision défini.
Informations Pouvant Être Déclarées
Valeur de ReconstitutionUn examinateur, auditeur ou régulateur ultérieur peut reconstituer que l’exception a été déclarée, par qui, dans quel rôle, sous quelles conditions déclarées de seuil et de disponibilité, sans dépendre de la mémoire de l’officer ou d’un journal système qui pourrait entre-temps avoir été purgé.
Événement / ContexteUn Security Operations Center détecte un comportement anormal. Un intervenant humain examine la télémétrie disponible et doit décider s’il faut autoriser la poursuite de l’opération, bloquer, isoler ou escalader.
Décision HumaineL’intervenant autorise la poursuite de l’opération pendant qu’une enquête est menée, plutôt qu’un isolement immédiat.
Informations Pouvant Être Déclarées
provisional, car l’enquête n’est pas encore clôturéeverified_partial, si certains mais pas tous les signaux pertinents ont été examinésValeur de ReconstitutionSi l’incident s’aggrave ultérieurement, l’enregistrement préserve exactement ce qui était connu, et ce qui était explicitement signalé comme inconnu, au moment où la décision a été prise, distinguant le recul réel des informations qui étaient réellement disponibles au moment de la décision.
verified_partial associé à un tableau unresolved_signals renseigné est souvent plus honnête qu’un verified prématuré, en n’utilisant que des valeurs et relations réellement supportées par le validateur.Événement / ContexteUn système de présélection assisté par IA produit une recommandation concernant un candidat ou un employé. Un examinateur humain examine cette recommandation et prend la décision finale.
Décision HumaineL’examinateur accepte, modifie ou passe outre la recommandation automatisée.
Informations Pouvant Être Déclarées
Valeur de ReconstitutionL’enregistrement aide à préserver une séparation structurelle entre ce que le système automatisé a recommandé et ce que l’être humain a réellement décidé, une distinction souvent difficile à reconstituer a posteriori à partir des seuls journaux système.
Événement / ContexteUn système antifraude bloque une transaction comme à haut risque. Un analyste antifraude examine le dossier et doit décider de la libérer, de la maintenir bloquée ou de l’escalader.
Décision HumaineL’analyste libère la transaction après examen, jugeant le signal de risque comme un faux positif.
Informations Pouvant Être Déclarées
Valeur de ReconstitutionL’enregistrement préserve le contexte déclaré du contournement humain, qui a autorisé la libération, quand, et sur quelle base déclarée, indépendamment du fait que la transaction se révèle finalement légitime ou non.
Événement / ContexteUne ligne de production s’arrête automatiquement après la détection d’une anomalie. Un responsable technique examine les conditions pertinentes et doit décider s’il faut autoriser un redémarrage.
Décision HumaineLe responsable autorise le redémarrage, ayant examiné les informations diagnostiques disponibles.
Informations Pouvant Être Déclarées
Valeur de ReconstitutionSi une défaillance connexe se reproduit ultérieurement, l’enregistrement préserve exactement quel gate diagnostique a été déclaré avoir été contrôlé, et selon quel périmètre, avant que le redémarrage ne soit autorisé.
verified_partial avec une liste de signaux non résolus renseignée, plutôt qu’un verified complet.Événement / ContexteUn agent IA demande à effectuer une action sensible. Avant l’exécution, une autorité humaine doit approuver, rejeter, conditionner ou escalader la demande.
Décision HumaineL’autorité humaine approuve l’action demandée, sous réserve de conditions déclarées.
Informations Pouvant Être Déclarées
Valeur de ReconstitutionHuman Structured Intake enregistre la décision humaine d’autoriser. Ce n’est délibérément pas la même fonction que de déclarer le périmètre opérationnel dans lequel l’agent était autorisé (c’est l’extension distincte des declarations documentée dans la JSON Schema Reference), et ce n’est pas un mécanisme automatique d’autorisation d’exécution.
Événement / ContextePendant un incident de cybersécurité, un intervenant doit choisir entre des actions concurrentes sous pression temporelle, par exemple isoler un serveur plutôt que de maintenir un service opérationnel malgré un indicateur de compromission.
Décision HumaineL’intervenant déclare une action choisie, ainsi que les informations disponibles à ce moment.
Informations Pouvant Être Déclarées
provisional pendant un incident actifValeur de ReconstitutionLes chronologies d’incidents sont fréquemment reconstituées a posteriori sous un examen minutieux. Une déclaration structurée et ancrée dans le temps réduit la dépendance à la reconstitution de l’intention à partir de la mémoire ou de journaux non conçus pour un usage probatoire.
Deux horodatages différents apparaissent dans chaque enregistrement Human Structured Intake, et ils répondent à deux questions différentes :
| Horodatage | À quoi il répond |
|---|---|
decision.closure_timestamp_utc | Quand la décision elle-même a-t-elle été clôturée ? C’est le moment où la personne déclare que la décision a effectivement été prise — saisi par la personne, en UTC. |
| Intake Timestamp | Quand EVIDE a-t-il reçu et préservé cet enregistrement ? Ceci est généré par le serveur au moment où l’intake est traité, et non saisi par la personne. |
Ces deux moments sont fréquemment différents, et cette différence est attendue, pas une erreur. Une décision pourrait être clôturée à 16h00 et enregistrée dans EVIDE seulement à 18h03 — en raison d’une étape de workflow retardée, d’un processus de soumission par lot, ou simplement parce que la personne qui l’enregistre l’a fait plus tard dans la journée.
decision_closure_timestamp_utc est une valeur déclarée par la personne complétant l’intake. Ce n’est pas un horodatage cryptographique ou « de confiance » du moment où la décision a effectivement eu lieu dans le monde réel — EVIDE n’a aucun moyen indépendant de confirmer que l’heure de clôture déclarée est exacte. Ce qu’EVIDE préserve, indépendamment, c’est l’Intake Timestamp : le moment où l’enregistrement lui-même a été reçu et canonicalisé.Les sept champs ci-dessous fournissent un contexte opérationnel et organisationnel. Ils sont partagés avec les autres types d’intake d’EVIDE et ne sont pas spécifiques au modèle probatoire Human Structured — ils sont documentés ici brièvement, par souci d’exhaustivité, plutôt qu’avec la même profondeur que les champs de la section suivante.
| Champ | Type | Exigence | Ce que c’est |
|---|---|---|---|
title | chaîne | Obligatoire | Étiquette courte de l’enregistrement. Vérifié dans le code : cette valeur est copiée directement dans decision.summary dans le payload canonique — ce n’est pas un champ séparé et sans lien. |
business_area_id | entier | Obligatoire | Le domaine d’activité auquel appartient l’intake. Vérifié dans le code : doit référencer un domaine d’activité existant et actif, sinon la demande est rejetée. |
description | chaîne | Facultatif | Description en texte libre enregistrée avec le dossier. Non incluse dans le payload probatoire canonique lui-même. |
context_reference | chaîne | Facultatif | Référence opérationnelle en texte libre pour usage interne. |
notes | chaîne | Facultatif | Notes internes en texte libre. |
topic | chaîne | Facultatif | Étiquette de sujet en texte libre pour organiser les intakes. |
case_reference | chaîne | Facultatif | Référence de dossier ou d’affaire en texte libre. C’est le même champ utilisé par la recherche « Evidence from the same case » disponible ailleurs dans EVIDE. |
evidence_reference | chaîne | Facultatif | Référence probatoire en texte libre pour les liens croisés internes. |
Ces champs fournissent un contexte opérationnel et organisationnel pour localiser et gérer l’intake au sein de la plateforme. Ils ne font pas partie du modèle probatoire Human Structured documenté dans le reste de cette page, et leur présence ou absence n’affecte pas les champs probatoires ci-dessous.
Les quatorze champs ci-dessous sont les champs spécifiques au modèle probatoire Human Structured — vérifiés individuellement contre HumanStructuredIntakeService.php. Le tableau donne un résumé rapide ; une fiche explicative complète suit pour chaque champ.
| Champ | Type | Exigence |
|---|---|---|
decision_type | chaîne | Obligatoire |
decision_closure_timestamp_utc | datetime | Obligatoire |
authority_role | chaîne | Obligatoire |
authority_id | chaîne | Facultatif |
authority_verification_note | chaîne | Facultatif |
classification_status | enum | Facultatif |
threshold_status | enum | Facultatif |
threshold_reference | chaîne | Conditionnel |
threshold_attribution_status | enum | Facultatif |
trace_access | chaîne | Facultatif |
boundary_readiness_status | enum | Obligatoire |
readiness_gate_identifier | chaîne | Conditionnel |
readiness_gate_scope_reference | chaîne | Conditionnel |
unresolved_signals[] | tableau de chaînes | Conditionnel |
decision.type
Une étiquette en texte libre décrivant la catégorie de la décision ou intervention humaine enregistrée — par exemple, de quel type de décision il s’agit, et non ce que la décision a conclu.
Sans ce champ, un enregistrement n’indiquerait même pas quel type de décision ou d’intervention a été enregistré. Il donne à chaque autre champ de l’enregistrement une catégorie à laquelle se rattacher.
Toujours — ce champ est obligatoire pour chaque Human Structured Intake.
Choisissez une étiquette suffisamment spécifique pour distinguer cette décision d’autres décisions d’un type différent, mais ne dupliquez pas le récit complet qui appartient au champ title (qui devient decision.summary). Un bon type de décision nomme la catégorie d’action ; le title/summary décrit cette instance spécifique.
Distinct du champ commun title, qui est copié directement dans decision.summary — une courte description en langage naturel de cette décision spécifique. decision_type nomme la catégorie ; decision.summary raconte l’instance.
Un Compliance Officer approuvant une exception temporaire de politique pourrait enregistrer le type de décision comme « Approbation d’exception de conformité. » Un responsable technique autorisant un redémarrage de production pourrait utiliser « Autorisation de redémarrage de ligne de production. »
decision.closure_timestamp_utc
Le moment déclaré auquel la décision humaine elle-même a été clôturée — pas le moment où l’enregistrement a été soumis à EVIDE. Voir la section dédiée Clôture de la Décision ci-dessus pour la distinction complète avec l’Intake Timestamp.
Une décision et sa préservation probatoire se produisent rarement exactement au même instant. Enregistrer l’heure de clôture déclarée, séparément de l’heure d’intake générée par le serveur, est ce qui permet une reconstitution historique précise du moment où la décision a réellement eu lieu.
Toujours — ce champ est obligatoire. Saisissez le moment où la décision a effectivement été clôturée, en UTC, et non le moment où vous remplissez le formulaire.
Utilisez le moment réel de la clôture de la décision, exprimé en UTC plutôt qu’en heure locale. Si vous n’êtes pas sûr de votre décalage UTC local, un outil comme time.is/UTC peut éviter une erreur de plusieurs heures.
Une ligne de production s’arrête à 14h32 heure locale. Le responsable technique examine les conditions et autorise un redémarrage, clôturant cette décision à 16h00 heure locale — mais n’enregistre l’intake dans EVIDE qu’à 18h03, après avoir terminé d’autres tâches urgentes. L’horodatage de clôture préserve 16h00 (converti en UTC) ; l’Intake Timestamp préserve séparément 18h03.
authority.role
Le rôle organisationnel, à quel titre, la décision est déclarée avoir été prise — distinct de l’identité de la personne qui l’a prise.
Un nom seul n’indique pas à quel titre organisationnel une décision a été prise. Le rôle aide un lecteur ultérieur à reconstituer l’autorité organisationnelle déclarée derrière la décision, indépendamment de qui occupait spécifiquement ce rôle à ce moment.
Toujours — ce champ est obligatoire pour chaque Human Structured Intake.
Utilisez le titre du rôle pertinent organisationnellement pour cette décision — ex. « Compliance Officer, » « SOC Manager, » « HR Director, » « Fraud Analyst, » « Plant Manager. » Texte libre, pas une liste fixe.
Distinct de authority_id (qui) et de l’identité DAPI de la session connectée (voir Identifiant de l’Autorité ci-dessous). Le rôle répond à « à quel titre, » pas « quelle personne spécifique. »
La même personne pourrait occuper plusieurs rôles selon les décisions ; le même rôle pourrait être occupé par différentes personnes au fil du temps. Enregistrer le rôle, séparément de l’individu, garde le contexte organisationnel lisible même lorsque le personnel change.
authority.id
Un identifiant déclaré de qui a pris la décision. Vérifié dans le code : si laissé vide, ce champ prend par défaut le nom complet de l’utilisateur actuellement connecté — mais peut être modifié, pour le cas légitime d’enregistrer une décision prise par quelqu’un d’autre.
Toute décision enregistrée dans EVIDE n’a pas été prise par la personne opérant le clavier. Permettre la modification de ce champ permet à une personne d’enregistrer avec précision une décision prise par un collègue, tout en gardant séparément préservée l’identité vérifiée de la session sous-jacente.
Laissez-le vide lorsque vous, l’utilisateur connecté, êtes la personne qui a pris la décision — votre nom sera utilisé automatiquement. Remplissez-le explicitement lorsque vous enregistrez une décision prise par une personne différente.
Ne traitez pas ce champ comme un substitut, ou une modification, de votre identité de compte vérifiée — cette identité est préservée séparément et automatiquement, quoi que vous saisissiez ici.
Vérifié dans le code : chaque enregistrement Human Structured porte aussi authority.dapi_number, l’identifiant DAPI de la session réellement connectée et authentifiée — défini automatiquement par le serveur à chaque soumission et jamais lu depuis le formulaire. authority.id et authority.dapi_number sont délibérément indépendants : le premier est une étiquette déclarée, le second est l’identité vérifiée de la session.
Un assistant saisit une décision dans EVIDE au nom d’un responsable ayant réellement pris la décision. L’assistant laisse sa propre session authentifiée (préservée automatiquement comme authority.dapi_number), mais définit authority_id sur le nom du responsable, reflétant avec précision qui a réellement pris la décision.
authority_id n’est pas la même chose qu’une autorité vérifiée de manière indépendante. C’est une valeur déclarée, en texte libre, qui correspond par défaut à l’utilisateur connecté, mais peut être remplacée.authority.dapi_number.authority.id ait elle-même été vérifiée de manière indépendante par rapport à un système d’identité externe.authority.verification
Une note en texte libre, déclarée facultativement, que la personne enregistrant la décision peut utiliser si elle entend lier l’autorité déclarée à une référence plus spécifique — par exemple, une référence DAPI pour la personne ou le rôle impliqué.
Cela donne au déclarant un moyen d’ajouter une référence plus spécifique à l’autorité déclarée, sans en exiger une sur chaque enregistrement.
Lorsque vous souhaitez déclarer une référence plus spécifique liée à l’autorité derrière cette décision, et qu’une telle référence vous est réellement disponible.
N’utilisez pas ce champ comme si l’écrire constituait une vérification. C’est une note déclarée, pas un contrôle effectué par EVIDE.
authority_verification_status calculée côté serveur dans la réponse API devient claimed au lieu de declared — documenté intégralement dans la JSON Schema Reference. Cela reflète qu’une référence a été déclarée, pas qu’elle a été vérifiée.Un Compliance Officer référence une identité liée à un DAPI interne comme contexte de soutien pour l’autorité déclarée derrière l’approbation d’une exception, sans que cette référence soit contrôlée de manière indépendante par EVIDE.
claimed résultant décrit ce qui a été déclaré, pas ce qui a été vérifié.intervention.classification_status
La classification attribuée à cette décision est considérée comme établie, sans ambiguïté connue selon la catégorisation active au moment de la clôture.
Exemple : un cas de fraude examiné et clôturé avec une catégorisation claire et non contestée.
Ne signifie pas : que la classification est fixée de manière permanente ou immunisée contre une révision future — seulement qu’aucune ambiguïté n’était connue à la clôture.
La classification est encore provisoire ou en attente d’affinement — elle peut changer à mesure que davantage d’informations deviennent disponibles.
Exemple : une enquête de sécurité active où la catégorie de l’incident peut être révisée à mesure que l’enquête se poursuit.
Ne signifie pas : que la décision elle-même est incomplète — la décision peut toujours être finalisée alors que sa classification reste provisoire.
La classification est attribuée malgré un désaccord interprétatif connu, ou un chevauchement avec une autre catégorie.
Exemple : une décision où deux personnes raisonnables pourraient catégoriser le même cas différemment, et ce désaccord est connu à la clôture.
Ne signifie pas : que la décision sous-jacente est invalide — seulement que sa catégorisation porte une tension interprétative reconnue.
Cela rend observable la qualité opérationnelle d’une classification au moment du dépôt, plutôt que de présenter chaque classification avec une confiance égale et non exprimée.
Lorsque vous avez un avis sur le degré d’établissement, de provisoire ou de contestation de la classification attribuée à cette décision.
Si vous n’avez aucune base pour juger de la stabilité de la classification, il est acceptable de laisser ce champ non défini plutôt que de deviner — le champ est facultatif, et le système ne suppose aucun état par défaut en son absence.
intervention.classification_context.threshold_status
Un seuil de décision pertinent est déclaré avoir été atteint.
Exemple : une politique interne exigeait une justification documentée au-dessus d’un certain niveau de risque, et celle-ci a été fournie.
Un seuil de décision pertinent est déclaré ne pas avoir été atteint.
Exemple : l’examen a révélé que les conditions requises pour l’approbation automatique n’étaient pas satisfaites, nécessitant une intervention manuelle.
Un seuil existe dans ce contexte, mais s’il a été atteint n’est pas connu au moment de la clôture. Ceci est différent de not_defined — ici, un seuil s’applique réellement, mais son statut n’a pas pu être établi.
Aucun seuil n’a été défini pour ce cas. Ceci est différent de unknown — ici, il n’y a pas de seuil applicable à évaluer, plutôt qu’un seuil non résolu.
Un seuil, dans ce contexte, est un critère de décision prédéfini — une limite de politique, une règle opérationnelle, une condition d’approbation — par rapport auquel une décision peut être évaluée. Ce champ déclare si un tel seuil a été atteint.
Cela expose si un seuil de décision s’appliquait à ce cas, et si oui, son statut déclaré — une information souvent implicite et non documentée dans les outils de workflow ordinaires.
Lorsqu’un seuil, une règle ou une condition de politique définie est pertinent pour cette décision.
Lorsqu’aucun seuil de ce type ne s’applique réellement à cette décision — dans ce cas, not_defined est la valeur exacte, et non simplement laisser le champ vide si vous avez des raisons de déclarer activement qu’aucun seuil ne s’applique.
threshold_reference ci-dessous — si threshold_status est not_defined, toute valeur saisie dans threshold_reference est silencieusement supprimée par le serveur, même si elle est soumise.unknown ne doit pas être lu comme équivalent à « aucun seuil n’existe. » C’est ce que signifie not_defined. unknown signifie qu’un seuil s’applique, mais que son statut n’a pas pu être établi.intervention.classification_context.threshold_reference
Une référence en texte libre au seuil, à la politique ou à la règle spécifique citée dans threshold_status ci-dessus.
Cela permet de relier le seuil déclaré à quelque chose de concret — un document de politique, une procédure, un contrôle interne — plutôt que de rester une affirmation générale non attribuée.
Lorsque threshold_status est met, not_met, ou unknown, et que vous avez une référence spécifique disponible — par exemple, un nom de politique, un code de procédure, ou un identifiant de document, donnés uniquement comme exemples illustratifs compatibles avec ce champ de texte libre.
threshold_status est not_defined, ce champ est supprimé par le serveur même si une valeur est soumise. Il n’est pas nécessaire de le laisser vide par précaution — le serveur l’impose de toute façon, mais c’est une bonne pratique de le laisser vide lorsqu’aucun seuil n’est défini.intervention.classification_context.threshold_authority.attribution_status
Une autorité unique, identifiable et attribuable pour le seuil a été définie à la clôture.
Exemple : une politique explicitement détenue par un comité nommé.
Quand l’utiliser : lorsque vous pouvez désigner un propriétaire clair unique du seuil.
Le seuil est défini à travers plusieurs sources, sans autorité unique attribuable.
Exemple : une règle assemblée à partir de plusieurs documents de lignes directrices internes se chevauchant sans propriétaire unique.
Erreur d’interprétation courante : fragmented ne signifie pas que le seuil est invalide — seulement que sa propriété est distribuée.
Le seuil est présent dans la pratique mais n’était pas formellement défini ou attribuable à la clôture.
Exemple : une norme interne non écrite mais appliquée de manière constante.
Erreur d’interprétation courante : implicit ne signifie pas que les seuils informels sont illégitimes — seulement qu’ils manquent d’attribution formelle.
L’autorité derrière le seuil n’a pas pu être vérifiée au moment de la clôture.
Exemple : le déclarant est conscient qu’un seuil existe mais ne peut pas identifier qui le possède.
L’attribution du seuil décrit à quel point l’autorité ou la propriété derrière le seuil cité ci-dessus peut être retracée vers une personne, un rôle ou un comité spécifique — pas si le seuil lui-même a été atteint.
Cela devient pertinent précisément lorsqu’un statut de seuil met ou not_met est déclaré, mais que la propriété de ce seuil n’est pas clairement attribuable à une source unique — faisant de cette ambiguïté elle-même une partie de l’enregistrement préservé.
Lorsque vous avez un avis sur le degré d’attribution claire de la propriété du seuil cité.
intervention.trace.access
Une référence en texte libre permettant à quelqu’un ultérieurement de localiser le contexte plus large de cette décision au sein du système où elle s’est effectivement produite — un ticket, un ID de dossier, une référence de piste d’audit, une référence de journal, ou une référence de workflow, donnés comme exemples illustratifs de ce qui est sémantiquement compatible avec ce champ.
Une décision existe rarement isolée du parcours opérationnel plus large qui l’entourait. Ce champ préserve un pointeur vers ce parcours, sans qu’EVIDE ait besoin de recevoir ou de stocker le parcours lui-même.
Chaque fois qu’une référence spécifique et localisable existe dans un autre système — un numéro de ticket, un dossier, ou une entrée de journal d’audit — qu’un examinateur ultérieur pourrait utiliser pour trouver plus de contexte.
handoff.boundary_readiness.status
Aucun gate indépendant n’a évalué cet objet. La partie déclarante affirme seulement le considérer prêt, sans qu’un contrôle indépendant ait été effectué.
Quand le choisir : c’est la valeur honnête par défaut lorsqu’aucun mécanisme de disponibilité séparé n’était impliqué — ce n’est pas une valeur plus faible ou moindre, c’est la valeur exacte pour cette situation.
Un gate de disponibilité indépendant a confirmé la stabilité à travers ce qu’il déclare être une visibilité complète, sans signaux non résolus.
Quand le choisir : uniquement lorsqu’un mécanisme réellement séparé — distinct de la personne ou du système ayant pris la décision — a effectué cette évaluation.
Erreur d’interprétation courante : cette valeur ne peut pas être auto-déclarée simplement en se sentant confiant à propos d’une décision ; elle signifie spécifiquement qu’un gate indépendant était impliqué.
Un gate indépendant a confirmé ce qu’il a pu observer, mais déclare explicitement que certains signaux pertinents restent non résolus.
Quand le choisir : lorsqu’un gate de disponibilité était impliqué mais que sa visibilité était réellement incomplète — nécessite au moins une entrée dans unresolved_signals.
Un gate de disponibilité a tenté une évaluation, mais la visibilité à sa disposition était insuffisante pour atteindre une quelconque conclusion de stabilité. Cela démontre que la diligence a été tentée, pas que le processus a échoué.
Quand le choisir : lorsqu’une tentative réelle d’évaluation de disponibilité n’a pas pu aboutir à une conclusion en raison d’une visibilité insuffisante — nécessite également au moins une entrée dans unresolved_signals.
La disponibilité du boundary déclare à quel point cette décision est considérée comme prête, au moment de la clôture, pour sa préservation probatoire — spécifiquement, si un gate de disponibilité indépendant l’a évaluée, et ce que ce gate a pu et n’a pas pu observer. C’est une déclaration sur l’état de disponibilité, pas une propriété qu’EVIDE mesure ou confirme elle-même.
Différentes décisions portent des degrés très différents de disponibilité confirmée de manière indépendante avant d’être préservées. Les regrouper toutes en un seul état non différencié cacherait exactement l’information dont un examinateur ultérieur a le plus besoin : cette décision a-t-elle été contrôlée de manière indépendante avant d’être enregistrée, et si oui, avec quelle complétude ?
Toujours — ce champ est obligatoire pour chaque Human Structured Intake.
Demandez-vous concrètement : un mécanisme réellement séparé du décideur a-t-il évalué la disponibilité de cet objet avant qu’il ne soit enregistré ? Si aucun mécanisme de ce type n’était impliqué, la valeur honnête est candidate. Si un mécanisme était impliqué, choisissez entre verified, verified_partial, ou unverifiable selon le degré réel de complétude de la visibilité de ce mécanisme.
Vérifié dans le code : visibility_surface (un champ interne dans le payload canonique) est dérivé mécaniquement de cette valeur par une correspondance fixe — ce n’est jamais un choix séparé fait par la personne remplissant le formulaire. Cette valeur régit aussi si readiness_gate_identifier/readiness_gate_scope_reference et unresolved_signals sont requis (voir Relations Conditionnelles entre Champs ci-dessous pour les règles exactes).
candidate, readiness_gate_identifier et readiness_gate_scope_reference deviennent tous deux obligatoires ensemble. Si cette valeur est verified_partial ou unverifiable, au moins une entrée dans unresolved_signals devient obligatoire.Un responsable technique autorisant un redémarrage de production après une anomalie pourrait déclarer verified_partial si un gate diagnostique automatisé a contrôlé la plupart, mais pas tous, les capteurs pertinents avant le redémarrage — le capteur spécifique non contrôlé étant enregistré comme signal non résolu.
verified dans ce champ est une valeur déclarée dans le modèle de données, pas une évaluation effectuée par EVIDE. EVIDE elle-même ne vérifie pas si le gate déclaré a effectivement fonctionné, ni si ses conclusions étaient exactes.candidate comme une soumission déficiente ou incomplète — c’est la valeur structurellement exacte chaque fois qu’aucun gate de disponibilité indépendant n’était réellement impliqué.verified décrit ce qui a été déclaré concernant un gate en amont ou indépendant — ce n’est jamais la propre vérification d’EVIDE de la décision.handoff.boundary_readiness.readiness_gate.identifier
Un gate, dans ce contexte, est tout mécanisme — humain ou automatisé — ayant effectué l’évaluation de disponibilité déclarée dans boundary_readiness_status. Ce champ nomme ou identifie ce mécanisme.
Cela permet de relier l’évaluation de disponibilité déclarée à quelque chose de spécifique, plutôt que de rester une affirmation générale non attribuée.
Obligatoire chaque fois que boundary_readiness_status est autre que candidate — c’est-à-dire, chaque fois qu’un gate indépendant est déclaré.
readiness_gate_scope_reference chaque fois que boundary_readiness_status n’est pas candidate. Si l’un des deux manque dans cette condition, la demande est rejetée. Aucun des deux champs n’est demandé lorsque le statut est candidate.Un contrôle diagnostique utilisé avant d’autoriser un redémarrage de production, ou le code de procédure interne régissant un examen d’exception de conformité.
handoff.boundary_readiness.readiness_gate.scope_reference
Alors que readiness_gate_identifier nomme le mécanisme ou contrôle déclaré avoir fonctionné, ce champ décrit le périmètre ou la portée que ce mécanisme est déclaré avoir couvert.
Un gate nommé est plus utile lorsque sa couverture est également spécifiée — le même contrôle diagnostique pourrait couvrir un site entier dans un cas et une seule machine dans un autre.
Obligatoire dans la même condition que readiness_gate_identifier ci-dessus : chaque fois que boundary_readiness_status est autre que candidate.
Distinct de readiness_gate_identifier : l’un nomme le mécanisme, l’autre décrit ce qu’il est déclaré avoir couvert.
Pour un redémarrage de ligne de production, l’identifiant pourrait nommer le contrôle diagnostique utilisé, tandis que la référence de périmètre nomme la machine ou ligne spécifique que ce contrôle couvrait.
handoff.boundary_readiness.unresolved_signals
Un signal non résolu est un élément spécifique resté non résolu ou non attribué au moment où l’évaluation de disponibilité a été effectuée — le « pourquoi » déclaré derrière un résultat verified_partial ou unverifiable, pas seulement le fait qu’un tel résultat se soit produit.
Sans cette liste, un lecteur rencontrant « Disponibilité du boundary : verified_partial » saurait que quelque chose était incomplet, mais pas quoi — souvent l’information la plus utile pour une reconstitution ultérieure de la décision.
Obligatoire chaque fois que boundary_readiness_status est verified_partial ou unverifiable — au moins une entrée est requise dans ce cas.
Non utilisé, et normalement laissé vide, lorsque le statut est candidate ou verified, car dans ces cas aucune lacune non résolue n’est déclarée.
Énumérez chaque élément spécifique resté non résolu, aussi concrètement que possible — plusieurs entrées sont prises en charge lorsque plus d’un signal est resté ouvert.
Directement régi par boundary_readiness_status : obligatoire (minimum une entrée) lorsque cette valeur est verified_partial ou unverifiable.
boundary_readiness_status est verified_partial ou unverifiable et que ce tableau est vide, la demande est rejetée.Pour le scénario d’autorisation SOC dans les Cas d’Usage en Entreprise ci-dessus, cela pourrait indiquer : « Origine de deux requêtes API non encore attribuée. »
Les règles ci-dessous sont vérifiées directement par rapport au validateur dans HumanStructuredIntakeService.php — pas supposées à partir des noms de champs ou de schémas de documentation généraux.
| Si… | Alors… |
|---|---|
threshold_status = not_defined | Toute valeur soumise dans threshold_reference est supprimée par le serveur, même si elle est présente dans la demande. |
boundary_readiness_status ≠ candidate | readiness_gate_identifier ET readiness_gate_scope_reference deviennent tous deux obligatoires ensemble. Si l’un des deux manque, la demande est rejetée. |
boundary_readiness_status ∈ {verified_partial, unverifiable} | unresolved_signals[] devient obligatoire, avec un minimum d’une entrée. Un tableau vide est rejeté sous cette condition. |
Une entrée evidence_references[] inclut un hash_value | hash_scope et hashed_by deviennent tous deux obligatoires ensemble pour cette entrée. Une déclaration de hachage partielle — une valeur sans les deux — est rejetée. |
visibility_surface, un champ interne dans le payload canonique, est toujours dérivé mécaniquement de boundary_readiness_status par une correspondance fixe. Ce n’est jamais une valeur choisie directement par la personne remplissant le formulaire.Une référence externe de preuve permet à un Human Structured Intake de pointer vers un artefact — un document, une capture d’écran, un fichier journal, une politique — qui reste sous le contrôle de l’organisation elle-même, sans que cet artefact ne soit jamais téléchargé vers ou détenu par EVIDE. Vérifié dans le code : cela réutilise, sans modification, la structure exacte evidence_references[] déjà documentée dans la JSON Schema Reference — pas un mécanisme parallèle ou spécifique à Human.
Cela compte car cela résout une tension réelle et courante : une organisation a souvent besoin de préserver une déclaration vérifiable sur une décision, tout en évitant délibérément de remettre un document interne sensible à un système externe. Les références externes de preuve permettent aux deux de se produire en même temps.
POLICY-CREDIT-REV7. L’organisation garde ce document sous son propre contrôle. L’Human Structured Intake peut préserver une référence déclarée à cette politique et, si disponible, son empreinte SHA-256 — sans qu’EVIDE ne reçoive jamais le document lui-même.artifact_type | Type déclaré en texte libre — ex. screenshot, pdf, policy_document. Pas une énumération fixe. |
pointer | Une référence spécifique à l’implémentation vers l’emplacement de l’artefact. EVIDE ne la résout pas, ne la déréférence pas, ni ne la récupère. |
declared_origin | Description en texte libre de la provenance de l’artefact. |
declared_relationship | Description en texte libre de la relation entre l’artefact et cette décision. |
declared_description | Description en texte libre lisible par un humain. |
declared_retention_status | Un parmi persistent_storage, rolling_buffer, unknown. Vérifié dans le code : jamais défini automatiquement par défaut — inclus uniquement si la personne le sélectionne activement. |
Une référence peut optionnellement porter une empreinte SHA-256 déclarée de l’artefact. Voir la section dédiée SHA-256 ci-dessous pour ce que cela établit exactement et ce que cela n’établit pas.
SHA-256 est une fonction de hachage cryptographique : elle prend n’importe quel fichier et produit de manière déterministe une empreinte de longueur fixe telle que même un tout petit changement dans le fichier produit une empreinte complètement différente. Dans une référence externe de preuve, une empreinte SHA-256 déclarée permet à une partie ultérieure détenant l’artefact réel de vérifier s’il correspond à ce qui a été déclaré au moment de l’intake.
Vérifié dans le code : la validation du hachage sur ce canal est purement syntaxique — le serveur confirme que la valeur déclarée comporte exactement 64 caractères hexadécimaux, rien de plus. EVIDE ne reçoit pas l’artefact et ne peut pas vérifier si l’empreinte déclarée lui correspond réellement. La valeur déclarée est préservée exactement telle que saisie, jamais normalisée en majuscules ou minuscules.
La distinction qui compte se situe entre cinq choses distinctes : l’artefact externe lui-même (jamais reçu par EVIDE) ; la référence déclarée vers celui-ci ; l’empreinte déclarée (facultative, vérifiée seulement syntaxiquement) ; une comparaison de hachage ultérieure que quelqu’un d’autre pourrait effectuer ; et la préservation de la déclaration par EVIDE — la seule de ces cinq choses qu’EVIDE effectue réellement.
Le principe général : préservation structurée de la déclaration et de son contexte probatoire déclaré associé, exactement tel que soumis, canonicalisé et haché de manière déterministe et inviolable.
Reprenons le scénario Compliance des Cas d’Usage en Entreprise : une Compliance Officer, Jane Whitfield, est chargée d’approuver une exception temporaire à la checklist standard d’intégration des fournisseurs, sous une justification commerciale documentée et un point de révision défini.
Elle clôture la décision à 16h00 UTC, mais n’enregistre l’intake que plus tard, à 18h03 UTC, après avoir terminé un appel. Elle déclare son rôle comme Compliance Officer, référence la politique interne régissant les exceptions de ce type, et note qu’un comité de révision interne — un mécanisme indépendant de sa propre décision — a confirmé les conditions pertinentes avec une visibilité complète avant qu’elle ne prenne sa décision. Elle référence le ticket interne suivant cette exception, et déclare séparément un document de politique avec son empreinte SHA-256, conservé en interne plutôt que téléchargé vers EVIDE.
Chaque valeur ci-dessous est choisie pour être cohérente en interne et compatible avec les règles conditionnelles documentées ci-dessus — les champs sont inclus parce qu’ils correspondent à ce cas spécifique, pas simplement pour démontrer que chaque champ existe.
Voici le payload canonique qu’EVIDE construit à partir de l’exemple ci-dessus — vérifié champ par champ par rapport à HumanStructuredIntakeService.php. Les champs générés automatiquement par le serveur (jamais lus depuis le formulaire) sont marqués en conséquence.
"evide_schema": "2.1", "source_system": "evide_web_human", // généré par le serveur, fixe pour ce canal "source_reference": "web:1042:a3f91c2d", // généré par le serveur "source_timestamp_utc": "2026-04-07T18:03:00Z", // généré par le serveur -- quand EVIDE a traité cet intake "decision": { "type": "Compliance exception approval", "status": "finalized", // toujours fixe sur ce canal "closure_timestamp_utc": "2026-04-07T16:00:00Z", // déclaré -- voir Clôture de la Décision ci-dessus "summary": "Temporary exception to vendor onboarding checklist" // copié depuis le champ commun "title" }, "authority": { "id": "Jane Whitfield", // déclaré (par défaut l'utilisateur connecté si vide) "role": "Compliance Officer", "dapi_number": "DAPI-2K9-XXXX", // toujours généré par le serveur depuis la session, jamais depuis le formulaire "verification": "Linked to internal DAPI reference for the review board" }, "intervention": { "classification_status": "stable", "classification_context": { "threshold_status": "met", "threshold_reference": "Internal policy COM-EXC-04, section 3.2", "threshold_authority": { "attribution_status": "attributed" } }, "trace": { "access": "Ticket COMP-2026-0417" } }, "handoff": { "reconstruction_independence": "declared", // fixe "submission_status": "not_submitted", // fixe au moment de l'intake "acceptance_status": "not_claimed", // fixe au moment de l'intake "boundary_readiness": { "status": "verified", "visibility_surface": "declared_complete", // dérivé mécaniquement du status ci-dessus "readiness_gate": { "identifier": "COM-EXC-04 review board", "scope_reference": "Vendor onboarding exceptions, Q2 2026" } } }, "extensions": ["evidence_references"], "evidence_references": [ { "artifact_type": "policy_document", "pointer": "internal://policies/vendor-onboarding-v3", "declared_origin": "internal policy repository", "declared_description": "Policy document supporting this exception approval", "hash": { "algorithm": "SHA-256", "value": "cabbcf9f83fb765cd82569e477b6b3abf51d81eba9b3b92f8e9904be98a1a2f8" }, "hash_scope": "full_file", "hashed_by": "internal document management system" } ]
unresolved_signals est correctement absent ici — il n’est requis que lorsque boundary_readiness.status est verified_partial ou unverifiable, pas verified comme dans cet exemple.Human Structured Intake existe afin qu’une décision humaine déclarée, et son contexte probatoire déclaré, puissent survivre en dehors du système qui les a produits — récupérables de manière indépendante, hachés de manière déterministe, et ancrés dans le temps.