summaryrefslogtreecommitdiffstats
path: root/pt-br/news/phase0-foundation/index.html
blob: ab4b67926cc392cb9fbdb02814ec4a30625b009e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Fase 0: Fundação Construída — Tesseras</title>
    <meta name="description" content="Os crates fundamentais do Tesseras estão prontos — tipos de domínio, primitivas criptográficas, armazenamento SQLite e uma CLI funcional.">
    <!-- Open Graph -->
    <meta property="og:type" content="article">
    <meta property="og:title" content="Fase 0: Fundação Construída">
    <meta property="og:description" content="Os crates fundamentais do Tesseras estão prontos — tipos de domínio, primitivas criptográficas, armazenamento SQLite e uma CLI funcional.">
    <meta property="og:image" content="https://tesseras.net/images/social.jpg">
    <meta property="og:image:width" content="1200">
    <meta property="og:image:height" content="630">
    <meta property="og:site_name" content="Tesseras">
    <!-- Twitter Card -->
    <meta name="twitter:card" content="summary_large_image">
    <meta name="twitter:title" content="Fase 0: Fundação Construída">
    <meta name="twitter:description" content="Os crates fundamentais do Tesseras estão prontos — tipos de domínio, primitivas criptográficas, armazenamento SQLite e uma CLI funcional.">
    <meta name="twitter:image" content="https://tesseras.net/images/social.jpg">
    <link rel="stylesheet" href="https://tesseras.net/style.css?h=21f0f32121928ee5c690">
    
        
            <link rel="alternate" type="application/atom+xml" title="Tesseras" href="https://tesseras.net/atom.xml">
        
    
    <link rel="icon" type="image/png" sizes="32x32" href="https://tesseras.net/images/favicon.png?h=be4e123a23393b1a027d">
    
</head>
<body>
    <header>
        <h1>
            <a href="https:&#x2F;&#x2F;tesseras.net/pt-br/">
                <img src="https://tesseras.net/images/logo-64.png?h=c1b8d0c4c5f93b49d40b" alt="Tesseras" width="40" height="40" class="logo">
                Tesseras
            </a>
        </h1>
        <nav>
            
                <a href="https://tesseras.net/pt-br/about/">Sobre</a>
                <a href="https://tesseras.net/pt-br/news/">Notícias</a>
                <a href="https://tesseras.net/pt-br/releases/">Lançamentos</a>
                <a href="https://tesseras.net/pt-br/faq/">FAQ</a>
                <a href="https://tesseras.net/pt-br/subscriptions/">Inscrições</a>
                <a href="https://tesseras.net/pt-br/contact/">Contato</a>
            
        </nav>
        <nav class="lang-switch">
            
                <a href="https:&#x2F;&#x2F;tesseras.net&#x2F;news&#x2F;phase0-foundation&#x2F;">English</a> | <strong>Português</strong>
            
        </nav>
    </header>

    <main>
        
<article>
    <h2>Fase 0: Fundação Construída</h2>
    <p class="news-date">2026-02-14</p>
    <p>O primeiro marco do projeto Tesseras está completo. A Fase 0 estabelece a
