# Compras → consulta de Stock na composição QA — 03/11/2026 `SGF-STOCK-COMPOSED-SOURCE-QA-v1` liga a consulta de Stock ao livro físico da demonstração integrada de Compras. Uma recepção confirmada pelo workflow original passa a ser observada no Stock do mesmo host, sem copiar movimentos, saldos ou criar outro escritor. ## Entrega O adaptador `CompositionStockRead` reutiliza `InventoryReader` e `InventoryReadSession`. O controlador antigo mantém o percurso anterior quando a nova opção, desactivada por omissão, não está ligada. A interface React de Stock, os menus e a navegação aceite permanecem inalterados. O novo perfil de armazém QA recebe apenas o direito existente `stock.view`, na sua empresa/unidade. A concessão foi apresentada antes de ser aplicada à fixture. Uma conta técnica distinta possui SELECT apenas sobre artigos, armazéns e movimentos; não recebe acesso a recepções, auditoria ou obrigações. Nenhum direito real foi alterado. O adaptador verifica ambiente, bases, utilizadores técnicos, cluster físico, perfil privado e correspondência pessoa/empresa/unidade/armazéns. Mantém bloqueios partilhados sobre a autoridade do host durante a leitura; contenção tem limites SQL de dois segundos para bloqueios e três para instruções. A consulta física usa uma transacção própria REPEATABLE READ/READ ONLY, sem adquirir o mutex de escrita nativo. Os tokens de consulta incluem pessoa, contexto de sessão, filtros, origem física e mapeamento. Mudanças exigem actualização. O livro físico tem um trigger append-only criado exclusivamente nas duas bases QA novas, para tornar efectiva a premissa usada pela revisão count/max do leitor. Catálogo e armazéns continuam a ter impressões próprias. Não se instalou este trigger no destino nem nas demonstrações anteriores. ## Provas [Prova consolidada](proofs/stock-composed-source-20261103.json): 41 verificações novas, 31 da integração HTTP/SQL e dez da demonstração/guardas. Duas guardas chamam directamente o adaptador; não são provas de middleware. A preparação mínima percorreu requisição/propostas/adjudicação/ordem pelos workflows efectivos. A fronteira alterada confirmou uma recepção de 1 UN, recuperou a mesma confirmação sem duplicação e observou o mesmo ID de movimento e quantidade exacta `1000` no Stock. Não criou factura, obrigação ou pagamento. Foram verificados páginas de 25/100, catálogo além de 100, pesquisa literal, projecção sem fotografia financeira, isolamento de módulo/unidade/armazém, revogação de permissão, contexto antigo, revisão após novo movimento, conta SQL sem escrita/acesso financeiro, falha de autenticação da origem e recuperação. A leitura terminou mesmo com o mutex de escrita nativo retido. Uma retenção do direito no host devolveu 503 limitado e recuperou após libertação. A primeira tentativa parou numa asserção demasiado restrita de recusa: o contexto Compras devolveu 409 antes da conferência de Stock, em vez de 403. A preparação já concluída foi recuperada sem emitir outra ordem. O resultado final contém as 31 verificações aprovadas. Não se repetiram suites anteriores nem se somaram as suas contagens. ## Demonstração Nova composição isolada em **8083**, inicialmente sem requisições principais, recepções ou movimentos. Entrada: ; no menu Stock, abrir **Existências**. O mesmo perfil pode entrar explicitamente em Compras para recepcionar e regressar ao Stock. A consulta não troca de módulo automaticamente. As provas HTTP confirmaram a página inicial, o bundle servido, a sessão e a origem vazia autorizada. As consultas preservaram artigos/armazéns/movimentos/auditoria/concessões. A base de regressão contém o percurso de prova; a demonstração permanece vazia para a equipa trabalhar. ## Limites O catálogo é do tenant de origem; armazéns e movimentos são apenas dos armazéns mapeados. Não foram acrescentadas reservas, bloqueios, disponibilidade calculada, valorização, custos, ligações de oficina ou efeitos financeiros. A evidência documental completa continua no percurso autorizado de Compras. Revisão visual, acessibilidade, carga sustentada, compatibilidade de instalação e capacidade de implantação continuam pendentes. O bundle servido não constitui prova visual. As guardas mantêm esta composição exclusivamente sintética; não há ligação operacional instalada. Preservados os seis registos sem associação, a cache bloqueada, provas, checkpoints, demonstrações anteriores e trabalho alheio. Sem publicação, activação de Compras, migração no destino, concessão real, aceitação ou checkpoint presumido.