8.3 KiB
Diagnostics, Manifest Propagation, and Conformance Coverage Agenda
Status
Closed
Parent Agenda
This agenda derives from:
19. Globals, Synthetic Module Init, and FRAME_RET Agenda
Expected fixed inputs from previous stages:
19.1. PBS Globals Surface, Identity, and Module Boundaries Agenda19.2. PBS Lifecycle Markers, Program Init, and Frame Root Semantics Agenda19.3. Published Entrypoint, Synthetic Wrapper, and FRAME_RET Ownership Agenda19.4. Globals and Lifecycle Lowering to IRBackend/IRVM Agenda
Purpose
Consolidate the propagation layer of topic 19 after the architectural decisions are already fixed.
This agenda must close:
- the diagnostics surface;
- manifest-facing propagation details;
- fixture and conformance coverage;
- and the acceptance gates for declaring topic
19ready to become a decision plus implementation plan.
Domain Owner
docs/compiler/pbs
Este tema pertence ao domínio PBS, mas toca tanto specs normativas quanto critérios de teste e artefato publicado.
Context
Depois que surface, lifecycle, published entrypoint e lowering estiverem fechados, ainda faltará consolidar:
- quais erros novos são obrigatórios;
- em que fase cada erro aparece;
- como o manifest final reflete a arquitetura escolhida;
- e que coverage mínima de fixtures e gates garante que a série 19 ficou estável.
Esta agenda é de consolidação. Ela não deve rediscutir a arquitetura central.
Inputs Already Fixed Elsewhere
Os seguintes inputs devem ser tratados como fixos aqui:
- shape de globals vindo de
19.1; - lifecycle vindo de
19.2; - publication contract vindo de
19.3; - lowering mechanics vindo de
19.4.
Decisions To Produce
Esta agenda deve produzir direção suficiente para fechar:
- catálogo mínimo de diagnósticos;
- fase responsável por cada diagnóstico;
- propagação final para manifest/specs;
- fixture matrix mínima;
- critérios de aceite para converter a série 19 em
decisione depoispull-request/plan.
Core Questions
- Quais diagnósticos são obrigatórios para
declare global, imports/reexports e ciclos? - Quais diagnósticos são obrigatórios para
[Init]e[Frame]? - Quais erros pertencem a parser/AST, static semantics/linking, lowering, ou toolchain full pipeline?
- Como o manifest final deve refletir entrypoint lógico e/ou físico escolhido em
19.3? - Que fixtures mínimas precisam existir para globals, module init, boot failure, wrapper e
FRAME_RET? - Em que ponto a configuração explícita antiga de entrypoint em
FrontendSpecpode ser considerada removida? - Quais gates de conformance precisam ser atualizados para cobrir a série 19?
Options
Option A
Consolidar diagnostics e coverage somente depois que os quatro stages anteriores estiverem fechados, com fixture matrix explícita por fase.
Option B
Começar fixtures e diagnostics cedo, mesmo com arquitetura ainda mudando.
Tradeoffs
Option A
- Prós:
- reduz retrabalho;
- evita congelar erro e coverage cedo demais;
- combina melhor com a disciplina de umbrella agenda.
- Contras:
- posterga parte da validação final.
Option B
- Prós:
- feedback mais cedo.
- Contras:
- alto risco de churn e reabertura de artefatos;
- conflita com os locking rules da umbrella 19.
Recommendation
Seguir com a Option A.
Current Direction
Os pontos abaixo já podem ser tratados como direção fechada desta agenda, salvo objeção nova forte:
- a 19.5 não reabre arquitetura; ela consolida diagnostics, propagation e coverage da série 19;
- o catálogo final deve ser agrupado por fase, não apenas por ordem histórica das agendas;
- a propagation final deve nomear explicitamente:
- PBS specs,
- general compiler specs,
- runtime cross-domain owner,
- e
learn;
- a conformance matrix mínima deve cobrir:
- positive source flow,
- negative frontend cases,
- negative lowering/structural cases,
- runtime integration.
Consolidated Diagnostics Direction
Esta agenda fecha a seguinte consolidação de diagnósticos por fase.
Frontend / Static Semantics
global initializer uses unsupported formglobal dependency cycle detectedimported symbol shadows existing visible symbol; alias requiredglobal import must resolve through a global barrel entryinit function must have signature fn name() -> voidframe function must have signature fn name() -> voidmultiple module init functions detectedmultiple project init functions detectedmultiple frame functions detectedmissing frame function for executable projectInit attribute target invalidproject init must be colocated with frameInitAllowed is valid only on SDK host methodshost call not allowed during init
Lowering / Structural Validation
synthetic wrapper entrypoint missingpublished entrypoint is not function index 0hidden boot guard is missingsynthetic callable origin missing
Runtime / Boot Failure
boot failed during module initboot failed during project init
Também fica fechada a seguinte leitura:
- diagnósticos de frontend/static semantics são user-facing do compiler;
- checks de lowering podem aparecer como diagnostics, validation failures ou invariant violations, desde que a falha seja observável e testável;
- falhas de boot do runtime pertencem à superfície de falha operacional, não ao frontend static diagnostic catalog.
Propagation Targets Direction
Esta agenda fecha a seguinte lista mínima de propagation targets.
PBS Specs
3. Core Syntax Specification.md4. Static Semantics Specification.md9. Dynamic Semantics Specification.md11. AST Specification.md12. Diagnostics Specification.md13. Lowering IRBackend Specification.md7. Cartridge Manifest and Runtime Capabilities Specification.md
General Compiler Specs
15. Bytecode and PBX Mapping Specification.md20. IRBackend to IRVM Lowering Specification.md
Runtime Cross-Domain Owner
../runtime/docs/runtime/agendas/025-cartridge-manifest-entrypoint-removal-and-runtime-protocol.md
Learn
- um learn consolidado para globals + lifecycle + published wrapper + entrypoint protocol
- com explicação source-first e depois lowering/publication
Conformance Matrix Direction
Esta agenda fecha a seguinte matrix mínima de coverage.
Positive Coverage
Projeto com:
declare global[Init]por arquivo[Init]de projeto[Frame]
Assert mínimo:
- globals aceitos
- ordering aceito
- wrapper publicado
func_id = 0FRAME_RETno wrapper- boot guard presente
Negative Frontend Coverage
globalcomfnno initializerglobalcomif- ciclo entre globals
- collision entre import e
const/global/service/fn [Init]com assinatura errada[Frame]com assinatura errada- dois
[Frame] - dois
project init project initfora do arquivo do[Frame]- host call em init sem
[InitAllowed] [InitAllowed]em target inválido
Negative Lowering Coverage
- ausência de wrapper publicado
- wrapper fora do índice
0 - ausência de boot guard
- callable sintético sem origin metadata
Runtime Integration Coverage
- artefato sobe com entrypoint físico
0 - runtime não depende de export nominal para boot
- boot failure em module init gera falha coerente
- boot failure em project init gera falha coerente
Exit Direction
Esta agenda considera a série 19 pronta para virar execução quando houver:
- catálogo consolidado de diagnósticos fechado;
- propagation targets explicitamente nomeados;
- conformance matrix mínima aceita;
- owner explícito para a frente cross-domain de runtime.
Expected Spec Material
Se esta agenda fechar, a propagação esperada atinge pelo menos:
7. Cartridge Manifest and Runtime Capabilities Specification.md12. Diagnostics Specification.md13. Lowering IRBackend Specification.md- docs de conformance/fixtures relevantes
Non-Goals
Esta agenda não deve:
- redefinir semântica de globals;
- redefinir lifecycle;
- redefinir wrapper ou ownership de
FRAME_RET; - redefinir shape de IR.
Next Step
Esta agenda foi consolidada em:
docs/compiler/pbs/decisions/Diagnostics, Manifest Propagation, and Conformance Coverage Decision.md
Com isso, a família 19 fica pronta para ser decomposta em pull-request/plan de execução.