"""Caminhos canônicos do repositório — o único lugar que sabe onde a árvore está. Mudança de estrutura é mudança aqui, e em mais lugar nenhum. A lição veio da reorganização V0: eram 103 referências de caminho espalhadas por scripts, Makefile e harness, e mover uma pasta quebrava tudo entre a mudança e a reescrita. """ from pathlib import Path RAIZ = Path(__file__).resolve().parent.parent CLIENTE = RAIZ / "clientes" / "ses-mg" CONTRATO = CLIENTE / "contrato" GOVERNANCA = CLIENTE / "governanca" PROJETOS = CLIENTE / "projetos" ENTRADA = CLIENTE / "_entrada" RELATORIOS = CLIENTE / "relatorios" COMUNICACOES = CLIENTE / "comunicacoes" METODOS = RAIZ / "metodos" # _derivados/ é resultado, nunca fonte: gitignored, regenerável por make derivar. DERIVADOS = RAIZ / "_derivados" ITENS = CONTRATO / "itens.yaml" # Visões GERADAS a partir das SDs (inversão da V0, 13/08/2026). Quem lê # portfólio, carteira ou catálogo lê o resultado de `make derivar` — os # mantidos à mão estão congelados em governanca/levantamentos/. PORTFOLIO = DERIVADOS / "portfolio.yaml" CARTEIRA = DERIVADOS / "carteira.yaml" CATALOGO = DERIVADOS / "catalogo.md" NUMERACAO = GOVERNANCA / "numeracao.yaml" TRANSVERSAL = GOVERNANCA / "transversal.yaml" TEMPLATE_SD = PROJETOS / "_template" / "SD.md" # Modelo Word do material de leitura prévia (`make leitura-previa`): layout da # nota técnica com logo no cabeçalho. Vive em metodos/modelos/ — cópia neutra; # a original é evidência da P5·SD24 e evidência não é dependência de script. MODELO_NOTA_TECNICA = METODOS / "modelos" / "nota-tecnica.docx" # Projeção financeira: gerada em _derivados/, congelada datada em comunicacoes/. PROJECAO_HTML = DERIVADOS / "projecao-executiva.html" APRESENTACOES = COMUNICACOES / "apresentacoes" def sds_reais(): """Todos os SD.md sob projetos/*/sds/. O template vive em projetos/_template/, fora de qualquer */sds/* — é o que o mantém fora desta varredura por construção, em todos os consumidores de uma vez. Era ele contaminando a varredura de faturamento na árvore antiga. """ return sorted(PROJETOS.glob("*/sds/*/SD.md"))