# PR-13.1 - Flow Body Analyzer Context and Entrypoint Foundation ## Briefing `PbsFlowBodyAnalyzer` concentra montagem de contexto, iteracao de callables e delegacao recursiva de block/statement analysis em uma unica classe. Esta PR introduz a base estrutural para decomposicao sem alterar funcionalidade: contexto compartilhado, encapsulamento dos argumentos recorrentes e uma fachada mais clara para a classe. ## Motivation ### Dor atual que esta PR resolve 1. A classe repassa muitos parametros repetidos entre `validate`, `validateCallableBody`, `analyzeBlock` e `analyzeStatement`. 2. Extracoes futuras ficam arriscadas sem um contexto comum explicito. 3. A fundacao estrutural reduz risco antes de mover regras de completion, statements e assignment resolution. ## Target Estabelecer uma base segura para o refactor: 1. contexto compartilhado de body analysis, 2. encapsulamento de `returnType`, `resultErrorName`, `receiverType`, `model` e `diagnostics`, 3. fachada pequena para `validate(...)`. ## Dependencies Nenhuma. ## Scope 1. Introduzir um contexto/request object para analise de corpo. 2. Reorganizar `validate` e `validateCallableBody` sem mover ainda regras complexas. 3. Preservar a relacao atual com `PbsFlowExpressionAnalyzer`. ## Non-Goals 1. Nao alterar inferencia de tipos ou diagnosticos. 2. Nao alterar `Model.from(...)`. 3. Nao mover ainda completion analysis ou assignment target resolution para classes separadas. ## Method ### O que deve ser feito explicitamente 1. Criar um contexto pequeno e explicito para analise recursiva de blocos/callables. 2. Manter `PbsFlowBodyAnalyzer` como entrypoint package-private. 3. Preservar a ordem atual de validacao e emissao de erros. ## Acceptance Criteria 1. `PbsFlowBodyAnalyzer` continua com o mesmo contrato observavel. 2. A quantidade de parametros repetidos nas chamadas internas e reduzida. 3. Nao ha mudanca funcional em flow analysis, completion ou diagnosticos. ## Tests 1. `:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsControlFlowTest*` 2. `:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsDeclarationsTest*` 3. `:prometeu-compiler:frontends:prometeu-frontend-pbs:test` ## Affected Documents 1. Nenhum documento normativo. ## Open Questions 1. O contexto deve ser derivado imutavelmente por bloco ou mutado localmente. A recomendacao e derivacao leve para reduzir risco de vazamento entre branches.