Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

RFC 053 — Feature Flags On-Chain como Extensão do Sistema de Plasmídeos

Status: DRAFT Pilar: S3 (Economia) / S5 (Plasmídeos) Dependências: RFC 013 (Data Mesh e DAO), RFC 045 (Plasmídeos e DSL), RFC 049 (Macrophage VM)

1. Resumo

Este RFC propõe a integração de feature flags ao sistema de governança DAO do PAEBIRU, utilizando os mecanismos já existentes de plasmídeos WASM, estado causal e votação por quórum. Uma feature flag (ex: “ativar novo algoritmo de roteamento DHT”, “habilitar verificação ZK batch”) é representada como um plasmídeo de governança especial que, uma vez ratificado, altera o comportamento de todos os nós da malha de forma gradual e reversível.

2. Motivação

O desenvolvimento contínuo do PAEBIRU exige mecanismos de rollout seguro:

  • Canary Distribuído: Novos recursos devem ser ativados primeiro em subconjuntos da malha antes de rollout total.
  • Rollback Rápido: Se uma feature introduzir regressão (aumento de latência, falhas de consenso), a desativação deve ser tão rápida quanto a ativação.
  • Democracia Técnica: Decisões de ativação de features críticas devem passar pelo processo de governança DAO (RFC 013), não por deploy centralizado.

Os plasmídeos já fornecem a infraestrutura de execução sandboxed (MacrophageVM, RFC 049) e distribuição (estigmergia/gossip). Este RFC estende essa infraestrutura para flags de comportamento.

3. Especificação Técnica

3.1. Tipos de Feature Flag

TipoDescriçãoExemplo
BooleanaLiga/desliga um caminho de código.ENABLE_ZK_BATCH_VERIFY = true
GradualPercentual de nós afetados (0–100%).NEW_DHT_ROUTING_ROLLOUT = 15%
TargetingAfeta nós que atendem a predicados.ENABLE_GPU_OFFLOAD para nós com cuda_capability >= 7.0
Kill SwitchDesativa imediatamente uma feature em toda a malha.KILL_SWITCH_FROST_ORACLE_V2 = true

3.2. Ciclo de Vida de uma Feature Flag

graph LR
    A[Proposta de Flag] -->|Plasmídeo TOML| B[MacrophageVM Quarantine]
    B -->|Validado| C[Submissão DAO]
    C -->|Votação Quórum| D[Estado Causal CRDT]
    D -->|Gossip| E[Nós da Malha]
    E -->|Avaliação Local| F{Predicado satisfeito?}
    F -->|Sim| G[Feature Ativada]
    F -->|Não| H[Feature Inativa]
    G -->|Monitoramento| I[Algedonic Feedback]
    I -->|Anomalia| J[Kill Switch Automático]

3.3. Formato do Plasmídeo de Governança

Um plasmídeo de feature flag é um contrato DSL TOML (RFC 045) com seção especial [governance.flag]:

[contract]
name = "feature_flag_zk_batch_v2"
version = "1.0.0"
author = "dao:paebiru-core"

[governance]
type = "feature_flag"
min_quorum = 0.67          # 67% de aprovação necessária
voting_period_epochs = 144 # ~24h assumindo 10 min/epoch

[governance.flag]
key = "ENABLE_ZK_BATCH_VERIFY"
kind = "boolean"
default = false
target_predicate = "all"   # ou "gpu_capable", "region:sa-east-1", etc.
rollout_percentage = 100   # 100% após aprovação; pode ser gradual

[governance.flag.kill_switch]
enabled = true
auto_trigger = "algedonic_pain > 0.85"

3.4. Avaliação Local

Cada nó avalia o estado da feature flag independentemente:

  1. Lê o valor do estado causal (CRDT) propagado pelo gossip.
  2. Verifica se o target_predicate se aplica a si mesmo (ex: capacidade de GPU, região geográfica, versão de software).
  3. Se gradual, calcula se seu NodeId hash cai no percentil ativo:
    #![allow(unused)]
    fn main() {
    let active = (blake3::hash(node_id).as_bytes()[0] as u16) < (rollout_percentage * 255 / 100);
    }
  4. Atualiza o comportamento do runtime sem reinicialização (hot-reload via ponteiros de função no Kernel).

3.5. Kill Switch e Feedback Algedônico

Se auto_trigger estiver configurado, o nó monitora sua própria saúde:

  • Se o AlgedonicSensor (Biology) reporta pain > threshold após ativação da feature, o nó pode votar automaticamente em um kill switch de emergência via gossip.
  • Se > 50% dos nós ativos reportam dor dentro de uma janela de tempo, a feature é desativada globalmente sem nova votação DAO (mecanismo de circuit breaker distribuído).

4. Impacto Arquitetural

  • Plasmids: Extensão do parser TOML para reconhecer a seção [governance.flag].
  • Economy/DAO: O sistema de propostas passa a aceitar plasmídeos de governança como primeiro-class citizens.
  • Kernel: Adição de um FeatureFlagRegistry que consome o estado causal e expõe APIs para crates verificarem flags ativas.
  • Biology: Integração do algedonic feedback com o mecanismo de kill switch.
  • Observabilidade: Métricas paebiru_feature_flag_active{key="..."} e paebiru_feature_flag_kill_switch_invoked_total.

5. Riscos e Mitigações

RiscoMitigação
Flag desativada em malha particionada → inconsistência de comportamento.Flags afetam apenas comportamento local; consenso crítico (Barter, ZK) não pode ser modificado por flag booleana sem hard-fork.
Predicado de targeting complexo → overhead de avaliação.Predicados são compilados para WASM leve e executados uma vez por epoch.
Spam de propostas de flag.Cada proposta requer depósito de crédito mútuo (RFC 017); rejeitadas custam ao proponente.

6. Referências

  • RFC 013 — Data Mesh, DAO e Oráculos.
  • RFC 045 — Plasmídeos e DSL (TOML).
  • RFC 049 — Macrophage VM.
  • RFC 017 — Crédito de Soma-Zero.