# PR-05.0.4 - Callable Shape and Signature Interning ## Briefing O FE ainda monta chaves semanticas por concat string (`name#arity`, `signatureSurface`, `typeShape`). Esta PR cria internacao para superfícies de assinatura/shape e remove concatenação textual como identidade primaria. ## Motivation ### Dor que esta PR resolve 1. Chave textual e fragil para evolucao de formato. 2. Custo de alocacao/hash desnecessario em caminhos quentes. 3. Risco de colisao logica por normalizacao incompleta. ## Target Internar shapes de callable e superfícies de assinatura em tabela dedicada, com ID estavel. ## Scope 1. Estruturas de assinatura do linking e lowering. 2. `CallableSignatureRef` com suporte a referencia internada de shape. 3. Remocao gradual de `callableArityKey` e derivados string. ## Non-Goals 1. Nao altera regra de overload. 2. Nao altera formato externo de diagnostico. ## Method ### O que deve ser feito explicitamente 1. Introduzir tabela de shapes (ex.: `CallableShapeTable` / `TypeSurfaceTable`). 2. Representar identidade de callable por tupla tipada (`NameId`, aridade, `ShapeId`). 3. Atualizar: - linking (`FunctionSymbolKey`), - FE lowering executavel (`callableIdsByNameAndArity`), - referencias em `CallableSignatureRef`. 4. Manter conversao para string apenas para logs/debug. ## Acceptance Criteria 1. Fluxo principal de resolução de callable nao depende de concat string. 2. Determinismo de shape/signature comprovado por ID internado. 3. Nenhuma regressao de resolução de overload/documentada. ## Tests 1. Teste de internacao idempotente para shape identico. 2. Testes de distinção para shapes diferentes com mesmo nome/arity. ## 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.