diff --git a/docs/investmoz/unification/traceability-and-manual.md b/docs/investmoz/unification/traceability-and-manual.md index f2cf5020..3491a5dd 100644 --- a/docs/investmoz/unification/traceability-and-manual.md +++ b/docs/investmoz/unification/traceability-and-manual.md @@ -10205,3 +10205,6 @@ Referência: `../v2/auditoria-portal/ofertas-aceitacao-final-20261114.md`. Candi # Correcção Ofertas → contexto de investimento — QA, 14/11/2026 Após `ed2fd86f`, foi autorizada exclusivamente a correcção da continuidade. `InvestorContext` passa a recuperar a descrição da Oferta quando não existe resumo, mantendo a mesma Opportunity, os identificadores e a autorização privada. Resumo existente e edições deliberadas no dossier prevalecem. Não se copiam dados empresariais confidenciais, contactos ou preço privado; NDA/autorização do vendedor não concedem acesso ao contexto privado. A prova sintética percorre criação, submissão, revisão/aprovação, projecção pública isolada de teste, contexto/dossier, localização, pressupostos financeiros declarados, gravação/recuperação e relatórios HTML/Word. Não representa publicação real nem rentabilidade garantida. Recibo e resultados em `../v2/auditoria-portal/ofertas-correcao-contexto-qa-20261114.md` e `outputs/offers-investment-continuity-20261114/qa-result.json`; RF-MN-003 e matriz final actualizados. Mantêm-se pendências jurídicas, visuais, de imagens e email real. Sem instalação, activação pública, migrações ou alteração de dados operacionais; aguarda nova autorização para instalar. +# 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. diff --git a/docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv b/docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv index a81eb32b..7ffb521b 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 QA autorizada apos ed2fd86f: InvestorContext projecta descricao da Oferta quando resumo ausente; mesma Opportunity e mesmo dossier. Prova controlada submissao/revisao/aprovacao -> publicacao sintetica isolada -> contexto/localizacao -> hipotese financeira -> HTML/Word -> recuperacao; dados NDA nao transferidos.,"Mantem publicador operacional bloqueado, NDA real/exemplar/versao, comprovativos juridicos, prazo final, conferencia visual/movel, processamento de derivadas e email real. A simulacao por custos declarados nao certifica rentabilidade nem todos os cenarios fiscais.","Opportunity, PortalProfileAccess, OpportunityProfileWorkflow, OpportunityWorkflowTasks, documents/recursos, auditoria, Dashboard, filtros/mapa/API/CSV existentes; sem cadastro paralelo.","Decisoes juridicas, processamento de imagens, visual/email. Instalacao depende de nova autorizacao; sem alteracao operacional ou mne.","Autorizacao exclusiva para corrigir continuidade em QA. Publicacao efectiva, novas funcionalidades, migracoes operacionais e instalacao proibidas nesta passagem.","Correcao implementada em QA, sem instalacao; provas afectadas e saldo de aceitacao no recibo de continuidade.",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,governação e demais cláusulas,14/11/2026 - correcao da continuidade Ofertas/contexto e prova integrada QA; pendencias de publicacao e verificacoes restantes preservadas,,,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-004,"Aplicar campos condicionais por tipo de pessoa, modalidade e fase.",upgrade v4 SHA f0b9815…; p. 2969; requirements-audit.csv,governação/outros,/api/v1/investment/admin/interests/{interest}/status; /management/history; /management/interests; /management/interests/{interest}; /management/interests/{interest}/consent/contact; /management/interests/{interest}/consent/proponent; /management/opportunities; /management/opportunities/create; /management/opportunities/drafts; /management/opportunities/{id}/draft; /management/opportunities/{id}/edit; /management/opportunities/{id}/lifecycle,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","RF-MN-004: Campos aparecem e tornam-se obrigatórios conforme regras da matriz, sem perda de dados válidos.",P2,RF-MN-004: Relatório 25/09 conservado; estado histórico não promove conclusão,RF-MN-004,1,"[{""id"":""RF-MN-004"",""pedido"":""Aplicar campos condicionais por tipo de pessoa, modalidade e fase."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 2969; requirements-audit.csv""],""aceitacao"":""Campos aparecem e tornam-se obrigatórios conforme regras da matriz, sem perda de dados válidos."",""estado"":""parcial"",""variantes"":""Relatório 25/09 conservado; estado histórico não promove conclusão"",""modulo"":""governação/outros""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,Requisito transversal; consultar estado-ativo-after.json,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer","Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: governação e demais cláusulas. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,governação e demais cláusulas,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",AGENTS.md — componentes do domínio encontrados; correspondência integral deste requisito não presumida,; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.,Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, RF-MN-005,"Validar formatos, intervalos, dependências, duplicados e consentimentos.",upgrade v4 SHA f0b9815…; p. 2973; requirements-audit.csv | portal do investidor\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 589 | portal do investidor\Portal V4\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 3425 | portal do investidor\Portal V4\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 596 | portal do investidor\Portal V4\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 2230 | portal do investidor\Portal V4\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 3425,governação/outros,/api/v1/investment/admin/interests/{interest}/status; /management/history; /management/interests; /management/interests/{interest}; /management/interests/{interest}/consent/contact; /management/interests/{interest}/consent/proponent; /management/opportunities; /management/opportunities/create; /management/opportunities/drafts; /management/opportunities/{id}/draft; /management/opportunities/{id}/edit; /management/opportunities/{id}/lifecycle,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","RF-MN-005: O sistema impede submissão inválida e apresenta mensagem associada ao campo e orientação de correcção. | MASTER-471012ab-0054: Validar formatos, intervalos, dependências, duplicados e consentimentos. | MASTER-e1169a77-0204: Validar formatos, intervalos, dependências, duplicados e consentimentos. | MASTER-f70ce307-0060: Validar formatos, intervalos, dependências, duplicados e consentimentos. | MASTER-51b8f0ad-0140: Validar formatos, intervalos, dependências, duplicados e consentimentos. | MASTER-edece80c-0204: Validar formatos, intervalos, dependências, duplicados e consentimentos.",P2,RF-MN-005: Relatório 25/09 conservado; estado histórico não promove conclusão | MASTER-471012ab-0054: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-e1169a77-0204: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-f70ce307-0060: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-51b8f0ad-0140: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-edece80c-0204: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,RF-MN-005 | MASTER-471012ab-0054 | MASTER-e1169a77-0204 | MASTER-f70ce307-0060 | MASTER-51b8f0ad-0140 | MASTER-edece80c-0204,6,"[{""id"":""RF-MN-005"",""pedido"":""Validar formatos, intervalos, dependências, duplicados e consentimentos."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 2973; requirements-audit.csv""],""aceitacao"":""O sistema impede submissão inválida e apresenta mensagem associada ao campo e orientação de correcção."",""estado"":""parcial"",""variantes"":""Relatório 25/09 conservado; estado histórico não promove conclusão"",""modulo"":""governação/outros""},{""id"":""MASTER-471012ab-0054"",""pedido"":""Validar formatos, intervalos, dependências, duplicados e consentimentos."",""fontes"":[""portal do investidor\\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 589""],""aceitacao"":""Validar formatos, intervalos, dependências, duplicados e consentimentos."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-e1169a77-0204"",""pedido"":""Validar formatos, intervalos, dependências, duplicados e consentimentos."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 3425""],""aceitacao"":""Validar formatos, intervalos, dependências, duplicados e consentimentos."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-f70ce307-0060"",""pedido"":""Validar formatos, intervalos, dependências, duplicados e consentimentos."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 596""],""aceitacao"":""Validar formatos, intervalos, dependências, duplicados e consentimentos."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-51b8f0ad-0140"",""pedido"":""Validar formatos, intervalos, dependências, duplicados e consentimentos."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 2230""],""aceitacao"":""Validar formatos, intervalos, dependências, duplicados e consentimentos."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-edece80c-0204"",""pedido"":""Validar formatos, intervalos, dependências, duplicados e consentimentos."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 3425""],""aceitacao"":""Validar formatos, intervalos, dependências, duplicados e consentimentos."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,Requisito transversal; consultar estado-ativo-after.json,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global. diff --git a/docs/investmoz/v2/auditoria-portal/ofertas-aceitacao-final-20261114.md b/docs/investmoz/v2/auditoria-portal/ofertas-aceitacao-final-20261114.md index f5f6742a..f681ecfc 100644 --- a/docs/investmoz/v2/auditoria-portal/ofertas-aceitacao-final-20261114.md +++ b/docs/investmoz/v2/auditoria-portal/ofertas-aceitacao-final-20261114.md @@ -6,6 +6,8 @@ **Actualização posterior à auditoria `ed2fd86f`:** a correcção autorizada em QA está documentada em [Ofertas → Investimento](ofertas-correcao-contexto-qa-20261114.md). O saldo actualizado nas linhas abaixo substitui apenas o estado desses critérios; conserva-se a prova original da falha. O percurso controlado com hipóteses de localização e relatório foi demonstrado; publicação operacional e restantes dependências não foram activadas. +**Preparação final após aceitação técnica expressa de `9a014268`:** [parecer de homologação privada](ofertas-prontidao-homologacao-20261114.md). Integridade das fases/correcção reconfirmada por 48 hashes; bundle local verificado. Aprovação técnica em QA aceite; instalação ainda não autorizada/executada, condicionada à conferência real do destino e backup/restauro actual. Publicação operacional permanece bloqueada. Visual, GD/derivadas e email real são critérios de avaliação pendentes, sem invalidar a prova integrada privada aceite. + ## Evidência e limites - Confirmada a ancestralidade dos commits F1 `1f2990e4`, plano `6e302db6`, F2 `91c18573`, F3 `7691cab3`, F4 `e431de8b` e F5 `528a2597`. @@ -52,7 +54,7 @@ Na auditoria original não foram corrigidas lacunas por estar autorizada exclusi ## Plano de instalação controlada — não executado -1. **Antes de pedir autorização:** resolver/aceitar expressamente os bloqueantes aplicáveis ao âmbito a instalar, rever o novo delta, repetir os testes afectados e fechar um manifesto único com SHA da candidata e provas. Para avaliação estritamente privada, conservar NDA nulo, publicação indisponível, prazo pendente e agendamento desactivado; declarar as limitações. A candidata actual não tem aceitação integral para instalação. +1. **Antes de executar:** a Tempo aceitou tecnicamente a correcção `9a014268`. Para avaliação estritamente privada, existe parecer favorável condicionado e bundle local verificado; conservar NDA nulo, publicação indisponível, prazo pendente e agendamento desactivado. Conferir o destino, delta, backup/restauro e compatibilidade da reversão; obter autorização expressa para instalar. Não repetir provas aceites sem diferença que o justifique. Isto não constitui aceitação de publicação integral. 2. **Destino e processo:** confirmar `teste-investidor.tempo.co.mz`, revisão efectivamente instalada, ramo, árvore limpa, recibo do executor Git existente e diferença exacta desde o activo. Não usar o destino antigo do guia genérico como evidência do destino actual. Não inventar comandos/identidade de executor nem retomar uma sessão SSH histórica. Esta auditoria não consultou o servidor. 3. **Estrutura:** o delta completo `1f2990e4^..528a2597` contém **zero ficheiros de migração**. As fases reutilizam Opportunity/JSON, recursos/documentos, perfis, editorial, tarefas e auditoria. Antes de instalar, comparar em leitura o schema e o registo de migrações do destino com estas dependências. Ausência de nova migração no pacote não prova que o destino já possui todas as estruturas; qualquer falta exige plano aditivo concreto e autorização. Não executar `migrate:fresh`, seeders ou alterações a `mne`. 4. **Cópia e ensaio:** backup consistente da base, ficheiros privados, configuração e chaves existentes sob protecção; registar revisão e manifestos sem segredos. Ensaiar restauro isolado, integridade de anexos cifrados e leitura de histórico, comparando contagens/hash e identificadores com o backup. Preservar integralmente instituições, demografia, dossiers e integrações; não presumir contagens actuais a partir de recibos antigos. diff --git a/docs/investmoz/v2/auditoria-portal/ofertas-prontidao-homologacao-20261114.md b/docs/investmoz/v2/auditoria-portal/ofertas-prontidao-homologacao-20261114.md new file mode 100644 index 00000000..095434df --- /dev/null +++ b/docs/investmoz/v2/auditoria-portal/ofertas-prontidao-homologacao-20261114.md @@ -0,0 +1,105 @@ +# Ofertas — parecer de prontidão para homologação privada + +14/11/2026. Candidata técnica aceite: **`9a01426864a47dacd97db2b4da363aba86a94df6`**. Esta passagem autoriza exclusivamente preparação; não houve instalação, alteração operacional, migração, activação pública ou envio de email. + +## Parecer + +**Existe validação integrada em QA suficiente para recomendar uma instalação controlada de avaliação privada, com condições de entrada. Não existe aceitação integral para operação/publicação pública.** A autorização para instalar continua separada e ainda não foi recebida nesta passagem. + +O percurso demonstrado inclui criação/recuperação da Oferta, submissão, revisão/aprovação independente, projecção pública exclusivamente sintética, contexto privado autorizado no mesmo dossier, localização, hipóteses económicas declaradas, cálculo, relatório HTML/Word e recuperação. NDA e autorização do vendedor foram testados com documentos sintéticos; não conferem autorização para copiar a informação empresarial confidencial para o contexto. A prova não demonstra um investidor público a converter uma Oferta operacionalmente publicada num dossier: esse publicador não está disponível. + +Condições de entrada para a futura instalação: confirmar revisão/schema/configuração/processos reais do destino; concluir backup actual e ensaio de restauro; rever o delta exacto e a reversão compatível; receber autorização expressa para a candidata e o destino. Se uma destas condições falhar, não se instala. Visual, correio real e derivadas de imagens ficam como verificações de homologação explicitamente pendentes, sem declarar o módulo concluído. + +## Integridade e provas reutilizadas + +Confirmada a ancestralidade F1 `1f2990e4`, plano `6e302db6`, F2 `91c18573`, F3 `7691cab3`, F4 `e431de8b`, F5 `528a2597`, auditoria `ed2fd86f` e correcção `9a014268`. **48 hashes** dos dois recibos de código/provas conferidos contra os respectivos blobs Git, todos correspondentes. Conferir na versão de cada recibo evita interpretar as actualizações documentais posteriores como corrupção das provas anteriores. + +| Evidência aceite | Resultado / limite | +| --- | --- | +| F1–F5, passagem integrada original | 59 testes / 780 asserções, aprovados; não repetidos nesta preparação | +| Correcção e compatibilidade afectada | 22 / 461 aprovados; inclui 4/62 de continuidade, 11/161 de confidencialidade, 4/192 de dossiers e 3/46 de gestão nativa | +| Plano financeiro e relatórios frontend | 41 testes aprovados | +| Prova ligada ao JSON da execução PHP | 1 teste aprovado; cálculo por custos declarados e HTML/Word gerados/reabertos | +| PHPStan, tipos, lint/formatação focados | Aprovados no recibo aceite; não houve alteração funcional nesta preparação | +| Imagens sem GD | Provas aceites de upload, limite, quarentena e recusa 423 de processamento; não equivalem a validação de derivadas | + +Recibo desta preparação: `outputs/offers-homologation-preparation-20261114/readiness-verification.json`. As provas anteriores mantêm-se nas pastas referidas pela matriz e pelo [recibo da correcção](ofertas-correcao-contexto-qa-20261114.md). Não somar passagens sobrepostas nem usar quantidade de testes como conclusão do portal inteiro. + +## Estrutura, dependências e configuração + +Foi comparada a candidata com a revisão **histórica** do recibo de homologação `96f51096`: **zero diferenças em `database/migrations`, `composer.lock` e `package-lock.json`**. Também não há migrações novas no delta das cinco fases/correcção. Não é necessário criar uma migração de Ofertas. Esta comparação de ficheiros não prova a aplicação das estruturas no servidor actual. + +Pré-conferência em leitura no destino: registo de migrações e estrutura efectiva de `opportunities` (gestão, dono, organização, JSON editorial), perfis/permissões e revisão de acesso, recursos `opportunity_images/documents/locations`, `documents`, auditoria, tarefas, notificações editoriais com `opportunity_id/opportunity_version/content_hash`, dossiers/contexto e rascunhos de simulação. Conferir nome/schema das relações pela versão instalada, constraints, cifra e acesso ao armazenamento. As dependências de recursos e contexto identificam, entre outras, `2026_10_09_030000_extend_opportunity_resources` e `2026_10_16_150000_create_investor_navigation_preferences`; notificações dependem de `2026_11_13_223000_extend_editorial_notifications_to_opportunities`. + +**Não executar indiscriminadamente `artisan migrate`:** existem migrações anteriores guardadas para QA isolado, incluindo a das notificações. Se faltar estrutura no destino, parar e apresentar o delta aditivo e autorização concreta; não remover guardas para aplicar um ficheiro. Não usar `migrate:fresh`, seeders, rollback estrutural destrutivo ou alterações a `mne`. + +Manter versões e locks existentes. O PHP CLI QA é 8.5.11; a compatibilidade real deve ser conferida com as dependências bloqueadas, PHP-FPM/web e worker, PDO PostgreSQL/PostGIS, memória, discos privados, cifra/APP_KEY existente, scanner, fila e scheduler. Não instalar ferramentas/extensões nem actualizar versões nesta preparação. Confirmar manifesto/assets e ausência de `public/hot` no artefacto a instalar; não publicar `.env`, ficheiros privados, dependências locais ou fixtures. + +Para avaliar o circuito privado, confirmar os mecanismos existentes `portal.profile_access_enabled` e `editorial_workflow.enabled` e respectivos papéis efectivos. Não os activar globalmente ou conceder permissões por inferência; diferenças para o destino têm de constar da autorização de instalação. Preservar autenticação, MFA, representação, CSRF, throttling, auditoria e transportes dos outros módulos. + +## Publicação integralmente fechada + +- `Opportunity` exige rascunho e `published_at=null` para Ofertas e impede remover o marcador privado; o scope público nativo exclui-as. +- Aprovar não publica; o workflow privado e percursos alternativos mantêm a recusa. +- `OfferPublicCatalogue` normal não devolve Ofertas. A injecção sintética exige ambiente de testes e identidade efectiva da base isolada; não há variável HTTP/ambiente de activação equivalente nem publicador operacional para ligar. +- Manter `private_offers.nda=null`, validade/política nulas e `expiry_scheduler_enabled=false`; não copiar documentos/snapshots sintéticos para o destino. O agendamento de expiração não é necessário para instalar em avaliação privada. +- Pós-instalação deve comprovar ausência em lista, detalhe directo, APIs, mapa, pesquisa nativa e CSV, incluindo após aprovação privada. Não basta ocultar um menu. + +## GD e preservação de uploads + +A conferência local nesta passagem confirmou PHP 8.5.11 **sem GD, `imagecreatetruecolor` ou `imagewebp`**. O destino actual não foi consultado: não se presume que possua a mesma configuração. `OpportunityImageProcessor::prepare` verifica a disponibilidade e devolve 423 **antes** da transacção/escrita; originais e metadados permanecem. Upload, cifra, quarentena e antimalware são percursos separados; não se deve substituir ficheiros existentes ou desactivar scan para gerar uma galeria. + +Sem GD/WebP, é possível instalar para avaliação privada com esta limitação expressa, mas não aceitar processamento de derivadas/galeria. Depois de autorização adequada e num processo compatível, testar JPEG/PNG/WebP sintéticos, dimensões e memória, derivadas sem metadados sensíveis, scans individuais, hash, cifra, limite de seis e restauro lógico. Conferir os três runtimes (web/CLI/worker). Não reprocessar em lote os uploads existentes. Alteração de extensão/runtime fica fora desta preparação e exige delta próprio se necessária. + +## Conferência visual e móvel autenticada preparada + +Usar apenas contas e registos sintéticos identificados na homologação; autenticação e MFA normais, sem códigos na conversa. Preparar dono promotor, revisor independente com âmbito e MFA e interessado sem acesso privado; não criar/grantar contas no activo nesta passagem. + +| Sessão / janela | Conferência e critério | +| --- | --- | +| Dono, desktop 1366×768 | Criar/guardar/recuperar, endereço e Oferta correctos, erros junto dos campos, descrição sem repetição/perda; subir recursos sintéticos até ao limite; botão visível; voltar sem perder edições | +| Revisor independente | Fila do Dashboard existente → Oferta exacta → decisão fundamentada por versão; conflitos e auto-aprovação recusados; nenhuma publicação | +| Dono, dossier/simulador | Mesma referência/localização, prévia e confirmação, manter resumo deliberado; rascunho/resultados e relatório recuperáveis | +| Janela 390×844 e 360×800 | Sem scroll horizontal impeditivo; menus, modais, campos, erros, anexos e acções acessíveis por toque/teclado; foco e retorno preservados | +| Conta sem âmbito/interessado | Rotas directas, contexto, ficheiros e APIs recusados; nenhum texto confidencial ou comprovativo no HTML/relatório; catálogo público vazio | +| Retirada/revisão | Estado visível e coerente, indisponibilidade imediata; reactivação exige nova validação; histórico preservado | + +Registar verificador, instante, candidata servida, viewport, conta/papel sintético, rota e resultado, com capturas sem credenciais. Última evidência disponível do conector: `The browser access host is unavailable`; não foi feita nova tentativa nesta preparação. Quando o conector funcionar, identificar aba/URL antes de actuar; se continuar indisponível, usar conferência manual registada, sem ciclos de reinício ou alterações de segurança. Não converter HTML compilado em aceitação visual. + +## Prova de email real preparada, não executada + +O job existente `NotifyPrivateOfferDecision` requer notificações activas, destinatário na allowlist, Oferta válida e permissão efectiva reconferida antes do envio. O corpo contém referência e ligação protegida, sem descrição, contacto ou valores empresariais. Usa o transporte existente; não se acrescenta SMS ou outro motor. + +Ensaiar preferencialmente numa cópia isolada com código/configuração SMTP equivalentes e dados exclusivamente sintéticos, saída de correio restrita a **uma caixa de teste indicada pela Tempo**. A caixa ainda não foi designada; não assumir um endereço operacional. Provisionar segredos pelo mecanismo existente, sem exportá-los no pacote. Não copiar utilizadores reais, consumir a fila partilhada nem mudar a allowlist/flag global da homologação afectando os restantes serviços. + +Depois de autorização do ensaio, criar decisão sintética/notificação pelo serviço existente e processar apenas o job identificado. Conferir aceitação pelo transporte e recepção efectiva na caixa, referência/ligação correcta, remetente, ausência de dados reservados e comportamento após perda de permissão. Guardar ID técnico/horário e resultado, sem credenciais. A aceitação SMTP isolada não basta como entrega na caixa. Se houver reenvio por falha, registar tentativas; não prometer entrega exactamente uma vez, pois o job admite retries. Não activar notificações globais ou escoar filas acumuladas para efectuar esta prova. Nesta preparação não se enviou email. + +## Decisões jurídicas ainda necessárias + +1. **NDA:** exemplar e versão aprovados, referência da decisão e âmbito aplicável. O mecanismo técnico não inventa texto, assinatura válida ou concessão de transferência para relatórios. Mantém-se fechado enquanto ausente. +2. **Imóveis:** tipos de comprovativo admissíveis e tratamento a dar à titularidade/representação declarada; acesso continua interno, não se certifica direito ou licença por upload/scan. +3. **Avisos/validade:** texto aplicável à divulgação/interesse, responsabilidades e confidencialidade; prazo/política final de validade. Não escolher um prazo ou inventar exclusões jurídicas. São decisões para os comportamentos dependentes/publicação, não motivos para refazer as provas privadas aceites. + +## Cópia, instalação futura e reversão + +**Preparação material:** bundle Git local da candidata `9a014268`, com pré-requisito histórico `96f51096`, em `outputs/offers-homologation-preparation-20261114/offers-9a014268.bundle`; manifestos/hashes na mesma pasta. Não foi enviado ao servidor. Confirmar que o destino contém o pré-requisito e que o delta não sobrepõe alterações posteriores; não instalar por `reset --hard` nem substituir árvore com trabalho alheio. + +1. **Antes de qualquer escrita:** após autorização concreta, identificar destino/revisão/schema/configuração e conferir delta completo. Qualquer diferença de estrutura, configuração partilhada, revisão ou permissões não abrangida interrompe a instalação para decisão específica. +2. **Backup actual:** cópia consistente da base, ficheiros privados e manifestos, configuração e chaves protegidas, revisão anterior e artefactos. Não imprimir segredos. Conferir hash/identificadores/contagens e ensaiar restauro isolado com leitura de documentos cifrados e histórico. O backup antigo de `96f51096` é referência histórica e não serve como backup actual. **Nenhum novo backup ou restauro do destino foi efectuado nesta passagem.** +3. **Executar pelo processo Git existente:** candidata e manifesto aprovados, dependências fixadas, assets próprios de produção e caches/workers conforme procedimento existente. Não executar migrações por rotina; não activar publicação, NDA, agendamento, destaques ou correio partilhado. Manter dados e integrações existentes. +4. **Conferir após instalar:** SHA servido/assets, HTTP e logs, autenticação/MFA/âmbito, circuitos privados sintéticos, permanência dos bloqueios públicos, integridade dos uploads e compatibilidade com oportunidades/dossiers, instituições e demografia existentes. Não reexecutar importações ou publicação de conteúdo para provar integridade. Registar diferenças de runtime/cache/sessões separadamente de dados de negócio. +5. **Reverter antes de uso:** se não existirem escritas novas de Ofertas e a revisão anterior for compatível, repor apenas código/assets/configuração alterados no âmbito aprovado e conferir novamente; conservar logs e cópias. +6. **Reverter depois de uso:** não regressar cegamente à F4 ou revisão que ignore retirada/expiração, hashes v4 ou confidencialidade. A F4 não testa `OfferAvailability` no leitor protegido. Usar recuperação compatível que preserve as guardas novas e todo o JSON/histórico/tarefas/notificações. Se não existir revisão de recuperação comprovada, suspender o acesso afectado pelo mecanismo administrativo já autorizado, sem enfraquecer autenticação e sem inventar um interruptor; preparar correcção em frente. Não apagar estados para acomodar código antigo. +7. **Restauro de dados:** não restaurar indiscriminadamente sobre actividade posterior. Delimitar o incidente, preservar as novas escritas e aprovar reconciliação/restauro próprio. Sem `down` destrutivo, perda de decisões ou alterações a `mne`. + +## Matriz de decisão final + +| Plano | Estado actual | +| --- | --- | +| Aprovação técnica F1–F5 e continuidade em QA | Aceite com as ressalvas documentadas; integridade reconfirmada | +| Instalação privada de avaliação em homologação | Tecnicamente recomendável, condicionada ao preflight real, backup/restauro, delta/reversão e nova autorização expressa | +| Instalação efectuada / ambiente actualmente comprovado | Não; revisão/schema/runtime actuais do destino não verificados nesta passagem | +| GD/derivadas, visual/móvel e email real | Pendentes; não impedem por si só instalar código fechado para avaliação, mas impedem declarar essas funções aceites | +| Publicação operacional / NDA real | Bloqueados; sem autorização e sem activação | + +Próxima acção: decisão da Tempo sobre a instalação privada da candidata e condições acima. Esta preparação não executa essa decisão nem declara concluídas as verificações no destino. diff --git a/outputs/offers-homologation-preparation-20261114/offers-9a014268.bundle b/outputs/offers-homologation-preparation-20261114/offers-9a014268.bundle new file mode 100644 index 00000000..c0c3ebc2 Binary files /dev/null and b/outputs/offers-homologation-preparation-20261114/offers-9a014268.bundle differ diff --git a/outputs/offers-homologation-preparation-20261114/package-manifest.json b/outputs/offers-homologation-preparation-20261114/package-manifest.json new file mode 100644 index 00000000..2ff16cbd --- /dev/null +++ b/outputs/offers-homologation-preparation-20261114/package-manifest.json @@ -0,0 +1,14 @@ +{ + "candidate": "9a01426864a47dacd97db2b4da363aba86a94df6", + "bundle": "offers-9a014268.bundle", + "bundle_sha256": "446309507638faed558922a4f1a1c515ae4cf2e47ad4e78f4e125a4f61b2ef35", + "required_git_commit": "96f510965f70581a4b41dd94463f598b77dd7cf5", + "bundle_verification": "The bundle contains this ref:\n9a01426864a47dacd97db2b4da363aba86a94df6 refs/heads/qa/editorial-fase1-20261113\nThe bundle requires this ref:\n96f510965f70581a4b41dd94463f598b77dd7cf5 \nThe bundle uses this hash algorithm: sha1\noutputs/offers-homologation-preparation-20261114/offers-9a014268.bundle is okay\n", + "report": "docs/investmoz/v2/auditoria-portal/ofertas-prontidao-homologacao-20261114.md", + "target": "https://teste-investidor.tempo.co.mz", + "target_current_revision_verified": false, + "installation_authorized": false, + "public_activation_authorized": false, + "matrix_other_rows_preserved": true, + "acceptance": "Private QA integration accepted; controlled private homologation recommended subject to destination preflight, current backup/restore, compatible rollback and explicit authorisation." +} diff --git a/outputs/offers-homologation-preparation-20261114/readiness-verification.json b/outputs/offers-homologation-preparation-20261114/readiness-verification.json new file mode 100644 index 00000000..7de160b3 --- /dev/null +++ b/outputs/offers-homologation-preparation-20261114/readiness-verification.json @@ -0,0 +1,278 @@ +{ + "candidate": "9a01426864a47dacd97db2b4da363aba86a94df6", + "historical_destination_receipt": "outputs/administration-dashboard-hierarchy-20261114/destination-installation-verified.json", + "historical_destination_revision": "96f510965f70581a4b41dd94463f598b77dd7cf5", + "destination_live_verified": false, + "phase_ancestry": { + "1f2990e4": true, + "6e302db6": true, + "91c18573": true, + "7691cab3": true, + "e431de8b": true, + "528a2597": true, + "ed2fd86f": true, + "9a014268": true + }, + "receipt_hash_checks": [ + { + "commit": "528a2597", + "path": "app/Console/Commands/ExpirePrivateOffers.php", + "matches": true + }, + { + "commit": "528a2597", + "path": "app/Http/Controllers/OfferPublicCatalogueController.php", + "matches": true + }, + { + "commit": "528a2597", + "path": "app/Http/Controllers/PortalEditorialWorkflowController.php", + "matches": true + }, + { + "commit": "528a2597", + "path": "app/Http/Controllers/PrivateOfferOperationsController.php", + "matches": true + }, + { + "commit": "528a2597", + "path": "app/Http/Controllers/PrivateOfferPreparationController.php", + "matches": true + }, + { + "commit": "528a2597", + "path": "app/Services/OfferAvailability.php", + "matches": true + }, + { + "commit": "528a2597", + "path": "app/Services/OfferPublicCatalogue.php", + "matches": true + }, + { + "commit": "528a2597", + "path": "app/Services/OpportunityProfileWorkflow.php", + "matches": true + }, + { + "commit": "528a2597", + "path": "app/Services/PrivateOfferConfidentiality.php", + "matches": true + }, + { + "commit": "528a2597", + "path": "app/Services/PrivateOfferOperations.php", + "matches": true + }, + { + "commit": "528a2597", + "path": "app/Services/PrivateOfferPreparation.php", + "matches": true + }, + { + "commit": "528a2597", + "path": "config/private_offers.php", + "matches": true + }, + { + "commit": "528a2597", + "path": "docs/investmoz/unification/traceability-and-manual.md", + "matches": true + }, + { + "commit": "528a2597", + "path": "docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv", + "matches": true + }, + { + "commit": "528a2597", + "path": "docs/investmoz/v2/auditoria-portal/ofertas-fase5-fecho-qa-20261114.md", + "matches": true + }, + { + "commit": "528a2597", + "path": "resources/js/components/offer-operations.tsx", + "matches": true + }, + { + "commit": "528a2597", + "path": "resources/js/components/public-offer-card.tsx", + "matches": true + }, + { + "commit": "528a2597", + "path": "resources/js/lib/public-offer.ts", + "matches": true + }, + { + "commit": "528a2597", + "path": "resources/js/pages/management/editorial-workflow.tsx", + "matches": true + }, + { + "commit": "528a2597", + "path": "resources/js/pages/offers/preparation-index.tsx", + "matches": true + }, + { + "commit": "528a2597", + "path": "resources/js/pages/offers/preparation.tsx", + "matches": true + }, + { + "commit": "528a2597", + "path": "resources/js/pages/offers/public-detail.tsx", + "matches": true + }, + { + "commit": "528a2597", + "path": "resources/js/pages/offers/report.tsx", + "matches": true + }, + { + "commit": "528a2597", + "path": "routes/console.php", + "matches": true + }, + { + "commit": "528a2597", + "path": "routes/web.php", + "matches": true + }, + { + "commit": "528a2597", + "path": "tests/Feature/PrivateOfferOperationsTest.php", + "matches": true + }, + { + "commit": "528a2597", + "path": "outputs/offers-private-phase5-20261114/focused.log", + "matches": true + }, + { + "commit": "528a2597", + "path": "outputs/offers-private-phase5-20261114/focused.xml", + "matches": true + }, + { + "commit": "528a2597", + "path": "outputs/offers-private-phase5-20261114/regression.log", + "matches": true + }, + { + "commit": "528a2597", + "path": "outputs/offers-private-phase5-20261114/regression.xml", + "matches": true + }, + { + "commit": "528a2597", + "path": "outputs/offers-private-phase5-20261114/global-format.log", + "matches": true + }, + { + "commit": "528a2597", + "path": "outputs/offers-private-phase5-20261114/build-final.log", + "matches": true + }, + { + "commit": "9a014268", + "path": "app/Services/InvestorContext.php", + "matches": true + }, + { + "commit": "9a014268", + "path": "tests/Feature/OfferInvestmentAcceptanceAuditTest.php", + "matches": true + }, + { + "commit": "9a014268", + "path": "tests/Feature/PrivateOfferConfidentialityTest.php", + "matches": true + }, + { + "commit": "9a014268", + "path": "tests/frontend/offer-investment-continuity.test.mjs", + "matches": true + }, + { + "commit": "9a014268", + "path": "outputs/offers-investment-continuity-20261114/focused.log", + "matches": true + }, + { + "commit": "9a014268", + "path": "outputs/offers-investment-continuity-20261114/focused.xml", + "matches": true + }, + { + "commit": "9a014268", + "path": "outputs/offers-investment-continuity-20261114/frontend-regression.log", + "matches": true + }, + { + "commit": "9a014268", + "path": "outputs/offers-investment-continuity-20261114/integrated-report-input.json", + "matches": true + }, + { + "commit": "9a014268", + "path": "outputs/offers-investment-continuity-20261114/location-analysis.json", + "matches": true + }, + { + "commit": "9a014268", + "path": "outputs/offers-investment-continuity-20261114/phpstan.log", + "matches": true + }, + { + "commit": "9a014268", + "path": "outputs/offers-investment-continuity-20261114/private-integrated-report.docx", + "matches": true + }, + { + "commit": "9a014268", + "path": "outputs/offers-investment-continuity-20261114/private-integrated-report.html", + "matches": true + }, + { + "commit": "9a014268", + "path": "outputs/offers-investment-continuity-20261114/regression.log", + "matches": true + }, + { + "commit": "9a014268", + "path": "outputs/offers-investment-continuity-20261114/regression.xml", + "matches": true + }, + { + "commit": "9a014268", + "path": "outputs/offers-investment-continuity-20261114/report-test.log", + "matches": true + }, + { + "commit": "9a014268", + "path": "outputs/offers-investment-continuity-20261114/types.log", + "matches": true + } + ], + "all_hashes_match": true, + "migration_or_lockfile_delta_since_historical_destination": [], + "local_php": { + "version": "8.5.11", + "gd": false, + "imagewebp": false + }, + "publication": "closed by model/workflow/native scope and normal OfferPublicCatalogue; synthetic injection only in isolated testing", + "defaults": { + "nda": null, + "validity_days": null, + "validity_policy_reference": null, + "expiry_scheduler_enabled": false + }, + "installation_authorized": false, + "installation_executed": false, + "backup_current_destination_created": false, + "restore_current_destination_tested": false, + "real_email_sent": false, + "product_files_modified_this_preparation": false +}