diff --git a/docs/pbs/pull-requests/INDEX.md b/docs/pbs/pull-requests/INDEX.md index ae0cea5c..44f6a29e 100644 --- a/docs/pbs/pull-requests/INDEX.md +++ b/docs/pbs/pull-requests/INDEX.md @@ -125,3 +125,10 @@ Foco: fechar `partial/deferred` relevantes da matriz normativa e endurecer evide 4. `PR-06.4-gate-i-runtime-line-repeatability-ci.md` 5. `PR-06.5-conformance-matrix-hard-gate-policy.md` 6. `PR-06.6-spawn-yield-v1-or-claim-rescope.md` + +### Onda O7 - Partial Closure Before IDE Focus + +Foco: eliminar os dois `partial` remanescentes na matriz backend antes de mover foco principal para IDE. + +1. `PR-07.1-optimize-irvm-span-source-hook-preservation.md` +2. `PR-07.2-pbs-callsite-category-no-textual-heuristics-regression.md` diff --git a/docs/pbs/pull-requests/PR-07.1-optimize-irvm-span-source-hook-preservation.md b/docs/pbs/pull-requests/PR-07.1-optimize-irvm-span-source-hook-preservation.md new file mode 100644 index 00000000..e6ab736d --- /dev/null +++ b/docs/pbs/pull-requests/PR-07.1-optimize-irvm-span-source-hook-preservation.md @@ -0,0 +1,73 @@ +# PR-07.1 - OptimizeIRVM Span and Source-Hook Preservation + +## Briefing + +A matriz de conformidade ainda marca `G21-7.5` como `partial`. + +Hoje existe evidencia de spans no lowering, mas falta regressao dedicada provando que passes de `OptimizeIRVM` preservam hooks de atribuicao de origem (spans/source hooks) apos reescritas de instrucoes e remapeamento de saltos. + +## Motivation + +### Dor atual que esta PR resolve + +1. Risco de regressao silenciosa em spans durante otimização. +2. Evidencia insuficiente para fechar `G21-7.5`. +3. Diagnosticos pos-otimizacao podem perder rastreabilidade sem prova dedicada. + +## Target + +Fechar `G21-7.5` com suite de regressao explicita para preservacao de source hooks/spans no caminho `LowerToIRVM -> OptimizeIRVM -> EmitBytecode`. + +## Dependencies + +Prerequisitos diretos: + +1. `PR-06.2` (harness de equivalencia de otimizacao). +2. `PR-06.3` (passes reais de reescrita/remocao no optimizer). + +## Scope + +1. Testes dedicados para verificacao de span retention por pass: + - `UnreachableInstructionEliminationPass`, + - `NormalizeRedundantJumpTargetsPass`, + - `SimplifyJumpToNextPcPass`. +2. Assercoes de preservacao de `BytecodeEmitter.Operation.span` para operacoes sobreviventes. +3. Assercoes de preservacao de spans em operacoes de salto apos remapeamento de target. +4. Atualizacao da matriz para converter `G21-7.5` de `partial` para `pass`. + +## Non-Goals + +1. Nao introduz novo formato de source map. +2. Nao altera contrato de diagnostico fora do backend pipeline. + +## Method + +### O que deve ser feito explicitamente + +1. Criar fixture IRVM com spans distintos por instrucao/op. +2. Executar optimize com passes reais e comparar mapeamento de spans esperado no output. +3. Incluir caso com salto reescrito para validar span do salto apos remap. +4. Incluir caso com eliminacao de instrucoes para validar que operacoes restantes mantem spans originais. +5. Atualizar matriz (`docs/general/specs/22...`) com referencias aos novos testes. + +## Acceptance Criteria + +1. Existe suite de teste dedicada para preservacao de spans/source hooks no optimizer. +2. Reescritas de salto preservam spans da operacao original. +3. Eliminacao de instrucoes nao corrompe spans das operacoes remanescentes. +4. `G21-7.5` evolui para `pass`. + +## Tests + +1. Novos testes em `backend/irvm` (ex.: `OptimizeIRVMSourceAttributionTest` ou equivalente). +2. Reexecucao obrigatoria: + - `:prometeu-compiler:prometeu-build-pipeline:test` + +## Affected Documents + +1. `docs/general/specs/21. IRVM Optimization Pipeline Specification.md` +2. `docs/general/specs/22. Backend Spec-to-Test Conformance Matrix.md` + +## Open Questions + +Sem bloqueios arquiteturais. diff --git a/docs/pbs/pull-requests/PR-07.2-pbs-callsite-category-no-textual-heuristics-regression.md b/docs/pbs/pull-requests/PR-07.2-pbs-callsite-category-no-textual-heuristics-regression.md new file mode 100644 index 00000000..4828f2ed --- /dev/null +++ b/docs/pbs/pull-requests/PR-07.2-pbs-callsite-category-no-textual-heuristics-regression.md @@ -0,0 +1,74 @@ +# PR-07.2 - PBS Callsite Category Without Textual Heuristics (Regression Fixtures) + +## Briefing + +A matriz de conformidade ainda marca `PBS13-12.2.2` como `partial`. + +Ja existe enforce de metadados no contrato executavel, mas falta fixture regressiva dedicada para provar que o frontend/backend nao classifica callsite por heuristica textual quando identidades entram em colisao. + +## Motivation + +### Dor atual que esta PR resolve + +1. Ambiguidade residual na evidencia de `CALL_FUNC/CALL_HOST/CALL_INTRINSIC`. +2. Risco de regressao para classificacao por nome textual em casos limítrofes. +3. `PBS13-12.2.2` permanece `partial` por falta de caso dedicado de identidade ambigua. + +## Target + +Fechar `PBS13-12.2.2` com fixtures explicitas de identidade e ambiguidade, garantindo que categoria de callsite e derivada de identidade semantica/admitida, nao de heuristica textual. + +## Dependencies + +Prerequisitos diretos: + +1. `PR-05.2` (classificacao de callsite por identidade semantica). +2. `PR-05.0.1` e `PR-05.0.6` (name/host identity foundation). + +## Scope + +1. Fixture positiva: + - nome textual com "cara de host", mas identidade resolvida como callable local -> deve lower para `CALL_FUNC`. +2. Fixture positiva: + - nome textual sobreposto entre dominios, com identidade univoca admitida para host ou intrinsic -> deve lower categoria correta. +3. Fixture negativa dedicada: + - colisao real entre categorias (callable/host/intrinsic) para o mesmo callsite -> rejeicao deterministica por ambiguidade. +4. Atualizacao de matriz para converter `PBS13-12.2.2` de `partial` para `pass`. + +## Non-Goals + +1. Nao altera gramatica PBS. +2. Nao redefine regras de admission de host/intrinsics fora do escopo desta prova. + +## Method + +### O que deve ser feito explicitamente + +1. Adicionar testes em `PbsFrontendCompilerTest` (ou suite semantica correlata) para os tres cenarios acima. +2. Assertar `InstructionKind` resultante (`CALL_FUNC`, `CALL_HOST`, `CALL_INTRINSIC`) em casos positivos. +3. Assertar codigo diagnostico deterministico em caso ambiguo. +4. Garantir que nao ha branch de fallback por string pattern no caminho de lowering executavel. +5. Atualizar matriz de conformidade com referencias dos novos testes. + +## Acceptance Criteria + +1. Existe fixture dedicada cobrindo ambiguidade de categoria por identidade. +2. Casos positivos provam classificacao correta mesmo quando nome textual engana. +3. Caso ambiguo falha deterministicamente com diagnostico estavel. +4. `PBS13-12.2.2` evolui para `pass`. + +## Tests + +1. Novos testes no frontend PBS: + - `:prometeu-compiler:frontends:prometeu-frontend-pbs:test` +2. Reexecucao obrigatoria de integracao backend: + - `:prometeu-compiler:prometeu-build-pipeline:test` + +## Affected Documents + +1. `docs/pbs/specs/13. Lowering IRBackend Specification.md` +2. `docs/general/specs/22. Backend Spec-to-Test Conformance Matrix.md` + +## Open Questions + +Sem bloqueios arquiteturais.