53 lines
8.5 KiB
Markdown
53 lines
8.5 KiB
Markdown
# Núcleo comum de regras fiscais versionadas QA
|
||
|
||
Entregue10/11/2026, `SGF-FISCAL-RULES-COMMON-QA-v1`, após a [autorização expressa](SGF_FISCAL_RULES_COMMON_SCOPE.md). Mesma8085, entrada **Contabilidade → Regras fiscais versionadas QA → Abrir catálogo, histórico e cálculo QA**, ou `/fiscal/rules` depois de escolher uma função autorizada. Sem SGC ou nova demonstração.
|
||
|
||
## Percurso funcional conservado
|
||
|
||
Financeiro13 preparou a regra artificial versão1; Financeiro14 reviu a versão exacta. Cálculo explicitamente escolhido para30/11/2026: base1000, parâmetro0,16, imposto160,00 e total1160,00. Nova preparação/revisão distintas da sucessora versão2; cálculo escolhido para01/12/2026: base1000, parâmetro artificial0,17, imposto170,00 e total1170,00. **Quatro eventos de regra e dois cálculos novos** conservados na8085. Não se trata de uma mudança legal de IVA.
|
||
|
||
O catálogo tem pesquisa literal de chave/nome/fonte, filtros família/estado, páginas SQL25/100, versões temporais e histórico por chave. Fontes, SHA, condições, moeda/unidade, precisão, prioridade, vigência e parâmetros são preservados em cada versão. A interface exige escolha explícita da definição e da regra; não adopta o primeiro registo. Referências IVA/IRPS/IRPC/ISPC/ICE/INSS/outros podem ser inventariadas como pendentes, mas não se transformam em motores legais implementados.
|
||
|
||
Revisão não equivale a activação fiscal real. Só os dois DAGs/definições artificiais exactos e fixados por SHA deste contrato podem executar no novo endpoint. Fonte desconhecida/não conferida, moeda diferente, vigência ausente/fora do intervalo, regra não escolhida/não revista/retirada ou conflito de prioridade produzem pendência, com montantes indeterminados. Não se escolhe automaticamente outra regra ou parâmetro zero.
|
||
|
||
Revisão temporal pertence à versão lógica; a sucessora futura não elimina a regra anterior válida no seu intervalo. Retirada por revisor distinto cria evento imutável para a versão escolhida, sem apagar cálculo antigo. A consulta do cálculo histórico conserva a fotografia e mostra também a avaliação actual, distinguindo passado e aplicabilidade presente. Nada é atribuído por arrasto a contribuintes, serviços, documentos, livro/mapa IVA ou seis registos antigos.
|
||
|
||
## Reutilização e precisão
|
||
|
||
Reutilizado o avaliador declarativo `SimulationTaxRuleExpression.php` já existente no InvesteMoz, numa cópia local controlada: [proveniência e adaptações](integration/sgf-fiscal-expression-port.json). Namespace/classe próprios e limites decimais24 inteiros/8 casas na linguagem; a entrada pública de base limita16 inteiros/8 casas. Sem carregar o portal em execução, dossiers de utilizadores, conversas ou regras legais automaticamente. A comparação com a classe de origem ocorreu apenas no teste local de paridade, com SHA fixado.
|
||
|
||
Operações declarativas da linguagem são validadas, sem `eval`, scripts, chamadas de funções, URLs ou código proveniente do documento. O endpoint de cálculo só executa o DAG percentual artificial fixado; expressões de referências pendentes não são executadas. Não se oferece execução arbitrária de DAGs ao cliente.
|
||
|
||
Aritmética racional exacta, representação documental explícita por truncagem de duas casas e diferença preservada. Caso SGF anterior1000,03×0,16: exacto160,0048, documental160,00, diferença0,0048, total1160,03; compatibilidade comprovada. Base com oito casas é preservada; se não representável em duas casas, o total fica pendente, sem truncagem silenciosa da base. Não se usa apresentação como regra legal.
|
||
|
||
## Autoridade, persistência e recuperação
|
||
|
||
`fiscal_rules.view/prepare/review`: **sete concessões por cada base QA existente**,14 no conjunto, exactamente [como aprovado](integration/sgf-fiscal-rules-access-proposal.json). Preparação/cálculo13, revisão/retirada14, consulta13–17. Sem novos utilizadores, PGroles, direitos PUBLIC ou acessos reais. Configuração root desligada; activação limitada ao QA8085 com fonte por SHA.
|
||
|
||
`fr_events` conserva cada preparação/revisão/recusa/retirada, predecessor, alvo exacto, versão/revisão, autor/preparador/data/fundamento/definição. `fr_calculations` fixa entrada, regra/versão/fonte, passos, resultado e dependências. `fr_commands` fixa chave própria, hash e resultado com impacto anterior/posterior. Triggers protegem direitos, pertença, versões, revisão distinta e história append-only; guarda física existente restringe as tabelas a QA, com PUBLIC revogado.
|
||
|
||
Prévia cifrada600s em savepoint revertido; pode avançar sequências, sem persistir regra/cálculo/auditoria de negócio. Confirmação revalida pessoa/direitos/contexto/autor, fonte, revisão global e impacto sob o mesmo bloqueio de empresa usado na composição. Duas decisões da mesma versão não podem coexistir. Chave repetida recupera resultado histórico sem executar; dados diferentes com a mesma chave são recusados. Recibo próprio é consultável noutra sessão, sem divulgar chaves de outro actor.
|
||
|
||
Interface protege campos/paginação enquanto há prévia ou resultado incerto, conserva dados não submetidos ao paginar e recupera o mesmo pedido. Seleccionar um cálculo histórico não escolhe a sua regra automaticamente. Textos e fontes são apresentados como dados, sem executar instruções neles contidas.
|
||
|
||
## Provas dirigidas e preservação
|
||
|
||
|Conjunto|Resultado|
|
||
|---|---|
|
||
|39 regressão, rollback integral|Preparação/revisão distintas, montantes e fronteiras, desconhecido≠zero, fonte/SHA/expressão indevidos, sucessora, conflito/retirada, precisão/diferença, revogação e histórico, recibos, falha/reversão atómica/recuperação, dados antigos intactos.|
|
||
|Oito de paridade|Classe local versus classe de origem fixada: valores exactos e oito casas, referência197,53, ausência sem defaults, ciclos/operações ilegais recusados, limite de entrada do consumidor. Sem suites do portal ou dependência de runtime.|
|
||
|14 SQL/fronteiras, rollback|127 versões de metadados para25/100; filtros literais/família/estado/histórico, contexto/expiração/autor revogado, módulo/unidade, histórico imutável e escrita/salto de versão indevidos. Fixtures de metadados não são operações fiscais reais.|
|
||
|Concorrência, regressão existente|Primeira revisão mantém lock da empresa; segunda503/Retry-After5 após cerca5s; libertação→409 por revisão antiga. Uma revisão, primeira chave recuperada sem duplicação. Dois eventos QA conservados só na regressão.|
|
||
|24 HTTP na8085|Seis confirmações explícitas (quatro eventos/dois cálculos), repetições, resultado160/1160 e170/1170, fotografia antiga intacta, vigência/falta de escolha, filtros/histórico, actor/módulo/tenant/IDs e recibo noutra sessão. Progresso guardado, sem repetir decisões válidas.|
|
||
|14 DOM→HTTP|Consulta e escolha explícita, cálculo/prévia real revertida, bloqueio/impacto/cancelamento, dados preservados ao paginar, histórico/recuperação. Zero POSTs de confirmação. Livro/mapa IVA anterior continua revisto e com quatro versões. Não é navegador.|
|
||
|Três de entrada|Revisão numérica validada normalizada, UUID malformado recusado antes da consulta e nenhuma regra persistida.|
|
||
|Comparação SELECT-only|17 conjuntos originais completos e binding idênticos, incluindo quatro versões/comandos IVA, documentos, recebíveis, Caixa, clientes, fiscalidade, Stock,27 lançamentos e períodos. Apenas sete concessões aprovadas adicionadas.|
|
||
|
||
[Índice de provas](proofs/sgf-fiscal-rules-20261110.json). Total102 verificações dirigidas, concorrência discriminada à parte. Provas válidas dos outros módulos e do IVA reaproveitadas, não repetidas. Backups/credenciais/dados privados fora do repositório; assets e alterações alheias conservados. Sem novos efeitos financeiros, índices no destino, novas bases/portas/demos, SGC, publicação/candidata, aceitação/checkpoint ou capacidade de implantação presumidos.
|
||
|
||
## Limites
|
||
|
||
Este núcleo governa versões e executa dois casos aritméticos artificiais. Não conclui IVA operacional geral, IRPS/IRPC/ISPC/ICE/INSS, remunerações, modelos oficiais ou calendário legal; não confirma fontes legislativas actuais. O documento de requisitos não contém por si essas regras. Os restantes requisitos amplos continuam visíveis na matriz, sem serem escondidos pelo recorte QA.
|
||
|
||
Diário27, Caixa fechada950, livro/mapa IVA com quatro versões, seis registos e cache intactos. Visual continua pendente; a via bloqueada não foi repetida. Carga sustentada, retenção/órfãos, arranque completo, conformidade e implantação exigem prova própria.
|