Research records · Registros de pesquisa
English · Português · Guided tour / Visita guiada · Validation / Validação
EN: What remains when a coded journal applies its retention window?
PT: O que permanece quando o diário aplica a janela de retenção?
| Goal · Objetivo | Where to go · Por onde começar |
|---|---|
| Understand a real example · Entender um exemplo concreto | Walkthrough / Roteiro |
| Reproduce and compare · Reproduzir e comparar | Evidence tour / Visita às evidências |
| Inspect the checks · Inspecionar as verificações | Validation record / Registro de validação · CI |
| Explore in the browser · Explorar no navegador | Public demonstration / Demonstração pública |
Example result · Resultado do exemplo: Retained events / Eventos mantidos: **5 **; Excluded events / Eventos excluÃdos: **0 **; Session codes / Códigos de sessão: **1 **
Try a comparison · Experimente uma comparação
EN: Compare nominal, retention-window and reordered-events; inspect the chain without treating it as authentication.
PT: Compare nominal, retenção e eventos reordenados; inspecione a cadeia sem tratá-la como autenticação.
A local event-journal builder for minimal, coded research records. It validates a small vocabulary, applies an explicit export retention window and builds an inspectable integrity chain.
This is independently implemented public companion work for Évia. It has no dependency on the Évia core and uses synthetic fixtures.
- Strict event fields with no free-text notes, attachments, participant names or media fields.
- Opaque session codes, unique event codes and a bounded outcome vocabulary.
- Deterministic timestamp ordering and inclusive retention boundaries.
- SHA-256 record chaining, final-root export and a reusable verification function.
- Tests that demonstrate both detectable corruption and the limits of an unkeyed chain.
Use Node.js 22 or newer. There are no third-party runtime packages to install.
git clone https://github.com/galafis/evia-local-event-journal.git
cd evia-local-event-journal
npm test
npm startOpen http://127.0.0.1:4173. The browser includes an English/Portuguese switch. Choose an example, adjust the primary assumption, and select Update. Expand Edit all scenario fields for the complete JSON editor. Invalid imports leave the last valid result visible with an explicit error message. Export both the scenario and report to preserve the experiment.
For headless use:
node scripts/analyze.mjs examples/nominal.json report.json
npm run examples
npm run test:coverageThe command-line exit codes are 0 for completed analysis or review notes, 2 for a valid scenario that needs review, and 1 for invalid input or invocation. A review-required result is still written to the requested report file.
The nominal input contains five coded events ending at 10,000 ms. A 3,000 ms retention window keeps the events at 7,000, 9,000 and 10,000 ms. Editing one retained outcome breaks verification against the exported root; recomputing a chain does not establish authenticity.
- Accepted event kinds are session-start, session-pause, session-stop, cue-presented and observation. Outcomes are ok, skipped, interrupted or unknown.
- Event codes follow e-0001 style. Session codes follow s-00000001 style and must not be reused as a public person identifier.
- Validate all input events before retention filtering. Unknown fields, duplicate event codes and events after nowMs are rejected.
hash[i] = SHA-256(canonical(sequence, event fields, hash[i−1])) / hash[i] = SHA-256(ordem canônica da sequência, campos do evento e hash[i−1])
The architecture guide explains every rule and boundary case. The data contract documents fields, units, limits and the report envelope. Research scope separates implemented behavior from future platform work.
This is not encryption, anonymization, a digital signature or a compliance certification. Opaque codes and timing can remain linkable. Retention filters the generated export and does not erase original files, browser text areas or earlier downloads. The browser stores only the language preference automatically.
Use synthetic events to design a minimal observation vocabulary alongside the public session prototypes. Before any real research record is collected, establish a separate protocol for consent, access, retention and deletion. Review provenance and expected roots outside the editable journal itself.
Related public project: evia-session-orchestrator. Each repository is independently runnable; a link does not imply a live integration. See integration notes for the exact supported exchange, where present.
Um construtor local de registros mínimos e codificados de eventos de pesquisa. Valida um vocabulário reduzido, aplica uma janela explícita de retenção da exportação e constrói uma cadeia inspecionável de integridade.
Este é um trabalho público complementar à Évia, implementado de forma independente. Não depende do núcleo da Évia e utiliza exemplos sintéticos.
- Campos estritos de eventos, sem notas livres, anexos, nomes de participantes ou campos de mídia.
- Códigos opacos de sessão, códigos únicos de eventos e vocabulário delimitado de resultados.
- Ordenação determinística por instante e limites inclusivos de retenção.
- Encadeamento de registros com SHA-256, exportação da referência final e função reutilizável de verificação.
- Testes que demonstram tanto alterações detectáveis quanto os limites de uma cadeia sem chave.
Use Node.js 22 ou mais recente. Não há pacotes externos de execução para instalar.
git clone https://github.com/galafis/evia-local-event-journal.git
cd evia-local-event-journal
npm test
npm startAbra http://127.0.0.1:4173. O navegador oferece alternância entre português e inglês. Escolha um exemplo, ajuste a hipótese principal e selecione Atualizar. Expanda Editar todos os campos do cenário para acessar o editor JSON completo. Importações inválidas mantêm o último resultado válido visível com mensagem explícita de erro. Exporte o cenário e o relatório para preservar o experimento.
Para usar sem interface gráfica:
node scripts/analyze.mjs examples/nominal.json report.json
npm run examples
npm run test:coverageOs códigos de saída são 0 para análise concluída ou com notas, 2 para cenário válido que exige revisão e 1 para entrada ou chamada inválida. Resultados que exigem revisão também são gravados no arquivo de relatório solicitado.
A entrada nominal contém cinco eventos codificados, terminando em 10.000 ms. Uma janela de retenção de 3.000 ms mantém os eventos em 7.000, 9.000 e 10.000 ms. Editar um resultado mantido invalida a verificação contra a referência exportada; recalcular uma cadeia não comprova autenticidade.
- Os tipos aceitos são session-start, session-pause, session-stop, cue-presented e observation. Os resultados são ok, skipped, interrupted ou unknown.
- Os códigos de evento seguem o formato e-0001. Os códigos de sessão seguem s-00000001 e não devem ser reutilizados como identificador público de uma pessoa.
- Valide todos os eventos antes de filtrar por retenção. Campos desconhecidos, códigos duplicados e eventos posteriores a nowMs são rejeitados.
hash[i] = SHA-256(canonical(sequence, event fields, hash[i−1])) / hash[i] = SHA-256(ordem canônica da sequência, campos do evento e hash[i−1])
O guia de arquitetura explica todas as regras e os casos limite. O contrato de dados documenta campos, unidades, limites e o formato do relatório. O escopo de pesquisa separa funcionalidades implementadas de futuras etapas com a plataforma.
Isto não é criptografia de conteúdo, anonimização, assinatura digital ou certificação de conformidade. Códigos opacos e horários podem continuar associáveis. A retenção filtra a exportação gerada e não apaga arquivos originais, campos de texto do navegador ou downloads anteriores. O navegador armazena automaticamente apenas a preferência de idioma.
Use eventos sintéticos para definir um vocabulário mínimo de observação junto aos protótipos públicos de sessão. Antes de coletar registros reais de pesquisa, estabeleça um protocolo separado para consentimento, acesso, retenção e exclusão. Revise a origem dos dados e as referências esperadas fora do próprio registro editável.
Projeto público relacionado: evia-session-orchestrator. Cada repositório funciona independentemente; um link não implica integração em tempo real. Consulte as notas de integração para conhecer as trocas efetivamente suportadas, quando existentes.
| Example · Exemplo | Result · Resultado | Reproduce · Reproduzir |
|---|---|---|
| Local session Sessão local |
complete |
Input · Entrada · Report · Relatório |
| Retention window Janela de retenção |
review-notes |
Input · Entrada · Report · Relatório |
| Reordered events Eventos fora de ordem |
complete |
Input · Entrada · Report · Relatório |
| Document · Documento | Content · Conteúdo |
|---|---|
| Architecture · Arquitetura | Domain rules, algorithms and boundaries · Regras, algoritmos e limites |
| Data contract · Contrato de dados | Fields, units and JSON format · Campos, unidades e formato JSON |
| Schema | Structural JSON Schema · Esquema estrutural JSON |
| Validation · Validação | Behavioral tests and review protocol · Testes de comportamento e protocolo de revisão |
| Research scope · Escopo de pesquisa | Platform relationship and next steps · Relação com a plataforma e próximas etapas |
| Integration · Integração | Public artifact exchange · Troca de artefatos públicos |
| Contributing · Contribuições | Development and review · Desenvolvimento e revisão |
| Security · Segurança | Privacy and responsible reports · Privacidade e relatos responsáveis |
| Changelog · Histórico | Versioned changes · Alterações por versão |
Gabriel Demetrios Lafis · Brazil / Brasil
[email protected] · GitHub
Independent work; institutional contact does not imply institutional or vendor endorsement.
Trabalho independente; o contato institucional não implica endosso de instituição ou fabricante.
Worked examples with expected metrics · Exemplos comentados com métricas esperadas