# 10 — Decisões consolidadas (commerce-vc1)

> Fonte de verdade para defaults, ADRs fechados pelo operador e itens ainda abertos. Complementa `_BRIEF.md`. Identificadores em inglês; prosa em pt-BR.

## Como ler

| Status | Significado |
|--------|-------------|
| **FECHADA** | Decidido pelo operador; implementar salvo revisão explícita. |
| **PADRÃO** | Default proposto pelo blueprint; válido até o operador mudar. |
| **VERIFICAR** | Checagem factual (legado, infra, terceiros); não é escolha de produto. |
| **OPERADOR** | Resposta do operador necessária; quando há default sugerido, está na coluna Decisão. |

Duplicatas entre documentos viram **um ID canônico**; IDs antigos permanecem na coluna **Aliases** ou como linha `ver X`.

---

## 1. ADRs (decisões fechadas pelo operador)

### ADR-001 — Base técnica: fork sales-mework360

**Contexto.** Funil de propostas, assinatura e kanban já existem no MeWork; wholesale VC1 exige multi-tenant e novos domínios de billing/rating.

**Decisão.** Fork de `sales-mework360`: Laravel 12, Filament 4, React 18 SPA (Vite, TanStack Query, Tailwind), PostgreSQL 16, Redis 7, Sanctum, DomPDF, Pest, Vitest.

**Consequências.** Reuso do wizard, PIN 6 dígitos, folhas A4 v2026, meSign; migrations MeWork removidas após seeder de papéis (D-DB-17).

**Alternativas.** Greenfield (descartado); wl_label como base (descartado — dívida R1/R2).

### ADR-002 — Repositório e suite

**Decisão.** Repo privado `SoftwareBeesy/commerce-vc1`, membro da suite `falepaco` (âncora `../falepaco-suite`, manifest `.cursorsuite`).

**Consequências.** Branch `front/*` + PR; contratos no manifest.

**Alternativas.** Repo fora da suite (descartado).

### ADR-003 — Integração com legado em produção

**Decisão.** Integração **direta** via ports/adapters: `LegacyErpProvisioningAdapter` (`api/white_label`), `SipPulseSoapAdapter`, `SipPulseReportsAdapter`. Alvo E6: `falepaco-api` / ERP novo / Kamailio.

**Consequências.** `legacy_id_map`, allowlist LAB, PR-LEG-01 antes do 1º cliente real.

### ADR-004 — PROD e LAB no meCloud

**Decisão.** PROD e LAB no **meCloud**; LAB com contas demo reais e **allowlist**; sem simuladores; criar demo no legado exige **GO operador**.

### ADR-005 — Modos de cobrança sem split

**Decisão.** `billing_mode` por revenda: `vc1_invoices` ou `reseller_invoices`. Repasse/netting conforme `_BRIEF` (ex.: mínimo R$ 2.000; custo R$ 1.500 pago; margem R$ 600 → repasse R$ 100).

### ADR-006 — Base de preços versionada

**Decisão.** `price_bases` / `price_base_versions` / `vc1_tiers` com vigência; cadência 30/6 fixa.

### ADR-007 — mePay (`vc1_invoices`)

**Decisão.** Cobrança cliente final via **mePay** (`PaymentPort`).

### ADR-008 — NFCom 62 RLGR / SyncNFe

**Decisão.** RLGR **57.675.896/0001-26**; `ImportNFModelo62` + `ConsultaNFModelo62` com chave 44 dígitos.

**Supersedido (operador 2026-11-03; refinado ADR-013 2026-11-04).** Cobrança e NFCom passam pelo **mePay**; emissor NFCom é **terceiro atrás do mePay**. Manter ADR para histórico RLGR/CNPJ; VC1 não chama SyncNFe.

### ADR-009 — DNS `vc1.com.br` e TLS wildcard

**Decisão.** Zona no **meDNS**; wildcard via ACME DNS-01; mutação PDNS na LAN com key escopada (D-INF-25).

### ADR-010 — Tenancy por Host

**Decisão.** Hosts conforme `_BRIEF` §4 (`admin`, `{slug}`, `cliente`, `api`, espelhos `.lab.`).

### ADR-011 — Protótipo HTML vcone

**Decisão.** `docs/blueprint/prototype/` é fonte de verdade de telas (`07-SCREENS.md`).

### ADR-012 — Inadimplente e mínimo (`vc1_invoices`)

**Decisão (provisório operador).** Custo de fatura **não paga** não entra no mínimo da revenda até `paid`.

**Alternativas.** Contar custo sem recebimento (descartado).

### ADR-013 — Cobrança e nota fiscal exclusivamente via mePay (emissor terceiro atrás do mePay)

**Contexto.** Decisão operador 2026-11-04: pagamento **nunca** WHMCS; VC1 não integra SyncNFe/Omie/emissor NFCom diretamente. mePay hoje cobre cobrança (openapi) e NFS-e via Omie, mas **não** NFCom modelo 62.

**Decisão.** Fluxo único: (1) VC1 pede link de cobrança ao mePay; (2) cliente paga; mePay notifica VC1 (`invoice.paid`); (3) cliente solicita nota fiscal na VC1; (4) VC1 pede NF ao mePay; (5) mePay chama emissor terceiro e devolve PDF/XML/chave via webhook; (6) VC1 entrega ao cliente. Aplica a faturas cliente (`vc1_invoices`) **e** revenda (`reseller_invoices`, D-RM-16). Emitente legal (RLGR vs revenda) inalterado.

**Supersedes.** Caminho SyncNFe/RLGR direto no VC1 (ADR-008 implementação); refine D-INT-25 / decisão 2026-11-03 — mePay **intermedia** emissor, não “emite NFCom” sozinho.

**Dependência cross-repo.** mePay precisa expor NFCom via emissor terceiro (owner: mePay, repo `me360-mepay`). Até lá: `FakeFiscalPort` no LAB.

**Status.** FECHADA 2026-11-04.

---

## 2. Registro consolidado

### Negócio (D-BIZ + ADR-012)

