# 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.
