Accept isolated budget versus actual trial with documented capture limitation
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
# Aceitação isolada — orçamento versus realizado
|
||||
|
||||
28/10/2026, Africa/Johannesburg. O utilizador aceitou expressamente a entrega do ensaio de orçamento versus realizado com a limitação das capturas documentada e autorizou checkpoint exclusivamente local, sem credenciais ou dados privados. Confirmou que a aceitação não transforma provas pendentes em realizadas e que migração `110000`, sete concessões e utilização real permanecem por autorizar.
|
||||
|
||||
Âmbito: `INDUSTRIAL-BUDGET-ACTUAL-SIM-v1`, secção 16 de [INDUSTRIAL_COST_ACCOUNTING_SCOPE.md](INDUSTRIAL_COST_ACCOUNTING_SCOPE.md), entrega em [INDUSTRIAL_BUDGET_DELIVERY.md](INDUSTRIAL_BUDGET_DELIVERY.md). Preservados `cbdf2b4`, `4a94e8a` e alterações posteriores. Orçamento sintético 900/600/300, realizado 1000/500/300, desvios +100/−100/0 e total 0; residual 300 separado. Variante de 800 conhecidos mantém custo total/unitário indisponíveis e comparação incompleta, sem desvio total conclusivo.
|
||||
|
||||
Evidência aceite com limites: 169 testes / 3 004 asserções aprovados, seis casos concorrentes e compilação aprovada; percurso manual relatado pelo utilizador, separação funcional confirmada e fotografias/referências reconciliadas em consulta read-only. Automação do Edge permaneceu bloqueada; capturas não foram recebidas ou inspeccionadas. Não se converte esta limitação em prova visual concluída. Ver [registo manual](INDUSTRIAL_BUDGET_MANUAL_PROOF.md).
|
||||
|
||||
Os campos de aceitação/checkpoint negativos nos ficheiros de prova anteriores descrevem o estado à data da produção dessas provas e não são reescritos. As referências documentais anteriores a aceitação pendente são históricas, substituídas apenas por esta confirmação expressa. Não se repetiram testes por este registo documental de encerramento.
|
||||
|
||||
O commit que contém este registo constitui o checkpoint exclusivamente local, incluindo fontes, testes, scripts, documentação e provas sintéticas revistas. Excluídos `.env*` privados, manifesto/ficheiro de entrada, palavras-passe, ficheiros privados de execução e conteúdos de contas/dados reais. Sem push ou publicação. Migração `110000` e sete concessões não aplicadas; bloqueios operacionais/fiscais preservados, sem uso real, stock ou lançamentos.
|
||||
|
||||
Próxima prioridade indicada pelo utilizador: retomar a página inicial e os menus agrupados. Não integra a aceitação deste ensaio nem altera os seus direitos, cálculos ou limites.
|
||||
@@ -0,0 +1,67 @@
|
||||
# Orçamento versus realizado — ensaio isolado
|
||||
|
||||
**Aceitação posterior de 28/10/2026:** entrega aceite com a limitação das capturas documentada e checkpoint exclusivamente local autorizado. Ver [INDUSTRIAL_BUDGET_ACCEPTANCE.md](INDUSTRIAL_BUDGET_ACCEPTANCE.md). Referências abaixo à aceitação/checkpoint pendentes são históricas. Provas pendentes não se tornam realizadas; `110000`, sete concessões e utilização real continuam por autorizar.
|
||||
|
||||
28/10/2026, Africa/Johannesburg. `INDUSTRIAL-BUDGET-ACTUAL-SIM-v1`, secção 16 de [INDUSTRIAL_COST_ACCOUNTING_SCOPE.md](INDUSTRIAL_COST_ACCOUNTING_SCOPE.md). Preservados `cbdf2b4`, `4a94e8a` e alterações posteriores. **Sem aceitação presumida ou checkpoint de encerramento.** Nenhuma migração ou concessão nova em desenvolvimento.
|
||||
|
||||
## Comportamento e limites
|
||||
|
||||
Orçamento submetido imutável por lote, produto, empresa/unidade, período, MZN e 10 UN. Preparador propõe; identidade distinta aprova/recusa versão exacta sem editar. Sucessora identifica a anterior e o motivo e requer nova validação. Proposta posterior ao realizado é hipótese retrospectiva explícita, sem alegar planeamento anterior. Orçamento 900 material + 600 trabalho + 300 indirectos imputados aprovado como pressuposto do ensaio pelo utilizador; a validação da versão no sistema permanece separada.
|
||||
|
||||
Comparação selecciona explicitamente orçamento aprovado e resultado industrial validado, ambos actuais, por ID/versão. O resultado reutilizado conserva origens, taxas, critério e respectiva fotografia: não cria outro consumo, tempo, resultado industrial ou imputação. Desvio R − P por componente: 1 000 − 900 = +100; 500 − 600 = −100; 300 − 300 = 0; total 0. Reconciliação: 1 800 + 0 = 1 800; soma dos desvios 100 − 100 + 0 = 0. Percentagens exactas 100/9 %, −50/3 % e 0 %; total 0 %. Não se somam percentagens das componentes.
|
||||
|
||||
Residual **300 MZN por imputar** fora do orçamento/desvio do lote. Reconciliação realizada preservada: **2 100 = 1 800 atribuídos + 300 por imputar**. Sem taxa material: 800 conhecidos, material indisponível, pares trabalho/indirectos com desvio −100/0, comparação incompleta e desvio total/percentagem global indisponíveis. Não se apresenta −900 ou outra suposta poupança pelo material desconhecido. Previsto desconhecido também impede o desvio da componente; previsto zero conhecido permite desvio monetário mas não percentagem. 0/0 permanece indisponível.
|
||||
|
||||
Aritmética racional exacta com `ExactCostMath`, sem float, arredondamento silencioso ou regra fiscal. Incompatibilidades de produto/lote, empresa/unidade, quantidade, unidade, moeda, período e âmbito são recusadas, sem conversões ou ajuste por volume. Só diferenças monetárias por componente; não atribui preço, eficiência, produtividade, margem ou causas.
|
||||
|
||||
Fotografias e decisões imutáveis; mudança de orçamento, resultado ou dependência identifica comparações antigas como históricas/desactualizadas. Não se seleccionam sucessoras automaticamente. Repetição com mesma chave/conteúdo recupera o mesmo ID; conteúdo diferente é conflito. Bloqueio de empresa serializa revisões; comando, auditoria, evento e outbox são transaccionais, sem consumidor contabilístico. Falha de outbox desfaz a operação. SQL reforça ambiente exclusivo de testes, cadeias, referências aprovadas/actuais, identidade distinta e imutabilidade; não constitui motor independente de cálculo nem RLS contra administrador de confiança.
|
||||
|
||||
## Percurso de prova e arranque
|
||||
|
||||
Menu **Orçamento versus realizado** com direitos explícitos, sem herança de `industrial_costs.*`. Preparador submete valores e fundamento; validador entra separadamente e decide orçamento por ID/versão; preparador escolhe orçamento e resultado exactos para comparar; validador consulta sem formulário de preparação. Actualização de versões é explícita. Histórico permanece visível, com aviso de desactualização.
|
||||
|
||||
Com base de testes vazia e sob `TestingDatabaseGuard`, preparar pelo fluxo existente, sem apagar registos para contornar recusa de fixture:
|
||||
|
||||
```powershell
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/browser-proof.ps1 start -Port 8002
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/sgf.ps1 php scripts/industrial-budget-fixture.php --env=testing
|
||||
```
|
||||
|
||||
Porta **8002** autorizada nesta sessão por a 8001 estar ocupada por outro projecto, cujo processo não foi alterado. `browser-proof.ps1` mantém 8001 como valor por omissão e permite porta explícita livre, verificando-a antes do arranque. Instância `browser-testing`, `sgf_tempo_test`/55432, sessão/cache isolados e CSRF activo preservados. Credenciais sintéticas aleatórias apenas no manifesto local protegido, nunca em documentação, argumentos ou relatório. Parar exclusivamente a prova SGF com `scripts/browser-proof.ps1 stop` antes de testes que recriam a base.
|
||||
|
||||
## Migração proposta — não aplicada em desenvolvimento
|
||||
|
||||
`2026_10_28_110000_create_industrial_budgets.php`, SQL `database/sql/industrial-budgets.sql`. Destino futuro proposto **sgf_tempo_dev / 127.0.0.1:55432**, por caminho exclusivo e proprietário separado `sgf_dev_owner`; aplicação permanece `sgf_dev_app`. Exige autorização específica antes da aplicação; não existe instalador de desenvolvimento deste incremento.
|
||||
|
||||
Cria seis tabelas `ib_budgets`, `ib_decisions`, `ib_comparisons`, `ib_commands`, `ib_events`, `ib_outbox`, índices/FKs/triggers e função própria. Amplia o CHECK com cinco nomes de direitos de unidade, preservando os anteriores; não atribui direitos, não modifica origens `ic_*` e não contém dados de demonstração. `down()` recusa destruição de história. INSERT em todas as novas tabelas exige `sgf_tempo_test`/55432 via guarda SQL já existente. Guarda da aplicação continua a exigir ambiente isolado seguro, sem opção de activar operações reais.
|
||||
|
||||
## Sete concessões propostas — não aplicadas
|
||||
|
||||
Todas no **tenant #1 / Tempo Lda #1 / SEGI #1**, contas existentes; sem gestão de acessos ou âmbito adicional:
|
||||
|
||||
| Conta | Direitos exactos propostos |
|
||||
| --- | --- |
|
||||
| Osmane #1 | `industrial_budgets.view`, `industrial_budgets.prepare`, `industrial_budget_comparisons.view`, `industrial_budget_comparisons.prepare` |
|
||||
| Samira #2 | `industrial_budgets.view`, `industrial_budgets.validate`, `industrial_budget_comparisons.view` |
|
||||
|
||||
Consulta da comparação exige também consulta do orçamento e do realizado; os direitos industriais existentes permanecem separados. `scripts/industrial-budget-permissions-preview.php` é só consulta, sem ramo de aplicação: confirmou as sete ausentes, `110000` pendente e guarda real recusada com 403. A distribuição funcional aprovada não autoriza estas concessões em desenvolvimento.
|
||||
|
||||
## Ficheiros e verificações
|
||||
|
||||
Novos: `app/Modules/Industry/IndustrialBudgets.php`, `app/Modules/Industry/Http/IndustrialBudgetsController.php`, `resources/js/IndustrialBudgetsWorkspace.jsx`, migração/SQL acima, `tests/Feature/IndustrialBudgetsTest.php`, `tests/Support/IndustrialBudgetFixture.php`, scripts `industrial-budget-fixture.php`, `industrial-budget-worker.php`, `industrial-budget-concurrency.php`, `industrial-budget-permissions-preview.php` e relatório/provas. Integrações em `routes/web.php`, `resources/js/app.jsx` e parâmetro de porta de `scripts/browser-proof.ps1`; registos em escopo, README e AGENTS. Nenhuma alteração às fontes funcionais industriais anteriores ou dependências.
|
||||
|
||||
Nove testes novos: igualdade, acima/abaixo, compensação, base zero, 0/0, desconhecido e falta material, dimensões incompatíveis, quantidade realizada alterada, proposta recusada, versões históricas, mudança de origem, permissões e revogação no pedido seguinte/replay, token de contexto antigo, acesso cruzado de empresa, exactidão, rollback de outbox, recuperação de resposta, imutabilidade SQL e guarda normal. Seis cenários com dois processos sobrepostos aprovados: proposta repetida, decisão repetida, comparação repetida, sucessoras incompatíveis, decisões concorrentes e comparações concorrentes. Ver [prova concorrente](proofs/industrial-budget-concurrency.json).
|
||||
|
||||
Compilação `scripts/sgf.ps1 npm run build` aprovada com Vite 8.3.5; sem instalação/substituição de dependências. Regressão completa `scripts/sgf.ps1 test --log-junit=storage/app/industrial-budget-regression.xml`: **169 testes / 3 004 asserções, zero falhas/erros**. XML e saída detalhada apenas locais. Ver [resumo de provas](proofs/industrial-budget-tests.json).
|
||||
|
||||
**Prova no navegador pendente:** instância isolada arrancada correctamente em `http://127.0.0.1:8002` e fixture industrial preparada com resultado validado de 1 800 MZN. Antes de qualquer login ou operação visual, a ferramenta de computer-use interrompeu o acesso por não conseguir determinar o URL actual do Edge no Windows com confiança suficiente para aplicar a política. Não houve tentativa de contornar a restrição, nova sessão autenticada, orçamento ou comparação demonstrados no navegador. A instância SGF foi parada; nenhum processo do outro projecto foi alterado. A entrega não está integralmente verificada até completar essa prova. O próximo percurso é submeter orçamento 900/600/300 pelo preparador, validar pela identidade distinta, comparar as referências exactas e consultar o resultado completo; depois seleccionar uma sucessora industrial validada sem taxa material e demonstrar os 800 conhecidos/incompletude, preservando a comparação anterior como histórica. Não se declara esta sequência executada.
|
||||
|
||||
Recorte de uma etapa, um produto/lote, 10 UN, MZN e três componentes. Sem orçamento flexível, decomposição causal, reservas/stock, previsto de residual, compras, salários reais, facturação, lançamentos, fecho, activação real ou publicação. Aceitação e checkpoint de encerramento permanecem pendentes.
|
||||
|
||||
## Retoma manual preparada — 28/10/2026
|
||||
|
||||
**Revisão técnica posterior concluída:** `industrial-budget-manual-verify.php` reconciliou ambas as fotografias com as fórmulas exactas e as referências/decisões, histórico, completude, residual e separação de direitos; sem alterar registos ou credenciais. Prova em [industrial-budget-manual-results.json](proofs/industrial-budget-manual-results.json). Resumo de testes corrigido para separar a tentativa automática histórica do percurso manual relatado. Capturas continuam indisponíveis; sem aceitação presumida ou checkpoint. Nenhuma correcção ao cálculo foi necessária nesta revisão; não se repetiu a bateria aceite de testes. `110000` e sete concessões reconfirmadas ausentes em desenvolvimento.
|
||||
|
||||
**Actualização posterior:** percurso manual confirmado pelo utilizador: orçamento #10 v2 aprovado por identidade distinta, comparação completa #8 v1 com realizado #23 v1, resultado incompleto #24 v2 validado e comparação #9 v2 com 800 conhecidos. Confirmada a ausência dos formulários de preparação na conta de Samira sintética. Histórico e residual separados preservados. Ver o [registo manual](INDUSTRIAL_BUDGET_MANUAL_PROOF.md) para evidência e limites: textos enviados pelo utilizador e consulta read-only aos IDs/decisão, sem capturas recebidas ou automação recuperada. Aceitação e checkpoint continuam pendentes. A descrição seguinte corresponde à preparação anterior ao percurso.
|
||||
|
||||
Após segunda interrupção da automação, o utilizador pediu preparação da prova manual sem nova tentativa automática. Instância 8002 retomada sobre os dados sintéticos existentes, sem reset/migrações/concessões, com diagnóstico HTTP a confirmar a ligação efectiva. Ver [guia e estado da prova manual](INDUSTRIAL_BUDGET_MANUAL_PROOF.md) e [ambiente confirmado](proofs/industrial-budget-manual-environment.json). Credenciais apenas em ficheiro local protegido; nenhum login, resultado manual ou captura é declarado como já observado. A instância fica ligada para o utilizador executar o percurso; aceitação e checkpoint continuam pendentes.
|
||||
@@ -0,0 +1,51 @@
|
||||
# Prova manual guiada — orçamento versus realizado
|
||||
|
||||
**Actualização de encerramento:** em 28/10/2026, o utilizador aceitou expressamente a entrega com esta limitação de evidência e autorizou checkpoint local. Ver [aceitação](INDUSTRIAL_BUDGET_ACCEPTANCE.md). Menções anteriores a aceitação/checkpoint pendentes são históricas. Capturas continuam indisponíveis e automação bloqueada; nenhuma prova pendente é dada por realizada.
|
||||
|
||||
## Resultado do percurso manual confirmado pelo utilizador
|
||||
|
||||
Em 28/10/2026, após a preparação abaixo, o utilizador executou o percurso no navegador e enviou os textos dos painéis. Confirmou no final que, na consulta como Samira sintética, não aparecem os formulários de preparação de orçamento e de comparação. Não se atribui esta observação ao agente nem se declara recuperação da automação do Edge.
|
||||
|
||||
- Orçamento #9 v1 preservado como histórico sem decisão, sucedido por #10 v2 com os mesmos valores 900/600/300. Não foi determinada a causa da segunda submissão.
|
||||
- Orçamento #10 v2 validado, com fundamento «Conferidos 900/600/300 MZN, 10 UN, mesmo lote e período». Consulta read-only à base de testes confirmou preparador #509 e validador distinto #510.
|
||||
- Comparação #8 v1 referencia orçamento #10 v2 e realizado #23 v1: previsto/realizado 1 800/1 800, desvios +100/−100/0, total 0 e residual separado 300. O utilizador observou posteriormente o aviso de comparação histórica/desactualizada, mantendo os números anteriores.
|
||||
- Resultado #24 v2 observado e validado apenas para 800 conhecidos, material pendente e total/custo unitário indisponíveis; residual 300, reconciliação parcial 1 100 = 800 + 300.
|
||||
- Comparação #9 v2 referencia o mesmo orçamento #10 v2 e realizado #24 v2. Material e respectivo desvio indisponíveis; trabalho −100, indirectos 0; comparação incompleta, sem desvio total conclusivo. Pares conhecidos: 900 + (−100) = 800, sem tratar ausência como poupança. Residual 300 separado.
|
||||
- Consulta read-only confirmou os IDs/versões do orçamento, decisão e referências das duas comparações. Não houve alteração de contas ou dados por essa consulta.
|
||||
|
||||
**Limitação da evidência:** os textos foram enviados pelo utilizador; não foram recebidas nem inspeccionadas capturas de ecrã. Os nomes de PNG sugeridos abaixo continuam a ser apenas destinos previstos. Percurso manual confirmado por relato e conferência parcial read-only, não prova visual automática. Aceitação e checkpoint permanecem pendentes; nenhuma concessão/migração em desenvolvimento ou activação real decorre desta confirmação. A instância de prova permanece ligada para eventual captura manual.
|
||||
|
||||
### Revisão técnica posterior solicitada pelo utilizador
|
||||
|
||||
Executado `scripts/sgf.ps1 php scripts/industrial-budget-manual-verify.php --env=browser-testing`, sem alterar registos ou credenciais. A conferência adicional confirmou as duas fotografias contra as fórmulas exactas, referências ID/versão, aprovações por identidade distinta, cadeia resultado/comparação v1→v2, mesmo orçamento, residual 300 e reconciliações completa/parcial, ausência de duplicação de origens de oficina/custo directo e distribuição efectiva dos direitos. Ver [resultado estruturado](proofs/industrial-budget-manual-results.json). Isto completa a reconciliação técnica das fotografias descritas pelo utilizador; não constitui inspecção de capturas ou nova prova de navegador.
|
||||
|
||||
Corrigido o resumo de provas para identificar os campos de navegador falhado/parado como a tentativa automática histórica, acrescentando separadamente o percurso manual posterior. Não se alteraram cálculo, resultados, decisões ou acessos. Sintaxe do novo verificador conferida e execução aprovada; a comparação normaliza apenas a ordem das chaves JSON para conferir conteúdos com tipos exactos, sem mudar os dados. Não se repetiram testes destrutivos ou build por estas alterações de verificação/documentação; preservada a fixture manual. Consulta de desenvolvimento reconfirmou `110000` e sete concessões ausentes e guarda real bloqueada. Aceitação e checkpoint continuam pendentes.
|
||||
|
||||
## Registo histórico da preparação
|
||||
|
||||
28/10/2026. Preparação verificada, percurso **ainda não executado pelo utilizador**. Sem aceitação ou checkpoint. Não repetir a automação bloqueada do Edge.
|
||||
|
||||
## Entrada e isolamento confirmados
|
||||
|
||||
Endereço: `http://127.0.0.1:8002`. Resposta HTTP de `/api/industrial-budget-proof/environment` confirmou `browser-testing`, `sgf_tempo_test`, `sgf_test_runner`, PostgreSQL 55432, sessão `file`/`sgf_browser_proof` e cache `file`. Ver [prova de ambiente](proofs/industrial-budget-manual-environment.json). Endpoint read-only, sem dados de negócio/credenciais, disponível apenas em `browser-testing` e sob as guardas existentes; 404 fora desse ambiente.
|
||||
|
||||
Retomada a fixture existente por `scripts/browser-proof.ps1 start -Port 8002 -ResumeIndustrialBudget`. Sem reset, migração ou concessões; lote #20, realizado #23 v1 validado, nenhuma proposta/comparação no início. O preparador não tem validação de orçamento; a validadora não tem preparação de orçamento/comparação. IDs descrevem esta execução, não constantes do módulo.
|
||||
|
||||
Contas sintéticas: `gestor@example.test` representa Osmane; `consulta@example.test` representa Samira. Palavras-passe distintas renovadas apenas nestas contas da base de testes porque o manifesto anterior fora removido ao parar a prova. Instruções de entrada em `C:\laragon\data\sgf-tempo\secrets\industrial-budget-manual-entry.txt`, com ACL apenas do utilizador local e SYSTEM, fora do repositório. Abrir localmente; não copiar palavras-passe para chat, capturas ou relatório. Não guardar no navegador.
|
||||
|
||||
## Percurso a executar no navegador pelo utilizador
|
||||
|
||||
1. Entrar como `gestor@example.test`, seleccionar **Empresa Horizonte — Demonstração / Unidade Central — Demonstração**, abrir **Orçamento versus realizado**, lote #20. Confirmar que existe preparação e não validação do orçamento.
|
||||
2. Preparar material **900**, trabalho **600**, indirectos **300**, com fundamento «Hipótese sintética retrospectiva 900/600/300, 10 UN, mesmo lote/período, sem causas presumidas». Submeter orçamento e anotar ID/versão. Não criar outra proposta por repetir o clique.
|
||||
3. Sair da aplicação. Entrar como `consulta@example.test` no mesmo contexto. Confirmar ausência de preparação de orçamento/comparação e presença da decisão. Validar a versão exacta submetida, com fundamento explícito. Anotar ID/versão e guardar captura sem campos de entrada de credenciais.
|
||||
4. Sair e entrar como preparador. Seleccionar explicitamente o orçamento aprovado e o **realizado #23 v1**, comparar. Confirmar previsto/realizado **1 800/1 800 MZN**, desvios **+100/−100/0**, total **0**, reconciliação **1 800 + 0 = 1 800**, residual separado **300 por imputar**, origens **2 100 = 1 800 + 300**. Guardar captura da comparação.
|
||||
5. Para a variante, no menu **Custos industriais de teste**, mesmo lote #20, usar **Seleccionar versões para cálculo**: escolher explicitamente as versões validadas de material, trabalho, conjunto, máquina, produção boa, taxa de trabalho e critério; manter **taxa material ausente**. Calcular a sucessora do resultado #23 v1. Não alterar origens, taxas, produção, critério ou orçamento. Anotar novo ID/versão.
|
||||
6. Sair; entrar como validadora. No menu industrial, validar apenas essa versão incompleta, com fundamento «Só 800 MZN conhecidos; material pendente, total e custo unitário indisponíveis». Confirmar **800 conhecidos**, total/unitário indisponíveis e residual 300 separado; guardar captura.
|
||||
7. Sair; entrar como preparador. Em **Orçamento versus realizado**, actualizar explicitamente, seleccionar o mesmo orçamento aprovado e o novo realizado validado incompleto, criar a comparação sucessora. Confirmar material/desvio indisponíveis, trabalho −100, indirectos 0, **sem desvio total conclusivo** ou percentagem global, realizado conhecido **800** e residual **300** separado. A comparação anterior permanece histórica/desactualizada. Guardar captura.
|
||||
8. Sair; entrar como validadora. Consultar as duas comparações e confirmar que não recebe formulário para criar/editar orçamento ou preparar comparação. Guardar captura dessa separação de acessos.
|
||||
|
||||
Capturas sugeridas em `docs/proofs/industrial-budget-manual-approval.png`, `industrial-budget-manual-full.png`, `industrial-budget-manual-partial-result.png`, `industrial-budget-manual-partial-comparison.png` e `industrial-budget-manual-reader.png`. São nomes de destino, **não ficheiros já produzidos**. Capturar apenas os painéis de negócio, sem palavras-passe, ficheiro de entrada ou outras aplicações. Anotar os IDs/versões, o que foi observado e qualquer divergência; não declarar êxito antes da conferência. Se houver erro, conservar a mensagem e não tentar corrigir montantes ou substituir a referência aprovada para o contornar.
|
||||
|
||||
## Estado e validação desta preparação
|
||||
|
||||
Sintaxe PHP do preparador e de `routes/web.php` aprovada; arranque PowerShell e diagnóstico HTTP efectivos aprovados. Não se alterou cálculo ou interface, nem se repetiu a bateria de 169 testes já aprovada. Preparação manual não comprova login, submissão, decisão ou comparação pela interface. A instância fica ligada para o percurso; não executar testes destrutivos enquanto estiver activa. Após a prova, parar apenas a instância SGF com `scripts/browser-proof.ps1 stop`. Aceitação, eventual encerramento e checkpoint permanecem posteriores à prova.
|
||||
@@ -318,3 +318,78 @@ Exactidão, ausência diferente de zero, origem única, histórico, isolamento e
|
||||
Em 27/10/2026, após a confirmação dos números e limites, o utilizador respondeu «sim». Ficam aprovadas as duas decisões da secção 15.4: números e perímetro sintéticos da secção 15.1, com residual separado e variante incompleta; Osmane prepara e Samira valida/recusa versões do critério e do resultado, apenas com identidades sintéticas distintas nas provas e sem concessões reais.
|
||||
|
||||
O critério de capacidade/imputação continua hipótese de ensaio, não método contabilístico real aprovado. Previsto/realizado fica para depois. Não se reabrem estas decisões; a autorização para implementar código/testes, futuras migrações em desenvolvimento, concessões ou activação real continua separada. Este registo não executa o ensaio.
|
||||
|
||||
## 16. Orçamento versus custo realizado — especificação do recorte aprovado
|
||||
|
||||
28/10/2026. O utilizador aprovou o recorte de previsto versus realizado e autorizou nesta etapa **apenas actualizar esta documentação**. Preservar a aceitação `cbdf2b4` e o checkpoint da instalação técnica `4a94e8a`, sem reabrir as entregas. As exclusões de previsto/realizado na secção 15 descrevem o primeiro incremento; esta secção especifica a evolução seguinte, sem autorizar implementação, migrações, concessões ou utilização real. Identificador proposto: `INDUSTRIAL-BUDGET-ACTUAL-SIM-v1`.
|
||||
|
||||
### 16.1 Âmbito e referências exactas
|
||||
|
||||
Reutilizar o mesmo produto, lote sintético, empresa/unidade, centro, período de início/fim, moeda MZN e **10 UN boas** do resultado completo de `INDUSTRIAL-COST-SIM-v1`. Seleccionar explicitamente o ID e a versão validada do resultado de **1 800 MZN**, com referências às versões das suas dependências; não procurar automaticamente o resultado mais recente nem fixar IDs de uma execução anterior. Uma futura prova terá de identificar esses IDs/versões concretos e comprovar a validação e actualidade. Não se afirma que a base de testes ainda contenha os registos da demonstração anterior.
|
||||
|
||||
Perímetro comparável: material directo **1 000 MZN**, trabalho directo **500 MZN** e indirectos **imputados ao lote de 300 MZN**. Os **300 MZN por imputar** continuam apresentados separadamente, fora do orçamento e do desvio do lote. Preservar as reconciliações do realizado: conjunto **600 = 300 imputados + 300 por imputar** e origens **2 100 = 1 800 atribuídos + 300 por imputar**. Não comparar o orçamento do lote com 2 100, nem absorver o residual para ajustar desvios.
|
||||
|
||||
O orçamento declara o mesmo produto/lote, quantidade boa 10, unidade UN, MZN, período exacto e âmbito das três componentes atribuídas. Cada componente contém montante exacto não negativo ou estado explícito de desconhecido, fonte e fundamento sintéticos. Não é taxa, consumo, reserva de stock ou nova origem de custo. Referenciar o resultado realizado reutiliza a fotografia existente, sem copiar consumos, tempos, imputações ou gerar nova utilização do conjunto CIF.
|
||||
|
||||
### 16.2 Orçamento versionado e responsabilidades
|
||||
|
||||
**Osmane prepara; Samira valida/recusa por identidade distinta.** Nas futuras provas usam-se equivalentes sintéticos. Preparação, submissão e decisão conservam autor, data, versão e fundamento; Samira não edita a proposta nem fontes técnicas. Auto-validação é recusada mesmo que uma identidade venha a possuir ambos os direitos.
|
||||
|
||||
Uma proposta submetida e a respectiva decisão são imutáveis. Correcção cria sucessora explícita com ligação à anterior, motivo e nova validação; a aprovação anterior não se transfere. O orçamento aprovado usado como referência fica fixado pelo ID/versão. Não se substitui silenciosamente para coincidir com o realizado. Revisão posterior à disponibilidade do realizado fica assinalada como tal e nunca reescreve a referência original. Este ensaio sobre um resultado já existente é uma hipótese comparativa retrospectiva, não prova de que houve planeamento anterior à produção.
|
||||
|
||||
Comparação referencia explicitamente orçamento aprovado e resultado validado, com versões e composição. Nova versão de qualquer dependência sinaliza a comparação anterior como histórica/desactualizada, preservando números e decisões. Recalcular exige selecção explícita das novas versões elegíveis e gera nova revisão ligada à anterior; não acumula comparações como novos custos.
|
||||
|
||||
### 16.3 Valores de orçamento propostos — por confirmar
|
||||
|
||||
Os montantes seguintes são **proposta sintética para confirmação**, não orçamento aprovado nem decisão já tomada:
|
||||
|
||||
| Componente | Previsto proposto (MZN) | Realizado de referência (MZN) | Desvio: realizado − previsto (MZN) | Percentagem exacta |
|
||||
| --- | ---: | ---: | ---: | ---: |
|
||||
| Material | 900 | 1 000 | +100 | 100/9 % |
|
||||
| Trabalho | 600 | 500 | −100 | −50/3 % |
|
||||
| Indirectos imputados | 300 | 300 | 0 | 0 % |
|
||||
| **Total do lote** | **1 800** | **1 800** | **0** | **0 %** |
|
||||
|
||||
Esta proposta demonstra diferenças compensadas sem esconder componentes: **100 − 100 + 0 = 0**. Não atribui a diferença a preço, eficiência ou volume. O residual realizado de 300 MZN é mostrado fora desta tabela de desvios, com a reconciliação própria.
|
||||
|
||||
### 16.4 Cálculo, completude e compatibilidade
|
||||
|
||||
Por componente, **D = R − P**; total apenas completo se todas as componentes previstas e realizadas forem conhecidas. Reconciliação: **ΣR − ΣP = Σ(R − P)** e **ΣP + ΣD = ΣR**. No exemplo proposto: **1 800 + 0 = 1 800**. Total percentual calcula-se sobre o previsto total, nunca somando percentagens das componentes. Desvio positivo significa custo acima do previsto; negativo significa abaixo, sem concluir eficiência, poupança efectiva ou margem.
|
||||
|
||||
Percentagem **100 × D/P**, apenas com previsto conhecido e estritamente positivo e realizado conhecido. Conservar aritmética racional exacta, incluindo fracções não finitas em decimal, sem float ou truncagem fiscal; não escolher arredondamento silencioso. Previsto zero conhecido permite desvio monetário, mas a percentagem é indisponível por base zero, incluindo 0/0. Previsto desconhecido impede desvio monetário e percentual dessa componente: não é zero. Realizado desconhecido também os impede e nunca representa poupança. Valores negativos de orçamento ficam fora deste recorte.
|
||||
|
||||
Se faltar uma componente, apresentar pares conhecidos e respectivos desvios, indicar exclusões e comparação **incompleta**; soma parcial dos desvios só sobre pares completos e expressamente identificada, sem total ou percentagem global completos. Não subtrair totais parciais que cubram componentes diferentes. Na variante sem taxa material, os 800 MZN conhecidos do realizado não se comparam ao orçamento total de 1 800: só trabalho e indirectos têm pares completos, se os previstos forem conhecidos.
|
||||
|
||||
Antes da comparação, exigir igualdade explícita de empresa/unidade, produto, lote, quantidade boa, unidade, moeda, período e perímetro/componentes de custo. Rejeitar dados incompatíveis com motivo específico; não converter moeda/unidade ou normalizar quantidade automaticamente. Um lote de 8 ou 12 UN não se compara neste recorte ao orçamento de 10 UN, mesmo que seja possível calcular custo por unidade. Não misturar diferenças de volume com preço/eficiência; decomposição causal, orçamento flexível e análise de produtividade ficam fora do âmbito. Diferenças por componente são observações monetárias, sem causas atribuídas sem evidência.
|
||||
|
||||
### 16.5 Casos e critérios de aceitação para futura implementação
|
||||
|
||||
Os cenários abaixo são requisitos de prova, não orçamentos aprovados. Excepto indicação contrária, manter as 10 UN e restantes dimensões compatíveis, com realizado 1 000/500/300:
|
||||
|
||||
| Caso | Previsto de teste: material/trabalho/indirectos (MZN) | Resultado exigido |
|
||||
| --- | --- | --- |
|
||||
| Igualdade integral | 1 000 / 500 / 300 | Desvios 0/0/0; total 0 e 0 % |
|
||||
| Diferenças compensadas | 900 / 600 / 300, proposta da secção 16.3 | +100/−100/0, total 0; componentes visíveis |
|
||||
| Acima do previsto | 900 / 450 / 270 | Total previsto 1 620; desvio +180; percentagem 100/9 % |
|
||||
| Abaixo do previsto | 1 100 / 550 / 330 | Total previsto 1 980; desvio −180; percentagem −100/11 % |
|
||||
| Previsto zero numa componente | 0 / 500 / 300 | Material +1 000, percentagem material indisponível; total previsto 800, desvio +1 000 e 125 % |
|
||||
| Previsto todo zero | 0 / 0 / 0 | Desvio total +1 800, percentagem indisponível por base zero |
|
||||
| Ambos zero numa componente | Material previsto e realizado explicitamente zero em variante sintética própria | Desvio material 0; percentagem indisponível, sem alterar o resultado validado de referência |
|
||||
| Previsto material desconhecido | Desconhecido / 600 / 300 | Material sem desvio; pares trabalho/CIF somam −100; comparação incompleta, sem desvio total completo |
|
||||
| Realizado material em falta | 900 / 600 / 300; seleccionar versão incompleta de 800 conhecidos | Material sem desvio; trabalho −100 e CIF 0; comparação incompleta, nunca −900 de suposta poupança |
|
||||
| Versões alteradas | Sucessora de orçamento ou resultado/origem/taxa/critério | Referência antiga preservada e sinalizada; selecção/revisão explícitas, sem aprovação herdada ou substituição automática |
|
||||
| Dados incompatíveis | Alterar uma dimensão de cada vez: produto, lote, quantidade, unidade, moeda, período, âmbito ou empresa/unidade | Recusar comparação; nenhum ajuste automático ou acesso cruzado |
|
||||
|
||||
Aceitação futura exige demonstrar as fórmulas e reconciliações exactas, residual separado, ausência distinta de zero, estados incompletos e todos os casos acima. Exige ainda separação de identidades, recusa de proposta não aprovada/resultado não validado ou desactualizado, histórico imutável, referência original recuperável, ausência de duplicação de origens e resposta a repetição/concorrência sem duplicar revisões ou efeitos. Auditoria e eventual evento de comparação não constituem consumo, imputação, stock ou lançamento. Provas futuras exclusivamente sintéticas em `sgf_tempo_test`, preservando guardas reais; nenhuma aceitação de implementação é declarada nesta especificação.
|
||||
|
||||
### 16.6 Acessos propostos e decisões novas pendentes
|
||||
|
||||
Propor, apenas para uma futura implementação, direitos explícitos de unidade `industrial_budgets.view`, `industrial_budgets.prepare`, `industrial_budgets.validate` e `industrial_budget_comparisons.view`, `industrial_budget_comparisons.prepare`. Consulta de comparação exige também consulta dos dois lados; preparar comparação exige orçamento aprovado e resultado validado, sem conceder poder de os aprovar. Não herdar estes direitos de `industrial_costs.*`, contabilidade, oficina ou gestão de acessos.
|
||||
|
||||
Distribuição proposta: Osmane com consulta/preparação de orçamento e consulta/preparação de comparação; Samira com consulta/validação de orçamento e consulta de comparação. Nenhuma destas concessões existe por efeito desta especificação. Nomes técnicos e distribuição são proposta para decisão, não alteração dos quatro direitos industriais já instalados. Qualquer aplicação real exigirá apresentação de contas, destino e âmbito exactos e autorização específica separada; não se solicita essa aplicação nesta etapa.
|
||||
|
||||
**Apenas decisões novas a confirmar:** (1) os valores de orçamento propostos em 16.3; (2) os novos direitos e a distribuição propostos acima. O recorte documental, a separação Osmane/Samira e as regras solicitadas nesta secção já estão determinados pela instrução de 28/10 e não são pedidos novamente. Autorização de implementação continua separada e ainda não concedida. Sem código, migrações, concessões, stock, lançamentos, activação real ou publicação nesta etapa.
|
||||
|
||||
### 16.7 Aprovação e autorização posterior de implementação — 28/10/2026
|
||||
|
||||
O utilizador aprovou os valores 900/600/300 e a distribuição funcional da secção 16.6, autorizando implementar e demonstrar o ensaio exclusivamente em `sgf_tempo_test`, com identidades sintéticas distintas, regressões, compilação e prova no navegador isolado. Esta autorização substitui apenas as pendências de decisão e de implementação descritas acima; não aprova antecipadamente uma versão de orçamento criada no sistema, que exige o circuito de validação distinto. Migração e concessões em desenvolvimento continuam separadas e por autorizar; sem alteração de dependências sem apresentação prévia, utilização real, stock, lançamentos, facturação ou publicação. Não presumir aceitação nem criar checkpoint de encerramento antes dela. Preservar `cbdf2b4`, `4a94e8a` e alterações posteriores.
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"policy": "INDUSTRIAL-BUDGET-ACTUAL-SIM-v1",
|
||||
"database": "sgf_tempo_test",
|
||||
"overlapping_processes_per_case": 2,
|
||||
"checks": {
|
||||
"proposal_replay_one_version": true,
|
||||
"decision_replay_one_effect": true,
|
||||
"comparison_replay_one_snapshot": true,
|
||||
"competing_successors_one_winner": true,
|
||||
"competing_decisions_one_winner": true,
|
||||
"competing_comparisons_one_revision": true
|
||||
},
|
||||
"synthetic_only": true
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"environment": "browser-testing",
|
||||
"database": "sgf_tempo_test",
|
||||
"role": "sgf_test_runner",
|
||||
"database_port": 55432,
|
||||
"session_driver": "file",
|
||||
"session_cookie": "sgf_browser_proof",
|
||||
"cache_store": "file",
|
||||
"synthetic_only": true
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"policy": "INDUSTRIAL-BUDGET-ACTUAL-SIM-v1",
|
||||
"date": "2026-10-28",
|
||||
"database": "sgf_tempo_test",
|
||||
"method": "manual_user_report_and_read_only_database_reconciliation",
|
||||
"manual_user_reported_complete_and_incomplete": true,
|
||||
"manual_user_confirmed_reader_forms_absent": true,
|
||||
"screenshots_received": false,
|
||||
"automated_browser_recovered": false,
|
||||
"comparisons": [
|
||||
{
|
||||
"comparison_id": 8,
|
||||
"version": 1,
|
||||
"budget_id": 10,
|
||||
"budget_version": 2,
|
||||
"result_id": 23,
|
||||
"result_version": 1,
|
||||
"actual_known": "1800",
|
||||
"total_delta": "0",
|
||||
"incomplete": false,
|
||||
"residual_separate": "300",
|
||||
"exact_arithmetic_verified": true,
|
||||
"distinct_validation_verified": true
|
||||
},
|
||||
{
|
||||
"comparison_id": 9,
|
||||
"version": 2,
|
||||
"budget_id": 10,
|
||||
"budget_version": 2,
|
||||
"result_id": 24,
|
||||
"result_version": 2,
|
||||
"actual_known": "800",
|
||||
"total_delta": null,
|
||||
"incomplete": true,
|
||||
"residual_separate": "300",
|
||||
"exact_arithmetic_verified": true,
|
||||
"distinct_validation_verified": true
|
||||
}
|
||||
],
|
||||
"role_separation_verified": true,
|
||||
"duplicate_workshop_or_direct_cost_origins": false,
|
||||
"test_records_changed": false,
|
||||
"credentials_changed": false,
|
||||
"user_acceptance": false,
|
||||
"closing_checkpoint_created": false
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"policy": "INDUSTRIAL-BUDGET-ACTUAL-SIM-v1",
|
||||
"date": "2026-10-28",
|
||||
"database": "sgf_tempo_test",
|
||||
"regression": {"scope":"full_suite","tests":169,"assertions":3004,"errors":0,"failures":0},
|
||||
"new_test_cases":9,
|
||||
"overlapping_process_cases":6,
|
||||
"build":{"vite":"8.3.5","passed":true,"dependencies_changed":false},
|
||||
"browser":{"scope":"historical_automated_attempt_only","port":8002,"server_started":true,"synthetic_fixture_prepared":true,"login_demonstrated":false,"completed":false,"blocker":"Computer Use stopped: unable to determine current Edge URL confidently for policy enforcement.","server_stopped":true},
|
||||
"manual_followup":{"user_reported_path_completed":true,"reader_forms_absent_confirmed_by_user":true,"database_reconciliation_passed":true,"screenshots_received":false,"evidence":"industrial-budget-manual-results.json","automated_browser_recovered":false},
|
||||
"development_migration_110000_applied":false,
|
||||
"new_real_grants_applied":false,
|
||||
"real_costing_guard_refused":true,
|
||||
"user_acceptance":false,
|
||||
"closing_checkpoint_created":false
|
||||
}
|
||||
Reference in New Issue
Block a user