| ID | Tema | Decisão/padrão | Status | Origem | Aliases |
| --- | --- | --- | --- | --- | --- |
| ADR-012 | Custo inadimplente no mínimo | ver §1 ADR-012 | FECHADA | 01-BUSINESS §Itens | D-BIZ-06, D-ARQ-04, D-DB-05, D-SEC-22 |
| D-BIZ-01 | Ciclo e vencimento | Mês calendário; fechamento dia 1; vencimento configurável default **dia 10** | PADRÃO | 01 §Itens | — |
| D-BIZ-02 | Preços com tributos | **Brutos**, tributos inclusos | FECHADA | 01 §Itens | ver §9 |
| D-BIZ-03 | Destino `other` | Bloqueado | PADRÃO | 01 §Itens | — |
| D-BIZ-04 | Limite crédito revenda | Alerta **80%**; bloqueio **100%** (novas ativações + uso próprio) | PADRÃO | 01 §Itens | — |
| D-BIZ-05 | Fidelidade/multa | Configurável; multa = meses restantes × recorrente; trial sem multa; 30d aviso | PADRÃO | 01 §Itens | — |
| D-BIZ-06 | Custo inadimplente | ver ADR-012 | — | 01 §Itens | → ADR-012 |
| D-BIZ-07 | Payout | TED manual até mePay payouts | PADRÃO | 01 §Itens | — |
| D-BIZ-08 | Produto 01+02 | Permitido; um compromisso VC1 | PADRÃO | 01 §Itens | — |
| D-BIZ-09 | Arredondamento | `numeric(14,4)` por chamada; half-up só linha agregada fatura | PADRÃO | 01 §Itens | — |
| D-BIZ-10 | Baixa atrasada | Ciclo da baixa; não reabre fechado | PADRÃO | 01 §Itens | — |
| D-BIZ-11 | Pró-rata DID/canal | unit × (dias restantes incl. ativação) / dias mês | PADRÃO | 01 §Itens | — |
| D-BIZ-12 | Pacote mid-cycle | Pró-rata mensalidade | PADRÃO | 01 §Itens | — |
| D-BIZ-13 | Pré-pago DID/canal | Debita na alocação | PADRÃO | 01 §Itens | — |
| D-BIZ-14 | Chamada > saldo | Debita até zero; depois bloqueia | PADRÃO | 01 §Itens | — |
| D-BIZ-15 | Recarga pré-pago | Cash na carteira; não dispensa max(consumo, commitment) | PADRÃO | 01 §Itens | — |
| D-BIZ-16 | Fechamento pré-pago | Débito max(0, commitment − consumo_ciclo); blocked_credit se zero | PADRÃO | 01 §Itens | — |
| D-BIZ-25 | Pré-pago por ciclo | max(consumo, commitment) sempre; top-up ≠ mínimo futuro | PADRÃO | 01 §Itens | — |
| D-BIZ-26 | Enforcement saldo zero | VC1 tarifa; `blockOutgoingCalls` aos **90%**; `activateOutgoingCalls` pós-recarga (ver D-INT-26) | FECHADA | 01 §Itens | D-INT-07, D-INT-26 |
| D-BIZ-17 | Pacote 80/100 | Valor cheio dia 1 | PADRÃO | 01 §Itens | — |
| D-BIZ-18 | Bloqueio novo ciclo | Não persiste se pagou | PADRÃO | 01 §Itens | — |
| D-BIZ-19 | Limite revenda | Não cascateia para clientes finais | PADRÃO | 01 §Itens | — |
| D-BIZ-20 | Aging KPI | 1–30 / 31–60 / 61+ | PADRÃO | 01 §Itens | — |
| D-BIZ-21 | Pacotes sugeridos | Ilustrativos até catálogo fechado | FECHADA | 01 §Itens | ver §9 |
| D-BIZ-22 | Juros/multa | Sem juros/multa MVP | PADRÃO | 01 §Itens | — |
| D-BIZ-23 | Moeda | BRL | PADRÃO | 01 §Itens | — |
| D-BIZ-24 | Taxa portabilidade | Cliente; item avulso; tarifa da base | PADRÃO | 01 §Itens | — |
### Domínio (D-DOM)

