46 lines
6.3 KiB
Markdown
46 lines
6.3 KiB
Markdown
# Conferência de stock — dependências anteriores em lotes
|
|
|
|
Continuação: [enumeração do período e revisões contabilísticas em lotes](STOCK_PERIOD_BATCH_DELIVERY.md). Trata a leitura de estado final do período; o trabalho repetido de conferência de prefixos entre origens continua pendente. As medições abaixo conservam o âmbito do leitor de prefixos.
|
|
|
|
03/11/2026. Continuação técnica da [valorização sintética autorizada](GENERAL_LEDGER_STOCK_VALUATION_DELIVERY.md), sem novo efeito financeiro. **A árvore principal deixa de carregar todos os IDs e snapshots dos lançamentos anteriores para conferir uma origem.** Os pacotes congelados das demonstrações não foram actualizados.
|
|
|
|
## Alteração
|
|
|
|
`StockValuation::priorJournals()` confere a cobertura por SQL, projecta apenas identificadores, revisões e taxa e executa a consulta de metadados uma vez através de cursor PostgreSQL. Cada FETCH recebe até500 linhas. O cursor fecha no sucesso e na recusa; não existe cache entre pedidos.
|
|
|
|
Até25 referências conserva-se a representação anterior. Acima desse limite, a evidência usa `STOCK-PRIOR-STREAM-v1`: contagem, SHA256 de **todas** as referências ordenadas, primeiras25 referências e quantidade omitida da prévia. As referências posteriores à prévia continuam a afectar o resumo e a validação. Mudanças de taxa, cobertura, contexto ou evidência incompleta recusam a conferência; não se adopta um prefixo parcial.
|
|
|
|
A projecção mantém os tipos JSON dos identificadores. Uma taxa textual ou fraccionária continua recusada como na versão anterior. A confirmação continua a calcular o estado actual pelo mesmo serviço; não confia no resumo enviado pelo cliente. Quando há transacção do chamador, preserva-a. Fora dela, a leitura do prefixo abre e termina uma transacção REPEATABLE READ READ ONLY.
|
|
|
|
## Antes/depois comparáveis
|
|
|
|
[Resultados, condições e hashes](proofs/stock-prefix-stream-20261103.json). Fixture **apenas de metadados**, numa base QA nova55439, sem criar movimentos físicos ou lançamentos financeiros através destas linhas de ensaio. Não são1.000/5.000/10.000 operações de stock validadas pelos workflows.
|
|
|
|
Mesmos dados e chaves primárias, snapshots com8KiB de conteúdo adicional sintético, três amostras quentes por variante, ordem alternada e mesma transacção de leitura. Tempo mediano do auxiliar de leitura/construção das referências; máximo de memória PHP usada incremental. PostgreSQL, RSS, kernel HTTP completo e conferência do período não estão incluídos. A validação independente dos resumos fica fora da janela medida.
|
|
|
|
| Referências anteriores | Tempo ms antes/depois | Consultas antes/depois | Pico incremental PHP KiB antes/depois | Máximo de linhas por resultado antes/depois |
|
|
| ---: | ---: | ---: | ---: | ---: |
|
|
|1.000|160,25 /46,00|2 /6|13.055,16 /363,70|1.000 /500|
|
|
|5.000|1.212,30 /207,83|2 /14|65.346,91 /363,70|5.000 /500|
|
|
|10.000|2.836,69 /565,06|2 /24|130.663,60 /363,70|10.000 /500|
|
|
|
|
O número de consultas aumenta por incluir DECLARE, FETCH e CLOSE. O custo transferido para PHP e a memória diminuem; não se declara redução simultânea de todas as dimensões. Em10.000, a representação das dependências passa de2.067.789 para5.228 bytes. São o ganho conjunto de projecção/leitura em lotes/resumo, não ganhos isolados de cada componente. **Nenhum índice experimental foi criado e nenhum índice foi aplicado no destino.**
|
|
|
|
## Diagnósticos e segurança da alteração
|
|
|
|
A primeira leitura em lotes ainda criava uma função recursiva de serialização por referência. Os ciclos só eram libertados pelo GC e faziam a memória crescer com o volume. O resumo passou a codificar directamente quatro campos escalares em ordem canónica, conservando o mesmo SHA256; não se alterou a função canónica financeira comum.
|
|
|
|
Uma variante intermédia que convertia a chave física para texto regrediu fortemente e a consulta foi cancelada **apenas no backend do banco de metadados QA identificado**. O EXPLAIN controlado do cursor mostrou Nested Loop com Materialize/Seq Scan de10.000 linhas físicas. A comparação numérica validada passou a usar a chave primária física com estimativa de uma linha por procura. Os planos são estimativas sem ANALYZE, não medições de capacidade. A consulta valida a representação numérica antes da conversão; a evidência conserva o tipo JSON original.
|
|
|
|
As tentativas intermédias e a tentativa incompleta de instrumentação foram preservadas. Só a execução final é usada na tabela. O ensaio final impõe30s por SQL e15s por chamada medida para ambas as variantes; nenhuma amostra seleccionada atingiu esses limites. A variante cancelada não foi convertida numa mediana ou ganho fictício.
|
|
|
|
## Provas e preservação
|
|
|
|
**48 verificações dirigidas:**43 de equivalência, cobertura, tipos, isolamento, resumos, lotes e medições;5 de contexto transaccional/cursor. Incluem fronteiras0/1/25/26/501, mudança fora da prévia, predecessor ausente, outra taxa na última parte, referência incompleta, tenant/empresa/unidade distintos, limite real de500 linhas por resultado e ausência de cursores abertos após recusa.
|
|
|
|
Os três movimentos do livro de regressão já encerrado foram consultados **em transacção somente de leitura**: o resultado completo da origem, incluindo revisões e evidência publicada, permanece byte a byte equivalente à baseline e aos três snapshots contabilizados. Assim se reutilizam as146 verificações e23 de regressão anteriores no seu âmbito, sem repetir o ciclo de stock, a suite geral ou as medições da fila administrativa.
|
|
|
|
O pacote congelado de8062/8063 mantém o manifesto `8b3ad1c600b84c8526b2d9f453a1c5c4e174a69d6acc78ace2af4f52a25dd762`. A optimização está na fonte para composições futuras; não foi instalada silenciosamente nessa demonstração nem no destino. Nenhum snapshot, direito ou registo operacional existente foi reescrito. Seis registos, cache bloqueada, provas anteriores e trabalho alheio preservados.
|
|
|
|
**Limites:** o trabalho e as consultas ainda crescem com o prefixo; uma página ou período pode voltar a conferir vários prefixos. A leitura conjunta entre origens de uma página/período e a carga sustentada permanecem por avaliar. Este ensaio não valida implantação, memória do servidor, concorrência sustentada, método de valorização real ou revisão visual. Sem publicação, activação de Compras, aceitação ou checkpoint presumidos.
|