stack-RFC-016 — Koder Governance Plane (norte)
Document format reference: meta/docs/stack/policies/document-format.kmd
Status: ACCEPTED 2026-06-11 (owner) — como NORTE. Esta RFC não autoriza construir o produto; ela fixa a direção e o requisito de extraibilidade. Proveniência: visão formulada pelo owner em mensagem de voz (2026-06-11 18:13, thread t24 do koderrootbot — "abstrair mais um nível: contas e orgs criando as próprias regras, até regras para criação de regras"), veredito t24 ("formalizar como norte, não construir agora"), ratificada via
/k-arch→/k-go(variante c) na sessão do notebook.
1. A visão, nomeada
Governance-as-Code para trabalho conduzido por IA — um governance plane: o tenant declara regras (e meta-regras), os agentes são conduzidos proativamente a cumpri-las (injeção just-in-time, não só bloqueio reativo), e o gate determinístico dá o veredito. O diferencial sobre a categoria existente (OPA/Rego, "AI guardrails"): a dupla condução + camada constitucional (regras sobre quem/como autora regras), que nenhum dos dois lados oferece junto.
As três camadas já têm protótipo rodando dentro da Stack — este produto é a extração de um padrão que já nos governa (Meta First, princípio #1):
| Camada do produto | Protótipo interno hoje |
|---|---|
| Constitucional (meta-regras) | RFC-003: component-policy TIGHTEN/ADD, nunca LOOSEN |
| Tenancy/isolamento | multi-tenant-by-default.kmd + D5 |
| Motor de regras | koder-spec-audit → Kanon (RFC-015) |
| Condução | broadcast-alerts + hook JIT (RFC-014) |
2. Por que norte e não produto (timing)
Regra-dos-3 (stack-principles §1, resolução do conflito Meta-First×YAGNI): hoje há 1 consumidor real (a própria Koder). Crescer/Vivver são os consumidores 2 e 3 — por isso a fase 2 vem antes de qualquer externalização. Construir tenancy de produto agora seria abstração prematura; não fixar a extraibilidade agora seria a decisão barata-hoje-cara-depois que a D9 veta. O norte custa este documento; o rewrite evitado custaria meses.
3. Requisitos normativos (valem JÁ, para todo incremento interno)
- R1 (extraível por construção). Toda peça nova da máquina de governança
(registry, avaliador, hook, política de gates) é construída sem dependência hard de paths/nomes Koder no motor — conteúdo Koder entra como dado.
- R2 (o seam é a linguagem). A fronteira motor↔conteúdo é exatamente a
fronteira do Kanon (RFC-015): o motor avalia Kanon; o que é Koder-específico vive nas regras, nunca no avaliador. Mudanças que borrem esse seam exigem revisão desta RFC.
- R3 (constitucional generalizável). Toda regra de hierarquia nova segue o
shape de 3 tiers (plataforma define o teto → org autora dentro dele → time/projeto aperta, nunca afrouxa) — o invariante da RFC-003 é o caso 1.
4. Inventário completo do levantamento de 2026-06-11 (memória durável)
Para que nada do arco OpenSpec→Governance Plane se perca (pedido explícito do owner por voz, thread t25), o mapa integral: A1→esta família de RFCs · A2A3A4 → RFC-014 fases 1–3 (tickets abertos) · B1+C1 → RFC-015 (fundidos) · C2–C5 → RFC-015 fases 2–5 (tickets abertos) · D2 → ticket aberto (proveniência because:) · D1D3D4 → deferidos, listados na RFC-014 §5 · E1 → esta RFC (fase 0, done) · E2/E3 → fases 2–3 desta RFC. Relatório-fonte: history repo do koderrootbot (dm/6397822540, 2026-06-11) + transcript t25.