Questões Abertas — Gaps e Ambiguidades
5 gaps de orçamento + 21 edge cases (EC-01 → EC-21) + 3 tensões abertas.
TL;DR · Defaults MVP + decisão necessária
Seção intitulada “TL;DR · Defaults MVP + decisão necessária”Postura de time sênior: cada gap tem default proposto pra MVP + custo de reverter. Cliente Master Espresso só precisa decidir os 5 itens marcados Sim na última coluna — os outros 16 procedem com o default a menos que ele vete. Defaults são recomendações de engenharia pra manter momentum, não decisões finais de produto.
| ID | Default recomendado pra MVP | Reversibilidade | Precisa Cliente Master Espresso? |
|---|---|---|---|
| EC-01 / RN-01 | 39 municípios RMSP/IBGE (ASSUMPTION-03) | média — lista hardcoded, mas excluir município = cliente bloqueado | Sim |
| EC-02 ✅ | Pagar.me — Pix Automático + cartão recorrente (ratificado por Gabriel 2026-06-09, Lane X) | alta — adapter PaymentGateway ainda disponível se precisar pivotar pra MercadoPago em S2 | Não (decidido) |
| EC-03 | Tela de sucesso = sub-tela de T7 (não T8) | alta — só routing | Não |
| EC-04 | Modelar comodato + assinatura adicional (escolha runtime) | média — schema permite ambos | Não |
| EC-05 | Cliente cancela via Self-service Ato 5 (já modelado) | alta | Não |
| EC-06 | Reset senha via magic link (Supabase Auth default) | alta | Não |
| EC-07 | Mobile-first via Tailwind breakpoints desde T1 | alta | Não |
| EC-08 | Extrair componente SelecaoCesta reutilizável T1/T2/T3 ↔ T10 | alta | Não |
| EC-09 | Skip pra MVP — orçamento parte de contrato Gabriel↔Cliente Master Espresso, não do código | baixa — afeta escopo + cronograma | Sim |
| EC-10 | Guard duplo idempotente: status==Ativa AND NOT cobranca_em_andamento | média — toca money, exige teste | Não |
| EC-11 | Sem CMS pra MVP — seed catálogo em JSON tipado no repo (ou edição direta tabela Supabase). Redeploy pra mudar preço. | alta — admin UI vira sprint futuro sem tocar storefront | Não |
| EC-12 | Correios PAC + Melhor Envio API. Confirmação entrega = upload manual CSV pra MVP (webhook depois) | alta — adapter LogisticsProvider | Não |
| EC-13 | Cheque duplo sessão + BD (ASSUMPTION-02) → roteamento T3/T6/T7 por persona | alta | Não |
| EC-14 | Ex-cliente: reusa CEP do cadastro + cria nova assinatura (não reativa antiga). Transições Cancelada→Ativa via novo registro. | alta | Não |
| EC-15 / RN-07 | Proposto: 12 meses fidelidade, multa proporcional ao restante (ASSUMPTION-04) | baixa — termo contratual, peso legal | Sim |
| EC-16 | Supabase Auth: magic link + e-mail único; sessão expira → carrinho em localStorage volátil | média | Não |
| EC-17 | Resend e-mail only pra MVP, SMS deferred. Interface Notifier permite adicionar canal depois. | alta — adapter swap | Não |
| EC-18 | Enforcer só RN-11 (≥1 café); pular max-por-SKU até evidência de abuso | alta | Não |
| EC-19 | Reusa estado Suspensa com flag origem ∈ inadimplencia,cliente — sem estado Pausada separado | alta — menos transições pra testar | Não |
| EC-20 | PedidoMontado = job batch dia 10. RastreamentoAtualizado = upload manual CSV pra MVP, webhook Melhor Envio em Fase 3-4. | alta | Não |
| EC-21 | Wire ops-stack (Sentry + Better Stack uptime + PostHog) na Fase 3-4 — não bloqueia desenvolvimento | alta — onboarding via skill scaffold | Não |
| ASSUMPTION-05 | Cobrança dia 10 / corte D-3 (mensal fixo) | média — config change, mas toca money de cada cliente | Sim |
Total · 4 decisões realmente bloqueiam Cliente Master Espresso: EC-01 lista Grande SP · EC-09 orçamento · EC-15 fidelidade comodato · ASSUMPTION-05 dia de cobrança. EC-02 gateway saiu da lista — Pagar.me ratificado por Gabriel em 2026-06-09 (Lane X research). As outras 16 já têm caminho técnico e procedem por default.
Edge Cases — Analyst checklist (Axis 6)
Seção intitulada “Edge Cases — Analyst checklist (Axis 6)”| ID | Descrição | Status |
|---|---|---|
| EC-01 | Definição de “Grande SP” não especificada — ViaCEP retorna município/estado, não pertencimento à região metropolitana | gap_pendente |
| EC-02 ✅ | Gateway de pagamento — Pagar.me ratificado 2026-06-09 (Pix Automático + cartão recorrente na mesma API, score 8/10 agentic). Stripe descartado (não suporta Pix Automático recorrente em BR). Asaas demoted. Aguarda Cliente abrir conta produção Pagar.me antes de S3 | decidido |
| EC-03 | ”Tela de sucesso” é Tela 7 ou Tela 8? — contagem de telas (13 vs 14) depende dessa decisão | gap_pendente |
| EC-04 | Comodato vs assinatura de máquina — diferenças contratuais, financeiras e regras de devolução não detalhadas | gap_pendente |
| EC-05 | Fluxo de cancelamento pelo cliente ausente — Painel Admin tem “Cancelar” mas não há auto-cancelamento no Painel Cliente | gap_pendente |
| EC-06 | Fluxo de reset de senha ausente — Tela 6 menciona login mas não recuperação de senha | gap_pendente |
| EC-07 | Responsividade tratada só na Fase 4 — mobile não é requisito das telas individuais | gap_pendente |
| EC-08 | ”Tela Alteração de Recorrência” reutiliza Telas 1-2-3 — deve ser reuso de componente/serviço, não duplicação | gap_pendente |
| EC-09 | Orçamento completamente ausente do BRIEF — ver seção abaixo | gap_pendente |
| EC-10 | ”Forçar Cobrança” sem rate-limit ou auditoria — ação de alto risco sem restrições documentadas | gap_pendente |
| EC-11 | Backstage de catálogo ausente — sem comando que cadastra/edita produtos, preços, fotos ou categorias. EventStorming trata catálogo como dado dado-de-graça. Bloqueia decisão CMS sim/não. | gap_pendente |
| EC-12 | Logística — provider de entrega + critério de falha consecutiva (suspender assinatura após N entregas falhadas?) não modelado | gap_pendente |
| EC-13 | Critério “novo cliente” ambíguo — 3 personas distintas (Visitante anônimo / Ex-cliente / Cliente ativo logado) com roteamentos diferentes em T3, T6, T7. Visitante anônimo segue fluxo completo; Ex-cliente pula T3; Cliente ativo vai direto a T10. Regra de guarda deve checar sessão + estado da assinatura | gap_pendente |
| EC-14 | Fluxo de renovação para ex-cliente não modelado — pula T3 (seleção de máquina) e reaproveita CEP do cadastro? Reativa assinatura existente ou cria nova? Máquina de estados precisa contemplar transição Cancelada → Ativa e Suspensa → Ativa como paths separados ou unificados | gap_pendente |
| EC-15 | Comodato — domínio inteiro ausente do modelo. Eventos MáquinaDespachadaEmComodato, MáquinaDevolvida, MáquinaComDefeito, SubstituiçãoSolicitada, PrazoDevoluçãoExpirado, MultaComodatoAplicada não modelados. Prazo mínimo, multa, seguro, logística reversa indefinidos (RN-07/08/09/10) | gap_pendente |
| EC-16 | Autenticação / sessão — fluxos LoginRealizado, SenhaRedefinida, SessãoExpirada, ContaDuplicadaDetectada ausentes. Sessão expira no meio do onboarding = carrinho perdido? Mesmo e-mail tenta criar conta = bloqueia ou loga? Reset via magic link (Supabase Auth) ou link clássico? | gap_pendente |
| EC-17 | Comunicação ao cliente — zero eventos de notificação modelados. 7 triggers mínimos identificados (boas-vindas, recibo+NF-e, pagamento recusado, despacho+rastreio, falha entrega, suspensão SLA, cesta alterada). Provider de e-mail (Resend / Postmark / SendGrid / SES) TBD. SMS opcional? | gap_pendente |
| EC-18 | Limites de cesta — mínimo de pedido (≥1 café via RN-11)? Máximo por SKU (evita estoque drenado)? Cesta vazia bloqueia checkout? | gap_pendente |
| EC-19 | Self-service do cliente — Painel Cliente sem Cancelar / Pausar voluntária / Atualizar cartão / Atualizar endereço. CDC art. 49 exige direito de arrependimento 7d. Pausa voluntária vs Suspensa por inadimplência: mesmo estado ou separado? | gap_pendente |
| EC-20 | Pedido físico modelado pela metade — PedidoMontado, PedidoCancelado pré-despacho, RastreamentoAtualizado (webhook Melhor Envio), EntregaReenviada (pós-falha) ausentes. Cancelamento no dia do ciclo afeta caixa já em montagem? | gap_pendente |
| EC-21 | Observabilidade operacional — health check do job de cobrança, reconciliação para webhook perdido, dashboard de assinaturas por status. Solução: wire via skill ops-stack (Sentry + Better Stack + PostHog) — escopo de Fase 3-4 | gap_pendente |
Gaps de Orçamento — Axis 4
Seção intitulada “Gaps de Orçamento — Axis 4”O BRIEF (proposta 19245) não contém nenhuma linha de orçamento. Nenhum valor, breakdown de fase, hourly rate ou limite de budget.
| Gap | Categoria | Status |
|---|---|---|
| GAP-01: Valor total do projeto | desenvolvimento | gap_pendente |
| GAP-02: Breakdown de custo por fase (Fases 1-4) | desenvolvimento | gap_pendente |
| GAP-03: Custo de infra/hosting (Vercel/Supabase free vs paid tiers) | infraestrutura | gap_pendente |
| GAP-04: Custo Pagar.me em volume (Pix Automático ~0,99% + cartão recorrente 2,99%+R$0,29) — modelar fee por mix Pix/cartão | servico_terceiro | gap_pendente |
| GAP-05: Modelo de cobrança ao cliente (fixo / hora / milestone) | desenvolvimento | gap_pendente |
Ambiguidades por Entidade (Analyst v0.1)
Seção intitulada “Ambiguidades por Entidade (Analyst v0.1)”telas (4 ambiguidades)
Seção intitulada “telas (4 ambiguidades)”- T04 — “novo cliente”: “visitante deslogado” inclui clientes existentes não autenticados. Precisa de cheque de sessão + cheque de BD simultâneo.
- T10 — reutilização de T01/T02/T03: UI, rota ou lógica de negócio? Impacto em routing e state management.
- T07 — tela de sucesso: sub-tela de T07 ou tela independente T08? Afeta contagem e navegação.
- T13 — logs de alteração de endereço: quem gera? Sistema ou manual? Não modelado.
stack_components (3 ambiguidades)
Seção intitulada “stack_components (3 ambiguidades)”- Gateway de pagamento ✅ ratificado: Pagar.me (Pix Automático + cartão recorrente) decidido por Gabriel em 2026-06-09 após Lane X research — score 8/10 agentic, sandbox instantâneo, ambos métodos must-have na mesma API. Stripe descartado (não suporta Pix Automático recorrente em BR). Asaas demoted (DX agentic inferior). MercadoPago fallback caso sandbox Pagar.me falhe.
- Vercel v0: dependência de produção ou só dev tool? Sem impacto em runtime, precisa de confirmação.
- Versões não especificadas: Next.js App Router vs Pages Router, Tailwind v3 vs v4.
regras_negocio (5 ambiguidades)
Seção intitulada “regras_negocio (5 ambiguidades)”- “Novo cliente” (T04): 3 personas distintas com roteamentos diferentes. Visitante anônimo (sem conta) — entra no fluxo completo T1→T7, inclui seleção de máquina (T3). Ex-cliente (conta existente, assinatura
CanceladaouSuspensa) — pula T3 (já tem comodato/compra), mas passa por T6 CEP e T7 pagamento para reativar. Cliente ativo logado (assinaturaAtiva) — não entra no fluxo T1–T5 de conversão; encaminhado diretamente para T10 (alterar cesta). Regra de guarda em T1 deve checar sessão + estado da assinatura simultaneamente. - Base Grande SP (T06): ViaCEP não tem este campo. Precisa de lista de municípios ou faixas de CEP.
- “Próximo mês” (T10): data de corte do ciclo não definida.
- “Forçar Cobrança” (T12): pré-condição ausente. Disponível para status “Suspensa” também?
- Suspender vs Cancelar (T12): diferença operacional não definida. Pausa temporária vs irreversível?
catalogo (5 ambiguidades)
Seção intitulada “catalogo (5 ambiguidades)”- Cadastro de produto (EC-11): quem cadastra novo café, bebida, complemento ou máquina? CMS admin com UI dedicada, seed estático no deploy, ou planilha/CSV integrado? Define se Painel Admin cresce em N telas ou fica em 3.
- Frequência de alteração de preço: mensal, trimestral ou ad-hoc? Mensal/ad-hoc exige UI de edição em produção. Trimestral aceita deploy manual.
- Estoque e disponibilidade: trackeado por SKU? Quando esgota → some do catálogo automaticamente ou continua exibido com badge “indisponível”? Sem resposta = sem regra de exibição.
- Foto e descrição de produto: upload via admin (Supabase Storage / S3) ou apenas URL externa cadastrada manualmente? Impacto direto em storage do Supabase e custo.
- Categorias dinâmicas vs fixas: as 3 categorias T1/T2/T3 (cafés, bebidas quentes, complementos) são fixas no código ou admin pode criar/renomear novas categorias e mover produtos entre elas? Hardcoded simplifica; dinâmico exige uma quarta tela admin.
logistica (3 ambiguidades)
Seção intitulada “logistica (3 ambiguidades)”- Provider de entrega (EC-12): nenhum provider modelado. Webhook automático, app do entregador ou import manual de planilha? Cada opção tem SLA e custo distintos.
- Confirmação de entrega: quem dispara “Entrega confirmada”? O provider via API, o entregador via app, ou operação interna após X dias sem contestação?
- Política de falhas consecutivas: quantas falhas de entrega acionam suspensão? Regra não definida. Precede ou sucede a política de pagamento falhado?
Tensões Abertas no Sub-círculo master-espresso
Seção intitulada “Tensões Abertas no Sub-círculo master-espresso”| ID | Tipo | Status | Resumo |
|---|---|---|---|
| #101 | render_starlight_v1 | assigned | A4 Renderer: scaffold apps/master-espresso/site/ (Astro 5 + Starlight 0.37) |
| #100 | validate_builder_output | in_progress | A3 Reviewer round 1: valida domain.ts contra reviewer-checklist.md |
| #1 | orcamento_to_base_estruturada | surfaced | Master Espresso BRIEF.md → base estruturada (multi-render) |
As tensões acima são identificadores do pipeline interno de geração (workflow de agentes que produz este site) — não fazem parte do escopo Master Espresso. Mantidas para auditoria.
✅ Atualização 2026-06-09: “Decidir gateway” foi ratificado por Gabriel — Pagar.me (Pix Automático + cartão recorrente) é o gateway oficial. Lane X research feita. Cliente Master Espresso só precisa abrir conta produção Pagar.me antes de S3.
Próximos passos para fechar os gaps
Seção intitulada “Próximos passos para fechar os gaps”- [FEITO 2026-06-09] ✅ Gateway decidido — Pagar.me (Pix Automático + cartão recorrente). Cliente Master Espresso precisa abrir conta produção e nos liberar credenciais antes de S3.
- [IMEDIATO] Definir base de municípios da Grande SP — desbloqueia RN-01 (mais citada no BRIEF).
- [ANTES DA FASE 1] Confirmar se tela de sucesso é sub-tela de T07 ou tela T08 — afeta contagem e routing.
- [ANTES DA FASE 2] Definir data de corte do ciclo mensal — desbloqueia RN-05.
- [ANTES DA FASE 3] Modelar máquina de estados de assinatura (Ativa/Suspensa/Cancelada/AguardandoPagamento).