Vue d'ensemble de la recherche appliquée
Provenance et possession
AnyTrace
Le registre des lieux par lesquels une chose est passée ne vaut que par sa capacité à absorber un signalement arrivé en retard, sans réécrire ce qui était déjà enregistré.
Statut: Concept de recherche · prototype non publié
La question de recherche
Comment la provenance et la possession d'une chose et de ses preuves peuvent-elles rester reconstituables lorsque les événements arrivent, en retard et dans le désordre, depuis des systèmes et des organisations différents ?
- D'où cela vient-il ?
- Que lui est-il arrivé ?
- Qui l'a détenu, et depuis quand ?
- Quelles preuves sont entrées dans la trace, et quand ?
Le modèle, de façon interactive
Un lot de café vert passe d'une coopérative à un entrepôt d'exportation, puis à un navire. L'entrepôt signale sa réception avec six heures de retard, après que le navire a déjà enregistré le chargement. Choisissez un ordre, puis sélectionnez un événement.
Sélectionnez un événement pour voir qui détenait le lot avant et après, et quelles preuves l'accompagnaient.
Entrepôt d'exportation
- Survenu
- 10:00
- Enregistré
- 16:00
- Détenteur précédent
- Coopérative
- Détenteur suivant
- Compagnie maritime
- Preuves jointes
- Récépissé d'entrepôt
- Signalé par
- Rapport de l'entrepôt, envoyé en retard
Ajouté à la chaîne à 16:00 avec son heure réelle, 10:00. Il prend sa place dans la reconstitution, et la chaîne montre toujours quand il est arrivé. Le détenteur actuel ne recule pas : le signalement tardif d'un mouvement antérieur ne signifie pas que le lot est revenu en arrière.
Un scénario, étape par étape
Ce que le système enregistre lorsque les signalements de possession arrivent dans le désordre.
Étape 1 sur 5: Enregistrer le lot
Le lot devient un dossier de traçabilité avec ses identifiants. On ne sait encore rien de sa possession, et la projection le dit.
Un événement de possession à 09:00. La chaîne gagne une entrée ; le détenteur actuel devient la coopérative.
Un événement de possession à 14:00, venant du transporteur. Le détenteur actuel devient la compagnie maritime.
À 16:00, l'entrepôt signale une réception à 10:00. Elle est ajoutée à la fin de la chaîne avec son heure réelle et is_current = false, parce qu'elle est antérieure au détenteur déjà enregistré.
Dans l'ordre du temps, la possession va de la coopérative à l'entrepôt, puis au navire. Dans l'ordre de la chaîne, le signalement tardif est visiblement tardif. Les deux lectures proviennent des mêmes enregistrements, et aucun n'a été modifié.
Primitives fondamentales
Entité traçable
AnyTraceEntity + kernel caseLa chose suivie, avec ses identifiants et une projection de qui la détient maintenant. La vérité, c'est la chaîne d'événements ; la projection est une commodité.
Événement de possession
custody.recordedUn transfert avec son heure réelle, le détenteur précédent et le suivant, et un indicateur explicite précisant s'il a changé le détenteur actuel.
Source de preuves
attach_sourceCe qu'une source a dit de la chose, joint avec sa propre chaîne de possession et sa fraîcheur, jamais écrasé.
Lien de lignée
derived_fromUne chose tracée fabriquée à partir d'une autre. Les liens sont typés, de sorte qu'un parcours du graphe peut dire comment les choses sont liées, et pas seulement qu'elles le sont.
Chronologie chaînée par hachage
kernel_eventsChaque événement est ajouté avec le hachage du précédent, dans l'ordre d'arrivée. La reconstitution lit le temps ; la chaîne conserve l'ordre.
Parcours de graphe borné
graph, lineageLe voisinage d'un dossier jusqu'à une profondeur indiquée, sans charges utiles, en signalant quand le parcours s'est arrêté plus tôt.
Ce qui le distingue
- AnyVerify
Sa question
Les preuves étayent-elles une affirmation précise ?
Pourquoi ce n'est pas la même chose
AnyTrace enregistre où une chose est passée et ce qui en a été dit. Il ne décide pas si quoi que ce soit de cela est vrai.
- AnyValid
Sa question
Qu'a dit une source faisant autorité, et est-ce toujours d'actualité ?
Pourquoi ce n'est pas la même chose
AnyTrace n'interroge aucune autorité. Ses sources sont les parties de la chaîne.
- AnyDPP
Sa question
Comment des preuves deviennent-elles un passeport publié ?
Pourquoi ce n'est pas la même chose
Un passeport est l'un des résultats possibles d'une trace. AnyTrace s'arrête à un registre reconstituable.
Ce qui existe, et ce qui n'existe pas
Dans le dépôt
- app/products/anytrace/service.py : enregistrer, joindre une source, consigner la possession, lier, graphe, lignée, clôturer
- table anytrace_entities, reposant sur les dossiers, les événements et les preuves du noyau
- 9 routes authentifiées, 404 tant que le module est désactivé
- tests/any_family/test_anytrace.py : identité, possession tardive, lignée sans charges utiles (20 tests)
- tests/any_family/test_cross_module_reuse.py : une même histoire à travers cinq modules, issue d'un seul parcours de graphe
Programme de recherche, non construit
- Des connecteurs qui reçoivent les événements de possession des systèmes partenaires
- Toute preuve de comportement sur un grand graphe
- La détection de possessions contradictoires, deux détenteurs à la fois
Sa place dans AnyLAI
AnyTrace
- Application kernelAjoute un vocabulaire aux dossiers, à la chaîne, aux preuves et aux liens du noyau ; rien qui lui soit propre en dessous.
- AnyVerifyUn dossier de vérification est lié au dossier de traçabilité qu'il vérifie.
- AnyUSMCAChaque ligne de la nomenclature pointe vers le dossier de traçabilité de cet intrant.
- Any2DPPUne exécution de mise en correspondance est liée au dossier de traçabilité dont elle met en correspondance les données.
- COADFLa chaîne porte la forme d'enregistrement d'audit que nomme la règle 6 de COADF ; c'est une influence, pas une revendication de conformité.
- lien entre dossiers via le noyau
- usage direct d'un autre module ou système
- appel en mode fantôme : enregistré, jamais exécuté
Limites et non-objectifs
- Il enregistre ce que les parties ont signalé. Il n'établit pas qu'un signalement, quel qu'il soit, est vrai.
- Il ne réordonne ni ne modifie jamais la chaîne. Une correction est un nouvel événement, pas une modification d'un ancien.
- Le parcours de graphe est borné et n'a pas été exécuté sur un grand graphe.
- Aucun système partenaire ne lui envoie d'événements aujourd'hui.
État actuel
Statut de recherche
- Concept de recherche · prototype non publié
- Non publié : routes désactivées
- Aucun usage en production, aucune donnée réelle
- 20 tests dans le dépôt
Un module prototype reposant sur le noyau partagé : service, table, routes et tests existent dans le dépôt. Il est désactivé, n'a aucune route publique, et n'a pas été utilisé sur des données réelles.
Suite de tests: python-backend/tests/any_family/test_anytrace.py
Projet de recherche · R&D indépendante · Pas une offre commerciale
