1.9 KiB
1.9 KiB
PR-009 - PBS Diagnostics Contract V1
Briefing
O modelo atual de Diagnostic nao contem fase, template id nem placeholders estaveis, o que impede conformidade com o contrato de diagnosticos da spec.
Este PR eleva o contrato de diagnosticos para v1 sem acoplar a UI.
Target
- Specs:
docs/pbs/specs/12. Diagnostics Specification.md(secoes 6, 7, 8, 9, 10)docs/pbs/specs/13. Lowering IRBackend Specification.md(secao 7)
- Codigo:
prometeu-compiler/prometeu-compiler-core/src/main/java/p/studio/compiler/source/diagnostics/Diagnostic.javaprometeu-compiler/prometeu-compiler-core/src/main/java/p/studio/compiler/source/diagnostics/DiagnosticSink.java- emissores de diagnostico no frontend PBS.
Method
- Estender
Diagnosticcomphase,templateIdeplaceholdersnomeados. - Definir taxonomia minima de fases externas:
syntax,static-semantics,manifest-import-resolution,linking,host-admission,load-facing-rejection. - Preservar
code,severity,spanerelated spanscomo identidade estavel. - Introduzir helpers para emissao padronizada por fase/template.
- Mapear erros atuais de lexer/parser/frontend para o novo contrato.
Acceptance Criteria
- Todo diagnostico PBS emitido tem
code,severity,phase,templateId,primary spane mensagem renderizada. - Duplicatas/conflitos incluem ao menos um
related spanquando aplicavel. - Identidade de diagnostico independe do texto localizado.
- Nenhuma fase obrigatoria e colapsada de forma opaca para o usuario.
- Chamadas legadas continuam compilando com caminho de migracao claro.
Tests
DiagnosticSinkTeste novos testes de contrato para:- presenca obrigatoria de campos;
- estabilidade de
templateId/placeholders; - caso com
related span; - serializacao/
toStringcom fase e codigo.
- Testes de integracao no frontend PBS garantindo fase correta por erro.