# PR-19.5 - PBS Semantics for Global Dependency Graph and Cycle Validation ## Briefing Depois da superficie semantica local de `global`, PBS precisa implementar o ordering deterministico e a deteccao de ciclos entre globals usando o kernel compartilhado `DependencyGraphAnaliser`. Esta PR fecha a parte de semantica que transforma leituras em initializers no graph canonico de globals. ## Target Implementar: 1. nos canonicos de globals por owner module, 2. edges derivadas de leitura de globals em initializers, 3. ordering deterministico independente de source-file order, 4. diagnostico de ciclo entre globals. ## Dependencies Prerequisitos diretos: 1. `PR-19.2` 2. `PR-19.4` ## Scope 1. Construir o graph semantico de globals. 2. Resolver alias/import para owner canonico. 3. Reusar `DependencyGraphAnaliser` como kernel estrutural. 4. Emitir diagnostico de ciclo com caminho canonicamente util quando possivel. ## Non-Goals 1. Nao validar ainda `[Init]` / `[Frame]`. 2. Nao implementar init sintetico de modulo. 3. Nao implementar lowering. ## Method 1. Modelar cada global como no canonico `(module, global_name)` ou equivalente interno estavel. 2. Criar edge quando initializer depende do valor materializado de outro global. 3. Usar ordering deterministico para fixar ordem de materializacao. 4. Manter source-file order fora da semantica. ## Acceptance Criteria 1. Ordering de globals e estavel e independe de ordem textual de arquivos. 2. Imports e aliases nao quebram identidade canonica do storage owner. 3. Ciclos intra-modulo e inter-modulo sao detectados como compile-time error. 4. Diagnostics apontam para globals reais, nao para estrutura sintetica. ## Tests 1. Fixtures positivas para dependency chains intra e inter-modulo. 2. Fixtures que provem mesma ordem mesmo com source-file order trocada. 3. Fixtures negativas para ciclos simples e ciclos via import/alias. ## Affected Artifacts 1. semantica de globals PBS 2. `DependencyGraphAnaliser` consumers 3. testes de dependency ordering/cycle diagnostics ## Open Questions 1. Nenhuma. A integracao com module/project init fica para `PR-19.6`.