Norma Técnica • GOST-1.0

ГОСТ — Especificação de Repositórios

Padrão universal para arquitetura de repositórios, ciclo de desenvolvimento e documentação pública.

1. Filosofia e Licenciamento

O GOST orienta a criação de software livre com clareza jurídica e técnica desde o primeiro commit.

Presunção Padrão: CC0-1.0

Todo repositório deve presumir dedicação direta ao domínio público (CC0-1.0 Universal), eliminando atrito para cópia, reuso e evolução coletiva com salvaguarda jurídica internacional.

Exceção Copyleft: GPLv3

Projetos com salvaguarda explícita contra mercantilização predatória ou fechamento de código adotam a GNU GPLv3.

2. Anatomia Mínima da Raiz & Declaração GOSTVER

Todo repositório aderente à especificação mantém uma base uniforme previsível:

.
├── GOSTVER                     # Declaração da norma e perfil (ex: GOST_VERSION="1.0.0")
├── LICENSE                     # Licença declarada (CC0-1.0 como padrão)
├── VERSION                     # Versão SemVer pura em texto simples (ex: 0.1.0-dev.1)
├── CHANGELOG.md                # Histórico no padrão Keep a Changelog
├── README.md                   # Resumo executivo e instrução de partida
├── .gitignore                  # Regras de higiene de arquivos
├── .editorconfig               # Configuração canônica de formatação
├── site/                       # Portal estático de documentação pública
│   ├── index.html              # Interface de visualização da documentação
│   └── _headers                # Cabeçalhos HTTP de segurança obrigatórios
└── .forgejo/ / .github/        # Workflows declarativos de CI/CD
    └── workflows/ci.yml

🏷️ Separação: Meta-Norma (GOSTVER) vs. Especificação de Domínio (SPEC.md)

Aplicações que adotam o GOST não copiam a norma técnica. Elas utilizam seu próprio SPEC.md para descrever as regras de negócio e interfaces do projeto (criado na Etapa 2 do DD-TDD), enquanto declaram conformidade com o GOST através do arquivo GOSTVER na raiz.

📦 Módulos Especializados por Linguagem (Anti-Bloat)

Para não poluir o repositório nem sobrecarregar o contexto de agentes de IA com regras de stacks não utilizadas, o GOST provê especificações técnicas modulares isoladas em specs/languages/:

  • PHP (php.md): Pest (>90%), PHPStan max, Pint, Infection (MSI>80%), Composer lock e Docker alpine non-root.
  • Rust (rust.md): Cargo test, Clippy (-D warnings), rustfmt, cargo-mutants, llvm-cov e Docker scratch estático.
  • POSIX Shell (shell.md): ShellSpec com kcov, ShellCheck, shfmt determinístico e resolução nativa XDG.
  • JavaScript/TypeScript (javascript.md): Biome/Prettier, Playwright E2E, c8 e lockfiles imutáveis.
  • R (r.md): testthat, covr, lintr, styler e gestão hermética de dependências com renv (Twelve-Factor R).

3. Ciclo de Desenvolvimento (DD-TDD)

Nenhuma alteração é iniciada ou finalizada sem rastreabilidade. O fluxo formal divide-se em 5 etapas sequenciais:

1
Ticket / Issue

Abertura do ticket formalizando o problema, a nova funcionalidade ou refatoração no issue tracker.

2
Doc in Develop (Commit de Documentação)

Formalização prévia do comportamento e interfaces esperadas antes de codificar.