fundação sobre a qual cada componente futuro será construído: tipos de domínio,
criptografia, armazenamento e uma interface de linha de comando funcional.</p>
<h2 id="o-que-foi-construido">O que foi construído</h2>
<p><strong>tesseras-core</strong> — A camada de domínio define o formato tessera: <code>ContentHash</code>
(BLAKE3, 32 bytes), <code>NodeId</code> (Kademlia, 20 bytes), tipos de memória (Moment,
Reflection, Daily, Relation, Object), modos de visibilidade (Private, Circle,
Public, PublicAfterDeath, Sealed) e um formato de manifesto em texto plano que
pode ser interpretado por qualquer linguagem de programação pelos próximos mil
anos. A camada de serviço (<code>TesseraService</code>) gerencia operações de criação,
verificação, exportação e listagem através de port traits, seguindo arquitetura
hexagonal.</p>
<p><strong>tesseras-crypto</strong> — Geração de chaves Ed25519, assinatura e verificação. Um
framework de assinatura dual (Ed25519 + placeholder ML-DSA) pronto para migração
pós-quântica. Hashing de conteúdo com BLAKE3. Codificação de apagamento
Reed-Solomon atrás de uma feature flag para futura replicação.</p>
<p><strong>tesseras-storage</strong> — Índice SQLite via rusqlite com migrações em SQL puro.
Blob store no sistema de arquivos com layout endereçável por conteúdo
(<code>blobs/&lt;tessera_hash&gt;/&lt;memory_hash&gt;/&lt;filename&gt;</code>). Persistência de chaves de
identidade em disco.</p>
<p><strong>tesseras-cli</strong> — Um binário <code>tesseras</code> funcional com cinco comandos:</p>
<ul>
<li><code>init</code> — gera identidade Ed25519, cria banco de dados SQLite</li>
<li><code>create &lt;dir&gt;</code> — varre um diretório por arquivos de mídia, cria uma tessera
assinada</li>
<li><code>verify &lt;hash&gt;</code> — verifica assinatura e integridade dos arquivos</li>
<li><code>export &lt;hash&gt; &lt;dest&gt;</code> — escreve um diretório tessera autocontido</li>
<li><code>list</code> — mostra uma tabela das tesseras armazenadas</li>
</ul>
<p><strong>Testes</strong> — 67+ testes em todo o workspace: testes unitários em cada módulo,
testes baseados em propriedades (proptest) para roundtrips hex e serialização de
manifesto, testes de integração cobrindo o ciclo completo de
criação-verificação-exportação incluindo detecção de arquivos adulterados e
assinaturas inválidas. Zero avisos do clippy.</p>
<h2 id="decisoes-de-arquitetura">Decisões de arquitetura</h2>
<ul>
<li><strong>Arquitetura hexagonal</strong>: operações criptográficas são injetadas via trait
objects (<code>Box&lt;dyn Hasher&gt;</code>, <code>Box&lt;dyn ManifestSigner&gt;</code>,
<code>Box&lt;dyn ManifestVerifier&gt;</code>), mantendo o crate core livre de dependências
criptográficas concretas.</li>
<li><strong>Feature flags</strong>: a feature <code>service</code> no tesseras-core controla a camada de
aplicação assíncrona. As features <code>classical</code> e <code>erasure</code> no tesseras-crypto
controlam quais algoritmos são compilados.</li>
<li><strong>Manifesto em texto plano</strong>: interpretável sem qualquer biblioteca de formato
binário, com prefixos de hash explícitos <code>blake3:</code> e layout legível por
humanos.</li>
</ul>
<h2 id="o-que-vem-a-seguir">O que vem a seguir</h2>
<p>A Fase 0 é a fundação local. O caminho adiante:</p>
<ul>
<li><strong>Fase 1: Rede</strong> — Transporte QUIC (quinn), DHT Kademlia para descoberta de
pares, travessia de NAT</li>
<li><strong>Fase 2: Replicação</strong> — Codificação de apagamento Reed-Solomon pela rede,
loops de reparo, reciprocidade bilateral (sem blockchain, sem tokens)</li>
<li><strong>Fase 3: Clientes</strong> — App Flutter mobile/desktop via flutter_rust_bridge, API
GraphQL, nó WASM no navegador</li>
<li><strong>Fase 4: Endurecimento</strong> — Assinaturas pós-quânticas ML-DSA, empacotamento
para Alpine/Arch/Debian/FreeBSD/OpenBSD, CI no SourceHut</li>
</ul>
<p>O formato tessera é estável. Tudo construído a partir daqui se conecta e estende
o que existe hoje.</p>

</article>

    </main>

    <footer>
        <p>&copy; 2026 Tesseras Project. <a href="/atom.xml">News Feed</a> · <a href="https://git.sr.ht/~ijanc/tesseras">Source</a></p>
    </footer>
</body>
</html>