prometeu-studio/docs/compiler/pbs/pull-requests/PR-19.5-pbs-semantics-global-dependency-graph-and-cycle-validation.md

2.1 KiB

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.