# PR-05.0.3 - IRBackend Typed Callable and Intrinsic IDs

## Briefing

O contrato `IRBackendExecutableFunction` ainda carrega `callableId`, `calleeCallableId` e `intrinsicId` como `int/Integer`.

Esta PR tipa esses campos com `CallableId` e `IntrinsicId`, alinhando model com Dense Tables e reduzindo erro de classe de ID.

## Motivation

### Dor que esta PR resolve

1. Mistura acidental entre dominios de ID diferentes em tempo de desenvolvimento.
2. Validacoes repetitivas de faixa/semantica por usar primitivo nu.
3. API de backend menos segura para evolucao de lowering/remap.

## Target

Evoluir o contrato de FE->BE para IDs tipados em vez de inteiros crus.

## Scope

1. `IRBackendExecutableFunction` e metadados de instrucao.
2. `IRBackendAggregator` remap de callables e intrinsecos.
3. Ajustes de serializers/tests que assumem `int`.

## Non-Goals

1. Nao muda semantica de chamada.
2. Nao muda ordenacao de remap por si so.

## Method

### O que deve ser feito explicitamente

1. Trocar:
   - `int callableId` -> `CallableId`,
   - `Integer calleeCallableId` -> `CallableId` (nullable quando aplicavel),
   - `int intrinsicId` -> `IntrinsicId`.
2. Atualizar construtores/guards para validar `.isNone()` e nao-negatividade via tipo.
3. Atualizar `IRBackendAggregator` para trabalhar com vetores/tabelas de IDs tipados.
4. Atualizar FE lowering PBS para emitir IDs tipados desde origem.

## Acceptance Criteria

1. Nao ha mais campos de callable/intrinsic ID como inteiro cru no contrato executavel.
2. Tentativas de misturar dominio de ID falham em compile-time.
3. Testes de remap e merge seguem verdes.

## Tests

1. Testes unitarios de construcao de instrucao com tipos corretos/incorretos.
2. Testes de agregacao multi-arquivo validando remap tipado.

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