mirror of
https://github.com/melgarafael/DeskcommCRM.git
synced 2026-10-02 01:28:34 +08:00
Decisão 1-A do DEC-007: uma fonte, duas saídas. `extensoes/` guarda os pacotes, e `extensoes/catalogo.json` é DERIVADO deles — nunca escrito à mão, porque ele carrega o sha256 e o tamanho que o host confere na instalação. Um catálogo digitado diverge no primeiro pacote corrigido, e o sintoma aparece como `extension_digest_mismatch` na máquina de um cliente, longe de quem fez a mudança. O gerador valida cada pacote pelo SCHEMA REAL (parseManifest + checkCompatibility), não por uma cópia das regras: gerador com regras próprias publica pacote que o host recusa. TRÊS PACOTES REAIS, um por nicho, porque loja vazia é defeito e não estado — medido antes: `grep -rl --include='*.json' '"declarative"' | wc -l` devolvia 0 no repositório inteiro. Retorno de paciente (clínica), Carrinho abandonado (e-commerce) e Primeira semana no atendimento (equipe). Eles usam portas diferentes entre si — só possível depois da ADR-0003. ACHADO MEDIDO, e não óbvio: o host RECUSA origem com caminho. `parseCatalog` só aceita origem exata porque ele mesmo monta `/packages/<sha256>.json` em cima dela. Consequência: **GitHub Pages de projeto não serve** — `https://usuario.github.io/REPO` é recusado, e eu descobri isso pelo teste falhando, não por leitura. A hospedagem precisa de domínio ou subdomínio dedicado; qual deles é decisão do dono, e `EXTENSOES_ORIGEM` troca sem código. A regra virou asserção no teste, com o porquê escrito. O metadado de loja (quem publicou, repositório, etiquetas) vive em `extensoes/loja.json` e entra só no catálogo: a autoria é afirmada por quem revisa, não por quem envia. 7 casos verdes. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>