| ID | Tema | Decisão/padrão | Status | Origem | Aliases |
| --- | --- | --- | --- | --- | --- |
| D-DOM-01 | Publicação base preços | 1× published vigente; imutável; só vc1_admin | PADRÃO | 02 §Itens | — |
| D-DOM-02 | Não-regressão faixas | Recusa se faixa maior tem unitário estritamente maior | PADRÃO | 02 §Itens | — |
| D-DOM-03 | Nova base vs contratos | Snapshot; adesão explícita próximo ciclo | PADRÃO | 02 §Itens | — |
| D-DOM-04 | Margem negativa | Exige negative_margin_acknowledged_at | PADRÃO | 02 §Itens | — |
| D-DOM-05 | Snapshot assinatura | Sim; nova tabela só se revenda aplicar | PADRÃO | 02 §Itens | — |
| D-DOM-06 | Linhas tabela revenda | 1 linha/faixa VC1; offered=false | PADRÃO | 02 §Itens | — |
| D-DOM-07 | Excedente block | blockOutgoingCalls assinatura inteira; per-destino VERIFICAR | PADRÃO | 02 §Itens | — |
| D-DOM-08 | Default tarifa excedente | Copia menor faixa ofertada | PADRÃO | 02 §Itens | — |
| D-DOM-09 | Suggested packages | Clone independente | PADRÃO | 02 §Itens | — |
| D-DOM-10 | Kind templates | package e commitment | PADRÃO | 02 §Itens | — |
| D-DOM-11 | Fatura em trial | Não; CDR trial sell=0 | PADRÃO | 02 §Itens | — |
| D-DOM-12 | Custo trial no mínimo | Não conta (VC1 absorve) | PADRÃO | 02 §Itens | — |
| D-DOM-13 | Destinos trial | fixo+móvel BR; other bloqueado | PADRÃO | 02 §Itens | — |
| D-DOM-14 | Qtd trials | 1 vitalício por `(reseller_id, customer_id, plan_id)` | PADRÃO | 02 §Itens | D-DB-22 |
| D-DOM-15 | Trial→pago | Reusa subscriber SipPulse | PADRÃO | 02 §Itens | — |
| D-DOM-16 | Fidelidade | Plano vence faixa se não nulo | PADRÃO | 02 §Itens | — |
| D-DOM-17 | Cancelamento | Cliente solicita; executa contratada | PADRÃO | 02 §Itens | — |
| D-DOM-18 | Reembolso ciclo | Sem reembolso | PADRÃO | 02 §Itens | — |
| D-DOM-19 | DID pós-cancel | 7d port-out; depois estoque | PADRÃO | 02 §Itens | — |
| D-DOM-20 | Multa fidelidade payout | Fora do Σ(sell−cost) voz | PADRÃO | 02 §Itens | — |
| D-DOM-21 | Classificador destino | Prefixos E.164 PG | PADRÃO | 02 §Itens | — |
| D-DOM-22 | Chamada zero | Não cobra | PADRÃO | 02 §Itens | — |
| D-DOM-23 | Timezone CDR | America/Sao_Paulo; ciclo=início chamada | PADRÃO | 02 §Itens | — |
| D-DOM-24 | Remove DID/canal | Sem crédito dias restantes | PADRÃO | 02 §Itens | — |
| D-DOM-25 | Franquia pró-rata ativação | Franquia × fração dias | PADRÃO | 02 §Itens | — |
| D-DOM-26 | Vencimento fim de semana | Não desloca | PADRÃO | 02 §Itens | — |
| D-DOM-27 | Idempotência fechamento | Chave única cycle/party/subscription | PADRÃO | 02 §Itens | — |
| D-DOM-28 | Reabrir ciclo | Proibido | PADRÃO | 02 §Itens | — |
| D-DOM-29 | Fechamento bloqueado | Gera fatura/extrato normal | PADRÃO | 02 §Itens | — |
| D-DOM-30 | Recarga vs ciclo | Recarga invoice imediata | PADRÃO | 02 §Itens | — |
| D-DOM-31 | Fatura revenda detalhe | Uso próprio + subtotal/cliente | PADRÃO | 02 §Itens | — |
| D-DOM-32 | Correção statement | Ajuste novo; sem overwrite | PADRÃO | 02 §Itens | — |
| D-DOM-33 | Export extrato | PDF+CSV; sem e-mail auto | PADRÃO | 02 §Itens | — |
| D-DOM-34 | Tolerância NF comissão | 0 cent | PADRÃO | 02 §Itens | — |
| D-DOM-35 | Cardinalidade payout | 1/revenda/ciclo | PADRÃO | 02 §Itens | — |
| D-DOM-36 | 1ª recarga pacote pré | ≥ pró-rata ativação | PADRÃO | 02 §Itens | — |
| D-DOM-37 | Pacote pré dia 1 | Debita carteira ou blocked_credit | PADRÃO | 02 §Itens | — |
| D-DOM-38 | Alerta 80% | 1×/ciclo até recross | PADRÃO | 02 §Itens | — |
| D-DOM-39 | Cap VC1 limite cliente | Sem cap MVP | PADRÃO | 02 §Itens | — |
| D-DOM-40 | Precedência bloqueio | RN-120 | PADRÃO | 02 §Itens | — |
| D-DOM-41 | Matriz bloqueio | §3 domain doc | PADRÃO | 02 §Itens | — |
| D-DOM-42 | Unblock manual VC1 | vc1_admin/vc1_ops | PADRÃO | 02 §Itens | — |
| D-DOM-43 | Unblock overdue | Só vc1_admin | PADRÃO | 02 §Itens | — |
| D-DOM-44 | Revenda suspended | Regra vc1_invoices vs reseller_invoices | PADRÃO | 02 §Itens | — |
| D-DOM-45 | Dunning cliente | Emissão; D−3; D+1 overdue; D+5 aviso bloqueio; D+10 block | PADRÃO | 02 §Itens | — |
| D-DOM-46 | Dunning fatura revenda | D+10 suspende revenda | PADRÃO | 02 §Itens | — |
| D-DOM-47 | Validação STFC | Manual MVP | PADRÃO | 02 §Itens | — |
| D-DOM-48 | Alerta STFC | D-30 e D-7 | PADRÃO | 02 §Itens | — |
| D-DOM-49 | STFC expirada | D-0 fecha funil; 30d grace; D+30 → suspended; pós-E5 vc1_invoices via agenda | PADRÃO | 02 §Itens | D-DOM-79 |
| D-DOM-79 | STFC expirada (detalhe) | Não força vc1_invoices antes E5; ver RN-136 | PADRÃO | 02 §Itens | — |
| D-DOM-50 | STFC reprovada | suspended + funil off | PADRÃO | 02 §Itens | — |
| D-DOM-51 | Retry NFCom | Máx 5 attempts | PADRÃO | 02 §Itens | — |
| D-DOM-52 | Timeout ConsultaNF | Fica imported; retenta | PADRÃO | 02 §Itens | — |
| D-DOM-53 | Cancel NF paga | Manual MVP | PADRÃO | 02 §Itens | — |
| D-DOM-54 | Guard centavos NF | Recusa 1 cent divergência | PADRÃO | 02 §Itens | — |
| D-DOM-55 | Cardinalidade fiscal | 1 doc/invoice | PADRÃO | 02 §Itens | — |
| D-DOM-56 | Editar proposta sent | Clonar draft | PADRÃO | 02 §Itens | — |
| D-DOM-57 | Validade proposta | 15d; trial até trial_ends_at | PADRÃO | 02 §Itens | — |
| D-DOM-58 | Desconto avulso | Inexistente | PADRÃO | 02 §Itens | — |
| D-DOM-59 | Enum portabilidade | draft…cancelled (brief) | PADRÃO | 02 §Itens | — |
| D-DOM-60 | Quem abre portabilidade | customer_admin + revenda owner/admin | PADRÃO | 02 §Itens | — |
| D-DOM-61 | Ops portabilidade | vc1_ops doadora | PADRÃO | 02 §Itens | — |
| D-DOM-62 | Upgrade/downgrade | Upgrade pró-rata; downgrade dia 1 | PADRÃO | 02 §Itens | — |
| D-DOM-63 | Fidelidade mudança plano | Upgrade mantém fim; downgrade recusado | PADRÃO | 02 §Itens | — |
| D-DOM-64 | Rating pós-upgrade | Snapshot novo | PADRÃO | 02 §Itens | — |
| D-DOM-65 | Mudança billing_mode | Job dia 1 pending_billing_mode | PADRÃO | 02 §Itens | — |
| D-DOM-66 | Quem agenda modo | Só vc1_admin | PADRÃO | 02 §Itens | — |
| D-DOM-67 | Faturas in-flight | Modo antigo | PADRÃO | 02 §Itens | — |
| D-DOM-68 | Reassinatura troca modo | Aditivo meSign obrigatório | PADRÃO | 02 §Itens | — |
| D-DOM-69 | DNS pós-terminated | Retém 30d | PADRÃO | 02 §Itens | — |
| D-DOM-70 | Impersonate | Auditado; vc1_support sem block/unblock | PADRÃO | 02 §Itens | — |
| D-DOM-71 | Payout net | net = paid_margin − shortfall; negative_margin informativo | PADRÃO | 02 §Itens | — |
| D-DOM-72 | Payout zero | payout_raw=0 → settled_zero | PADRÃO | 02 §Itens | — |
| D-DOM-73 | Refund pós-repasse | payout_adjustments; próximo payout ou fatura revenda | PADRÃO | 02 §Itens | — |
| D-DOM-74 | Overage block telco | blockOutgoingCalls assinatura inteira | PADRÃO | 02 §Itens | D-DOM-07 |
| D-DOM-75 | Venda direta | Proposta interna + meSign antes provisionar | PADRÃO | 02 §Itens | RN-176 |
| D-DOM-76 | public_code | Global unique base32 ≥10 | PADRÃO | 04 §13 | D-DB-20 |
| D-DOM-77 | Invoices customer | CHECK proíbe issuer=reseller; statements no modo revenda fatura | PADRÃO | 04 §13 | D-DB-21 |
| D-DOM-78 | Trial único | Partial unique reseller+customer+plan_version | PADRÃO | 04 §13 | D-DB-22 |
### Arquitetura (D-ARQ)

