# PR-05.2 - IRBackend Callsite Classification by Semantic Identity ## Briefing A classificação de callsites no frontend executável ainda depende de heurística textual de callee. Esta PR torna obrigatória a classificação por identidade semântica resolvida no binding, eliminando inferência por nome/forma textual. ## Motivation ### Dor atual que esta PR resolve 1. Risco de classificar callsite no bucket errado (`CALL_FUNC`, `CALL_HOST`, `CALL_INTRINSIC`). 2. Ambiguidade em member/bind/group callee com nome coincidente. 3. Falta de robustez em evolução de sintaxe semântica do FE. ## Target Fronteira `PBS FE -> IRBackend` com identidade de callsite estável e sem heurística textual para decisão de categoria. ## Dependencies Prerequisitos diretos: 1. `PR-05.0.1` (NameTable compartilhada). 2. `PR-05.0.2` (ModuleId no FE). 3. `PR-05.0.3` (CallableId/IntrinsicId tipados no contrato). 4. `PR-05.0.4` (shape/signature internadas). ## Scope 1. Resultado de resolução semântica para chamadas. 2. Estrutura de lowering para carregar identidade resolvida. 3. Diagnósticos quando identidade não estiver resolvida no ponto exigido. ## Non-Goals 1. Não muda política de overload além do já definido em semântica. 2. Não introduz novas categorias de callsite. ## Method ### O que deve ser feito explicitamente 1. Propagar do analisador semântico para lowering um descritor explícito de destino de chamada. 2. O descritor deve carregar identidade canônica tipada (ao menos categoria + id alvo), sem depender de nome textual. 3. Remover dependência de `extractSimpleCalleeName` para classificação. 4. Exigir que cada callsite emitido em `IRBackend` esteja em exatamente uma categoria válida. 5. Emitir erro determinístico quando o FE não possuir identidade semântica suficiente para classificar o callsite. 6. Validar compatibilidade de metadados obrigatórios por categoria no ato de emissão. ## Acceptance Criteria 1. Classificação de callsite não depende de parsing textual de callee. 2. Cada callsite em `IRBackend` possui categoria única e metadados obrigatórios. 3. Casos ambíguos geram diagnóstico estável em fase correta, sem fallback heurístico. 4. Não há regressão em casos já válidos. 5. O payload de callsite no contrato executável é tipado por ID, não por inferência textual. ## Tests 1. Testes positivos para chamadas de função, host e intrínseco com diferentes formas sintáticas. 2. Testes negativos de ambiguidade e callee não resolvido. 3. Testes de estabilidade diagnóstica (code/phase/span). ## Affected Documents 1. `docs/pbs/specs/13. Lowering IRBackend Specification.md` 2. `docs/general/specs/20. IRBackend to IRVM Lowering Specification.md` ## Open Questions Sem bloqueios arquiteturais.