From 2c13b3db8b4f277e6f340c0fb76608c1f736bc20 Mon Sep 17 00:00:00 2001 From: bQUARKz Date: Mon, 23 Mar 2026 00:12:15 +0000 Subject: [PATCH] globals and synthetic inits --- docs/compiler/pbs/pull-requests/INDEX.md | 14 +++ ...-spec-propagation-and-normative-cutover.md | 98 +++++++++++++++++++ ...hanaliser-extraction-and-module-cutover.md | 74 ++++++++++++++ ...st-globals-barrel-and-lifecycle-markers.md | 70 +++++++++++++ ...rface-identity-and-collision-validation.md | 76 ++++++++++++++ ...l-dependency-graph-and-cycle-validation.md | 66 +++++++++++++ ...e-init-frame-and-initallowed-validation.md | 82 ++++++++++++++++ ...nd-globals-and-synthetic-callable-model.md | 70 +++++++++++++ ...d-wrapper-entrypoint-zero-and-frame-ret.md | 70 +++++++++++++ ...e-fixtures-diagnostics-and-gate-closure.md | 73 ++++++++++++++ 10 files changed, 693 insertions(+) create mode 100644 docs/compiler/pbs/pull-requests/PR-19.1-pbs-topic-19-spec-propagation-and-normative-cutover.md create mode 100644 docs/compiler/pbs/pull-requests/PR-19.2-infra-dependencygraphanaliser-extraction-and-module-cutover.md create mode 100644 docs/compiler/pbs/pull-requests/PR-19.3-pbs-parser-ast-globals-barrel-and-lifecycle-markers.md create mode 100644 docs/compiler/pbs/pull-requests/PR-19.4-pbs-semantics-global-surface-identity-and-collision-validation.md create mode 100644 docs/compiler/pbs/pull-requests/PR-19.5-pbs-semantics-global-dependency-graph-and-cycle-validation.md create mode 100644 docs/compiler/pbs/pull-requests/PR-19.6-pbs-semantics-lifecycle-init-frame-and-initallowed-validation.md create mode 100644 docs/compiler/pbs/pull-requests/PR-19.7-pbs-lowering-irbackend-globals-and-synthetic-callable-model.md create mode 100644 docs/compiler/pbs/pull-requests/PR-19.8-pbs-lowering-published-wrapper-entrypoint-zero-and-frame-ret.md create mode 100644 docs/compiler/pbs/pull-requests/PR-19.9-pbs-conformance-fixtures-diagnostics-and-gate-closure.md diff --git a/docs/compiler/pbs/pull-requests/INDEX.md b/docs/compiler/pbs/pull-requests/INDEX.md index 44ada33b..d2a62418 100644 --- a/docs/compiler/pbs/pull-requests/INDEX.md +++ b/docs/compiler/pbs/pull-requests/INDEX.md @@ -195,3 +195,17 @@ Foco: reduzir complexidade estrutural de `PbsFlowBodyAnalyzer` sem alterar regra 3. `PR-13.3-flow-body-analyzer-statement-analysis-splitting.md` 4. `PR-13.4-flow-body-analyzer-assignment-target-resolution-decomposition.md` 5. `PR-13.5-flow-body-analyzer-regression-hardening-and-final-cleanup.md` + +### Onda O19 - Globals, Lifecycle, Published Wrapper, and Conformance + +Foco: implementar a familia `19` em sequencia executavel, com runtime boot protocol ja alinhado e `learn` deliberadamente postergado para fechamento posterior. + +1. `PR-19.1-pbs-topic-19-spec-propagation-and-normative-cutover.md` +2. `PR-19.2-infra-dependencygraphanaliser-extraction-and-module-cutover.md` +3. `PR-19.3-pbs-parser-ast-globals-barrel-and-lifecycle-markers.md` +4. `PR-19.4-pbs-semantics-global-surface-identity-and-collision-validation.md` +5. `PR-19.5-pbs-semantics-global-dependency-graph-and-cycle-validation.md` +6. `PR-19.6-pbs-semantics-lifecycle-init-frame-and-initallowed-validation.md` +7. `PR-19.7-pbs-lowering-irbackend-globals-and-synthetic-callable-model.md` +8. `PR-19.8-pbs-lowering-published-wrapper-entrypoint-zero-and-frame-ret.md` +9. `PR-19.9-pbs-conformance-fixtures-diagnostics-and-gate-closure.md` diff --git a/docs/compiler/pbs/pull-requests/PR-19.1-pbs-topic-19-spec-propagation-and-normative-cutover.md b/docs/compiler/pbs/pull-requests/PR-19.1-pbs-topic-19-spec-propagation-and-normative-cutover.md new file mode 100644 index 00000000..97d9db5c --- /dev/null +++ b/docs/compiler/pbs/pull-requests/PR-19.1-pbs-topic-19-spec-propagation-and-normative-cutover.md @@ -0,0 +1,98 @@ +# PR-19.1 - PBS Topic 19 Spec Propagation and Normative Cutover + +## Briefing + +As decisions `19.1` a `19.5` fecharam a arquitetura de globals, lifecycle markers, published wrapper, lowering e conformance para PBS v1. + +Esta PR abre a execucao da familia `19` pela frente editorial normativa: + +1. propagar as decisions para specs PBS e specs gerais relevantes; +2. remover lacunas documentais entre source model, lowering e publication contract; +3. alinhar o contrato final com entrypoint fisico `0` e sem autoridade de `entrypoint` no `manifest.json`. + +## Target + +Atualizar o baseline normativo para o modelo final de topic `19` em: + +1. syntax and AST, +2. static semantics, +3. dynamic semantics, +4. diagnostics, +5. lowering, +6. bytecode/publication handoff. + +## Dependencies + +Prerequisitos diretos: + +1. `Globals Surface, Identity, and Module Boundaries Decision.md` +2. `Lifecycle Markers, Program Init, and Frame Root Semantics Decision.md` +3. `Published Entrypoint, Synthetic Wrapper, and FRAME_RET Ownership Decision.md` +4. `Globals and Lifecycle Lowering to IRBackend and IRVM Decision.md` +5. `Diagnostics, Manifest Propagation, and Conformance Coverage Decision.md` + +## Scope + +1. Atualizar: + - PBS 3, + - PBS 4, + - PBS 7, + - PBS 9, + - PBS 11, + - PBS 12, + - PBS 13. +2. Atualizar: + - General 15, + - General 20. +3. Fixar normativamente: + - `declare global`, + - `[Init]`, + - `[Frame]`, + - `[InitAllowed]`, + - wrapper publicado, + - `FRAME_RET` no wrapper, + - entrypoint fisico `0`, + - `manifest.json` sem `entrypoint`. + +## Non-Goals + +1. Nao alterar parser, AST classes ou semantics code. +2. Nao implementar lowering. +3. Nao adicionar fixtures executaveis nesta PR. +4. Nao produzir `learn`. + +## Method + +1. Aplicar as decisions 19.x sem reabrir arquitetura. +2. Escrever os contratos em ingles normativo e com terminologia uniforme. +3. Fazer o corte documental completo do antigo modelo nominal de entrypoint. +4. Nomear explicitamente dependencias cross-domain quando a spec PBS depender do runtime protocol ja aceito. + +## Acceptance Criteria + +1. Nenhuma spec normativa relevante da linha PBS/general contradiz as decisions 19.x. +2. `declare global`, `[Init]`, `[Frame]` e `[InitAllowed]` aparecem com semantica consistente entre syntax, AST e static semantics. +3. O publication contract normativo aponta para wrapper sintetico em `func_id = 0`. +4. O `manifest.json` deixa de carregar autoridade de entrypoint nas specs PBS. +5. As specs gerais de handoff refletem o wrapper e o entrypoint fisico `0`. + +## Tests + +1. Revisao editorial integral dos documentos afetados. +2. Se houver harness de spec-to-test matrix para as specs gerais/pbs, mantelo verde. + +## Affected Documents + +1. `docs/compiler/pbs/specs/3. Core Syntax Specification.md` +2. `docs/compiler/pbs/specs/4. Static Semantics Specification.md` +3. `docs/compiler/pbs/specs/7. Cartridge Manifest and Runtime Capabilities Specification.md` +4. `docs/compiler/pbs/specs/9. Dynamic Semantics Specification.md` +5. `docs/compiler/pbs/specs/11. AST Specification.md` +6. `docs/compiler/pbs/specs/12. Diagnostics Specification.md` +7. `docs/compiler/pbs/specs/13. Lowering IRBackend Specification.md` +8. `docs/compiler/general/specs/15. Bytecode and PBX Mapping Specification.md` +9. `docs/compiler/general/specs/20. IRBackend to IRVM Lowering Specification.md` + +## Open Questions + +1. Nenhuma. Esta PR e de propagacao normativa. diff --git a/docs/compiler/pbs/pull-requests/PR-19.2-infra-dependencygraphanaliser-extraction-and-module-cutover.md b/docs/compiler/pbs/pull-requests/PR-19.2-infra-dependencygraphanaliser-extraction-and-module-cutover.md new file mode 100644 index 00000000..09b098f7 --- /dev/null +++ b/docs/compiler/pbs/pull-requests/PR-19.2-infra-dependencygraphanaliser-extraction-and-module-cutover.md @@ -0,0 +1,74 @@ +# PR-19.2 - Infra DependencyGraphAnaliser Extraction and Module Cutover + +## Briefing + +As decisions da familia `19` fixaram que modules e globals compartilham o mesmo kernel estrutural de analise de dependencias, vindo de um refactor do algoritmo atual de modules para `DependencyGraphAnaliser` em `util.structures`. + +Esta PR faz somente esse corte de infra: + +1. extrair o kernel estrutural reutilizavel; +2. migrar o uso atual de modules para esse novo componente; +3. deixar a superficie pronta para a futura aplicacao no graph de globals. + +## Target + +Introduzir um analizador estrutural generico para: + +1. topological ordering, +2. deterministic traversal, +3. cycle detection, +4. e, quando util, exposicao de SCC/path para diagnostics. + +## Dependencies + +Prerequisitos diretos: + +1. `Globals Surface, Identity, and Module Boundaries Decision.md` + +## Scope + +1. Extrair o algoritmo atual de dependency ordering de modules para `DependencyGraphAnaliser`. +2. Definir uma API estrutural baseada em nos canonicos e edges preconstruidas. +3. Migrar a linha atual de modules para usar esse componente comum. +4. Preservar comportamento observavel dos diagnostics de modules. + +## Non-Goals + +1. Nao introduzir ainda globals no pipeline semantico. +2. Nao misturar semantica de modules com semantica de globals. +3. Nao alterar parser ou AST. +4. Nao alterar diagnostics user-facing da linha de globals nesta PR. + +## Method + +1. Extrair apenas o kernel estrutural; sem abstrair semantica de descoberta de edges. +2. Manter cada dominio responsavel por: + - nos canonicos, + - edges, + - mapeamento para diagnostics. +3. Garantir regressao zero para a linha atual de dependency ordering de modules. + +## Acceptance Criteria + +1. Existe um `DependencyGraphAnaliser` reutilizavel em infra `util.structures`. +2. Modules passam a usar esse componente sem mudar o contrato observavel atual. +3. O componente nao carrega conhecimento de modulo, global ou PBS-specific semantics. +4. A futura linha de globals consegue consumir o novo kernel sem novo refactor estrutural. + +## Tests + +1. Testes atuais de dependency ordering e cycle detection de modules permanecem verdes. +2. Testes unitarios diretos do `DependencyGraphAnaliser` cobrem: + - DAG simples, + - ciclo, + - ordering deterministico, + - graph desconexo. + +## Affected Artifacts + +1. `prometeu-deps` e/ou infra estrutural equivalente +2. fases atuais que usam o algoritmo de dependency ordering de modules + +## Open Questions + +1. A exposicao de SCC/path pode ser minima nesta PR, desde que nao force novo refactor na PR-19.5. diff --git a/docs/compiler/pbs/pull-requests/PR-19.3-pbs-parser-ast-globals-barrel-and-lifecycle-markers.md b/docs/compiler/pbs/pull-requests/PR-19.3-pbs-parser-ast-globals-barrel-and-lifecycle-markers.md new file mode 100644 index 00000000..fa20b0f8 --- /dev/null +++ b/docs/compiler/pbs/pull-requests/PR-19.3-pbs-parser-ast-globals-barrel-and-lifecycle-markers.md @@ -0,0 +1,70 @@ +# PR-19.3 - PBS Parser and AST for Globals, Barrel, and Lifecycle Markers + +## Briefing + +Depois do corte normativo e do refactor estrutural do dependency graph, PBS precisa aceitar a nova surface da familia `19` no frontend sintatico e no AST: + +1. `declare global`, +2. entradas `global` em `mod.barrel`, +3. atributos `[Init]` e `[Frame]`. + +Esta PR faz o corte parser+AST, sem ainda fechar toda a semantica. + +## Target + +Estender parser e AST para suportar: + +1. declaracoes `global`, +2. barrel declarations `mod global` / `pub global`, +3. markers `[Init]` e `[Frame]` sobre `fn name() -> void`. + +## Dependencies + +Prerequisitos diretos: + +1. `PR-19.1` +2. `PR-19.2` + +## Scope + +1. Atualizar lexer/parser/top-level declaration parsing conforme necessario. +2. Atualizar AST model para representar globals e markers de lifecycle. +3. Atualizar barrel AST para distinguir `global` de `const`. +4. Preservar spans e attribution adequados. + +## Non-Goals + +1. Nao validar ainda dependency graph de globals. +2. Nao validar ainda `[InitAllowed]` em host methods. +3. Nao implementar lowering. +4. Nao implementar published wrapper. + +## Method + +1. Introduzir novos nodes/surfaces com identidade explicita no AST. +2. Reusar padroes atuais de attributes/markers sem heuristicas textuais. +3. Preservar recovery e diagnosticos sintaticos existentes. + +## Acceptance Criteria + +1. Parser aceita `declare global Name: T = expr;`. +2. Parser aceita `mod global Name;` e `pub global Name;`. +3. AST distingue `global` de `const`. +4. AST registra `[Init]` e `[Frame]` como markers explicitos. +5. Spans e recovery permanecem defensaveis. + +## Tests + +1. Fixtures positivas de parse para `declare global`, barrel `global`, `[Init]` e `[Frame]`. +2. Fixtures negativas de parse para formas claramente malformed. +3. Regressao do conjunto atual de parser/AST. + +## Affected Artifacts + +1. parser PBS +2. AST model PBS +3. testes de parser/AST + +## Open Questions + +1. Nenhuma. A semantica fina fica para as PRs 19.4 a 19.6. diff --git a/docs/compiler/pbs/pull-requests/PR-19.4-pbs-semantics-global-surface-identity-and-collision-validation.md b/docs/compiler/pbs/pull-requests/PR-19.4-pbs-semantics-global-surface-identity-and-collision-validation.md new file mode 100644 index 00000000..72cdfd2f --- /dev/null +++ b/docs/compiler/pbs/pull-requests/PR-19.4-pbs-semantics-global-surface-identity-and-collision-validation.md @@ -0,0 +1,76 @@ +# PR-19.4 - PBS Semantics for Global Surface, Identity, and Collision Validation + +## Briefing + +Com parser e AST aceitando a nova surface, a primeira frente semantica precisa fechar o contrato local de `declare global`: + +1. categoria declarativa distinta de `const`, +2. regras de namespace e colisao, +3. barrel/import visibility, +4. admissibilidade local do initializer. + +Esta PR nao fecha ainda ordering nem ciclo entre globals. + +## Target + +Implementar validacao semantica para: + +1. `declare global` como categoria propria, +2. barrel `global`, +3. colisao entre `fn`, `service`, `global` e `const`, +4. alias obrigatorio em imports quando houver conflito, +5. formas suportadas e nao suportadas no initializer. + +## Dependencies + +Prerequisitos diretos: + +1. `PR-19.1` +2. `PR-19.3` + +## Scope + +1. Resolver `global` no value namespace sem colapsar categoria com `const`. +2. Enforcar collisions compile-time entre top-level visible symbols. +3. Validar import through `global` barrel entry. +4. Validar formas proibidas no initializer de `global`. + +## Non-Goals + +1. Nao construir ainda o dependency graph entre globals. +2. Nao validar lifecycle markers. +3. Nao implementar lowering. + +## Method + +1. Introduzir validacao de declaracao e linking local antes do graph global. +2. Emitir diagnosticos diretamente nos spans reais do codigo do usuario. +3. Tratar barrel/import como autoridade de visibilidade para globals. + +## Acceptance Criteria + +1. `global` e `const` permanecem semanticamente distintos. +2. Collisions entre `fn` / `service` / `global` / `const` geram erro compile-time. +3. Alias e exigido quando import criaria shadowing invalido. +4. Initializers proibidos de `global` sao rejeitados com diagnostico especifico. +5. Imports de global so resolvem via barrel `global`. + +## Tests + +1. Fixtures positivas para globals simples, `new`, member-value e import por barrel `global`. +2. Fixtures negativas para: + - collision cross-category, + - import sem alias quando exigido, + - `fn` no initializer, + - `if` no initializer, + - `some(...)` / `none`. + +## Affected Artifacts + +1. validadores semanticos PBS +2. linking/import resolution PBS +3. testes de semantics/declarations + +## Open Questions + +1. Nenhuma. Dependency graph fica para `PR-19.5`. diff --git a/docs/compiler/pbs/pull-requests/PR-19.5-pbs-semantics-global-dependency-graph-and-cycle-validation.md b/docs/compiler/pbs/pull-requests/PR-19.5-pbs-semantics-global-dependency-graph-and-cycle-validation.md new file mode 100644 index 00000000..34393b3c --- /dev/null +++ b/docs/compiler/pbs/pull-requests/PR-19.5-pbs-semantics-global-dependency-graph-and-cycle-validation.md @@ -0,0 +1,66 @@ +# 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`. diff --git a/docs/compiler/pbs/pull-requests/PR-19.6-pbs-semantics-lifecycle-init-frame-and-initallowed-validation.md b/docs/compiler/pbs/pull-requests/PR-19.6-pbs-semantics-lifecycle-init-frame-and-initallowed-validation.md new file mode 100644 index 00000000..e96ab7ed --- /dev/null +++ b/docs/compiler/pbs/pull-requests/PR-19.6-pbs-semantics-lifecycle-init-frame-and-initallowed-validation.md @@ -0,0 +1,82 @@ +# PR-19.6 - PBS Semantics for Lifecycle Markers, Init Ordering, and InitAllowed Validation + +## Briefing + +Com globals e seu dependency graph fechados, a ultima frente semantica da familia `19` precisa validar a camada de lifecycle: + +1. `[Init]`, +2. `[Frame]`, +3. ordenacao por arquivo/modulo/projeto, +4. e admissibilidade de host calls via `[InitAllowed]`. + +## Target + +Implementar a validacao de: + +1. signatures de `[Init]` e `[Frame]`, +2. unicidade e colocacao de `[Frame]`, +3. um `[Init]` por arquivo, +4. elevacao do `[Init]` co-localizado com `[Frame]` para project init, +5. restricao de host calls durante init. + +## Dependencies + +Prerequisitos diretos: + +1. `PR-19.3` +2. `PR-19.5` + +## Scope + +1. Validar `fn name() -> void` para `[Init]` e `[Frame]`. +2. Validar unicidade de `[Frame]` por projeto executavel. +3. Validar que project init e o `[Init]` no mesmo arquivo do `[Frame]`. +4. Validar que arquivos podem ter no maximo um `[Init]`. +5. Validar host call em init apenas quando o target SDK carregar `[InitAllowed]`. + +## Non-Goals + +1. Nao implementar ainda wrapper publicado. +2. Nao implementar ainda callables sinteticos de lowering. +3. Nao produzir ainda artifacts de conformance finais. + +## Method + +1. Construir a semantica de lifecycle em cima do ordering ja definido para globals. +2. Tratar module init e project init como diferenca de ordenacao e papel, nao de syntax. +3. Validar `[InitAllowed]` somente em host methods da SDK. + +## Acceptance Criteria + +1. `[Init]` e `[Frame]` exigem `fn name() -> void`. +2. Existe exatamente um `[Frame]` por projeto executavel. +3. `project init` e identificado apenas no arquivo do `[Frame]`. +4. Um arquivo nao pode declarar mais de um `[Init]`. +5. Host calls em init sem `[InitAllowed]` sao rejeitadas. +6. Uso invalido de `[InitAllowed]` e rejeitado. + +## Tests + +1. Fixtures positivas para: + - file `[Init]`, + - project `[Init]`, + - `[Frame]`, + - loops em init, + - host call admissivel com `[InitAllowed]`. +2. Fixtures negativas para: + - assinatura invalida, + - multiplos `[Frame]`, + - project init fora do arquivo do `[Frame]`, + - multiplos `[Init]` no arquivo, + - host call sem `[InitAllowed]`, + - `[InitAllowed]` em target invalido. + +## Affected Artifacts + +1. validadores semanticos/lifecycle PBS +2. admission de host methods em init +3. testes de lifecycle e diagnostics + +## Open Questions + +1. Nenhuma. O passo seguinte e lowering. diff --git a/docs/compiler/pbs/pull-requests/PR-19.7-pbs-lowering-irbackend-globals-and-synthetic-callable-model.md b/docs/compiler/pbs/pull-requests/PR-19.7-pbs-lowering-irbackend-globals-and-synthetic-callable-model.md new file mode 100644 index 00000000..dc6e66ed --- /dev/null +++ b/docs/compiler/pbs/pull-requests/PR-19.7-pbs-lowering-irbackend-globals-and-synthetic-callable-model.md @@ -0,0 +1,70 @@ +# PR-19.7 - PBS Lowering for IRBackend Globals and Synthetic Callable Model + +## Briefing + +As decisions de topic `19` fixaram que globals e artifacts de lifecycle precisam ficar explicitos no `IRBackend`, sem materializacao tardia implicita. + +Esta PR faz o primeiro corte de lowering: + +1. introduz globals explicitos no handoff, +2. introduz callables sinteticos com kind proprio, +3. introduz origin metadata sintetica suficiente para remapear diagnosticos. + +## Target + +Implementar no lowering PBS -> `IRBackend`: + +1. modelagem explicita de backend globals, +2. distincao entre callables userland e callables sinteticos, +3. kinds sinteticos obrigatorios, +4. attribution/origin metadata para artifacts sinteticos. + +## Dependencies + +Prerequisitos diretos: + +1. `PR-19.1` +2. `PR-19.5` +3. `PR-19.6` + +## Scope + +1. Introduzir globals explicitos no `IRBackend`. +2. Introduzir `FILE_INIT_FRAGMENT`, `MODULE_INIT`, `PROJECT_INIT` e `PUBLISHED_FRAME_WRAPPER` como identidade estrutural. +3. Introduzir `SyntheticOrigin` ou equivalente. +4. Preservar remap para spans reais quando houver origem defensavel. + +## Non-Goals + +1. Nao publicar ainda o wrapper final em `func_id = 0`. +2. Nao fechar ainda `FRAME_RET` ownership path. +3. Nao fechar ainda conformance final. + +## Method + +1. Modelar globals e callables sinteticos como first-class artifacts. +2. Evitar conventions baseadas apenas em nome textual. +3. Garantir que diagnosticos prefiram spans reais em vez de spans sinteticos. + +## Acceptance Criteria + +1. `IRBackend` passa a carregar globals explicitamente. +2. Callables sinteticos possuem class identity observavel. +3. Artifacts sinteticos carregam attribution suficiente para remap de diagnosticos. +4. O lowering nao depende de magic late-stage para globals/lifecycle. + +## Tests + +1. Fixtures de lowering com inspecao do `IRBackend`. +2. Verificacao de kinds sinteticos presentes. +3. Verificacao de origin metadata e remap defensavel. + +## Affected Artifacts + +1. lowering PBS -> `IRBackend` +2. modelo `IRBackend` +3. testes de lowering/attribution + +## Open Questions + +1. Nenhuma. Wrapper publication fica para `PR-19.8`. diff --git a/docs/compiler/pbs/pull-requests/PR-19.8-pbs-lowering-published-wrapper-entrypoint-zero-and-frame-ret.md b/docs/compiler/pbs/pull-requests/PR-19.8-pbs-lowering-published-wrapper-entrypoint-zero-and-frame-ret.md new file mode 100644 index 00000000..39feadbf --- /dev/null +++ b/docs/compiler/pbs/pull-requests/PR-19.8-pbs-lowering-published-wrapper-entrypoint-zero-and-frame-ret.md @@ -0,0 +1,70 @@ +# PR-19.8 - PBS Lowering for Published Wrapper, Entrypoint Zero, and FRAME_RET + +## Briefing + +Com globals e callables sinteticos explicitos no `IRBackend`, a proxima PR fecha a publicacao executavel da linha `19`: + +1. wrapper sintetico publicado, +2. boot guard one-shot, +3. project/module init orchestration, +4. `[Frame]` do usuario como root logico, +5. `FRAME_RET` no wrapper, +6. entrypoint fisico `0`. + +## Target + +Implementar a publicacao executavel final alinhada as decisions `19.2`, `19.3` e `19.4`. + +## Dependencies + +Prerequisitos diretos: + +1. `PR-19.7` +2. runtime boot protocol ja implementado/alinhado fora deste dominio + +## Scope + +1. Materializar `BOOT_GUARD` oculto. +2. Compor file init fragments, module init, project init e user `[Frame]` no wrapper final. +3. Publicar o wrapper como root fisico em `func_id = 0`. +4. Mover `FRAME_RET` para o wrapper. +5. Remover qualquer dependencia restante de autoridade de entrypoint em `FrontendSpec` para PBS. + +## Non-Goals + +1. Nao alterar runtime nesta PR. +2. Nao produzir `learn`. +3. Nao fechar sozinho toda a matriz de conformance final. + +## Method + +1. Compor o wrapper em ordem semantica fechada nas decisions. +2. Garantir one-shot boot via hidden guard. +3. Tratar `[Frame]` como callable logical-root invocado pelo wrapper, nao como entrypoint fisico publicado. + +## Acceptance Criteria + +1. O wrapper sintetico publicado existe no artifact executavel. +2. O wrapper ocupa `func_id = 0`. +3. `FRAME_RET` aparece no wrapper path, nao no final do body do user `[Frame]`. +4. Boot/inits executam uma unica vez. +5. O pipeline PBS deixa de depender de autoridade de entrypoint em `FrontendSpec`. + +## Tests + +1. Fixtures de artifact/lowering provando: + - wrapper publicado, + - boot guard, + - entrypoint `0`, + - `FRAME_RET` no wrapper. +2. Integracao compiler/runtime se o harness local ja estiver disponivel no studio. + +## Affected Artifacts + +1. lowering PBS -> `IRBackend`/`IRVM` +2. publication contract no pipeline do compiler +3. pontos PBS que ainda assumam `FrontendSpec` como autoridade de entrypoint + +## Open Questions + +1. Nenhuma. A evidencia final fica para `PR-19.9`. diff --git a/docs/compiler/pbs/pull-requests/PR-19.9-pbs-conformance-fixtures-diagnostics-and-gate-closure.md b/docs/compiler/pbs/pull-requests/PR-19.9-pbs-conformance-fixtures-diagnostics-and-gate-closure.md new file mode 100644 index 00000000..a45c4680 --- /dev/null +++ b/docs/compiler/pbs/pull-requests/PR-19.9-pbs-conformance-fixtures-diagnostics-and-gate-closure.md @@ -0,0 +1,73 @@ +# PR-19.9 - PBS Conformance Fixtures, Diagnostics, and Gate Closure for Topic 19 + +## Briefing + +Depois da propagacao normativa, da superficie parser/AST, da semantica e do lowering com wrapper, a familia `19` precisa de uma PR final de fechamento operacional: + +1. consolidar fixtures, +2. endurecer diagnostics observaveis, +3. fechar gates de conformance, +4. e provar a linha end-to-end. + +`learn` permanece fora desta PR e sera tratado depois, quando a implementacao ja estiver estavel. + +## Target + +Fechar a evidencia executavel e o gate de aceitacao da familia `19`. + +## Dependencies + +Prerequisitos diretos: + +1. `PR-19.1` +2. `PR-19.4` +3. `PR-19.5` +4. `PR-19.6` +5. `PR-19.7` +6. `PR-19.8` + +## Scope + +1. Consolidar fixtures positivas da linha `19`. +2. Consolidar fixtures negativas de frontend/static semantics. +3. Consolidar fixtures negativas de lowering/structural validation. +4. Ligar a matrix/gates para evitar regressao. +5. Verificar integracao com runtime protocol ja alinhado. + +## Non-Goals + +1. Nao reabrir semantics ou lowering. +2. Nao alterar arquitetura. +3. Nao produzir ainda `learn`. + +## Method + +1. Seguir exatamente a matriz aceita em `Diagnostics, Manifest Propagation, and Conformance Coverage Decision.md`. +2. Preferir fixtures pequenas e isoladas por failure mode. +3. Tornar obrigatorios os checks estruturais da linha `19`. + +## Acceptance Criteria + +1. Existe fixture positiva cobrindo globals + file `[Init]` + project `[Init]` + `[Frame]`. +2. Existe cobertura negativa para os diagnostics obrigatorios da familia `19`. +3. Existe cobertura negativa para wrapper ausente, entrypoint fora de `0`, boot guard ausente e origin metadata ausente. +4. A linha de gates/conformance falha em regressao real desses contratos. +5. O resultado deixa a familia `19` pronta para `learn`. + +## Tests + +1. Suite de frontend semantics relevante para globals/lifecycle. +2. Suite de lowering/artifact relevante para wrapper/entrypoint. +3. Gate/spec-to-test/conformance harness aplicavel no repo. +4. Integracao compiler/runtime quando o harness local existir. + +## Affected Artifacts + +1. testes de frontend +2. testes de lowering +3. fixtures de artifact/conformance +4. gates CI/conformance relevantes + +## Open Questions + +1. Nenhuma. Esta PR e de fechamento e endurecimento.