| ID | Tema | Decisão/padrão | Status | Origem | Aliases |
| --- | --- | --- | --- | --- | --- |
| D-ARQ-01 | Edge TLS | Caddy DNS-01 meDNS | PADRÃO | 03 §Itens | — |
| D-ARQ-02 | Import CDR | 5 min; lote 2000 | PADRÃO | 03 §Itens | — |
| D-ARQ-03 | STFC vencida | D-0 funil off; grace 30d; D+30 suspended | PADRÃO | 03 §Itens | D-DOM-49 |
| D-ARQ-04 | Inadimplente mínimo | ver ADR-012 | — | 03 §Itens | → ADR-012 |
| D-ARQ-05 | Destino other | Bloqueado | PADRÃO | 03 §Itens | — |
| D-ARQ-06 | Domínio SIP | Manter domínio legado até GO operador | FECHADA | 03 §Itens | D-INF-10, ver §9 |
| D-ARQ-07 | Object storage | S3 meStorage | PADRÃO | 03 §Itens | — |
| D-ARQ-08 | 2FA staff | TOTP Filament obrigatório | PADRÃO | 03 §Itens | D-SEC-03 |
| D-ARQ-09 | Path Filament | `/` no admin host | PADRÃO | 03 §Itens | — |
| D-ARQ-10 | Fallback painel_wl | ver D-RM-10 | — | 03 §Itens | → D-RM-10 |
| D-ARQ-11 | Sanctum cookie | Host-only | PADRÃO | 03 §Itens | — |
| D-ARQ-12 | Chargeback mePay | blocked_manual | PADRÃO | 03 §Itens | — |
| D-ARQ-13 | Partição rated_calls | Por cycle mensal | PADRÃO | 03 §Itens | D-DB-09 |
| D-ARQ-14 | Workers rating | 4 processos PROD | PADRÃO | 03 §Itens | — |
| D-ARQ-15 | CycleCloseJob | 02:10 America/Sao_Paulo | PADRÃO | 03 §Itens | — |
| D-ARQ-16 | Onboarding ERP | Colar legacy_project_id; PR-LEG-02 depois | PADRÃO | 03 §Itens | D-INT-04 |
| D-ARQ-17 | Lock rating | Por subscription; ordem (started_at, legacy_cdr_id) | PADRÃO | 03 §Itens | RN-178 |
### Dados (D-DB)

| ID | Tema | Decisão/padrão | Status | Origem | Aliases |
| --- | --- | --- | --- | --- | --- |
| D-DB-01 | Tarifa/min | `*_cents_per_min numeric(12,4)` | PADRÃO | 04 §13 | — |
| D-DB-02 | Arredondamento | numeric(14,4) por chamada; half-up linha agregada | PADRÃO | 04 §13 | D-BIZ-09 |
| D-DB-03 | Ledger pré-pago | Append-only + FOR UPDATE | PADRÃO | 04 §13 | — |
| D-DB-04 | RLS | Off MVP; scopes obrigatórios | PADRÃO | 04 §13 | — |
| D-DB-05 | Inadimplente mínimo | ver ADR-012 | — | 04 §13 | → ADR-012 |
| D-DB-06 | Retenção CDR raw | **13 meses**; tarifado 5a | PADRÃO | 04 §13 | D-SEC-12 |
| D-DB-07 | Retenção fiscal | 5 anos | PADRÃO | 04 §13 | D-SEC-13 |
| D-DB-08 | Destino other | Bloqueado default | PADRÃO | 04 §13 | — |
| D-DB-09 | Partição | RANGE mensal rated_calls/usage | PADRÃO | 04 §13 | — |
| D-DB-10 | Payout | Manual TED | PADRÃO | 04 §13 | D-BIZ-07 |
| D-DB-11 | Lock ledger | advisory_xact_lock fallback | PADRÃO | 04 §13 | — |
| D-DB-12 | TTL portabilidade | **24 meses** após completed_at | PADRÃO | 04 §13 | D-SEC-14 |
| D-DB-13 | Âncora ciclo | Mês calendário America/Sao_Paulo; due_day só vencimento | PADRÃO | 04 §13 | D-BIZ-01 |
| D-DB-14 | Prefixos ANATEL | Usar `service_type` do CDR SipPulse (sem tabela prefixos legado) | FECHADA | 04 §13 | ver §9 |
| D-DB-15 | CDR duration | Tarifar duration; duration_block audit only | PADRÃO | 04 §13 | D-INT-01 |
| D-DB-16 | Uso próprio revenda | customers.kind=reseller_self | PADRÃO | 04 §13 | — |
| D-DB-17 | Drop tabelas MeWork | Migration 21 pós-seeder papéis | PADRÃO | 04 §13 | — |
| D-DB-18 | FK composta tenant | UNIQUE (id,reseller_id) + FKs compostas | PADRÃO | 04 §13 | — |
| D-DB-19 | Idempotência fechamento | Partial uniques invoice/statement/cycle_runs/fiscal | PADRÃO | 04 §13 | D-DOM-27 |
| D-DB-20 | public_code proposta | Global unique | PADRÃO | 04 §13 | — |
| D-DB-21 | party customer invoice | CHECK NOT issuer=reseller | PADRÃO | 04 §13 | — |
| D-DB-22 | Trial unique | `(reseller_id, customer_id, plan_id)` forever; `plan_id` on trials | PADRÃO | 04 §13 | D-DOM-14 |
### Infra (D-INF)

