Tesseras

Fase 4: Onboarding de Nos Institucionais

2026-02-15

Uma rede P2P composta apenas por individuos e fragil. Discos rigidos morrem, celulares sao perdidos, pessoas perdem interesse. A sobrevivencia a longo prazo das memorias da humanidade depende de instituicoes — bibliotecas, arquivos, museus, universidades — que medem seus tempos de vida em seculos. A Fase 4 continua com o onboarding de nos institucionais: organizacoes verificadas agora podem prometer armazenamento, manter indices de busca e participar da rede com uma identidade distinta.

O design segue um principio de confiar mas verificar: instituicoes se identificam via registros DNS TXT (o mesmo mecanismo usado por SPF, DKIM e DMARC para email), prometem um orcamento de armazenamento e recebem isencoes de reciprocidade para que possam armazenar fragmentos para outros sem esperar nada em troca. Em contrapartida, a rede trata seus fragmentos como replicas de maior qualidade e limita a dependencia excessiva de qualquer instituicao individual atraves de restricoes de diversidade.

O que foi construido

Bits de capacidade (tesseras-core/src/network.rs) — Dois novos flags adicionados ao bitfield Capabilities: INSTITUTIONAL (bit 7) e SEARCH_INDEX (bit 8). Um novo construtor institutional_default() retorna o conjunto completo de capacidades da Fase 2 mais esses dois bits e RELAY. Nos normais anunciam phase2_default() que nao inclui flags institucionais. Testes de roundtrip de serializacao verificam que os novos bits sobrevivem a codificacao MessagePack.

Tipos de busca (tesseras-core/src/search.rs) — Tres novos tipos de dominio para o subsistema de busca:

Todos os tipos derivam Serialize/Deserialize para transporte e Clone/Debug para diagnostico.

Configuracao institucional do daemon (tesd/src/config.rs) — Uma nova secao [institutional] no TOML com domain (o dominio DNS a verificar), pledge_bytes (compromisso de armazenamento em bytes) e search_enabled (toggle para o indice FTS5). O metodo to_dht_config() agora define Capabilities::institutional_default() quando a configuracao institucional esta presente, para que nos institucionais anunciem os bits de capacidade corretos em respostas Pong.

Verificacao DNS TXT (tesd/src/institutional.rs) — Resolucao DNS assincrona usando hickory-resolver para verificar identidade institucional. O daemon consulta registros TXT em _tesseras.<dominio> e analisa campos chave-valor: v (versao), node (node ID em hexadecimal) e pledge (compromisso de armazenamento em bytes). A verificacao checa:

  1. Um registro TXT existe em _tesseras.<dominio>
  2. O campo node corresponde ao node ID do proprio daemon
  3. O campo pledge esta presente e e valido

Na inicializacao, o daemon tenta a verificacao DNS. Se bem-sucedida, o no roda com capacidades institucionais. Se falhar, o no registra um aviso e faz downgrade para um no completo normal — sem crash, sem intervencao manual.

Comando CLI de setup (tesseras-cli/src/institutional.rs) — Um novo subcomando institutional setup que guia operadores pelo onboarding:

  1. Le a identidade do no a partir do diretorio de dados
  2. Solicita nome de dominio e tamanho do pledge
  3. Gera o registro DNS TXT exato a adicionar: v=tesseras1 node=<hex> pledge=<bytes>
  4. Escreve a secao institucional no arquivo de configuracao do daemon
  5. Imprime os proximos passos: adicionar o registro TXT, reiniciar o daemon

Indice de busca SQLite (tesseras-storage) — Uma migracao (003_institutional.sql) que cria tres estruturas:

O adaptador SqliteSearchIndex implementa o port trait SearchIndex com index_tessera() (inserir/atualizar) e search() (consultar com filtros). Consultas FTS5 suportam busca em linguagem natural; consultas geo usam INTERSECT do R-tree para lookups de bounding box. Resultados sao ranqueados por score de relevancia do FTS5.

A migracao tambem adiciona uma coluna is_institutional a tabela reciprocity, tratada de forma idempotente via checagens pragma_table_info (o ALTER TABLE ADD COLUMN do SQLite nao tem IF NOT EXISTS).

Bypass de reciprocidade (tesseras-replication/src/service.rs) — Nos institucionais sao isentos de checagens de reciprocidade. Quando receive_fragment() e chamado, se o node ID do remetente esta marcado como institucional no ledger de reciprocidade, a checagem de saldo e ignorada completamente. Isso significa que instituicoes podem armazenar fragmentos para toda a rede sem precisar "ganhar" creditos primeiro — sua identidade verificada por DNS e compromisso de armazenamento servem como credencial.

Restricao de diversidade por tipo de no (tesseras-replication/src/distributor.rs) — Uma nova funcao apply_institutional_diversity() limita quantas replicas de uma unica tessera podem ir para nos institucionais. O limite e ceil(fator_replicacao / 3.5) — com o padrao r=7, no maximo 2 de 7 replicas vao para instituicoes. Isso impede que a rede se torne dependente de um pequeno numero de grandes instituicoes: se os servidores de uma universidade cairem, pelo menos 5 replicas permanecem em nos independentes.

Extensoes de mensagens DHT (tesseras-dht/src/message.rs) — Duas novas variantes de mensagem:

MensagemProposito
SearchCliente envia string de consulta, filtros e numero da pagina
SearchResultNo institucional responde com resultados e contagem total

A funcao encode() foi trocada de serializacao MessagePack posicional para nomeada (rmp_serde::to_vec_named) para lidar corretamente com campos opcionais de SearchFilters — a codificacao posicional quebra quando skip_serializing_if omite campos.

Metricas Prometheus (tesd/src/metrics.rs) — Oito metricas especificas institucionais:

Testes de integracao — Dois testes em tesseras-replication/tests/integration.rs:

322 testes passam em todo o workspace. Clippy limpo com -D warnings.

Decisoes de arquitetura

O que vem a seguir

O onboarding institucional fecha uma lacuna critica no modelo de preservacao do Tesseras. Nos individuais fornecem resiliencia de base — milhares de dispositivos ao redor do globo, cada um armazenando alguns fragmentos. Nos institucionais fornecem ancoragem — organizacoes com infraestrutura profissional, armazenamento redundante e horizontes operacionais de multiplas decadas. Juntos, formam uma rede onde memorias podem sobreviver tanto a dispositivos individuais quanto a instituicoes individuais.