FoundLab RFC Format — Template Canônico
RFC honesto > RFC bonito. Documento que esconde gap morre na primeira pergunta de auditor. RFC-POS-001 e AUDIT-2026-0409 são as referências de qualidade — qualquer RFC novo precisa ter o mesmo nível de exposição honesta de trade-offs.
Estrutura obrigatória
Toda RFC FoundLab segue 9 seções fixas. Pular seção = RFC rejeitada em review.
# RFC-<TIPO>-<NNN>: <Título descritivo>
**Status**: Draft | Under Review | Approved | Implemented | Deprecated
**Author(s)**: <Nome> (<role>)
**Reviewers**: <Lista — incluir validadores externos quando aplicável: Glauco Sampaio, Lísias Lauretti, etc.>
**Created**: YYYY-MM-DD
**Last updated**: YYYY-MM-DD
**Target audience**: <Engineering | Compliance | Board | Bradesco | BTG | GCP>
---
## 1. Context
<2-4 parágrafos. O que existe hoje, qual é o problema operacional ou regulatório, qual é a janela de decisão. NUNCA começar com "queremos implementar X" — começar com PROBLEMA, não solução.>
## 2. Problem Statement
<1 parágrafo declarativo. Forma: "O sistema atualmente <comportamento>. Isso causa <impacto>. Sem mudança, <consequência>."
Exemplo bom:
"O REX Guard sela todas as decisões com `policy_snapshot_hash` hardcoded. Auditoria forense não consegue distinguir qual policy estava ativa em decisão histórica. Sem mudança, defesa regulatória contra contestação de decisão é impossível e BCB 538/2025 § X.Y não é atendido."
Exemplo ruim:
"Precisamos melhorar o audit trail."
>
## 3. Goals & Non-Goals
### Goals
- <Lista de 3-7 itens, mensuráveis>
### Non-Goals
- <Lista do que esta RFC NÃO se propõe a resolver. Crítico para escopo.>
## 4. Proposal
<Solução técnica. Se múltiplas opções foram consideradas, esta é a opção ESCOLHIDA. As alternativas vão na seção 5.
Subseções típicas:
- 4.1. Architecture diagram (mermaid ou referência a /docs/diagrams/)
- 4.2. Data model
- 4.3. API contract
- 4.4. Failure modes & recovery>
## 5. Alternatives Considered
<NUNCA pular esta seção. Se não há alternativas, isso é red flag.
Para cada alternativa:
- Descrição
- Pros
- Cons
- Por que NÃO foi escolhida (justificativa explícita)>
## 6. Trade-offs & Gaps
<SEÇÃO MAIS IMPORTANTE — RFC honesto.
Listar EXPLICITAMENTE:
- O que esta proposta NÃO resolve
- Que dívida técnica é introduzida
- Que assunções estão sendo feitas (e o que quebra se forem falsas)
- Custo operacional (FinOps)
- Latência adicional (com números)
- Complexidade adicional para equipe operar
Se você está com vontade de pular esta seção: pare. O auditor da Bradesco vai perguntar isso. Melhor estar escrito.>
## 7. Regulatory Mapping
<Mandatório para qualquer RFC com superfície de compliance. Tabela:
| Requirement | Source | How this RFC addresses it | Gap |
|---|---|---|---|
| <descrição> | BCB 538/2025 § X | <implementação> | <none|partial|TBD> |
| <descrição> | LGPD Art. Y | <implementação> | <none|partial|TBD> |
| <descrição> | BCB Res. 400/2024 | <implementação> | <none|partial|TBD> |
Marcar gap honestamente. "Partial" e "TBD" são aceitáveis se justificados — esconder não é.>
## 8. Validation Plan
<Como vamos provar que a RFC funciona em produção.
- Test strategy (unit, integration, E2E, chaos)
- Acceptance criteria (mensuráveis — números, não adjetivos)
- Rollback plan (specific commands/procedures)
- Observability (que métrica/log/dashboard valida sucesso)
- External validators (quem precisa assinar — Glauco? Auditor externo?)>
## 9. Decision & Next Steps
**Decision**: <Approved | Rejected | Approved with caveats>
**Decision date**: YYYY-MM-DD
**Decided by**: <Nome(s)>
### Immediate next steps
1. <Ação específica — owner — deadline>
2. <Ação específica — owner — deadline>
3. <Ação específica — owner — deadline>
### Linked artifacts
- Implementation PR: <link>
- Related RFCs: <links>
- External validations: <links/anexos>
Convenção de numeração
RFC-POS-NNN — Positioning / strategic
RFC-F2F-NNN — Founder-to-founder / commercial
RFC-ENG-NNN — Engineering / technical
RFC-SEC-NNN — Security / threat modeling
RFC-OPS-NNN — Operations / infrastructure
RFC-COMP-NNN — Compliance / regulatory
NNN é sequencial dentro do tipo, zero-padded (001, 002, ..., 099, 100).
Audiência → tom
- Engineering interno: técnico denso, gírias OK, sarcasmo OK, palavrões OK em contexto
- Bradesco / BTG / Banco: institucional, sem gírias, sem startup-ese, terminologia regulatória precisa
- Board: estratégico, com números (LTV, CAC, runway), sem profundidade técnica desnecessária
- GCP / Marketplace: técnico mas formal, foco em arquitetura e compliance, mapeamento WAF (Well-Architected Framework)
NUNCA usar o mesmo RFC para audiências diferentes sem revisão. Mistura BTG metrics em doc Bradesco = vazamento estratégico imediato.
Output Contract — RFC pronta para review
Antes de marcar status como "Under Review":
Anti-patterns — rejeição automática
RFCs com qualquer destes itens voltam para draft sem review aprofundado:
- "Best practice" sem justificativa: "Vamos usar X porque é best practice" — qual é o trade-off de NÃO usar? Por que X e não Y? Argumento de autoridade não é argumento.
- Métricas vagas: "Sistema mais rápido", "melhor segurança" — números ou nada.
- Gap section vazia: Toda RFC tem trade-off. Se você não encontrou, você não procurou.
- Compliance handwaving: "Atende BCB 538" sem mapear seção e implementação específica.
- Mistura de competidores: BTG e Bradesco no mesmo doc = vazamento.
- Linguagem startup em RFC bancário: "Vamos quebrar isso", "ship fast", "pivot" — fora.
- "Phase 2 fixes that": Se Phase 2 é onde o gap real é resolvido, Phase 1 não pode ser marketed como solução.
Boundaries (CRITICAL)
- NUNCA publicar RFC com seção 6 (Trade-offs & Gaps) vazia ou superficial
- NUNCA misturar dados de cliente A em RFC destinada a cliente B
- NUNCA marcar status "Approved" sem assinatura registrada (data + nome)
- NUNCA alterar RFC após "Approved" sem incrementar versão e justificar mudança
- SEMPRE linkar implementation PR quando status muda para "Implemented"
- SEMPRE preferir RFC com gaps explícitos sobre RFC com gaps escondidos
- SEMPRE revisar tom contra audiência antes de enviar externamente
1---2name: foundlab-rfc-format3description: Use SEMPRE que o usuário pedir para criar, revisar ou estruturar um RFC FoundLab, documento técnico institucional, decisão arquitetural, ou qualquer artefato no formato RFC-POS-001/RFC-F2F-XXX. Triggers literais: "criar RFC", "novo RFC", "formato RFC FoundLab", "RFC honesto", "RFC-POS", "RFC-F2F", "decision document", "ADR", "documento técnico para banco". NÃO use para README, comentários de código, ou docs informais — esta skill é exclusiva para RFCs institucionais que vão para Bradesco, BTG, GCP Marketplace ou board.4---56# FoundLab RFC Format — Template Canônico78RFC honesto > RFC bonito. Documento que esconde gap morre na primeira pergunta de auditor. RFC-POS-001 e AUDIT-2026-0409 são as referências de qualidade — qualquer RFC novo precisa ter o mesmo nível de exposição honesta de trade-offs.910## Estrutura obrigatória1112Toda RFC FoundLab segue 9 seções fixas. Pular seção = RFC rejeitada em review.1314```markdown15# RFC-<TIPO>-<NNN>: <Título descritivo>1617**Status**: Draft | Under Review | Approved | Implemented | Deprecated18**Author(s)**: <Nome> (<role>)19**Reviewers**: <Lista — incluir validadores externos quando aplicável: Glauco Sampaio, Lísias Lauretti, etc.>20**Created**: YYYY-MM-DD21**Last updated**: YYYY-MM-DD22**Target audience**: <Engineering | Compliance | Board | Bradesco | BTG | GCP>2324---2526## 1. Context2728<2-4 parágrafos. O que existe hoje, qual é o problema operacional ou regulatório, qual é a janela de decisão. NUNCA começar com "queremos implementar X" — começar com PROBLEMA, não solução.>2930## 2. Problem Statement3132<1 parágrafo declarativo. Forma: "O sistema atualmente <comportamento>. Isso causa <impacto>. Sem mudança, <consequência>."3334Exemplo bom:35"O REX Guard sela todas as decisões com `policy_snapshot_hash` hardcoded. Auditoria forense não consegue distinguir qual policy estava ativa em decisão histórica. Sem mudança, defesa regulatória contra contestação de decisão é impossível e BCB 538/2025 § X.Y não é atendido."3637Exemplo ruim:38"Precisamos melhorar o audit trail."39>4041## 3. Goals & Non-Goals4243### Goals44- <Lista de 3-7 itens, mensuráveis>4546### Non-Goals47- <Lista do que esta RFC NÃO se propõe a resolver. Crítico para escopo.>4849## 4. Proposal5051<Solução técnica. Se múltiplas opções foram consideradas, esta é a opção ESCOLHIDA. As alternativas vão na seção 5.5253Subseções típicas:54- 4.1. Architecture diagram (mermaid ou referência a /docs/diagrams/)55- 4.2. Data model56- 4.3. API contract57- 4.4. Failure modes & recovery>5859## 5. Alternatives Considered6061<NUNCA pular esta seção. Se não há alternativas, isso é red flag.6263Para cada alternativa:64- Descrição65- Pros66- Cons67- Por que NÃO foi escolhida (justificativa explícita)>6869## 6. Trade-offs & Gaps7071<SEÇÃO MAIS IMPORTANTE — RFC honesto.7273Listar EXPLICITAMENTE:74- O que esta proposta NÃO resolve75- Que dívida técnica é introduzida76- Que assunções estão sendo feitas (e o que quebra se forem falsas)77- Custo operacional (FinOps)78- Latência adicional (com números)79- Complexidade adicional para equipe operar8081Se você está com vontade de pular esta seção: pare. O auditor da Bradesco vai perguntar isso. Melhor estar escrito.>8283## 7. Regulatory Mapping8485<Mandatório para qualquer RFC com superfície de compliance. Tabela:8687| Requirement | Source | How this RFC addresses it | Gap |88|---|---|---|---|89| <descrição> | BCB 538/2025 § X | <implementação> | <none|partial|TBD> |90| <descrição> | LGPD Art. Y | <implementação> | <none|partial|TBD> |91| <descrição> | BCB Res. 400/2024 | <implementação> | <none|partial|TBD> |9293Marcar gap honestamente. "Partial" e "TBD" são aceitáveis se justificados — esconder não é.>9495## 8. Validation Plan9697<Como vamos provar que a RFC funciona em produção.9899- Test strategy (unit, integration, E2E, chaos)100- Acceptance criteria (mensuráveis — números, não adjetivos)101- Rollback plan (specific commands/procedures)102- Observability (que métrica/log/dashboard valida sucesso)103- External validators (quem precisa assinar — Glauco? Auditor externo?)>104105## 9. Decision & Next Steps106107**Decision**: <Approved | Rejected | Approved with caveats>108**Decision date**: YYYY-MM-DD109**Decided by**: <Nome(s)>110111### Immediate next steps1121. <Ação específica — owner — deadline>1132. <Ação específica — owner — deadline>1143. <Ação específica — owner — deadline>115116### Linked artifacts117- Implementation PR: <link>118- Related RFCs: <links>119- External validations: <links/anexos>120```121122## Convenção de numeração123124- `RFC-POS-NNN` — Positioning / strategic125- `RFC-F2F-NNN` — Founder-to-founder / commercial126- `RFC-ENG-NNN` — Engineering / technical127- `RFC-SEC-NNN` — Security / threat modeling128- `RFC-OPS-NNN` — Operations / infrastructure129- `RFC-COMP-NNN` — Compliance / regulatory130131NNN é sequencial dentro do tipo, zero-padded (001, 002, ..., 099, 100).132133## Audiência → tom134135- **Engineering interno**: técnico denso, gírias OK, sarcasmo OK, palavrões OK em contexto136- **Bradesco / BTG / Banco**: institucional, sem gírias, sem startup-ese, terminologia regulatória precisa137- **Board**: estratégico, com números (LTV, CAC, runway), sem profundidade técnica desnecessária138- **GCP / Marketplace**: técnico mas formal, foco em arquitetura e compliance, mapeamento WAF (Well-Architected Framework)139140**NUNCA** usar o mesmo RFC para audiências diferentes sem revisão. Mistura BTG metrics em doc Bradesco = vazamento estratégico imediato.141142## Output Contract — RFC pronta para review143144Antes de marcar status como "Under Review":145146- [ ] Todas as 9 seções preenchidas (não "TBD" em Context, Problem, Proposal)147- [ ] Pelo menos 2 alternativas consideradas148- [ ] Trade-offs & Gaps com no mínimo 3 itens explícitos149- [ ] Regulatory mapping com no mínimo BCB 538/2025 e LGPD se a RFC toca dado150- [ ] Acceptance criteria com números, não adjetivos151- [ ] Rollback plan com comandos concretos152- [ ] Reviewer externo identificado quando RFC é compliance-sensitive153154## Anti-patterns — rejeição automática155156RFCs com qualquer destes itens voltam para draft sem review aprofundado:1571581. **"Best practice" sem justificativa**: "Vamos usar X porque é best practice" — qual é o trade-off de NÃO usar? Por que X e não Y? Argumento de autoridade não é argumento.1592. **Métricas vagas**: "Sistema mais rápido", "melhor segurança" — números ou nada.1603. **Gap section vazia**: Toda RFC tem trade-off. Se você não encontrou, você não procurou.1614. **Compliance handwaving**: "Atende BCB 538" sem mapear seção e implementação específica.1625. **Mistura de competidores**: BTG e Bradesco no mesmo doc = vazamento.1636. **Linguagem startup em RFC bancário**: "Vamos quebrar isso", "ship fast", "pivot" — fora.1647. **"Phase 2 fixes that"**: Se Phase 2 é onde o gap real é resolvido, Phase 1 não pode ser marketed como solução.165166## Boundaries (CRITICAL)167168- **NUNCA** publicar RFC com seção 6 (Trade-offs & Gaps) vazia ou superficial169- **NUNCA** misturar dados de cliente A em RFC destinada a cliente B170- **NUNCA** marcar status "Approved" sem assinatura registrada (data + nome)171- **NUNCA** alterar RFC após "Approved" sem incrementar versão e justificar mudança172- **SEMPRE** linkar implementation PR quando status muda para "Implemented"173- **SEMPRE** preferir RFC com gaps explícitos sobre RFC com gaps escondidos174- **SEMPRE** revisar tom contra audiência antes de enviar externamente