Aller au contenu

Projet indépendant de R&D · Cologne

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.

Classer les événements

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

  1. Le lot devient un dossier de traçabilité avec ses identifiants. On ne sait encore rien de sa possession, et la projection le dit.

  2. Un événement de possession à 09:00. La chaîne gagne une entrée ; le détenteur actuel devient la coopérative.

  3. Un événement de possession à 14:00, venant du transporteur. Le détenteur actuel devient la compagnie maritime.

  4. À 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é.

  5. 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 case

    La 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.recorded

    Un 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_source

    Ce 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_from

    Une 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_events

    Chaque é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, lineage

    Le 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