# Stock: saídas e transferências pelo mesmo livro físico Actualização de10/11/2026: código instalado na8085, **ainda desligado e sem novos acessos concedidos**. A continuação acrescentou contagem física sem lotes, aplicação da diferença e selector de equipamento.38 verificações PG e15 de interface, mais seis leituras/guardas HTTP dirigidas na8085. Ver `docs/proofs/sgf-six-module-composition-20261110.json`. Não fecha o conjunto dos seis módulos. Os30/11 casos abaixo descrevem a primeira versão e não são somados novamente. ## Percurso implementado `/stock/operations` permite escolher explicitamente artigo, armazém e responsável, pesquisar os catálogos por páginas25/100, indicar quantidade exacta, referência, destino e fundamento. Não selecciona o primeiro resultado. Mostra o impacto antes da confirmação individual. Disponibiliza histórico paginado e recuperação pelo mesmo recibo após resposta incerta. O adaptador chama o `StockOperationController`/`StockWorkflow` original, fixado pelo manifesto da composição. A saída usa o mesmo `IssueMovementWriter` já aceite; foi acrescentada a distribuição0.1.0 exigida pelo adaptador, byte a byte igual à distribuição original e ao writer já existente neste repositório. Não há motor de saldos novo. Uma transferência é **imediata e atómica**: dois movimentos opostos na mesma transacção. Não representa expedição em trânsito com recepção posterior. A quantidade e unidade mantêm-se; não cria valorização ou lançamento contabilístico. A prévia executa o writer num savepoint e reverte operações, movimentos, auditoria e dependências. Sequências PostgreSQL podem avançar. A confirmação revalida contexto/pessoa/direito/mapeamento, saldo e versão; executa novamente as políticas nativas e compara o impacto. Uma alteração de dependências recusa e reverte o comando. O recibo `sgf.stock.command`, o estado anterior, o impacto, o fundamento e os efeitos físicos são gravados na mesma transacção nativa. Repetição revalida autoridade e recupera o mesmo identificador. O runtime mantém as guardas físicas QA existentes. Armazém de origem e destino têm de constar do mapa explícito da pessoa/empresa/unidade. Um mapa adicional de Stock, quando necessário, exige SHA configurado e caminho fixo privado; não altera o binding de Compras. Bloqueios têm limite5s e resposta503 recuperável; comandos longos têm limite15s. Nenhuma destas capacidades fica activa por omissão. ## Direitos propostos — ainda não concedidos na8085 | Direito | Âmbito | Capacidade | | --- | --- | --- | | `stock.view` existente | Empresa/unidade e armazéns explicitamente ligados | Consultar os catálogos, saldo e histórico autorizados | | `stock.operations.prepare` novo | Empresa/unidade e mesmos armazéns | Preparar a conferência de saída/transferência | | `stock.operations.confirm` novo | Empresa/unidade e mesmos armazéns | Confirmar individualmente e recuperar o próprio recibo | Os novos direitos não estão no catálogo público nem atribuídos a contas reais. A função nativa de Armazém, operador actual e bloqueio de manutenção continuam obrigatórios. O ensaio introduziu estes nomes apenas dentro de uma transacção revertida no host de regressão. Nenhuma concessão ficou persistida. Antes de activar/atribuir acessos na8085 é necessária decisão explícita sobre estes direitos e os perfis/armazéns de destino; a implementação não escolhe utilizadores por omissão. A proposta agrupada está em `docs/SGF_8085_NEXT_AUTHORIZATION.md`. ## Provas dirigidas -30 verificações PostgreSQL/controller/middleware, reutilizando `receipt-composition-b4093c6f6707`, sem outra base, porta ou demonstração. Incluem isolamento de artigo/armazém, módulo errado, injecção de contexto, paginação/pesquisa literal, prévia sem efeitos, saída única, transferência equilibrada, duas conferências da mesma versão com recusa da segunda após confirmação da primeira, repetição sem duplicação, contexto/permissão revogados, prévia adulterada, falha injectada depois do writer antes do recibo e recuperação atómica. -11 verificações da interface executam o módulo JavaScript real num DOM simulado. Confirmam escolha explícita, recolha do formulário antes de bloquear os campos, quantidade decimal, impacto legível, ausência de confirmação automática e recuperação com a mesma prévia após perda simulada de resposta. -Todos os dados das tabelas do host/livro nativo de regressão comparados antes/depois são idênticos após rollback. Sequências **apenas desse livro QA** podem avançar. Não foram enviados comandos nem alterados ficheiros/configuração na8085, bases protegidas ou cache de dados. Os casos anteriores não foram somados novamente nem reexecutados como prova nova. A prova consolidada é `docs/proofs/sgf-stock-operations-20261110.json`. ## Limites que continuam abertos Contagem e aplicação da diferença estão agora implementadas para o percurso sem lotes, com escolha explícita da contagem actual e recuperação sem a aplicar duas vezes. O impacto distingue quantidade contada, variação e saldo posterior. O selector de equipamento foi acrescentado; as políticas originais de peça/equipamento continuam a decidir admissibilidade. A prova positiva nova cobre o catálogo, não todas as combinações de peças/equipamentos. Devolução, contagem por lote e recepção em trânsito mantêm workflows próprios e ainda não são disponibilizadas por este ecrã. Não há entrada manual, custo ou contabilização automática. Os testes de duas conferências intercaladas não constituem ensaio novo de processos simultâneos. A resposta503 de bloqueio foi implementada, mas o limite com dois processos reais não está comprovado neste incremento. A perda de resposta do cliente foi simulada; não equivale a prova TCP. Revisão visual, carga sustentada, instalação única completa e capacidade de implantação permanecem pendências separadas. O incidente do conector de navegador no Portal Investidor não foi reaberto nem enviado. Continuar a composição dos restantes módulos do SGF; esta entrega não constitui aceitação global, publicação ou checkpoint.