Visão geral da pesquisa aplicada
Procedência e custódia
AnyTrace
Um registro de por onde uma coisa passou só vale o quanto consegue absorver um informe que chega atrasado, sem reescrever o que já estava registrado.
Estado: Conceito de pesquisa · protótipo não publicado
A pergunta de pesquisa
Como a procedência e a custódia de uma coisa e das suas evidências podem continuar reconstituíveis à medida que os eventos chegam, atrasados e fora de ordem, de sistemas e organizações diferentes?
- De onde veio?
- O que aconteceu com ela?
- Quem a teve em mãos, e desde quando?
- Que evidência entrou no rastro, e quando?
O modelo, de forma interativa
Um lote de café verde vai de uma cooperativa para um armazém de exportação e dali para um navio. O armazém informa o recebimento com seis horas de atraso, depois de o navio já ter registrado o embarque. Escolha uma ordenação e selecione um evento.
Selecione um evento para ver quem tinha o lote antes e depois dele, e que evidência veio junto.
Armazém de exportação
- Aconteceu
- 10:00
- Registrado
- 16:00
- Detentor anterior
- Cooperativa
- Detentor seguinte
- Companhia de navegação
- Evidência anexada
- Recibo de armazém
- Informado por
- Informe do armazém, enviado com atraso
Acrescentado à cadeia às 16:00 com o seu horário real, 10:00. Ele entra na reconstrução no seu lugar, e a cadeia continua mostrando quando ele chegou. O detentor atual não volta atrás: um informe atrasado de uma movimentação anterior não significa que o lote voltou.
Um cenário, passo a passo
O que o sistema registra quando os informes de custódia chegam fora de ordem.
Passo 1 de 5: Registrar o lote
O lote se torna um caso de rastreio com os seus identificadores. Ainda não se sabe nada sobre a custódia, e a projeção diz isso.
Um evento de custódia às 09:00. A cadeia ganha uma entrada; o detentor atual passa a ser a cooperativa.
Um evento de custódia às 14:00, vindo do transportador. O detentor atual passa a ser a companhia de navegação.
Às 16:00 o armazém informa um recebimento às 10:00. Ele é acrescentado ao fim da cadeia com o seu horário real e is_current = false, porque é mais antigo do que o detentor já registrado.
Lida pelo tempo, a custódia vai de cooperativa a armazém e a navio. Lida pela cadeia, o informe atrasado aparece visivelmente atrasado. As duas leituras vêm dos mesmos registros, e nenhum deles foi editado.
Primitivas centrais
Entidade rastreável
AnyTraceEntity + kernel caseA coisa acompanhada, com os seus identificadores e uma projeção de quem a tem agora. A verdade é a cadeia de eventos; a projeção é uma conveniência.
Evento de custódia
custody.recordedUma transferência com o seu horário real, o detentor anterior e o seguinte, e uma marcação explícita de se ela mudou o detentor atual.
Fonte de evidência
attach_sourceO que uma fonte disse sobre a coisa, anexado com a sua própria custódia e atualidade, nunca sobrescrito.
Ligação de linhagem
derived_fromUma coisa rastreada feita a partir de outra. As ligações são tipadas, de modo que um percurso no grafo pode dizer como as coisas se relacionam, e não apenas que se relacionam.
Linha do tempo encadeada por hashes
kernel_eventsCada evento é acrescentado com o hash do anterior, na ordem de chegada. A reconstrução lê o tempo; a cadeia guarda a ordem.
Percurso limitado no grafo
graph, lineageA vizinhança de um caso até uma profundidade declarada, sem conteúdos, e dizendo quando parou antes do fim.
O que o diferencia
- AnyVerify
A pergunta dele
A evidência sustenta uma afirmação específica?
Por que isto não é aquilo
O AnyTrace registra por onde uma coisa passou e o que foi dito sobre ela. Ele não decide se algo disso é verdade.
- AnyValid
A pergunta dele
O que uma fonte com autoridade disse, e isso ainda está vigente?
Por que isto não é aquilo
O AnyTrace não pergunta nada a nenhuma autoridade. As suas fontes são as partes da cadeia.
- AnyDPP
A pergunta dele
Como a evidência se torna um passaporte publicado?
Por que isto não é aquilo
Um passaporte é um resultado possível de um rastro. O AnyTrace termina em um registro reconstituível.
O que existe, e o que não existe
No repositório
- app/products/anytrace/service.py: registrar, anexar fonte, registrar custódia, ligar, grafo, linhagem, encerrar
- tabela anytrace_entities, sobre os casos, eventos e evidências do núcleo
- 9 rotas autenticadas, 404 enquanto o módulo está desligado
- tests/any_family/test_anytrace.py: identidade, custódia atrasada, linhagem sem conteúdos (20 testes)
- tests/any_family/test_cross_module_reuse.py: uma história em cinco módulos a partir de um único percurso no grafo
Agenda de pesquisa, não construída
- Conectores que recebam eventos de custódia de sistemas de parceiros
- Qualquer evidência de comportamento em um grafo grande
- Detecção de custódia contraditória, dois detentores ao mesmo tempo
Onde fica na AnyLAI
AnyTrace
- Application kernelAcrescenta um vocabulário aos casos, à cadeia, às evidências e às ligações do núcleo; nada próprio abaixo disso.
- AnyVerifyUm caso de verificação se liga ao caso de rastreio que ele verifica.
- AnyUSMCACada linha da lista de materiais aponta para o caso de rastreio daquele insumo.
- Any2DPPUma execução de mapeamento se liga ao caso de rastreio cujos dados ela mapeia.
- COADFA cadeia carrega o formato de registro de auditoria que a regra 6 do COADF nomeia; isso é influência, não uma alegação de conformidade.
- ligação entre casos pelo núcleo
- uso direto de outro módulo ou sistema
- chamada em modo sombra: registrada, nunca executada
Limites e não objetivos
- Ele registra o que as partes informaram. Não estabelece que algum informe seja verdadeiro.
- Ele nunca reordena nem edita a cadeia. Uma correção é um novo evento, não uma alteração de um antigo.
- O percurso no grafo é limitado e não foi executado em um grafo grande.
- Nenhum sistema de parceiro lhe envia eventos hoje.
Estado atual
Estado da pesquisa
- Conceito de pesquisa · protótipo não publicado
- Não publicado: rotas desligadas
- Sem uso em produção, sem dados reais
- 20 testes no repositório
Um módulo protótipo sobre o núcleo compartilhado: serviço, tabela, rotas e testes existem no repositório. Está desligado, não tem rota pública e não foi usado com dados reais.
Suíte de testes: python-backend/tests/any_family/test_anytrace.py
Projeto de pesquisa · P&D independente · Não é uma oferta comercial
