diff --git a/docs/investmoz/unification/traceability-and-manual.md b/docs/investmoz/unification/traceability-and-manual.md
index 3491a5dd..18a2df70 100644
--- a/docs/investmoz/unification/traceability-and-manual.md
+++ b/docs/investmoz/unification/traceability-and-manual.md
@@ -10208,3 +10208,6 @@ Após `ed2fd86f`, foi autorizada exclusivamente a correcção da continuidade. `
# Preparação final de homologação privada das Ofertas — 14/11/2026
A Tempo aceitou tecnicamente `9a014268` e autorizou apenas preparação. Parecer em `../v2/auditoria-portal/ofertas-prontidao-homologacao-20261114.md`: integração privada em QA demonstrada, 48 hashes dos recibos F5/correcção conferidos e bundle Git local da candidata verificado. Sem diferenças de migrações/locks face ao recibo histórico `96f51096`; destino actual ainda por conferir. Homologação privada recomendável com publicação fechada, condicionada a revisão/schema/runtime reais, backup/restauro actual, delta e reversão compatível, e nova autorização expressa. GD/WebP ausente no PHP QA bloqueia derivadas, preservando originais; visual/móvel, email real e decisões jurídicas mantêm pendências próprias. Ensaio de correio preparado com dados sintéticos e caixa de teste a designar, sem fila/destinatários operacionais. Nenhuma instalação, migração, alteração operacional, envio de email ou activação pública nesta preparação. RF-MN-003 e matriz final distinguem aprovação técnica, instalação e publicação.
+# Menus das Ofertas uniformizados na prévia QA — 14/11/2026
+
+Por pedido expresso da Tempo durante a conferência, a navegação privada das Ofertas reutiliza o padrão horizontal com dropdown do portal. Área de trabalho → Ofertas agrupa consulta/preparação conforme os acessos existentes; o módulo agrupa Ofertas, estados e acompanhamento em dropdowns responsivos. Mudar de estado conserva os filtros de acompanhamento/denúncias. Todas as páginas Ofertas usam o mesmo enquadramento PortalNavigation. Não foram alteradas permissões, rotas, publicação ou dados. Passaram 29 testes de navegação, tipos, lint focado e build QA; um aviso de lint preexistente fora do delta foi preservado. A lista e os dois exemplos já existentes responderam HTTP 200 com os novos assets, mantendo a sessão e os dados da prévia. Conferência visual pelo utilizador pendente; sem instalação em homologação. Recibo: `outputs/offers-menu-qa-20261114/qa-result.json`. O bundle anterior `9a014268` permanece preservado e não inclui este novo delta visual.
diff --git a/docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv b/docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv
index 7ffb521b..79c85604 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,Correcao 9a014268 tecnicamente aceite pela Tempo. Preparacao final: 48 hashes F5/correcao e ancestralidade confirmados; bundle local verificado. Integracao privada QA demonstrada; nao equivale a publicacao operacional.,"Para instalar: nova autorizacao expressa, conferir revisao/schema/runtime actuais, backup/restauro actual e reversao compativel. GD/derivadas, visual/movel e email real pendentes; NDA/comprovativos/avisos/prazo e publicador operacional mantem bloqueios dependentes.","Opportunity, PortalProfileAccess, OpportunityProfileWorkflow, OpportunityWorkflowTasks, documents/recursos, auditoria, Dashboard, filtros/mapa/API/CSV existentes; sem cadastro paralelo.",Destino actual nao consultado. Zero diferencas migrations/composer.lock/package-lock.json face ao recibo historico 96f51096 nao comprova schema activo. Caixa de teste para email por designar; sem activar correio partilhado.,"Autorizacao exclusiva de preparacao; parecer favoravel condicionado para homologacao privada com publicacao fechada. Nenhuma instalacao, migracao operacional, concessao de permissoes, email real ou mne.",Tecnica QA aceite; instalacao nao autorizada/executada; publicacao operacional bloqueada. Estados separados no parecer e matriz final.,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,governação e demais cláusulas,14/11/2026 - preparacao final para homologacao privada; sem instalacao ou publicacao,,,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,"Correcao 9a014268 tecnicamente aceite pela Tempo. Preparacao final: 48 hashes F5/correcao e ancestralidade confirmados; bundle local verificado. Integracao privada QA demonstrada; nao equivale a publicacao operacional. Delta visual posterior na previa QA: menus horizontais/dropdown de Ofertas uniformizados, preservando filtros e acessos; 29 testes de navegacao, tipos e build aprovados. Nao incluido no bundle anterior 9a014268.","Para instalar: nova autorizacao expressa, conferir revisao/schema/runtime actuais, backup/restauro actual e reversao compativel. GD/derivadas, visual/movel e email real pendentes; NDA/comprovativos/avisos/prazo e publicador operacional mantem bloqueios dependentes.","Opportunity, PortalProfileAccess, OpportunityProfileWorkflow, OpportunityWorkflowTasks, documents/recursos, auditoria, Dashboard, filtros/mapa/API/CSV existentes; sem cadastro paralelo.",Destino actual nao consultado. Zero diferencas migrations/composer.lock/package-lock.json face ao recibo historico 96f51096 nao comprova schema activo. Caixa de teste para email por designar; sem activar correio partilhado.,"Autorizacao exclusiva de preparacao; parecer favoravel condicionado para homologacao privada com publicacao fechada. Nenhuma instalacao, migracao operacional, concessao de permissoes, email real ou mne.",Tecnica QA aceite; instalacao nao autorizada/executada; publicacao operacional bloqueada. Estados separados no parecer e matriz final.,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,governação e demais cláusulas,14/11/2026 - preparacao final para homologacao privada; sem instalacao ou publicacao,,,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/outputs/offers-menu-qa-20261114/build.log b/outputs/offers-menu-qa-20261114/build.log
new file mode 100644
index 00000000..4ebd4b12
--- /dev/null
+++ b/outputs/offers-menu-qa-20261114/build.log
@@ -0,0 +1,340 @@
+
+> build
+> vp build
+
+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:2 char:30
++ ... _BUILD='1'; npm.cmd run build *> outputs/offers-menu-qa-20261114/buil ...
++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ + CategoryInfo : NotSpecified: ([plugin laravel...le the feature.:String) [], RemoteException
+ + FullyQualifiedErrorId : NativeCommandError
+
+transforming...
+✓ 2849 modules transformed.
+rendering chunks...
+computing gzip size...
+public/build-qa-opportunities/assets/layers-BWBAp2CZ.png 0.69 kB
+public/build-qa-opportunities/assets/layers-2x-Bpkbi35X.png 1.25 kB
+public/build-qa-opportunities/assets/marker-icon-hN30_KVU.png 1.46 kB
+public/build-qa-opportunities/assets/noto-sans-400-normal-BTkUljjl.woff2 13.12 kB
+public/build-qa-opportunities/assets/noto-sans-700-normal-CrvTEWhy.woff2 13.46 kB
+public/build-qa-opportunities/assets/noto-sans-500-normal-DCA2Z9Cj.woff2 13.49 kB
+public/build-qa-opportunities/assets/noto-sans-600-normal-Dkgu5AE5.woff2 13.49 kB
+public/build-qa-opportunities/assets/noto-serif-400-normal-BV_iYGc9.woff2 14.40 kB
+public/build-qa-opportunities/assets/noto-serif-700-normal-CIw17UNa.woff2 15.23 kB
+public/build-qa-opportunities/assets/noto-serif-600-normal-BiuDA9L7.woff2 15.31 kB
+public/build-qa-opportunities/assets/noto-sans-400-normal-DPpKfCgK.woff 16.68 kB
+public/build-qa-opportunities/assets/instrument-sans-400-normal-DRC__1Mx.woff2 16.86 kB
+public/build-qa-opportunities/assets/noto-sans-700-normal-ZyrKABVF.woff 16.95 kB
+public/build-qa-opportunities/assets/noto-sans-500-normal-CDPngY5C.woff 17.09 kB
+public/build-qa-opportunities/assets/noto-sans-600-normal-DVJMj_t0.woff 17.10 kB
+public/build-qa-opportunities/assets/instrument-sans-500-normal-Dk9ku72i.woff2 17.23 kB
+public/build-qa-opportunities/assets/instrument-sans-600-normal-B7fBEWYG.woff2 17.40 kB
+public/build-qa-opportunities/assets/noto-serif-400-normal-DT0cwSa_.woff 17.81 kB
+public/build-qa-opportunities/fonts-manifest.json 18.53 kB │ gzip: 1.23 kB
+public/build-qa-opportunities/assets/noto-serif-700-normal-mX-AlFMT.woff 18.54 kB
+public/build-qa-opportunities/assets/noto-serif-600-normal-RZopCp-J.woff 18.68 kB
+public/build-qa-opportunities/assets/instrument-sans-400-normal-D1W7dsQl.woff 21.24 kB
+public/build-qa-opportunities/assets/instrument-sans-500-normal-Z6ESRlEs.woff 21.65 kB
+public/build-qa-opportunities/assets/instrument-sans-600-normal-B9e8oLYv.woff 21.67 kB
+public/build-qa-opportunities/manifest.json 116.89 kB │ gzip: 12.31 kB
+public/build-qa-opportunities/assets/fonts-CcFLQaQ-.css 7.91 kB │ gzip: 0.65 kB
+public/build-qa-opportunities/assets/investment-catalogue-WaRR19FV.css 8.15 kB │ gzip: 2.00 kB
+public/build-qa-opportunities/assets/interactive-investment-map-Bm3WjoQm.css 10.62 kB │ gzip: 2.65 kB
+public/build-qa-opportunities/assets/app-UznX-FqS.css 157.42 kB │ gzip: 25.28 kB
+public/build-qa-opportunities/assets/input-text-BlEFHnL-.js 0.09 kB │ gzip: 0.10 kB
+public/build-qa-opportunities/assets/check-PcBNn_NG.js 0.12 kB │ gzip: 0.14 kB
+public/build-qa-opportunities/assets/company-comparison-qLTgpXjz.js 0.12 kB │ gzip: 0.13 kB
+public/build-qa-opportunities/assets/chevron-down-Bjkqe1aH.js 0.12 kB │ gzip: 0.14 kB
+public/build-qa-opportunities/assets/chevron-right-K0fOEtTQ.js 0.12 kB │ gzip: 0.14 kB
+public/build-qa-opportunities/assets/display-value-DRR1EAAK.js 0.13 kB │ gzip: 0.12 kB
+public/build-qa-opportunities/assets/value-text-BztaYdGl.js 0.14 kB │ gzip: 0.12 kB
+public/build-qa-opportunities/assets/loader-circle-DS8Tf4er.js 0.14 kB │ gzip: 0.15 kB
+public/build-qa-opportunities/assets/shared-B-QpuOU2.js 0.15 kB │ gzip: 0.13 kB
+public/build-qa-opportunities/assets/arrow-left-DMVHIw8Z.js 0.16 kB │ gzip: 0.16 kB
+public/build-qa-opportunities/assets/arrow-up-right-BIVouzdL.js 0.16 kB │ gzip: 0.15 kB
+public/build-qa-opportunities/assets/search-BRvPeo47.js 0.17 kB │ gzip: 0.16 kB
+public/build-qa-opportunities/assets/circle-check-DckzuBoW.js 0.17 kB │ gzip: 0.16 kB
+public/build-qa-opportunities/assets/product-usage-CHhCL93_.js 0.18 kB │ gzip: 0.17 kB
+public/build-qa-opportunities/assets/editorial-states-Bc7NQzsj.js 0.19 kB │ gzip: 0.16 kB
+public/build-qa-opportunities/assets/types-BoD_IJFv.js 0.19 kB │ gzip: 0.16 kB
+public/build-qa-opportunities/assets/participation-identity-BWabb4yN.js 0.24 kB │ gzip: 0.18 kB
+public/build-qa-opportunities/assets/circle-alert-uV7omYjr.js 0.24 kB │ gzip: 0.18 kB
+public/build-qa-opportunities/assets/eye-CmcEBfxN.js 0.25 kB │ gzip: 0.20 kB
+public/build-qa-opportunities/assets/log-in-Wgc8VLfq.js 0.25 kB │ gzip: 0.22 kB
+public/build-qa-opportunities/assets/partnership-history-CfclSLAo.js 0.27 kB │ gzip: 0.19 kB
+public/build-qa-opportunities/assets/compiler-runtime-sKsOXjDo.js 0.27 kB │ gzip: 0.23 kB
+public/build-qa-opportunities/assets/file-text-CEJtuNfp.js 0.33 kB │ gzip: 0.21 kB
+public/build-qa-opportunities/assets/confirm-Culw9Q-x.js 0.36 kB │ gzip: 0.22 kB
+public/build-qa-opportunities/assets/text-link-BBvcP60s.js 0.40 kB │ gzip: 0.27 kB
+public/build-qa-opportunities/assets/content-management-entry-C_oY4VyW.js 0.42 kB │ gzip: 0.31 kB
+public/build-qa-opportunities/assets/handshake-YqyTTm3a.js 0.44 kB │ gzip: 0.28 kB
+public/build-qa-opportunities/assets/investment-guides-DO58L8zr.js 0.45 kB │ gzip: 0.26 kB
+public/build-qa-opportunities/assets/catalogue-context-Dj8DfFuR.js 0.47 kB │ gzip: 0.30 kB
+public/build-qa-opportunities/assets/operation-key-Dr4VtGxa.js 0.51 kB │ gzip: 0.35 kB
+public/build-qa-opportunities/assets/spinner-Dmx1j41V.js 0.52 kB │ gzip: 0.36 kB
+public/build-qa-opportunities/assets/types-Cxp_Nskt.js 0.55 kB │ gzip: 0.32 kB
+public/build-qa-opportunities/assets/sliders-horizontal-D-4FqAHA.js 0.58 kB │ gzip: 0.26 kB
+public/build-qa-opportunities/assets/page-preparation-guard-B-OckhBt.js 0.59 kB │ gzip: 0.35 kB
+public/build-qa-opportunities/assets/portal-presentation-fH7FShU8.js 0.62 kB │ gzip: 0.38 kB
+public/build-qa-opportunities/assets/confidentiality-C2eqbRBb.js 0.64 kB │ gzip: 0.41 kB
+public/build-qa-opportunities/assets/dist-RzQD0wUd.js 0.68 kB │ gzip: 0.43 kB
+public/build-qa-opportunities/assets/dist-qw3FPjRO.js 0.74 kB │ gzip: 0.49 kB
+public/build-qa-opportunities/assets/labels-DxqjesIG.js 0.74 kB │ gzip: 0.46 kB
+public/build-qa-opportunities/assets/wayfinder-Dp7PqxvV.js 0.89 kB │ gzip: 0.53 kB
+public/build-qa-opportunities/assets/createLucideIcon-oMeAlXbs.js 0.95 kB │ gzip: 0.56 kB
+public/build-qa-opportunities/assets/use-interest-draft-waHUBAew.js 0.99 kB │ gzip: 0.51 kB
+public/build-qa-opportunities/assets/context-documents-Bh7vrWBo.js 1.01 kB │ gzip: 0.57 kB
+public/build-qa-opportunities/assets/label-Dpfg_IeY.js 1.02 kB │ gzip: 0.62 kB
+public/build-qa-opportunities/assets/technical-incident-labels-DlL6bSeE.js 1.02 kB │ gzip: 0.51 kB
+public/build-qa-opportunities/assets/investment-consumer-identity-Cxp_hGfX.js 1.07 kB │ gzip: 0.59 kB
+public/build-qa-opportunities/assets/article-CPPysFRZ.js 1.08 kB │ gzip: 0.65 kB
+public/build-qa-opportunities/assets/search-state-RHLy6yI7.js 1.10 kB │ gzip: 0.68 kB
+public/build-qa-opportunities/assets/rolldown-runtime-Dd_uD5pT.js 1.10 kB │ gzip: 0.62 kB
+public/build-qa-opportunities/assets/catalogue-investment-map-CTNFBreG.js 1.12 kB │ gzip: 0.62 kB
+public/build-qa-opportunities/assets/investment-contexts-BQGiwu9n.js 1.17 kB │ gzip: 0.60 kB
+public/build-qa-opportunities/assets/profile-json-Bza-VQzw.js 1.20 kB │ gzip: 0.72 kB
+public/build-qa-opportunities/assets/document-LUvEPfWd.js 1.23 kB │ gzip: 0.72 kB
+public/build-qa-opportunities/assets/shared-JTxA6RNb.js 1.24 kB │ gzip: 0.74 kB
+public/build-qa-opportunities/assets/public-detail-DLYw1Lrh.js 1.25 kB │ gzip: 0.72 kB
+public/build-qa-opportunities/assets/demographic-context-BMdtlxjJ.js 1.27 kB │ gzip: 0.73 kB
+public/build-qa-opportunities/assets/public-offer-card-CudJyoq4.js 1.30 kB │ gzip: 0.70 kB
+public/build-qa-opportunities/assets/input-BJ-Jg-jz.js 1.37 kB │ gzip: 0.75 kB
+public/build-qa-opportunities/assets/cluster-competitiveness-hNV0FaaW.js 1.37 kB │ gzip: 0.73 kB
+public/build-qa-opportunities/assets/verify-email-n6a1zbAv.js 1.40 kB │ gzip: 0.74 kB
+public/build-qa-opportunities/assets/business-types-SGCXhH6X.js 1.47 kB │ gzip: 0.75 kB
+public/build-qa-opportunities/assets/verification-BOcn3HIw.js 1.48 kB │ gzip: 0.52 kB
+public/build-qa-opportunities/assets/country-select-4uP5BvMf.js 1.49 kB │ gzip: 0.78 kB
+public/build-qa-opportunities/assets/territorial-source-evidence-eKB4ZB36.js 1.53 kB │ gzip: 0.83 kB
+public/build-qa-opportunities/assets/manage-BH66WeT3.js 1.56 kB │ gzip: 0.74 kB
+public/build-qa-opportunities/assets/educational-article-card-0rCqZ1kX.js 1.59 kB │ gzip: 0.72 kB
+public/build-qa-opportunities/assets/partnership-source-links-VfrXk2FZ.js 1.65 kB │ gzip: 0.91 kB
+public/build-qa-opportunities/assets/catalogue-C8vGjaHy.js 1.78 kB │ gzip: 0.96 kB
+public/build-qa-opportunities/assets/technical-incident-notice-CjziWA6m.js 1.79 kB │ gzip: 0.89 kB
+public/build-qa-opportunities/assets/report-DRxtlCFu.js 1.80 kB │ gzip: 0.93 kB
+public/build-qa-opportunities/assets/preparation-index-CdgPdpQ-.js 1.87 kB │ gzip: 0.89 kB
+public/build-qa-opportunities/assets/opportunity-technical-incidents-C4aVbut7.js 1.88 kB │ gzip: 0.98 kB
+public/build-qa-opportunities/assets/password-input-DdsNob7W.js 1.89 kB │ gzip: 1.06 kB
+public/build-qa-opportunities/assets/passkey-verify-ByR3iZeA.js 2.04 kB │ gzip: 1.15 kB
+public/build-qa-opportunities/assets/public-record-offline-BmjvnSLE.js 2.07 kB │ gzip: 1.22 kB
+public/build-qa-opportunities/assets/investors-Di6y94fY.js 2.09 kB │ gzip: 1.15 kB
+public/build-qa-opportunities/assets/forgot-password-DxizqdUw.js 2.10 kB │ gzip: 0.98 kB
+public/build-qa-opportunities/assets/sources-BiAS09SV.js 2.13 kB │ gzip: 1.12 kB
+public/build-qa-opportunities/assets/saved-BppN3tdr.js 2.21 kB │ gzip: 1.10 kB
+public/build-qa-opportunities/assets/zone-map-XsVlgEXC.js 2.26 kB │ gzip: 1.16 kB
+public/build-qa-opportunities/assets/appearance-D9-OrC7t.js 2.36 kB │ gzip: 1.14 kB
+public/build-qa-opportunities/assets/shared-CBJ3c_x-.js 2.37 kB │ gzip: 1.24 kB
+public/build-qa-opportunities/assets/editorial-subjects-C6_MfRSK.js 2.38 kB │ gzip: 1.14 kB
+public/build-qa-opportunities/assets/context-installation-BTustRN8.js 2.39 kB │ gzip: 1.23 kB
+public/build-qa-opportunities/assets/workspace-4_R1CLYI.js 2.40 kB │ gzip: 1.20 kB
+public/build-qa-opportunities/assets/reset-password-Cn0DRbDq.js 2.43 kB │ gzip: 0.98 kB
+public/build-qa-opportunities/assets/public-document-content-BHvs9J7S.js 2.47 kB │ gzip: 0.80 kB
+public/build-qa-opportunities/assets/manage-C2CmrtWp.js 2.47 kB │ gzip: 1.10 kB
+public/build-qa-opportunities/assets/confirm-password-DkwmRtM5.js 2.47 kB │ gzip: 1.06 kB
+public/build-qa-opportunities/assets/structures-Dr2nXdub.js 2.49 kB │ gzip: 1.35 kB
+public/build-qa-opportunities/assets/bootstrap-confirmation-9RmA5-Yz.js 2.55 kB │ gzip: 1.19 kB
+public/build-qa-opportunities/assets/territory-associations-GTcLYnfG.js 2.55 kB │ gzip: 1.11 kB
+public/build-qa-opportunities/assets/installation-Dly8Xg6e.js 2.59 kB │ gzip: 1.28 kB
+public/build-qa-opportunities/assets/technical-support-DlW3Jv7q.js 2.60 kB │ gzip: 1.18 kB
+public/build-qa-opportunities/assets/management-CvdeRZYq.js 2.68 kB │ gzip: 1.18 kB
+public/build-qa-opportunities/assets/experiments-BUMjL12A.js 2.73 kB │ gzip: 1.31 kB
+public/build-qa-opportunities/assets/password-CB_NxgQN.js 2.73 kB │ gzip: 0.73 kB
+public/build-qa-opportunities/assets/opportunity-install-B232n6lM.js 2.75 kB │ gzip: 1.34 kB
+public/build-qa-opportunities/assets/dist-BobFCjoG.js 2.92 kB │ gzip: 1.29 kB
+public/build-qa-opportunities/assets/offer-navigation-DLl-_mMp.js 2.98 kB │ gzip: 1.11 kB
+public/build-qa-opportunities/assets/portal-api-CpQBRfcu.js 2.98 kB │ gzip: 1.50 kB
+public/build-qa-opportunities/assets/two-factor-challenge-xfKPtZXs.js 3.24 kB │ gzip: 1.52 kB
+public/build-qa-opportunities/assets/territory-geometry-preview-4JCbJT47.js 3.25 kB │ gzip: 1.47 kB
+public/build-qa-opportunities/assets/workspace-C_G1PW62.js 3.29 kB │ gzip: 1.44 kB
+public/build-qa-opportunities/assets/partnership-agreement-instrument-CCnuZNBy.js 3.43 kB │ gzip: 1.49 kB
+public/build-qa-opportunities/assets/funding-classification-DheUcd9F.js 3.44 kB │ gzip: 1.64 kB
+public/build-qa-opportunities/assets/guide-mndEuKFT.js 3.45 kB │ gzip: 1.43 kB
+public/build-qa-opportunities/assets/history-DSPDM8gM.js 3.46 kB │ gzip: 1.70 kB
+public/build-qa-opportunities/assets/audit-Xdo8qR4z.js 3.51 kB │ gzip: 1.69 kB
+public/build-qa-opportunities/assets/show-BJFvXI_v.js 3.60 kB │ gzip: 1.82 kB
+public/build-qa-opportunities/assets/demography-C6B5IZD_.js 3.70 kB │ gzip: 1.79 kB
+public/build-qa-opportunities/assets/corridor-agribusiness-BcIVf-hW.js 3.72 kB │ gzip: 1.53 kB
+public/build-qa-opportunities/assets/business-opportunity-DgZSIWou.js 3.73 kB │ gzip: 1.63 kB
+public/build-qa-opportunities/assets/management-access-D4VE9LUB.js 3.75 kB │ gzip: 1.43 kB
+public/build-qa-opportunities/assets/businesses-BSqviy8L.js 3.76 kB │ gzip: 1.57 kB
+public/build-qa-opportunities/assets/editorial-reading-DUFQmJtD.js 3.89 kB │ gzip: 1.68 kB
+public/build-qa-opportunities/assets/catalog-B6dpdVsW.js 3.95 kB │ gzip: 1.51 kB
+public/build-qa-opportunities/assets/desk-assignments-CfWpiIpK.js 3.99 kB │ gzip: 1.95 kB
+public/build-qa-opportunities/assets/dashboard-CxoTLkSg.js 3.99 kB │ gzip: 1.61 kB
+public/build-qa-opportunities/assets/investment-context-cards-gJe_oyxw.js 4.05 kB │ gzip: 1.84 kB
+public/build-qa-opportunities/assets/shared-OMougC44.js 4.09 kB │ gzip: 2.05 kB
+public/build-qa-opportunities/assets/opportunity-contact-form-Cb6iDQ1U.js 4.10 kB │ gzip: 1.67 kB
+public/build-qa-opportunities/assets/demographic-evidence-DGwOnf5g.js 4.38 kB │ gzip: 1.84 kB
+public/build-qa-opportunities/assets/conversation-DmGmFHQ_.js 4.42 kB │ gzip: 1.95 kB
+public/build-qa-opportunities/assets/portfolio-BCzBidHt.js 4.45 kB │ gzip: 1.74 kB
+public/build-qa-opportunities/assets/reference-CC7DXgRa.js 4.46 kB │ gzip: 2.00 kB
+public/build-qa-opportunities/assets/territory-geometry-import-BnSl5jzG.js 4.49 kB │ gzip: 1.90 kB
+public/build-qa-opportunities/assets/opportunity-origin-D3o6OTRg.js 4.64 kB │ gzip: 2.07 kB
+public/build-qa-opportunities/assets/context-inheritance-dd0VgP8h.js 4.64 kB │ gzip: 2.00 kB
+public/build-qa-opportunities/assets/installation-CnslW5oi.js 4.67 kB │ gzip: 1.95 kB
+public/build-qa-opportunities/assets/opportunities-YsMGMCR_.js 4.73 kB │ gzip: 1.77 kB
+public/build-qa-opportunities/assets/references-BMPGGgyS.js 4.79 kB │ gzip: 2.22 kB
+public/build-qa-opportunities/assets/offer-confidential-access-Bu9EgZ3d.js 4.83 kB │ gzip: 1.91 kB
+public/build-qa-opportunities/assets/opportunity-curation-7Gt2cWer.js 4.88 kB │ gzip: 2.04 kB
+public/build-qa-opportunities/assets/business-verifications-CI0i9uoo.js 4.90 kB │ gzip: 1.71 kB
+public/build-qa-opportunities/assets/crm-edit-comparison-Db53T7I7.js 4.91 kB │ gzip: 1.99 kB
+public/build-qa-opportunities/assets/investment-complements-BxgtKBx2.js 5.00 kB │ gzip: 2.05 kB
+public/build-qa-opportunities/assets/service-CbUB6_Ll.js 5.05 kB │ gzip: 2.33 kB
+public/build-qa-opportunities/assets/agreement-history-BfSa8E7Q.js 5.13 kB │ gzip: 2.10 kB
+public/build-qa-opportunities/assets/catalogue-Cd-RNIG1.js 5.13 kB │ gzip: 2.54 kB
+public/build-qa-opportunities/assets/workspace-BeyUwWtD.js 5.20 kB │ gzip: 2.18 kB
+public/build-qa-opportunities/assets/article-editor-ByLxbPbJ.js 5.25 kB │ gzip: 2.20 kB
+public/build-qa-opportunities/assets/context-start-BcJpYa9I.js 5.46 kB │ gzip: 2.09 kB
+public/build-qa-opportunities/assets/economic-references-C7dNVUC6.js 5.61 kB │ gzip: 2.52 kB
+public/build-qa-opportunities/assets/convert-B3LtI2n6.js 5.81 kB │ gzip: 2.40 kB
+public/build-qa-opportunities/assets/editorial-subject-form-B2W8E2NJ.js 5.87 kB │ gzip: 2.66 kB
+public/build-qa-opportunities/assets/public-sector-cards-Esb1aTm6.js 5.94 kB │ gzip: 2.55 kB
+public/build-qa-opportunities/assets/demography-install-B57rikBv.js 6.05 kB │ gzip: 2.50 kB
+public/build-qa-opportunities/assets/context-DX8H9xrC.js 6.06 kB │ gzip: 2.65 kB
+public/build-qa-opportunities/assets/request-CEHLhPPo.js 6.10 kB │ gzip: 2.41 kB
+public/build-qa-opportunities/assets/structure-geography-Bo85NWTp.js 6.12 kB │ gzip: 2.22 kB
+public/build-qa-opportunities/assets/editorial-workflow-DYYZzXOw.js 6.22 kB │ gzip: 2.29 kB
+public/build-qa-opportunities/assets/investment-map-panel-B1xwyvFR.js 6.27 kB │ gzip: 2.88 kB
+public/build-qa-opportunities/assets/procurement-PtO-r9qV.js 6.35 kB │ gzip: 2.73 kB
+public/build-qa-opportunities/assets/register-DyaxliT7.js 6.43 kB │ gzip: 2.71 kB
+public/build-qa-opportunities/assets/funding-BslGAfF5.js 6.49 kB │ gzip: 2.00 kB
+public/build-qa-opportunities/assets/leads-Bu2UK8ON.js 6.56 kB │ gzip: 2.82 kB
+public/build-qa-opportunities/assets/business-marketplace-DGH7B-E2.js 6.59 kB │ gzip: 2.51 kB
+public/build-qa-opportunities/assets/interest-xqtiIFPC.js 6.63 kB │ gzip: 2.23 kB
+public/build-qa-opportunities/assets/demography-BxaBdOBx.js 6.66 kB │ gzip: 2.51 kB
+public/build-qa-opportunities/assets/fiscal-qa-review-CEzw2OQP.js 6.75 kB │ gzip: 2.70 kB
+public/build-qa-opportunities/assets/business-interest-CZgFv7wk.js 6.82 kB │ gzip: 2.60 kB
+public/build-qa-opportunities/assets/interests-BcpPowrJ.js 6.83 kB │ gzip: 2.78 kB
+public/build-qa-opportunities/assets/catalogue-GV7YGM69.js 6.84 kB │ gzip: 2.81 kB
+public/build-qa-opportunities/assets/company-comparison-CLzhILGo.js 6.92 kB │ gzip: 2.60 kB
+public/build-qa-opportunities/assets/business-classification-CbEGwmnS.js 7.01 kB │ gzip: 2.57 kB
+public/build-qa-opportunities/assets/dist-Ddn_hEUd.js 7.02 kB │ gzip: 2.71 kB
+public/build-qa-opportunities/assets/blank-2jFZEe2q.js 7.07 kB │ gzip: 2.77 kB
+public/build-qa-opportunities/assets/analysis-CWzzPBct.js 7.11 kB │ gzip: 2.96 kB
+public/build-qa-opportunities/assets/profile-7Z3ih2bC.js 7.19 kB │ gzip: 2.47 kB
+public/build-qa-opportunities/assets/install-ChSwGq-d.js 7.23 kB │ gzip: 3.03 kB
+public/build-qa-opportunities/assets/investor-COYuuRY_.js 7.30 kB │ gzip: 2.89 kB
+public/build-qa-opportunities/assets/investor-path-CSExMjAt.js 7.36 kB │ gzip: 3.02 kB
+public/build-qa-opportunities/assets/proactive-supply-review-Bspf5LP7.js 7.55 kB │ gzip: 2.73 kB
+public/build-qa-opportunities/assets/legacy-Cgz97_0u.js 7.67 kB │ gzip: 2.56 kB
+public/build-qa-opportunities/assets/jsx-runtime-BpzPEenQ.js 7.89 kB │ gzip: 2.99 kB
+public/build-qa-opportunities/assets/shared-BFCbvJo7.js 7.90 kB │ gzip: 3.08 kB
+public/build-qa-opportunities/assets/business-objects-BSbz_1pe.js 7.95 kB │ gzip: 2.57 kB
+public/build-qa-opportunities/assets/assisted-K2_qpkSv.js 8.06 kB │ gzip: 3.16 kB
+public/build-qa-opportunities/assets/value-network-Cp8UYtMs.js 8.06 kB │ gzip: 3.08 kB
+public/build-qa-opportunities/assets/editor-xaCzg6Ao.js 8.21 kB │ gzip: 2.97 kB
+public/build-qa-opportunities/assets/territorial-editorial-B0ni24WA.js 8.22 kB │ gzip: 3.03 kB
+public/build-qa-opportunities/assets/opportunity-promotion-CyWpImc1.js 8.40 kB │ gzip: 2.96 kB
+public/build-qa-opportunities/assets/publication-history-DfLO6jOc.js 8.42 kB │ gzip: 3.02 kB
+public/build-qa-opportunities/assets/print-Tn3aXHlY.js 8.66 kB │ gzip: 3.55 kB
+public/build-qa-opportunities/assets/dialog-D0NJ4SGy.js 8.81 kB │ gzip: 2.76 kB
+public/build-qa-opportunities/assets/shared-DXIXdF9G.js 8.92 kB │ gzip: 3.83 kB
+public/build-qa-opportunities/assets/iva-modelo-a-CNylSdBc.js 8.94 kB │ gzip: 3.27 kB
+public/build-qa-opportunities/assets/zone-relations-CdbqX19L.js 8.95 kB │ gzip: 2.99 kB
+public/build-qa-opportunities/assets/investment-territory-CTzFQmCV.js 8.96 kB │ gzip: 3.43 kB
+public/build-qa-opportunities/assets/similar-businesses-HTwQGVGQ.js 9.11 kB │ gzip: 3.58 kB
+public/build-qa-opportunities/assets/interactive-investment-map-CGOhHCge.js 9.13 kB │ gzip: 3.60 kB
+public/build-qa-opportunities/assets/investment-land-preparation-BHeC9B2U.js 9.15 kB │ gzip: 3.33 kB
+public/build-qa-opportunities/assets/why-invest-BIS-cmeJ.js 9.16 kB │ gzip: 3.49 kB
+public/build-qa-opportunities/assets/interest-history-oHNykKmC.js 9.48 kB │ gzip: 3.45 kB
+public/build-qa-opportunities/assets/content-hub-Df5xDkkT.js 9.95 kB │ gzip: 2.93 kB
+public/build-qa-opportunities/assets/privacy-policy-LI1lpUCK.js 10.36 kB │ gzip: 3.07 kB
+public/build-qa-opportunities/assets/editorial-edition-Zq39X7mf.js 10.36 kB │ gzip: 3.47 kB
+public/build-qa-opportunities/assets/panel-Bi6FJvJx.js 10.46 kB │ gzip: 4.29 kB
+public/build-qa-opportunities/assets/result-yez5wOFo.js 10.57 kB │ gzip: 4.73 kB
+public/build-qa-opportunities/assets/dashboard-mFja_TO4.js 10.92 kB │ gzip: 3.47 kB
+public/build-qa-opportunities/assets/zone-attachments-DBvjiTcG.js 10.94 kB │ gzip: 2.75 kB
+public/build-qa-opportunities/assets/business-DUxcRYkb.js 11.10 kB │ gzip: 3.08 kB
+public/build-qa-opportunities/assets/detail-BRdMNEQp.js 11.73 kB │ gzip: 4.31 kB
+public/build-qa-opportunities/assets/login-CDV8vvsd.js 11.89 kB │ gzip: 4.92 kB
+public/build-qa-opportunities/assets/support-installation-tsBpnQkP.js 12.36 kB │ gzip: 4.86 kB
+public/build-qa-opportunities/assets/show-DF9KhUzw.js 12.37 kB │ gzip: 3.98 kB
+public/build-qa-opportunities/assets/tempo-brand-BXcnRsyn.js 12.38 kB │ gzip: 5.01 kB
+public/build-qa-opportunities/assets/show-CAVO7psn.js 12.40 kB │ gzip: 4.39 kB
+public/build-qa-opportunities/assets/guide-DcEhT0Sh.js 12.58 kB │ gzip: 4.03 kB
+public/build-qa-opportunities/assets/contact-BwgG52Cs.js 12.65 kB │ gzip: 4.33 kB
+public/build-qa-opportunities/assets/project-dossier-document-DLCZGheg.js 12.68 kB │ gzip: 5.20 kB
+public/build-qa-opportunities/assets/dossier-prefill-B18BbJoD.js 12.72 kB │ gzip: 4.64 kB
+public/build-qa-opportunities/assets/technical-incident-GDB_x0wp.js 12.73 kB │ gzip: 4.96 kB
+public/build-qa-opportunities/assets/competitiveness-60nqrOfg.js 12.74 kB │ gzip: 4.23 kB
+public/build-qa-opportunities/assets/editor-DMwEWxsJ.js 12.91 kB │ gzip: 3.75 kB
+public/build-qa-opportunities/assets/fiscal-forms-CIgeIrrS.js 13.04 kB │ gzip: 4.75 kB
+public/build-qa-opportunities/assets/opportunity-classification-Dm_W66ep.js 13.44 kB │ gzip: 4.55 kB
+public/build-qa-opportunities/assets/react-CjVep8xp.js 13.90 kB │ gzip: 4.61 kB
+public/build-qa-opportunities/assets/opportunity-search-filters-CqGDv55D.js 14.74 kB │ gzip: 4.72 kB
+public/build-qa-opportunities/assets/case-wwTeoOmv.js 14.77 kB │ gzip: 5.38 kB
+public/build-qa-opportunities/assets/product-usage-A6hb-0oX.js 14.81 kB │ gzip: 5.29 kB
+public/build-qa-opportunities/assets/company-preparation-D8eVac1u.js 15.17 kB │ gzip: 4.92 kB
+public/build-qa-opportunities/assets/terms-of-use-CUQdwKes.js 15.27 kB │ gzip: 4.20 kB
+public/build-qa-opportunities/assets/edit-DsH5Q1h1.js 15.38 kB │ gzip: 5.15 kB
+public/build-qa-opportunities/assets/relationship-repair-brZoqSge.js 16.29 kB │ gzip: 5.62 kB
+public/build-qa-opportunities/assets/edit-BPe9IHkr.js 16.60 kB │ gzip: 4.88 kB
+public/build-qa-opportunities/assets/edit-CheIw-hI.js 16.93 kB │ gzip: 4.91 kB
+public/build-qa-opportunities/assets/search-B8kmEkH5.js 17.16 kB │ gzip: 5.69 kB
+public/build-qa-opportunities/assets/funding-institution-DgwDRv_z.js 17.24 kB │ gzip: 5.82 kB
+public/build-qa-opportunities/assets/use-two-factor-auth-D9w0KtSq.js 17.31 kB │ gzip: 6.30 kB
+public/build-qa-opportunities/assets/administration-CgUGyaX7.js 17.41 kB │ gzip: 4.30 kB
+public/build-qa-opportunities/assets/notifications-Tmebv7ru.js 17.61 kB │ gzip: 5.83 kB
+public/build-qa-opportunities/assets/ai-ykPV8ntL.js 18.08 kB │ gzip: 6.92 kB
+public/build-qa-opportunities/assets/project-dossier-report-DpD9_xNw.js 18.98 kB │ gzip: 6.95 kB
+public/build-qa-opportunities/assets/submission-C6KF6kEv.js 19.99 kB │ gzip: 6.32 kB
+public/build-qa-opportunities/assets/opportunity-resources-DHgylXUE.js 20.20 kB │ gzip: 7.22 kB
+public/build-qa-opportunities/assets/about-BtlawfeW.js 20.95 kB │ gzip: 7.03 kB
+public/build-qa-opportunities/assets/zones-Cqg6mKe2.js 21.16 kB │ gzip: 5.22 kB
+public/build-qa-opportunities/assets/service-editor-CG1DhyKz.js 21.30 kB │ gzip: 6.58 kB
+public/build-qa-opportunities/assets/context-DBE0uEqB.js 21.56 kB │ gzip: 6.99 kB
+public/build-qa-opportunities/assets/declaration-Bzl3lixx.js 22.15 kB │ gzip: 7.14 kB
+public/build-qa-opportunities/assets/Combination-BBDI-RbM.js 23.03 kB │ gzip: 8.24 kB
+public/build-qa-opportunities/assets/desk-internal-operations-BakRT6ga.js 23.14 kB │ gzip: 6.53 kB
+public/build-qa-opportunities/assets/education-BElOGGwI.js 23.40 kB │ gzip: 8.20 kB
+public/build-qa-opportunities/assets/investment-opportunity-choices-BIDCuOIq.js 24.28 kB │ gzip: 8.06 kB
+public/build-qa-opportunities/assets/preparation-D_D73Qym.js 24.56 kB │ gzip: 6.73 kB
+public/build-qa-opportunities/assets/utils-CCDJ05Ll.js 27.31 kB │ gzip: 8.71 kB
+public/build-qa-opportunities/assets/business-wizard-7qn-T-8z.js 28.60 kB │ gzip: 9.42 kB
+public/build-qa-opportunities/assets/proactive-investment-DfIQuXvs.js 28.65 kB │ gzip: 9.16 kB
+public/build-qa-opportunities/assets/lead-vUXgd2g8.js 29.03 kB │ gzip: 9.96 kB
+public/build-qa-opportunities/assets/preparation-BJOKOlYB.js 29.25 kB │ gzip: 8.51 kB
+public/build-qa-opportunities/assets/form-CuZokTHN.js 29.80 kB │ gzip: 8.04 kB
+public/build-qa-opportunities/assets/profile-DSwkSvJs.js 30.71 kB │ gzip: 9.33 kB
+public/build-qa-opportunities/assets/welcome-_9nm1hgc.js 30.73 kB │ gzip: 6.49 kB
+public/build-qa-opportunities/assets/manage-GV_WvYCX.js 31.17 kB │ gzip: 7.63 kB
+public/build-qa-opportunities/assets/security-CB7TJeqg.js 32.11 kB │ gzip: 10.06 kB
+public/build-qa-opportunities/assets/editor-CWbYf7YK.js 35.03 kB │ gzip: 11.76 kB
+public/build-qa-opportunities/assets/case-CPWSbxvW.js 37.38 kB │ gzip: 10.32 kB
+public/build-qa-opportunities/assets/room-Bg8k9V54.js 38.25 kB │ gzip: 12.14 kB
+public/build-qa-opportunities/assets/simulation-form-CVV000gF.js 39.43 kB │ gzip: 10.27 kB
+public/build-qa-opportunities/assets/request-Duh2vDwb.js 41.86 kB │ gzip: 11.30 kB
+public/build-qa-opportunities/assets/detail-CXufoj8g.js 46.42 kB │ gzip: 15.18 kB
+public/build-qa-opportunities/assets/PortalInvestidor-DCM4Umjc.js 48.72 kB │ gzip: 14.86 kB
+public/build-qa-opportunities/assets/business-financial-plan-s1uoiktr.js 49.19 kB │ gzip: 11.98 kB
+public/build-qa-opportunities/assets/catalogue-SjEs3uS8.js 50.02 kB │ gzip: 16.10 kB
+public/build-qa-opportunities/assets/dropdown-menu-DeBy_kF_.js 57.05 kB │ gzip: 19.02 kB
+public/build-qa-opportunities/assets/zone-B2czy9Xo.js 62.42 kB │ gzip: 15.63 kB
+public/build-qa-opportunities/assets/show-9fSIEkpb.js 68.49 kB │ gzip: 21.16 kB
+public/build-qa-opportunities/assets/opportunity-draft-Cei20Tpo.js 70.65 kB │ gzip: 20.89 kB
+public/build-qa-opportunities/assets/document-zip-bqFSTgG4.js 95.97 kB │ gzip: 28.50 kB
+public/build-qa-opportunities/assets/app-7Rc_PO3G.js 147.54 kB │ gzip: 45.60 kB
+public/build-qa-opportunities/assets/leaflet-src-CUWrUTR2.js 148.82 kB │ gzip: 43.39 kB
+public/build-qa-opportunities/assets/dist-BRfsww6z.js 307.99 kB │ gzip: 96.67 kB
+public/build-qa-opportunities/assets/document-word-CqTGSyXu.js 403.66 kB │ gzip: 115.44 kB
+public/build-qa-opportunities/assets/services-vnbZkLSz.js 965.96 kB │ gzip: 226.50 kB
+public/build-qa-opportunities/assets/project-dossier-a3IvmE5B.js 1,009.94 kB │ gzip: 274.44 kB
+
+[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.
+[33m[PLUGIN_TIMINGS] [0mYour build spent 98% of 24.5s inside plugin hooks (24.0s).
+Measured inside the callback, so queue time is excluded and time the callback itself awaited is not:
+ - @rolldown/plugin-babel transform (78%, 19.1s, 412 calls)
+ - @tailwindcss/vite:generate:build transform (16%, 3.9s, 3 calls)
+Those rows are 94% of the build; the rest of the 98% is below.
+Not measurable — 1 hook whose calls overlap, so elapsed time covers work other calls were doing. Profile with `node
+--cpu-prof`:
+ - vite:css transform (3 calls)
+See https://rolldown.rs/reference/InputOptions.checks#plugintimings for more details.
+
+✓ built in 24.52s
diff --git a/outputs/offers-menu-qa-20261114/navigation-tests.log b/outputs/offers-menu-qa-20261114/navigation-tests.log
new file mode 100644
index 00000000..2ac89635
--- /dev/null
+++ b/outputs/offers-menu-qa-20261114/navigation-tests.log
@@ -0,0 +1,37 @@
+✔ each manager dashboard menu anchor resolves to a real section (11.504167ms)
+✔ investor section remains distinct from administrative summary (0.786958ms)
+✔ sidebar renders every nested authorised destination instead of a first-child shortcut (32.997667ms)
+✔ nested current destination is selected without changing its URL or replacing it with a group root (8.242541ms)
+✔ rendered visitor sidebar explains access without private operation links (8.582708ms)
+✔ sidebar carries the existing search territory when moving between catalogues (11.782958ms)
+✔ changing offer state preserves the operational and pending-report filters (29.420375ms)
+✔ private offers use the existing work group and do not appear for an ungranted account (6.359416ms)
+✔ public and authenticated navigation share groups without revealing management (6.903875ms)
+✔ management and optional modules follow permissions and feature flags (1.518125ms)
+✔ detail URLs and filtered catalogue pages retain the current group (2.9345ms)
+✔ reconciled navigation selects discovery, realization and private support correctly (0.506791ms)
+✔ discovery retains distinct catalogues without repeating main entry points (0.444541ms)
+✔ catalogue detail and return preserve the search inside the local catalogue (0.951917ms)
+✔ both menu consumers respect the existing scoped server decision rather than generic manager status (0.457583ms)
+✔ work entry is discoverable without exposing private capabilities to an anonymous visitor (0.628042ms)
+✔ work area exposes existing content capability even when the old dashboard flag has no menu object (2.436209ms)
+✔ every previously authorised management/profile destination survives the regrouping exactly once (0.993917ms)
+✔ ordinary authenticated account has an explanation entry and does not acquire creation or management links (0.281292ms)
+✔ direct analysis and ordinary creation preserve distinct selection state in the same work group (0.657375ms)
+✔ investment entry belongs to realization exactly once (0.336625ms)
+✔ portfolio and zone fiche return keeps the applied catalogue page and filters (0.665541ms)
+✔ catalogue pagination inheritance rejects invalid page values (0.243834ms)
+✔ funding links require installation and saved list requires authentication (0.728958ms)
+✔ installed concours has its own primary group and preserves public and private destinations (0.63125ms)
+✔ administration owns dashboard activities once and remains hidden without authorised destinations (0.932792ms)
+✔ administrative operations are grouped outside Dashboard and removed from More/work (0.444ms)
+✔ actual header has exactly the requested six primary entries on desktop and mobile for public and signed-in users (41.499292ms)
+✔ authorised administration is primary and dashboard is a nested expandable group on desktop and mobile (10.578291ms)
+ℹ tests 29
+ℹ suites 0
+ℹ pass 29
+ℹ fail 0
+ℹ cancelled 0
+ℹ skipped 0
+ℹ todo 0
+ℹ duration_ms 1226.643584
diff --git a/outputs/offers-menu-qa-20261114/qa-result.json b/outputs/offers-menu-qa-20261114/qa-result.json
new file mode 100644
index 00000000..39612ef6
--- /dev/null
+++ b/outputs/offers-menu-qa-20261114/qa-result.json
@@ -0,0 +1,51 @@
+{
+ "scope": "Offer navigation only; existing horizontal portal dropdowns reused",
+ "frontend_tests": {
+ "tests": 29,
+ "passed": 29
+ },
+ "types": "passed",
+ "build": "QA build passed; assets served from existing local preview",
+ "lint": "passed with one pre-existing prefer-string-starts-ends-with warning outside changed lines in portal-navigation.ts",
+ "backend": "unchanged; no database-refreshing tests run during user preview",
+ "http": [
+ {
+ "path": "/minhas-oportunidades/ofertas",
+ "status": 200
+ },
+ {
+ "path": "/minhas-oportunidades/ofertas/18",
+ "status": 200
+ },
+ {
+ "path": "/minhas-oportunidades/ofertas/19",
+ "status": 200
+ },
+ {
+ "asset": "assets/app-7Rc_PO3G.js",
+ "status": 200
+ },
+ {
+ "asset": "assets/preparation-BJOKOlYB.js",
+ "status": 200
+ },
+ {
+ "asset": "assets/preparation-index-CdgPdpQ-.js",
+ "status": 200
+ }
+ ],
+ "data_and_session": "Existing synthetic identities and offers preserved; no seeding, migration, reset or session invalidation during this change",
+ "publication": "unchanged, closed",
+ "installed_in_homologation": false,
+ "visual_acceptance": "pending user review; no browser screenshot acceptance claimed",
+ "previous_bundle": "9a014268 bundle preserved; this UI delta is not included in that previously frozen package",
+ "source_sha256": {
+ "resources/js/app.tsx": "b6afda8c8d60e8049d53352a6b62b7cabf0a470adc31a55c952c6e71456986a1",
+ "resources/js/lib/portal-navigation.ts": "4fb7cbf0a508cf0964e7ea0dd2023bc00202236bf048f228822d7de6e1f44534",
+ "resources/js/lib/offer-navigation.ts": "94ec55b7bbbc800f57fd10a9b51a49398c6cdd23fa0df635ca20e949426aef13",
+ "resources/js/components/offer-navigation.tsx": "4676f4859f7d378ebca988bc5436629f97c0004abe32af6db8a6b40789b48874",
+ "resources/js/pages/offers/preparation.tsx": "7503946ba28e71ff48e6fd955b1ed587494678df433b6a13492dd026b74ce1de",
+ "resources/js/pages/offers/preparation-index.tsx": "1cdfe52e4ed8311f52e24caab32d83dc7611213e5b9d3cc477b61c6e6c996276",
+ "tests/frontend/offer-navigation.test.mjs": "007122b87d4123a6dfd5360b106821a3c27e6ba1575bae4d77ed631da7281ed9"
+ }
+}
diff --git a/outputs/offers-menu-qa-20261114/types.log b/outputs/offers-menu-qa-20261114/types.log
new file mode 100644
index 00000000..dc5a08e5
--- /dev/null
+++ b/outputs/offers-menu-qa-20261114/types.log
@@ -0,0 +1,3 @@
+
+> types:check
+> tsc --noEmit
diff --git a/resources/js/app.tsx b/resources/js/app.tsx
index d18fec81..277932bb 100644
--- a/resources/js/app.tsx
+++ b/resources/js/app.tsx
@@ -27,8 +27,7 @@ void createInertiaApp({
case name.startsWith('qa/'):
case name.startsWith('portal/'):
case name.startsWith('investment/'):
- case name === 'offers/catalogue':
- case name === 'offers/public-detail':
+ case name.startsWith('offers/'):
case name.startsWith('portfolio/'):
case name.startsWith('land-assistance/'):
case name.startsWith('desk/'):
diff --git a/resources/js/components/offer-navigation.tsx b/resources/js/components/offer-navigation.tsx
new file mode 100644
index 00000000..40292e14
--- /dev/null
+++ b/resources/js/components/offer-navigation.tsx
@@ -0,0 +1,131 @@
+import { Link } from '@inertiajs/react';
+import { ChevronDown } from 'lucide-react';
+import {
+ DropdownMenu,
+ DropdownMenuContent,
+ DropdownMenuItem,
+ DropdownMenuTrigger,
+} from '@/components/ui/dropdown-menu';
+import { offerStates } from '@/lib/offer-editorial';
+import { offerListHref, type OfferListFilters } from '@/lib/offer-navigation';
+
+export default function OfferNavigation({
+ canCreate = false,
+ filters,
+}: {
+ canCreate?: boolean;
+ filters?: OfferListFilters;
+}) {
+ const trigger =
+ 'tempo-nav-trigger inline-flex items-center gap-2 rounded-lg px-3 py-2 text-sm font-medium';
+ return (
+
+ );
+}
diff --git a/resources/js/lib/offer-navigation.ts b/resources/js/lib/offer-navigation.ts
new file mode 100644
index 00000000..5ec6de9c
--- /dev/null
+++ b/resources/js/lib/offer-navigation.ts
@@ -0,0 +1,13 @@
+export type OfferListFilters = {
+ state?: string;
+ operational?: boolean;
+ pending_reports?: boolean;
+};
+
+export function offerListHref(filters: OfferListFilters = {}): string {
+ const query = new URLSearchParams();
+ if (filters.operational) query.set('operational', '1');
+ if (filters.pending_reports) query.set('pending_reports', '1');
+ if (filters.state) query.set('state', filters.state);
+ return `/minhas-oportunidades/ofertas${query.size ? `?${query}` : ''}`;
+}
diff --git a/resources/js/lib/portal-navigation.ts b/resources/js/lib/portal-navigation.ts
index b974aba5..3cbbdd92 100644
--- a/resources/js/lib/portal-navigation.ts
+++ b/resources/js/lib/portal-navigation.ts
@@ -347,6 +347,26 @@ export function legacyPortalNavigation(
'Minhas oportunidades',
profile.mine,
),
+ {
+ id: 'private-offers',
+ label: 'Ofertas',
+ children: [
+ link(
+ 'my-private-offers',
+ 'As minhas ofertas',
+ '/minhas-oportunidades/ofertas',
+ ),
+ ...(profile.create
+ ? [
+ link(
+ 'new-private-offer',
+ 'Preparar oferta',
+ '/minhas-oportunidades/ofertas/criar',
+ ),
+ ]
+ : []),
+ ],
+ },
]
: []),
...(profile.create
diff --git a/resources/js/pages/offers/preparation-index.tsx b/resources/js/pages/offers/preparation-index.tsx
index 36d5994b..8754a599 100644
--- a/resources/js/pages/offers/preparation-index.tsx
+++ b/resources/js/pages/offers/preparation-index.tsx
@@ -1,5 +1,6 @@
import { Head, Link } from '@inertiajs/react';
import { offerStates } from '@/lib/offer-editorial';
+import OfferNavigation from '@/components/offer-navigation';
export default function OfferPreparations({
records,
@@ -47,41 +48,7 @@ export default function OfferPreparations({
)}
-
- {filters.operational && (
-
- )}
+
Ainda não existem ofertas neste âmbito.
)} diff --git a/resources/js/pages/offers/preparation.tsx b/resources/js/pages/offers/preparation.tsx index 3b6bdfd8..72975cfa 100644 --- a/resources/js/pages/offers/preparation.tsx +++ b/resources/js/pages/offers/preparation.tsx @@ -1,4 +1,4 @@ -import { Head, Link, router } from '@inertiajs/react'; +import { Head, router } from '@inertiajs/react'; import { useState } from 'react'; import { TerritoryFields, @@ -16,6 +16,7 @@ import OfferParticularsFields, { import OfferPrivateResources from '@/components/offer-private-resources'; import OfferConfidentialAccess from '@/components/offer-confidential-access'; import OfferOperations from '@/components/offer-operations'; +import OfferNavigation from '@/components/offer-navigation'; type Offer = OfferParticulars & { price_mode?: string | null; @@ -169,12 +170,7 @@ export default function OfferPreparation({ return (diff --git a/tests/frontend/offer-navigation.test.mjs b/tests/frontend/offer-navigation.test.mjs new file mode 100644 index 00000000..4e2c5209 --- /dev/null +++ b/tests/frontend/offer-navigation.test.mjs @@ -0,0 +1,88 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import { offerListHref } from '../../resources/js/lib/offer-navigation.ts'; +import { + portalNavigation, + currentNavigationItem, + currentNavigationGroup, +} from '../../resources/js/lib/portal-navigation.ts'; + +await test('changing offer state preserves the operational and pending-report filters', () => { + const filters = { + operational: true, + pending_reports: true, + state: 'in_review', + }; + const selected = new URL(offerListHref(filters), 'https://qa.invalid'); + assert.equal(selected.searchParams.get('operational'), '1'); + assert.equal(selected.searchParams.get('pending_reports'), '1'); + assert.equal(selected.searchParams.get('state'), 'in_review'); + const allStates = new URL( + offerListHref({ ...filters, state: '' }), + selected.origin, + ); + assert.equal(allStates.searchParams.has('state'), false); + assert.equal(allStates.searchParams.get('pending_reports'), '1'); + assert.equal(offerListHref(), '/minhas-oportunidades/ofertas'); + assert.equal( + new URL( + offerListHref({ ...filters, pending_reports: false }), + selected.origin, + ).searchParams.has('pending_reports'), + false, + ); +}); + +await test('private offers use the existing work group and do not appear for an ungranted account', () => { + const profile = { + mine: '/minhas-oportunidades', + create: '/minhas-oportunidades/criar', + contexts: [], + request: '/perfil/promotor', + review: null, + administration: null, + }; + const groups = portalNavigation({ + authenticated: true, + manager: false, + profileAccess: profile, + }); + const work = groups.find((group) => group.id === 'work'); + const offers = work.children.find((item) => item.id === 'private-offers'); + assert.deepEqual( + offers.children.map((item) => item.href), + [ + '/minhas-oportunidades/ofertas', + '/minhas-oportunidades/ofertas/criar', + ], + ); + assert.equal( + currentNavigationItem(groups, '/minhas-oportunidades/ofertas'), + 'my-private-offers', + ); + assert.equal( + currentNavigationGroup(groups, '/minhas-oportunidades/ofertas/18'), + 'work', + ); + const reader = portalNavigation({ + authenticated: true, + manager: false, + profileAccess: { ...profile, create: null }, + }); + assert.ok(!JSON.stringify(reader).includes('new-private-offer')); + for (const access of [ + { authenticated: false, manager: false }, + { + authenticated: true, + manager: false, + profileAccess: { ...profile, mine: null, create: null }, + }, + ]) { + assert.ok( + !JSON.stringify(portalNavigation(access)).includes( + '/minhas-oportunidades/ofertas', + ), + ); + } + assert.ok(!groups.some((group) => group.id === 'private-offers')); +});