docs: specify auth endpoint contracts (ref #42)
3
Failing Test (Commit do Teste Quebrado)

Criação do teste automatizado reproduzindo o bug ou atestando a falta da feature. O teste deve falhar.

test: add failing integration test for token expiration (ref #42)
4
Fix / Implementação (Commit do Código)

Desenvolvimento da solução estritamente necessária para fazer o teste passar.

feat: implement token expiration validation (ref #42)
5
Finish Docs & Close (Commit de Fechamento)

Revisão final dos guias, atualização do changelog e encerramento do ticket.

docs: update authentication documentation (closes #42)

🎟️ Zero Commits sem Ticket

Cláusula pétrea: nenhum commit existe sem issue aberta. Commits intermediários exigem (ref #N) e o final exige (closes #N). Hooks locais bloqueiam commits soltos.

🌿 Branches por Ticket

Proibido commitar na main. Desenvolvimento sempre em branches dedicados: feat/<id>-slug ou fix/<id>-slug.

✅ Definition of Done (DoD)

Critérios objetivos: teste falho histórico comprovado, código verde, cobertura > 90%, zero mutantes críticos, docs atualizadas e CI verde.

🤖 Protocolo de Comandos para Agentes de IA (Agent Dispatch)

Para mitigar ações não autorizadas e acelerar o fluxo entre humanos e agentes autônomos, o GOST padroniza comandos operacionais diretos:

  • DCPD (Do, Commit, Push, Deploy): Execução completa de ponta a ponta com testes, commit com (closes #N), push, merge na main e deploy contínuo.
  • DCP (Do, Commit, Push): Implementação e push restrito à branch da feature, mantendo o PR aberto no Codeberg para revisão humana prévia.
  • PLAN (Plan & Propose): Diagnóstico e formulação de proposta sem modificar arquivos de código e sem commitar.
  • TDD (Ticket, Doc, Test, Do): Execução estrita das 5 etapas DD-TDD com commits separados de documentação preliminar e teste falho.
  • AUDIT (Audit & Check): Auditoria passiva de linters (-D warnings), testes, cobertura (≥90%), mutantes e segurança.
  • FIX (Fix & Clean): Saneamento técnico de avisos de análise estática e formatação sem alteração de regra de negócio.
  • RELEASE (Release & Tag): Bump semântico no VERSION, consolidação do changelog e publicação de tags Git via cccp.

4. Estratégia e Qualidade de Testes

A norma exige validação automatizada em camadas com asserções rigorosas e cobertura permanentemente mantida:

🧪 Unitários & Funcionais

Isolamento total de dependências externas para execução instantânea. Validação de regras e contratos de domínio.

🔗 Integração

Validação de persistência, banco de dados (SQLite), IPC e daemons com fixtures isoladas e auto-destrutivas.

🎭 Ponta a Ponta (E2E)

Jornadas completas do usuário em navegadores headless (Chromium, Firefox, WebKit) via Playwright.

🎯 Cobertura > 90% (Foco 100%)

Piso obrigatório de 90% com bloqueio imediato no CI para qualquer regressão. Meta ativa de 100% no core.

🧬 Testes de Mutação & Hermeticidade

Validação da eficácia real dos asserts (evitando testes cosméticos) através de injeção sintética de falhas. Execução estritamente hermética no CI, sem dependência de rede pública externa.

5. Análise Estática, Formatação & Zero Warnings

A integridade do código exige severidade máxima de linters e formatação determinística antes mesmo dos testes:

🚫 Tolerância Zero a Avisos

Linters e compiladores rodam com tratamento de warnings como erros fatais (-D warnings). Avisos quebram o build imediatamente.

📐 Formatação Determinística

Zero discussões de estilo em code review. Formatadores oficiais estritos no CI (rustfmt, pint, shfmt, prettier/biome com --check).

⚙️ Higiene com .editorconfig

Arquivo .editorconfig canônico na raiz de todo projeto para impor UTF-8, LF e indentação homogênea entre editores.

🛡️ Anti-Bloat & Auditoria

Dependências mínimas e justificadas. Auditoria contínua de vulnerabilidades e verificação de hiperlinks quebrados (lychee).

6. Vitrine Pública & Topologia de Serviços

Todo projeto mantém seu portal estático publicado na borda via pipeline de CI. O arquivo site/_headers deve assegurar:

/*
  X-Content-Type-Options: nosniff
  X-Frame-Options: DENY
  Referrer-Policy: strict-origin-when-cross-origin

🌐 Vitrine Estática vs. Backend Vivo

A pasta ./site publicada em *.2lp.in destina-se exclusivamente a documentação e vitrine pública. Segredos e portas dinâmicas nunca são expostos na vitrine.

🔒 Topologia de Acesso Seguro

Serviços locais/daemons utilizam Tailscale (rede privada criptografada ponto a ponto) ou Cloudflare Tunnel autenticado sob subdomínio dedicado.

📱 Resiliência em Redes Móveis

Aplicações sob sinal oscilante adotam fila assíncrona com idempotência (client_id) e short polling leve contra quebras de conexão.

7. Internacionalização (Matriz das 10 Línguas)

A norma GOST exige cobertura e paridade de 100% nas 10 línguas oficiais tanto no aplicativo completo (UI, CLI, logs e erros de runtime) quanto na documentação pública (./site). A língua primária é definida no .cccprc e atua como fallback em tempo de execução:

🌍 As 10 Línguas Oficiais

en (English), pt (Português), es (Español), fr (Français), de (Deutsch), it (Italiano), ru (Русский), zh (中文), ja (日本語), ar (العربية).

🏛️ Língua Primária (Padrão CCCP)

Declarada via agent_var_lang no .cccprc. Fonte canônica para triagem de tickets e fallback mandatório de strings.

🔄 Roteador Inteligente

Redirecionamento estático na raiz da documentação via localStorage e navigator.language.

📖 Suporte a RTL (Árabe)

Suporte bidirecional mandatório (dir="rtl") no aplicativo e na documentação para o árabe.

8. Cards Sociais e Safe Zone 4:3 (Padrão KokoroSim)

Banners de compartilhamento (Open Graph / Twitter Card) são gerados em 1200x630 com proteção central contra cortes móveis:

📐 Safe Zone 4:3 (720px - 840px)

Todo conteúdo crítico (título, logo, badge, rodapé) fica confinado no miolo central. Sangrias laterais de 180px a 240px blindam contra o recorte 1:1 (quadrado) do WhatsApp.

✂️ Limites Rígidos de Caracteres

og:title: 50 a 65 chars (máx 70).
og:description: 120 a 155 chars (máx 160).
Badge na imagem: máx 35 chars.
Título na imagem: máx 40 chars.

9. Arquitetura de Domínio e SOLID Pragmático

O GOST orienta a construção de software com foco no isolamento rigoroso do Core em relação a subsistemas de I/O, hermeticidade em testes e rejeição ao overengineering cerimonial:

🔌 Portas & Adaptadores (DIP)

O Core (regras e use cases) nunca depende de banco, rede ou frameworks. Interfaces/traits definem as portas de entrada e saída. Dependências apontam sempre para dentro.

⚡ Hermeticidade & In-Memory Fakes

Testes de domínio executam em microssegundos em memória pura. Preferência absoluta por Fakes leves em vez de frameworks pesados de mocks dinâmicos frágeis.

🛡️ Parse, Don't Validate (Anti-Bloat)

Validação estrita na borda externa (adaptadores/controllers). O Core opera com primitivos confiáveis, eliminando Value Objects vazios e anêmicos sem comportamento real.

🏷️ Enums Nativos para Estado

Proibição de tipos fracos (strings mágicas) para máquinas de estado e transições de ciclo de vida. Uso de enum nativo da linguagem com exaustividade no linter.

⚖️ Princípio de Gradação Arquitetural

A complexidade estrutural deve ser proporcional ao escopo. Micro-ferramentas CLI e scripts simples mantêm estrutura direta sem camadas artificiais; serviços e aplicações complexas segregam Core e Adaptadores.

10. Aderência a Padrões de Sistema, 12-Factor & Containers

O GOST impõe conformidade com convenções maduras do ecossistema Unix/Linux e da computação em nuvem para máxima previsibilidade e portabilidade:

📂 XDG Base Directory

Proibição de arquivos soltos na $HOME. Fallbacks canônicos obrigatórios: config em ~/.config, data em ~/.local/share, state/logs em ~/.local/state e runtime sockets em /run/user/$UID.

⚙️ Precedência de Configuração

Hierarquia estrita: Flags CLI > Variáveis de Ambiente > .env local > Config do repositório > XDG Config > /etc > Defaults. Formato plano KEY=VALOR amigável a shell.

☁️ Twelve-Factor Universal

Aplicação dos princípios do 12-Factor em qualquer software: dependências explícitas, config no ambiente, processos stateless, port/socket binding, logs como fluxos contínuos e descartabilidade com graceful shutdown.

🖥️ Disciplina Unix & NO_COLOR

stdout exclusivo para saída de dados útil encadeável em pipes. stderr para logs, avisos e progresso. Aderência ao padrão NO_COLOR e detecção automática de TTY.

🔒 Modern TLS & Unix Sockets

Banimento expresso de SSL/TLS < 1.2 (RFC 8996). Negociação QUIC/HTTP3 > HTTP/2 TLS 1.3. Preferência mandatória por UNIX Domain Sockets para IPC local entre daemons.

🐳 Containers OCI / Docker

Multi-stage builds obrigatórios com bases mínimas (scratch/alpine). Execução estritamente não-root (USER 1000:1000), banimento de :latest, .dockerignore e compose.yaml.

🔑 Autenticação Single-User

Cabeçalho Authorization: Bearer <key>, suporte à injeção via env ou sufixo _FILE para Docker Secrets e validação timing-safe obrigatória contra ataques de temporização.

11. Perfil de Implementação: Lumen

O ecossistema Lumen implementa a norma GOST com os seguintes serviços e convenções:

Consulte o documento completo em profiles/lumen.md no repositório.