Compare commits

...
5 changed files with 1033 additions and 3 deletions
@@ -1051,3 +1051,62 @@ A opção «Preparar cumulações dos tratamentosL7 registados» reutiliza coope
Entrega agrupada preparada com os sete casos novos compatíveis;incompatibilidade e informação insuficiente acompanham o mesmo candidato como estados demonstrados. Não houve instalação nesta passagem. A futura entrega requer main compatível,capacidade do servidor medida novamente ebackup/restauro fresco,mantendo a versão activa até a nova ficar pronta. Recibo:`docs/investmoz/simulations/irpc-l7-combinations-qa-20261026.json`;provas:`outputs/irpc-l7-combinations/`. Reprodução só do delta:`node --test tests/frontend/irpc-special-combinations.test.mjs`;`php tools/irpc-special-combinations-qa.php routes`;`php tools/irpc-special-combinations-qa.php test`;`tsc --noEmit`;build com `INVESTMOZ_QA_BUILD=1`. **L7 parcial;colecta simulada distinta do saldo finalL8.**
Conferência de compatibilidade:main `a7434cd2` incorporado na candidata,com apresentação/catálogo e linhas não fiscais da matriz preservados. Recuperada a adenda históricaQA13 que tinha desaparecido do manual no main;isto é perda documental,não perda do cálculo13. Só tipos/build de integração foram conferidos novamente;provas fiscais aceites conservadas. A revisão servida não foi consultada nesta passagemQA.
## 26/10/2026 — Cumulações L7 entregues pelo Git
**Instalado `f8d57bddf96b4610604a013fcc5bdd703c7dc6d5`.** A anteriora7434cd2,que já incluía632dc069,fica preservada. Main/candidata compatíveis;apresentação ecatálogo sectorial entregues entretanto mantidos. A notaQA anterior é histórica:não há pendência de instalação deste incremento.
Medição inicial:5.06GiB,com inodes suficientes,mas sem margem para o backup fresco mais o mínimo5GiB do instalador. Recuperados0.21GiB somente da cache versionada de compilaçãoNode em`/tmp/node-compile-cache`,sem gestores de pacotes ou ficheiros abertos. Fontes,node_modules,releases,backups,logs,originais eSGF mantidos;permissões/proprietário da pasta preservados. Nova capacidade:5.26GiB e21374782inodes. Backup fresco`2026-10-26T14:20:47Z`:174tabelas/369ficheiros econfiguração;restauro isolado sem rede/55441 com174checksums iguais. Após o backup restavam5.10GiB,acima do mínimo5GiB de compilação;a guarda de um segundo backup não é requisito para repetir o backup acabado de executar. Nenhum limiar foi reduzido.
Só depois destas guardas,integraçãoGit sem forçar histórico;release anterior activa até a nova estar pronta. Compilação,tipos econtrolos automáticos do procedimento passaram:1054testesfrontend,API59testes/317asserções,preservação1teste/3106asserções. Reutilizadas as provasQA12testes/API133/UI/relatórios,não repetidas por iniciativa desta entrega. Conferidos4ficheiros fiscais do delta,68protegidos,31originais,369persistentes/configuração e174tabelas;172tabelas de negócio mantidas,cache/sessões reconciliadas com eventos operacionais/acessos públicos. Schema,roles/grants epermissões iguais;sem migrações/importações/escrita privada sintética. Revisão/manifest servidos,15marcadores,4assets eHTTP200 do simulador conferidos.
O recorte mantém a diferençaCBF16 de25MZN aplicada uma vez,com15recuperados já incluídos nos75deduzidos;depois aplica16% à base cooperativa integralmente elegível. No caso combinado,colecta496,80MZN;com despesa autónoma qualificada,512,80+35=547,80MZN. Valores são colecta simulada,não saldo finalL8. IncompatibilidadeCBF4/13,excepções sem correspondência e informação em falta permanecem explícitas;nenhum benefício é escolhido ouapagado automaticamente.
Após a instalação ficaram4.14GiB livres. Antes de outra compilação,voltar a resolver capacidade contra o mínimo existente e o backup dessa execução;esta entrega foi concluída e não autoriza apagar releases,backups ou provas. SaldoL7 e primeiro incrementoL8 são discriminados na secção seguinte. Recibo:`docs/investmoz/simulations/irpc-l7-combinations-delivery-20261026.json`;provas:`outputs/irpc-l7-combinations-delivery-20261026/`. **L7 parcial;L8 conserva saldo final.**
## 26/10/2026 — Saldo consolidado de L7 e primeiro incremento delimitado de L8
**L7 parcial,com a entrega de cumulaçõesf8d57bdd registada acima.** Deixam de estar pendentes de instalação a combinaçãoCIRPC12+CBF16 no recorte qualificado,a separação do imposto autónomo61(4) e os estados de incompatibilidade/falta/excepção não correspondida demonstrados. Isso não implementa todas as cumulações nem os tratamentos abaixo. Fontes oficiais e provas aceites permanecem válidas;documento em falta limita só o caso/campo que dele dependa.
| CódigoL7 ainda por implementar | Exemplo e condição concreta de retoma |
| --- | --- |
| Outras origens/segregações de despesas autónomas | Despesa100 com apenas60 correspondidos em36g ou encargo fora do resultado:ligar origem/parcela e incidência61(4),sem segundo acréscimo. |
| Cooperativas mistas/retidas e demais entidades9–14 | Base agrária com serviços não abrangidos ou rendimentos sujeitos a retenção:segregar proveitos/custos/base e aplicar o artigo específico;não reduzir tudo a16%. |
| ExtensõesCBF16 e outras combinações | Activo anterior a2025,usado/reabilitado/reavaliado,método/período fora da cobertura,ou excepção expressa à não cumulação:ligar regra temporal/base/método e disposição,ordem e limites à parcela;reutilizar activos/quotas,sem reescrever o passado. |
| Mais-valias61-A e operações54–56/41-A | Ganho já incluído no resultado ou transferência de activo/perda:implementar apuramento e reconciliação próprios,sem dupla incidência ou compensação presumida. |
| CBF17–19 e direito potencial15 | Formação/investimento com activos e despesas elegíveis/excluídos:implementar base,limite,janela temporal e compatibilidade. Direito/origem do crédito emL7;utilização anual e saldo emL8. |
| Regimes sectoriais/territoriais e benefícios específicos | EstatutoZEE ou projecto de infra-estruturas:aplicar disposição/período efectivos e excepção quando prevista;endereço/sector não concede benefício. |
| TransporteL7M20/M22 | Efeito calculado sem campo/edição correspondente:identificar exemplar,instrução,campo e representação;conservar o cálculo exacto independente. |
**Documentos por caso,distintos de código:**natureza/parcela/período;estatuto/reconhecimento exigido ou norma de excepção;saldos anteriores e distinção de exclusão temporária/permanente;disposição/ordem/limites da combinação;exemplar/edição/campo/representação. Não pedir nova validação genérica da autenticidade de fontes aceites,nem repetir pesquisas anteriores sem informação nova. Não preencher campo,código,taxa ou saldo por presunção.
### L8 — primeiro percurso a implementar em QA:colecta→pagamentos comprovados→saldo simulado
**Delimitado,não implementado ou instalado nesta passagem.** Recorte inicial:IRPC de residente no regime geral,ano civil2026,MZN,com colecta corrente determinada e suportes que permitem reconciliar o fecho. Parte de uma execuçãoL6 válida ou deL7 válida quando os efeitos aplicáveis estejam qualificados;guarda chave/versão/NUIT/período e valores de origem. Não soma colectaL6 com colectaL7 nem a colecta ordinária com uma colecta combinada que já a inclua. Não usa uma versãoL6 para ignorar um efeitoL7 positivo ou pendente que afecte o mesmo fecho. Um caso ordinário independente não espera pela implementação de outro benefício ou por um campoM20/M22 desconhecido.
**Dados reutilizados e qualificações novas apenas onde necessárias:**
1. **Colecta:**reutilizar a execução e as condições existentes,distinguindo colecta ordinária,imposto autónomo e colecta combinada. O primeiro fecho completo limita-se aos casos com ausência documentada de tributação autónoma/mais-valias que exija liquidação própria. Se existir imposto autónomo positivo,a parcela ordinária pode ser apresentada,mas não como saldo total até corresponder a articulação;não o apagar ou compensar por pressuposto.
2. **Retenções sofridas:**reutilizarL5 apenas quando `direction=received`,natureza `on_account`,origem efectiva,documento/prova e montante sofrido reconciliados,mesmo sujeito/NUIT/período e rendimento incluído na base apropriada. Retenção entregue pela empresa por pagamento a terceiros,retenção definitiva,mera projecção,guia sem pagamento ou montante ainda não comprovado não são crédito próprio. EmL7cooperativa,a declaração de ausência de rendimentos retidos não pode coexistir silenciosamente com retenção recebida positiva;esse caso exige a segregação própria,sem bloquear o regime normal independente.
3. **Pagamentos por conta efectuados:**registar/reutilizar comprovativo,identificador,data,exercício,sujeito e montanteMZN;reconciliar parcelas e pagamentos sem dupla utilização. Neste primeiro incremento,não calcular automaticamente a obrigaçãoPPC a partir do exercício anterior,nem transformar tesouraria prevista em pagamento efectuado.
4. **Outros créditos/PEC:**reutilizar a informação existente e distinguir valor conhecido,ausência declarada e falta de informação. O primeiro percurso completo exige ausência documentada dePEC e créditos por dupla tributação/investimento/outros créditos ainda sem limite/ordem correspondidos. Presença positiva mantém a parcela/fecho dependente indeterminado;não usar zero. CBF15 potencialL7 não é automaticamente crédito anual utilizável. PEC não se transforma em montante reembolsável nem recebe transporte de3/5anos por presunção.
5. **Identidade/duplicação:**contrapartes e documentos existentes são reutilizados;qualificar beneficiário e NUIT do próprio sujeito. Deduplicar por origem/documento/comprovativo e controlar afectações parciais;um comprovativo não pode aparecer integralmente em retenções ePPC,ou em dois exercícios. Preservar valores declarados e histórico,sem consumo de saldo oficial.
**Resultado e sequência a demonstrar:**colecta válida→deduções admissíveis e respectivas ausências→retenções efectivamente sofridas por conta→PPC comprovados→saldo aritmético→aplicação das regras de cobrança/reembolso do recorte→montante simulado a pagar ou recuperar. Mostrar a decomposição e o sinal;zero só com entradas completas ou ausência documentada. Informação em falta não transforma a colecta em saldo final. Como a base nasce do plano,o resultado continua uma simulação identificada,não autoliquidação submetida,pagamento efectuado ou reembolso deferido/recebido.
**Fontes já disponíveis para o cotejo dirigido de implementação:**CIRPC63/67,natureza das retenções com as alteraçõesLei12/2025;RegulamentoDecreto9/2008 art21(2–5),ordem/limites das deduções,eart27(1–2/6),pagamentos e reembolso. O exemplar aceite prevê no27(6) um mínimo de100MZN;esse parâmetro e a fronteira devem ser ligados à versão/período aplicáveis antes de activar o consumidor,não inferidos de um rótulo de formulário. O cotejo de aplicabilidade/alterações desta regra é trabalho de implementação da fonte aceite,não pedido de certificação genérica nem reabertura dos cálculosL6/L7. Arts64–66/PEC e créditos específicos mantêm as suas regras próprias;juros/multas/calendário,geração de guias,submissão e processamento de reembolso seguem incrementos próprios.
| Critério de aceitação a executar,sem prova reivindicada agora | Exemplo sintético proposto |
| --- | --- |
| Saldo positivo com pagamentos/retencões válidos | Colecta1408−retenção sofrida300−PPC500=608MZN de saldo aritmético;qualificar valor a pagar segundo a regra aplicável. |
| Saldo negativo | Colecta1408−retenção1000−PPC600=−192MZN;identificar192 a recuperar no recorte,se a regra permitir,sem afirmar reembolso recebido. |
| Zero e fronteiras do mínimo | Colecta1408−408−1000=0;demonstrar os lados inferior/igual/superior do mínimo do parâmetro versionado,sem arredondamento novo. |
| Ausência vs informação em falta | Ausência documentada de retenções/PPC/outros créditos permite saldo com parcelas zero justificadas;suporte ou natureza por determinar mantém só o fecho dependente indeterminado. |
| Reutilização e dupla dedução | Seleccionar retenção recebida e comprovativo existentes,recusar pagamento a terceiros/retenção definitiva/duplicado e demonstrar conservação dos originais e cenários anteriores. |
| Cálculo→gravação→recuperação→relatório | Novo livro/snapshotL8 ligado à chave da colecta e às provas seleccionadas;resultado13/14 eL5 anteriores imutáveis;mudança da fonte invalida a fotografia corrente sem recalcular históricos. Relatório/exportação apresenta colecta,abatimentos,saldo e lacunas concordantes. |
Só serão demonstradas estas novas regras/efeitos,emQA isolada e com as guardas existentes. Fracções continuam exactas;representação/campos oficiais sem correspondência ficam identificados e não bloqueiam cálculo independente. Pagamentos noutra moeda,períodos especiais,PEC/créditos positivos,liquidação autónoma e demais situações ficam no saldo concreto deL8,com condição de retoma por regra,origem,limite,período e prova. A documentação deste recorte não é novo cálculo executável.
### Esforço global:referência inicial não é previsão actual
As240–416horas deL8–L14 permanecem identificadas como referência inicial de planeamento,não saldo actual nem prazo assumido. Antes de estimar o conjunto:reconciliar por lote o que já está implementado/reutilizável e o que falta em código;descontar provas aceites sem as repetir;separar espera documental;incluir resíduosL1–L7,integrações/entregas eL15–L16,SISA/encargos imobiliários. Campos de entrada,fontes inventariadas ou percentagens isoladas não provam percurso executável completo. Contar apenas o delta necessário e não somar duas vezes componentes partilhados. Esta passagem entregaL7 e delimitaL8;gere uma estimativa reconciliada futura,sem converter os intervalos iniciais numa promessa global. **L7 parcial;saldo finalL8 ainda não implementado nesta entrega.**
@@ -0,0 +1,789 @@
{
"status": "L7_combinations_installed",
"installed": {
"status": "installed",
"commit": "f8d57bddf96b4610604a013fcc5bdd703c7dc6d5",
"release": "/var/www/investmoz-homologacao/releases/f8d57bddf96b4610604a013fcc5bdd703c7dc6d5-7a31e8ac",
"previous_release": "/var/www/investmoz-homologacao/releases/a7434cd27c09df3d8e6c586f9676b67abcde798e-60070b10",
"database_migrations": 0,
"content_imports": 0
},
"previous_installed": "a7434cd27c09df3d8e6c586f9676b67abcde798e",
"preserved_fiscal_delivery": "632dc069",
"backup": {
"stage": "/var/backups/investmoz-irpc-l7-combinations-delivery-20261026/backup",
"created_at": "2026-10-26T14:20:47Z",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "2a069fcda7a89368323cda9d5339e76e545b85088de594c1e5a585891dd7b3c3",
"files_sha256": "289ebdcb8cf1983f8fcdb237d3fb947d43fbe71a575064cede233368d43b4584",
"restore_verified": false
},
"restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "irpc_l7_combinations_restore_20261026",
"port": 55441,
"source_dump_sha256": "2a069fcda7a89368323cda9d5339e76e545b85088de594c1e5a585891dd7b3c3",
"active_database_writes": 0
},
"backup_restore_verified": true,
"capacity_before_recovery": {
"checked_at_UTC": "2026-10-26T14:16:50.285126+00:00",
"installed": {
"status": "installed",
"commit": "a7434cd27c09df3d8e6c586f9676b67abcde798e",
"release": "/var/www/investmoz-homologacao/releases/a7434cd27c09df3d8e6c586f9676b67abcde798e-60070b10",
"previous_release": "/var/www/investmoz-homologacao/releases/632dc06930d6b4f1b012feb3b4daa3b1cfc53f39-4c020686",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/a7434cd27c09df3d8e6c586f9676b67abcde798e-60070b10",
"release_revision": {
"commit": "a7434cd27c09df3d8e6c586f9676b67abcde798e",
"branch": "main",
"built_at": "2026-10-26T14:07:54.031522+00:00",
"manifest_sha256": "06af8bbd9ffabeac215cbb0357531f4e4169955461d8cfac380f3776e923e64e"
},
"service": "MainPID=0\nExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"volumes": [
{
"path": "/var/www/investmoz-homologacao/releases",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 5430136832,
"available_inodes": 21367883,
"total_inodes": 29089792
},
{
"path": "/var/lib/investmoz-deploy",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 5430136832,
"available_inodes": 21367883,
"total_inodes": 29089792
},
{
"path": "/var/backups",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 5430136832,
"available_inodes": 21367883,
"total_inodes": 29089792
},
{
"path": "/tmp",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 5430136832,
"available_inodes": 21367883,
"total_inodes": 29089792
},
{
"path": "/var/lib/docker",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 5430136832,
"available_inodes": 21367883,
"total_inodes": 29089792
}
],
"free_bytes": 5430136832,
"existing_pipeline_minimum_bytes": 5368709120,
"observed_previous_backup_bytes": 175918494,
"same_partition_release_and_backup": true,
"space_guard_satisfied": false,
"current_release_entry_reference": 31237,
"inodes_available_vs_reference": true,
"inode_note": "Observed current release footprint for scale;no new arbitrary inode threshold. Capacity rechecked after fresh backup.",
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604",
"active_writes": 0
},
"regenerable_Node_cache_recovery": {
"at_UTC": "2026-10-26T14:18:26.184720+00:00",
"target": "/tmp/node-compile-cache",
"kind": "Node versioned compilation cache;source and node_modules retained;regenerable by Node",
"files_removed": 6893,
"logical_bytes": 206715844,
"free_before": 5429366784,
"free_after": 5652504576,
"recovered_bytes": 223137792,
"installed_record_unchanged": true,
"directory_owner_permissions_preserved": true,
"projects_releases_backups_originals_logs_untouched": true,
"active_business_writes": 0
},
"capacity_before": {
"checked_at_UTC": "2026-10-26T14:19:01.971003+00:00",
"installed": {
"status": "installed",
"commit": "a7434cd27c09df3d8e6c586f9676b67abcde798e",
"release": "/var/www/investmoz-homologacao/releases/a7434cd27c09df3d8e6c586f9676b67abcde798e-60070b10",
"previous_release": "/var/www/investmoz-homologacao/releases/632dc06930d6b4f1b012feb3b4daa3b1cfc53f39-4c020686",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/a7434cd27c09df3d8e6c586f9676b67abcde798e-60070b10",
"release_revision": {
"commit": "a7434cd27c09df3d8e6c586f9676b67abcde798e",
"branch": "main",
"built_at": "2026-10-26T14:07:54.031522+00:00",
"manifest_sha256": "06af8bbd9ffabeac215cbb0357531f4e4169955461d8cfac380f3776e923e64e"
},
"service": "MainPID=0\nExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"volumes": [
{
"path": "/var/www/investmoz-homologacao/releases",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 5652262912,
"available_inodes": 21374782,
"total_inodes": 29089792
},
{
"path": "/var/lib/investmoz-deploy",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 5652262912,
"available_inodes": 21374782,
"total_inodes": 29089792
},
{
"path": "/var/backups",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 5652262912,
"available_inodes": 21374782,
"total_inodes": 29089792
},
{
"path": "/tmp",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 5652262912,
"available_inodes": 21374782,
"total_inodes": 29089792
},
{
"path": "/var/lib/docker",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 5652242432,
"available_inodes": 21374780,
"total_inodes": 29089792
}
],
"free_bytes": 5652262912,
"existing_pipeline_minimum_bytes": 5368709120,
"observed_previous_backup_bytes": 175918494,
"same_partition_release_and_backup": true,
"space_guard_satisfied": true,
"current_release_entry_reference": 31237,
"inodes_available_vs_reference": true,
"inode_note": "Observed current release footprint for scale;no new arbitrary inode threshold. Capacity rechecked after fresh backup.",
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604",
"active_writes": 0
},
"capacity_after_backup": {
"checked_at_UTC": "2026-10-26T14:22:54.407089+00:00",
"installed": {
"status": "installed",
"commit": "a7434cd27c09df3d8e6c586f9676b67abcde798e",
"release": "/var/www/investmoz-homologacao/releases/a7434cd27c09df3d8e6c586f9676b67abcde798e-60070b10",
"previous_release": "/var/www/investmoz-homologacao/releases/632dc06930d6b4f1b012feb3b4daa3b1cfc53f39-4c020686",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/a7434cd27c09df3d8e6c586f9676b67abcde798e-60070b10",
"release_revision": {
"commit": "a7434cd27c09df3d8e6c586f9676b67abcde798e",
"branch": "main",
"built_at": "2026-10-26T14:07:54.031522+00:00",
"manifest_sha256": "06af8bbd9ffabeac215cbb0357531f4e4169955461d8cfac380f3776e923e64e"
},
"service": "MainPID=0\nExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"volumes": [
{
"path": "/var/www/investmoz-homologacao/releases",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 5472501760,
"available_inodes": 21374766,
"total_inodes": 29089792
},
{
"path": "/var/lib/investmoz-deploy",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 5472501760,
"available_inodes": 21374766,
"total_inodes": 29089792
},
{
"path": "/var/backups",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 5472501760,
"available_inodes": 21374766,
"total_inodes": 29089792
},
{
"path": "/tmp",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 5472501760,
"available_inodes": 21374766,
"total_inodes": 29089792
},
{
"path": "/var/lib/docker",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 5472501760,
"available_inodes": 21374766,
"total_inodes": 29089792
}
],
"free_bytes": 5472501760,
"existing_pipeline_minimum_bytes": 5368709120,
"observed_previous_backup_bytes": 175918494,
"same_partition_release_and_backup": true,
"space_guard_satisfied": false,
"current_release_entry_reference": 31237,
"inodes_available_vs_reference": true,
"inode_note": "Observed current release footprint for scale;no new arbitrary inode threshold. Capacity rechecked after fresh backup.",
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604",
"active_writes": 0
},
"post_backup_existing_build_minimum_satisfied": true,
"post_backup_next_fresh_backup_guard_not_required_for_already_completed_backup": true,
"capacity_after_installation": {
"checked_at_UTC": "2026-10-26T14:29:30.537317+00:00",
"installed": {
"status": "installed",
"commit": "f8d57bddf96b4610604a013fcc5bdd703c7dc6d5",
"release": "/var/www/investmoz-homologacao/releases/f8d57bddf96b4610604a013fcc5bdd703c7dc6d5-7a31e8ac",
"previous_release": "/var/www/investmoz-homologacao/releases/a7434cd27c09df3d8e6c586f9676b67abcde798e-60070b10",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/f8d57bddf96b4610604a013fcc5bdd703c7dc6d5-7a31e8ac",
"release_revision": {
"commit": "f8d57bddf96b4610604a013fcc5bdd703c7dc6d5",
"branch": "main",
"built_at": "2026-10-26T14:26:51.629481+00:00",
"manifest_sha256": "367be71b25b56a83571d610e211ea11beae2af87989d62ef6cc7b9c54eabf580"
},
"service": "MainPID=0\nExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"volumes": [
{
"path": "/var/www/investmoz-homologacao/releases",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 4441751552,
"available_inodes": 21342698,
"total_inodes": 29089792
},
{
"path": "/var/lib/investmoz-deploy",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 4441751552,
"available_inodes": 21342698,
"total_inodes": 29089792
},
{
"path": "/var/backups",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 4441751552,
"available_inodes": 21342698,
"total_inodes": 29089792
},
{
"path": "/tmp",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 4441747456,
"available_inodes": 21342697,
"total_inodes": 29089792
},
{
"path": "/var/lib/docker",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 4441747456,
"available_inodes": 21342696,
"total_inodes": 29089792
}
],
"free_bytes": 4441751552,
"existing_pipeline_minimum_bytes": 5368709120,
"observed_previous_backup_bytes": 175918494,
"same_partition_release_and_backup": true,
"space_guard_satisfied": false,
"current_release_entry_reference": 31259,
"inodes_available_vs_reference": true,
"inode_note": "Observed current release footprint for scale;no new arbitrary inode threshold. Capacity rechecked after fresh backup.",
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604",
"active_writes": 0
},
"next_delivery_capacity_adjustment_required": true,
"delta": [
{
"path": "resources/js/lib/irpc-special.ts",
"sha256_LF": "aea0e55b9317ca8ebb313a02e5e92c5b0bac805157d67d54f7c30c71068f46e6"
},
{
"path": "resources/js/lib/irpc-normal.ts",
"sha256_LF": "bce82366ab4ae41fc5f889d9a68d041604e1c032823e4a9384a1227e170c649b"
},
{
"path": "resources/js/components/simulation-irpc-special.tsx",
"sha256_LF": "de77c20af4f07cb2fda31b94cb2c163b627b987d816b43e196590afe59d22fb8"
},
{
"path": "resources/js/lib/irpc-special-combinations.ts",
"sha256_LF": "0c80d39930e2a3f598ba2fed6d7e31252bc24211b5a908778367e2451fcbc90c"
}
],
"preservation": {
"previous_release_preserved": "/var/www/investmoz-homologacao/releases/a7434cd27c09df3d8e6c586f9676b67abcde798e-60070b10",
"installed": {
"status": "installed",
"commit": "f8d57bddf96b4610604a013fcc5bdd703c7dc6d5",
"release": "/var/www/investmoz-homologacao/releases/f8d57bddf96b4610604a013fcc5bdd703c7dc6d5-7a31e8ac",
"previous_release": "/var/www/investmoz-homologacao/releases/a7434cd27c09df3d8e6c586f9676b67abcde798e-60070b10",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 4,
"preserved_L3_ISPC_FX_runtime_files_verified": 68,
"documentary_files_verified": 31,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "0d909f267cc44165e41d5ac5e966448f"
},
"after": {
"rows": 106,
"checksum": "8381b51b093febcc81854e20cb22bec8"
}
},
"sessions": {
"before": {
"rows": 12,
"checksum": "aa6448d95c23f325f4e2004fb48315ce"
},
"after": {
"rows": 13,
"checksum": "e64cf16446c054a7e852f4944574dabf"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"schema_permissions_after": {
"schema_sha256": "5045b3e51d2185377aa3d9ac7fa07a44fad3ec620cdfa83ffe31c8884ee1601d",
"roles_grants_sha256": "1530c33cb016e67bfdc64891ddfce7f185b13b56b2cd87c012871a685e118109",
"filesystem_permissions": {
".env": {
"mode": 416,
"uid": 1001,
"gid": 33
},
"storage": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"storage/app": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"bootstrap/cache": {
"mode": 1528,
"uid": 1001,
"gid": 33
}
},
"comparison_identity": "postgres;catalogue read only;no passwords collected",
"unchanged": true
},
"operational_delta": {
"status": "operational_delta_reconciled",
"comparison_identity": "postgres before/after;isolated restored baseline;no RLS visibility inference",
"cache": "queue:restart;requestthrottle;identical home-sector cached value with refreshed expiry(HomeController remember10min);no deletedcache",
"sessions": "anonymous sessions from delivery user-agent or exactUA/time correlated with nginx public request;deleted sessions individually expired beyond configured lifetime,normal database session garbage collection(config/session lottery2/100)",
"delta": {
"cache": {
"before_rows": 106,
"after_rows": 106,
"changes": [
{
"key_sha256": "7f7dd83f47f5bf404d55e6e9f1367948721579970b195680645e356031a070ff",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-illuminate:queue:restart",
"is_queue_restart_key": true,
"expiration_unchanged": false,
"throttle_timer_pair": false,
"same_value_home_cache_expiry_refresh": false
}
]
},
"sessions": {
"before_rows": 12,
"after_rows": 14,
"changes": [
{
"key_sha256": "d8e8fff391c7cb6369d141adae95227c9616f39055ffd58b5fda3f0cc6eda2a4",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true,
"expired_before_comparison": false,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": true
},
{
"key_sha256": "1618c52511f4c5d1fba6bbf74167ce464d7fbe7a121a937cab645415fa7f0878",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true,
"expired_before_comparison": false,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": true
}
]
}
},
"business_tables_to_confirm_separately": 172,
"active_data_writes_by_comparison": 0,
"restore_network": "none"
},
"public": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "f8d57bddf96b4610604a013fcc5bdd703c7dc6d5",
"branch": "main",
"built_at": "2026-10-26T14:26:51.629481+00:00",
"manifest_sha256": "367be71b25b56a83571d610e211ea11beae2af87989d62ef6cc7b9c54eabf580"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"IRPC-normal-adjustments/14": [
"assets/project-dossier-JLJx7klI.js"
],
"Preparar cumulações dos tratamentos L7 registados": [
"assets/services-BKUDFoA6.js"
],
"Combinação incompatível": [
"assets/project-dossier-JLJx7klI.js"
],
"única diferença adicional:": [
"assets/project-dossier-JLJx7klI.js"
],
"IRPC-normal-adjustments/13": [
"assets/project-dossier-JLJx7klI.js"
],
"Preparar CBF16 para início de actividade": [
"assets/services-BKUDFoA6.js"
],
"Preparar CBF16 para cessação e quotas anteriores": [
"assets/services-BKUDFoA6.js"
],
"sem consumo de saldos oficiais": [
"assets/project-dossier-JLJx7klI.js"
],
"Preparar CBF16 com duodécimos": [
"assets/services-BKUDFoA6.js"
],
"CBF16 — duodécimos reutilizados de L6": [
"assets/project-dossier-JLJx7klI.js"
],
"Suporte dos duodécimos CBF16": [
"assets/services-BKUDFoA6.js"
],
"Manter preparação anual CBF16": [
"assets/services-BKUDFoA6.js"
],
"CBF16 por duodécimos — ": [
"assets/project-dossier-JLJx7klI.js"
],
"diferença adicional:": [
"assets/project-dossier-JLJx7klI.js"
],
"IRPC-normal-adjustments/10": [
"assets/project-dossier-JLJx7klI.js"
]
},
"assets": [
{
"file": "assets/project-dossier-document-W46BRNSe.js",
"status": 200,
"sha256": "80e14fba26e9e81f840ba09eb3f9e24a70404bbe7e6933b490b3085299a6186f"
},
{
"file": "assets/services-BKUDFoA6.js",
"status": 200,
"sha256": "0ac8c266fcecec0e564619948f4cec28cd2572975aff70acc6997971a67fcfd9"
},
{
"file": "assets/project-dossier-JLJx7klI.js",
"status": 200,
"sha256": "1016cb33e4476a95e1a06ce17fad4312efc93aef01994a2674e251d00c884f0b"
},
{
"file": "assets/simulation-form-zFZ4YNrB.js",
"status": 200,
"sha256": "338068b86cce1c3215ee71b1328a6cb2f754b903ed78ff1886f8554df506d2d6"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-BPLj40Iz.js",
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"pipeline": {
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"installed": {
"status": "installed",
"commit": "f8d57bddf96b4610604a013fcc5bdd703c7dc6d5",
"release": "/var/www/investmoz-homologacao/releases/f8d57bddf96b4610604a013fcc5bdd703c7dc6d5-7a31e8ac",
"previous_release": "/var/www/investmoz-homologacao/releases/a7434cd27c09df3d8e6c586f9676b67abcde798e-60070b10",
"database_migrations": 0,
"content_imports": 0
},
"latest_report": {
"status": "installed",
"commit": "f8d57bddf96b4610604a013fcc5bdd703c7dc6d5",
"release": "/var/www/investmoz-homologacao/releases/f8d57bddf96b4610604a013fcc5bdd703c7dc6d5-7a31e8ac",
"previous_release": "/var/www/investmoz-homologacao/releases/a7434cd27c09df3d8e6c586f9676b67abcde798e-60070b10",
"database_migrations": 0,
"content_imports": 0,
"requested_commits": [
"f8d57bddf96b4610604a013fcc5bdd703c7dc6d5"
],
"finished_at": "2026-10-26T14:26:54.452008+00:00"
},
"log_file": "1793024604346159017.log",
"summaries": [
"OK (1 test, 3106 assertions)",
"built in 32.14s",
"OK (59 tests, 317 assertions)",
"# tests 1054",
"# pass 1054",
"# fail 0"
],
"log_bytes": 299642
},
"accepted_QA_proofs_reused": {
"new_frontend_tests": 12,
"API_tests": 1,
"API_assertions": 133,
"QA_database": "simulator_fiscal_delta_20261021_test",
"QA_host": "127.0.0.1",
"QA_port": 55441,
"QA_transaction_rollback": true,
"wayfinder_with_form": true,
"typescript": true,
"build": true,
"recovered_HTML_and_financial_dossier": 7,
"UI": {
"actualComponent": true,
"explicitPrepareCancel": true,
"assetsPeriodsBenefitsNotEdited": true,
"missingOnlyDependentL7": true,
"CBF16Additional25ThenCooperative16": true,
"prior15AlreadyIncluded": true,
"specificGenericIncompatibilityNoAutomaticChoice": true,
"unmappedExceptionIndeterminate": true,
"autonomous35NotHalved": true,
"saveRecoverDownload": true,
"accepted13InputPreserved": true,
"L8FinalUnknown": true,
"errors": []
},
"accepted13_exact_model_key_history_comparison": true,
"accepted_suites_not_rerun": true,
"typescript_build_after_main": true
},
"no_custom_QA_suite_repeated": true,
"L7_remaining_code": [
"other combinations and express exceptions",
"CBF17-19 and potential15 entitlement",
"specific sector/territorial regimes",
"mixed/withheld cooperativeincome and otherentities",
"other autonome expense origins",
"furtherCBF16 scopes",
"capitalgains/specialoperations",
"officialL7M20M22transport"
],
"L7_resume_conditions": [
"disposition/article/scope/period/order/limit and segregatedparcel for combination",
"implement not-yet-supported treatment before adding its effect",
"specific document only for dependentcase/field"
],
"L8_first_increment": {
"status": "L8_first_increment_delimited_not_implemented",
"date": "2026-10-26",
"installed_L7": "f8d57bddf96b4610604a013fcc5bdd703c7dc6d5",
"no_new_L8_calculator_installed": true,
"initial_scope": "resident general IRPC,annualcivil2026,MZN,currentdetermined assessment,documented absence of positive PEC/unmappedcredits and autonomoustax needing ownsettlement",
"inputs_reused": [
"current L6 or applicable qualifiedL7 assessment key/version/subjectNUIT/period;never add both",
"L5 received/effective/on_account qualified and reconciled withholding proofs",
"actual documented PPC payments by subject/period/receipt",
"known/declaredabsence/missing states for every credit/paymentfamily"
],
"wrong_credits_excluded": [
"withholding remitted by enterprise on payments to others",
"definitive withholding",
"projected amount without effective proof",
"duplicate receipt/allocation/year",
"unmapped positive PEC/investment/doubletax credit"
],
"sequence": [
"validassessment",
"admissibledeductions and explicitabsence",
"effective onaccount withholdings",
"actual PPC",
"signed arithmeticbalance",
"applicable collection/refund minimum rules",
"simulatedpayable orrecoverable;not submittedor receivedrefund"
],
"proposed_acceptance_cases": [
{
"colecta": "1408",
"withholdings": "300",
"PPC": "500",
"arithmetic_balance": "608"
},
{
"colecta": "1408",
"withholdings": "1000",
"PPC": "600",
"arithmetic_balance": "-192"
},
{
"colecta": "1408",
"withholdings": "408",
"PPC": "1000",
"arithmetic_balance": "0"
},
"minimumrule boundaries afterperiod/version mapping",
"knownzero vs declaredabsence vs missing",
"wrongbeneficiary/definitive/duplicates",
"calculation-save-recover-report with oldhistories unchanged"
],
"cases_tested_now": false,
"rule_work_before_implementation": [
"CIRPC63/67 with Lei12/2025 nature applicable",
"Decreto9/2008 art21(2-5) deductionorder/limits and27(1-2/6) settlement",
"100MZN minimum in accepted2008 exemplar:link to applicable version/period before enabling parameter;no generic credibility revalidation",
"retain PEC/credits distinct and nonrefundable limits;no3/5year automaticcarry"
],
"boundaries": [
"qualified cooperative withoutwithheldincome cannot silently acceptpositivereceivedwithholdings without L7segregation",
"no L6fallback toignore applicablependingL7effect",
"autonomoustax/61Apositive needs own settlement articulation",
"fraction exact;unmapped formrepresentation onlyblocks affectedtransport"
],
"deferred": [
"automatic PPC/PEC obligationcalculation",
"positivePEC/creditorderlimitscarry",
"autonomoustaxsettlement",
"specialperiods/foreigncurrencypayments",
"interest/penalties/calendar/guideremittance",
"AT submission/refundprocessing",
"unmappedM20M22fields"
],
"sources_reused": [
{
"file": "C:\\laragon\\www\\portal-investidor-irpc-l7-common-qa-20261026\\docs\\investmoz\\simulations\\source-archive\\Lei-34-2007-BR52.pdf",
"sha256": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e",
"articles": "CIRPC63/67",
"PDF_pages": [
18,
19
],
"official_source_acceptance_preserved": true
},
{
"file": "C:\\laragon\\www\\portal-investidor-irpc-l7-common-qa-20261026\\docs\\investmoz\\simulations\\source-archive\\Decreto-9-2008-BR16.pdf",
"sha256": "96fccdecbfdc11c9eafb90fbc6c7bc259f88bbd4c7507d1ac3af1fa03f960697",
"articles": "RIRPC21/27",
"PDF_pages": [
6,
7
],
"official_source_acceptance_preserved": true
},
{
"file": "C:\\laragon\\www\\portal-investidor-irpc-l7-common-qa-20261026\\docs\\investmoz\\simulations\\source-archive\\BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251",
"articles": "Lei12/2025 IRPC67/version2026",
"PDF_pages": [
18,
19,
20
],
"official_source_acceptance_preserved": true
}
],
"global_effort": {
"initial_L8_L14_reference_hours": [
240,
416
],
"is_current_remainingforecast": false,
"reconciliation_before_globalforecast": [
"implemented/reusable vs remainingcode perlot",
"reuseacceptedproofs;no duplicate sharedcomponentestimate",
"documentarywait separately",
"L1-L7residuals,integration/delivery,L15-L16 included"
]
},
"L7_partial": true,
"L8_final_still_not_implemented": true
},
"global_effort_forecast_not_assumed": true,
"L6_operational_delimited": true,
"L7_partial": true,
"L8_final_separate": true,
"SGF_TEMPO_untouched": true
}
@@ -0,0 +1,123 @@
{
"status": "L8_first_increment_delimited_not_implemented",
"date": "2026-10-26",
"installed_L7": "f8d57bddf96b4610604a013fcc5bdd703c7dc6d5",
"no_new_L8_calculator_installed": true,
"initial_scope": "resident general IRPC,annualcivil2026,MZN,currentdetermined assessment,documented absence of positive PEC/unmappedcredits and autonomoustax needing ownsettlement",
"inputs_reused": [
"current L6 or applicable qualifiedL7 assessment key/version/subjectNUIT/period;never add both",
"L5 received/effective/on_account qualified and reconciled withholding proofs",
"actual documented PPC payments by subject/period/receipt",
"known/declaredabsence/missing states for every credit/paymentfamily"
],
"wrong_credits_excluded": [
"withholding remitted by enterprise on payments to others",
"definitive withholding",
"projected amount without effective proof",
"duplicate receipt/allocation/year",
"unmapped positive PEC/investment/doubletax credit"
],
"sequence": [
"validassessment",
"admissibledeductions and explicitabsence",
"effective onaccount withholdings",
"actual PPC",
"signed arithmeticbalance",
"applicable collection/refund minimum rules",
"simulatedpayable orrecoverable;not submittedor receivedrefund"
],
"proposed_acceptance_cases": [
{
"colecta": "1408",
"withholdings": "300",
"PPC": "500",
"arithmetic_balance": "608"
},
{
"colecta": "1408",
"withholdings": "1000",
"PPC": "600",
"arithmetic_balance": "-192"
},
{
"colecta": "1408",
"withholdings": "408",
"PPC": "1000",
"arithmetic_balance": "0"
},
"minimumrule boundaries afterperiod/version mapping",
"knownzero vs declaredabsence vs missing",
"wrongbeneficiary/definitive/duplicates",
"calculation-save-recover-report with oldhistories unchanged"
],
"cases_tested_now": false,
"rule_work_before_implementation": [
"CIRPC63/67 with Lei12/2025 nature applicable",
"Decreto9/2008 art21(2-5) deductionorder/limits and27(1-2/6) settlement",
"100MZN minimum in accepted2008 exemplar:link to applicable version/period before enabling parameter;no generic credibility revalidation",
"retain PEC/credits distinct and nonrefundable limits;no3/5year automaticcarry"
],
"boundaries": [
"qualified cooperative withoutwithheldincome cannot silently acceptpositivereceivedwithholdings without L7segregation",
"no L6fallback toignore applicablependingL7effect",
"autonomoustax/61Apositive needs own settlement articulation",
"fraction exact;unmapped formrepresentation onlyblocks affectedtransport"
],
"deferred": [
"automatic PPC/PEC obligationcalculation",
"positivePEC/creditorderlimitscarry",
"autonomoustaxsettlement",
"specialperiods/foreigncurrencypayments",
"interest/penalties/calendar/guideremittance",
"AT submission/refundprocessing",
"unmappedM20M22fields"
],
"sources_reused": [
{
"file": "C:\\laragon\\www\\portal-investidor-irpc-l7-common-qa-20261026\\docs\\investmoz\\simulations\\source-archive\\Lei-34-2007-BR52.pdf",
"sha256": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e",
"articles": "CIRPC63/67",
"PDF_pages": [
18,
19
],
"official_source_acceptance_preserved": true
},
{
"file": "C:\\laragon\\www\\portal-investidor-irpc-l7-common-qa-20261026\\docs\\investmoz\\simulations\\source-archive\\Decreto-9-2008-BR16.pdf",
"sha256": "96fccdecbfdc11c9eafb90fbc6c7bc259f88bbd4c7507d1ac3af1fa03f960697",
"articles": "RIRPC21/27",
"PDF_pages": [
6,
7
],
"official_source_acceptance_preserved": true
},
{
"file": "C:\\laragon\\www\\portal-investidor-irpc-l7-common-qa-20261026\\docs\\investmoz\\simulations\\source-archive\\BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251",
"articles": "Lei12/2025 IRPC67/version2026",
"PDF_pages": [
18,
19,
20
],
"official_source_acceptance_preserved": true
}
],
"global_effort": {
"initial_L8_L14_reference_hours": [
240,
416
],
"is_current_remainingforecast": false,
"reconciliation_before_globalforecast": [
"implemented/reusable vs remainingcode perlot",
"reuseacceptedproofs;no duplicate sharedcomponentestimate",
"documentarywait separately",
"L1-L7residuals,integration/delivery,L15-L16 included"
]
},
"L7_partial": true,
"L8_final_still_not_implemented": true
}
@@ -2523,8 +2523,8 @@ As estimativas são **horas de trabalho técnico**, não calendário nem mediç
| L4 — ISPC: elegibilidade e apuramento | Campos de enquadramento e motor genérico | Regime/actividade/volume elegível, opções/exclusões, escalões/taxas aplicáveis, mínimo, trimestre e retenções específicas; comparação só entre regimes admissíveis | Vendas por actividade, custos, NUIT, natureza jurídica e residência confirmada | Lei9/2025 e regulamentação/período; distinguir receita anual, trimestre e excesso | 40–64 h |
| L5 — retenções IRPC e guias | Documentos de compras/vendas e guia M/39 como exemplar | Rendimento pago/recebido, entidade que retém, residente/não residente/EP, evento temporal, excepções e casos digitais/e-money; guia e comprovativo ligados à operação | Contrapartes, facturas, pagamentos, período, moeda, oportunidade | Artigos aplicáveis por rendimento, taxa/convenção se invocada; corrigir remissões do exemplar. Sem submissão electrónica AT presumida | 32–56 h |
| L6 — IRPC anual: regime normal | Disponível5aaf1a56:percurso normal demonstrado atécolecta,períodos/moedas e preparação parcialM20/M22 | Operacional no âmbito demonstrado por decisãoTempo26/10;limitações explícitas;5grupos código+5documentais preservados;sem conclusão integral | Plano financeiro,dados comuns,activos/livros e histórico;retenções/pagamentos/créditos anuaisL8 | Pendências bloqueiam só os casos dependentes;L7/L8 próprios | Estimativa inicial48–80h;saldo não reestimado |
| L7 — IRPC: tratamentos específicos | 632dc069 instalado;cumulações14 prontas emQA,sem instalação | CIRPC12+CBF16 qualificados e61(4) separado;incompatibilidadeCBF4/13 e lacunas explícitas;L7parcial | Activos/períodos/saldos/benefícios reutilizados;diferença25 uma vez e15 já nos75;taxa16% só sobre base elegível | Outras combinações/excepções e restantes tratamentos dependem de regra/parcela/ordem/limites;L8 conserva saldo final | Estimativa inicial48–80h;saldo integral não reestimado |
| L8 — IRPC: liquidação e pagamentos | Parcelas L5–L7 e formulários originais | PPC/PEC, deduções/créditos, dupla tributação quando aplicável, saldo anual a pagar/recuperar; calendário e reconciliação com pagamentos | Retenções, colecta, saldos anteriores, pagamentos/comprovativos | Base anterior para PPC/PEC, regras de limitação/transporte; não usar cinco anos ou compensação automática sem cotejo específico | 32–56 h |
| L7 — IRPC: tratamentos específicos | f8d57bdd instalado;632dc069 e a7434cd2 preservados no percurso | Cumulações demonstradas disponíveis;7famílias de saldo e documentos por caso discriminados;L7parcial | Activos/períodos/saldos/benefícios reutilizados;ordem,limites e incompatibilidades explícitos | Outras combinações/específicos/mistos/transporte próprios;L8delimitado separadamente | Inicial48–80h;saldo não reestimado |
| L8 — IRPC: liquidação e pagamentos | Primeiro incremento delimitado,não implementado:colecta válida→retenções recebidas por conta/PPC comprovados→saldo simulado | Residente geral,ano2026/MZN;ausências documentadas dePEC/créditos/autónomos fora do recorte;gravação/recuperação/relatório a demonstrar | Reutiliza colectaL6/L7,L5received/effective/on_account ecomprovativos do próprio sujeito/período | Não abater retenções por conta de terceiros;PEC/créditos/limites próprios;regra de mínimo/versionamento a aplicar;camposM20M22 só bloqueiam transporte afectado | Inicial32–56h;não é previsão actual do recorte |
| L9 — INSS: contribuição social | Massa salarial agregada e referência TCO3%+4% | Trabalhadores, remuneração/base contributiva, exclusões, empregador/trabalhador, TCO/TCP, declaração e encargos por período | Equipa/custos, entidade e calendário; cadastro de pessoa partilhado com L10 | Regulamento e alterações aplicáveis, natureza do vínculo; confirmar base antes da taxa. Contribuição social, distinta dos impostos | 24–40 h |
| L10 — IRPS: retenção mensal e líquido | Entrada IRPS, custos salariais e escalões anuais documentais | Tabela mensal própria, remunerações/benefícios, situação pessoal relevante, retenção, salário líquido e contribuição ligada a L9 | Mesmo trabalhador/folha salarial, pagamentos e retenções | Tabela mensal do período, residência e condições familiares necessárias; não dividir escalões anuais por12 | 40–64 h |
| L11 — IRPS: apuramento anual e outras categorias | Escalões anuais e exemplares M/19/M/20/anexos | Categorias aplicáveis aos rendimentos documentados, actividade independente, capitais/prediais/mais-valias, englobamento/tratamento autónomo, deduções, retenções e saldo | Dados pessoais autorizados, rendimentos/despesas, activos e L10 | Código IRPS/Lei11/2025, âmbito/categoria/período e deduções pessoais; diferenças de edição dos anexos. Não copiar regras IRPC | 48–80 h |
@@ -6572,3 +6572,62 @@ A opção «Preparar cumulações dos tratamentosL7 registados» reutiliza coope
Entrega agrupada preparada com os sete casos novos compatíveis;incompatibilidade e informação insuficiente acompanham o mesmo candidato como estados demonstrados. Não houve instalação nesta passagem. A futura entrega requer main compatível,capacidade do servidor medida novamente ebackup/restauro fresco,mantendo a versão activa até a nova ficar pronta. Recibo:`docs/investmoz/simulations/irpc-l7-combinations-qa-20261026.json`;provas:`outputs/irpc-l7-combinations/`. Reprodução só do delta:`node --test tests/frontend/irpc-special-combinations.test.mjs`;`php tools/irpc-special-combinations-qa.php routes`;`php tools/irpc-special-combinations-qa.php test`;`tsc --noEmit`;build com `INVESTMOZ_QA_BUILD=1`. **L7 parcial;colecta simulada distinta do saldo finalL8.**
Conferência de compatibilidade:main `a7434cd2` incorporado na candidata,com apresentação/catálogo e linhas não fiscais da matriz preservados. Recuperada a adenda históricaQA13 que tinha desaparecido do manual no main;isto é perda documental,não perda do cálculo13. Só tipos/build de integração foram conferidos novamente;provas fiscais aceites conservadas. A revisão servida não foi consultada nesta passagemQA.
## 26/10/2026 — Cumulações L7 entregues pelo Git
**Instalado `f8d57bddf96b4610604a013fcc5bdd703c7dc6d5`.** A anteriora7434cd2,que já incluía632dc069,fica preservada. Main/candidata compatíveis;apresentação ecatálogo sectorial entregues entretanto mantidos. A notaQA anterior é histórica:não há pendência de instalação deste incremento.
Medição inicial:5.06GiB,com inodes suficientes,mas sem margem para o backup fresco mais o mínimo5GiB do instalador. Recuperados0.21GiB somente da cache versionada de compilaçãoNode em`/tmp/node-compile-cache`,sem gestores de pacotes ou ficheiros abertos. Fontes,node_modules,releases,backups,logs,originais eSGF mantidos;permissões/proprietário da pasta preservados. Nova capacidade:5.26GiB e21374782inodes. Backup fresco`2026-10-26T14:20:47Z`:174tabelas/369ficheiros econfiguração;restauro isolado sem rede/55441 com174checksums iguais. Após o backup restavam5.10GiB,acima do mínimo5GiB de compilação;a guarda de um segundo backup não é requisito para repetir o backup acabado de executar. Nenhum limiar foi reduzido.
Só depois destas guardas,integraçãoGit sem forçar histórico;release anterior activa até a nova estar pronta. Compilação,tipos econtrolos automáticos do procedimento passaram:1054testesfrontend,API59testes/317asserções,preservação1teste/3106asserções. Reutilizadas as provasQA12testes/API133/UI/relatórios,não repetidas por iniciativa desta entrega. Conferidos4ficheiros fiscais do delta,68protegidos,31originais,369persistentes/configuração e174tabelas;172tabelas de negócio mantidas,cache/sessões reconciliadas com eventos operacionais/acessos públicos. Schema,roles/grants epermissões iguais;sem migrações/importações/escrita privada sintética. Revisão/manifest servidos,15marcadores,4assets eHTTP200 do simulador conferidos.
O recorte mantém a diferençaCBF16 de25MZN aplicada uma vez,com15recuperados já incluídos nos75deduzidos;depois aplica16% à base cooperativa integralmente elegível. No caso combinado,colecta496,80MZN;com despesa autónoma qualificada,512,80+35=547,80MZN. Valores são colecta simulada,não saldo finalL8. IncompatibilidadeCBF4/13,excepções sem correspondência e informação em falta permanecem explícitas;nenhum benefício é escolhido ouapagado automaticamente.
Após a instalação ficaram4.14GiB livres. Antes de outra compilação,voltar a resolver capacidade contra o mínimo existente e o backup dessa execução;esta entrega foi concluída e não autoriza apagar releases,backups ou provas. SaldoL7 e primeiro incrementoL8 são discriminados na secção seguinte. Recibo:`docs/investmoz/simulations/irpc-l7-combinations-delivery-20261026.json`;provas:`outputs/irpc-l7-combinations-delivery-20261026/`. **L7 parcial;L8 conserva saldo final.**
## 26/10/2026 — Saldo consolidado de L7 e primeiro incremento delimitado de L8
**L7 parcial,com a entrega de cumulaçõesf8d57bdd registada acima.** Deixam de estar pendentes de instalação a combinaçãoCIRPC12+CBF16 no recorte qualificado,a separação do imposto autónomo61(4) e os estados de incompatibilidade/falta/excepção não correspondida demonstrados. Isso não implementa todas as cumulações nem os tratamentos abaixo. Fontes oficiais e provas aceites permanecem válidas;documento em falta limita só o caso/campo que dele dependa.
| CódigoL7 ainda por implementar | Exemplo e condição concreta de retoma |
| --- | --- |
| Outras origens/segregações de despesas autónomas | Despesa100 com apenas60 correspondidos em36g ou encargo fora do resultado:ligar origem/parcela e incidência61(4),sem segundo acréscimo. |
| Cooperativas mistas/retidas e demais entidades9–14 | Base agrária com serviços não abrangidos ou rendimentos sujeitos a retenção:segregar proveitos/custos/base e aplicar o artigo específico;não reduzir tudo a16%. |
| ExtensõesCBF16 e outras combinações | Activo anterior a2025,usado/reabilitado/reavaliado,método/período fora da cobertura,ou excepção expressa à não cumulação:ligar regra temporal/base/método e disposição,ordem e limites à parcela;reutilizar activos/quotas,sem reescrever o passado. |
| Mais-valias61-A e operações54–56/41-A | Ganho já incluído no resultado ou transferência de activo/perda:implementar apuramento e reconciliação próprios,sem dupla incidência ou compensação presumida. |
| CBF17–19 e direito potencial15 | Formação/investimento com activos e despesas elegíveis/excluídos:implementar base,limite,janela temporal e compatibilidade. Direito/origem do crédito emL7;utilização anual e saldo emL8. |
| Regimes sectoriais/territoriais e benefícios específicos | EstatutoZEE ou projecto de infra-estruturas:aplicar disposição/período efectivos e excepção quando prevista;endereço/sector não concede benefício. |
| TransporteL7M20/M22 | Efeito calculado sem campo/edição correspondente:identificar exemplar,instrução,campo e representação;conservar o cálculo exacto independente. |
**Documentos por caso,distintos de código:**natureza/parcela/período;estatuto/reconhecimento exigido ou norma de excepção;saldos anteriores e distinção de exclusão temporária/permanente;disposição/ordem/limites da combinação;exemplar/edição/campo/representação. Não pedir nova validação genérica da autenticidade de fontes aceites,nem repetir pesquisas anteriores sem informação nova. Não preencher campo,código,taxa ou saldo por presunção.
### L8 — primeiro percurso a implementar em QA:colecta→pagamentos comprovados→saldo simulado
**Delimitado,não implementado ou instalado nesta passagem.** Recorte inicial:IRPC de residente no regime geral,ano civil2026,MZN,com colecta corrente determinada e suportes que permitem reconciliar o fecho. Parte de uma execuçãoL6 válida ou deL7 válida quando os efeitos aplicáveis estejam qualificados;guarda chave/versão/NUIT/período e valores de origem. Não soma colectaL6 com colectaL7 nem a colecta ordinária com uma colecta combinada que já a inclua. Não usa uma versãoL6 para ignorar um efeitoL7 positivo ou pendente que afecte o mesmo fecho. Um caso ordinário independente não espera pela implementação de outro benefício ou por um campoM20/M22 desconhecido.
**Dados reutilizados e qualificações novas apenas onde necessárias:**
1. **Colecta:**reutilizar a execução e as condições existentes,distinguindo colecta ordinária,imposto autónomo e colecta combinada. O primeiro fecho completo limita-se aos casos com ausência documentada de tributação autónoma/mais-valias que exija liquidação própria. Se existir imposto autónomo positivo,a parcela ordinária pode ser apresentada,mas não como saldo total até corresponder a articulação;não o apagar ou compensar por pressuposto.
2. **Retenções sofridas:**reutilizarL5 apenas quando `direction=received`,natureza `on_account`,origem efectiva,documento/prova e montante sofrido reconciliados,mesmo sujeito/NUIT/período e rendimento incluído na base apropriada. Retenção entregue pela empresa por pagamento a terceiros,retenção definitiva,mera projecção,guia sem pagamento ou montante ainda não comprovado não são crédito próprio. EmL7cooperativa,a declaração de ausência de rendimentos retidos não pode coexistir silenciosamente com retenção recebida positiva;esse caso exige a segregação própria,sem bloquear o regime normal independente.
3. **Pagamentos por conta efectuados:**registar/reutilizar comprovativo,identificador,data,exercício,sujeito e montanteMZN;reconciliar parcelas e pagamentos sem dupla utilização. Neste primeiro incremento,não calcular automaticamente a obrigaçãoPPC a partir do exercício anterior,nem transformar tesouraria prevista em pagamento efectuado.
4. **Outros créditos/PEC:**reutilizar a informação existente e distinguir valor conhecido,ausência declarada e falta de informação. O primeiro percurso completo exige ausência documentada dePEC e créditos por dupla tributação/investimento/outros créditos ainda sem limite/ordem correspondidos. Presença positiva mantém a parcela/fecho dependente indeterminado;não usar zero. CBF15 potencialL7 não é automaticamente crédito anual utilizável. PEC não se transforma em montante reembolsável nem recebe transporte de3/5anos por presunção.
5. **Identidade/duplicação:**contrapartes e documentos existentes são reutilizados;qualificar beneficiário e NUIT do próprio sujeito. Deduplicar por origem/documento/comprovativo e controlar afectações parciais;um comprovativo não pode aparecer integralmente em retenções ePPC,ou em dois exercícios. Preservar valores declarados e histórico,sem consumo de saldo oficial.
**Resultado e sequência a demonstrar:**colecta válida→deduções admissíveis e respectivas ausências→retenções efectivamente sofridas por conta→PPC comprovados→saldo aritmético→aplicação das regras de cobrança/reembolso do recorte→montante simulado a pagar ou recuperar. Mostrar a decomposição e o sinal;zero só com entradas completas ou ausência documentada. Informação em falta não transforma a colecta em saldo final. Como a base nasce do plano,o resultado continua uma simulação identificada,não autoliquidação submetida,pagamento efectuado ou reembolso deferido/recebido.
**Fontes já disponíveis para o cotejo dirigido de implementação:**CIRPC63/67,natureza das retenções com as alteraçõesLei12/2025;RegulamentoDecreto9/2008 art21(2–5),ordem/limites das deduções,eart27(1–2/6),pagamentos e reembolso. O exemplar aceite prevê no27(6) um mínimo de100MZN;esse parâmetro e a fronteira devem ser ligados à versão/período aplicáveis antes de activar o consumidor,não inferidos de um rótulo de formulário. O cotejo de aplicabilidade/alterações desta regra é trabalho de implementação da fonte aceite,não pedido de certificação genérica nem reabertura dos cálculosL6/L7. Arts64–66/PEC e créditos específicos mantêm as suas regras próprias;juros/multas/calendário,geração de guias,submissão e processamento de reembolso seguem incrementos próprios.
| Critério de aceitação a executar,sem prova reivindicada agora | Exemplo sintético proposto |
| --- | --- |
| Saldo positivo com pagamentos/retencões válidos | Colecta1408−retenção sofrida300−PPC500=608MZN de saldo aritmético;qualificar valor a pagar segundo a regra aplicável. |
| Saldo negativo | Colecta1408−retenção1000−PPC600=−192MZN;identificar192 a recuperar no recorte,se a regra permitir,sem afirmar reembolso recebido. |
| Zero e fronteiras do mínimo | Colecta1408−408−1000=0;demonstrar os lados inferior/igual/superior do mínimo do parâmetro versionado,sem arredondamento novo. |
| Ausência vs informação em falta | Ausência documentada de retenções/PPC/outros créditos permite saldo com parcelas zero justificadas;suporte ou natureza por determinar mantém só o fecho dependente indeterminado. |
| Reutilização e dupla dedução | Seleccionar retenção recebida e comprovativo existentes,recusar pagamento a terceiros/retenção definitiva/duplicado e demonstrar conservação dos originais e cenários anteriores. |
| Cálculo→gravação→recuperação→relatório | Novo livro/snapshotL8 ligado à chave da colecta e às provas seleccionadas;resultado13/14 eL5 anteriores imutáveis;mudança da fonte invalida a fotografia corrente sem recalcular históricos. Relatório/exportação apresenta colecta,abatimentos,saldo e lacunas concordantes. |
Só serão demonstradas estas novas regras/efeitos,emQA isolada e com as guardas existentes. Fracções continuam exactas;representação/campos oficiais sem correspondência ficam identificados e não bloqueiam cálculo independente. Pagamentos noutra moeda,períodos especiais,PEC/créditos positivos,liquidação autónoma e demais situações ficam no saldo concreto deL8,com condição de retoma por regra,origem,limite,período e prova. A documentação deste recorte não é novo cálculo executável.
### Esforço global:referência inicial não é previsão actual
As240–416horas deL8–L14 permanecem identificadas como referência inicial de planeamento,não saldo actual nem prazo assumido. Antes de estimar o conjunto:reconciliar por lote o que já está implementado/reutilizável e o que falta em código;descontar provas aceites sem as repetir;separar espera documental;incluir resíduosL1–L7,integrações/entregas eL15–L16,SISA/encargos imobiliários. Campos de entrada,fontes inventariadas ou percentagens isoladas não provam percurso executável completo. Contar apenas o delta necessário e não somar duas vezes componentes partilhados. Esta passagem entregaL7 e delimitaL8;gere uma estimativa reconciliada futura,sem converter os intervalos iniciais numa promessa global. **L7 parcial;saldo finalL8 ainda não implementado nesta entrega.**
File diff suppressed because one or more lines are too long