| ID | Tema | Decisão/padrão | Status | Origem | Aliases |
| --- | --- | --- | --- | --- | --- |
| D-INF-01 | HA PROD | 1 app + 1 PG; PITR WAL S3 | PADRÃO | 05 §14 | — |
| D-INF-02 | Sizing | app 8/16/80; db 4/16/250; lab 4/8/80 | PADRÃO | 05 §14 | — |
| D-INF-03 | WHMCS pid/client | pid=6 tmpl 9001; client-id VERIFICAR | VERIFICAR | 05 §14 | — |
| D-INF-04 | Pool PVE | vc1 | PADRÃO | 05 §14 | — |
| D-INF-05 | Túnel | WireGuard wg-vc1 10.20.20.0/24 | PADRÃO | 05 §14 | — |
| D-INF-06 | Peer WG BRS | Perninha WireGuard até fusion meCloud | FECHADA | 05 §14 | ver §9 |
| D-INF-07 | MySQL reports | Porta + user RO VC1 — **aberto** operador; 3306 inferido; acesso via perninha | VERIFICAR | 05 §14 | ver §9 |
| D-INF-08 | Allowlist ERP VM140 | 190.89.248.79 timing VERIFICAR | VERIFICAR | 05 §14 | — |
| D-INF-09 | Contas demo | GO: N=5 subs, 4 DIDs + allowlist LAB | FECHADA | 05 §14 | D-INT-14, ver §9 |
| D-INF-10 | Domínio SIP | Manter legado até GO explícito | FECHADA | 05 §14 | D-ARQ-06, ver §9 |
| D-INF-11 | Borda | Caddy 2 + caddy-dns/powerdns | PADRÃO | 05 §14 | — |
| D-INF-12 | E-mail | me360mail ou SES; from noreply@vc1.com.br | PADRÃO | 05 §14 | — |
| D-INF-13 | CAA | letsencrypt.org issue+issuewild | PADRÃO | 05 §14 | — |
| D-INF-14 | TTL DNS | 300 default; 60 ACME | PADRÃO | 05 §14 | — |
| D-INF-15 | Apex A | Site-VC1 não commerce VM | PADRÃO | 05 §14 | — |
| D-INF-16 | RPO/RTO | PROD 5m/2h; LAB 24h/8h | PADRÃO | 05 §14 | — |
| D-INF-17 | Backup PBS | daily 7 weekly 4; WAL 14d | PADRÃO | 05 §14 | — |
| D-INF-18 | Buckets S3 | vc1-prod-wal/objects; lab-objects; endpoint **aberto** operador | VERIFICAR | 05 §14 | ver §9 |
| D-INF-19 | Redis | App VM; AOF; 2GiB; sem Sentinel | PADRÃO | 05 §14 | — |
| D-INF-20 | Deploy | LAB auto main; PROD dispatch | PADRÃO | 05 §14 | — |
| D-INF-21 | Registry | GHCR commerce-vc1-api/front | PADRÃO | 05 §14 | — |
| D-INF-22 | Alertas hub | partner_group paco; e-mail até Born | PADRÃO | 05 §14 | D-INF-23 |
| D-INF-23 | Destinatário alerta | E-mail operador até hub Born | FECHADA | 05 §14 | ver §9 |
| D-INF-24 | mePay URL | Contrato me360-mepay; URL prod cruzamento futuro | FECHADA | 05 §14 | D-INT-08, ver §9 |
| D-INF-25 | PDNS ACME | LAN dns-master:8443 key escopada Account | PADRÃO | 05 §14 | D-INT-10, ADR-009 |
| D-INF-26 | Zona vc1.com.br existe? | Criar zona meDNS se ausente | FECHADA | 05 §14 | ver §9 |
| D-INF-27 | Schema sippulse extra | Default não | PADRÃO | 05 §14 | — |
| D-INF-28 | Fila rating | compose queue-rating 2× PROD | PADRÃO | 05 §14 | — |
| D-INF-29 | Porta 80 | Redirect 301 only | PADRÃO | 05 §14 | — |
| D-INF-30 | Observabilidade | blackbox+node_exporter+e-mail | PADRÃO | 05 §14 | — |
| D-INF-31 | Cookies sessão | SESSION_DOMAIN=null; nomes distintos admin/painel/app | PADRÃO | 05 §14 | D-ARQ-11 |
### Integrações (D-INT)

| ID | Tema | Decisão/padrão | Status | Origem | Aliases |
| --- | --- | --- | --- | --- | --- |
| D-INT-01 | Duração CDR 30/6 | Tarifar `duration`; demo sample gate E3 | PADRÃO | 06 §Itens | D-DB-15, ver §9 |
| D-INT-02 | Poll ConsultaNF | 15 min; chave 44d | PADRÃO | 06 §Itens | — |
| D-INT-03 | Flag skip tronco | projetos_clientes.skip_tronco_billing PR-LEG-01 | PADRÃO | 06 §Itens | — |
| D-INT-04 | Onboarding projeto | Colar id MVP | PADRÃO | 06 §Itens | D-ARQ-16 |
| D-INT-05 | Ativação | TelcoPort SOAP direto | PADRÃO | 06 §Itens | — |
| D-INT-06 | Pré-pago zero | VC1 tarifa + block 90% / activate pós-recarga (ver D-INT-26) | FECHADA | 06 §Itens | D-BIZ-26, ver §9 |
| D-INT-07 | Quota SipPulse | **Supersedido:** cota mensal é minutos; VC1 não usa — ver D-INT-26 | FECHADA | 06 §Itens | D-INT-26, ver §9 |
| D-INT-08 | Contrato mePay | me360-mepay `docs/contracts/openapi.yaml` + `events.md` | FECHADA | 06 §Itens | ver §9 |
| D-INT-09 | Payout mePay | Manual | PADRÃO | 06 §Itens | — |
| D-INT-10 | ACME PDNS | ver D-INF-25 | — | 06 §Itens | → D-INF-25 |
| D-INT-11 | ratePlanId VC1 | SOAP `ratePlanId`; IDs do projeto WL no onboarding; risco 350→250 legado | FECHADA | 06 §Itens | ver §9 |
| D-INT-12 | Base URL WL | VERIFICAR LEGACY_WL_BASE_URL | VERIFICAR | 06 §Itens | — |
| D-INT-13 | Timeout SOAP | 20s / 30s cadastro | PADRÃO | 06 §Itens | — |
| D-INT-14 | Allowlist LAB ids | GO operador 5 subs / 4 DIDs | FECHADA | 06 §Itens | D-INF-09, ver §9 |
| D-INT-15 | SMS | Disparos ou log | PADRÃO | 06 §Itens | — |
| D-INT-16 | .cursorsuite contratos | Lista §11; mepay complementary | PADRÃO | 06 §Itens | — |
| D-INT-17 | Dual-run E6 | legacy_id + erp_uuid | PADRÃO | 06 §Itens | — |
| D-INT-18 | Webhook mePay | /api/v1/webhooks/mepay HMAC sha256= | PADRÃO | 06 §Itens | D-SEC-09 |
| D-INT-19 | Token WL GET | Só generate_login_link; dívida R2 isolada | PADRÃO | 06 §Itens | — |
| D-INT-20 | SyncNFe homolog LAB | **Supersedido** por ADR-013 (mePay + emissor terceiro); não se aplica | FECHADA | 06 §Itens | D-INT-25, ADR-013 |
| D-INT-21 | rotateSipCredentials | Sem método legado; ocultar CLI-02 até teste `updateSubscriber` demo | FECHADA | 06 §Itens | ver §9 |
| D-INT-22 | FiscalPort E3 | NFCom party=reseller no go-live reseller_invoices | PADRÃO | 06 §Itens | — |
| D-INT-23 | Webhook dedupe | event_id ou sha256 envelope | PADRÃO | 06 §Itens | D-SEC-08 |
| D-INT-24 | meSign dedupe | sha256(envelope_id+event+payload); sem janela | FECHADA | 06 §Itens | ver §9 |
| D-INT-25 | Cobrança e NFCom via mePay | PaymentPort + FiscalPort → mePay; emissor NFCom terceiro (ADR-013) | FECHADA | Operador 2026-11-04 | D-INT-20, ADR-008, ADR-013 |
| D-INT-26 | Bloqueio saída 90% | VC1 tarifa; blockOutgoingCalls 90% saldo; activate após recarga | FECHADA | Operador 2026-11-03 | D-INT-07, D-BIZ-26 |
### Segurança (D-SEC)

