# PR-007 - PBS Static Semantics Declaration Validation ## Briefing Depois da cobertura sintatica, falta a camada de semantica estatica para validar declaracoes, namespaces e invariantes de assinatura. Este PR entrega a primeira fase semantica: sem resolver `apply` completo ainda. ## Target - Specs: - `docs/pbs/specs/4. Static Semantics Specification.md` (secoes 2, 3.1-3.7, 3.18 subset de declaracao) - `docs/pbs/specs/12. Diagnostics Specification.md` (phase = static semantics) - Codigo: - `prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/PbsFrontendCompiler.java` - novo pacote de validadores semanticos em `.../pbs/semantics/`. ## Method 1. Introduzir binder de simbolos por namespace (`type`, `value`, `callable`, `host-owner`). 2. Validar duplicatas de parametros, labels de retorno, enum/error cases e declaracoes. 3. Validar invariantes de retorno (`optional` vs `result`, `optional void`, etc.). 4. Validar superficies de declaracao (`ctor`, `service`, `callback`, `const`) conforme regras de forma. 5. Emitir diagnosticos deterministas por codigo estavel para cada classe de erro. ## Acceptance Criteria - Binder constroi tabelas por namespace sem colapsar overload cedo. - Erros obrigatorios de declaracao aparecem com spans corretos e codigo estavel. - Duplicata de funcao usa identidade por shape (nao por label). - Regras de validade de `declare const` (tipo obrigatorio, init quando aplicavel) sao aplicadas. - Nenhum arquivo valido passa a falhar por ruido de validacao. ## Tests - `PbsSemanticsDeclarationsTest` novo com casos positivos/negativos para: - duplicatas por namespace; - enum/error duplicados; - retorno invalido (`optional/result`); - declaracoes `const` invalidas; - callback/service/ctor shape invalidos.