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
| Tipo | Descrição | Exemplo |
|---|---|---|
| Booleana | Liga/desliga um caminho de código. | ENABLE_ZK_BATCH_VERIFY = true |
| Gradual | Percentual de nós afetados (0–100%). | NEW_DHT_ROUTING_ROLLOUT = 15% |
| Targeting | Afeta nós que atendem a predicados. | ENABLE_GPU_OFFLOAD para nós com cuda_capability >= 7.0 |
| Kill Switch | Desativa 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:
- Lê o valor do estado causal (CRDT) propagado pelo gossip.
- Verifica se o
target_predicatese aplica a si mesmo (ex: capacidade de GPU, região geográfica, versão de software). - Se gradual, calcula se seu
NodeIdhash cai no percentil ativo:#![allow(unused)] fn main() { let active = (blake3::hash(node_id).as_bytes()[0] as u16) < (rollout_percentage * 255 / 100); } - 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) reportapain > thresholdapó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
FeatureFlagRegistryque 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="..."}epaebiru_feature_flag_kill_switch_invoked_total.
5. Riscos e Mitigações
| Risco | Mitigaçã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.