| ID | Tema | Decisão/padrão | Status | Origem | Aliases |
| --- | --- | --- | --- | --- | --- |
| D-SEC-01 | 2FA revenda | Opcional; recomendado owner | PADRÃO | 08 §Itens | — |
| D-SEC-02 | 2FA cliente | Opcional | PADRÃO | 08 §Itens | — |
| D-SEC-03 | 2FA staff | TOTP obrigatório | PADRÃO | 08 §Itens | D-ARQ-08 |
| D-SEC-04 | Timeout staff | 8h | PADRÃO | 08 §Itens | — |
| D-SEC-05 | PIN proposta | 6 dígitos; lockout sales-mework360 | PADRÃO | 08 §Itens | — |
| D-SEC-06 | Token API | 90d; prefix vc1_; hashed | PADRÃO | 08 §Itens | — |
| D-SEC-07 | Impersonation | vc1_admin/support 30min | PADRÃO | 08 §Itens | D-DOM-70 |
| D-SEC-08 | Replay webhook | Dedupe D-INT-23; janela 5 min | PADRÃO | 08 §Itens | — |
| D-SEC-09 | Path HMAC mePay | POST /api/v1/webhooks/mepay — ver contrato me360-mepay | FECHADA | 08 §Itens | D-INT-08, ver §9 |
| D-SEC-10 | URL assinada TTL | 15 min | PADRÃO | 08 §Itens | — |
| D-SEC-11 | Upload AV | ClamAV worker | PADRÃO | 08 §Itens | — |
| D-SEC-12 | Retenção CDR | ver D-DB-06 (13m/5a) | — | 08 §Itens | → D-DB-06 |
| D-SEC-13 | Retenção cadastro/NF | 5a pós encerramento | PADRÃO | 08 §Itens | D-DB-07 |
| D-SEC-14 | Retenção portabilidade | ver D-DB-12 (24m) | — | 08 §Itens | → D-DB-12 |
| D-SEC-15 | Audit log | Financeiro/admin 5a; auth/acesso 12m | PADRÃO | 08 §Itens | — |
| D-SEC-16 | Rotação webhook secret | 12m ou incidente | PADRÃO | 08 §Itens | — |
| D-SEC-17 | Rate limit login | 5/min/IP | PADRÃO | 08 §Itens | — |
| D-SEC-18 | Pentest go-live | HIGH/CRITICAL bloqueiam PROD | PADRÃO | 08 §Itens | — |
| D-SEC-19 | Disco VM | Cifrado meCloud | PADRÃO | 08 §Itens | — |
| D-SEC-20 | 404 cross-tenant | Sempre 404 | PADRÃO | 08 §Itens | — |
| D-SEC-21 | DPA | Antes active; por billing_mode | PADRÃO | 08 §Itens | — |
| D-SEC-22 | Inadimplente mínimo | ver ADR-012 | — | 08 §Itens | → ADR-012 |
### Roadmap (D-RM)

| ID | Tema | Decisão/padrão | Status | Origem | Aliases |
| --- | --- | --- | --- | --- | --- |
| D-RM-01 | Recorte go-live | E0–E4 reseller_invoices; 1 piloto; E5 vc1_invoices | FECHADA | 09 §Itens | — |
| D-RM-02 | Entrada vc1_invoices | E5 pós-piloto E4 | PADRÃO | 09 §Itens | — |
| D-RM-03 | Migração Intelbras | Fora escopo | PADRÃO | 09 §Itens | — |
| D-RM-04 | Tamanho piloto | 1 revenda | FECHADA | 09 §Itens | D-RM-01 |
| D-RM-05 | Paralelismo E4/E5 | E5 desenho paralelo; não go-live | PADRÃO | 09 §Itens | — |
| D-RM-06 | Estimativas | E0 S … E6 L | PADRÃO | 09 §Itens | — |
| D-RM-07 | Recarga E4 | Manual ledger até mePay | PADRÃO | 09 §Itens | — |
| D-RM-08 | Bloquear fatura desvio CDR | Não; só relatório | PADRÃO | 09 §Itens | — |
| D-RM-09 | Destino other | Bloqueado | PADRÃO | 09 §Itens | — |
| D-RM-10 | Fallback painel_wl | Não go-live; LAB flag off default | PADRÃO | 09 §Itens | D-ARQ-10 |
| D-RM-11 | Payout mePay | Manual | PADRÃO | 09 §Itens | — |
| D-RM-12 | Adapters E6 | FalepacoApi… Kamailio… | PADRÃO | 09 §Itens | — |
| D-RM-13 | SLA block telco | 60 s se quota D-INT-07; senão CDR ≤5 min + 60 s | PADRÃO | 09 §Itens | D-INT-07 |
| D-RM-14 | Wildcard DNS | Piloto com operador; LAB *.lab desde E0 | PADRÃO | 09 §Itens | — |
| D-RM-15 | Sprint tasks aqui | Proibido; /pmo plan | PADRÃO | 09 §Itens | — |
| D-RM-16 | Pagamento fatura revenda MVP | Boleto/Pix gerados pelo **mePay** | FECHADA | 09 §Itens | ver §9 |

---

## 4. Conflitos resolvidos (reconciliação)

| # | Conflito | Resolução | Docs alterados |
|---|----------|-----------|----------------|
| 1 | CDR bruto D-SEC-12 12m vs D-DB-06 13m | **13 meses** raw; tarifado **5 anos** | `08-SECURITY-LGPD.md` |
| 2 | Fallback painel_wl D-ARQ-10 vs D-RM-10 | **Não** go-live; LAB E1–E3 flag off default | `03-ARCHITECTURE.md`, `09-ROADMAP.md` |
| 3 | ACME D-INT-10 vs D-INF-25 | LAN `dns-master:8443` + key Account | `06-INTEGRATIONS.md` |
| 4 | Dunning D-DOM-45 vs DOC-12 | Emissão; D−3; D+1; D+5 aviso; D+10 block | `02-DOMAIN-RULES.md` |
| 5 | Portabilidade D-SEC-14 12m vs D-DB-12 24m | **24 meses** após `completed_at` | `08-SECURITY-LGPD.md` |

**Exemplos numéricos** (PRODUCTS / brief / 01-BUSINESS): mínimo 2.000; custo 1.500; margem 600 → repasse 100; margem 300 → repasse 0 e fatura 200; consumo 780 / mínimo 1.000 → cobrado 1.000.

**Aberto:** domínio próprio da revenda = fase futura; OpenAPI revenda e rate limit (E5); endpoint S3; MySQL RO porta/usuário; custo meCloud (financeiro). Ver §9.

---

## 5. Checklist pré-construção

