# ADR-001 — Escopo da sequência PROP - Status: Proposed - Data: 2026-10-02 - Pendência: P-009 - Decisão: nenhuma ## Contexto A primeira geração bem-sucedida cria um número comercial no formato `PROP-######` e a versão `V1`. Falha de geração não pode consumir número nem versão. O que permanece aberto é o escopo do contador: o que faz duas propostas receberem números diferentes, e onde a unicidade vale. A source of truth registra uma recomendação técnica de escopo por workspace. Esta recomendação não foi aprovada. Este ADR não a converte em regra. ## Alternativas 1. Sequência por `workspace_id`. É a recomendação técnica citada na especificação. Continua não adotada. 2. Sequência global da plataforma, única entre workspaces. 3. Sequência por documento comercial (CNPJ ou equivalente). CNPJ não é chave de tenant; esta alternativa entra só para ficar visível. 4. Sequência por usuário criador. ## Critérios para sair de Proposed - Unicidade definida: quem pode ver o mesmo número e quem não pode. - Comportamento em falha: a reserva volta ao contador. Pular número em rollback não atende RN-017. - Concorrência: duas gerações simultâneas no mesmo escopo não recebem o mesmo número. - Efeito em workspace novo, arquivado e reativado. ## Impacto no código desta fase `CommercialNumberAllocator` só pode ser chamado de dentro do commit formal, depois do artefato válido, e só quando a proposta ainda não tem número. O duplo em memória usa o prefixo `TEST-` de propósito. Ele não é a sequência de produção e não escolhe a alternativa 1, 2, 3 ou 4. O formato `PROP-######` já está na source of truth. O regex em `src/domain/generation/types.ts` descreve esse formato. Ele não aloca números. ## Impacto no prompt 02 A migration pode criar `proposals.commercial_number` como texto anulável. Ainda não criar: - `CREATE SEQUENCE` ou equivalente - `UNIQUE (commercial_number)` global - `UNIQUE (workspace_id, commercial_number)` - trigger que preencha o número na inserção da proposta Qualquer um desses objetos escolheria o escopo antes da aprovação deste ADR. ## O que aprovar este ADR não muda Versão formal continua imutável. Retry com a mesma chave não cria outra versão. A segunda versão reutiliza o número já commitado; não pede outro.