From 1349789226f8a1ec9575e1ef6e9eedc504d264e0 Mon Sep 17 00:00:00 2001 From: nala Date: Sat, 14 Nov 2026 20:10:32 +0200 Subject: [PATCH] fix(offers): avoid Wayfinder report form name collision after safe deployment stop --- .../PrivateOfferOperationsController.php | 2 +- .../unification/traceability-and-manual.md | 3 + .../v2/auditoria-portal/matriz-requisitos.csv | 2 +- ...ao-privada-incidente-wayfinder-20261114.md | 71 ++ ...rtas-verificacao-preinstalacao-20261114.md | 2 + .../backup-summary.json | 13 + .../corrected-integrated-report-input.json | 663 ++++++++++++++++++ .../corrected-phpstan.log | 1 + .../corrected-production-build.log | 324 +++++++++ .../corrected-regression.log | 1 + .../corrected-regression.xml | 39 ++ .../corrected-types-after-build.log | 3 + .../corrected-types.log | 3 + .../data-integrity.json | 9 + .../exact-sha-start.json | 7 + .../executor-failure.json | 58 ++ .../guarded-executor-used.py | 51 ++ .../qa-result.json | 95 +++ .../recovery.json | 31 + .../reservation-context.json | 7 + .../reservation.json | 7 + .../restore-summary.json | 16 + .../safeguard-verified.json | 12 + .../wayfinder-generation.log | 4 + routes/web.php | 2 +- 25 files changed, 1423 insertions(+), 3 deletions(-) create mode 100644 docs/investmoz/v2/auditoria-portal/ofertas-instalacao-privada-incidente-wayfinder-20261114.md create mode 100644 outputs/offers-exact-install-20261114/backup-summary.json create mode 100644 outputs/offers-exact-install-20261114/corrected-integrated-report-input.json create mode 100644 outputs/offers-exact-install-20261114/corrected-phpstan.log create mode 100644 outputs/offers-exact-install-20261114/corrected-production-build.log create mode 100644 outputs/offers-exact-install-20261114/corrected-regression.log create mode 100644 outputs/offers-exact-install-20261114/corrected-regression.xml create mode 100644 outputs/offers-exact-install-20261114/corrected-types-after-build.log create mode 100644 outputs/offers-exact-install-20261114/corrected-types.log create mode 100644 outputs/offers-exact-install-20261114/data-integrity.json create mode 100644 outputs/offers-exact-install-20261114/exact-sha-start.json create mode 100644 outputs/offers-exact-install-20261114/executor-failure.json create mode 100644 outputs/offers-exact-install-20261114/guarded-executor-used.py create mode 100644 outputs/offers-exact-install-20261114/qa-result.json create mode 100644 outputs/offers-exact-install-20261114/recovery.json create mode 100644 outputs/offers-exact-install-20261114/reservation-context.json create mode 100644 outputs/offers-exact-install-20261114/reservation.json create mode 100644 outputs/offers-exact-install-20261114/restore-summary.json create mode 100644 outputs/offers-exact-install-20261114/safeguard-verified.json create mode 100644 outputs/offers-exact-install-20261114/wayfinder-generation.log diff --git a/app/Http/Controllers/PrivateOfferOperationsController.php b/app/Http/Controllers/PrivateOfferOperationsController.php index 80a08c72..cfa9bfe8 100644 --- a/app/Http/Controllers/PrivateOfferOperationsController.php +++ b/app/Http/Controllers/PrivateOfferOperationsController.php @@ -22,7 +22,7 @@ final class PrivateOfferOperationsController extends Controller return response()->json($operations->presentation($request->user(), $id)); } - public function reportForm(Request $request, int $id, PrivateOfferOperations $operations): Response + public function reportPage(Request $request, int $id, PrivateOfferOperations $operations): Response { $record = Opportunity::findOrFail($id); abort_unless($record->isPrivateOfferPreparation() && $operations->canReport($request->user(), $record), 404); diff --git a/docs/investmoz/unification/traceability-and-manual.md b/docs/investmoz/unification/traceability-and-manual.md index 41dac385..2fb85c3d 100644 --- a/docs/investmoz/unification/traceability-and-manual.md +++ b/docs/investmoz/unification/traceability-and-manual.md @@ -10217,3 +10217,6 @@ Por autorização específica, destino `teste-investidor.tempo.co.mz` confirmado # Instalação autorizada das Ofertas — paragem de entrada, 14/11/2026 A Tempo autorizou expressamente `3558647e`, incluindo menus, mantendo fecho público. A verificação de entrada encontrou `main` e homologação em `96f51096`; o executor segue esse ramo. Em cumprimento da condição 4, a operação foi interrompida antes de qualquer push/pedido/instalação. Executor inactivo, zero pedidos; nenhuma migração, alteração operacional ou reversão. A instalação já está autorizada, mas a integração exacta e controlada de `3558647e` em `main` exige decisão após esta paragem; o fast-forward é possível sem força e pode accionar a instalação. Não reiniciar preparação/testes aceites para resolver esta diferença de ramo. Recibo: `outputs/offers-authorised-install-20261114/entry-blocked.json`. +# Instalação exacta das Ofertas — falha antes da promoção e correcção QA, 14/11/2026 + +O fast-forward autorizado `96f51096 → 3558647e` foi efectuado sem força ou commits posteriores. Janela com path automático pausado, lock exclusivo e chamada única ao executor existente, recusando qualquer outro SHA. Novo backup/restauro isolado 219 tabelas/417 ficheiros aprovado. O executor passou schema isolado 1/3106 e build, mas parou em tipos: colisão Wayfinder entre a acção GET `reportForm` e o formulário gerado para POST `report`. Sem promoção, migrações, alteração operacional ou reversão; homologação servida permanece `96f51096`, 219 tabelas/417 ficheiros reconferidos intactos. Lock libertado, path original restaurado, fila vazia. Correcção mínima em QA: acção GET `reportPage`, mesmo URL e corpo, com geração real/produção/tipos/PHPStan/Pint e 28 testes/403 asserções aprovados, numa base isolada separada da prévia. Nenhum novo push ou instalação. Relatório: `../v2/auditoria-portal/ofertas-instalacao-privada-incidente-wayfinder-20261114.md`; recibo `outputs/offers-exact-install-20261114/qa-result.json`. Nova revisão correctiva exige autorização expressa antes de integrar/instalar; publicação, correio, pagamentos e decisões jurídicas continuam nos limites anteriores. diff --git a/docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv b/docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv index df0028ca..2652cc23 100644 --- a/docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv +++ b/docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv @@ -163,7 +163,7 @@ RF-MIN-005,"Controlar cessão, mudança de controlo e aprovações.",upgrade v4 RF-MIN-006,Pesquisar e corresponder oportunidades mineiras.,upgrade v4 SHA f0b9815…; p. 3275; requirements-audit.csv,oportunidades,/api/v1/business-opportunities; /api/v1/business-opportunities/{slug}; /investidor/terra-duat; /investidor/terra-duat/novo; /investidor/terra-duat/{id}; /investidor/terra-duat/{id}/actualizacoes; /investidor/terra-duat/{id}/documentos; /investidor/terra-duat/{id}/documentos/{attachment}; /investidor/terra-duat/{id}/editar; /investidor/terra-duat/{id}/imprimir; /investidor/terra-duat/{id}/solicitar-apoio; /management/opportunities,"OpportunityManagement, OpportunityCanonicalContract/Response, OpportunityReviewMateriality, PortalProfileAccess, OpportunityResources. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Reconciliar contrato/cláusula e provas por categoria; completar apenas falha/variante executável identificada. Response normativo não é completo. Critério individual original preservado; cobertura atual ainda não individualizada.,"030000→040000 já instalados; contratos/resources existentes, sessão/MFA, ClamD e worker para ficheiros; gates das seis categorias ON. Variantes modulares/offers continuam separadas. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","RF-MIN-006: Filtros incluem recurso, fase, título, localização, valor, modalidade e infra-estrutura; recomendação é explicável e revista por gestor.",P2,RF-MIN-006: Relatório 25/09 conservado; estado histórico não promove conclusão,RF-MIN-006,1,"[{""id"":""RF-MIN-006"",""pedido"":""Pesquisar e corresponder oportunidades mineiras."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 3275; requirements-audit.csv""],""aceitacao"":""Filtros incluem recurso, fase, título, localização, valor, modalidade e infra-estrutura; recomendação é explicável e revista por gestor."",""estado"":""parcial"",""variantes"":""Relatório 25/09 conservado; estado histórico não promove conclusão"",""modulo"":""oportunidades""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.opportunities: 6 registos; public.opportunity_images: tabela ausente; public.opportunity_documents: tabela ausente; public.opportunity_location_drafts: tabela ausente,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Reconciliar contrato/cláusula e provas por categoria; completar apenas falha/variante executável identificada. Response normativo não é completo. Critério individual original preservado; cobertura atual ainda não individualizada.,"OpportunityManagement, OpportunityCanonicalContract/Response, OpportunityReviewMateriality, PortalProfileAccess, OpportunityResources","030000→040000 já instalados; contratos/resources existentes, sessão/MFA, ClamD e worker para ficheiros; gates das seis categorias ON. Variantes modulares/offers continuam separadas.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: oportunidades. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,oportunidades,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Services/OpportunityManagement.php; app/Services/OpportunityResources.php; resources/js/pages/management/opportunity-draft.tsx — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"OpportunityManagementTest, OpportunityResourcesTest, OpportunityOriginReviewTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, RF-MN-001,Registar utilizadores singulares e colectivos com verificação de contactos.,upgrade v4 SHA f0b9815…; p. 2957; requirements-audit.csv | portal do investidor\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 573 | portal do investidor\Portal V4\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 3409 | portal do investidor\Portal V4\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 580 | portal do investidor\Portal V4\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 2214 | portal do investidor\Portal V4\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 3409,CRM/solicitações,//; /Simulador; /api/v1/documents/recommendations; /api/v1/investment/submissions; /api/v1/investment/submissions/{id}; /api/v1/investment/submissions/{id}/attachments; /api/v1/investment/submissions/{id}/attachments/{attachment}; /api/v1/investment/submissions/{id}/submit; /apoio; /balcao-virtual; /como-investir; /documentos,"investors/contacts/leads/tasks, OpportunityContacts, acompanhamento interno existente. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,"Converter sem duplicar, tarefa/responsável/próxima ação recuperáveis; corrigir apenas falha comprovada. Critério individual original preservado; cobertura atual ainda não individualizada.",Relações mestre/contexto e autorizações; não depende de CRM externo. C131 sóQA. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,RF-MN-001: Conta só é activada após confirmação do correio electrónico ou telefone; tentativas e falhas ficam registadas. | MASTER-471012ab-0051: Registar utilizadores singulares e colectivos com verificação de contactos. | MASTER-e1169a77-0201: Registar utilizadores singulares e colectivos com verificação de contactos. | MASTER-f70ce307-0057: Registar utilizadores singulares e colectivos com verificação de contactos. | MASTER-51b8f0ad-0137: Registar utilizadores singulares e colectivos com verificação de contactos. | MASTER-edece80c-0201: Registar utilizadores singulares e colectivos com verificação de contactos.,P2,RF-MN-001: Relatório 25/09 conservado; estado histórico não promove conclusão | MASTER-471012ab-0051: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-e1169a77-0201: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-f70ce307-0057: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-51b8f0ad-0137: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-edece80c-0201: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,RF-MN-001 | MASTER-471012ab-0051 | MASTER-e1169a77-0201 | MASTER-f70ce307-0057 | MASTER-51b8f0ad-0137 | MASTER-edece80c-0201,6,"[{""id"":""RF-MN-001"",""pedido"":""Registar utilizadores singulares e colectivos com verificação de contactos."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 2957; requirements-audit.csv""],""aceitacao"":""Conta só é activada após confirmação do correio electrónico ou telefone; tentativas e falhas ficam registadas."",""estado"":""parcial"",""variantes"":""Relatório 25/09 conservado; estado histórico não promove conclusão"",""modulo"":""CRM/solicitações""},{""id"":""MASTER-471012ab-0051"",""pedido"":""Registar utilizadores singulares e colectivos com verificação de contactos."",""fontes"":[""portal do investidor\\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 573""],""aceitacao"":""Registar utilizadores singulares e colectivos com verificação de contactos."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""CRM/solicitações""},{""id"":""MASTER-e1169a77-0201"",""pedido"":""Registar utilizadores singulares e colectivos com verificação de contactos."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 3409""],""aceitacao"":""Registar utilizadores singulares e colectivos com verificação de contactos."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""CRM/solicitações""},{""id"":""MASTER-f70ce307-0057"",""pedido"":""Registar utilizadores singulares e colectivos com verificação de contactos."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 580""],""aceitacao"":""Registar utilizadores singulares e colectivos com verificação de contactos."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""CRM/solicitações""},{""id"":""MASTER-51b8f0ad-0137"",""pedido"":""Registar utilizadores singulares e colectivos com verificação de contactos."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 2214""],""aceitacao"":""Registar utilizadores singulares e colectivos com verificação de contactos."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""CRM/solicitações""},{""id"":""MASTER-edece80c-0201"",""pedido"":""Registar utilizadores singulares e colectivos com verificação de contactos."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 3409""],""aceitacao"":""Registar utilizadores singulares e colectivos com verificação de contactos."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""CRM/solicitações""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.interest_requests: 4 registos; public.leads: 0 registos; public.investors: 3 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.","Converter sem duplicar, tarefa/responsável/próxima ação recuperáveis; corrigir apenas falha comprovada. Critério individual original preservado; cobertura atual ainda não individualizada.","investors/contacts/leads/tasks, OpportunityContacts, acompanhamento interno existente",Relações mestre/contexto e autorizações; não depende de CRM externo. C131 sóQA.,Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: acompanhamento. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,acompanhamento,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Http/Controllers/CrmController.php; app/Services/DeclaredOriginStatistics.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"InterestSubmissionTest, InvestmentWorkspaceTest, PortalOriginCompatibilityTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, RF-MN-002,"Gerir perfis, representantes, funções e organizações.",upgrade v4 SHA f0b9815…; p. 2961; requirements-audit.csv,governação/outros,/api/v1/investment/admin/interests/{interest}/status; /management/history; /management/interests; /management/interests/{interest}; /management/interests/{interest}/consent/contact; /management/interests/{interest}/consent/proponent; /management/opportunities; /management/opportunities/create; /management/opportunities/drafts; /management/opportunities/{id}/draft; /management/opportunities/{id}/edit; /management/opportunities/{id}/lifecycle,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.","outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual. | 02/11/2026: profile-json preserva erros por campo e reautenticacao em falhas HTML/419 e rejeita JSON invalido; contexto de investimento rejeita falso sucesso HTTP 200 e liberta keepalive, sem repetir escritas. 26 testes focados, TypeScript e build aprovados. Prova local parcial; sem dados/permissoes/publicacao. | Retoma 02/11/2026: profileJson GET independente de cookie CSRF malformado; POST recusa antes do transporte com mensagem de recuperacao. Preservadas validacao e credenciais. 14 testes focados aprovados, incluindo separadores de cookie sem espaco; sem mudanca de direitos.",Sem evidência suficiente,Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.",RF-MN-002: Uma organização pode ter vários utilizadores; cada acção identifica o utilizador e a função.,P2,RF-MN-002: Relatório 25/09 conservado; estado histórico não promove conclusão,RF-MN-002,1,"[{""id"":""RF-MN-002"",""pedido"":""Gerir perfis, representantes, funções e organizações."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 2961; requirements-audit.csv""],""aceitacao"":""Uma organização pode ter vários utilizadores; cada acção identifica o utilizador e a função."",""estado"":""parcial"",""variantes"":""Relatório 25/09 conservado; estado histórico não promove conclusão"",""modulo"":""governação/outros""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,Requisito transversal; consultar estado-ativo-after.json,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer","Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: governação e demais cláusulas. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,governação e demais cláusulas,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",AGENTS.md — componentes do domínio encontrados; correspondência integral deste requisito não presumida,; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.,Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, -RF-MN-003,"Criar, guardar, editar e submeter ofertas e procuras.",upgrade v4 SHA f0b9815…; p. 2965; requirements-audit.csv | portal do investidor\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 581 | portal do investidor\Portal V4\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 3417 | portal do investidor\Portal V4\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 588 | portal do investidor\Portal V4\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 2222 | portal do investidor\Portal V4\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 3417,governação/outros,/api/v1/investment/admin/interests/{interest}/status; /management/history; /management/interests; /management/interests/{interest}; /management/interests/{interest}/consent/contact; /management/interests/{interest}/consent/proponent; /management/opportunities; /management/opportunities/create; /management/opportunities/drafts; /management/opportunities/{id}/draft; /management/opportunities/{id}/edit; /management/opportunities/{id}/lifecycle; /ofertas; /ofertas/{id}; /api/v1/offers; /api/v1/offers/{id}; /api/v1/offers/map; /api/v1/offers/export; /minhas-oportunidades/ofertas/{id}/recursos; /minhas-oportunidades/ofertas/{id}/confidencialidade; /minhas-oportunidades/ofertas/{id}/confidencial; /minhas-oportunidades/ofertas/{id}/nda; /minhas-oportunidades/ofertas/{id}/operacoes; /minhas-oportunidades/ofertas/{id}/denunciar; /minhas-oportunidades/ofertas/{id}/denuncias; /minhas-oportunidades/ofertas/{id}/destaque-administrativo,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual. | 14/11/2026 - Ofertas F1: oportunidades como cadastro principal; criar, guardar, recuperar, editar e submeter em privado; autorizacao existente, CRM e localizacao reutilizados; sem menu, publicacao ou instalacao. | 14/11/2026 F2 autorizada: circuito editorial privado no workflow e Dashboard existentes; revisao/atribuicao/rejeicao/correccao/reenvio/aprovacao interna; decisoes por snapshot/hash/ciclo, tarefas, auditoria e notificacoes. Sem publicacao ou instalacao. | 14/11/2026 F3 autorizada: consulta read-only da projeccao publica separada, filtros por categoria/localizacao/preco/moeda, grelha/lista/mapa administrativo e CSV. Barreira efectiva fechada; apenas amostras sinteticas em QA isolado podem ser consumidas por injeccao de teste. | 14/11/2026 F4 autorizada, campos propostos confirmados: particularidades opcionais de empresas/imoveis no mesmo rascunho; seis fotografias activas com edicao/retirada/restauro; originais cifrados e scan existente; comprovativos exclusivamente para validadores internos com ambito/MFA. NDA e autorizacao expressa do vendedor vinculados a versao/hash, revogacao e auditoria; exemplar juridico real pendente, configuracao nula. Sem publicacao ou instalacao. | 14/11/2026 F5 autorizada em QA: retirada imediata pelo dono, novo ciclo/v4 e aprovacao antes da reactivacao; validade congelada por versao, prazo configuravel nulo por defeito, expiracao independente de NDA/cron; denuncias cifradas com origem versionada, tarefas e Dashboard existentes; planos administrativos de destaque sem efeitos comerciais. Publicacao e instalacao bloqueadas.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.","outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual. | QA: PrivateOfferPreparationTest.php; regressao 35 testes/548 assercoes e passagem final focada 16/172 (grupos sobrepostos, nao somar). outputs/offers-private-phase1-20261114/qa-result.json. | F2 QA: 35 testes/499 assercoes; final focado 11/160; complemento contribuidores 1/14 e HTML compilado 1/10 aprovados, grupos sobrepostos. tests/Feature/PrivateOfferEditorialTest.php; outputs/offers-private-phase2-20261114/qa-result.json. | F3 QA: tests/Feature/OfferPublicCatalogueTest.php; outputs/offers-public-phase3-20261114/qa-result.json; sem instalacao ou publicacao real. | F4: tests/Feature/PrivateOfferConfidentialityTest.php; outputs/offers-private-phase4-20261114/qa-result.json. Cinco casos territoriais desbloqueados com fixture sintetico guardado em transaccao QA; sem dados operacionais. | F5: tests/Feature/PrivateOfferOperationsTest.php; outputs/offers-private-phase5-20261114/qa-result.json. Matriz de aceitacao das cinco fases no relatorio ofertas-fase5-fecho-qa-20261114.md; provas sinteticas e regressao afectada, sem testes gerais de outros modulos.",Parcial - Ofertas F1-F4 tecnicamente aceites com ressalvas; F5 implementada em QA para apreciacao; cinco fases nao instaladas; publicacao efectiva bloqueada,"Dependencias para uso publico: exemplar/versao/aprovacao do NDA; tipos juridicos de comprovativos; prazo/politica final de validade; avisos juridicos, visual/movel, GD/WebP e email real F2. Politica comercial/destaque activo nao definidos e nao activados. Publicacao/instalacao exigem autorizacao expressa. Procuras permanece por implementar.",Autorizacao expressa para Fase 3 e para instalacao; designacoes operacionais e configuracao de entrega reais apenas quando aplicaveis. Sem novos papeis ou permissoes por inferencia.,"RF-MN-003: Rascunho persiste; submissão bloqueia campos essenciais e gera número de protocolo. | MASTER-471012ab-0052: Criar, guardar, editar e submeter ofertas e procuras. | MASTER-e1169a77-0202: Criar, guardar, editar e submeter ofertas e procuras. | MASTER-f70ce307-0058: Criar, guardar, editar e submeter ofertas e procuras. | MASTER-51b8f0ad-0138: Criar, guardar, editar e submeter ofertas e procuras. | MASTER-edece80c-0202: Criar, guardar, editar e submeter ofertas e procuras.",P2,RF-MN-003: Relatório 25/09 conservado; estado histórico não promove conclusão | MASTER-471012ab-0052: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-e1169a77-0202: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-f70ce307-0058: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-51b8f0ad-0138: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-edece80c-0202: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,RF-MN-003 | MASTER-471012ab-0052 | MASTER-e1169a77-0202 | MASTER-f70ce307-0058 | MASTER-51b8f0ad-0138 | MASTER-edece80c-0202,6,"[{""id"":""RF-MN-003"",""pedido"":""Criar, guardar, editar e submeter ofertas e procuras."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 2965; requirements-audit.csv""],""aceitacao"":""Rascunho persiste; submissão bloqueia campos essenciais e gera número de protocolo."",""estado"":""parcial"",""variantes"":""Relatório 25/09 conservado; estado histórico não promove conclusão"",""modulo"":""governação/outros""},{""id"":""MASTER-471012ab-0052"",""pedido"":""Criar, guardar, editar e submeter ofertas e procuras."",""fontes"":[""portal do investidor\\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 581""],""aceitacao"":""Criar, guardar, editar e submeter ofertas e procuras."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-e1169a77-0202"",""pedido"":""Criar, guardar, editar e submeter ofertas e procuras."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 3417""],""aceitacao"":""Criar, guardar, editar e submeter ofertas e procuras."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-f70ce307-0058"",""pedido"":""Criar, guardar, editar e submeter ofertas e procuras."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 588""],""aceitacao"":""Criar, guardar, editar e submeter ofertas e procuras."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-51b8f0ad-0138"",""pedido"":""Criar, guardar, editar e submeter ofertas e procuras."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 2222""],""aceitacao"":""Criar, guardar, editar e submeter ofertas e procuras."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-edece80c-0202"",""pedido"":""Criar, guardar, editar e submeter ofertas e procuras."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 3417""],""aceitacao"":""Criar, guardar, editar e submeter ofertas e procuras."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""}]","QA - preparacao, revisao e historico privados; filtros e acesso pelo Dashboard existente; visual manual pendente",QA - operacoes autenticadas /minhas-oportunidades/ofertas e /{id}/revisao; MFA/ambito/conflitos verificados no servidor; publicacao recusada,"QA - cadastro Oportunidades, tarefas/auditoria/notificacoes nativos; snapshots e hashes por ciclo; sem tabelas ou migracoes novas","QA - recuperar oferta, correccao, decisao e versoes anteriores; conflitos, rollback e indisponibilidade sem downgrade | F4: guardar/recuperar particularidades; fotografias e provas no recurso existente; historico de aceitacao/autorizacao/retirada/revogacao por exemplar e versao, sem substituir dados ou decisoes. | F5: retirada sem perda de conteudo; revalidacao no mesmo identificador; historico de ciclos, expiracao, denuncias e planos administrativos com conflitos/etags.","QA - aprovacao interna privada distinta de publicacao; versao publica nativa anterior preservada | F3: projecao publica anterior preservada durante edicao/rejeicao da nova revisao; sem contacto, anexos ou coordenadas do negocio; moeda sem conversao. | F4: dados empresariais reservados so depois de NDA + autorizacao expressa do vendedor; comprovativos nunca entregues ao interessado. | F5: sem reexposicao de publicacao/grants antigos ao reactivar; exclusao uniforme em listas/filtros/mapas/API/CSV; validade opcional visivel quando definida; destaques administrativos privados.",Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,Requisito transversal; consultar estado-ativo-after.json,"Pre-instalacao real autorizada: destino 96f51096, estruturas compativeis, PHP 8.4.27, GD/WebP CLI/FPM presentes. Backup actual/restauro isolado aprovados: 219 tabelas, 417 ficheiros, MFA recuperavel; 9873 ficheiros da release reconferidos. Parecer APTO COM CONDICOES; sem instalar.","Instalacao exacta 3558647e autorizada, mas bloqueada na entrada pela condicao 4: main/activo em 96f51096 e executor segue ultimo main. Decidir integracao controlada exacta no ramo; fast-forward possivel, sem forca. Mantem janela sem concorrencia, salvaguarda e pendencias operacionais/publicacao.","Opportunity, PortalProfileAccess, OpportunityProfileWorkflow, OpportunityWorkflowTasks, documents/recursos, auditoria, Dashboard, filtros/mapa/API/CSV existentes; sem cadastro paralelo.","Destino conferido e backup/restauro efectuado. Notificacoes desactivadas e allowlist vazia; caixa de teste por designar/autorizar. Nenhuma Oferta, projecao, rota ou job de Ofertas no activo. Ambiente local com debug falso e cookies seguros; sem alteracao de configuracao.","Autorizacao expressa de instalar 3558647e recebida. Cumprida paragem obrigatoria antes de push/pedido por divergencia de main; sem instalacao, migracao, reversao ou alteracao operacional. Autorizacao de instalacao preservada; integracao do ramo por decidir apos paragem.",Tecnica QA e preflight aceites; execucao da instalacao BLOQUEADA ANTES DE INICIAR por divergencia de revisao. Homologacao mantem 96f51096; executor inactivo e zero pedidos.,Sem nova estimativa temporal nesta entrega; testes sobrepostos nao devem ser somados. Historico de estimativas conservado nas colunas anteriores.,docs/investmoz/v2/auditoria-portal/ofertas-fase5-fecho-qa-20261114.md; outputs/offers-private-phase5-20261114/qa-result.json; provas aceites F1-F4 referenciadas na matriz de aceitacao das cinco fases.; docs/investmoz/v2/auditoria-portal/ofertas-aceitacao-final-20261114.md; outputs/offers-final-acceptance-20261114/receipt-verification.json; native-integration.xml; investment-acceptance.xml; docs/investmoz/v2/auditoria-portal/ofertas-correcao-contexto-qa-20261114.md; outputs/offers-investment-continuity-20261114/qa-result.json; docs/investmoz/v2/auditoria-portal/ofertas-prontidao-homologacao-20261114.md; outputs/offers-homologation-preparation-20261114/readiness-verification.json; offers-9a014268.bundle; outputs/offers-menu-qa-20261114/qa-result.json; docs/investmoz/v2/auditoria-portal/ofertas-verificacao-preinstalacao-20261114.md; outputs/offers-preinstall-verification-20261114/qa-result.json; outputs/offers-authorised-install-20261114/entry-blocked.json,governação e demais cláusulas,"14/11/2026 - autorizacao 3558647e recebida; entrada interrompida pela condicao 4, main diferente",,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",AGENTS.md — componentes do domínio encontrados; correspondência integral deste requisito não presumida,; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.,Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, +RF-MN-003,"Criar, guardar, editar e submeter ofertas e procuras.",upgrade v4 SHA f0b9815…; p. 2965; requirements-audit.csv | portal do investidor\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 581 | portal do investidor\Portal V4\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 3417 | portal do investidor\Portal V4\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 588 | portal do investidor\Portal V4\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 2222 | portal do investidor\Portal V4\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 3417,governação/outros,/api/v1/investment/admin/interests/{interest}/status; /management/history; /management/interests; /management/interests/{interest}; /management/interests/{interest}/consent/contact; /management/interests/{interest}/consent/proponent; /management/opportunities; /management/opportunities/create; /management/opportunities/drafts; /management/opportunities/{id}/draft; /management/opportunities/{id}/edit; /management/opportunities/{id}/lifecycle; /ofertas; /ofertas/{id}; /api/v1/offers; /api/v1/offers/{id}; /api/v1/offers/map; /api/v1/offers/export; /minhas-oportunidades/ofertas/{id}/recursos; /minhas-oportunidades/ofertas/{id}/confidencialidade; /minhas-oportunidades/ofertas/{id}/confidencial; /minhas-oportunidades/ofertas/{id}/nda; /minhas-oportunidades/ofertas/{id}/operacoes; /minhas-oportunidades/ofertas/{id}/denunciar; /minhas-oportunidades/ofertas/{id}/denuncias; /minhas-oportunidades/ofertas/{id}/destaque-administrativo,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual. | 14/11/2026 - Ofertas F1: oportunidades como cadastro principal; criar, guardar, recuperar, editar e submeter em privado; autorizacao existente, CRM e localizacao reutilizados; sem menu, publicacao ou instalacao. | 14/11/2026 F2 autorizada: circuito editorial privado no workflow e Dashboard existentes; revisao/atribuicao/rejeicao/correccao/reenvio/aprovacao interna; decisoes por snapshot/hash/ciclo, tarefas, auditoria e notificacoes. Sem publicacao ou instalacao. | 14/11/2026 F3 autorizada: consulta read-only da projeccao publica separada, filtros por categoria/localizacao/preco/moeda, grelha/lista/mapa administrativo e CSV. Barreira efectiva fechada; apenas amostras sinteticas em QA isolado podem ser consumidas por injeccao de teste. | 14/11/2026 F4 autorizada, campos propostos confirmados: particularidades opcionais de empresas/imoveis no mesmo rascunho; seis fotografias activas com edicao/retirada/restauro; originais cifrados e scan existente; comprovativos exclusivamente para validadores internos com ambito/MFA. NDA e autorizacao expressa do vendedor vinculados a versao/hash, revogacao e auditoria; exemplar juridico real pendente, configuracao nula. Sem publicacao ou instalacao. | 14/11/2026 F5 autorizada em QA: retirada imediata pelo dono, novo ciclo/v4 e aprovacao antes da reactivacao; validade congelada por versao, prazo configuravel nulo por defeito, expiracao independente de NDA/cron; denuncias cifradas com origem versionada, tarefas e Dashboard existentes; planos administrativos de destaque sem efeitos comerciais. Publicacao e instalacao bloqueadas.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.","outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual. | QA: PrivateOfferPreparationTest.php; regressao 35 testes/548 assercoes e passagem final focada 16/172 (grupos sobrepostos, nao somar). outputs/offers-private-phase1-20261114/qa-result.json. | F2 QA: 35 testes/499 assercoes; final focado 11/160; complemento contribuidores 1/14 e HTML compilado 1/10 aprovados, grupos sobrepostos. tests/Feature/PrivateOfferEditorialTest.php; outputs/offers-private-phase2-20261114/qa-result.json. | F3 QA: tests/Feature/OfferPublicCatalogueTest.php; outputs/offers-public-phase3-20261114/qa-result.json; sem instalacao ou publicacao real. | F4: tests/Feature/PrivateOfferConfidentialityTest.php; outputs/offers-private-phase4-20261114/qa-result.json. Cinco casos territoriais desbloqueados com fixture sintetico guardado em transaccao QA; sem dados operacionais. | F5: tests/Feature/PrivateOfferOperationsTest.php; outputs/offers-private-phase5-20261114/qa-result.json. Matriz de aceitacao das cinco fases no relatorio ofertas-fase5-fecho-qa-20261114.md; provas sinteticas e regressao afectada, sem testes gerais de outros modulos.",Parcial - Ofertas F1-F4 tecnicamente aceites com ressalvas; F5 implementada em QA para apreciacao; cinco fases nao instaladas; publicacao efectiva bloqueada,"Dependencias para uso publico: exemplar/versao/aprovacao do NDA; tipos juridicos de comprovativos; prazo/politica final de validade; avisos juridicos, visual/movel, GD/WebP e email real F2. Politica comercial/destaque activo nao definidos e nao activados. Publicacao/instalacao exigem autorizacao expressa. Procuras permanece por implementar.",Autorizacao expressa para Fase 3 e para instalacao; designacoes operacionais e configuracao de entrega reais apenas quando aplicaveis. Sem novos papeis ou permissoes por inferencia.,"RF-MN-003: Rascunho persiste; submissão bloqueia campos essenciais e gera número de protocolo. | MASTER-471012ab-0052: Criar, guardar, editar e submeter ofertas e procuras. | MASTER-e1169a77-0202: Criar, guardar, editar e submeter ofertas e procuras. | MASTER-f70ce307-0058: Criar, guardar, editar e submeter ofertas e procuras. | MASTER-51b8f0ad-0138: Criar, guardar, editar e submeter ofertas e procuras. | MASTER-edece80c-0202: Criar, guardar, editar e submeter ofertas e procuras.",P2,RF-MN-003: Relatório 25/09 conservado; estado histórico não promove conclusão | MASTER-471012ab-0052: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-e1169a77-0202: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-f70ce307-0058: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-51b8f0ad-0138: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-edece80c-0202: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,RF-MN-003 | MASTER-471012ab-0052 | MASTER-e1169a77-0202 | MASTER-f70ce307-0058 | MASTER-51b8f0ad-0138 | MASTER-edece80c-0202,6,"[{""id"":""RF-MN-003"",""pedido"":""Criar, guardar, editar e submeter ofertas e procuras."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 2965; requirements-audit.csv""],""aceitacao"":""Rascunho persiste; submissão bloqueia campos essenciais e gera número de protocolo."",""estado"":""parcial"",""variantes"":""Relatório 25/09 conservado; estado histórico não promove conclusão"",""modulo"":""governação/outros""},{""id"":""MASTER-471012ab-0052"",""pedido"":""Criar, guardar, editar e submeter ofertas e procuras."",""fontes"":[""portal do investidor\\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 581""],""aceitacao"":""Criar, guardar, editar e submeter ofertas e procuras."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-e1169a77-0202"",""pedido"":""Criar, guardar, editar e submeter ofertas e procuras."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 3417""],""aceitacao"":""Criar, guardar, editar e submeter ofertas e procuras."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-f70ce307-0058"",""pedido"":""Criar, guardar, editar e submeter ofertas e procuras."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 588""],""aceitacao"":""Criar, guardar, editar e submeter ofertas e procuras."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-51b8f0ad-0138"",""pedido"":""Criar, guardar, editar e submeter ofertas e procuras."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 2222""],""aceitacao"":""Criar, guardar, editar e submeter ofertas e procuras."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-edece80c-0202"",""pedido"":""Criar, guardar, editar e submeter ofertas e procuras."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 3417""],""aceitacao"":""Criar, guardar, editar e submeter ofertas e procuras."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""}]","QA - preparacao, revisao e historico privados; filtros e acesso pelo Dashboard existente; visual manual pendente",QA - operacoes autenticadas /minhas-oportunidades/ofertas e /{id}/revisao; MFA/ambito/conflitos verificados no servidor; publicacao recusada,"QA - cadastro Oportunidades, tarefas/auditoria/notificacoes nativos; snapshots e hashes por ciclo; sem tabelas ou migracoes novas","QA - recuperar oferta, correccao, decisao e versoes anteriores; conflitos, rollback e indisponibilidade sem downgrade | F4: guardar/recuperar particularidades; fotografias e provas no recurso existente; historico de aceitacao/autorizacao/retirada/revogacao por exemplar e versao, sem substituir dados ou decisoes. | F5: retirada sem perda de conteudo; revalidacao no mesmo identificador; historico de ciclos, expiracao, denuncias e planos administrativos com conflitos/etags.","QA - aprovacao interna privada distinta de publicacao; versao publica nativa anterior preservada | F3: projecao publica anterior preservada durante edicao/rejeicao da nova revisao; sem contacto, anexos ou coordenadas do negocio; moeda sem conversao. | F4: dados empresariais reservados so depois de NDA + autorizacao expressa do vendedor; comprovativos nunca entregues ao interessado. | F5: sem reexposicao de publicacao/grants antigos ao reactivar; exclusao uniforme em listas/filtros/mapas/API/CSV; validade opcional visivel quando definida; destaques administrativos privados.",Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,Requisito transversal; consultar estado-ativo-after.json,"Fast-forward exacto main 96f51096->3558647e autorizado/efectuado; novo backup/restauro 219 tabelas/417 ficheiros aprovado. Executor recusou 355 por TS2395 Wayfinder antes de promover. Homologacao permanece 96f51096, 219 tabelas/417 ficheiros sem alteracoes. Correcao minima GET reportPage preparada so em QA; geracao real/build normal/tipos/analise e 28 testes/403 aprovados.","Autorizar revisao correctiva exacta e novo fast-forward desde main355 antes de instalar; nao repetir candidata355 sem correcao. Mantem publicacao operacional bloqueada, visual/movel, imagens completas, email real e decisoes juridicas pendentes.","Opportunity, PortalProfileAccess, OpportunityProfileWorkflow, OpportunityWorkflowTasks, documents/recursos, auditoria, Dashboard, filtros/mapa/API/CSV existentes; sem cadastro paralelo.","Destino conferido e backup/restauro efectuado. Notificacoes desactivadas e allowlist vazia; caixa de teste por designar/autorizar. Nenhuma Oferta, projecao, rota ou job de Ofertas no activo. Ambiente local com debug falso e cookies seguros; sem alteracao de configuracao.","Autorizacao de integracao/main e instalacao exacta355 cumprida ate a recusa pelo build. Sem promocao ou revisao posterior instalada. Path original restaurado, lock livre, fila vazia. Correcao nova exige autorizacao antes de qualquer push/instalacao.","Instalacao355 BLOQUEADA por geracao de tipos; recuperacao sem reverter porque release antiga nunca deixou de servir. Main355, homologacao96. Fix delimitado validado em QA, sem novas funcionalidades.",Sem nova estimativa temporal nesta entrega; testes sobrepostos nao devem ser somados. Historico de estimativas conservado nas colunas anteriores.,docs/investmoz/v2/auditoria-portal/ofertas-fase5-fecho-qa-20261114.md; outputs/offers-private-phase5-20261114/qa-result.json; provas aceites F1-F4 referenciadas na matriz de aceitacao das cinco fases.; docs/investmoz/v2/auditoria-portal/ofertas-aceitacao-final-20261114.md; outputs/offers-final-acceptance-20261114/receipt-verification.json; native-integration.xml; investment-acceptance.xml; docs/investmoz/v2/auditoria-portal/ofertas-correcao-contexto-qa-20261114.md; outputs/offers-investment-continuity-20261114/qa-result.json; docs/investmoz/v2/auditoria-portal/ofertas-prontidao-homologacao-20261114.md; outputs/offers-homologation-preparation-20261114/readiness-verification.json; offers-9a014268.bundle; outputs/offers-menu-qa-20261114/qa-result.json; docs/investmoz/v2/auditoria-portal/ofertas-verificacao-preinstalacao-20261114.md; outputs/offers-preinstall-verification-20261114/qa-result.json; outputs/offers-authorised-install-20261114/entry-blocked.json; docs/investmoz/v2/auditoria-portal/ofertas-instalacao-privada-incidente-wayfinder-20261114.md; outputs/offers-exact-install-20261114/qa-result.json,governação e demais cláusulas,"14/11/2026 - execucao exacta355 recusada antes da promocao; correcao Wayfinder QA validada, instalacao pendente",,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",AGENTS.md — componentes do domínio encontrados; correspondência integral deste requisito não presumida,; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.,Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, RF-MN-004,"Aplicar campos condicionais por tipo de pessoa, modalidade e fase.",upgrade v4 SHA f0b9815…; p. 2969; requirements-audit.csv,governação/outros,/api/v1/investment/admin/interests/{interest}/status; /management/history; /management/interests; /management/interests/{interest}; /management/interests/{interest}/consent/contact; /management/interests/{interest}/consent/proponent; /management/opportunities; /management/opportunities/create; /management/opportunities/drafts; /management/opportunities/{id}/draft; /management/opportunities/{id}/edit; /management/opportunities/{id}/lifecycle,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","RF-MN-004: Campos aparecem e tornam-se obrigatórios conforme regras da matriz, sem perda de dados válidos.",P2,RF-MN-004: Relatório 25/09 conservado; estado histórico não promove conclusão,RF-MN-004,1,"[{""id"":""RF-MN-004"",""pedido"":""Aplicar campos condicionais por tipo de pessoa, modalidade e fase."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 2969; requirements-audit.csv""],""aceitacao"":""Campos aparecem e tornam-se obrigatórios conforme regras da matriz, sem perda de dados válidos."",""estado"":""parcial"",""variantes"":""Relatório 25/09 conservado; estado histórico não promove conclusão"",""modulo"":""governação/outros""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,Requisito transversal; consultar estado-ativo-after.json,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer","Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: governação e demais cláusulas. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,governação e demais cláusulas,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",AGENTS.md — componentes do domínio encontrados; correspondência integral deste requisito não presumida,; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.,Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, RF-MN-005,"Validar formatos, intervalos, dependências, duplicados e consentimentos.",upgrade v4 SHA f0b9815…; p. 2973; requirements-audit.csv | portal do investidor\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 589 | portal do investidor\Portal V4\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 3425 | portal do investidor\Portal V4\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 596 | portal do investidor\Portal V4\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 2230 | portal do investidor\Portal V4\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 3425,governação/outros,/api/v1/investment/admin/interests/{interest}/status; /management/history; /management/interests; /management/interests/{interest}; /management/interests/{interest}/consent/contact; /management/interests/{interest}/consent/proponent; /management/opportunities; /management/opportunities/create; /management/opportunities/drafts; /management/opportunities/{id}/draft; /management/opportunities/{id}/edit; /management/opportunities/{id}/lifecycle,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","RF-MN-005: O sistema impede submissão inválida e apresenta mensagem associada ao campo e orientação de correcção. | MASTER-471012ab-0054: Validar formatos, intervalos, dependências, duplicados e consentimentos. | MASTER-e1169a77-0204: Validar formatos, intervalos, dependências, duplicados e consentimentos. | MASTER-f70ce307-0060: Validar formatos, intervalos, dependências, duplicados e consentimentos. | MASTER-51b8f0ad-0140: Validar formatos, intervalos, dependências, duplicados e consentimentos. | MASTER-edece80c-0204: Validar formatos, intervalos, dependências, duplicados e consentimentos.",P2,RF-MN-005: Relatório 25/09 conservado; estado histórico não promove conclusão | MASTER-471012ab-0054: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-e1169a77-0204: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-f70ce307-0060: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-51b8f0ad-0140: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-edece80c-0204: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,RF-MN-005 | MASTER-471012ab-0054 | MASTER-e1169a77-0204 | MASTER-f70ce307-0060 | MASTER-51b8f0ad-0140 | MASTER-edece80c-0204,6,"[{""id"":""RF-MN-005"",""pedido"":""Validar formatos, intervalos, dependências, duplicados e consentimentos."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 2973; requirements-audit.csv""],""aceitacao"":""O sistema impede submissão inválida e apresenta mensagem associada ao campo e orientação de correcção."",""estado"":""parcial"",""variantes"":""Relatório 25/09 conservado; estado histórico não promove conclusão"",""modulo"":""governação/outros""},{""id"":""MASTER-471012ab-0054"",""pedido"":""Validar formatos, intervalos, dependências, duplicados e consentimentos."",""fontes"":[""portal do investidor\\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 589""],""aceitacao"":""Validar formatos, intervalos, dependências, duplicados e consentimentos."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-e1169a77-0204"",""pedido"":""Validar formatos, intervalos, dependências, duplicados e consentimentos."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 3425""],""aceitacao"":""Validar formatos, intervalos, dependências, duplicados e consentimentos."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-f70ce307-0060"",""pedido"":""Validar formatos, intervalos, dependências, duplicados e consentimentos."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 596""],""aceitacao"":""Validar formatos, intervalos, dependências, duplicados e consentimentos."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-51b8f0ad-0140"",""pedido"":""Validar formatos, intervalos, dependências, duplicados e consentimentos."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 2230""],""aceitacao"":""Validar formatos, intervalos, dependências, duplicados e consentimentos."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-edece80c-0204"",""pedido"":""Validar formatos, intervalos, dependências, duplicados e consentimentos."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 3425""],""aceitacao"":""Validar formatos, intervalos, dependências, duplicados e consentimentos."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,Requisito transversal; consultar estado-ativo-after.json,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global. diff --git a/docs/investmoz/v2/auditoria-portal/ofertas-instalacao-privada-incidente-wayfinder-20261114.md b/docs/investmoz/v2/auditoria-portal/ofertas-instalacao-privada-incidente-wayfinder-20261114.md new file mode 100644 index 00000000..4e921743 --- /dev/null +++ b/docs/investmoz/v2/auditoria-portal/ofertas-instalacao-privada-incidente-wayfinder-20261114.md @@ -0,0 +1,71 @@ +# Ofertas — tentativa exacta de instalação privada e correcção QA + +14/11/2026. Autorização: fast-forward de `main` de `96f51096` para **`3558647e8d82092cd0e31eefbe8b9e5e9eacf573`**, sem força, sem revisões posteriores e exclusivamente para homologação privada. + +**Resultado: instalação interrompida antes da promoção. A homologação mantém `96f510965f70581a4b41dd94463f598b77dd7cf5`.** O ramo remoto recebeu exactamente `3558647e`; o executor verificou e construiu essa candidata, mas recusou-a na verificação TypeScript. Nenhuma revisão posterior foi enviada ou instalada. + +## Execução e salvaguarda + +1. Ancestralidade confirmada e `main` inicialmente em `96f51096`; fast-forward possível, árvore local sem alterações inesperadas. +2. Janela reservada: path automático temporariamente pausado, serviço original inactivo e zero pedidos concorrentes. O lock existente `delivery.lock` foi adquirido sob o utilizador de implantação existente. O executor original não foi modificado: uma chamada única a `Delivery.deliver(3558647e)` reconfirmava o `main` real e lançava erro se encontrasse outro SHA, sem utilizar o ciclo que escolhe automaticamente revisões posteriores. +3. Backup **novo**, de 14/11/2026 às **19:51:40 Africa/Johannesburg (17:51:40 UTC)**, em `/var/backups/investmoz-offers-exact-install-3558647e-20261114/backup`. Restauro isolado aprovado para 219 tabelas, 417 ficheiros e dois conjuntos de MFA; nenhuma base operacional substituída. Cópia da release anterior preservada e integridade reconfirmada. +4. Push efectuado com referência exacta, sem força: `git push --porcelain origin 3558647e8d82092cd0e31eefbe8b9e5e9eacf573:refs/heads/main`. O remoto confirmou `96f51096..3558647e`; `ls-remote` reconfirmou o SHA integral. Os commits documentais posteriores não foram incluídos. +5. O pedido do webhook foi reservado fora da fila automática durante a janela. O build decorreu numa release separada e numa base CI isolada; a ligação `current` nunca mudou. A reserva temporária foi relançada antes do build para utilizar o mesmo UMask `0027` do serviço existente; não se modificaram as permissões/configuração do serviço original. + +| Salvaguarda nova | Resultado | +| --- | --- | +| Dump de 219 tabelas | SHA256 `88152dc39367f5e59eb072f63b44d3a949e93d73ae855eccb33c3c0b9e37bf6c` | +| Arquivo de 417 ficheiros/configuração | SHA256 `aa6248e0eec3d27d58a4bbb3c16848a70dcb3524e6cafc6340b682984a8bbdb3` | +| Restauro | Rede `none`, base nova `offers_install_restore_20261114_test`, porta interna 55441; contagens/checksums e ficheiros iguais; container de ensaio removido | +| Integridade após a falha | 219/219 tabelas e 417/417 ficheiros sem diferenças face à cópia nova; sem alteração do código servido | + +## Incidente concreto + +O executor passou a preparação da candidata, Composer, guarda/schema isolado **1 teste / 3.106 asserções**, `npm ci` e build frontend. Parou em `npm run types:check`, antes dos unitários/frontend seguintes e antes de qualquer promoção ou `queue:restart` operacional. + +O Wayfinder, com variantes de formulário, gerou em `resources/js/actions/App/Http/Controllers/PrivateOfferOperationsController.ts`: + +- Linha 180: `export const reportForm` para a acção GET do formulário de denúncia; +- Linha 331: `const reportForm` como auxiliar do formulário da acção POST `report`. + +O TypeScript recusou as duas declarações com **TS2395**. Não é falha de persistência, autorização, GD, estrutura ou dados. A verificação QA simplificada anterior reutilizava rotas geradas e não exercitou esta geração completa; por isso a colisão não tinha sido detectada antes da entrega. A verificação completa do executor funcionou e conservou a aplicação anterior. + +Release falhada preservada para diagnóstico: `/var/www/investmoz-homologacao/releases/3558647e8d82092cd0e31eefbe8b9e5e9eacf573-a4916dfe`. Logs protegidos e recibos da chamada exacta em `/var/lib/investmoz-deploy/offers-exact-3558647e-20261114`. Não se editou essa release para contornar os tipos ou apresentar como instalado um código diferente de `3558647e`. + +## Recuperação e estado real + +- O manifesto servido e o recibo de instalação continuam em **`96f51096`**. +- Não houve promoção; **não foi necessário reverter código ou restaurar a base**. A release anterior permaneceu servida durante toda a tentativa. +- O lock foi libertado, o path automático voltou ao estado activo original e a fila ficou sem pedidos pendentes. O pedido reservado foi preservado no registo privado da operação, sem reexecutar automaticamente a revisão falhada. +- `main` permanece em **`3558647e`**, conforme o avanço autorizado. Não houve force push ou reversão implícita do ramo. +- Zero migrações operacionais, importações, alterações de permissões, alterações de `mne`, activações de pagamentos, emails ou publicação de Ofertas. As configurações protegidas e os dados operacionais foram reconferidos sem diferenças. +- As verificações pós-instalação do novo módulo em homologação não foram executadas: o módulo não chegou a ser instalado. Não se apresentam os testes QA como acesso autenticado real à nova versão no destino. + +## Correcção mínima preparada apenas em QA + +Dois pontos funcionais alterados: + +| Ficheiro | Correcção | +| --- | --- | +| `app/Http/Controllers/PrivateOfferOperationsController.php` | Renomear a acção GET `reportForm` para `reportPage`; corpo e verificações intactos | +| `routes/web.php` | Apontar o mesmo GET `/{id}/denunciar` à acção `reportPage` | + +Não se alteraram os URLs, verbos HTTP, acção POST `report`, permissões, serviços, dados, histórico, menu ou as cinco fases. O Wayfinder gera agora `reportPage`/`reportPageForm` para GET e `report`/`reportForm` para POST, sem colisão. Nenhuma nova funcionalidade foi iniciada. + +| Verificação da correcção | Resultado | +| --- | --- | +| `php artisan wayfinder:generate --with-form` | Aprovado, geração real de acções/rotas/formulários | +| Build normal com `INVESTMOZ_QA_BUILD=0` | Aprovado; plugin Wayfinder activo, sem reutilização simplificada | +| `npm.cmd run types:check` depois desse build | Aprovado | +| PHPStan completo e Pint focado | Aprovados; zero erros PHPStan | +| Operações, denúncias, confidencialidade/NDA e continuidade | **28 testes / 403 asserções aprovados**, incluindo GET do formulário e POST das denúncias | +| Base do ensaio | `offers_wayfinder_fix_20261114_test`, loopback:55441, separada da prévia do utilizador | +| Preservação | Base da prévia não foi limpa; prova aceite de continuidade guardada/restaurada byte a byte, nova fixture retida separadamente | + +Os comandos, resultados e hashes constam de `outputs/offers-exact-install-20261114/qa-result.json`. A correcção não foi enviada para `main` nem instalada: a autorização recebida limitava a instalação a `3558647e` e proibia revisões posteriores. + +## Saldo e decisão necessária + +**Instalação de `3558647e`: BLOQUEADA pelo build completo.** Integração técnica e dados das cinco fases preservados; correcção de compatibilidade do gerador pronta em QA nesta entrega. Nova autorização deverá identificar a revisão correctiva exacta e o fast-forward a partir do `main` actual `3558647e`, conservando instalação exclusivamente privada e as guardas de revisão/janela/salvaguarda. + +Continuam pendentes, separadamente, a conferência visual/móvel autenticada no destino, processamento completo/galeria, email real restrito a caixa autorizada e as decisões jurídicas sobre NDA, comprovativos, avisos e validade. A geração corrigida não encerra essas pendências nem autoriza publicação pública. diff --git a/docs/investmoz/v2/auditoria-portal/ofertas-verificacao-preinstalacao-20261114.md b/docs/investmoz/v2/auditoria-portal/ofertas-verificacao-preinstalacao-20261114.md index b03bdac1..469ee20e 100644 --- a/docs/investmoz/v2/auditoria-portal/ofertas-verificacao-preinstalacao-20261114.md +++ b/docs/investmoz/v2/auditoria-portal/ofertas-verificacao-preinstalacao-20261114.md @@ -4,6 +4,8 @@ ## Parecer: APTO COM CONDIÇÕES +**Execução posterior autorizada e interrompida:** [incidente do build Wayfinder e correcção QA](ofertas-instalacao-privada-incidente-wayfinder-20261114.md). O fast-forward exacto para `3558647e` foi autorizado e efectuado; o executor recusou a candidata por TS2395 antes da promoção. Homologação preservada em `96f51096`, 219 tabelas/417 ficheiros intactos, sem migração ou reversão. Correcção mínima validada apenas em QA, dependente de nova autorização de revisão. Os estados de entrada abaixo descrevem verificações anteriores e não substituem este resultado de execução. + **Tentativa após autorização expressa de instalar `3558647e`: BLOQUEADA ANTES DE INICIAR.** A condição 4 da autorização determina interromper quando o executor usa o último `main` e este difere da candidata. `git ls-remote` confirmou `main=96f510965f70581a4b41dd94463f598b77dd7cf5`, enquanto a revisão autorizada é `3558647e8d82092cd0e31eefbe8b9e5e9eacf573`. A homologação continua em `96f51096`, executor inactivo, zero pedidos. Não se fez push, pedido, instalação, migração ou reversão. A autorização de instalação foi recebida; falta decidir a integração controlada exacta em `main` depois desta paragem. Existe fast-forward possível, sem força ou inclusão dos commits documentais posteriores, mas o push pode accionar o executor e não foi executado. Evidência: `outputs/offers-authorised-install-20261114/entry-blocked.json`. O parecer técnico e o restauro anteriormente comprovado mantêm-se; esta é uma precondição operacional concreta, não uma reprovação dos testes. O destino é compatível com a **avaliação privada** das Ofertas. As estruturas verificadas estão presentes, não há migrações/dependências novas no delta, GD/WebP está disponível no destino e o backup/restauro actual passou. A conclusão não autoriza instalar nem declarar aceite a publicação operacional. diff --git a/outputs/offers-exact-install-20261114/backup-summary.json b/outputs/offers-exact-install-20261114/backup-summary.json new file mode 100644 index 00000000..11c17942 --- /dev/null +++ b/outputs/offers-exact-install-20261114/backup-summary.json @@ -0,0 +1,13 @@ +{ + "stage": "/var/backups/investmoz-offers-exact-install-3558647e-20261114/backup", + "created_at": "2026-11-14T17:51:40Z", + "target": { + "database": "teste_investidor", + "port": 5432 + }, + "tables": 219, + "files_verified": 417, + "dump_sha256": "88152dc39367f5e59eb072f63b44d3a949e93d73ae855eccb33c3c0b9e37bf6c", + "files_sha256": "aa6248e0eec3d27d58a4bbb3c16848a70dcb3524e6cafc6340b682984a8bbdb3", + "restore_verified": false +} diff --git a/outputs/offers-exact-install-20261114/corrected-integrated-report-input.json b/outputs/offers-exact-install-20261114/corrected-integrated-report-input.json new file mode 100644 index 00000000..cfd3721f --- /dev/null +++ b/outputs/offers-exact-install-20261114/corrected-integrated-report-input.json @@ -0,0 +1,663 @@ +{ + "path": { + "funding_selections": [], + "preparation_action": null, + "private_investment": null, + "case": { + "id": "d51a3c8b-6210-4d2a-93ec-17ee61452e79", + "title": "Synthetic acquisition acceptance", + "version": 5, + "closed": false + }, + "journey_id": "3da63c95-34ac-4f6f-9f97-9c35c261cb17", + "definition_id": "61000919-0000-4000-8000-000000000001", + "definition_version": 1, + "source_sha256": "aa13c53138ec15cd808de43d9dc2fc6808da86943d09d3352c9dd0944bdae364", + "phases": { + "1": "Ideia e viabilidade", + "2": "Formaliza\u00e7\u00e3o e dossier", + "3": "Licenciamento e terra", + "4": "Financiamento", + "5": "Execu\u00e7\u00e3o e acompanhamento" + }, + "steps": [ + { + "code": "S01", + "phase": 1, + "title": "Sistematizar a ideia", + "branch": null, + "sequence": 1, + "dependencies": [], + "source_paragraph": 22, + "id": "ad1b09ac-2082-454c-9fc9-dec3e94d61f7", + "version": 1, + "state": "not_started", + "saved_state": "not_started", + "applicability": "applicable", + "reason": "", + "detail": { + "state": "not_started" + }, + "preparation_allowed": true, + "action_gaps": [], + "context_review_required": false + }, + { + "code": "S02", + "phase": 1, + "title": "An\u00e1lise preliminar", + "branch": null, + "sequence": 2, + "dependencies": [], + "source_paragraph": 23, + "id": "1d17b451-b95a-4a29-a829-d75990f75961", + "version": 1, + "state": "not_started", + "saved_state": "not_started", + "applicability": "applicable", + "reason": "", + "detail": { + "state": "not_started" + }, + "preparation_allowed": true, + "action_gaps": [], + "context_review_required": true + }, + { + "code": "S03", + "phase": 1, + "title": "Decis\u00e3o sobre a viabilidade", + "branch": null, + "sequence": 3, + "dependencies": [], + "source_paragraph": 24, + "id": "32d9cd0f-e854-4129-8358-ed17a8574d95", + "version": 1, + "state": "not_started", + "saved_state": "not_started", + "applicability": "applicable", + "reason": "", + "detail": { + "state": "not_started" + }, + "preparation_allowed": true, + "action_gaps": [], + "context_review_required": true + }, + { + "code": "S04", + "phase": 1, + "title": "Estruturar o investimento", + "branch": null, + "sequence": 4, + "dependencies": [], + "source_paragraph": 25, + "id": "0a2005fe-2cdd-4d49-a8e9-052403c61095", + "version": 1, + "state": "not_started", + "saved_state": "not_started", + "applicability": "applicable", + "reason": "", + "detail": { + "state": "not_started" + }, + "preparation_allowed": true, + "action_gaps": [], + "context_review_required": true + }, + { + "code": "S05", + "phase": 2, + "title": "Constitui\u00e7\u00e3o e registo", + "branch": null, + "sequence": 5, + "dependencies": [], + "source_paragraph": 26, + "id": "cf6c4c1b-61a0-4c7f-85c7-b6a21c7adbb4", + "version": 1, + "state": "not_started", + "saved_state": "not_started", + "applicability": "applicable", + "reason": "", + "detail": { + "state": "not_started" + }, + "preparation_allowed": true, + "action_gaps": [], + "context_review_required": false + }, + { + "code": "S06", + "phase": 2, + "title": "Preparar o dossier", + "branch": null, + "sequence": 6, + "dependencies": [], + "source_paragraph": 27, + "id": "881cd5ed-81a1-48ce-8278-2d2cb568e27b", + "version": 1, + "state": "not_started", + "saved_state": "not_started", + "applicability": "applicable", + "reason": "", + "detail": { + "state": "not_started" + }, + "preparation_allowed": true, + "action_gaps": [], + "context_review_required": false + }, + { + "code": "S07", + "phase": 2, + "title": "Submeter quando aplic\u00e1vel", + "branch": null, + "sequence": 7, + "dependencies": { + "submit": [ + "S06" + ] + }, + "source_paragraph": 28, + "id": "0d57e596-26f3-4ec1-a8fd-aae1cf3aecce", + "version": 1, + "state": "not_started", + "saved_state": "not_started", + "applicability": "applicable", + "reason": "", + "detail": { + "state": "not_started" + }, + "preparation_allowed": true, + "action_gaps": { + "submit": [ + "S06" + ] + }, + "context_review_required": false + }, + { + "code": "S08", + "phase": 3, + "title": "Licenciamento pr\u00e9vio", + "branch": null, + "sequence": 8, + "dependencies": [], + "source_paragraph": 29, + "id": "51be4636-e771-4a90-8b02-a7e7e19799d2", + "version": 1, + "state": "not_started", + "saved_state": "not_started", + "applicability": "applicable", + "reason": "", + "detail": { + "state": "not_started" + }, + "preparation_allowed": true, + "action_gaps": [], + "context_review_required": true + }, + { + "code": "S09", + "phase": 3, + "title": "Necessidade de terra", + "branch": null, + "sequence": 9, + "dependencies": [], + "source_paragraph": 30, + "id": "8860d60b-557a-4cae-9e9a-ffce052f0ac1", + "version": 1, + "state": "not_started", + "saved_state": "not_started", + "applicability": "applicable", + "reason": "", + "detail": { + "state": "not_started" + }, + "preparation_allowed": true, + "action_gaps": [], + "context_review_required": false + }, + { + "code": "S10", + "phase": 3, + "title": "Regulariza\u00e7\u00e3o da terra", + "branch": "land_needed", + "sequence": 10, + "dependencies": [], + "source_paragraph": 31, + "id": "fefbb44c-0346-4309-a626-d64f89dc3ed8", + "version": 1, + "state": "not_started", + "saved_state": "not_started", + "applicability": "undetermined", + "reason": "", + "detail": { + "state": "not_started" + }, + "preparation_allowed": true, + "action_gaps": [], + "context_review_required": false + }, + { + "code": "S11", + "phase": 3, + "title": "Confirmar regulariza\u00e7\u00e3o aplic\u00e1vel", + "branch": null, + "sequence": 11, + "dependencies": [], + "source_paragraph": 32, + "id": "c91ca8c7-8075-4ddc-b2dc-d7f1fd820b54", + "version": 1, + "state": "not_started", + "saved_state": "not_started", + "applicability": "applicable", + "reason": "", + "detail": { + "state": "not_started" + }, + "preparation_allowed": true, + "action_gaps": [], + "context_review_required": false + }, + { + "code": "S12", + "phase": 4, + "title": "Necessidade e estrutura de financiamento", + "branch": null, + "sequence": 12, + "dependencies": [], + "source_paragraph": 33, + "id": "073bae02-69a6-463e-90b9-d85a3750c5c1", + "version": 1, + "state": "not_started", + "saved_state": "not_started", + "applicability": "applicable", + "reason": "", + "detail": { + "state": "not_started" + }, + "preparation_allowed": true, + "action_gaps": [], + "context_review_required": true + }, + { + "code": "S13", + "phase": 4, + "title": "Dilig\u00eancia e negocia\u00e7\u00e3o financeira", + "branch": "external_funding", + "sequence": 13, + "dependencies": [], + "source_paragraph": 34, + "id": "9610ed18-2b00-42b7-ba45-109d786fbfab", + "version": 1, + "state": "not_started", + "saved_state": "not_started", + "applicability": "undetermined", + "reason": "", + "detail": { + "state": "not_started" + }, + "preparation_allowed": true, + "action_gaps": [], + "context_review_required": true + }, + { + "code": "S14", + "phase": 4, + "title": "Decis\u00e3o do financiador", + "branch": "external_funding", + "sequence": 14, + "dependencies": [], + "source_paragraph": 35, + "id": "0d9db59f-8237-4541-a962-ef91d38431e2", + "version": 1, + "state": "not_started", + "saved_state": "not_started", + "applicability": "undetermined", + "reason": "", + "detail": { + "state": "not_started" + }, + "preparation_allowed": true, + "action_gaps": [], + "context_review_required": true + }, + { + "code": "S15", + "phase": 4, + "title": "Fecho e desembolso", + "branch": "external_funding", + "sequence": 15, + "dependencies": { + "execute": [ + "S14" + ] + }, + "source_paragraph": 36, + "id": "071057b5-cae7-4bfe-abec-749ff219f46a", + "version": 1, + "state": "not_started", + "saved_state": "not_started", + "applicability": "undetermined", + "reason": "", + "detail": { + "state": "not_started" + }, + "preparation_allowed": true, + "action_gaps": { + "execute": [ + "S14" + ] + }, + "context_review_required": true + }, + { + "code": "S16", + "phase": 5, + "title": "Implementa\u00e7\u00e3o", + "branch": null, + "sequence": 16, + "dependencies": [], + "source_paragraph": 37, + "id": "f6cdd881-7ceb-49e4-a092-c1b7677de0c9", + "version": 1, + "state": "not_started", + "saved_state": "not_started", + "applicability": "applicable", + "reason": "", + "detail": { + "state": "not_started" + }, + "preparation_allowed": true, + "action_gaps": [], + "context_review_required": false + }, + { + "code": "S17", + "phase": 5, + "title": "Inspec\u00e7\u00f5es, testes e licen\u00e7a de opera\u00e7\u00e3o", + "branch": null, + "sequence": 17, + "dependencies": [], + "source_paragraph": 38, + "id": "53e9c8ea-3fe2-4945-92d9-c46d6a053b21", + "version": 1, + "state": "not_started", + "saved_state": "not_started", + "applicability": "applicable", + "reason": "", + "detail": { + "state": "not_started" + }, + "preparation_allowed": true, + "action_gaps": [], + "context_review_required": true + }, + { + "code": "S18", + "phase": 5, + "title": "In\u00edcio de opera\u00e7\u00e3o", + "branch": null, + "sequence": 18, + "dependencies": { + "operate": [ + "S17" + ] + }, + "source_paragraph": 39, + "id": "31728d61-5f97-41ce-ab31-17aa1c7712fe", + "version": 1, + "state": "not_started", + "saved_state": "not_started", + "applicability": "applicable", + "reason": "", + "detail": { + "state": "not_started" + }, + "preparation_allowed": true, + "action_gaps": { + "operate": [ + "S17" + ] + }, + "context_review_required": false + }, + { + "code": "S19", + "phase": 5, + "title": "Acompanhamento recorrente", + "branch": null, + "sequence": 19, + "dependencies": [], + "source_paragraph": 40, + "id": "c90e77d5-55ae-4e94-a0bb-4aeed7a418c6", + "version": 1, + "state": "not_started", + "saved_state": "not_started", + "applicability": "applicable", + "reason": "", + "detail": { + "state": "not_started" + }, + "preparation_allowed": true, + "action_gaps": [], + "context_review_required": false + } + ], + "facts": { + "land_needed": "unknown", + "external_funding": "unknown", + "viability": "unknown" + }, + "fact_reasons": [], + "context_opportunity": null, + "opportunity_options": [], + "fintech": null, + "canWrite": true, + "canReview": false, + "next": { + "code": "S01", + "title": "Sistematizar a ideia", + "action": "Preparar", + "href": "#S01" + }, + "investment_context": { + "opportunity_choices": [], + "preparation_documents": [], + "preparation_snapshot": null, + "revision": 1, + "selection": { + "opportunity": { + "key": "opportunity:28", + "kind": "opportunity", + "id": "28", + "title": "Synthetic acquisition acceptance", + "version": 5, + "href": "\/minhas-oportunidades\/ofertas\/28", + "fields": { + "project_title": "Synthetic acquisition acceptance", + "project_summary": "Existing company description to reuse once in investment preparation.", + "province": "Synthetic province", + "province_id": "855412e5-27b2-4e0f-90e2-c690e2698ae3", + "location": "Synthetic province" + }, + "documents": [], + "visibility": "private", + "state": "approved", + "sha256": "54f87633f70b4b840a9b5ed445e8b437f7dd6c21097119b0324d79b0322dfce3" + } + }, + "fields": { + "project_title": "Synthetic acquisition acceptance", + "investment_regime": "general", + "special_zone_id": "", + "currency": "MZN", + "project_summary": "Existing company description to reuse once in investment preparation.", + "province": "Synthetic province", + "province_id": "855412e5-27b2-4e0f-90e2-c690e2698ae3", + "location": "Synthetic province" + }, + "provenance": { + "project_title": { + "kind": "dossier", + "id": "d51a3c8b-6210-4d2a-93ec-17ee61452e79", + "version": 2 + }, + "currency": { + "kind": "process_declaration", + "actor_id": 126, + "context_revision": 1 + }, + "project_summary": { + "key": "opportunity:28", + "kind": "opportunity", + "id": "28", + "title": "Synthetic acquisition acceptance", + "version": 5, + "href": "\/minhas-oportunidades\/ofertas\/28", + "documents": [], + "visibility": "private", + "state": "approved", + "sha256": "54f87633f70b4b840a9b5ed445e8b437f7dd6c21097119b0324d79b0322dfce3" + }, + "province": { + "key": "opportunity:28", + "kind": "opportunity", + "id": "28", + "title": "Synthetic acquisition acceptance", + "version": 5, + "href": "\/minhas-oportunidades\/ofertas\/28", + "documents": [], + "visibility": "private", + "state": "approved", + "sha256": "54f87633f70b4b840a9b5ed445e8b437f7dd6c21097119b0324d79b0322dfce3" + }, + "province_id": { + "key": "opportunity:28", + "kind": "opportunity", + "id": "28", + "title": "Synthetic acquisition acceptance", + "version": 5, + "href": "\/minhas-oportunidades\/ofertas\/28", + "documents": [], + "visibility": "private", + "state": "approved", + "sha256": "54f87633f70b4b840a9b5ed445e8b437f7dd6c21097119b0324d79b0322dfce3" + }, + "location": { + "key": "opportunity:28", + "kind": "opportunity", + "id": "28", + "title": "Synthetic acquisition acceptance", + "version": 5, + "href": "\/minhas-oportunidades\/ofertas\/28", + "documents": [], + "visibility": "private", + "state": "approved", + "sha256": "54f87633f70b4b840a9b5ed445e8b437f7dd6c21097119b0324d79b0322dfce3" + } + }, + "review_steps": { + "S02": { + "revision": 1, + "reason": "O contexto mudou; reveja os pressupostos e a evid\u00eancia aplic\u00e1vel." + }, + "S03": { + "revision": 1, + "reason": "O contexto mudou; reveja os pressupostos e a evid\u00eancia aplic\u00e1vel." + }, + "S04": { + "revision": 1, + "reason": "O contexto mudou; reveja os pressupostos e a evid\u00eancia aplic\u00e1vel." + }, + "S08": { + "revision": 1, + "reason": "O contexto mudou; reveja os pressupostos e a evid\u00eancia aplic\u00e1vel." + }, + "S12": { + "revision": 1, + "reason": "O contexto mudou; reveja os pressupostos e a evid\u00eancia aplic\u00e1vel." + }, + "S13": { + "revision": 1, + "reason": "O contexto mudou; reveja os pressupostos e a evid\u00eancia aplic\u00e1vel." + }, + "S14": { + "revision": 1, + "reason": "O contexto mudou; reveja os pressupostos e a evid\u00eancia aplic\u00e1vel." + }, + "S15": { + "revision": 1, + "reason": "O contexto mudou; reveja os pressupostos e a evid\u00eancia aplic\u00e1vel." + }, + "S17": { + "revision": 1, + "reason": "O contexto mudou; reveja os pressupostos e a evid\u00eancia aplic\u00e1vel." + } + }, + "dependency_hash": "7c4eca9a9377b1c42478becca10e833db253fe5abb566731a9d9bb0a6ba72baf", + "updated_at": "2026-11-14T18:07:17+00:00", + "updated_by": 126, + "requirements_assessment": { + "version": "context-requirements-20261023", + "requirements": [], + "fiscal_notice": "Localiza\u00e7\u00e3o, corredor, cluster ou projecto \u00e2ncora n\u00e3o activam benef\u00edcios fiscais. O simulador mant\u00e9m as condi\u00e7\u00f5es, fonte, per\u00edodo e \u00e2mbito pr\u00f3prios; condi\u00e7\u00f5es ausentes permanecem indeterminadas." + }, + "complements": [] + }, + "results": [ + { + "id": "2f494a79-71e0-4ed9-a2b1-51b6b60987c4", + "source_key": "f840ebc37a03761ad285d6c22abfc1a5383f2ec87433c0690472420abd21baea", + "draft_id": "b1c4e61e-1d8e-49bc-9f12-7bc1fea93724", + "draft_version": 1, + "snapshot_sha256": "47f89ac2f2882e4adc27a74e2cd0a986f612b0779f2f5f6a7774d3734ba70ea2", + "financial_snapshot": "{\"version\":1,\"data\":{\"budgetPeriod\":\"Mensal\",\"loan\":{\"principal\":\"100000\",\"rate\":\"0\",\"months\":\"24\",\"rateType\":\"nominal\",\"periodMonths\":\"1\",\"gracePeriods\":\"0\",\"upfrontFee\":\"0\",\"recurringFee\":\"0\"},\"breakEven\":{\"fixed\":\"3000\",\"price\":\"100\",\"variable\":\"50\"},\"funding\":{\"total\":\"100000\",\"secured\":\"30000\"},\"incomes\":[{\"label\":\"Synthetic scenario revenue\",\"amount\":\"10000\"}],\"expenses\":[{\"label\":\"Declared rent at synthetic province\",\"amount\":\"2000\"},{\"label\":\"Declared transport at synthetic province\",\"amount\":\"1000\"}]}}", + "context_opportunity": null, + "currency": "MZN", + "engine": "financial-calculators:v1", + "kind": "local_calculation_inputs", + "context_state": "current", + "context_revision": 1, + "context_dependency_hash": "7c4eca9a9377b1c42478becca10e833db253fe5abb566731a9d9bb0a6ba72baf", + "recorded_at": "2026-11-14T18:07:20+00:00" + } + ], + "requests": [], + "documents": [], + "fiscal_reports": [], + "land_report": null, + "preparation_report": null, + "company_reports": [], + "zone_contexts": [], + "sector_contexts": [], + "sector_references": [], + "content_sources": [], + "tasks": [], + "services": [], + "tools": { + "funding": "\/fundos?kind=institution&location_mode=physical&context=d51a3c8b-6210-4d2a-93ec-17ee61452e79", + "simulator": "\/simulador-fiscal?context=d51a3c8b-6210-4d2a-93ec-17ee61452e79&draft=b1c4e61e-1d8e-49bc-9f12-7bc1fea93724", + "preparation": null, + "company": "\/investimentos\/d51a3c8b-6210-4d2a-93ec-17ee61452e79\/forma-juridica", + "desk": "\/balcao-virtual\/dossiers\/d51a3c8b-6210-4d2a-93ec-17ee61452e79", + "guidance": "\/balcao-virtual\/dossiers\/d51a3c8b-6210-4d2a-93ec-17ee61452e79\/orientacao", + "library": "\/documentos?context=d51a3c8b-6210-4d2a-93ec-17ee61452e79", + "opportunities": "\/oportunidades?context=d51a3c8b-6210-4d2a-93ec-17ee61452e79", + "territory": "\/zonas?context=d51a3c8b-6210-4d2a-93ec-17ee61452e79", + "partners": "\/parcerias\/painel?context=d51a3c8b-6210-4d2a-93ec-17ee61452e79", + "land": "\/investidor\/terra-duat\/novo?context=d51a3c8b-6210-4d2a-93ec-17ee61452e79" + } + }, + "saved": { + "project_title": "Synthetic acquisition acceptance", + "currency": "MZN", + "project_summary": "Existing company description to reuse once in investment preparation.", + "province_id": "855412e5-27b2-4e0f-90e2-c690e2698ae3", + "journey_type": "investor", + "purpose": "simulate_only", + "context_applicability_snapshot": "{\"version\":1,\"context_revision\":1,\"consumer_opportunity\":null,\"portfolio_origin\":null,\"zone\":null,\"provenance\":{\"project_title\":{\"kind\":\"dossier\",\"id\":\"d51a3c8b-6210-4d2a-93ec-17ee61452e79\",\"version\":2},\"currency\":{\"kind\":\"process_declaration\",\"actor_id\":126,\"context_revision\":1},\"project_summary\":{\"key\":\"opportunity:28\",\"kind\":\"opportunity\",\"id\":\"28\",\"title\":\"Synthetic acquisition acceptance\",\"version\":5,\"href\":\"\\\/minhas-oportunidades\\\/ofertas\\\/28\",\"documents\":[],\"visibility\":\"private\",\"state\":\"approved\",\"sha256\":\"54f87633f70b4b840a9b5ed445e8b437f7dd6c21097119b0324d79b0322dfce3\"},\"province\":{\"key\":\"opportunity:28\",\"kind\":\"opportunity\",\"id\":\"28\",\"title\":\"Synthetic acquisition acceptance\",\"version\":5,\"href\":\"\\\/minhas-oportunidades\\\/ofertas\\\/28\",\"documents\":[],\"visibility\":\"private\",\"state\":\"approved\",\"sha256\":\"54f87633f70b4b840a9b5ed445e8b437f7dd6c21097119b0324d79b0322dfce3\"},\"province_id\":{\"key\":\"opportunity:28\",\"kind\":\"opportunity\",\"id\":\"28\",\"title\":\"Synthetic acquisition acceptance\",\"version\":5,\"href\":\"\\\/minhas-oportunidades\\\/ofertas\\\/28\",\"documents\":[],\"visibility\":\"private\",\"state\":\"approved\",\"sha256\":\"54f87633f70b4b840a9b5ed445e8b437f7dd6c21097119b0324d79b0322dfce3\"},\"location\":{\"key\":\"opportunity:28\",\"kind\":\"opportunity\",\"id\":\"28\",\"title\":\"Synthetic acquisition acceptance\",\"version\":5,\"href\":\"\\\/minhas-oportunidades\\\/ofertas\\\/28\",\"documents\":[],\"visibility\":\"private\",\"state\":\"approved\",\"sha256\":\"54f87633f70b4b840a9b5ed445e8b437f7dd6c21097119b0324d79b0322dfce3\"}},\"opportunity_choices\":[],\"complements\":[],\"requirements_assessment\":{\"version\":\"context-requirements-20261023\",\"requirements\":[],\"fiscal_notice\":\"Localiza\u00e7\u00e3o, corredor, cluster ou projecto \u00e2ncora n\u00e3o activam benef\u00edcios fiscais. O simulador mant\u00e9m as condi\u00e7\u00f5es, fonte, per\u00edodo e \u00e2mbito pr\u00f3prios; condi\u00e7\u00f5es ausentes permanecem indeterminadas.\"},\"path\":{\"definition_id\":\"61000919-0000-4000-8000-000000000001\",\"definition_version\":1,\"source_sha256\":\"aa13c53138ec15cd808de43d9dc2fc6808da86943d09d3352c9dd0944bdae364\",\"steps\":[{\"code\":\"S10\",\"title\":\"Regulariza\u00e7\u00e3o da terra\",\"state\":\"not_started\",\"applicability\":\"undetermined\",\"reason\":\"\",\"context_review_required\":false},{\"code\":\"S13\",\"title\":\"Dilig\u00eancia e negocia\u00e7\u00e3o financeira\",\"state\":\"not_started\",\"applicability\":\"undetermined\",\"reason\":\"\",\"context_review_required\":true},{\"code\":\"S14\",\"title\":\"Decis\u00e3o do financiador\",\"state\":\"not_started\",\"applicability\":\"undetermined\",\"reason\":\"\",\"context_review_required\":true},{\"code\":\"S15\",\"title\":\"Fecho e desembolso\",\"state\":\"not_started\",\"applicability\":\"undetermined\",\"reason\":\"\",\"context_review_required\":true}]},\"land_preparation\":{\"need\":\"unknown\",\"reason\":\"\"},\"field_provenance\":{\"project_title\":{\"kind\":\"dossier\",\"version\":2},\"currency\":{\"kind\":\"process_declaration\",\"context_revision\":1},\"project_summary\":{\"kind\":\"opportunity\",\"title\":\"Synthetic acquisition acceptance\",\"version\":5},\"province\":{\"kind\":\"opportunity\",\"title\":\"Synthetic acquisition acceptance\",\"version\":5},\"province_id\":{\"kind\":\"opportunity\",\"title\":\"Synthetic acquisition acceptance\",\"version\":5},\"location\":{\"kind\":\"opportunity\",\"title\":\"Synthetic acquisition acceptance\",\"version\":5}},\"preparation\":null,\"fields\":{\"investment_regime\":\"general\",\"currency\":\"MZN\"},\"notice\":\"Refer\u00eancias e declara\u00e7\u00f5es para prepara\u00e7\u00e3o; sem reconhecimento autom\u00e1tico de elegibilidade ou benef\u00edcio.\"}", + "financial_tools_snapshot": "{\"version\":1,\"data\":{\"budgetPeriod\":\"Mensal\",\"loan\":{\"principal\":\"100000\",\"rate\":\"0\",\"months\":\"24\",\"rateType\":\"nominal\",\"periodMonths\":\"1\",\"gracePeriods\":\"0\",\"upfrontFee\":\"0\",\"recurringFee\":\"0\"},\"breakEven\":{\"fixed\":\"3000\",\"price\":\"100\",\"variable\":\"50\"},\"funding\":{\"total\":\"100000\",\"secured\":\"30000\"},\"incomes\":[{\"label\":\"Synthetic scenario revenue\",\"amount\":\"10000\"}],\"expenses\":[{\"label\":\"Declared rent at synthetic province\",\"amount\":\"2000\"},{\"label\":\"Declared transport at synthetic province\",\"amount\":\"1000\"}]}}" + } +} \ No newline at end of file diff --git a/outputs/offers-exact-install-20261114/corrected-phpstan.log b/outputs/offers-exact-install-20261114/corrected-phpstan.log new file mode 100644 index 00000000..1b1222c3 --- /dev/null +++ b/outputs/offers-exact-install-20261114/corrected-phpstan.log @@ -0,0 +1 @@ +{"tool":"phpstan","result":"passed","errors":0} diff --git a/outputs/offers-exact-install-20261114/corrected-production-build.log b/outputs/offers-exact-install-20261114/corrected-production-build.log new file mode 100644 index 00000000..2c261bb4 --- /dev/null +++ b/outputs/offers-exact-install-20261114/corrected-production-build.log @@ -0,0 +1,324 @@ + +> build +> vp build + +[plugin @laravel/vite-plugin-wayfinder] Types generated for actions, routes, form variants +npm.cmd : [plugin laravel:fonts] Optimized font fallbacks require the optional "fontaine" package. Install it, or set +"optimizedFallbacks: false" on your fonts to disable the feature. +At line:9 char:444 ++ ... _BUILD='0'; npm.cmd run build *> outputs/offers-exact-install-2026111 ... ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + CategoryInfo : NotSpecified: ([plugin laravel...le the feature.:String) [], RemoteException + + FullyQualifiedErrorId : NativeCommandError + +transforming... +✓ 2849 modules transformed. +rendering chunks... +computing gzip size... +public/build/assets/layers-BWBAp2CZ.png 0.69 kB +public/build/assets/layers-2x-Bpkbi35X.png 1.25 kB +public/build/assets/marker-icon-hN30_KVU.png 1.46 kB +public/build/fonts-manifest.json 5.74 kB │ gzip: 0.71 kB +public/build/assets/instrument-sans-400-normal-DRC__1Mx.woff2 16.86 kB +public/build/assets/instrument-sans-500-normal-Dk9ku72i.woff2 17.23 kB +public/build/assets/instrument-sans-600-normal-B7fBEWYG.woff2 17.40 kB +public/build/assets/instrument-sans-400-normal-D1W7dsQl.woff 21.24 kB +public/build/assets/instrument-sans-500-normal-Z6ESRlEs.woff 21.65 kB +public/build/assets/instrument-sans-600-normal-B9e8oLYv.woff 21.67 kB +public/build/manifest.json 114.69 kB │ gzip: 12.01 kB +public/build/assets/fonts-C9MNnjVw.css 2.35 kB │ gzip: 0.38 kB +public/build/assets/investment-catalogue-WaRR19FV.css 8.15 kB │ gzip: 2.00 kB +public/build/assets/interactive-investment-map-1DTFk8zz.css 10.57 kB │ gzip: 2.63 kB +public/build/assets/app-UznX-FqS.css 157.42 kB │ gzip: 25.28 kB +public/build/assets/input-text-BlEFHnL-.js 0.09 kB │ gzip: 0.10 kB +public/build/assets/check-PcBNn_NG.js 0.12 kB │ gzip: 0.14 kB +public/build/assets/company-comparison-qLTgpXjz.js 0.12 kB │ gzip: 0.13 kB +public/build/assets/chevron-down-Bjkqe1aH.js 0.12 kB │ gzip: 0.14 kB +public/build/assets/chevron-right-K0fOEtTQ.js 0.12 kB │ gzip: 0.14 kB +public/build/assets/display-value-DRR1EAAK.js 0.13 kB │ gzip: 0.12 kB +public/build/assets/value-text-BztaYdGl.js 0.14 kB │ gzip: 0.12 kB +public/build/assets/loader-circle-DS8Tf4er.js 0.14 kB │ gzip: 0.15 kB +public/build/assets/shared-B-QpuOU2.js 0.15 kB │ gzip: 0.13 kB +public/build/assets/arrow-left-DMVHIw8Z.js 0.16 kB │ gzip: 0.16 kB +public/build/assets/arrow-up-right-BIVouzdL.js 0.16 kB │ gzip: 0.15 kB +public/build/assets/search-BRvPeo47.js 0.17 kB │ gzip: 0.16 kB +public/build/assets/circle-check-DckzuBoW.js 0.17 kB │ gzip: 0.16 kB +public/build/assets/product-usage-CHhCL93_.js 0.18 kB │ gzip: 0.17 kB +public/build/assets/editorial-states-Bc7NQzsj.js 0.19 kB │ gzip: 0.16 kB +public/build/assets/types-BoD_IJFv.js 0.19 kB │ gzip: 0.16 kB +public/build/assets/participation-identity-BWabb4yN.js 0.24 kB │ gzip: 0.18 kB +public/build/assets/circle-alert-uV7omYjr.js 0.24 kB │ gzip: 0.18 kB +public/build/assets/eye-CmcEBfxN.js 0.25 kB │ gzip: 0.20 kB +public/build/assets/log-in-Wgc8VLfq.js 0.25 kB │ gzip: 0.22 kB +public/build/assets/partnership-history-CfclSLAo.js 0.27 kB │ gzip: 0.19 kB +public/build/assets/compiler-runtime-sKsOXjDo.js 0.27 kB │ gzip: 0.23 kB +public/build/assets/file-text-CEJtuNfp.js 0.33 kB │ gzip: 0.21 kB +public/build/assets/confirm-Culw9Q-x.js 0.36 kB │ gzip: 0.22 kB +public/build/assets/text-link-BBvcP60s.js 0.40 kB │ gzip: 0.27 kB +public/build/assets/content-management-entry-C_oY4VyW.js 0.42 kB │ gzip: 0.31 kB +public/build/assets/handshake-YqyTTm3a.js 0.44 kB │ gzip: 0.28 kB +public/build/assets/investment-guides-DO58L8zr.js 0.45 kB │ gzip: 0.26 kB +public/build/assets/catalogue-context-1vQ0-xK7.js 0.47 kB │ gzip: 0.30 kB +public/build/assets/operation-key-Dr4VtGxa.js 0.51 kB │ gzip: 0.35 kB +public/build/assets/spinner-Dmx1j41V.js 0.52 kB │ gzip: 0.36 kB +public/build/assets/types-Cxp_Nskt.js 0.55 kB │ gzip: 0.32 kB +public/build/assets/sliders-horizontal-D-4FqAHA.js 0.58 kB │ gzip: 0.26 kB +public/build/assets/page-preparation-guard-B-OckhBt.js 0.59 kB │ gzip: 0.35 kB +public/build/assets/portal-presentation-fH7FShU8.js 0.62 kB │ gzip: 0.38 kB +public/build/assets/confidentiality-C2eqbRBb.js 0.64 kB │ gzip: 0.41 kB +public/build/assets/dist-RzQD0wUd.js 0.68 kB │ gzip: 0.43 kB +public/build/assets/dist-qw3FPjRO.js 0.74 kB │ gzip: 0.49 kB +public/build/assets/labels-DxqjesIG.js 0.74 kB │ gzip: 0.46 kB +public/build/assets/wayfinder-Dp7PqxvV.js 0.89 kB │ gzip: 0.53 kB +public/build/assets/createLucideIcon-oMeAlXbs.js 0.95 kB │ gzip: 0.56 kB +public/build/assets/use-interest-draft-waHUBAew.js 0.99 kB │ gzip: 0.51 kB +public/build/assets/context-documents-Bh7vrWBo.js 1.01 kB │ gzip: 0.57 kB +public/build/assets/label-Dpfg_IeY.js 1.02 kB │ gzip: 0.62 kB +public/build/assets/technical-incident-labels-DlL6bSeE.js 1.02 kB │ gzip: 0.51 kB +public/build/assets/investment-consumer-identity-Cxp_hGfX.js 1.07 kB │ gzip: 0.59 kB +public/build/assets/article-Bp95nIri.js 1.08 kB │ gzip: 0.65 kB +public/build/assets/search-state-RHLy6yI7.js 1.10 kB │ gzip: 0.68 kB +public/build/assets/rolldown-runtime-Dd_uD5pT.js 1.10 kB │ gzip: 0.62 kB +public/build/assets/catalogue-investment-map-C5u-ZS7q.js 1.12 kB │ gzip: 0.62 kB +public/build/assets/investment-contexts-BQGiwu9n.js 1.17 kB │ gzip: 0.60 kB +public/build/assets/profile-json-Bza-VQzw.js 1.20 kB │ gzip: 0.72 kB +public/build/assets/document-COw_wOdO.js 1.23 kB │ gzip: 0.72 kB +public/build/assets/shared-JTxA6RNb.js 1.24 kB │ gzip: 0.74 kB +public/build/assets/public-detail-3AU70Dv-.js 1.25 kB │ gzip: 0.72 kB +public/build/assets/demographic-context-BMdtlxjJ.js 1.27 kB │ gzip: 0.73 kB +public/build/assets/public-offer-card-BDRgf7-u.js 1.30 kB │ gzip: 0.70 kB +public/build/assets/input-BJ-Jg-jz.js 1.37 kB │ gzip: 0.75 kB +public/build/assets/cluster-competitiveness-hNV0FaaW.js 1.37 kB │ gzip: 0.73 kB +public/build/assets/verify-email-DLyeS-ky.js 1.40 kB │ gzip: 0.74 kB +public/build/assets/business-types-SGCXhH6X.js 1.47 kB │ gzip: 0.75 kB +public/build/assets/verification-BOcn3HIw.js 1.48 kB │ gzip: 0.52 kB +public/build/assets/country-select-4uP5BvMf.js 1.49 kB │ gzip: 0.78 kB +public/build/assets/territorial-source-evidence-eKB4ZB36.js 1.53 kB │ gzip: 0.83 kB +public/build/assets/manage-rHtSD5LS.js 1.56 kB │ gzip: 0.74 kB +public/build/assets/educational-article-card-0rCqZ1kX.js 1.59 kB │ gzip: 0.72 kB +public/build/assets/partnership-source-links-VfrXk2FZ.js 1.65 kB │ gzip: 0.91 kB +public/build/assets/catalogue-BtBt9fvW.js 1.78 kB │ gzip: 0.96 kB +public/build/assets/technical-incident-notice-CjziWA6m.js 1.79 kB │ gzip: 0.89 kB +public/build/assets/report-DRxtlCFu.js 1.80 kB │ gzip: 0.93 kB +public/build/assets/preparation-index-CdgPdpQ-.js 1.87 kB │ gzip: 0.89 kB +public/build/assets/opportunity-technical-incidents-C4aVbut7.js 1.88 kB │ gzip: 0.98 kB +public/build/assets/password-input-DdsNob7W.js 1.89 kB │ gzip: 1.06 kB +public/build/assets/passkey-verify-Xyqvu_s4.js 2.04 kB │ gzip: 1.15 kB +public/build/assets/public-record-offline-BmjvnSLE.js 2.07 kB │ gzip: 1.22 kB +public/build/assets/investors-Di6y94fY.js 2.09 kB │ gzip: 1.15 kB +public/build/assets/forgot-password-yYaDq9Uu.js 2.10 kB │ gzip: 0.98 kB +public/build/assets/sources-HCmnzcAX.js 2.13 kB │ gzip: 1.12 kB +public/build/assets/saved-wal8Mb1T.js 2.21 kB │ gzip: 1.11 kB +public/build/assets/zone-map-oV9KEwxY.js 2.26 kB │ gzip: 1.16 kB +public/build/assets/appearance-BP-b3aFc.js 2.36 kB │ gzip: 1.14 kB +public/build/assets/shared-CBJ3c_x-.js 2.37 kB │ gzip: 1.24 kB +public/build/assets/editorial-subjects-C6_MfRSK.js 2.38 kB │ gzip: 1.14 kB +public/build/assets/context-installation-D9SIQHPi.js 2.39 kB │ gzip: 1.23 kB +public/build/assets/workspace-4_R1CLYI.js 2.40 kB │ gzip: 1.20 kB +public/build/assets/reset-password-D-TXit1d.js 2.43 kB │ gzip: 0.98 kB +public/build/assets/public-document-content-BHvs9J7S.js 2.47 kB │ gzip: 0.80 kB +public/build/assets/manage-h1Vaw3Xs.js 2.47 kB │ gzip: 1.10 kB +public/build/assets/confirm-password-Bz70GAZg.js 2.47 kB │ gzip: 1.06 kB +public/build/assets/structures-Dr2nXdub.js 2.49 kB │ gzip: 1.35 kB +public/build/assets/bootstrap-confirmation-9RmA5-Yz.js 2.55 kB │ gzip: 1.19 kB +public/build/assets/territory-associations-ODVIHiZU.js 2.55 kB │ gzip: 1.11 kB +public/build/assets/installation-Dly8Xg6e.js 2.59 kB │ gzip: 1.28 kB +public/build/assets/technical-support-DlW3Jv7q.js 2.60 kB │ gzip: 1.18 kB +public/build/assets/management-CvdeRZYq.js 2.68 kB │ gzip: 1.18 kB +public/build/assets/experiments-DitFKzM4.js 2.73 kB │ gzip: 1.31 kB +public/build/assets/password-CB_NxgQN.js 2.73 kB │ gzip: 0.73 kB +public/build/assets/opportunity-install-B232n6lM.js 2.75 kB │ gzip: 1.34 kB +public/build/assets/dist-BobFCjoG.js 2.92 kB │ gzip: 1.29 kB +public/build/assets/offer-navigation-DLl-_mMp.js 2.98 kB │ gzip: 1.11 kB +public/build/assets/portal-api-CpQBRfcu.js 2.98 kB │ gzip: 1.50 kB +public/build/assets/two-factor-challenge-DXHJ-XjZ.js 3.24 kB │ gzip: 1.52 kB +public/build/assets/territory-geometry-preview-TlklAYvq.js 3.25 kB │ gzip: 1.47 kB +public/build/assets/workspace-D6eSwMPE.js 3.29 kB │ gzip: 1.44 kB +public/build/assets/partnership-agreement-instrument-CCnuZNBy.js 3.43 kB │ gzip: 1.49 kB +public/build/assets/funding-classification-DxK67Gr_.js 3.44 kB │ gzip: 1.64 kB +public/build/assets/guide-mndEuKFT.js 3.45 kB │ gzip: 1.43 kB +public/build/assets/history-DSPDM8gM.js 3.46 kB │ gzip: 1.70 kB +public/build/assets/audit-Xdo8qR4z.js 3.51 kB │ gzip: 1.69 kB +public/build/assets/show-D0mDuHqC.js 3.60 kB │ gzip: 1.82 kB +public/build/assets/demography-D_JHlax_.js 3.70 kB │ gzip: 1.79 kB +public/build/assets/corridor-agribusiness-BcIVf-hW.js 3.72 kB │ gzip: 1.53 kB +public/build/assets/business-opportunity-CNz7NAr0.js 3.73 kB │ gzip: 1.63 kB +public/build/assets/management-access-D4VE9LUB.js 3.75 kB │ gzip: 1.43 kB +public/build/assets/businesses-QQGbugDY.js 3.76 kB │ gzip: 1.57 kB +public/build/assets/editorial-reading-DUFQmJtD.js 3.89 kB │ gzip: 1.68 kB +public/build/assets/catalog-B6dpdVsW.js 3.95 kB │ gzip: 1.51 kB +public/build/assets/desk-assignments-CfWpiIpK.js 3.99 kB │ gzip: 1.95 kB +public/build/assets/dashboard-CxoTLkSg.js 3.99 kB │ gzip: 1.61 kB +public/build/assets/investment-context-cards-gJe_oyxw.js 4.05 kB │ gzip: 1.84 kB +public/build/assets/shared-B4FWNTYh.js 4.09 kB │ gzip: 2.05 kB +public/build/assets/opportunity-contact-form-Cb6iDQ1U.js 4.10 kB │ gzip: 1.67 kB +public/build/assets/demographic-evidence-DGwOnf5g.js 4.38 kB │ gzip: 1.84 kB +public/build/assets/conversation-BxjnUMLV.js 4.42 kB │ gzip: 1.95 kB +public/build/assets/portfolio-5GQ_KZiC.js 4.45 kB │ gzip: 1.74 kB +public/build/assets/reference-DUYC0k47.js 4.46 kB │ gzip: 2.00 kB +public/build/assets/territory-geometry-import-BnSl5jzG.js 4.49 kB │ gzip: 1.90 kB +public/build/assets/opportunity-origin-D3o6OTRg.js 4.64 kB │ gzip: 2.07 kB +public/build/assets/context-inheritance-dd0VgP8h.js 4.64 kB │ gzip: 2.00 kB +public/build/assets/installation-CnslW5oi.js 4.67 kB │ gzip: 1.95 kB +public/build/assets/opportunities-YsMGMCR_.js 4.73 kB │ gzip: 1.77 kB +public/build/assets/references-Dpnc1rzq.js 4.79 kB │ gzip: 2.22 kB +public/build/assets/offer-confidential-access-Bu9EgZ3d.js 4.83 kB │ gzip: 1.91 kB +public/build/assets/opportunity-curation-7Gt2cWer.js 4.88 kB │ gzip: 2.04 kB +public/build/assets/business-verifications-CrRulyQa.js 4.90 kB │ gzip: 1.72 kB +public/build/assets/crm-edit-comparison-Db53T7I7.js 4.91 kB │ gzip: 1.99 kB +public/build/assets/investment-complements-CqmFjvBN.js 5.00 kB │ gzip: 2.05 kB +public/build/assets/service-CbUB6_Ll.js 5.05 kB │ gzip: 2.33 kB +public/build/assets/agreement-history-BfSa8E7Q.js 5.13 kB │ gzip: 2.10 kB +public/build/assets/catalogue-DY6Wy5Cg.js 5.13 kB │ gzip: 2.54 kB +public/build/assets/workspace-BeyUwWtD.js 5.20 kB │ gzip: 2.18 kB +public/build/assets/article-editor-ByLxbPbJ.js 5.25 kB │ gzip: 2.20 kB +public/build/assets/context-start-hE9CWWCV.js 5.46 kB │ gzip: 2.10 kB +public/build/assets/economic-references-C7dNVUC6.js 5.61 kB │ gzip: 2.52 kB +public/build/assets/convert-B3LtI2n6.js 5.81 kB │ gzip: 2.40 kB +public/build/assets/editorial-subject-form-B2W8E2NJ.js 5.87 kB │ gzip: 2.66 kB +public/build/assets/public-sector-cards-Esb1aTm6.js 5.94 kB │ gzip: 2.55 kB +public/build/assets/demography-install-B57rikBv.js 6.05 kB │ gzip: 2.50 kB +public/build/assets/context-to-HP9u9.js 6.06 kB │ gzip: 2.65 kB +public/build/assets/request-BUGHIRJq.js 6.10 kB │ gzip: 2.41 kB +public/build/assets/structure-geography-lV-3bl6R.js 6.12 kB │ gzip: 2.22 kB +public/build/assets/editorial-workflow-DYYZzXOw.js 6.22 kB │ gzip: 2.29 kB +public/build/assets/investment-map-panel-BXYumzxQ.js 6.27 kB │ gzip: 2.88 kB +public/build/assets/procurement-B_QkirDu.js 6.35 kB │ gzip: 2.73 kB +public/build/assets/register-CSFi8mO-.js 6.43 kB │ gzip: 2.71 kB +public/build/assets/funding-BPHyNawC.js 6.49 kB │ gzip: 2.00 kB +public/build/assets/leads-Bu2UK8ON.js 6.56 kB │ gzip: 2.82 kB +public/build/assets/business-marketplace-DfUAwAmq.js 6.59 kB │ gzip: 2.51 kB +public/build/assets/interest-xqtiIFPC.js 6.63 kB │ gzip: 2.23 kB +public/build/assets/demography-BxaBdOBx.js 6.66 kB │ gzip: 2.51 kB +public/build/assets/fiscal-qa-review-CEzw2OQP.js 6.75 kB │ gzip: 2.70 kB +public/build/assets/business-interest-fAZE_Pbt.js 6.82 kB │ gzip: 2.60 kB +public/build/assets/interests-BcpPowrJ.js 6.83 kB │ gzip: 2.78 kB +public/build/assets/catalogue-j9LhZ6Oa.js 6.84 kB │ gzip: 2.82 kB +public/build/assets/company-comparison-BwxGUPs3.js 6.92 kB │ gzip: 2.60 kB +public/build/assets/business-classification-Bu0hQkg7.js 7.01 kB │ gzip: 2.57 kB +public/build/assets/dist-Ddn_hEUd.js 7.02 kB │ gzip: 2.71 kB +public/build/assets/blank-2jFZEe2q.js 7.07 kB │ gzip: 2.77 kB +public/build/assets/analysis--82QOZav.js 7.11 kB │ gzip: 2.96 kB +public/build/assets/profile-DWCNp6hP.js 7.19 kB │ gzip: 2.47 kB +public/build/assets/install-DfaXd1NZ.js 7.23 kB │ gzip: 3.03 kB +public/build/assets/investor-COYuuRY_.js 7.30 kB │ gzip: 2.89 kB +public/build/assets/investor-path-CSExMjAt.js 7.36 kB │ gzip: 3.02 kB +public/build/assets/proactive-supply-review-Bspf5LP7.js 7.55 kB │ gzip: 2.73 kB +public/build/assets/legacy-Cgz97_0u.js 7.67 kB │ gzip: 2.56 kB +public/build/assets/jsx-runtime-BpzPEenQ.js 7.89 kB │ gzip: 2.99 kB +public/build/assets/shared-BFCbvJo7.js 7.90 kB │ gzip: 3.08 kB +public/build/assets/business-objects-DfCgkko7.js 7.95 kB │ gzip: 2.57 kB +public/build/assets/assisted-BH08iYu-.js 8.06 kB │ gzip: 3.16 kB +public/build/assets/value-network-Cp8UYtMs.js 8.06 kB │ gzip: 3.08 kB +public/build/assets/editor-d2dUaWdK.js 8.21 kB │ gzip: 2.97 kB +public/build/assets/territorial-editorial-B0ni24WA.js 8.22 kB │ gzip: 3.03 kB +public/build/assets/opportunity-promotion-CyWpImc1.js 8.40 kB │ gzip: 2.96 kB +public/build/assets/publication-history-DfLO6jOc.js 8.42 kB │ gzip: 3.02 kB +public/build/assets/print-Tn3aXHlY.js 8.66 kB │ gzip: 3.55 kB +public/build/assets/dialog-BY5pP6XP.js 8.81 kB │ gzip: 2.76 kB +public/build/assets/shared-DXIXdF9G.js 8.92 kB │ gzip: 3.83 kB +public/build/assets/iva-modelo-a-CNylSdBc.js 8.94 kB │ gzip: 3.27 kB +public/build/assets/zone-relations-DYVN38G6.js 8.95 kB │ gzip: 2.99 kB +public/build/assets/investment-territory-CoaAvOfZ.js 8.96 kB │ gzip: 3.43 kB +public/build/assets/similar-businesses-HTwQGVGQ.js 9.11 kB │ gzip: 3.58 kB +public/build/assets/interactive-investment-map-C6RYkxx2.js 9.13 kB │ gzip: 3.60 kB +public/build/assets/investment-land-preparation-BHeC9B2U.js 9.15 kB │ gzip: 3.33 kB +public/build/assets/why-invest-BVa_hDq4.js 9.16 kB │ gzip: 3.49 kB +public/build/assets/interest-history-oHNykKmC.js 9.48 kB │ gzip: 3.45 kB +public/build/assets/content-hub-CdhSC7BG.js 9.95 kB │ gzip: 2.93 kB +public/build/assets/privacy-policy-LI1lpUCK.js 10.36 kB │ gzip: 3.07 kB +public/build/assets/editorial-edition-Zq39X7mf.js 10.36 kB │ gzip: 3.47 kB +public/build/assets/panel-la1QJ_S6.js 10.46 kB │ gzip: 4.30 kB +public/build/assets/result-yez5wOFo.js 10.57 kB │ gzip: 4.73 kB +public/build/assets/dashboard-TckpOQI6.js 10.92 kB │ gzip: 3.47 kB +public/build/assets/zone-attachments-DS2XtuU6.js 10.94 kB │ gzip: 2.75 kB +public/build/assets/business-DjxEhMj7.js 11.10 kB │ gzip: 3.09 kB +public/build/assets/detail-Y-uQOHvE.js 11.73 kB │ gzip: 4.31 kB +public/build/assets/login-DSqCNzQj.js 11.89 kB │ gzip: 4.92 kB +public/build/assets/support-installation-tsBpnQkP.js 12.36 kB │ gzip: 4.86 kB +public/build/assets/show-DOVW9TBF.js 12.37 kB │ gzip: 3.99 kB +public/build/assets/tempo-brand-BXcnRsyn.js 12.38 kB │ gzip: 5.01 kB +public/build/assets/show-cuRBkf3d.js 12.40 kB │ gzip: 4.39 kB +public/build/assets/guide-B9b6jazd.js 12.58 kB │ gzip: 4.03 kB +public/build/assets/contact-7Fur8Mlo.js 12.65 kB │ gzip: 4.33 kB +public/build/assets/project-dossier-document-BLKfe4tL.js 12.68 kB │ gzip: 5.20 kB +public/build/assets/dossier-prefill-CkDZdN8F.js 12.72 kB │ gzip: 4.64 kB +public/build/assets/technical-incident-GDB_x0wp.js 12.73 kB │ gzip: 4.96 kB +public/build/assets/competitiveness-60nqrOfg.js 12.74 kB │ gzip: 4.23 kB +public/build/assets/editor-BHONLvty.js 12.91 kB │ gzip: 3.75 kB +public/build/assets/fiscal-forms-CElK0P88.js 13.04 kB │ gzip: 4.75 kB +public/build/assets/opportunity-classification-Dm_W66ep.js 13.44 kB │ gzip: 4.55 kB +public/build/assets/react-CjVep8xp.js 13.90 kB │ gzip: 4.61 kB +public/build/assets/opportunity-search-filters-BwOuTqi6.js 14.74 kB │ gzip: 4.72 kB +public/build/assets/case-wwTeoOmv.js 14.77 kB │ gzip: 5.38 kB +public/build/assets/product-usage-BMGM5Fsp.js 14.81 kB │ gzip: 5.30 kB +public/build/assets/company-preparation-Cvt3Dsqm.js 15.17 kB │ gzip: 4.92 kB +public/build/assets/terms-of-use-CUQdwKes.js 15.27 kB │ gzip: 4.20 kB +public/build/assets/edit-C3UH5lGB.js 15.38 kB │ gzip: 5.15 kB +public/build/assets/relationship-repair-brZoqSge.js 16.29 kB │ gzip: 5.62 kB +public/build/assets/edit-DpqBs8fP.js 16.60 kB │ gzip: 4.88 kB +public/build/assets/edit-CUKYr1QN.js 16.93 kB │ gzip: 4.91 kB +public/build/assets/search-DHadj8Kw.js 17.16 kB │ gzip: 5.69 kB +public/build/assets/funding-institution-DsJ7OfOI.js 17.24 kB │ gzip: 5.83 kB +public/build/assets/use-two-factor-auth-D9w0KtSq.js 17.31 kB │ gzip: 6.30 kB +public/build/assets/administration-CgUGyaX7.js 17.41 kB │ gzip: 4.30 kB +public/build/assets/notifications-3_Mc-VMV.js 17.61 kB │ gzip: 5.83 kB +public/build/assets/ai-BjK1MByI.js 18.08 kB │ gzip: 6.92 kB +public/build/assets/project-dossier-report-BiY2DIQg.js 18.98 kB │ gzip: 6.95 kB +public/build/assets/submission-B_ilbHzj.js 19.99 kB │ gzip: 6.32 kB +public/build/assets/opportunity-resources-CHCOX5-_.js 20.20 kB │ gzip: 7.22 kB +public/build/assets/about-BtlawfeW.js 20.95 kB │ gzip: 7.03 kB +public/build/assets/zones-OjzXPNvW.js 21.16 kB │ gzip: 5.22 kB +public/build/assets/service-editor-DNfxjEmc.js 21.30 kB │ gzip: 6.58 kB +public/build/assets/context-DLdtN62b.js 21.56 kB │ gzip: 6.99 kB +public/build/assets/declaration-Bzl3lixx.js 22.15 kB │ gzip: 7.14 kB +public/build/assets/Combination-BBDI-RbM.js 23.03 kB │ gzip: 8.24 kB +public/build/assets/desk-internal-operations-DrgSmbnS.js 23.14 kB │ gzip: 6.54 kB +public/build/assets/education-BsVVdx6J.js 23.40 kB │ gzip: 8.19 kB +public/build/assets/investment-opportunity-choices-DI6ST39H.js 24.28 kB │ gzip: 8.06 kB +public/build/assets/preparation-CykIAPcD.js 24.56 kB │ gzip: 6.73 kB +public/build/assets/utils-CCDJ05Ll.js 27.31 kB │ gzip: 8.71 kB +public/build/assets/business-wizard-BTqJxN9S.js 28.60 kB │ gzip: 9.42 kB +public/build/assets/proactive-investment-DfIQuXvs.js 28.65 kB │ gzip: 9.16 kB +public/build/assets/lead-vUXgd2g8.js 29.03 kB │ gzip: 9.96 kB +public/build/assets/preparation-ChwKCAm0.js 29.25 kB │ gzip: 8.51 kB +public/build/assets/form-G3wES2VJ.js 29.80 kB │ gzip: 8.04 kB +public/build/assets/profile-MnSD-8CY.js 30.71 kB │ gzip: 9.33 kB +public/build/assets/welcome-DS4fmTKK.js 30.73 kB │ gzip: 6.49 kB +public/build/assets/manage-GV_WvYCX.js 31.17 kB │ gzip: 7.63 kB +public/build/assets/security-CY6Mu2UR.js 32.11 kB │ gzip: 10.06 kB +public/build/assets/editor-CWbYf7YK.js 35.03 kB │ gzip: 11.76 kB +public/build/assets/case-Bpi6HtJI.js 37.38 kB │ gzip: 10.33 kB +public/build/assets/room-Bg8k9V54.js 38.25 kB │ gzip: 12.14 kB +public/build/assets/simulation-form-CVV000gF.js 39.43 kB │ gzip: 10.27 kB +public/build/assets/request-B4WvIFJy.js 41.86 kB │ gzip: 11.29 kB +public/build/assets/detail-DtYLHmDW.js 46.42 kB │ gzip: 15.18 kB +public/build/assets/PortalInvestidor-BE-j5EhK.js 48.72 kB │ gzip: 14.86 kB +public/build/assets/business-financial-plan-s1uoiktr.js 49.19 kB │ gzip: 11.98 kB +public/build/assets/catalogue-bVIBH9Td.js 50.02 kB │ gzip: 16.10 kB +public/build/assets/dropdown-menu-DeBy_kF_.js 57.05 kB │ gzip: 19.02 kB +public/build/assets/zone-DkB12lZg.js 62.42 kB │ gzip: 15.63 kB +public/build/assets/show-Dzl53Tk_.js 68.49 kB │ gzip: 21.16 kB +public/build/assets/opportunity-draft-C9kNlVYV.js 70.65 kB │ gzip: 20.89 kB +public/build/assets/document-zip-bqFSTgG4.js 95.97 kB │ gzip: 28.50 kB +public/build/assets/app-wUAfzkDv.js 147.52 kB │ gzip: 45.59 kB +public/build/assets/leaflet-src-CUWrUTR2.js 148.82 kB │ gzip: 43.39 kB +public/build/assets/dist-BRfsww6z.js 307.99 kB │ gzip: 96.67 kB +public/build/assets/document-word-CqTGSyXu.js 403.66 kB │ gzip: 115.44 kB +public/build/assets/services-C4DSfyGy.js 965.96 kB │ gzip: 226.50 kB +public/build/assets/project-dossier-a3IvmE5B.js 1,009.94 kB │ gzip: 274.44 kB + +✓ built in 32.12s +[plugin builtin:vite-reporter] +(!) Some chunks are larger than 500 kB after minification. Consider: +- Using dynamic import() to code-split the application +- Use build.rolldownOptions.output.codeSplitting to improve chunking: +https://rolldown.rs/reference/OutputOptions.codeSplitting +- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit. +[PLUGIN_TIMINGS] Your build spent 98% of 32.1s inside plugin hooks (31.4s). +Measured inside the callback, so queue time is excluded and time the callback itself awaited is not: + - @rolldown/plugin-babel transform (61%, 19.7s, 412 calls) + - @laravel/vite-plugin-wayfinder buildStart (20%, 6.6s, 1 call) + - @tailwindcss/vite:generate:build transform (14%, 4.4s, 3 calls) + - vite:css transform (11%, 3.4s, 3 calls) +See https://rolldown.rs/reference/InputOptions.checks#plugintimings for more details. diff --git a/outputs/offers-exact-install-20261114/corrected-regression.log b/outputs/offers-exact-install-20261114/corrected-regression.log new file mode 100644 index 00000000..bae36d1d --- /dev/null +++ b/outputs/offers-exact-install-20261114/corrected-regression.log @@ -0,0 +1 @@ +{"tool":"phpunit","result":"passed","tests":28,"passed":28,"assertions":403,"duration_ms":266357} diff --git a/outputs/offers-exact-install-20261114/corrected-regression.xml b/outputs/offers-exact-install-20261114/corrected-regression.xml new file mode 100644 index 00000000..2a389a1a --- /dev/null +++ b/outputs/offers-exact-install-20261114/corrected-regression.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/outputs/offers-exact-install-20261114/corrected-types-after-build.log b/outputs/offers-exact-install-20261114/corrected-types-after-build.log new file mode 100644 index 00000000..dc5a08e5 --- /dev/null +++ b/outputs/offers-exact-install-20261114/corrected-types-after-build.log @@ -0,0 +1,3 @@ + +> types:check +> tsc --noEmit diff --git a/outputs/offers-exact-install-20261114/corrected-types.log b/outputs/offers-exact-install-20261114/corrected-types.log new file mode 100644 index 00000000..dc5a08e5 --- /dev/null +++ b/outputs/offers-exact-install-20261114/corrected-types.log @@ -0,0 +1,3 @@ + +> types:check +> tsc --noEmit diff --git a/outputs/offers-exact-install-20261114/data-integrity.json b/outputs/offers-exact-install-20261114/data-integrity.json new file mode 100644 index 00000000..6bbaab9c --- /dev/null +++ b/outputs/offers-exact-install-20261114/data-integrity.json @@ -0,0 +1,9 @@ +{ + "database_tables_rechecked": 219, + "tables_changed_since_backup": [], + "release_files_rechecked": 417, + "release_files_changed": [], + "installed_revision": "96f510965f70581a4b41dd94463f598b77dd7cf5", + "active_data_writes": 0, + "source_read_only_transactions": true +} diff --git a/outputs/offers-exact-install-20261114/exact-sha-start.json b/outputs/offers-exact-install-20261114/exact-sha-start.json new file mode 100644 index 00000000..0ed6ceca --- /dev/null +++ b/outputs/offers-exact-install-20261114/exact-sha-start.json @@ -0,0 +1,7 @@ +{ + "remote_main_verified": "3558647e8d82092cd0e31eefbe8b9e5e9eacf573", + "guarded_executor_started_for_exact_revision": true, + "automatic_path": "paused", + "lock_held": true, + "other_revisions_forbidden": true +} diff --git a/outputs/offers-exact-install-20261114/executor-failure.json b/outputs/offers-exact-install-20261114/executor-failure.json new file mode 100644 index 00000000..c69a5cc5 --- /dev/null +++ b/outputs/offers-exact-install-20261114/executor-failure.json @@ -0,0 +1,58 @@ +{ + "executor_status": { + "state": "stopped", + "target": "3558647e8d82092cd0e31eefbe8b9e5e9eacf573", + "previous": "96f510965f70581a4b41dd94463f598b77dd7cf5", + "lock_held": false, + "error_type": "RuntimeError", + "error": "Verification command failed: npm (see protected build log)", + "installed_revision": "96f510965f70581a4b41dd94463f598b77dd7cf5", + "automatic_path_restored": true + }, + "recovery": { + "state": "failed_before_promotion_recovered", + "authorised_revision": "3558647e8d82092cd0e31eefbe8b9e5e9eacf573", + "installed_revision_preserved": "96f510965f70581a4b41dd94463f598b77dd7cf5", + "source_drift": false, + "live_promotion": false, + "rollback_needed": false, + "migration_executed": false, + "lock_released": true, + "automatic_path_restored": true, + "pending_requests": 0, + "generated_collision": [ + { + "line": 180, + "code": "export const reportForm = (args: { id: string | number } | [id: string | number ] | string | number, options?: RouteQueryOptions): RouteDefinition<'get'> => ({" + }, + { + "line": 242, + "code": "const reportFormForm = (args: { id: string | number } | [id: string | number ] | string | number, options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({" + }, + { + "line": 331, + "code": "const reportForm = (args: { id: string | number } | [id: string | number ] | string | number, options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({" + } + ], + "failed_release_preserved": [ + "/var/www/investmoz-homologacao/releases/3558647e8d82092cd0e31eefbe8b9e5e9eacf573-a4916dfe" + ], + "operational_data_writes": 0, + "main_not_reverted_or_force_pushed": true + }, + "schema_test_results": [ + "OK (1 test, 3106 assertions)" + ], + "typescript_errors": [ + "resources/js/actions/App/Http/Controllers/PrivateOfferOperationsController.ts(180,14): error TS2395: Individual declarations in merged declaration 'reportForm' must be all exported or all local.", + "resources/js/actions/App/Http/Controllers/PrivateOfferOperationsController.ts(331,7): error TS2395: Individual declarations in merged declaration 'reportForm' must be all exported or all local." + ], + "npm_build_passed": true, + "typed_check_passed": false, + "promotion_occurred": false, + "installed": "96f510965f70581a4b41dd94463f598b77dd7cf5", + "automatic_path": "active", + "deploy_service": "inactive", + "pending_requests": 0, + "served_revision": "96f510965f70581a4b41dd94463f598b77dd7cf5" +} diff --git a/outputs/offers-exact-install-20261114/guarded-executor-used.py b/outputs/offers-exact-install-20261114/guarded-executor-used.py new file mode 100644 index 00000000..725c1fd0 --- /dev/null +++ b/outputs/offers-exact-install-20261114/guarded-executor-used.py @@ -0,0 +1,51 @@ +import pathlib,os,json,time,fcntl,importlib.util,uuid,sys +TARGET='3558647e8d82092cd0e31eefbe8b9e5e9eacf573';OLD='96f510965f70581a4b41dd94463f598b77dd7cf5' +operation=pathlib.Path('/var/lib/investmoz-deploy/offers-exact-3558647e-20261114') +spec=importlib.util.spec_from_file_location('investmoz_existing_pipeline','/var/www/deploy/investmoz-pipeline.py');module=importlib.util.module_from_spec(spec);spec.loader.exec_module(module) +config=json.loads(pathlib.Path('/etc/investmoz-deploy/delivery.json').read_text());assert config['target_url']=='https://teste-investidor.tempo.co.mz' and config['branch']=='main' +runner=module.Delivery(config);state=pathlib.Path(config['state_root']) +def status(value,**extra): + (operation/'status.json').write_text(json.dumps({'state':value,'target':TARGET,'previous':OLD,'lock_held':True,**extra})) +with (state/'delivery.lock').open('a') as lock: + fcntl.flock(lock,fcntl.LOCK_EX|fcntl.LOCK_NB) + try: + assert json.loads((state/'installed.json').read_text())['commit']==OLD + assert not list((state/'requests').glob('*.json')) + status('reserved_waiting_backup_and_fast_forward',installation_started=False) + deadline=time.monotonic()+1200 + while not (operation/'go.json').exists(): + if (operation/'abort.json').exists():raise RuntimeError('Authorised operation cancelled before installation') + if time.monotonic()>deadline:raise RuntimeError('Reservation timed out without starting installation') + time.sleep(1) + proof=json.loads((operation/'go.json').read_text());assert proof['target']==TARGET and proof['backup_restore_verified'] is True + original_latest=runner.latest + def pinned_latest(): + actual=original_latest() + if actual!=TARGET:raise RuntimeError('MAIN_REVISION_MISMATCH: refusing every other revision') + return actual + runner.latest=pinned_latest + assert pinned_latest()==TARGET + runner.git('merge-base','--is-ancestor',OLD,TARGET) + assert all(x.stem==TARGET for x in (state/'requests').glob('*.json')) + with (operation/'build.log').open('wb') as log: + runner.log=log;status('installing_exact_revision',installation_started=True) + result=runner.deliver(TARGET);runner.log=None + assert result.get('commit')==TARGET and result.get('status') in ['installed','already_installed'] + assert json.loads((state/'installed.json').read_text())['commit']==TARGET + (operation/'executor-result.json').write_text(json.dumps(result,indent=2)) + status('installed_waiting_postverification',installation_started=True,installed_revision=TARGET) + deadline=time.monotonic()+1800 + while not (operation/'finish.json').exists(): + if (operation/'abort.json').exists():raise RuntimeError('Postverification requires recovery; watcher remains paused') + if time.monotonic()>deadline:raise RuntimeError('Postverification timed out; watcher remains paused') + time.sleep(1) + assert json.loads((operation/'finish.json').read_text())['postverified'] is True + assert pinned_latest()==TARGET + requests=list((state/'requests').glob('*.json'));assert all(x.stem==TARGET for x in requests) + for item in requests:item.rename(state/'processed'/(item.stem+'-exact-offers-'+uuid.uuid4().hex[:8]+'.json')) + status('verified_complete',installation_started=True,installed_revision=TARGET) + except Exception as error: + runner.log=None + status('stopped',error_type=type(error).__name__,error=str(error),installed_revision=json.loads((state/'installed.json').read_text()).get('commit')) + raise + finally:fcntl.flock(lock,fcntl.LOCK_UN) diff --git a/outputs/offers-exact-install-20261114/qa-result.json b/outputs/offers-exact-install-20261114/qa-result.json new file mode 100644 index 00000000..14856f95 --- /dev/null +++ b/outputs/offers-exact-install-20261114/qa-result.json @@ -0,0 +1,95 @@ +{ + "authorised_revision": "3558647e8d82092cd0e31eefbe8b9e5e9eacf573", + "main_fast_forward_received_exactly": true, + "main_after_attempt": "3558647e8d82092cd0e31eefbe8b9e5e9eacf573", + "installed_and_served_revision": "96f510965f70581a4b41dd94463f598b77dd7cf5", + "installation_result": "FAILED_BEFORE_PROMOTION", + "failure": "Wayfinder form variants generated reportForm twice: GET action and POST report helper. TS2395 stopped the existing executor.", + "live_source_and_data_preserved": { + "tables": 219, + "files": 417, + "all_unchanged": true + }, + "rollback_needed": false, + "automatic_path_restored": true, + "pending_requests": 0, + "operational_migrations": false, + "mne_changed": false, + "permissions_changed": false, + "public_offers_activated": false, + "external_notifications_activated": false, + "payments_activated": false, + "remediation_scope": "QA only: rename GET controller action to reportPage and adjust route mapping; preserve URLs, auth, data, services and all five phases. No new push or installation.", + "corrected_verification": { + "production_wayfinder_generation": "passed with form variants, no QA skip", + "normal_production_build": "passed", + "typescript_after_build": "passed", + "phpstan": "full analysis passed, zero errors", + "pint": "passed", + "phpunit": { + "tests": 28, + "assertions": 403, + "errors": 0, + "failures": 0, + "suites": [ + { + "name": "Tests\\Feature\\PrivateOfferOperationsTest", + "tests": "13", + "assertions": "180", + "failures": "0", + "errors": "0" + }, + { + "name": "Tests\\Feature\\PrivateOfferConfidentialityTest", + "tests": "11", + "assertions": "161", + "failures": "0", + "errors": "0" + }, + { + "name": "Tests\\Feature\\OfferInvestmentAcceptanceAuditTest", + "tests": "4", + "assertions": "62", + "failures": "0", + "errors": "0" + } + ] + }, + "test_database": "offers_wayfinder_fix_20261114_test, loopback:55441", + "user_preview_database_and_accepted_evidence_preserved": true + }, + "requires_new_exact_revision_authorisation": true, + "evidence_hash_encoding": "SHA256 of UTF-8 text with Git LF normalisation", + "evidence_sha256": { + "backup-summary.json": "a67f9bfb9229b8622607bf0e43deb76ee3d2161209a465da5dcb89b233e363a3", + "corrected-integrated-report-input.json": "e41bc34459b1ff94cbf5050c36e56634bae0c0ab591f0778b3ed0646824a7a85", + "corrected-phpstan.log": "c10f74fb840de989bba7e9c2dfee7f8419b5d2ac0cc0daf18a4a187f6530aa43", + "corrected-production-build.log": "7e2dfa067638e1c9adf6fbdd40e04ba83caa5f9fd922b48d2a2f0cb02bf6a987", + "corrected-regression.log": "eb3f9b8535270480ec764a46fb4c2942027128a28cd08b898be2f5e61ef4e4a9", + "corrected-regression.xml": "d3a8675085940d4dffebd46c91559dcdfaf8fdf74801e8af8502e1c332676599", + "corrected-types-after-build.log": "b59cdb3ff539a29c8ae6c37772ecc1a93a5266c49959d408f16b17487b7ac755", + "corrected-types.log": "b59cdb3ff539a29c8ae6c37772ecc1a93a5266c49959d408f16b17487b7ac755", + "data-integrity.json": "d3bdd17f1c28f7e54104a65fde84b58615a1a0cdd43651a9e9bb99bd62f956ad", + "exact-sha-start.json": "726f44fe33dadeebe378bd0fecd70af3d63d8705151bec7708b35b6600c3d38b", + "executor-failure.json": "7fbf9a0e605f347f1e7b3fa2abd68e38776ef2b9296528331bff03cb63fab168", + "guarded-executor-used.py": "b9a34edefd4de3f6a6077fa06b3eb28641b3ab4d79e60ead025299d02ddc4d00", + "recovery.json": "e7c0ecab88759b40bda6d5856cfbbb856f598ac6bc808ff38524e9c5eb35a2d4", + "reservation-context.json": "b83e5c1ba9ebaa5a6568e49c05e3707b642b8c248d8b47c71ece7a5a80b8bc02", + "reservation.json": "5d544d573d12f470d6ff8eec16b8ba6582dd151ef6bf1c49206ae2d935691346", + "restore-summary.json": "c7ac5cc3bee9a456127b27aff87193739b2d1380e55eb8f14355a1a66db078ba", + "safeguard-verified.json": "3e8b37dc60ff110a8731834bcfa680e584a330015912692312f012bac61f8689", + "wayfinder-generation.log": "0fe46f117980a58f4e45f763d67dcfc5e1bc221809ec089a3f787c856fca9267" + }, + "corrective_source_sha256": { + "app/Http/Controllers/PrivateOfferOperationsController.php": "15da904c466be9bb38fa9a673beff55816026caf72569bc4289d399c77f10cce", + "routes/web.php": "50dbec32d17dbbd334298eb0bf77585b15d98781c9368fcb3f398642b83b2168" + }, + "functional_delta_since_authorised_revision": [ + "app/Http/Controllers/PrivateOfferOperationsController.php", + "routes/web.php" + ], + "generated_symbols_unique": { + "reportForm": 1, + "reportPage": 1 + } +} diff --git a/outputs/offers-exact-install-20261114/recovery.json b/outputs/offers-exact-install-20261114/recovery.json new file mode 100644 index 00000000..c0ebc4e7 --- /dev/null +++ b/outputs/offers-exact-install-20261114/recovery.json @@ -0,0 +1,31 @@ +{ + "state": "failed_before_promotion_recovered", + "authorised_revision": "3558647e8d82092cd0e31eefbe8b9e5e9eacf573", + "installed_revision_preserved": "96f510965f70581a4b41dd94463f598b77dd7cf5", + "source_drift": false, + "live_promotion": false, + "rollback_needed": false, + "migration_executed": false, + "lock_released": true, + "automatic_path_restored": true, + "pending_requests": 0, + "generated_collision": [ + { + "line": 180, + "code": "export const reportForm = (args: { id: string | number } | [id: string | number ] | string | number, options?: RouteQueryOptions): RouteDefinition<'get'> => ({" + }, + { + "line": 242, + "code": "const reportFormForm = (args: { id: string | number } | [id: string | number ] | string | number, options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({" + }, + { + "line": 331, + "code": "const reportForm = (args: { id: string | number } | [id: string | number ] | string | number, options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({" + } + ], + "failed_release_preserved": [ + "/var/www/investmoz-homologacao/releases/3558647e8d82092cd0e31eefbe8b9e5e9eacf573-a4916dfe" + ], + "operational_data_writes": 0, + "main_not_reverted_or_force_pushed": true +} diff --git a/outputs/offers-exact-install-20261114/reservation-context.json b/outputs/offers-exact-install-20261114/reservation-context.json new file mode 100644 index 00000000..fda94253 --- /dev/null +++ b/outputs/offers-exact-install-20261114/reservation-context.json @@ -0,0 +1,7 @@ +{ + "temporary_reservation_relaunched_before_build": true, + "executor_umask_preserved": "0027", + "authorised_webhook_requests_reserved": 1, + "served_revision": "96f51096", + "installation_started": false +} diff --git a/outputs/offers-exact-install-20261114/reservation.json b/outputs/offers-exact-install-20261114/reservation.json new file mode 100644 index 00000000..33e6a11a --- /dev/null +++ b/outputs/offers-exact-install-20261114/reservation.json @@ -0,0 +1,7 @@ +{ + "watcher": "paused", + "served_revision_preserved": "96f51096", + "reservation_unit": "investmoz-offers-exact-3558647e-20261114", + "automatic_latest_loop_not_used": true, + "existing_executor_delegated_without_modification": true +} diff --git a/outputs/offers-exact-install-20261114/restore-summary.json b/outputs/offers-exact-install-20261114/restore-summary.json new file mode 100644 index 00000000..64e05e7f --- /dev/null +++ b/outputs/offers-exact-install-20261114/restore-summary.json @@ -0,0 +1,16 @@ +{ + "restore_verified": true, + "all_table_counts_and_checksums_match": true, + "tables": 219, + "isolated_network": "none", + "isolated_database": "offers_install_restore_20261114_test", + "isolated_port": 55441, + "schema_changes": 0, + "operational_data_writes": 0, + "files_restored_and_verified": 417, + "encryption": { + "encrypted_originals_recovered": 0, + "mfa_envelopes_recovered": 2, + "preserved_keys_verified": true + } +} diff --git a/outputs/offers-exact-install-20261114/safeguard-verified.json b/outputs/offers-exact-install-20261114/safeguard-verified.json new file mode 100644 index 00000000..683c44f9 --- /dev/null +++ b/outputs/offers-exact-install-20261114/safeguard-verified.json @@ -0,0 +1,12 @@ +{ + "backup_restore_verified": true, + "tables": 219, + "files": 417, + "dump_sha256": "88152dc39367f5e59eb072f63b44d3a949e93d73ae855eccb33c3c0b9e37bf6c", + "files_sha256": "aa6248e0eec3d27d58a4bbb3c16848a70dcb3524e6cafc6340b682984a8bbdb3", + "release_drift": false, + "exclusive_lock": true, + "automatic_path": "paused", + "pending_requests": 0, + "installation_started": false +} diff --git a/outputs/offers-exact-install-20261114/wayfinder-generation.log b/outputs/offers-exact-install-20261114/wayfinder-generation.log new file mode 100644 index 00000000..e176641c --- /dev/null +++ b/outputs/offers-exact-install-20261114/wayfinder-generation.log @@ -0,0 +1,4 @@ + + [Wayfinder] Generated actions in C:\laragon\www\portal-investidor-qa-editorial-20261113\resources\js\actions + + [Wayfinder] Generated routes in C:\laragon\www\portal-investidor-qa-editorial-20261113\resources\js\routes diff --git a/routes/web.php b/routes/web.php index 1a267973..a722dce1 100644 --- a/routes/web.php +++ b/routes/web.php @@ -255,7 +255,7 @@ Route::middleware(['auth', 'verified', EnsurePortalProfiles::class])->group(func Route::get('/{id}/nda', [$offers, 'nda'])->whereNumber('id'); Route::get('/{id}/operacoes', [PrivateOfferOperationsController::class, 'show'])->whereNumber('id'); Route::post('/{id}/operacoes', [PrivateOfferOperationsController::class, 'owner'])->whereNumber('id'); - Route::get('/{id}/denunciar', [PrivateOfferOperationsController::class, 'reportForm'])->whereNumber('id'); + Route::get('/{id}/denunciar', [PrivateOfferOperationsController::class, 'reportPage'])->whereNumber('id'); Route::post('/{id}/denuncias', [PrivateOfferOperationsController::class, 'report'])->whereNumber('id'); Route::post('/{id}/denuncias/{reportId}', [PrivateOfferOperationsController::class, 'handleReport'])->whereNumber('id')->whereUuid('reportId'); Route::post('/{id}/destaque-administrativo', [PrivateOfferOperationsController::class, 'highlight'])->whereNumber('id');