| Item | Owner | Gate | Bloqueia? | Default seguro |
|------|-------|------|-----------|----------------|
| Spec mePay (D-INT-08) | Time mePay | E5 | Sim E5 go-live auto | Contrato me360-mepay; FakePaymentPort E0–E4 |
| NFCom via mePay (ADR-013) | **mePay** | E3/E5 NFCom | Sim emissão real | FakeFiscalPort LAB; API+webhooks fiscal **a criar no mePay** |
| Peer WireGuard (D-INF-06) | Ops Fale Paco | E1 | Sim E1+ | Perninha até fusion (**FECHADA** §9) |
| MySQL RO reports (D-INF-07) | Ops Fale Paco | E3 | Sim E3 | Porta/usuário RO **aberto** §9 |
| CDR duration (D-INT-01, D-DB-15) | Ops+dev | E3 | Sim E3 | Amostra demo E3 (**analisado** §9) |
| Bloqueio 90% SipPulse (D-INT-26) | Dev VC1 | E4 | Sim E4 telco | blockOutgoingCalls / activate (**FECHADA** §9) |
| SyncNFe homolog (D-INT-20) | — | — | **N/A** | Supersedido mePay D-INT-25 |
| PR-LEG-01 inventário + skip | Operador | 1º PROD | Sim PROD | `legacy/PR-LEG-01-INVENTORY.md`; golden test |
| SIP domain (D-ARQ-06, D-INF-10) | Operador | E2/E4 | Parcial | Legado até GO (**FECHADA** §9) |
| Demo IDs (D-INF-09, D-INT-14) | Operador | E1 LAB | Sim LAB | GO 5/4 (**FECHADA** §9) |
| ratePlanId (D-INT-11) | Ops SipPulse | E2 | Sim tráfego | WL onboarding (**analisado** §9) |
| rotateSipCredentials (D-INT-21) | Ops SipPulse | E2 | Parcial UI | Ocultar CLI-02 (**analisado** §9) |
| meSign dedupe (D-INT-24) | meSign | E2 | Parcial dedupe | sha256 sem janela (**FECHADA** §9) |
| Zona meDNS (D-INF-26) | meDNS | E0 TLS | Sim wildcard LAB | Criar se ausente (**FECHADA** §9) |
| Alertas (D-INF-23) | Operador | E0 ops | Não E0 | E-mail operador (**FECHADA** §9) |
| Preços brutos (D-BIZ-02) | RLGR | E3 | Não E0 | Brutos c/ tributos (**FECHADA** §9) |
| Prefixos ANATEL (D-DB-14) | Dev | E3 | Parcial | `service_type` CDR (**analisado** §9) |
| Pagamento fatura revenda (D-RM-16) | VC1 + mePay | E3 PROD | Parcial | mePay boleto/Pix (**FECHADA** §9) |
| Endpoint S3 (D-INF-18) | Operador | E2 | Parcial uploads | **Aberto** §9 |
| OpenAPI revenda + rate limit | Fale Paco | E5 | Sim E5 API | **Aberto** §9 |

---

## 6. Perguntas abertas ao operador (mínimas)

| ID | Pergunta | Default proposto |
|----|----------|------------------|
| D-INF-07 | Porta MySQL `sippulse_reports` e usuário RO dedicado VC1 | 3306 inferido; SELECT-only; VPN perninha |
| D-INF-18 | Endpoint S3 meStorage (buckets WAL/objects) | — |
| D-RM-05 | OpenAPI público API revenda | Definir na E5 |
| (novo) | Rate limit Bearer revenda | Política E5 |
| (novo) | Custo mensal meCloud | Financeiro; não bloqueia etapa |

---

## 8. Revisão independente (rodada 1)

| # | Resolução (resumo) | Arquivos |
|---|-------------------|----------|
| Op | D-RM-01/D-RM-04 FECHADA: go-live E0–E4 `reseller_invoices`, 1 piloto | `_BRIEF`, `09`, `10` |
| 1 | Payout: net = paid_margin − shortfall; negative_margin informativo | `_BRIEF`, `02`, `04`, `schema`, `01`, `10` |
| 2 | Payout SQL EXISTS; own usage voice+DID+channel reseller_self | `04`, `10` |
| 3 | Pré-pago max(consumo,commitment); fechamento débito residual | `_BRIEF`, `02`, `01`, `04`, `10` |
| 4 | Quota SipPulse + fallback block 90% (VERIFICAR) | `_BRIEF`, `02`, `06`, `09`, `10` |
| 5 | Idempotência partial uniques invoices/statements/cycle_runs/fiscal | `04`, `schema`, `10` |
| 6 | CDR: tarifar `duration`; não 30/6 em duration_block | `03`, `06`, `04`, `schema`, `10` |
| 7 | RN-110 pacote vs commitment exposição | `02`, `10` |
| 8 | Rating lock ordem por subscription | `03`, `04`, `02`, `10` |
| 15 | overage_*_cents_per_min em plan_versions + subscription | `schema`, `02`, `10` |
| 16 | Overage block = blockOutgoingCalls assinatura | `02`, `10` |
| 17 | payout_raw=0 → settled_zero | `_BRIEF`, `02`, `04`, `schema`, `10` |
| 18 | payout_adjustments pós-repasse | `02`, `06`, `schema`, `10` |
| 30 | Rounding numeric(14,4) call; half-up linha agregada | `04`, `01`, `10` |
| 25 | Ciclo mês calendário; due_day; remove cycle_anchor | `_BRIEF`, `04`, `schema`, `03`, `10` |
| 20 | pending_billing_mode + aditivo meSign | `schema`, `02`, `10` |
| 27 | CHECK no customer invoice issuer=reseller; só statements | `schema`, `04`, `10` |
| 34 | Trial partial unique | `schema`, `04`, `10` |
| 9 | FK composta tenant | `04`, `schema`, `10` |
| 10 | SESSION_DOMAIN null; cookies por superfície | `05`, `10` |
| 19 | public_code global unique | `schema`, `04`, `10` |
| 26 | vc1_support read-only impersonate; sem block | `08`, `02`, `10` |
| 28 | impersonation_sessions + audit fields | `schema`, `08`, `10` |
| 29 | Webhook dedupe sha256 fallback | `03`, `06`, `schema`, `10` |
| 35 | Audit 5a financeiro / 12m auth | `08`, `04`, `10` |
| 11 | NFCom revenda em E3; mePay fiscal gate E5 (ADR-013) | `09`, `06`, `10` |
| 12 | STFC upload/guard E1 | `09`, `10` |
| 23 | PR-LEG-01 inventário jobs + golden test | `06`, `09`, `10` |
| 24 | rotateSipCredentials (VERIFICAR SOAP) | `_BRIEF`, `06`, `10` |
| 21 | Venda direta → proposta + meSign | `02`, `07`, `10` |
| 22 | Preço proposta só servidor | `07`, `02`, `10` |
| 31 | Margem pacote = cenários | `07`, `01`, `10` |
| 32 | Webhooks/suporte/prefs pós-MVP E5+ | `07`, `09`, `10` |
| 33 | Top-up E4 manual; mePay E5 | `07`, `09`, `10` |

---

## 8. Revisão independente (rodada 2)

