NovaLang0.2 alpha

R5 — engenharia de release privada

Estado: implementação concluída; publicação da primeira tag bloqueada até o checklist multiplataforma ser assinado.

Objetivo

A R5 transformou os builds internos em um processo de release verificável sem expor o repositório ou depender de acesso público ao GitHub. O modelo oficial agora é software proprietário distribuído por artefatos binários.

Problemas encontrados e correções

Download incompatível com repositório privado

Os instaladores apontavam diretamente para GitHub Releases. Um usuário sem acesso ao repositório receberia erro de autenticação. Agora os instaladores exigem NOVALANG_DOWNLOAD_BASE (ou -BaseUrl no PowerShell), rejeitam HTTP e montam a URL versionada no endpoint HTTPS controlado pelo mantenedor.

MSRV incorreto

O workspace declarava Rust 1.75, mas a árvore bloqueada contém dependências que exigem Rust 1.88. O contrato passou para 1.88, foi validado localmente com essa toolchain e ganhou um job dedicado no CI.

Release sem teste do pacote final

O pipeline compilava e compactava, mas não executava o binário extraído. Cada runner agora descompacta seu próprio artefato e executa nova version antes do upload.

Site e documentação fora do gate principal

O CI agora valida lint, build, testes e auditoria das dependências de produção do site. Um validador próprio confere links Markdown locais e impede que as páginas públicas voltem a anunciar GitHub ou licença open source.

Entregas

  • CI em Windows, Linux e macOS, além de job MSRV 1.88.
  • Auditoria Rust via RustSec.
  • Build, lint, testes e npm audit do site.
  • Validação da extensão e empacotamento VSIX.
  • Release com quatro targets, smoke test, SHA-256 e CycloneDX SBOM.
  • Instaladores desacoplados do GitHub privado e com escrita preparada antes da substituição do executável.
  • Desinstaladores conservadores para PowerShell e shell.
  • Política de suporte em SUPPORT.md.
  • Checklist de release privada com instalação, upgrade, rollback e sign-off.
  • Documentação de suporte e checklist incorporada ao site.
  • Dependabot cobrindo Cargo, extensão, site e GitHub Actions.

Validação executada

  • workspace completa: testes aprovados;
  • cargo fmt, cargo check e Clippy estrito: aprovados;
  • cargo check com Rust 1.88: aprovado;
  • LSP real por stdio com publicação de diagnósticos: aprovado;
  • extensão VS Code e auditoria npm de produção: aprovadas;
  • site: lint, build, 3 testes e auditoria de produção aprovados;
  • 45 arquivos Markdown e referências closed-source: aprovados;
  • dry-run do instalador Windows usando endpoint HTTPS: aprovado.

Riscos remanescentes

  • O endereço definitivo da distribuição na VPS ainda precisa ser definido.
  • Certificados de assinatura de código para Windows e macOS ainda não existem.
  • O workflow de release e os quatro artefatos precisam passar pela primeira execução real no GitHub Actions.
  • Instalação, upgrade, desinstalação e rollback ainda precisam de sign-off em máquinas limpas nos três sistemas.
  • O playground continua bloqueado porque a runtime não é uma sandbox.

Gate para a primeira tag

Não crie v0.2.0-alpha.1 até preencher RELEASE_CHECKLIST.md. A implementação da R5 está pronta, mas a release só é aprovada depois do ensaio externo multiplataforma e da configuração do endpoint HTTPS da VPS.