globals and synthetic inits
This commit is contained in:
parent
42255c38d0
commit
2c13b3db8b
@ -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`
|
||||
|
||||
@ -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.
|
||||
@ -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.
|
||||
@ -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.
|
||||
@ -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`.
|
||||
@ -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`.
|
||||
@ -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.
|
||||
@ -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`.
|
||||
@ -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`.
|
||||
@ -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.
|
||||
Loading…
x
Reference in New Issue
Block a user