| # | Resolução (resumo) | Arquivos |
|---|-------------------|----------|
| 1 | STFC expirada: D-0 funil; grace 30d; D+30 suspended; sem auto `vc1_invoices` pré-E5; pós-E5 `pending_billing_mode` | `02` RN-136/171, D-DOM-49, `10`, `09` se citado |
| 2 | Invoice idempotência: partial `(cycle_id, reseller_id)` reseller + `(cycle_id, subscription_id)` customer; status excl. cancelled/reissued; `subscription_id` NOT NULL customer | `schema`, `04` D-DB-19 |
| 3 | FK tenant: `UNIQUE (id, reseller_id)` + refs compostas em `schema.dbml` | `schema`, `04` D-DB-18 |
| 4 | Rounding: `numeric(14,4)` rated_calls/wallet; half-up só linha agregada fatura | `01`, `04`, `02` RN-064, `10` D-BIZ-09/D-DB-02 |
| 5 | SLA E4 60s condicional D-INT-07; fallback CDR ≤5 min + 60 s | `09`, `02` RN-106, `10` D-RM-13 |
| 8 | Trial vitalício `(reseller_id, customer_id, plan_id)` + `plan_id` em trials | `schema`, `02` RN-046, `04` D-DB-22 |
| 9 | E5 não revalida STFC (guard E1) | `09` |
| 10 | E3 entregável: statement cliente + fatura revenda NFCom | `09` |
| 24 | `rotateSipCredentials` D-INT-21 gate E2; ocultar CLI-02 até confirmar | `10` §5 |
| 29 | meSign dedupe D-INT-24 gate E2; dedupe sha256 sem janela 5 min | `10` §5 |

---

## 9. Decisões do operador — 2026-11-03

Rodada operador + análise read-only legado (`easy_cicerone`, `falepaco-sippulse-old`). Evidências de código citadas nos itens **analisado**.

| Item | IDs | Resultado | Decisão | Evidência |
| ---: | --- | --- | --- | --- |
| 1 | D-INF-26 | decidido | Criar zona `vc1.com.br` no meDNS se não existir | — |
| 2 | D-INF-06 | decidido | Perninha WireGuard até fusion meCloud | — |
| 3 | D-INF-09, D-INT-14 | decidido | GO: 5 subscribers, 4 DIDs + allowlist LAB | — |
| 4 | D-INF-10, D-ARQ-06 | decidido | Manter domínio SIP legado até GO | — |
| 5 | D-INT-11 | analisado | `ratePlanId` SOAP; IDs em `projetos_planos.id_rate_plan_*`; VC1 lê WL; **350 usa id 250** no legado | `easy_cicerone/api/src/SipPulse/Subscriber/Factory/Rules/SubscriberRulesFactory.php` |
| 6 | D-INT-21 | analisado | Sem rotate dedicado; ocultar CLI-02 até teste `updateSubscriber` demo | `SubscriberRulesFactory.php`, tronco remove+insert |
| 7 | D-INT-24 | decidido | Dedupe meSign: sha256(envelope_id+event+payload), sem janela | — |
| 8 | D-INF-07 | aberto | Confirmar porta (3306 inferido) e usuário RO VC1; VPN perninha | `wp-config` DB_*_SIPPULSE (fora repo); `falepaco-sippulse-old/docs/AUDITORIA-SIPPULSE.md` |
| 9 | D-INT-01, D-DB-15 | analisado | Legado usa `duration_block`+`price`; VC1 tarifa `duration` crua | `easy_cicerone/wp-content/themes/easy/modulo_minutagem/classes/sip_pulse.php` |
| 10 | D-INT-20 | não se aplica | Toda cobrança/NFCom via mePay (D-INT-25); SyncNFe homolog descartado | — |
| 11 | D-BIZ-02 | decidido | Preço bruto com tributos inclusos | — |
| 12 | D-DB-14 | analisado | Sem tabela prefixos; usar `cdrs_report.service_type` | `sip_pulse.php`, AUDITORIA-SIPPULSE |
| 13 | D-RM-16 | decidido | Fatura revenda: boleto/Pix mePay | — |
| 14 | D-INF-18 | aberto | Endpoint S3 meStorage pendente operador | — |
| 15 | D-INT-07 | decidido | Não usar cota minutos; VC1 block 90% / activate pós-recarga (D-INT-26) | WSDL `updateMonthlyQuota` vs `blockOutgoingCalls` (legado franquia) |
| 16 | D-INT-08, D-INF-24, D-SEC-09 | decidido | Contrato mePay meWork: `suites/mework360/me360-mepay/docs/contracts/openapi.yaml`, `events.md` | PaymentPort cruzamento futuro |
| 17 | D-RM-05 | aberto | OpenAPI revenda na E5 | — |
| 18 | (rate limit) | aberto | Política rate limit Bearer revenda | — |
| 19 | D-BIZ-21 | decidido | Pacotes sugeridos ilustrativos até catálogo | — |
| 20 | D-INF-23 | decidido | Alertas: e-mail operador até hub Born | — |
| 21 | (meCloud OPEX) | aberto | Custo mensal com financeiro; não bloqueia | — |
| 22 | PR-LEG-01 | analisado | Inventário 25 caminhos; `skip_tronco_billing` ausente; gate 1º PROD | `docs/blueprint/legacy/PR-LEG-01-INVENTORY.md` |

**Novas decisões registradas:** D-INT-25 (mePay cobrança + NFCom), D-INT-26 (bloqueio 90% VC1).

---

## 7. Estatísticas do registro

| Métrica | Valor |
|---------|------:|
| IDs originais (D-BIZ…D-RM) | **235** |
| Linhas §2 | **240** (+2 D-INT-25/26; 230 originais + 8 refs cruzadas + 2 novas) |
| **FECHADA** | **26** no §2 (incl. ADR-012, D-RM-01, D-RM-04 e fechamentos §9); **38** contando 12 ADRs §1 |
| **PADRÃO** | **186** |
| **VERIFICAR** | **5** (D-INF-03, D-INF-07, D-INF-08, D-INF-18, D-INT-12) + D-DOM-07 per-destino |
| **OPERADOR** | **0** (rodada 2026-11-03 fechou D-BIZ-21, D-INF-09, D-INF-10) |

### Bloqueio por épico

| Épico | Bloqueantes |
|-------|-------------|
| E0 | Nenhum (D-INF-26 **FECHADA**; alertas e-mail operador) |
| E1 | GO demo executado (D-INF-09 **FECHADA**); perninha WG **FECHADA** |
| E3 | D-INF-07 MySQL RO (**aberto**); validação amostra CDR duration |
| E4 | Enforcement 90% (**FECHADA** D-INT-26) |
| E5 | Cruzamento PaymentPort mePay; OpenAPI revenda; rate limit (**abertos**) |
| 1º cliente PROD | PR-LEG-01 migration `skip_tronco_billing` + golden test |
