Gleam.br Wiki

ADR-0015: Segregação Estática de Conteúdo via Cloudflare Zero Trust | Wiki

Documentação de engenharia e especificações técnicas da Gleam-BR.

ADR-0015: Segregação Estática de Conteúdo via Cloudflare Zero Trust

Este documento especifica a decisão de design sobre o suporte a visibilidade estática controlada (visibility = "public" | "private") no gerador estático gbr_ssg.

1. Contexto e Motivação

Determinadas seções da Base de Conhecimento (como o Startup Blueprint, dados financeiros, OKRs estratégicos e arquitetura interna de negócios) contêm informações confidenciais. Para integrar o gerador com regras de acesso do *Cloudflare Zero Trust / Cloudflare Access*, os arquivos estáticos compilados que forem marcados como privados devem ser fisicamente isolados em um diretório de saída exclusivo /dist/private/.

Dessa forma, o Cloudflare Access pode proteger o caminho /private/* por meio de autenticação de acesso (SSO/WebAuthn), sem exigir lógicas dinâmicas de autorização dentro das páginas HTML.


2. Decisão Arquitetural

  1. *Atributo no Frontmatter TOML:* Introduziremos o campo de visibilidade nos metadados da página: toml visibility = "private" # ou "public"

  2. **Tipagem e Fallback de Segurança (ssg_core):** O record PageMetadata será expandido com a propriedade visibility: String. Se a chave for omitida no TOML, a função de parsing usará por padrão o valor seguro "public".

  3. **Prefixagem de Rota no CLI (apps/gbr_ssg):** No momento do build e gravação dos arquivos em disco: - Se metadata.visibility == "private", o caminho relativo de saída será alterado de ./dist/<path>.html para ./dist/private/<path>.html.


3. Requisitos EARS

*Requisitos Ubíquos (Ubiquitous Requirements)* - *UBQ-01 (Extração de Visibilidade com Fallback Seguro):* O decodificador TOML de PageMetadata DEVE extrair a chave visibility e, caso a chave seja omitida no documento .djot, DEVE atribuir o valor padrão "public". - *UBQ-02 (Isolamento Físico de Arquivos Privados):* O gravador de arquivos do motor de build DEVE inspecionar a visibilidade da página e, para qualquer documento marcado como "private", DEVE prefixar o caminho de gravação no sistema de arquivos com private/, direcionando os artefatos estáticos para o diretório protegido ./dist/private/.