diff --git a/app/Http/Controllers/InvestmentPreparationController.php b/app/Http/Controllers/InvestmentPreparationController.php
new file mode 100644
index 00000000..74602a78
--- /dev/null
+++ b/app/Http/Controllers/InvestmentPreparationController.php
@@ -0,0 +1,50 @@
+validate(['opportunity' => 'nullable|string|max:150', 'history_scope' => 'nullable|in:dossier', 'history_before' => 'nullable|integer|min:1']);
+ $data = $workspace->view($request->user(), $id, $request->query('opportunity'), $request->filled('history_before') ? $request->integer('history_before') : null, $request->query('history_scope') === 'dossier');
+
+ return $request->expectsJson() ? response()->json($data) : Inertia::render('investor-path/preparation', ['workspace' => $data]);
+ }
+
+ public function change(Request $request, string $id, InvestmentPreparationWorkspace $workspace): JsonResponse
+ {
+ return response()->json($workspace->change($request->user(), $id, $request->all()));
+ }
+
+ public function preview(Request $request, string $id, InvestmentPreparationWorkspace $workspace): \Illuminate\Http\Response
+ {
+ $request->validate(['opportunity' => 'nullable|string|max:150', 'history_scope' => 'nullable|in:dossier']);
+ $data = $workspace->view($request->user(), $id, $request->query('opportunity'), null, $request->query('history_scope') === 'dossier');
+
+ return response()->view('investments.preparation-index', ['workspace' => $data, 'manifest' => null])->header('Content-Security-Policy', "sandbox; default-src 'none'; style-src 'unsafe-inline'")->header('X-Content-Type-Options', 'nosniff');
+ }
+
+ public function download(Request $request, string $id, string $exportId, InvestmentPreparationWorkspace $workspace): \Illuminate\Http\Response
+ {
+ $request->validate(['opportunity' => 'nullable|string|max:150', 'history_scope' => 'nullable|in:dossier']);
+ $bundle = $workspace->bundle($request->user(), $id, $request->query('opportunity'), $exportId, $request->query('history_scope') === 'dossier');
+
+ return response($bundle['bytes'], 200, ['Content-Type' => 'application/zip', 'Content-Disposition' => 'attachment; filename="preparacao-apiex-'.$id.'.zip"', 'X-Export-Id' => $exportId, 'X-Content-Type-Options' => 'nosniff']);
+ }
+
+ public function export(Request $request, string $id, InvestmentPreparationWorkspace $workspace): \Illuminate\Http\Response
+ {
+ $body = [...$request->all(), 'action' => 'apiex_export'];
+ $state = $workspace->change($request->user(), $id, $body);
+ $bundle = $workspace->bundle($request->user(), $id, $state['opportunity'], $body['operation_key']);
+
+ return response($bundle['bytes'], 200, ['Content-Type' => 'application/zip', 'Content-Disposition' => 'attachment; filename="preparacao-apiex-'.$id.'.zip"', 'X-Export-Id' => $bundle['export_id'], 'X-Content-Type-Options' => 'nosniff']);
+ }
+}
diff --git a/app/Services/InvestmentPreparationWorkspace.php b/app/Services/InvestmentPreparationWorkspace.php
new file mode 100644
index 00000000..8aadbfd9
--- /dev/null
+++ b/app/Services/InvestmentPreparationWorkspace.php
@@ -0,0 +1,489 @@
+> */
+ private function rows(mixed $value): array
+ {
+ if (! is_array($value)) {
+ throw new \LogicException('Dossier list is not recoverable; original retained.');
+ }
+ $rows = [];
+ foreach ($value as $row) {
+ if (! is_array($row)) {
+ throw new \LogicException('Dossier row is not recoverable; original retained.');
+ } $rows[] = $row;
+ }
+
+ return $rows;
+ }
+
+ /** @param array $data */
+ private function hash(array $data): string
+ {
+ return hash('sha256', json_encode(Arr::sortRecursive($data), JSON_THROW_ON_ERROR));
+ }
+
+ private function events(string $id, ?string $opportunity): Builder
+ {
+ return DB::table('audit_events')->where('source_system', self::SOURCE)->where('entity_type', 'desk_cases')->where('entity_id', $id)
+ ->where('after_data->scope', $opportunity ?? 'dossier');
+ }
+
+ /** @return array */
+ private function decode(?\stdClass $event): array
+ {
+ return $event ? json_decode(Crypt::decryptString(json_decode($event->after_data, true, 512, JSON_THROW_ON_ERROR)['snapshot']), true, 512, JSON_THROW_ON_ERROR)
+ : ['version' => 0, 'apiex' => ['additional_documents' => [], 'note' => '', 'review' => null, 'exports' => [], 'external' => []],
+ 'swot' => ['object_key' => '', 'scope' => '', 'rows' => [], 'source_fingerprint' => '', 'review' => null, 'actions' => []]];
+ }
+
+ /** @return array */
+ private function current(string $id, ?string $opportunity): array
+ {
+ return $this->decode($this->events($id, $opportunity)->orderByRaw("(after_data->>'version')::integer DESC")->first());
+ }
+
+ /** @return array{0: \stdClass, 1: array, 2: ?string, 3: array, 4: bool} */
+ private function context(User $actor, string $id, ?string $opportunity, bool $initialScope = false): array
+ {
+ abort_unless(app(InvestorPath::class)->available() && app(PrivateInvestmentPreparation::class)->available(), 404);
+ $case = $this->desk->case($actor, $id);
+ abort_unless($this->desk->owns($actor, $case, false) || $actor->can('manage-portal'), 403);
+ $context = app(InvestorContext::class)->state($case);
+ $scope = app(InvestmentConsumerScope::class);
+ $historical = false;
+ abort_if($initialScope && ! $this->events($id, null)->exists(), 404);
+ $choices = array_column(array_column($context['opportunity_choices'] ?? [], 'opportunity'), 'key');
+ if ((($opportunity && ! in_array($opportunity, $choices, true)) || ($initialScope && $choices)) && $this->events($id, $opportunity)->exists()) {
+ $saved = $this->current($id, $opportunity);
+ $last = $saved['apiex']['exports'] ? $saved['apiex']['exports'][array_key_last($saved['apiex']['exports'])] : null;
+ $oldContext = $saved['context_snapshot'] ?? $last['prepared']['context'] ?? $saved['swot']['sources_snapshot']['context'] ?? null;
+ abort_unless(is_array($oldContext), 409, 'Contexto histórico conservado; snapshot de consulta indisponível.');
+ $context = $oldContext;
+ $historical = true;
+ } else {
+ $opportunity = $scope->key($context, $opportunity, true);
+ $context = $scope->context($context, $opportunity);
+ }
+
+ $documents = app(InvestorContext::class)->preparationDocuments($id);
+ // Reuse request-level document authorization, including for a dossier team member.
+ $documents = array_values(array_filter($documents, function ($document) use ($actor, $id) {
+ $link = DB::table('desk_documents')->where('id', $document['id'])->where('case_id', $id)->first();
+ if ($link?->request_id) {
+ try {
+ $this->desk->request($actor, $link->request_id);
+ } catch (HttpException $e) {
+ if (in_array($e->getStatusCode(), [403, 404], true)) {
+ return false;
+ } throw $e;
+ }
+ }
+
+ return true;
+ }));
+ foreach ($documents as &$document) {
+ $record = DB::table('documents')->where('id', $document['document_id'])->first();
+ $document['available'] = $record && $record->status === 'active' && $record->malware_scan_status === 'clean'
+ && hash_equals(trim($record->sha256), trim((string) $record->malware_scanned_sha256));
+ }
+ unset($document);
+
+ $unique = [];
+ foreach ($documents as $document) {
+ $unique[$document['document_id']] = $document;
+ }
+
+ return [$case, $context, $opportunity, array_values($unique), $historical];
+ }
+
+ /** @param array $context
+ * @return array */
+ private function sources(User $actor, \stdClass $case, array $context, string $object): array
+ {
+ $objects = [['key' => 'investment:'.$case->id, 'label' => $case->title, 'kind' => 'investment']];
+ $evidence = [];
+ $refs = array_values($context['selection'] ?? []);
+ foreach ($context['opportunity_choices'] ?? [] as $choice) {
+ $refs[] = $choice['opportunity'];
+ }
+ foreach ($refs as $ref) {
+ if (! is_array($ref) || empty($ref['key'])) {
+ continue;
+ }
+ try {
+ $live = app(InvestorContext::class)->reference($ref['key']);
+ } catch (ModelNotFoundException|HttpException $e) {
+ $live = ['key' => $ref['key'], 'unavailable' => true];
+ }
+ $evidence[$ref['key']] = ['key' => $ref['key'], 'label' => $ref['title'] ?? $ref['key'], 'consulted' => $ref, 'current' => $live];
+ if (in_array($ref['kind'] ?? '', ['territory', 'sector'], true)) {
+ $objects[] = ['key' => $ref['key'], 'label' => $ref['title'], 'kind' => $ref['kind']];
+ }
+ if (($ref['kind'] ?? '') === 'portfolio') {
+ $portfolio = InvestmentPortfolioController::visible()->whereKey($ref['id'])->first();
+ if ($portfolio?->cluster_id) {
+ $cluster = EconomicCluster::find($portfolio->cluster_id);
+ if ($cluster) {
+ $objects[] = ['key' => 'cluster:'.$cluster->id, 'label' => $cluster->getAttribute('name'), 'kind' => 'cluster'];
+ }
+ }
+ }
+ }
+ // Sector/territory may have been deliberately entered rather than selected as a source.
+ foreach ([['sector', 'sector_id'], ['territory', 'province_id'], ['territory', 'district_id'], ['territory', 'admin_post_id'], ['territory', 'locality_id']] as [$kind, $field]) {
+ if (! empty($context['fields'][$field])) {
+ $key = $kind.':'.$context['fields'][$field];
+ try {
+ $ref = app(InvestorContext::class)->reference($key);
+ $objects[] = ['key' => $key, 'label' => $ref['title'], 'kind' => $kind];
+ $evidence[$key] = ['key' => $key, 'label' => $ref['title'], 'consulted' => $ref, 'current' => $ref];
+ } catch (ModelNotFoundException|HttpException $e) { /* Keep the declared context; do not invent evidence. */
+ }
+ }
+ }
+ // A manually chosen cluster must already be a public, visible portfolio association.
+ if (str_starts_with($object, 'cluster:')) {
+ $clusterId = substr($object, 8);
+ $visible = InvestmentPortfolioController::visible()->where('cluster_id', $clusterId)->exists();
+ $cluster = $visible ? EconomicCluster::find($clusterId) : null;
+ $objects[] = ['key' => $object, 'label' => $cluster ? $cluster->getAttribute('name') : 'Cluster da análise guardada — fonte actual indisponível', 'kind' => 'cluster'];
+ }
+ foreach ($objects as $item) {
+ if ($item['kind'] === 'cluster') {
+ $evidence[$item['key']] = ['key' => $item['key'], 'label' => 'Competitividade — '.$item['label'],
+ 'current' => InvestmentPortfolioController::visible()->where('cluster_id', substr($item['key'], 8))->exists() ? app(ClusterCompetitiveness::class)->publicData(substr($item['key'], 8)) : null, 'notice' => 'Versão pública aprovada; ausência de análise não prova ausência de oferta/concorrência.'];
+ }
+ }
+
+ $unique = [];
+ foreach ($objects as $item) {
+ $unique[$item['key']] = $item;
+ }
+
+ return [array_values($unique), array_values($evidence)];
+ }
+
+ /** @return array */
+ public function view(User $actor, string $id, ?string $opportunity = null, ?int $historyBefore = null, bool $initialScope = false): array
+ {
+ [$case, $context, $opportunity, $documents, $historical] = $this->context($actor, $id, $opportunity, $initialScope);
+ $state = $this->current($id, $opportunity);
+ [$objects, $sources] = $this->sources($actor, $case, $context, $state['swot']['object_key']);
+ $payload = $this->desk->decode($case->payload);
+ $reused = ['investor' => Arr::only($payload, ['name', 'email']), 'profile' => Arr::only($payload['profile'] ?? [], ['phone', 'nuit', 'address', 'country_code', 'nationality', 'residence_country_code']), 'company' => Arr::only($payload['company'] ?? [], ['id', 'name', 'nuit', 'registration', 'address', 'type']), 'company_version' => $payload['company_version'] ?? null, 'notice' => 'Valores autorizados conservados no dossier; não foram substituídos por dados recentes de outra origem.'];
+ if ($historical && isset($state['reused_snapshot'])) {
+ $reused = $state['reused_snapshot'];
+ }
+ foreach ($documents as $document) {
+ $sources[] = ['key' => 'document:'.$document['document_id'], 'label' => $document['file_name'], 'current' => $document, 'notice' => 'Documento privado do dossier; disponibilidade não certifica o conteúdo.'];
+ }
+ $assessment = app(PrivateInvestmentPreparation::class)->assess($context, $documents);
+ $issues = $assessment['missing_labels'];
+ if (! $assessment['enabled'] || ! $assessment['period_covered'] || ! $assessment['scope_covered'] || $assessment['mode'] === 'indeterminate') {
+ $issues[] = 'Completar o enquadramento da preparação existente.';
+ }
+ foreach ($assessment['requirements'] as &$requirement) {
+ $document = collect($this->rows($documents))->firstWhere('document_id', $requirement['document_id']);
+ $requirement['available'] = $document['available'] ?? false;
+ if ($requirement['state'] === 'indeterminate' || ($requirement['required'] && ! $requirement['available'])) {
+ $issues[] = $requirement['label'];
+ }
+ }
+ unset($requirement);
+ $selected = array_values(array_unique([...collect($this->rows($assessment['requirements']))->where('required', true)->pluck('document_id')->filter()->all(), ...$state['apiex']['additional_documents']]));
+ foreach ($selected as $doc) {
+ if (! (collect($this->rows($documents))->firstWhere('document_id', $doc)['available'] ?? false)) {
+ $issues[] = 'Anexo indisponível: '.$doc;
+ }
+ }
+ $documentary = array_values(array_filter($documents, fn ($d) => in_array($d['document_id'], $selected, true)));
+ $fingerprint = $this->hash(['context' => $context, 'reused' => $reused, 'assessment' => $assessment, 'documents' => $documentary, 'note' => $state['apiex']['note']]);
+ $swotFingerprint = $this->hash($this->sourceSnapshot($context, $reused, $sources, $state['swot']['object_key'], $state['swot']['rows']));
+ $external = collect($this->rows($state['apiex']['external']));
+ $apiState = $external->contains('kind', 'decision') ? 'decision_received' : ($external->contains('kind', 'delivery') ? 'delivery_recorded' : (! $issues && ($state['apiex']['review']['fingerprint'] ?? null) === $fingerprint ? 'ready' : 'preparing'));
+ $query = $opportunity ? '?opportunity='.urlencode($opportunity) : '';
+ $editQuery = $historical ? '' : $query;
+
+ $savedScopes = DB::table('audit_events')->where('source_system', self::SOURCE)->where('entity_type', 'desk_cases')->where('entity_id', $id)->selectRaw("DISTINCT after_data->>'scope' as scope")->get()->map(fn ($row) => ['key' => $row->scope, 'label' => $row->scope === 'dossier' ? 'Contexto inicial do dossier' : $row->scope, 'href' => '/investimentos/'.$id.'/preparacao?'.($row->scope === 'dossier' ? 'history_scope=dossier' : 'opportunity='.urlencode($row->scope))])->all();
+ $historyRows = $this->events($id, $opportunity)->when($historyBefore !== null, fn ($q) => $q->whereRaw("(after_data->>'version')::integer < ?", [$historyBefore]))->orderByRaw("(after_data->>'version')::integer DESC")->limit(26)->get();
+ $history = $historyRows->take(25)->map(fn ($e) => ['version' => json_decode($e->after_data, true)['version'], 'action' => $e->action, 'at' => $e->occurred_at, 'actor' => $e->actor_user_id, 'operation_key' => $e->correlation_id])->values()->all();
+
+ return ['case' => ['id' => $id, 'title' => $case->title, 'closed' => $case->closed_at !== null], 'opportunity' => $opportunity, 'opportunity_label' => $context['selection']['opportunity']['title'] ?? null,
+ 'historical' => $historical, 'initial_scope' => $initialScope, 'saved_scopes' => $savedScopes, 'version' => $state['version'], 'apiex' => $state['apiex'], 'swot' => $state['swot'], 'assessment' => $assessment, 'context' => $context, 'reused' => $reused,
+ 'documents' => $documents, 'selected_documents' => $documentary, 'api_issues' => array_values(array_unique($issues)), 'api_state' => $apiState,
+ 'api_fingerprint' => $fingerprint, 'swot_fingerprint' => $swotFingerprint,
+ 'swot_review_required' => $state['swot']['source_fingerprint'] !== $swotFingerprint || ($state['swot']['review']['fingerprint'] ?? null) !== $swotFingerprint,
+ 'objects' => $objects, 'sources' => $sources, 'can_write' => ! $historical && ! $case->closed_at && $this->desk->owns($actor, $case),
+ 'can_review' => ! $historical && ! $case->closed_at && ($this->desk->owns($actor, $case) || $actor->can('manage-portal')),
+ 'links' => ['dossier' => '/investimentos/'.$id.$editQuery, 'context' => '/investimentos/'.$id.'/contexto/editar'.$editQuery,
+ 'documents' => '/balcao-virtual/dossiers/'.$id.$query, 'partners' => '/parcerias/painel?context='.$id.($opportunity ? '&opportunity='.urlencode($opportunity) : ''),
+ 'library' => '/documentos?context='.$id.($opportunity ? '&opportunity='.urlencode($opportunity) : ''),
+ 'editorial' => '/acesso-gestao', 'idea' => '/investimentos/'.$id.'/contexto/editar'.$query.'#project-summary', 'opportunity' => '/investimentos/'.$id.'/contexto/editar'.$query.'#project-summary', 'risk' => '/investimentos/'.$id.$query.'#tarefas'],
+ 'history' => $history, 'history_next' => $historyRows->count() > 25 ? ($history[count($history) - 1]['version'] ?? null) : null];
+ }
+
+ /** @param array $context
+ * @param array $reused
+ * @param array $sources
+ * @param array $rows
+ * @return array */
+ private function sourceSnapshot(array $context, array $reused, array $sources, string $object, array $rows): array
+ {
+ $used = array_column($rows, 'source_key');
+ $tracked = array_values(array_filter($sources, fn ($source) => ! str_starts_with($source['key'], 'document:') || in_array($source['key'], $used, true)));
+
+ return ['context' => $context, 'reused' => $reused, 'sources' => $tracked, 'object' => $object];
+ }
+
+ /** @return array|null */
+ public function continuation(User $actor, string $id, ?string $opportunity, mixed $actionId): ?array
+ {
+ if (! is_string($actionId) || ! Str::isUuid($actionId)) {
+ return null;
+ }
+ [, , $scope] = $this->context($actor, $id, $opportunity);
+
+ return collect($this->rows($this->current($id, $scope)['swot']['actions']))->firstWhere('id', $actionId);
+ }
+
+ /** @return list */
+ public function taskKeys(User $actor, string $id, string $opportunity): array
+ {
+ [, , $scope] = $this->context($actor, $id, $opportunity);
+
+ return array_values(array_map(fn ($action) => 'swot:'.$action['id'], $this->current($id, $scope)['swot']['actions']));
+ }
+
+ /** @param array $input
+ * @param array $view
+ * @return array */
+ private function draft(array $input, array $view): array
+ {
+ $data = Validator::make($input, ['object_key' => ['required', Rule::in(array_column($view['objects'], 'key'))], 'scope' => 'present|nullable|string|max:4000',
+ 'source_fingerprint' => 'present|string|size:64', 'rows' => 'present|array|list|max:80', 'rows.*' => 'array:id,dimension,text,reference,source_key,date,classification',
+ 'rows.*.id' => 'required|uuid|distinct', 'rows.*.dimension' => 'required|in:strength,weakness,opportunity,threat',
+ 'rows.*.classification' => 'required|in:documented_fact,hypothesis,unconfirmed', 'rows.*.text' => 'present|nullable|string|max:4000',
+ 'rows.*.reference' => 'present|nullable|string|max:4000', 'rows.*.source_key' => ['nullable', Rule::in(array_column($view['sources'], 'key'))], 'rows.*.date' => 'nullable|date_format:Y-m-d'])->validate();
+
+ $snapshot = $this->sourceSnapshot($view['context'], $view['reused'], $view['sources'], $data['object_key'], $data['rows']);
+
+ return [...$data, 'sources_snapshot' => $snapshot, 'snapshot_fingerprint' => $this->hash($snapshot), 'review' => null, 'actions' => $view['swot']['actions']];
+ }
+
+ /** @param array $input
+ * @return array */
+ public function change(User $actor, string $id, array $input): array
+ {
+ $control = Validator::make($input, ['opportunity' => 'nullable|string|max:150', 'version' => 'required|integer|min:0', 'operation_key' => 'required|uuid',
+ 'action' => 'required|in:apiex_save,apiex_review,apiex_export,external,swot_save,swot_review,swot_action,swot_restore', 'reason' => 'required|string|min:3|max:4000'])->validate();
+
+ return DB::transaction(function () use ($actor, $id, $input, $control) {
+ $case = $this->desk->case($actor, $id, false, true);
+ $this->desk->assertOpen($case);
+ $view = $this->view($actor, $id, $control['opportunity'] ?? null);
+ $review = in_array($control['action'], ['apiex_review', 'swot_review'], true);
+ abort_unless($review ? $view['can_review'] : $view['can_write'], 403);
+ $requestHash = $this->hash([...$input, 'actor' => $actor->id]);
+ $prior = $this->events($id, $view['opportunity'])->where('correlation_id', $control['operation_key'])->first();
+ if ($prior) {
+ abort_unless(hash_equals(json_decode($prior->after_data, true)['request_hash'], $requestHash), 409, 'A tentativa já tem outro conteúdo.');
+
+ return [...$this->view($actor, $id, $view['opportunity']), 'replayed' => true];
+ }
+ abort_unless((int) $control['version'] === $view['version'], 409, 'Existe outra versão. Os seus campos foram preservados; consulte e compare antes de substituir.');
+ $state = Arr::only($view, ['version', 'apiex', 'swot']);
+ $receipt = ['actor' => $actor->id, 'at' => now()->toISOString(), 'reason' => $control['reason']];
+ switch ($control['action']) {
+ case 'apiex_save':
+ $data = Validator::make($input, ['note' => 'present|nullable|string|max:6000', 'additional_documents' => 'present|array|list|max:60', 'additional_documents.*' => ['required', 'distinct', Rule::in(array_column($view['documents'], 'document_id'))]])->validate();
+ $state['apiex'] = [...$state['apiex'], ...$data, 'review' => null];
+ break;
+ case 'apiex_review':
+ abort_if($view['api_issues'], 422, 'Complete os requisitos e documentos aplicáveis.');
+ abort_unless(($input['fingerprint'] ?? '') === $view['api_fingerprint'], 409, 'O dossier/documentos mudaram; reveja a versão actual.');
+ foreach ($view['selected_documents'] as $document) {
+ $record = DB::table('documents')->where('id', $document['document_id'])->whereNull('deleted_at')->lockForUpdate()->first();
+ abort_unless($record !== null, 404);
+ app(VerifiedDocumentBinary::class)->respond($record);
+ }
+ $state['apiex']['review'] = [...$receipt, 'fingerprint' => $view['api_fingerprint']];
+ break;
+ case 'apiex_export':
+ abort_if($view['api_issues'] || ($state['apiex']['review']['fingerprint'] ?? '') !== $view['api_fingerprint'], 409, 'Reveja a preparação actual antes de exportar.');
+ $prepared = Arr::only($view, ['case', 'opportunity', 'context', 'reused', 'assessment', 'selected_documents']);
+ $prepared['apiex'] = Arr::only($state['apiex'], ['note', 'review']);
+ $state['apiex']['exports'][] = [...$receipt, 'id' => $control['operation_key'], 'fingerprint' => $view['api_fingerprint'], 'context_revision' => $view['context']['revision'], 'documents' => $view['selected_documents'], 'prepared' => $prepared];
+ break;
+ case 'external':
+ $data = Validator::make($input, ['kind' => 'required|in:delivery,clarification,response,decision', 'date' => 'required|date_format:Y-m-d|before_or_equal:today', 'reference' => 'required|string|max:2000',
+ 'proof_document' => ['required', Rule::in(collect($this->rows($view['documents']))->where('available', true)->pluck('document_id')->all())], 'export_id' => 'required|uuid', 'related_id' => 'nullable|uuid', 'outcome' => 'nullable|in:approved,refused,conditional,other'])->validate();
+ abort_unless(collect($this->rows($state['apiex']['exports']))->contains('id', $data['export_id']), 422, 'Escolha a versão exportada deste dossier/oportunidade.');
+ $same = collect($this->rows($state['apiex']['external']))->where('export_id', $data['export_id']);
+ if ($data['kind'] !== 'delivery') {
+ abort_unless($same->contains('kind', 'delivery'), 422, 'Registe a entrega externa desta versão.');
+ }
+ if ($data['kind'] === 'response') {
+ abort_unless($same->where('kind', 'clarification')->contains('id', $data['related_id'] ?? ''), 422, 'Identifique o pedido de esclarecimento a que responde.');
+ }
+ if ($data['kind'] === 'decision') {
+ abort_unless(! empty($data['outcome']), 422, 'Identifique a decisão efectivamente recebida.');
+ }
+ $record = DB::table('documents')->where('id', $data['proof_document'])->whereNull('deleted_at')->lockForUpdate()->first();
+ abort_unless($record !== null, 404);
+ app(VerifiedDocumentBinary::class)->respond($record);
+ $state['apiex']['external'][] = [...$data, ...$receipt, 'id' => $control['operation_key'], 'proof_snapshot' => collect($this->rows($view['documents']))->firstWhere('document_id', $data['proof_document'])];
+ break;
+ case 'swot_save':
+ $state['swot'] = $this->draft($input['draft'] ?? [], $view);
+ break;
+ case 'swot_review':
+ $swot = $state['swot'];
+ abort_unless(($input['fingerprint'] ?? '') === $view['swot_fingerprint'], 409, 'As fontes mudaram; compare antes de rever.');
+ abort_unless(trim($swot['scope'] ?? '') !== '' && in_array($swot['object_key'], array_column($view['objects'], 'key'), true), 422, 'Identifique objecto e âmbito.');
+ foreach (['strength', 'weakness', 'opportunity', 'threat'] as $dimension) {
+ abort_unless(collect($this->rows($swot['rows']))->contains('dimension', $dimension), 422, 'Trate as quatro dimensões; incerteza deve ficar classificada.');
+ }
+ foreach ($swot['rows'] as $row) {
+ abort_unless(trim($row['text'] ?? '') !== '' && trim($row['reference'] ?? '') !== '' && ! empty($row['date']), 422, 'Cada conclusão exige fonte, data e classificação; desconhecido não é ausência.');
+ }
+ $state['swot']['source_fingerprint'] = $view['swot_fingerprint'];
+ $state['swot']['sources_snapshot'] = $this->sourceSnapshot($view['context'], $view['reused'], $view['sources'], $state['swot']['object_key'], $state['swot']['rows']);
+ $state['swot']['snapshot_fingerprint'] = $view['swot_fingerprint'];
+ $state['swot']['review'] = [...$receipt, 'fingerprint' => $view['swot_fingerprint'], 'version' => $state['version'] + 1];
+ break;
+ case 'swot_action':
+ abort_if($view['swot_review_required'], 409, 'Reveja a análise e as fontes antes de ligar uma acção.');
+ $data = Validator::make($input, ['conclusion_id' => ['required', Rule::in(array_column($state['swot']['rows'], 'id'))], 'kind' => 'required|in:idea,opportunity,partners,risk', 'title' => 'required|string|min:3|max:200'])->validate();
+ $href = $view['links'][$data['kind']];
+ if ($data['kind'] === 'risk') {
+ $href = str_replace('#tarefas', (str_contains($href, '?') ? '&' : '?').'swot_action='.$control['operation_key'].'#tarefas', $href);
+ }
+ $state['swot']['actions'][] = [...$data, ...$receipt, 'id' => $control['operation_key'], 'case_id' => $id, 'opportunity' => $view['opportunity'], 'review_version' => $state['swot']['review']['version'], 'href' => $href];
+ break;
+ case 'swot_restore':
+ $data = Validator::make($input, ['revision' => 'required|integer|min:1'])->validate();
+ $event = $this->events($id, $view['opportunity'])->where('after_data->version', $data['revision'])->first();
+ abort_unless($event !== null, 404);
+ $old = $this->decode($event)['swot'];
+ $state['swot'] = [...$old, 'review' => null, 'actions' => $state['swot']['actions']];
+ break;
+ }
+ $state['context_snapshot'] = $view['context'];
+ $state['reused_snapshot'] = $view['reused'];
+ $state['version']++;
+ DB::table('audit_events')->insert(['source_system' => self::SOURCE, 'entity_type' => 'desk_cases', 'entity_id' => $id, 'external_id' => $id.':'.hash('sha256', $view['opportunity'] ?? 'dossier').':'.$state['version'],
+ 'correlation_id' => $control['operation_key'], 'actor_user_id' => $actor->id, 'action' => $control['action'], 'data_classification' => 'restricted',
+ 'before_data' => json_encode(['version' => $view['version']], JSON_THROW_ON_ERROR), 'after_data' => json_encode(['version' => $state['version'], 'scope' => $view['opportunity'] ?? 'dossier', 'request_hash' => $requestHash, 'snapshot' => Crypt::encryptString(json_encode($state, JSON_THROW_ON_ERROR))], JSON_THROW_ON_ERROR)]);
+
+ return [...$this->view($actor, $id, $view['opportunity']), 'replayed' => false];
+ }, 3);
+ }
+
+ /** Export uses the existing verified binary reader, never a browser-supplied path.
+ * @return array{bytes:string,export_id:string} */
+ public function bundle(User $actor, string $id, ?string $opportunity, string $exportId, bool $initialScope = false): array
+ {
+ return DB::transaction(function () use ($actor, $id, $opportunity, $exportId, $initialScope) {
+ $this->desk->case($actor, $id, false, true);
+ if ($opportunity === null && ! $initialScope) {
+ $scopes = DB::table('audit_events')->where('source_system', self::SOURCE)->where('entity_type', 'desk_cases')->where('entity_id', $id)->where('correlation_id', $exportId)->where('action', 'apiex_export')->selectRaw("DISTINCT after_data->>'scope' as scope")->get();
+ abort_unless($scopes->count() === 1, 422, 'Identifique o âmbito da exportação preservada.');
+ $scope = $scopes->first()->scope;
+ $initialScope = $scope === 'dossier';
+ $opportunity = $initialScope ? null : $scope;
+ }
+ $view = $this->view($actor, $id, $opportunity, null, $initialScope);
+ $export = collect($this->rows($view['apiex']['exports']))->firstWhere('id', $exportId);
+ abort_unless($export !== null, 404);
+ $records = [];
+ foreach ($export['documents'] as $document) {
+ abort_unless(collect($this->rows($view['documents']))->contains('document_id', $document['document_id']), 403);
+ $record = DB::table('documents')->where('id', $document['document_id'])->whereNull('deleted_at')->lockForUpdate()->first();
+ abort_unless($record !== null && $record->status === 'active' && $record->malware_scan_status === 'clean' && hash_equals(trim($document['sha256']), trim($record->sha256)) && hash_equals(trim($record->sha256), trim((string) $record->malware_scanned_sha256)), 404, 'Documento da versão preparada indisponível para descarga; o histórico foi preservado.');
+ app(VerifiedDocumentBinary::class)->authorizeOpportunityAttachment($record);
+ $records[$document['document_id']] = $record;
+ }
+ $disk = Storage::disk('local');
+ $key = 'investor-preparations/'.$id.'/'.hash('sha256', $view['opportunity'] ?? 'dossier').'/'.$exportId.'.zip.enc';
+ if ($disk->exists($key)) {
+ try {
+ $sealed = json_decode(Crypt::decryptString($disk->get($key)), true, 512, JSON_THROW_ON_ERROR);
+ } catch (DecryptException|\JsonException $e) {
+ abort(404, 'Pacote preservado indisponível; não foi substituído.');
+ }
+ abort_unless(($sealed['case_id'] ?? '') === $id && ($sealed['opportunity'] ?? null) === $view['opportunity'] && ($sealed['export_id'] ?? '') === $exportId && ($sealed['fingerprint'] ?? '') === $export['fingerprint'], 404);
+ $bytes = base64_decode($sealed['binary'] ?? '', true);
+ abort_unless(is_string($bytes) && hash_equals($sealed['sha256'] ?? '', hash('sha256', $bytes)), 404);
+
+ return ['bytes' => $bytes, 'export_id' => $exportId];
+ }
+ $prepared = $export['prepared'];
+ abort_unless(is_array($prepared), 409, 'Snapshot de exportação indisponível; original conservado.');
+ $file = tempnam(sys_get_temp_dir(), 'investmoz-apiex-');
+ abort_unless(is_string($file), 503);
+ $zip = new \ZipArchive;
+ $open = false;
+ try {
+ abort_unless($zip->open($file, \ZipArchive::OVERWRITE) === true, 503);
+ $open = true;
+ $manifest = ['format' => 'investmoz-apiex-preparation/1', 'case_id' => $id, 'opportunity' => $view['opportunity'], 'export' => $export, 'context' => $prepared['context'], 'reused' => $prepared['reused'], 'assessment' => $prepared['assessment'], 'notice' => 'Preparação para entrega externa. Não é formulário oficial, submissão electrónica ou aprovação.'];
+ $index = view('investments.preparation-index', ['workspace' => $prepared, 'manifest' => $manifest])->render();
+ abort_unless($zip->addFromString('indice.html', $index), 503);
+ abort_unless($zip->addFromString('manifesto.json', json_encode($manifest, JSON_THROW_ON_ERROR | JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE)), 503);
+ foreach ($export['documents'] as $n => $document) {
+ $record = $records[$document['document_id']];
+ $response = app(VerifiedDocumentBinary::class)->respond($record);
+ $bytes = $response instanceof BinaryFileResponse ? file_get_contents($response->getFile()->getPathname()) : $response->getContent();
+ abort_unless(is_string($bytes), 503);
+ abort_unless($zip->addFromString('anexos/'.sprintf('%02d-', $n + 1).preg_replace('/[^\pL\pN._-]+/u', '-', basename($document['file_name'])), $bytes), 503);
+ }
+ abort_unless($zip->close(), 503);
+ $open = false;
+
+ $bytes = file_get_contents($file);
+ abort_unless(is_string($bytes), 503);
+ $sealed = ['case_id' => $id, 'opportunity' => $view['opportunity'], 'export_id' => $exportId, 'fingerprint' => $export['fingerprint'], 'sha256' => hash('sha256', $bytes), 'binary' => base64_encode($bytes)];
+ $temporary = $key.'.'.Str::uuid().'.tmp';
+ try {
+ abort_unless($disk->put($temporary, Crypt::encryptString(json_encode($sealed, JSON_THROW_ON_ERROR))) && $disk->move($temporary, $key), 503, 'Não foi possível preservar o pacote; repita a mesma exportação.');
+ } finally {
+ $disk->delete($temporary);
+ }
+
+ return ['bytes' => $bytes, 'export_id' => $exportId];
+ } finally {
+ if ($open) {
+ $zip->close();
+ }
+ if (is_file($file)) {
+ unlink($file);
+ }
+ }
+ });
+ }
+}
diff --git a/app/Services/InvestorPath.php b/app/Services/InvestorPath.php
index 7f440381..9a6b6ab2 100644
--- a/app/Services/InvestorPath.php
+++ b/app/Services/InvestorPath.php
@@ -160,7 +160,9 @@ final class InvestorPath
$next = ['code' => 'S06', 'title' => $preparation['next'], 'action' => 'Preparar', 'href' => '/investimentos/'.$id.'/contexto/editar#preparation-questions'];
}
- return ['private_investment' => $preparation, 'case' => ['id' => $id, 'title' => $case->title, 'version' => $case->version, 'closed' => $case->closed_at !== null],
+ $preparationTaskKeys = $opportunity !== null && ($owner || $manager) && app(PrivateInvestmentPreparation::class)->available() ? app(InvestmentPreparationWorkspace::class)->taskKeys($actor, $id, $opportunity) : null;
+
+ return ['preparation_action' => ($owner || $manager) && app(PrivateInvestmentPreparation::class)->available() ? app(InvestmentPreparationWorkspace::class)->continuation($actor, $id, $opportunity, request()->query('swot_action')) : null, 'private_investment' => $preparation, 'case' => ['id' => $id, 'title' => $case->title, 'version' => $case->version, 'closed' => $case->closed_at !== null],
'journey_id' => $journey->id, 'definition_id' => $version->id, 'definition_version' => $version->version_no, 'source_sha256' => $definition['source_sha256'],
'phases' => $definition['phases'], 'steps' => $steps, 'facts' => $facts, 'fact_reasons' => $factReasons,
'context_opportunity' => $opportunity, 'opportunity_options' => $allChoices,
@@ -174,10 +176,12 @@ final class InvestorPath
'content_sources' => ($owner || $manager) ? ($path['content_sources'] ?? []) : [],
'tasks' => DB::table('tasks')->where('desk_case_id', $id)
->whereNull('deleted_at')
+ ->when($preparationTaskKeys !== null, fn ($q) => $q->where(fn ($p) => $p->whereNull('guidance_key')->orWhere('guidance_key', 'not like', 'swot:%')->orWhereIn('guidance_key', $preparationTaskKeys ?? [])))
->when(! $owner && ! $manager, fn ($q) => $q->where('assignee_user_id', $actor->id))
->get(['id', 'title', 'status', 'version_no', 'due_at', 'assignee_user_id']),
'services' => app(DeskServiceAvailability::class)->current()->get()->map(fn ($s) => ['id' => $s->id, 'title' => json_decode($s->definition, true)['title'], 'effective_from' => $s->effective_from ?? null]),
'tools' => ['simulator' => (int) $case->user_id === $actor->id ? '/simulador-fiscal?context='.$id.($case->simulation_id ? '&draft='.$case->simulation_id : '').($opportunity ? '&opportunity='.urlencode($opportunity) : '') : null,
+ 'preparation' => ($owner || $manager) && app(PrivateInvestmentPreparation::class)->available() ? '/investimentos/'.$id.'/preparacao'.($opportunity ? '?opportunity='.urlencode($opportunity) : '') : null,
'company' => '/investimentos/'.$id.'/forma-juridica',
'desk' => '/balcao-virtual/dossiers/'.$id.($opportunity ? '?opportunity='.urlencode($opportunity) : ''), 'guidance' => '/balcao-virtual/dossiers/'.$id.'/orientacao',
'library' => '/documentos?context='.$id, 'opportunities' => '/oportunidades?context='.$id, 'territory' => '/zonas?context='.$id, 'partners' => '/parcerias/painel?context='.$id,
@@ -337,12 +341,16 @@ final class InvestorPath
public function task(User $actor, string $id, array $input): string
{
$data = Validator::make($input, ['version' => 'required|integer|min:1', 'code' => ['required', Rule::in(array_map(fn ($n) => sprintf('S%02d', $n), range(1, 19)))],
+ 'preparation_action' => 'nullable|uuid', 'opportunity' => 'nullable|string|max:150',
'title' => 'required|string|min:3|max:200', 'due_at' => 'required|date|after:now', 'consent' => 'accepted'])->validate();
return DB::transaction(function () use ($actor, $id, $data): string {
$case = $this->desk->case($actor, $id, true, true);
abort_if($case->closed_at, 409);
- $key = 'path:'.$data['code'];
+ if (!empty($data['preparation_action'])) { app(InvestmentConsumerScope::class)->key(app(InvestorContext::class)->state($case), $data['opportunity'] ?? null, true); }
+ $origin = !empty($data['preparation_action']) ? app(InvestmentPreparationWorkspace::class)->continuation($actor, $id, $data['opportunity'] ?? null, $data['preparation_action']) : null;
+ abort_if(!empty($data['preparation_action']) && (!$origin || $origin['kind'] !== 'risk'), 422, 'A acção SWOT não pertence a este dossier/oportunidade ou não é uma acção de risco.');
+ $key = $origin ? 'swot:'.$origin['id'] : 'path:'.$data['code'];
$existing = DB::table('tasks')->where('desk_case_id', $id)->where('guidance_key', $key)->first();
if ($existing) {
abort_unless($existing->title === $data['title'] && (int) $existing->accepted_by === $actor->id
@@ -351,12 +359,12 @@ final class InvestorPath
return $existing->id;
}
$this->writable($actor, $id, $data['version']);
- $step = $this->findStep($this->view($actor, $id), $data['code']);
+ $step = $this->findStep($this->view($actor, $id, $origin['opportunity'] ?? null), $data['code']);
abort_unless($step !== null && $step['preparation_allowed'], 422);
$task = CrmTask::create(['desk_case_id' => $id, 'guidance_key' => $key, 'title' => $data['title'], 'due_at' => $data['due_at'],
'status' => 'open', 'assignee_user_id' => $actor->id, 'accepted_by' => $actor->id, 'accepted_at' => now(),
'external_sync_status' => 'pending_authorization', 'data_classification' => 'confidential', 'source_system' => 'investor-path']);
- $this->desk->event($case, $actor, 'path_task_accepted', ['task_id' => $task->id, 'code' => $data['code'], 'scope' => 'internal_crm']);
+ $this->desk->event($case, $actor, 'path_task_accepted', ['task_id' => $task->id, 'code' => $data['code'], 'scope' => 'internal_crm', 'preparation_action' => $origin['id'] ?? null, 'opportunity' => $origin['opportunity'] ?? null, 'swot_review_version' => $origin['review_version'] ?? null]);
return $task->id;
});
diff --git a/docs/investmoz/unification/traceability-and-manual.md b/docs/investmoz/unification/traceability-and-manual.md
index 6a313653..7bb1ed92 100644
--- a/docs/investmoz/unification/traceability-and-manual.md
+++ b/docs/investmoz/unification/traceability-and-manual.md
@@ -1,3 +1,21 @@
+## 10/11/2026 — APIEX e SWOT no dossier existente: QA concluído, instalação pendente
+
+**Instalado:** `7476dc343098f15a7982e9d7581bf4f59d43bc1a` em https://teste-investidor.tempo.co.mz, promovido às14:28:12UTC e conferido às14:29:07UTC (16:29 locais). Transporte CBF15 deixa de ser pendência de instalação. Delta14hashes Git/HTTPS, root/up/login/revision200, configuração intacta, zero migrations/importações; backup/restauro190tabelas e369ficheiros conferidos. Recibos `outputs/cbf15-carry-delivery-20261110/`; release anterior e pacotes preservados.
+
+**Implementado em QA, ainda não instalado — APIEX:** dossier existente → requisitos fundamentados disponíveis/em falta/não aplicáveis/indeterminados → documentos existentes e complementos → revisão → prévia/ZIP com índice e anexos íntegros → registo da entrega externa, esclarecimento, resposta e decisão com data/referência/comprovativo. Dados do investidor/empresa/contexto/localização/oportunidade reutilizados. Estados em preparação/pronto para entrega/entrega registada/decisão recebida distintos; exportar não submete nem aprova. Snapshot preparado, versões, SHA e pacote privado cifrado preservados; recuperação devolve os mesmos bytes após alteração do contexto, revalidando acesso e segurança dos documentos. Ausência de recepção electrónica APIEX, segundo a orientação Tempo, não bloqueia este percurso; nenhum conector fictício ou formulário oficial inventado. Reutiliza o avaliador e modelos/fontes aceites; períodos/regimes fora do âmbito actualmente mapeado ficam indeterminados, sem conclusão normativa presumida.
+
+**Implementado em QA, ainda não instalado — SWOT:** no mesmo dossier/oportunidade, objecto explícito investimento/território/sector/cluster, evidências do contexto/análise proactiva e Competitividade pública aprovada, quatro dimensões internas/externas, fonte/data/classificação de cada conclusão (facto documentado/hipótese/por confirmar). Sem pontuação, IA ou inferência de ausência pela falta de registos. Gravação/recuperação/histórico paginado e revisão pela equipa com permissões existentes. Alteração/retirada de fontes assinala revisão, conserva fotografia consultada e edições deliberadas. Acções ideia/oportunidade/parceiros/risco continuam no mesmo dossier; risco liga à tarefa nativa com origem própria e repetição sem duplicação. Privado por defeito; publicação exige o fluxo editorial existente, nunca automática. Contextos retirados ficam no histórico privado de leitura, sem reactivação.
+
+Provas sintéticas no QA55441 existente, com rollback: seis casos API/211asserções;16casos frontend dirigidos (incluindo transporte e cabeçalho comum147páginas), tipos, análise estática e lint aprovados. `outputs/investment-preparation-20261110/verification.json`, ZIP/índice/anexos, recuperação SWOT e provas de isolamento/histórico/segurança. Pacote Git agrupado `outputs/entrega-apiex-swot-20261110.zip`, base exacta7476dc34, reversão de código sem apagar auditoria, pacotes privados ou tarefas posteriores. Nenhuma migration/base/porta/conta real nova, submissão real ou publicação. Compilação QA separada; provas anteriores reutilizadas.
+
+**Saldo concreto:** APIEX e SWOT acima encerrados em implementação QA; instalação deste conjunto e conferência visual continuam pendentes. O conector mantém “The browser access host is unavailable”; SSR/testes não substituem visual, sem novo ciclo de reinícios. Os restantes módulos conservam o saldo anterior, incluindo resíduos L1–L7, restanteL8 e L9–L16. Isto não declara o portal integralmente concluído.
+
+### Utilização — preparação APIEX e SWOT
+
+Abra o dossier autorizado e escolha **Preparação APIEX e SWOT** nas ferramentas/documentos. Se houver várias oportunidades, escolha primeiro o contexto; o título e histórico identificam sempre essa escolha. Em APIEX, confira o resumo reutilizado e use **Alterar** para corrigir no editor existente. Confira os requisitos e os documentos disponíveis, complete os que faltam na biblioteca existente, guarde e reveja. A prévia apresenta o índice; exporte e conserve o ZIP. Registe depois a entrega efectivamente realizada externamente, com data, referência e comprovativo; esclarecimentos/respostas/decisão são eventos separados ligados à exportação. Uma decisão recebida não implica aprovação.
+
+Na aba SWOT, escolha objecto/âmbito, consulte as evidências e preencha as quatro dimensões com fonte/data/classificação. Guarde, peça/recolha a revisão com as permissões actuais e associe uma acção à conclusão. A ligação de risco abre a tarefa no mesmo dossier, sem substituir tarefas anteriores. Histórico permite recuperar versões; restauro de SWOT cria novo rascunho sem eliminar entregas externas ou acções. Se uma gravação tiver resposta incerta, repita a mesma intenção ou consulte e compare a versão guardada; a substituição das edições locais é explícita. Fontes alteradas exigem nova revisão, sem reescrever conclusões. Análises ficam privadas; eventual divulgação passa pelo fluxo editorial existente.
+
## 10/11/2026 — transporte documental CBF15 em QA
Homologação mantém `d216830b`; este delta ainda não está instalado. Tipos/lint/Pint/buildQA aprovados; pacote com aplicação/reversão exactas,sem migrations/dados/credenciais. Pendência encerrada no recorte normal residente2026/ano civil/MZN: crédito de investimento de origem anterior do mesmo contribuinte/projecto/local/regime, com activo/documento/parcela, exercício de origem, NUIT/projecto de origem, taxa original e qualificação históricas documentados. Exercício de origem anterior a2026,dentro da janela original e não anterior à aquisição; no projecto em funcionamento,a aquisição não precede o início aplicável. Não renova o prazo nem recalcula origem a outra taxa. Valor corrente/ausência e uso efectivo agregado exigem reconciliação explícita; histórico de simulações não equivale a utilização fiscal.
diff --git a/docs/investmoz/v2/auditoria-portal/backlog.md b/docs/investmoz/v2/auditoria-portal/backlog.md
index 85148dba..4dd4ebbc 100644
--- a/docs/investmoz/v2/auditoria-portal/backlog.md
+++ b/docs/investmoz/v2/auditoria-portal/backlog.md
@@ -1,3 +1,15 @@
+## 10/11/2026 — APIEX e SWOT no dossier existente: QA concluído, instalação pendente
+
+**Instalado:** `7476dc343098f15a7982e9d7581bf4f59d43bc1a` em https://teste-investidor.tempo.co.mz, promovido às14:28:12UTC e conferido às14:29:07UTC (16:29 locais). Transporte CBF15 deixa de ser pendência de instalação. Delta14hashes Git/HTTPS, root/up/login/revision200, configuração intacta, zero migrations/importações; backup/restauro190tabelas e369ficheiros conferidos. Recibos `outputs/cbf15-carry-delivery-20261110/`; release anterior e pacotes preservados.
+
+**Implementado em QA, ainda não instalado — APIEX:** dossier existente → requisitos fundamentados disponíveis/em falta/não aplicáveis/indeterminados → documentos existentes e complementos → revisão → prévia/ZIP com índice e anexos íntegros → registo da entrega externa, esclarecimento, resposta e decisão com data/referência/comprovativo. Dados do investidor/empresa/contexto/localização/oportunidade reutilizados. Estados em preparação/pronto para entrega/entrega registada/decisão recebida distintos; exportar não submete nem aprova. Snapshot preparado, versões, SHA e pacote privado cifrado preservados; recuperação devolve os mesmos bytes após alteração do contexto, revalidando acesso e segurança dos documentos. Ausência de recepção electrónica APIEX, segundo a orientação Tempo, não bloqueia este percurso; nenhum conector fictício ou formulário oficial inventado. Reutiliza o avaliador e modelos/fontes aceites; períodos/regimes fora do âmbito actualmente mapeado ficam indeterminados, sem conclusão normativa presumida.
+
+**Implementado em QA, ainda não instalado — SWOT:** no mesmo dossier/oportunidade, objecto explícito investimento/território/sector/cluster, evidências do contexto/análise proactiva e Competitividade pública aprovada, quatro dimensões internas/externas, fonte/data/classificação de cada conclusão (facto documentado/hipótese/por confirmar). Sem pontuação, IA ou inferência de ausência pela falta de registos. Gravação/recuperação/histórico paginado e revisão pela equipa com permissões existentes. Alteração/retirada de fontes assinala revisão, conserva fotografia consultada e edições deliberadas. Acções ideia/oportunidade/parceiros/risco continuam no mesmo dossier; risco liga à tarefa nativa com origem própria e repetição sem duplicação. Privado por defeito; publicação exige o fluxo editorial existente, nunca automática. Contextos retirados ficam no histórico privado de leitura, sem reactivação.
+
+Provas sintéticas no QA55441 existente, com rollback: seis casos API/211asserções;16casos frontend dirigidos (incluindo transporte e cabeçalho comum147páginas), tipos, análise estática e lint aprovados. `outputs/investment-preparation-20261110/verification.json`, ZIP/índice/anexos, recuperação SWOT e provas de isolamento/histórico/segurança. Pacote Git agrupado `outputs/entrega-apiex-swot-20261110.zip`, base exacta7476dc34, reversão de código sem apagar auditoria, pacotes privados ou tarefas posteriores. Nenhuma migration/base/porta/conta real nova, submissão real ou publicação. Compilação QA separada; provas anteriores reutilizadas.
+
+**Saldo concreto:** APIEX e SWOT acima encerrados em implementação QA; instalação deste conjunto e conferência visual continuam pendentes. O conector mantém “The browser access host is unavailable”; SSR/testes não substituem visual, sem novo ciclo de reinícios. Os restantes módulos conservam o saldo anterior, incluindo resíduos L1–L7, restanteL8 e L9–L16. Isto não declara o portal integralmente concluído.
+
## 10/11/2026 — transporte documental CBF15 em QA
Homologação mantém `d216830b`; este delta ainda não está instalado. Tipos/lint/Pint/buildQA aprovados; pacote com aplicação/reversão exactas,sem migrations/dados/credenciais. Pendência encerrada no recorte normal residente2026/ano civil/MZN: crédito de investimento de origem anterior do mesmo contribuinte/projecto/local/regime, com activo/documento/parcela, exercício de origem, NUIT/projecto de origem, taxa original e qualificação históricas documentados. Exercício de origem anterior a2026,dentro da janela original e não anterior à aquisição; no projecto em funcionamento,a aquisição não precede o início aplicável. Não renova o prazo nem recalcula origem a outra taxa. Valor corrente/ausência e uso efectivo agregado exigem reconciliação explícita; histórico de simulações não equivale a utilização fiscal.
diff --git a/docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv b/docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv
index e86ed200..1cc3fb82 100644
--- a/docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv
+++ b/docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv
@@ -31,7 +31,7 @@ RF-CLU-001,"Administrar clusters, subclusters, cadeias de valor, taxonomias e ve
[Executável 82dab3719ffc] P3 staging privado completo; P4 nominal destino real 27 refs/25 territórios, zero geometrias. Pré-condições fontes conferidas; pacote para decisão, não aplicado. Reversão após uso só manifesto/build, backend e dados retidos. Adaptador ensaiado só em clone: rollback/recuperação após commit e repetição sem duplicações; aplicação 56 fontes inalterada. Acesso público e diferenças visuais/login continuam abertos. Saldo remoto delimitado 4–7 h; sem alterações remotas.
[Executável 312965f2c653] P3 staging privado completo; P4 nominal destino real 27 refs/25 territórios, zero geometrias. Pré-condições fontes conferidas; pacote para decisão, não aplicado. Reversão após uso só manifesto/build, backend e dados retidos. Adaptador ensaiado só em clone: rollback/recuperação após commit e repetição sem duplicações; aplicação 56 fontes inalterada. Acesso público e diferenças visuais/login continuam abertos. Saldo remoto delimitado 4–7 h; sem alterações remotas.
[Homologação 312965f2c653 executada] Autorização Tempo; 30 fichas privadas/30 locais/31 suportes/11 relações/2 originais e 2 definições internas, 233 caminhos conferidos. Dados anteriores/permissões preservados; zero publicação/migrations/geometrias/P7. Saldo delimitado de execução concluído. Dossier legítimo, oito lacunas e questões de autenticação/visual separadas. RECIBO-EXECUCAO-312965.json.",território,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.",resources/js/components/investment-territory.tsx; app/Http/Controllers/InvestmentTerritoryController.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"InvestmentTerritoryTest, TerritorialRegistryTest, InvestmentTerritorialTraceabilityTest, InvestmentZoneTest; 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.,," | QA01: prova positiva delimitada de atividade/cadeia e operações do lote concluída, conservando as aceitações anteriores e a semântica privada/confirmada/pública. | ATIVO01: instalação/importação/publicação autenticadas, scan, repetição idempotente, recuperação pública do ramo A/01/011/0112/01120 e preservação operacional concluídos. Provas funcionais QA aceites reutilizadas, sem repetição."," | QA01: divergência documental 600/579 e edição normativa abertas; cadeia editorial; publicação canónica com pré-condições sintéticas; save legado transacional; sem volume ou recuperação de payload legado cifrado; reversão parcial com sete fontes funcionais. Sem decisão ativa presumida. | ATIVO01: não encerra CAE integral ou divergência 600/579/edição normativa; cadeia exclusivamente editorial. Nenhuma classificação ou relação de investimento real alterada/divulgada. Limites QA anteriores e reversão parcial compatível mantidos; editor UUID ativo de /negocios continua não demonstrado e não bloqueante. Parques, duplicados e regulação Fintech separados.","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-CLU-002,"Relacionar o cluster com projectos, oportunidades, actores e territórios.",upgrade v4 SHA f0b9815…; p. 513; 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. | 16/10/2026 — disponibilização autorizada de negocios-classificacao-QA-53311df2f59c: 11 fontes e 161 ficheiros de build entregues; sem migrations, grants, classificações reais ou divulgação. Catálogo público mantém zero negócios e seis oportunidades. Suplemento de compilação para repor InvesteMoz no título preparado apenas em QA, pendente de decisão. | 16/10/2026 — fecho operacional consolidado: negocios-classificacao-QA-53311df2f59c e suplemento de nome negocios-compilacao-nome-QA-7ef0facd0e27 autorizados e entregues: mesmas 11 fontes, 161 build, título InvesteMoz observado. Sem escrita de negócio/classificação/divulgação.",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-CLU-002: As relações com projectos, negócios, empresas âncora, PME, fornecedores, compradores, financiadores, reguladores e instituições indicam papel, prioridade, período e estado, sem duplicar os registos de origem e com navegação nos dois sentidos.",P1,RF-CLU-002: Relatório 25/09 conservado; estado histórico não promove conclusão,RF-CLU-002,1,"[{""id"":""RF-CLU-002"",""pedido"":""Relacionar o cluster com projectos, oportunidades, actores e territórios."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 513; requirements-audit.csv""],""aceitacao"":""As relações com projectos, negócios, empresas âncora, PME, fornecedores, compradores, financiadores, reguladores e instituições indicam papel, prioridade, período e estado, sem duplicar os registos de origem e com navegação nos dois sentidos."",""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. | 15/10/2026 — incremento de classificação multidimensional em QA: Relações tipadas de uma oportunidade com cluster, projeto e território recuperadas; múltiplos atores empresariais não cadastrados nem inventados. | 15/10/2026 — Tempo autorizou e foi disponibilizada a candidata classificacao-multidimensional-QA-64ab05e20b95 DOC01: 17 fontes/174 build, backup/restauro fresco, cache de dados preservada e reversão compatível. Recorte parcial; restantes limites conservados. | 16/10/2026 — negocios-classificacao-QA-53311df2f59c, exclusivamente QA: Associação tipada com cluster e recuperação do mesmo anúncio demonstradas; múltiplos atores e navegação bidirecional integral não foram demonstrados neste recorte. | 16/10/2026 — disponibilização autorizada de negocios-classificacao-QA-53311df2f59c: Backup/restauro fresco 295 tabelas/31 sequências/2341 ficheiros/29 documentos; clone arrancou em leitura. Conferência operacional de GET/assets e área privada pela conta 2, sem guardar. Dados, papéis e histórico iguais; não encerra a cláusula integral.","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. | Disponibilização DOC01 executada. Limitação operacional concreta: Editor no ativo: não demonstrado nesta conferência. O utilizador informou não ter acesso à conta de Promotora interna Aurora Chachuaio. A sessão efetiva Osmane Nala, conta 2, recebeu 403 em GET /minhas-oportunidades/create; não existe elevação operacional ativa. Os papéis Promotor/Validador dessa conta permanecem atribuídos; as funções de autorização v1 conferem exatamente com a versão anterior à entrega. Existem seis oportunidades legadas e nenhuma do workflow de promotor no ativo. A mensagem 403 genérica não expõe o motivo; o diagnóstico fica registado, sem alterar permissões, credenciais ou acrescentar uma correção fora do pacote autorizado. Mantêm-se as provas funcionais QA aceites do editor.; limites do critério integral: Relações tipadas de uma oportunidade com cluster, projeto e território recuperadas; múltiplos atores empresariais não cadastrados nem inventados. | 16/10/2026 — negocios-classificacao-QA-53311df2f59c, exclusivamente QA: Recorte QA concluído; disponibilização deste incremento exige decisão específica. Associação tipada com cluster e recuperação do mesmo anúncio demonstradas; múltiplos atores e navegação bidirecional integral não foram demonstrados neste recorte. As quatro outras lacunas conservam o seu estado; provas aceites não se repetem. | 16/10/2026 — disponibilização autorizada de negocios-classificacao-QA-53311df2f59c: Recuperação UUID no ativo não observada: conta 2 sem anúncio próprio; dois rascunhos pertencem a outro titular. Não criar dados nem alargar acesso para preencher esta limitação. Cadeia sem caso positivo, sem ensaio volumétrico e limite do payload sintético da reversão mantêm-se. Outras quatro lacunas inalteradas.","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. | 16/10/2026 — disponibilização autorizada de negocios-classificacao-QA-53311df2f59c: A autorização base foi executada. Suplemento negocios-compilacao-nome-QA-7ef0facd0e27, zero fontes/161 build para título InvesteMoz, aguarda autorização específica por ter novos hashes de build. Não reabrir QA funcional aceite. | 16/10/2026 — fecho operacional consolidado: Autorizações base e do suplemento executadas. Saldo operacional zero. Não classificar anúncios reais nem divulgar relações. Limites QA e ausência de UUID próprio para observação no ativo conservados; outras quatro lacunas inalteradas.",Incremento parcial disponibilizado; aceitação QA preservada e lacunas integrais delimitadas,"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. | 16/10/2026 — negocios-classificacao-QA-53311df2f59c, exclusivamente QA: 10–16 h era a estimativa inicial agora executada neste recorte. Saldo QA zero para a cobertura demonstrada. Operação futura estimada 90–180 min após autorização, partilhada pelo lote, não somar por requisito.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual. | outputs/investmoz-classificacao-multidimensional-QA-20261015/RELATORIO-QA.md; HTTP-DELTA-QA.json (44); SERVICOS-DELTA-QA.json (22); REVERSAO-COMPAT-QA.json (6); INTERFACE-QA.json | outputs/investmoz-classificacao-ativacao-20261015/RELATORIO-ENTREGA.md; RECIBO-FINAL.json; FRESH-BACKUP.json; ARRANQUE-CLONE-RESTAURADO.json; FONTES-COMPILACAO.json; HTTP-AFTER.json; PRESERVACAO-AFTER.json; INTERFACE-OPERACIONAL.json | outputs/investmoz-negocios-classificacao-QA-20261016/RELATORIO-QA.md; HTTP-QA.json (36/50 HTTP); SCOPES-QA.json (10); INTERFACE-QA.json; REVERSAO-APOS-EDICAO-ANTERIOR.json; PRESERVACAO-FINAL.json; MANIFESTO.json | outputs/investmoz-negocios-classificacao-ativacao-20261016/RELATORIO-ENTREGA.md; AUTORIZACAO-TEMPO.json; FRESH-BACKUP.json; ARRANQUE-CLONE-RESTAURADO.json; TROCA.json; HTTP-AFTER.json; PRESERVACAO-APOS-AUTENTICACAO.json; INTERFACE-OPERACIONAL.json; RECIBO-FINAL.json | outputs/investmoz-negocios-classificacao-ativacao-20261016/RELATORIO-FINAL.md; AUTORIZACAO-EXTENSAO-NOME.json; FRESH-BACKUP-NOME.json; ARRANQUE-CLONE-NOME.json; TROCA-NOME.json; HTTP-APOS-NOME.json; PRESERVACAO-APOS-NOME.json; INTERFACE-NOME-ATIVO.json; RECIBO-CONSOLIDADO.json,oportunidades,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada, | management_draft.canonical.relations/enterprise_size; workflow_context.classification_decisions/publication.classification/canonical_items; mestres existentes por ID; sem migrations. | /negocios: existing_business_revisions.snapshot.context.multidimensional; mesmo UUID e payload principal intacto; decisões por relação/evidência; snapshot de divulgação separado.," | Recuperação noutra sessão, nove relações/quatro dimensões, evidência/decisão por hash, exclusão privada, filtros/map matched_count, reversão compatível. Publicação é fixture sintético; transição editorial aceite não repetida. | Clone principal publicado/v26, referência publicada/v12 intacta; recuperação/validação/divulgação e filtros dirigidos; edição posterior pelo código anterior preserva o suplemento; ver relatório para fixture secundário sintético.",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-CLU-002,"Relacionar o cluster com projectos, oportunidades, actores e territórios.",upgrade v4 SHA f0b9815…; p. 513; 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.","[APIEX-SWOT-20261110] Homologação7476dc34 instalada; preparação APIEX e SWOT no dossier existente implementadas em QA, não instaladas. | Histórico anterior preservado: 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. | 16/10/2026 — disponibilização autorizada de negocios-classificacao-QA-53311df2f59c: 11 fontes e 161 ficheiros de build entregues; sem migrations, grants, classificações reais ou divulgação. Catálogo público mantém zero negócios e seis oportunidades. Suplemento de compilação para repor InvesteMoz no título preparado apenas em QA, pendente de decisão. | 16/10/2026 — fecho operacional consolidado: negocios-classificacao-QA-53311df2f59c e suplemento de nome negocios-compilacao-nome-QA-7ef0facd0e27 autorizados e entregues: mesmas 11 fontes, 161 build, título InvesteMoz observado. Sem escrita de negócio/classificação/divulgação.",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-CLU-002: As relações com projectos, negócios, empresas âncora, PME, fornecedores, compradores, financiadores, reguladores e instituições indicam papel, prioridade, período e estado, sem duplicar os registos de origem e com navegação nos dois sentidos.",P1,RF-CLU-002: Relatório 25/09 conservado; estado histórico não promove conclusão,RF-CLU-002,1,"[{""id"":""RF-CLU-002"",""pedido"":""Relacionar o cluster com projectos, oportunidades, actores e territórios."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 513; requirements-audit.csv""],""aceitacao"":""As relações com projectos, negócios, empresas âncora, PME, fornecedores, compradores, financiadores, reguladores e instituições indicam papel, prioridade, período e estado, sem duplicar os registos de origem e com navegação nos dois sentidos."",""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. | 15/10/2026 — incremento de classificação multidimensional em QA: Relações tipadas de uma oportunidade com cluster, projeto e território recuperadas; múltiplos atores empresariais não cadastrados nem inventados. | 15/10/2026 — Tempo autorizou e foi disponibilizada a candidata classificacao-multidimensional-QA-64ab05e20b95 DOC01: 17 fontes/174 build, backup/restauro fresco, cache de dados preservada e reversão compatível. Recorte parcial; restantes limites conservados. | 16/10/2026 — negocios-classificacao-QA-53311df2f59c, exclusivamente QA: Associação tipada com cluster e recuperação do mesmo anúncio demonstradas; múltiplos atores e navegação bidirecional integral não foram demonstrados neste recorte. | 16/10/2026 — disponibilização autorizada de negocios-classificacao-QA-53311df2f59c: Backup/restauro fresco 295 tabelas/31 sequências/2341 ficheiros/29 documentos; clone arrancou em leitura. Conferência operacional de GET/assets e área privada pela conta 2, sem guardar. Dados, papéis e histórico iguais; não encerra a cláusula integral.","[APIEX-SWOT-20261110] Competitividade pública aprovada reutilizada na SWOT contextual privada; versões consultadas conservadas e alteração/retirada sinaliza revisão sem apagar conclusões. Não declara todas as cláusulas de clusters satisfeitas. Restam instalação deste delta e visual; períodos/regimes não mapeados continuam indeterminados. Recepção electrónica APIEX não é requisito actual nem bloqueio. Restantes critérios originais mantidos. | Histórico anterior preservado: 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. | Disponibilização DOC01 executada. Limitação operacional concreta: Editor no ativo: não demonstrado nesta conferência. O utilizador informou não ter acesso à conta de Promotora interna Aurora Chachuaio. A sessão efetiva Osmane Nala, conta 2, recebeu 403 em GET /minhas-oportunidades/create; não existe elevação operacional ativa. Os papéis Promotor/Validador dessa conta permanecem atribuídos; as funções de autorização v1 conferem exatamente com a versão anterior à entrega. Existem seis oportunidades legadas e nenhuma do workflow de promotor no ativo. A mensagem 403 genérica não expõe o motivo; o diagnóstico fica registado, sem alterar permissões, credenciais ou acrescentar uma correção fora do pacote autorizado. Mantêm-se as provas funcionais QA aceites do editor.; limites do critério integral: Relações tipadas de uma oportunidade com cluster, projeto e território recuperadas; múltiplos atores empresariais não cadastrados nem inventados. | 16/10/2026 — negocios-classificacao-QA-53311df2f59c, exclusivamente QA: Recorte QA concluído; disponibilização deste incremento exige decisão específica. Associação tipada com cluster e recuperação do mesmo anúncio demonstradas; múltiplos atores e navegação bidirecional integral não foram demonstrados neste recorte. As quatro outras lacunas conservam o seu estado; provas aceites não se repetem. | 16/10/2026 — disponibilização autorizada de negocios-classificacao-QA-53311df2f59c: Recuperação UUID no ativo não observada: conta 2 sem anúncio próprio; dois rascunhos pertencem a outro titular. Não criar dados nem alargar acesso para preencher esta limitação. Cadeia sem caso positivo, sem ensaio volumétrico e limite do payload sintético da reversão mantêm-se. Outras quatro lacunas inalteradas.","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. | 16/10/2026 — disponibilização autorizada de negocios-classificacao-QA-53311df2f59c: A autorização base foi executada. Suplemento negocios-compilacao-nome-QA-7ef0facd0e27, zero fontes/161 build para título InvesteMoz, aguarda autorização específica por ter novos hashes de build. Não reabrir QA funcional aceite. | 16/10/2026 — fecho operacional consolidado: Autorizações base e do suplemento executadas. Saldo operacional zero. Não classificar anúncios reais nem divulgar relações. Limites QA e ausência de UUID próprio para observação no ativo conservados; outras quatro lacunas inalteradas.",Incremento parcial disponibilizado; aceitação QA preservada e lacunas integrais delimitadas,"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. | 16/10/2026 — negocios-classificacao-QA-53311df2f59c, exclusivamente QA: 10–16 h era a estimativa inicial agora executada neste recorte. Saldo QA zero para a cobertura demonstrada. Operação futura estimada 90–180 min após autorização, partilhada pelo lote, não somar por requisito.","[APIEX-SWOT-20261110] outputs/investment-preparation-20261110/verification.json e artefactos sintéticos; seis casos API/211asserções,16frontend dirigidos, tipos/análise/lint. outputs/entrega-apiex-swot-20261110.zip, base7476dc34, sem migrations. Manual e saldo no início dos registos existentes. | Histórico anterior preservado: outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual. | outputs/investmoz-classificacao-multidimensional-QA-20261015/RELATORIO-QA.md; HTTP-DELTA-QA.json (44); SERVICOS-DELTA-QA.json (22); REVERSAO-COMPAT-QA.json (6); INTERFACE-QA.json | outputs/investmoz-classificacao-ativacao-20261015/RELATORIO-ENTREGA.md; RECIBO-FINAL.json; FRESH-BACKUP.json; ARRANQUE-CLONE-RESTAURADO.json; FONTES-COMPILACAO.json; HTTP-AFTER.json; PRESERVACAO-AFTER.json; INTERFACE-OPERACIONAL.json | outputs/investmoz-negocios-classificacao-QA-20261016/RELATORIO-QA.md; HTTP-QA.json (36/50 HTTP); SCOPES-QA.json (10); INTERFACE-QA.json; REVERSAO-APOS-EDICAO-ANTERIOR.json; PRESERVACAO-FINAL.json; MANIFESTO.json | outputs/investmoz-negocios-classificacao-ativacao-20261016/RELATORIO-ENTREGA.md; AUTORIZACAO-TEMPO.json; FRESH-BACKUP.json; ARRANQUE-CLONE-RESTAURADO.json; TROCA.json; HTTP-AFTER.json; PRESERVACAO-APOS-AUTENTICACAO.json; INTERFACE-OPERACIONAL.json; RECIBO-FINAL.json | outputs/investmoz-negocios-classificacao-ativacao-20261016/RELATORIO-FINAL.md; AUTORIZACAO-EXTENSAO-NOME.json; FRESH-BACKUP-NOME.json; ARRANQUE-CLONE-NOME.json; TROCA-NOME.json; HTTP-APOS-NOME.json; PRESERVACAO-APOS-NOME.json; INTERFACE-NOME-ATIVO.json; RECIBO-CONSOLIDADO.json",oportunidades,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada, | management_draft.canonical.relations/enterprise_size; workflow_context.classification_decisions/publication.classification/canonical_items; mestres existentes por ID; sem migrations. | /negocios: existing_business_revisions.snapshot.context.multidimensional; mesmo UUID e payload principal intacto; decisões por relação/evidência; snapshot de divulgação separado.," | Recuperação noutra sessão, nove relações/quatro dimensões, evidência/decisão por hash, exclusão privada, filtros/map matched_count, reversão compatível. Publicação é fixture sintético; transição editorial aceite não repetida. | Clone principal publicado/v26, referência publicada/v12 intacta; recuperação/validação/divulgação e filtros dirigidos; edição posterior pelo código anterior preserva o suplemento; ver relatório para fixture secundário sintético.",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-CLU-003,Representar a cadeia de valor e identificar lacunas de investimento.,"upgrade v4 SHA f0b9815…; p. 517; requirements-audit.csv Pedido expresso da Tempo, 23/10/2026, nesta retoma: corrigir integração de complementos no percurso actual, com identidade, cadeia de valor, localização e relações documentadas.",cartografia/relações,/api/v1/geo/drafts; /api/v1/geo/search; /api/v1/geo/sources; /api/v1/geo/sources/{id}/transitions; /api/v1/geo/territories; /api/v1/geo/territories/{id}; /api/v1/geo/territories/{id}/transitions; /api/v1/geo/territories/{type}/{id}; /api/v1/geo/{collection}; /api/v1/investment/compare; /api/v1/investment/export; /api/v1/investment/favourites/{id},"InvestmentGeography, campos TerritoryFields/ProvinceSelect, geo_locations/geo_geometries e importador autenticado. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","28/10/2026: base comparativa privada carregada e código servido6d147693;435observações distintas em Gurué,237repetições fora da contagem;serviço aplicado com perfil existente,anónimo401. Conferência visual pendente. Disponibilidade histórica preservada: 28/10/2026: consulta/comparação pelas listas apenas em QA; activo mantém569a1cd7, uso ainda não demonstrado. Registo anterior preservado: Percurso proactivo instalado em9fda6d6e,incluindo56c0c6a7;análises/pilotos reais permanecem privados,sem publicação automática. | Histórico preservado: 27/10 identidade proactivaQA 3439f350,sem instalação ou análise económica real;L8 14360748 preservada. | Histórico preservado: 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. | 16/10/2026 — disponibilização autorizada de negocios-classificacao-QA-53311df2f59c: 11 fontes e 161 ficheiros de build entregues; sem migrations, grants, classificações reais ou divulgação. Catálogo público mantém zero negócios e seis oportunidades. Suplemento de compilação para repor InvesteMoz no título preparado apenas em QA, pendente de decisão. | 16/10/2026 — fecho operacional consolidado: negocios-classificacao-QA-53311df2f59c e suplemento de nome negocios-compilacao-nome-QA-7ef0facd0e27 autorizados e entregues: mesmas 11 fontes, 161 build, título InvesteMoz observado. Sem escrita de negócio/classificação/divulgação. | 28/10/2026:destino569a1cd7/teste_investidor;consumidor proactivo com evidência/oferta manual,sem consulta destas listas identificada. Não extrapolar cadastros/contagens para ausência de mercado ou perda noutros ambientes.","Caso CB-METROLOGIA-20261027: ficha401→dossier894343c7-c33d-452e-a6a5-b6675f77ee23; cinco evidências recuperadas e relatório; consulta anónima recusada. Provas técnicas1afab4a2 reutilizadas. | Histórico preservado: 14API/139asserções;7relatório;UI Laravel login/MFA,criar/guardar/recuperar/editar,divulgar sóQA,anónimo,dossier,recarregar/retomar;tipos/build. | Histórico preservado: outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.","28/10/2026: instalado6d147693;delta técnico conferido;conferência visual autenticada pendente;requisito amplo continua parcial. Histórico anterior preservado: 28/10/2026: integração da oferta demonstrada em QA/Gurué, ainda sem instalação; cobertura nacional parcial. Estado anterior do restante requisito preservado: Uso das listas como base comparativa: não demonstrado — conferência28/10/2026;percurso proactivo entregue e provas anteriores preservados. | Estado anterior preservado: Parcial — primeiro caso com fontes reais aplicado em QA; necessidade comercial ainda hipótese, não publicado. | Histórico preservado: Parcial — primeiro percurso proactivo editorial demonstrado emQA;demais cláusulas originais conservadas. | Histórico preservado: Sem evidência suficiente | Registo da linha entregue (continuacao): Parcial — primeiro caso com fontes reais aplicado em QA; necessidade comercial ainda hipótese, não publicado. | Histórico preservado: Parcial — primeiro percurso proactivo editorial demonstrado emQA;demais cláusulas originais conservadas. | Histórico preservado: Sem evidência suficiente","28/10/2026: instalação/carregamento concluídos;restam conferência visual autenticada e pendências nacionais/comerciais delimitadas.361464observações não são empresas únicas;147165repetições não inflam contagens/comparações. Lacuna histórica preservada: 28/10/2026: ligado o catálogo interno à comparação e ao mesmo dossier em QA. Restam instalação, correspondência territorial/classificação completa, reconciliação das identidades e confirmação comercial actual; ausência de registos é informação insuficiente. Pendência anterior conservada no seu âmbito: Demonstrar consumidor: pesquisar→selecionar→gravar→nova sessão→renderizar limite correto; conservar pai, código e fonte. Critério individual original preservado; cobertura atual ainda não individualizada. | 28/10/2026: não demonstrados carregamento/classificação e consumidor destas listas para oferta→comparação→necessidade→oportunidade. Descrição manual de oferta ou entrega do percurso não encerram esse uso.","QA408/581INE; ativo0geometrias;173correspondências por nome/edição/pai, Mandie ambíguo. Publicação é ação separada. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","RF-CLU-003: O cluster apresenta fornecimento, produção, transformação, logística, comercialização, serviços e mercados; cada lacuna possui localização, capacidade necessária, justificação, estado e chamada para acção.",P2,RF-CLU-003: Relatório 25/09 conservado; estado histórico não promove conclusão,RF-CLU-003,1,"[{""id"":""RF-CLU-003"",""pedido"":""Representar a cadeia de valor e identificar lacunas de investimento."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 517; requirements-audit.csv""],""aceitacao"":""O cluster apresenta fornecimento, produção, transformação, logística, comercialização, serviços e mercados; cada lacuna possui localização, capacidade necessária, justificação, estado e chamada para acção."",""estado"":""parcial"",""variantes"":""Relatório 25/09 conservado; estado histórico não promove conclusão"",""modulo"":""cartografia/relaçõ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.geo_locations: 1990 registos; public.geo_geometries: 0 registos; public.project_locations: 28 registos; public.cluster_projects: 13 registos; public.opportunity_projects: 0 registos; public.opportunity_clusters: 0 registos,"Interface autónoma entregue no âmbito demonstrado. Songo pendente de respostas externas;Gurué mantém hipótese agrícola. Instalação não confirma procura,contrato ou sustentabilidade. | Histórico preservado: 27/10: autonomia pela interface demonstrada com perfil QA autorizado: resposta anexada/recuperada,ideia revista e mesmo dossier actualizado sem publicação. Songo/Gurué intactos;sem sessão de formação real presumida. | Histórico preservado: 27/10: Songo pronto para prospecção,privado e pendente de respostas;ficha da equipa disponível. Novo piloto Gurué402/contexto1:apoio à colheita e qualidade do chá como hipótese,sem procura ou viabilidade confirmadas. | Histórico preservado: Caso regional401v3:Vulcan,EDM eNacalaLogistics são prospectos adicionais;ligação accionistaVulcan/Nacala preservada;projecto futuro fora da base. O responsável confirmou ausência de dados comerciais;sustentabilidade não demonstrada. | Histórico preservado: Cahora Bassa: actividade HCB documentada; calibração planeada2026; apoio associado no Songo como hipótese. Prazos do plano passados; sem adjudicação, ausência de oferta ou viabilidade inferidas. | Histórico preservado: Reutiliza rascunhos/auditoria/promoção/catálogo/dossier/contextos existentes;sem novos mestres ou permissões. Equipa interna prepara sem promotor real conhecido;outros âmbitos preservados. | Histórico preservado: 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. | 15/10/2026 — incremento de classificação multidimensional em QA: Vínculo à cadeia existente e etapa documentada disponíveis; cenário têxtil apenas sintético, sem empresas ou capacidades reais. Identificação económica integral de lacunas não demonstrada. | 15/10/2026 — Tempo autorizou e foi disponibilizada a candidata classificacao-multidimensional-QA-64ab05e20b95 DOC01: 17 fontes/174 build, backup/restauro fresco, cache de dados preservada e reversão compatível. Recorte parcial; restantes limites conservados. | 16/10/2026 — negocios-classificacao-QA-53311df2f59c, exclusivamente QA: Preparação do contrato/filtro de cadeia disponível; caso positivo não demonstrado porque não existe cadeia consultável na QA. Cadeia integral e lacunas de investimento continuam abertas. | 16/10/2026 — disponibilização autorizada de negocios-classificacao-QA-53311df2f59c: Backup/restauro fresco 295 tabelas/31 sequências/2341 ficheiros/29 documentos; clone arrancou em leitura. Conferência operacional de GET/assets e área privada pela conta 2, sem guardar. Dados, papéis e histórico iguais; não encerra a cláusula integral. | 16/10/2026 — mapa prévio de referências económicas, QA sem implementação: Leitura READ ONLY de dois clones: destino restaurado com 12 setores/6 raízes editoriais/8 clusters/zero elos e ligações; QA aceite tem ainda três níveis sintéticos em setores distintos. UNIQUE economic_activities_sector_uq impede várias atividades por setor; escolha técnica, não regra identificada da Tempo. Fontes oficiais aceites preservadas, sem revalidação. | 16/10/2026 — DOC01 do mapa económico, revisão documental sem autorização de execução: 600 versus 579 é divergência documental a reconciliar, não escolha arbitrária da Tempo. Recomendações recebidas: limitar QA aos cinco nós do exemplar por hash/versão; divisão 01 como subsector e 01120 como atividade com cinco níveis; CLU-01 como modelo editorial. Não se declara conformidade normativa integral nem execução/aceitação QA.
[RECONCILIACAO-43-20261019] 4: Gestão /management/economic-references/lot-01 ainda exige gate global. Catálogo restante requer reconciliação por identidade/edição e lote, não inferência por contagens.","Conferência desta entrega: Gurué→consultar oferta→comparar ideia→guardar→recuperar no mesmo dossier,com fonte/data/incertezas;435observações não empresas únicas,listas internas,cobertura parcial,hipótese. Não confundir com pendências nacionais amplas anteriores. Histórico preservado: 28/10/2026: conferência visual autenticada do percurso instalado;correspondência nacional parcial(205608semterritório único,336sóprovíncia,82864semCAE,113880divergências de denominação/identificador);confirmar oferta/procura/viabilidade actual sem inferir mercado desocupado. Critérios históricos preservados no âmbito restante: 28/10/2026: conferir entrega activa;reconciliar205608 observações sem território único,336 só com província,82864 sem designação CAE e113880 com divergências de denominação/identificador;confirmar oferta/procura actual sem inferir mercado desocupado;uso real da equipa pendente. Restantes critérios anteriores preservados: Concluir apenas com evidência económica local por caso;provar participação/contrato/acesso quando alegados. Automatização e quantificação futura dependem de dados/pressupostos explícitos;sem fecho global deste requisito. | Histórico preservado: Demonstrar consumidor: pesquisar→selecionar→gravar→nova sessão→renderizar limite correto; conservar pai, código e fonte. Critério individual original preservado; cobertura atual ainda não individualizada. | Disponibilização DOC01 executada. Limitação operacional concreta: Editor no ativo: não demonstrado nesta conferência. O utilizador informou não ter acesso à conta de Promotora interna Aurora Chachuaio. A sessão efetiva Osmane Nala, conta 2, recebeu 403 em GET /minhas-oportunidades/create; não existe elevação operacional ativa. Os papéis Promotor/Validador dessa conta permanecem atribuídos; as funções de autorização v1 conferem exatamente com a versão anterior à entrega. Existem seis oportunidades legadas e nenhuma do workflow de promotor no ativo. A mensagem 403 genérica não expõe o motivo; o diagnóstico fica registado, sem alterar permissões, credenciais ou acrescentar uma correção fora do pacote autorizado. Mantêm-se as provas funcionais QA aceites do editor.; limites do critério integral: Vínculo à cadeia existente e etapa documentada disponíveis; cenário têxtil apenas sintético, sem empresas ou capacidades reais. Identificação económica integral de lacunas não demonstrada. | 16/10/2026 — negocios-classificacao-QA-53311df2f59c, exclusivamente QA: Recorte QA concluído; disponibilização deste incremento exige decisão específica. Preparação do contrato/filtro de cadeia disponível; caso positivo não demonstrado porque não existe cadeia consultável na QA. Cadeia integral e lacunas de investimento continuam abertas. As quatro outras lacunas conservam o seu estado; provas aceites não se repetem. | 16/10/2026 — disponibilização autorizada de negocios-classificacao-QA-53311df2f59c: Recuperação UUID no ativo não observada: conta 2 sem anúncio próprio; dois rascunhos pertencem a outro titular. Não criar dados nem alargar acesso para preencher esta limitação. Cadeia sem caso positivo, sem ensaio volumétrico e limite do payload sintético da reversão mantêm-se. Outras quatro lacunas inalteradas. | 16/10/2026 — mapa prévio de referências económicas, QA sem implementação: Preparar manifesto fechado, adaptar cardinalidade/hierarquia sem copiar mestres, demonstrar preview/idempotência/recusas e caso positivo de cadeia nos dois consumidores; recuperação, decisão independente, divulgação expressa, filtros AND e reversão após edição pelo código anterior com compatibilidade. Nada demonstrado/encerrado por este mapa. | 16/10/2026 — DOC01 do mapa económico, revisão documental sem autorização de execução: Implementação/provas funcionais e operacionais apenas após decisão QA. Incluir HTTP com esquema ausente, importação privada, publicação e retirada distintas, recusas de identidade/MFA/CSRF/hash, replay/concorrência e motivos visíveis. Reversão após uso é parcial e compatível: schema/dados, seis fontes funcionais, manifesto e build de compatibilidade coerente permanecem; provar edição posterior. Caso positivo de cadeia segue pendente nos dois consumidores.
@@ -5649,16 +5649,16 @@ B7-LEGACY-BUSINESS-PROFILES, B7-FINITE-PROGRESS","FILTERS: Filas ensaiadas: cate
[B7 três funções QA] Visual cenário7L4 aberto. Ponte sócompany_sale, grantorgrestrito não ampliado por texto; mandato é referência privada, não upload/scan. Regra v1 de três funções alinhada àTempo; recusas/dupla de pessoas em provas anteriores são fase antiga, não exigência final.","2–8 h de reconciliação/ensaio por consumidor agrupado, pressupondo dados sintéticos/perfis preparados. Alteração: estimar após reprodução concreta; variante integral pode exceder esta faixa.",,,
AUD-DESK-01,Criar/editar/recuperar dossier e pedido com feedback,"Pedido direto 09/10/2026, auditoria §1–4; fontes específicas descritas em relatorio-executivo.md | Pedido direto 09/10/2026, lote 3: ações por perfil, países/seletores, geometria por consumidor, navegador, ativação separada e PDFs diretos; sem jornadas educativas novas
-[Segmentação bf26caeee043 — identidade confirmada; nome local v1.docx] SEG-bf26caee-p114 §1.0.2; SEG-bf26caee-p124 §1.0.2; SEG-bf26caee-p129 §1.0.2; SEG-bf26caee-p134 §1.0.2; SEG-bf26caee-p469 §3.2; SEG-bf26caee-p470 §3.2; SEG-bf26caee-p471 §3.2; SEG-bf26caee-p472 §3.2; SEG-bf26caee-p473 §3.2; SEG-bf26caee-p474 §3.2; SEG-bf26caee-p475 §3.2; SEG-bf26caee-p476 §3.2; SEG-bf26caee-p477 §3.2; SEG-bf26caee-p618 §6",Balcão/orientação,/balcao-virtual/painel; /balcao-virtual/dossiers/{id}; /balcao-virtual/pedidos/{id},"VirtualDesk, pedidos/casos, anexos, contexto dossier e acompanhamento. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual. [DESK-PAYMENT-EVIDENCE-20261103] A declaração manual já existia e permitia comprovativo pendente, mas faltava juntá-lo posteriormente sem repetir a referência. Agora o titular/representante com escrita acrescenta ou corrige o suporte do mesmo pagamento pending/internal_issue por vínculo seleccionado, versão, motivo e consentimento. Referência, montante, moeda e fonte do valor são conservados; a nova associação fica pending, sem confirmação bancária. Registo internal_verified não pode ser substituído pelo titular; eventual problema continua a ser registado pelo revisor independente no percurso existente. Proveniência documental, exemplar, versão/hash registados e validade declarada ficam nos eventos cifrados, sem segunda tabela/migração ou cópia física. Conferência valida o original comum e a correspondência ao exemplar associado; legado sem captura continua desconhecido, sem reconstituição retroactiva. Pesquisa/reutilização anterior preservada. Dossier encerrado mantém leitura dos pagamentos, sem novas operações manuais. 53 Feature/721 asserções e 47 frontend, PHPStan/Pint/tipos/lint/build aprovados; 18 tabelas QA vazias/owner/RLS/índices. Dois processos sobrepostos 0.392022s, em pedidos diferentes com a mesma referência, conservaram 1 declaração/evento; segundo com conflito 409 e pedidos principais intactos. Recibo desk_payment_evidence_increment_20261103, sem escrita activa ou nova migração. [DESK-CLOSED-LIFECYCLE-20261103] Por decisão expressa do proprietário, o dono registado executa agora o encerramento/reabertura, com acesso efectivo, versão, motivo, operação idempotente e histórico. Gestores/outros representantes não recebem esse poder por inferência. Resumo das pendências antes da confirmação e manutenção dos estados/payloads/documentos/tarefas/pagamentos, sem aprovação em cascata. Dossier com closed_at já bloqueava rascunhos/anexos/pagamentos, mas permitia transições, etapas, atribuições, mensagens e actualizações de tarefas. Reproduzidos HTTP200 nesses percursos, incluindo atribuição com MFA válido. Agora a guarda de estado comum e lock do dossier protegem esses comandos, preservando leitura/histórico e as permissões anteriores. Tarefas com vínculo CRM/dossier respeitam o fecho também no CRM; CRM sem tarefas vinculadas não consulta nem exige o Balcão. Listas de triagem/filas excluem encerrados e a interface retira decisões/atribuições/mensagens/etapas/conferência/tarefas sem aplicação. Cancelamento de rascunho/devolvido, já autorizado pelo servidor ao titular com escrita, fica disponível por motivo e confirmação explícita, conservando dados/documentos/histórico e o dossier. Sucesso mostra a versão efectivamente guardada; falha conserva edições. Justificação de correcção só é perguntada num pedido devolvido. 77 Feature/1016 na regressão, 15/202 específicos finais (rondas sobrepostas, não somar),64 frontend e estática/Pint/tipos/lint/build aprovados;20 tabelas QA vazias/owner/RLS/índices. Recibo desk_closed_lifecycle_increment_20261103, sem nova migração/escrita activa.","[CONCLUSAO-INTEGRAL-20261110] Fontes até ff726e57 na homologação teste-investidor. Não confundir instalação do código com nova concessão, habilitação nominal ou prova visual integral. | Histórico anterior preservado: 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/reused-evidence-integrity.json: 35 recibos anteriores com hashes correspondentes; o âmbito de cada recibo permanece limitado ao critério ensaiado. outputs/investmoz-audit-current-20261012/http-promoter.json; http-validator.json; http-publisher.json; http-manager.json. [DESK-PAYMENT-EVIDENCE-20261103] A declaração manual já existia e permitia comprovativo pendente, mas faltava juntá-lo posteriormente sem repetir a referência. Agora o titular/representante com escrita acrescenta ou corrige o suporte do mesmo pagamento pending/internal_issue por vínculo seleccionado, versão, motivo e consentimento. Referência, montante, moeda e fonte do valor são conservados; a nova associação fica pending, sem confirmação bancária. Registo internal_verified não pode ser substituído pelo titular; eventual problema continua a ser registado pelo revisor independente no percurso existente. Proveniência documental, exemplar, versão/hash registados e validade declarada ficam nos eventos cifrados, sem segunda tabela/migração ou cópia física. Conferência valida o original comum e a correspondência ao exemplar associado; legado sem captura continua desconhecido, sem reconstituição retroactiva. Pesquisa/reutilização anterior preservada. Dossier encerrado mantém leitura dos pagamentos, sem novas operações manuais. 53 Feature/721 asserções e 47 frontend, PHPStan/Pint/tipos/lint/build aprovados; 18 tabelas QA vazias/owner/RLS/índices. Dois processos sobrepostos 0.392022s, em pedidos diferentes com a mesma referência, conservaram 1 declaração/evento; segundo com conflito 409 e pedidos principais intactos. Recibo desk_payment_evidence_increment_20261103, sem escrita activa ou nova migração. [DESK-CLOSED-LIFECYCLE-20261103] Por decisão expressa do proprietário, o dono registado executa agora o encerramento/reabertura, com acesso efectivo, versão, motivo, operação idempotente e histórico. Gestores/outros representantes não recebem esse poder por inferência. Resumo das pendências antes da confirmação e manutenção dos estados/payloads/documentos/tarefas/pagamentos, sem aprovação em cascata. Dossier com closed_at já bloqueava rascunhos/anexos/pagamentos, mas permitia transições, etapas, atribuições, mensagens e actualizações de tarefas. Reproduzidos HTTP200 nesses percursos, incluindo atribuição com MFA válido. Agora a guarda de estado comum e lock do dossier protegem esses comandos, preservando leitura/histórico e as permissões anteriores. Tarefas com vínculo CRM/dossier respeitam o fecho também no CRM; CRM sem tarefas vinculadas não consulta nem exige o Balcão. Listas de triagem/filas excluem encerrados e a interface retira decisões/atribuições/mensagens/etapas/conferência/tarefas sem aplicação. Cancelamento de rascunho/devolvido, já autorizado pelo servidor ao titular com escrita, fica disponível por motivo e confirmação explícita, conservando dados/documentos/histórico e o dossier. Sucesso mostra a versão efectivamente guardada; falha conserva edições. Justificação de correcção só é perguntada num pedido devolvido. 77 Feature/1016 na regressão, 15/202 específicos finais (rondas sobrepostas, não somar),64 frontend e estática/Pint/tipos/lint/build aprovados;20 tabelas QA vazias/owner/RLS/índices. Recibo desk_closed_lifecycle_increment_20261103, sem nova migração/escrita activa.",Implementado parcialmente,"03/11/2026: coerência do closed_at e cancelamento de rascunhos demonstrados nos percursos identificados, sem alterar regras/perfis ou encerrar dossiers automaticamente. A operação de encerrar/reabrir o dossier completo foi implementada conforme a resposta expressa do proprietário: o dono executa essa acção. Mantêm-se acesso efectivo, motivo, versão e histórico, sem impor que todas as pendências estejam concluídas nem alterar estados de outros processos. Restam restantes consumidores/parametrização/percurso adaptativo, conferência visual/login real e disponibilização no destino. Histórico anterior: 03/11/2026: comprovativo pendente ou corrigido pode completar a declaração existente sem repetir montante/moeda/fonte, com histórico e revisão independente. Restam outros consumidores e origens por formulário, atribuições/próxima acção/documentos por âmbito, parametrização transversal, conferência visual/login real e disponibilização no destino; integração bancária/entrega de mensagens não é declarada por estes registos manuais. Critérios gerais do Balcão/percurso não estão integralmente encerrados. Histórico anterior: Gravacao, recuperacao e contexto da oportunidade nos recortes aceites entregues em 6b544548, 55136b44 e 8036b9b0. Sem falha conhecida aberta nesse lote; fechos operacionais/documentais nao demonstrados continuam no componente 25 do inventario, sem serem declarados concluidos.","Perfis próprios do Balcão; serviços/campos e decisões externas aplicáveis, sem inventar destinatário/prazo. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","AUD-DESK-01: Criar uma vez, guardar versão, recuperar em sessão nova, corrigir 422, transições e mensagem explícitas",P1,"AUD-DESK-01: Relatórios históricos mantidos; estado ativo apurado por leitura nesta auditoria
+[Segmentação bf26caeee043 — identidade confirmada; nome local v1.docx] SEG-bf26caee-p114 §1.0.2; SEG-bf26caee-p124 §1.0.2; SEG-bf26caee-p129 §1.0.2; SEG-bf26caee-p134 §1.0.2; SEG-bf26caee-p469 §3.2; SEG-bf26caee-p470 §3.2; SEG-bf26caee-p471 §3.2; SEG-bf26caee-p472 §3.2; SEG-bf26caee-p473 §3.2; SEG-bf26caee-p474 §3.2; SEG-bf26caee-p475 §3.2; SEG-bf26caee-p476 §3.2; SEG-bf26caee-p477 §3.2; SEG-bf26caee-p618 §6",Balcão/orientação,/balcao-virtual/painel; /balcao-virtual/dossiers/{id}; /balcao-virtual/pedidos/{id},"VirtualDesk, pedidos/casos, anexos, contexto dossier e acompanhamento. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual. [DESK-PAYMENT-EVIDENCE-20261103] A declaração manual já existia e permitia comprovativo pendente, mas faltava juntá-lo posteriormente sem repetir a referência. Agora o titular/representante com escrita acrescenta ou corrige o suporte do mesmo pagamento pending/internal_issue por vínculo seleccionado, versão, motivo e consentimento. Referência, montante, moeda e fonte do valor são conservados; a nova associação fica pending, sem confirmação bancária. Registo internal_verified não pode ser substituído pelo titular; eventual problema continua a ser registado pelo revisor independente no percurso existente. Proveniência documental, exemplar, versão/hash registados e validade declarada ficam nos eventos cifrados, sem segunda tabela/migração ou cópia física. Conferência valida o original comum e a correspondência ao exemplar associado; legado sem captura continua desconhecido, sem reconstituição retroactiva. Pesquisa/reutilização anterior preservada. Dossier encerrado mantém leitura dos pagamentos, sem novas operações manuais. 53 Feature/721 asserções e 47 frontend, PHPStan/Pint/tipos/lint/build aprovados; 18 tabelas QA vazias/owner/RLS/índices. Dois processos sobrepostos 0.392022s, em pedidos diferentes com a mesma referência, conservaram 1 declaração/evento; segundo com conflito 409 e pedidos principais intactos. Recibo desk_payment_evidence_increment_20261103, sem escrita activa ou nova migração. [DESK-CLOSED-LIFECYCLE-20261103] Por decisão expressa do proprietário, o dono registado executa agora o encerramento/reabertura, com acesso efectivo, versão, motivo, operação idempotente e histórico. Gestores/outros representantes não recebem esse poder por inferência. Resumo das pendências antes da confirmação e manutenção dos estados/payloads/documentos/tarefas/pagamentos, sem aprovação em cascata. Dossier com closed_at já bloqueava rascunhos/anexos/pagamentos, mas permitia transições, etapas, atribuições, mensagens e actualizações de tarefas. Reproduzidos HTTP200 nesses percursos, incluindo atribuição com MFA válido. Agora a guarda de estado comum e lock do dossier protegem esses comandos, preservando leitura/histórico e as permissões anteriores. Tarefas com vínculo CRM/dossier respeitam o fecho também no CRM; CRM sem tarefas vinculadas não consulta nem exige o Balcão. Listas de triagem/filas excluem encerrados e a interface retira decisões/atribuições/mensagens/etapas/conferência/tarefas sem aplicação. Cancelamento de rascunho/devolvido, já autorizado pelo servidor ao titular com escrita, fica disponível por motivo e confirmação explícita, conservando dados/documentos/histórico e o dossier. Sucesso mostra a versão efectivamente guardada; falha conserva edições. Justificação de correcção só é perguntada num pedido devolvido. 77 Feature/1016 na regressão, 15/202 específicos finais (rondas sobrepostas, não somar),64 frontend e estática/Pint/tipos/lint/build aprovados;20 tabelas QA vazias/owner/RLS/índices. Recibo desk_closed_lifecycle_increment_20261103, sem nova migração/escrita activa.","[APIEX-SWOT-20261110] Homologação7476dc34 instalada; preparação APIEX e SWOT no dossier existente implementadas em QA, não instaladas. | Histórico anterior preservado: [CONCLUSAO-INTEGRAL-20261110] Fontes até ff726e57 na homologação teste-investidor. Não confundir instalação do código com nova concessão, habilitação nominal ou prova visual integral. | Histórico anterior preservado: 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/reused-evidence-integrity.json: 35 recibos anteriores com hashes correspondentes; o âmbito de cada recibo permanece limitado ao critério ensaiado. outputs/investmoz-audit-current-20261012/http-promoter.json; http-validator.json; http-publisher.json; http-manager.json. [DESK-PAYMENT-EVIDENCE-20261103] A declaração manual já existia e permitia comprovativo pendente, mas faltava juntá-lo posteriormente sem repetir a referência. Agora o titular/representante com escrita acrescenta ou corrige o suporte do mesmo pagamento pending/internal_issue por vínculo seleccionado, versão, motivo e consentimento. Referência, montante, moeda e fonte do valor são conservados; a nova associação fica pending, sem confirmação bancária. Registo internal_verified não pode ser substituído pelo titular; eventual problema continua a ser registado pelo revisor independente no percurso existente. Proveniência documental, exemplar, versão/hash registados e validade declarada ficam nos eventos cifrados, sem segunda tabela/migração ou cópia física. Conferência valida o original comum e a correspondência ao exemplar associado; legado sem captura continua desconhecido, sem reconstituição retroactiva. Pesquisa/reutilização anterior preservada. Dossier encerrado mantém leitura dos pagamentos, sem novas operações manuais. 53 Feature/721 asserções e 47 frontend, PHPStan/Pint/tipos/lint/build aprovados; 18 tabelas QA vazias/owner/RLS/índices. Dois processos sobrepostos 0.392022s, em pedidos diferentes com a mesma referência, conservaram 1 declaração/evento; segundo com conflito 409 e pedidos principais intactos. Recibo desk_payment_evidence_increment_20261103, sem escrita activa ou nova migração. [DESK-CLOSED-LIFECYCLE-20261103] Por decisão expressa do proprietário, o dono registado executa agora o encerramento/reabertura, com acesso efectivo, versão, motivo, operação idempotente e histórico. Gestores/outros representantes não recebem esse poder por inferência. Resumo das pendências antes da confirmação e manutenção dos estados/payloads/documentos/tarefas/pagamentos, sem aprovação em cascata. Dossier com closed_at já bloqueava rascunhos/anexos/pagamentos, mas permitia transições, etapas, atribuições, mensagens e actualizações de tarefas. Reproduzidos HTTP200 nesses percursos, incluindo atribuição com MFA válido. Agora a guarda de estado comum e lock do dossier protegem esses comandos, preservando leitura/histórico e as permissões anteriores. Tarefas com vínculo CRM/dossier respeitam o fecho também no CRM; CRM sem tarefas vinculadas não consulta nem exige o Balcão. Listas de triagem/filas excluem encerrados e a interface retira decisões/atribuições/mensagens/etapas/conferência/tarefas sem aplicação. Cancelamento de rascunho/devolvido, já autorizado pelo servidor ao titular com escrita, fica disponível por motivo e confirmação explícita, conservando dados/documentos/histórico e o dossier. Sucesso mostra a versão efectivamente guardada; falha conserva edições. Justificação de correcção só é perguntada num pedido devolvido. 77 Feature/1016 na regressão, 15/202 específicos finais (rondas sobrepostas, não somar),64 frontend e estática/Pint/tipos/lint/build aprovados;20 tabelas QA vazias/owner/RLS/índices. Recibo desk_closed_lifecycle_increment_20261103, sem nova migração/escrita activa.",Implementado parcialmente,"03/11/2026: coerência do closed_at e cancelamento de rascunhos demonstrados nos percursos identificados, sem alterar regras/perfis ou encerrar dossiers automaticamente. A operação de encerrar/reabrir o dossier completo foi implementada conforme a resposta expressa do proprietário: o dono executa essa acção. Mantêm-se acesso efectivo, motivo, versão e histórico, sem impor que todas as pendências estejam concluídas nem alterar estados de outros processos. Restam restantes consumidores/parametrização/percurso adaptativo, conferência visual/login real e disponibilização no destino. Histórico anterior: 03/11/2026: comprovativo pendente ou corrigido pode completar a declaração existente sem repetir montante/moeda/fonte, com histórico e revisão independente. Restam outros consumidores e origens por formulário, atribuições/próxima acção/documentos por âmbito, parametrização transversal, conferência visual/login real e disponibilização no destino; integração bancária/entrega de mensagens não é declarada por estes registos manuais. Critérios gerais do Balcão/percurso não estão integralmente encerrados. Histórico anterior: Gravacao, recuperacao e contexto da oportunidade nos recortes aceites entregues em 6b544548, 55136b44 e 8036b9b0. Sem falha conhecida aberta nesse lote; fechos operacionais/documentais nao demonstrados continuam no componente 25 do inventario, sem serem declarados concluidos.","Perfis próprios do Balcão; serviços/campos e decisões externas aplicáveis, sem inventar destinatário/prazo. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","AUD-DESK-01: Criar uma vez, guardar versão, recuperar em sessão nova, corrigir 422, transições e mensagem explícitas",P1,"AUD-DESK-01: Relatórios históricos mantidos; estado ativo apurado por leitura nesta auditoria
[Segmentação bf26caeee043 — identidade confirmada; nome local v1.docx] Fases0–4 do §2 são releases de desenvolvimento, não as cinco fases/19 etapas. Agrupamentos §3.3.1 não convertem categorias. Papéis genéricos §3.1 não concedem permissão. §6 contém estados documentais, não prova do ambiente atual. §7p811 não reabre credibilidade das fontes oficiais. SLA/ofertas/competências continuam decisões separadas. Disponibilidade do guia/modelos só por URL/exemplar verificado.",AUD-DESK-01; SEG-bf26caee-p114; SEG-bf26caee-p124; SEG-bf26caee-p129; SEG-bf26caee-p134; SEG-bf26caee-p469; SEG-bf26caee-p470; SEG-bf26caee-p471; SEG-bf26caee-p472; SEG-bf26caee-p473; SEG-bf26caee-p474; SEG-bf26caee-p475; SEG-bf26caee-p476; SEG-bf26caee-p477; SEG-bf26caee-p618,15,"[{""id"": ""AUD-DESK-01"", ""pedido"": ""Criar/editar/recuperar dossier e pedido com feedback"", ""fontes"": [""Pedido direto 09/10/2026, auditoria §1–4; fontes específicas descritas em relatorio-executivo.md"", ""Pedido direto 09/10/2026, lote 3: ações por perfil, países/seletores, geometria por consumidor, navegador, ativação separada e PDFs diretos; sem jornadas educativas novas""], ""aceitacao"": ""Criar uma vez, guardar versão, recuperar em sessão nova, corrigir 422, transições e mensagem explícitas"", ""estado"": ""parcial"", ""variantes"": ""Relatórios históricos mantidos; estado ativo apurado por leitura nesta auditoria"", ""modulo"": ""Balcão/orientação"", ""incremento_visual_qa_20261010"": {""atualizado_em"": ""2026-10-10T17:57:54.604301+00:00"", ""ambito"": ""QA18097/55441 exclusivamente"", ""evidencia"": ""Chromium desktop18: dois dossiers próprios A/B criados, guardados e recuperados noutra sessão; cinco fases e19 etapas preservadas. A dispensaS10; B espera externaS10 comS02 independente. Plano contextual guardado/reaberto, resultados devolvidos e recuperados no dossier: ponto de equilíbrio20unidades; défice A0/B70000MZN. Balcão preparado comoDRAFT, paísesPT/origemZA guardados; tarefa interna atribuída/assumida/iniciada/concluída no UI pelo gestor14 e recuperada pelo investidor. Gestor sem acesso a resultados financeiros privados; QA23 dossier403/rascunho404; sem mistura entre projetos. investor-ab-chromium-20261010.json e visual-persistence-qa.json. C80: bloquear edição/avanço enquanto GET do rascunho não terminou; diagnóstico guardado, correção e resposta deliberadamente atrasada no Chromium demonstrados em portal-simulator-loading-visual-qa.cjs/recibo."", ""lacuna_atual"": ""A/B completos para o cenário interno aprovado, em desktop isolado; Balcão apenas preparaçãoDRAFT, não submissão/decisão externa. Restantes contratos, documentos, fiscalidade/parâmetros legais, etapas externas e todos os consumidores/perfis não encerrados. Móvel A/B teve achados anteriores: correção comum verificada com dossier próprioQA21, sem substituir repetição final A/B móvel ou aceitação manual."", ""estado_global_preservado"": ""parcial"", ""ativacao"": false}, ""incremento_ab_paises_20261010"": {""registado_em"": ""2026-10-10T19:30:54.107335+00:00"", ""ambito"": ""QA somente"", ""criterios_ab_internos"": ""concluído e demonstrado em QA"", ""evidencia"": ""A/B internos concluídos em QA: provas anteriores de criação/gravação/nova sessão/permissões compostas com investor-ab-remaining-chromium-20261010.json e investor-ab-remaining-persistence-qa.json. A terra/financiamento=no, S10 dispensada, equilíbrio20, necessidade0MZN; B=yes, S10waiting_external, equilíbrio20, necessidade70000MZN. Resultado/draft/dossier corretos, BalcãoDRAFT com título do dossier/resumo da ferramenta/PT/ZA, tarefaS02done posterior à esperaS10 e preparação independente habilitada; cinco fases/19etapas preservadas. Seis verificações390/320px sem overflow ou violações axe. C88 ação explícita recuperou descrição vazia de A, guardando revisão antiga/fonte(v3)/auditoria. Sem recriar dossiers/resultados/tarefas ou repetir C37. Ativo não alterado."", ""criterios_restantes"": ""A/B demonstram preparação DRAFT e recuperação. Restam submissão quando aplicável, 422 por campo, protocolo/recibo, mensagens, transições e operações documentais por tipo/perfil. DRAFT não equivale a submissão ou decisão externa."", ""ativacao"": false}, ""incremento_consumidores_20261010"": {""at"": ""2026-10-10T20:48:57.129953+00:00"", ""evidencia"": ""consumer-stats-chromium-20261010.json: pedido separado no dossierA, PT/ZA, PUT303→submitted/protocolo→nova sessão→gestãoZA0→1; replay200 conserva protocolo/v2. SQL:uma revisão/um evento submitted. PedidosA/B originais continuamDRAFT. ProvaSQL:consumer-final-persistence-qa.json; QA somente, sem instalação/ativação."", ""criterios_restantes"": ""Preparação A/B e submissão de pedido QA separado com protocolo/recuperação/replay sem duplicação demonstrados. Restam os outros serviços/condições, mensagens/transições, documentos e decisões externas aplicáveis; não repetir A/B ou C37."", ""active"": false}}, {""id"": ""SEG-bf26caee-p114"", ""source"": ""\\\\mac\\home\\Documents\\TEMPO\\Portal Tempo\\Servicos Tempo\\Relatorios\\novos\\segmentar processos v1.docx"", ""sha256"": ""bf26caeee0437a8d292bf29be59247e2862c14e79b5ae465c00322747af72af5"", ""section"": ""1.0.2"", ""locator"": ""word/document.xml#p114"", ""first_paragraph"": 114, ""last_paragraph"": 118, ""text"": ""Artigo 19 | Decreto-Lei n.º 1/2022 — publicação oficial da Imprensa Nacional de Moçambique | Obrigações especiais do empresário | INV-001; INV-002; INV-007; §§1.6, 3.2 e 6.1 | Checklist transversal que distingue firma, escrituração, registo e prestação de contas das licenças sectoriais."", ""document_state_not_acceptance"": true, ""requested_exemplar_identity_pending"": true}, {""id"": ""SEG-bf26caee-p124"", ""source"": ""\\\\mac\\home\\Documents\\TEMPO\\Portal Tempo\\Servicos Tempo\\Relatorios\\novos\\segmentar processos v1.docx"", ""sha256"": ""bf26caeee0437a8d292bf29be59247e2862c14e79b5ae465c00322747af72af5"", ""section"": ""1.0.2"", ""locator"": ""word/document.xml#p124"", ""first_paragraph"": 124, ""last_paragraph"": 128, ""text"": ""Secção III do Título II, Capítulo II | Decreto-Lei n.º 1/2022 — publicação oficial da Imprensa Nacional de Moçambique | Escrituração mercantil | INV-002; INV-007; §§1.6, 6.1 e 7.3 | Requisito documental e de governação ligado à organização da actividade; a numeração artigo a artigo permanece dependente de conferência integral."", ""document_state_not_acceptance"": true, ""requested_exemplar_identity_pending"": true}, {""id"": ""SEG-bf26caee-p129"", ""source"": ""\\\\mac\\home\\Documents\\TEMPO\\Portal Tempo\\Servicos Tempo\\Relatorios\\novos\\segmentar processos v1.docx"", ""sha256"": ""bf26caeee0437a8d292bf29be59247e2862c14e79b5ae465c00322747af72af5"", ""section"": ""1.0.2"", ""locator"": ""word/document.xml#p129"", ""first_paragraph"": 129, ""last_paragraph"": 133, ""text"": ""Secção IV do Título II, Capítulo II | Decreto-Lei n.º 1/2022 — publicação oficial da Imprensa Nacional de Moçambique | Registo comercial | INV-001; INV-002; INV-007; §§1.6, 1.8 e 6.1 | Formalidade de registo e publicidade tratada separadamente do licenciamento sectorial, com entidade, acto e competência territorial."", ""document_state_not_acceptance"": true, ""requested_exemplar_identity_pending"": true}, {""id"": ""SEG-bf26caee-p134"", ""source"": ""\\\\mac\\home\\Documents\\TEMPO\\Portal Tempo\\Servicos Tempo\\Relatorios\\novos\\segmentar processos v1.docx"", ""sha256"": ""bf26caeee0437a8d292bf29be59247e2862c14e79b5ae465c00322747af72af5"", ""section"": ""1.0.2"", ""locator"": ""word/document.xml#p134"", ""first_paragraph"": 134, ""last_paragraph"": 138, ""text"": ""Secção V do Título II, Capítulo II | Decreto-Lei n.º 1/2022 — publicação oficial da Imprensa Nacional de Moçambique | Balanço e prestação de contas | INV-002; INV-007; §§1.6, 6.1 e 7.3 | Obrigação empresarial geral ligada ao checklist e à governação documental; não constitui autorização de actividade."", ""document_state_not_acceptance"": true, ""requested_exemplar_identity_pending"": true}, {""id"": ""SEG-bf26caee-p469"", ""source"": ""\\\\mac\\home\\Documents\\TEMPO\\Portal Tempo\\Servicos Tempo\\Relatorios\\novos\\segmentar processos v1.docx"", ""sha256"": ""bf26caeee0437a8d292bf29be59247e2862c14e79b5ae465c00322747af72af5"", ""section"": ""3.2"", ""locator"": ""word/document.xml#p469"", ""first_paragraph"": 469, ""last_paragraph"": 469, ""text"": ""Registar-se ou iniciar uma consulta anónima."", ""document_state_not_acceptance"": true, ""requested_exemplar_identity_pending"": true}, {""id"": ""SEG-bf26caee-p470"", ""source"": ""\\\\mac\\home\\Documents\\TEMPO\\Portal Tempo\\Servicos Tempo\\Relatorios\\novos\\segmentar processos v1.docx"", ""sha256"": ""bf26caeee0437a8d292bf29be59247e2862c14e79b5ae465c00322747af72af5"", ""section"": ""3.2"", ""locator"": ""word/document.xml#p470"", ""first_paragraph"": 470, ""last_paragraph"": 470, ""text"": ""Definir sector, localização, dimensão, capital previsto e objectivo do investimento."", ""document_state_not_acceptance"": true, ""requested_exemplar_identity_pending"": true}, {""id"": ""SEG-bf26caee-p471"", ""source"": ""\\\\mac\\home\\Documents\\TEMPO\\Portal Tempo\\Servicos Tempo\\Relatorios\\novos\\segmentar processos v1.docx"", ""sha256"": ""bf26caeee0437a8d292bf29be59247e2862c14e79b5ae465c00322747af72af5"", ""section"": ""3.2"", ""locator"": ""word/document.xml#p471"", ""first_paragraph"": 471, ""last_paragraph"": 471, ""text"": ""Consultar negócios similares, procura potencial, fundos e oportunidades disponíveis."", ""document_state_not_acceptance"": true, ""requested_exemplar_identity_pending"": true}, {""id"": ""SEG-bf26caee-p472"", ""source"": ""\\\\mac\\home\\Documents\\TEMPO\\Portal Tempo\\Servicos Tempo\\Relatorios\\novos\\segmentar processos v1.docx"", ""sha256"": ""bf26caeee0437a8d292bf29be59247e2862c14e79b5ae465c00322747af72af5"", ""section"": ""3.2"", ""locator"": ""word/document.xml#p472"", ""first_paragraph"": 472, ""last_paragraph"": 472, ""text"": ""Seleccionar a forma societária com apoio de um comparador orientado por perguntas."", ""document_state_not_acceptance"": true, ""requested_exemplar_identity_pending"": true}, {""id"": ""SEG-bf26caee-p473"", ""source"": ""\\\\mac\\home\\Documents\\TEMPO\\Portal Tempo\\Servicos Tempo\\Relatorios\\novos\\segmentar processos v1.docx"", ""sha256"": ""bf26caeee0437a8d292bf29be59247e2862c14e79b5ae465c00322747af72af5"", ""section"": ""3.2"", ""locator"": ""word/document.xml#p473"", ""first_paragraph"": 473, ""last_paragraph"": 473, ""text"": ""Criar o projecto e receber um roteiro personalizado de constituição, licenciamento, fiscalidade e operação."", ""document_state_not_acceptance"": true, ""requested_exemplar_identity_pending"": true}, {""id"": ""SEG-bf26caee-p474"", ""source"": ""\\\\mac\\home\\Documents\\TEMPO\\Portal Tempo\\Servicos Tempo\\Relatorios\\novos\\segmentar processos v1.docx"", ""sha256"": ""bf26caeee0437a8d292bf29be59247e2862c14e79b5ae465c00322747af72af5"", ""section"": ""3.2"", ""locator"": ""word/document.xml#p474"", ""first_paragraph"": 474, ""last_paragraph"": 474, ""text"": ""Preencher formulários, anexar evidências e gerar documentos normalizados."", ""document_state_not_acceptance"": true, ""requested_exemplar_identity_pending"": true}, {""id"": ""SEG-bf26caee-p475"", ""source"": ""\\\\mac\\home\\Documents\\TEMPO\\Portal Tempo\\Servicos Tempo\\Relatorios\\novos\\segmentar processos v1.docx"", ""sha256"": ""bf26caeee0437a8d292bf29be59247e2862c14e79b5ae465c00322747af72af5"", ""section"": ""3.2"", ""locator"": ""word/document.xml#p475"", ""first_paragraph"": 475, ""last_paragraph"": 475, ""text"": ""Submeter pedidos e acompanhar estado, pendências, prazos e entidade responsável."", ""document_state_not_acceptance"": true, ""requested_exemplar_identity_pending"": true}, {""id"": ""SEG-bf26caee-p476"", ""source"": ""\\\\mac\\home\\Documents\\TEMPO\\Portal Tempo\\Servicos Tempo\\Relatorios\\novos\\segmentar processos v1.docx"", ""sha256"": ""bf26caeee0437a8d292bf29be59247e2862c14e79b5ae465c00322747af72af5"", ""section"": ""3.2"", ""locator"": ""word/document.xml#p476"", ""first_paragraph"": 476, ""last_paragraph"": 476, ""text"": ""Executar simulações fiscais e contributivas, guardar cenários e exportar resultados."", ""document_state_not_acceptance"": true, ""requested_exemplar_identity_pending"": true}, {""id"": ""SEG-bf26caee-p477"", ""source"": ""\\\\mac\\home\\Documents\\TEMPO\\Portal Tempo\\Servicos Tempo\\Relatorios\\novos\\segmentar processos v1.docx"", ""sha256"": ""bf26caeee0437a8d292bf29be59247e2862c14e79b5ae465c00322747af72af5"", ""section"": ""3.2"", ""locator"": ""word/document.xml#p477"", ""first_paragraph"": 477, ""last_paragraph"": 477, ""text"": ""Receber alertas e concluir a entrada em operação."", ""document_state_not_acceptance"": true, ""requested_exemplar_identity_pending"": true}, {""id"": ""SEG-bf26caee-p618"", ""source"": ""\\\\mac\\home\\Documents\\TEMPO\\Portal Tempo\\Servicos Tempo\\Relatorios\\novos\\segmentar processos v1.docx"", ""sha256"": ""bf26caeee0437a8d292bf29be59247e2862c14e79b5ae465c00322747af72af5"", ""section"": ""6"", ""locator"": ""word/document.xml#p618"", ""first_paragraph"": 618, ""last_paragraph"": 623, ""text"": ""INV-002 | Painel com requisitos, documentos, pendências e histórico | Sim | Parcial | QA | Completar etapas, licenças e operação e demonstrar o percurso integral, sem reiniciar actividades já comprovadas."", ""document_state_not_acceptance"": true, ""requested_exemplar_identity_pending"": true}]","Não demonstrado individualmente; localizar critério e executar em QA. | [Visual QA 10 /10/2026 ] A /B desktop demonstrados por ações visíveis, incluindo ferramenta, resultado, apoio e acompanhamento. | [Visual QA 10/10/2026] A/B desktop demonstrados por ações visíveis, incluindo ferramenta, resultado, apoio e acompanhamento. | [QA A/B e países 10/10/2026] Chromium, contas QA autorizadas; critérios restantes A/B e apresentação dos dados por formulário demonstrados; screenshots/DOM no recibo específico. | [QA consumidores 10/10/2026] consumer-stats-chromium-20261010.json: pedido separado no dossierA, PT/ZA, PUT303→submitted/protocolo→nova sessão→gestãoZA0→1; replay200 conserva protocolo/v2. SQL:uma revisão/um evento submitted. PedidosA/B originais continuamDRAFT. ProvaSQL:consumer-final-persistence-qa.json; QA somente, sem instalação/ativação.","Não demonstrado individualmente; localizar critério e executar em QA. | [Visual QA 10 /10/2026 ] Respostas guardadas por método /rota/status , sem corpos de autenticação; QA23 negado 403 /404. | [Visual QA 10/10/2026] Respostas guardadas por método/rota/status, sem corpos de autenticação; QA23 negado403/404. | [QA A/B e países 10/10/2026] Respostas UI e GET de recuperação com destino QA verificado; evidências vinculadas a IDs do mesmo dossier/formulário. Regresso ao Balcão DRAFT, sem decisão externa. | [QA consumidores 10/10/2026] Pedidos de interface e GET de recuperação no servidor18097, header QA conferido antes de escrita; ver respostas/perfis no recibo por consumidor.","Não demonstrado individualmente; localizar critério e executar em QA. | [Visual QA 10 /10/2026 ] Casos, aplicabilidade, ferramenta, resultado, pedido DRAFT e tarefa guardados pelo UI; originais /histórico preservados. | [Visual QA 10/10/2026] Casos, aplicabilidade, ferramenta, resultado, pedidoDRAFT e tarefa guardados pelo UI; originais/histórico preservados. | [QA A/B e países 10/10/2026] Tabelas/entidades existentes; revisão e proveniência de C88; cinco intakes sintéticos (quatro países + um C90), sem duplicar dossiers ou contas; nenhuma escrita ativa. | [QA consumidores 10/10/2026] Entidades/IDs existentes e uma fixture sintética por caso; SQLQA READONLY liga estados, versões, atores, país/origem e hashes. Sem novas tabelas, contas ou escrita ativa.","Não demonstrado individualmente; localizar critério e executar em QA. | [Visual QA 10 /10/2026 ] Logout e contexto novo: dossier, resultados, tarefa e inputs próprios da ferramenta recuperados para cada A /B. | [Visual QA 10/10/2026] Logout e contexto novo: dossier, resultados, tarefa e inputs próprios da ferramenta recuperados para cada A/B. | [QA A/B e países 10/10/2026] Dossiers, resultados e pedidos A/B existentes; perfil/negócio/fundiário noutra sessão; protocolos públicos recuperados pela gestão autorizada. | [QA consumidores 10/10/2026] Nova sessão nos consumidores descritos; SQL confirma relações, uma submissão após repetição e preservação dos critérios originaisA/B.","Não demonstrado individualmente; localizar critério e executar em QA. | [Visual QA 10 /10/2026 ] 20 unidades; défice financeiro A 0 /B70000MZN. Ferramenta e resultado ligados ao dossier correto, sem aprovação /score inventados. | [Visual QA 10/10/2026] 20unidades; défice financeiro A0/B70000MZN. Ferramenta e resultado ligados ao dossier correto, sem aprovação/score inventados. | [QA A/B e países 10/10/2026] A=0/B=70000MZN e equilíbrio20 no dossier correto; preparaçãoBalcão, pendênciaS10 e tarefaS02done; PT/ZA, filtros independentes e estatística positiva; página de entradaC90 distinta. | [QA consumidores 10/10/2026] consumer-stats-chromium-20261010.json: pedido separado no dossierA, PT/ZA, PUT303→submitted/protocolo→nova sessão→gestãoZA0→1; replay200 conserva protocolo/v2. SQL:uma revisão/um evento submitted. PedidosA/B originais continuamDRAFT. ProvaSQL:consumer-final-persistence-qa.json; QA somente, sem instalação/ativação.","Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada | [Visual QA 10 /10/2026 ] Subcritérios atualizados por prova própria; estado global, ID s, fontes, versões e decisões preservados. | [Visual QA 10/10/2026] Subcritérios atualizados por prova própria; estado global, IDs, fontes, versões e decisões preservados. | [QA A/B e países 10/10/2026] Critérios internos A/B concluídos emQA; restantes critérios explicitados por requisito. Estados globais e todas as referências/versões de origem preservados. | [QA consumidores 10/10/2026] Critérios específicos demonstrados; estado global e referências/versões preservados. Não repetir A/B/C37 ou outros critérios aceites.
-[Segmentação bf26caeee043 — identidade confirmada; nome local v1.docx] Pedidos relacionados sem novo inventário/backlog paralelo; referência documental acrescentada, critérios anteriores preservados. Confirmar os bytes do v1(3) antes do fecho documental.",parcial,desk_cases: 1; desk_requests: 0; desk_institutional_links: 0; desk_messages: 0,"24/10/2026 FECHO ESTABILIZACAO: reconciliado com entregas 6b544548, d8224ba8, 55136b44, 8036b9b0, cf2ddf21 e 066707ec; recibos mantidos. Zero novas falhas tecnicas conhecidas nos recortes delimitados. PDF, complementos, contextos por oportunidade, ancoras e mapas nao estao pendentes de entrega. Causa dos mapas limitada ao filtro publico e gate legado; nao explica todas as perdas anteriores. Saldo e limites precisos no inicio de traceability-and-manual.md e preservation-inventory-20261023.json, sem nova matriz/backlog. Preservacao tecnica cabe a Codex/programadores; Tempo avalia utilidade/clareza/apresentacao. Ordem: estabilizacao, simulador fiscal delimitado, Imobiliario, Bens de consumo/franquias, Estatistica/paineis, IA. Historico abaixo nao reabre fechos aceites nem declara todos os criterios agregados concluidos. | Historico preservado: Capacidades/provas específicas anteriores existem, mas o requisito agregado ainda tem os critérios restantes explicitados; fechos parciais preservados.","[CONCLUSAO-INTEGRAL-20261110] Núcleo do dossier/pedido/resultado, fecho pelo dono, pré-dossier e editor de versões já implementados; fontes até ff726e57 instaladas. Restam consumidores, parametrização transversal e camadas por fonte/âmbito, habilitação nominal só quando exigida e conferência dos recortes sem prova visual. | Histórico anterior preservado: 03/11/2026: coerência do closed_at e cancelamento de rascunhos demonstrados nos percursos identificados, sem alterar regras/perfis ou encerrar dossiers automaticamente. A operação de encerrar/reabrir o dossier completo foi implementada conforme a resposta expressa do proprietário: o dono executa essa acção. Mantêm-se acesso efectivo, motivo, versão e histórico, sem impor que todas as pendências estejam concluídas nem alterar estados de outros processos. Restam restantes consumidores/parametrização/percurso adaptativo, conferência visual/login real e disponibilização no destino. Histórico anterior: 03/11/2026: comprovativo pendente ou corrigido pode completar a declaração existente sem repetir montante/moeda/fonte, com histórico e revisão independente. Restam outros consumidores e origens por formulário, atribuições/próxima acção/documentos por âmbito, parametrização transversal, conferência visual/login real e disponibilização no destino; integração bancária/entrega de mensagens não é declarada por estes registos manuais. Critérios gerais do Balcão/percurso não estão integralmente encerrados. Histórico anterior: 24/10/2026 FECHO ESTABILIZACAO: reconciliado com entregas 6b544548, d8224ba8, 55136b44, 8036b9b0, cf2ddf21 e 066707ec; recibos mantidos. Zero novas falhas tecnicas conhecidas nos recortes delimitados. PDF, complementos, contextos por oportunidade, ancoras e mapas nao estao pendentes de entrega. Causa dos mapas limitada ao filtro publico e gate legado; nao explica todas as perdas anteriores. Saldo e limites precisos no inicio de traceability-and-manual.md e preservation-inventory-20261023.json, sem nova matriz/backlog. Preservacao tecnica cabe a Codex/programadores; Tempo avalia utilidade/clareza/apresentacao. Ordem: estabilizacao, simulador fiscal delimitado, Imobiliario, Bens de consumo/franquias, Estatistica/paineis, IA. Historico abaixo nao reabre fechos aceites nem declara todos os criterios agregados concluidos. | Historico preservado: A/B encerrados no âmbito definido. Restam restantes serviços, documentos/mensagens, transições e perfis do Balcão; executar apenas critérios não demonstrados.","VirtualDesk, pedidos/casos, anexos, contexto dossier e acompanhamento; desk_payments/desk_documents/eventos cifrados e VerifiedDocumentBinary, mesma referência e declaração sem duplicação; VirtualDesk/assertOpen, autorização existente, closed_at, CRM/tasks e transição cancelled já existente","Decisão do proprietário de03/11 aplicada: o dono executa o fecho/reabertura integral; verificação do acesso efectivo e restante desenvolvimento preservados. Perfis próprios do Balcão; serviços/campos e decisões externas aplicáveis, sem inventar destinatário/prazo.","03/11/2026: estado de fecho e autoridade de acesso são eixos distintos; leituras autorizadas continuam. Cancelamento existente não concede poder de fecho/reabertura de dossiers. MFA/perfis e regras CRM de próxima acção preservados. 03/11/2026: completar documentação de declaração manual existente é correcção do percurso já disponível; não confirma dinheiro, não altera alçadas/valores ou activa integração externa. Revisão competente/histórico conservados. Nota anterior: Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.",Completar critérios restantes sem repetir provas válidas,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: balcão. Esforço de código adicional só após lacuna reproduzida.,"[CONCLUSAO-INTEGRAL-20261110] Instalação ff726e57: outputs/reviewed-install-20261110/verification.json; fontes aceites e recibos anteriores reutilizados. Saldo por percurso no início de visao-consolidada-modulos.md. 24/10/2026 FECHO ESTABILIZACAO: reconciliado com entregas 6b544548, d8224ba8, 55136b44, 8036b9b0, cf2ddf21 e 066707ec; recibos mantidos. Zero novas falhas tecnicas conhecidas nos recortes delimitados. PDF, complementos, contextos por oportunidade, ancoras e mapas nao estao pendentes de entrega. Causa dos mapas limitada ao filtro publico e gate legado; nao explica todas as perdas anteriores. Saldo e limites precisos no inicio de traceability-and-manual.md e preservation-inventory-20261023.json, sem nova matriz/backlog. Preservacao tecnica cabe a Codex/programadores; Tempo avalia utilidade/clareza/apresentacao. Ordem: estabilizacao, simulador fiscal delimitado, Imobiliario, Bens de consumo/franquias, Estatistica/paineis, IA. Historico abaixo nao reabre fechos aceites nem declara todos os criterios agregados concluidos. | Historico preservado: outputs/investmoz-audit-current-20261012/reused-evidence-integrity.json: 35 recibos anteriores com hashes correspondentes; o âmbito de cada recibo permanece limitado ao critério ensaiado. outputs/investmoz-audit-current-20261012/http-promoter.json; http-validator.json; http-publisher.json; http-manager.json. [DESK-PAYMENT-EVIDENCE-20261103] A declaração manual já existia e permitia comprovativo pendente, mas faltava juntá-lo posteriormente sem repetir a referência. Agora o titular/representante com escrita acrescenta ou corrige o suporte do mesmo pagamento pending/internal_issue por vínculo seleccionado, versão, motivo e consentimento. Referência, montante, moeda e fonte do valor são conservados; a nova associação fica pending, sem confirmação bancária. Registo internal_verified não pode ser substituído pelo titular; eventual problema continua a ser registado pelo revisor independente no percurso existente. Proveniência documental, exemplar, versão/hash registados e validade declarada ficam nos eventos cifrados, sem segunda tabela/migração ou cópia física. Conferência valida o original comum e a correspondência ao exemplar associado; legado sem captura continua desconhecido, sem reconstituição retroactiva. Pesquisa/reutilização anterior preservada. Dossier encerrado mantém leitura dos pagamentos, sem novas operações manuais. 53 Feature/721 asserções e 47 frontend, PHPStan/Pint/tipos/lint/build aprovados; 18 tabelas QA vazias/owner/RLS/índices. Dois processos sobrepostos 0.392022s, em pedidos diferentes com a mesma referência, conservaram 1 declaração/evento; segundo com conflito 409 e pedidos principais intactos. Recibo desk_payment_evidence_increment_20261103, sem escrita activa ou nova migração. [DESK-CLOSED-LIFECYCLE-20261103] Por decisão expressa do proprietário, o dono registado executa agora o encerramento/reabertura, com acesso efectivo, versão, motivo, operação idempotente e histórico. Gestores/outros representantes não recebem esse poder por inferência. Resumo das pendências antes da confirmação e manutenção dos estados/payloads/documentos/tarefas/pagamentos, sem aprovação em cascata. Dossier com closed_at já bloqueava rascunhos/anexos/pagamentos, mas permitia transições, etapas, atribuições, mensagens e actualizações de tarefas. Reproduzidos HTTP200 nesses percursos, incluindo atribuição com MFA válido. Agora a guarda de estado comum e lock do dossier protegem esses comandos, preservando leitura/histórico e as permissões anteriores. Tarefas com vínculo CRM/dossier respeitam o fecho também no CRM; CRM sem tarefas vinculadas não consulta nem exige o Balcão. Listas de triagem/filas excluem encerrados e a interface retira decisões/atribuições/mensagens/etapas/conferência/tarefas sem aplicação. Cancelamento de rascunho/devolvido, já autorizado pelo servidor ao titular com escrita, fica disponível por motivo e confirmação explícita, conservando dados/documentos/histórico e o dossier. Sucesso mostra a versão efectivamente guardada; falha conserva edições. Justificação de correcção só é perguntada num pedido devolvido. 77 Feature/1016 na regressão, 15/202 específicos finais (rondas sobrepostas, não somar),64 frontend e estática/Pint/tipos/lint/build aprovados;20 tabelas QA vazias/owner/RLS/índices. Recibo desk_closed_lifecycle_increment_20261103, sem nova migração/escrita activa.",balcão,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,"[QA consumidores 10/10/2026] Preparação A/B e submissão de pedido QA separado com protocolo/recuperação/replay sem duplicação demonstrados. Restam os outros serviços/condições, mensagens/transições, documentos e decisões externas aplicáveis; não repetir A/B ou C37. | Antes da reconciliacao de estabilizacao de 24/10/2026: A/B encerrados no âmbito definido. Restam restantes serviços, documentos/mensagens, transições e perfis do Balcão; executar apenas critérios não demonstrados.","Serviço interno real e dono/responsável; primeiro pedido só com dados do utilizador | [Semântica QA 10/10/2026] Leitura ativaREADONLY10/10:020000eBalcão07/190000+08/120000instalados;030000não;040000não;09/190000prepare_investor_pathausente(ledger/2colunas/definição). QA03/04/09-190instalados;definição19etapaspublicada61000919-0000-4000-8000-000000000001 SHAe0acbc723cd3def7e415b2ef7a0173add08387c3cedabac9bb7b86409e4d25bf. 09/190000nãofoi substituída:continuanecessária paraativo e não se repeteQA. 030/040semdependênciaDDL190;190dependeBalcão/journeys/steps/questionnaire_versions;workflowusa020+030+040+tasks/catalogue. Planofuturo:visual/candidata→backup/restaurofrescos→códigoflagsfalse→030autenticada→040instalador/bootstrapautenticadosaindaemfalta→190apenasfaltantesvia/management/balcao-install→dadosreais/perfis→cartografiaprivadaidempotente→flagspercurso/oportunidades→publicaçãoseparada. 0fixturesQAnoativo;readytrueépreparação;semativaçãoautorizada;reversãodesativaflags/preservahistóricoourestaurabackupverificado,nãodropusado.",VirtualDesk; desk_cases/requests/messages; tarefas existentes,"Portal Audit Consumer Lot Test: 2 testes /124 asserções; phpunit-lote 3-final.xml; geometry-consumers-lote3.json : 361 limites reais recuperados em QA, zero divulgação pública; visual não demonstrado | [Semântica QA 10 /10/2026 ] Provasdeledger /colunas/definição : dashboard-active-readonly.json e opportunity-semantic-environment-qa.json ;preservação 18 coleções /MFA18/manifestoativo : profiles-v1-preservation-qa.json . | [Visual QA 10 /10/2026 ] Chromium desktop 18: dois dossiers próprios A /B criados, guardados e recuperados noutra sessão; cinco fases e 19 etapas preservadas. A dispensa S10 ; B espera externa S10 com S02 independente. Plano contextual guardado /reaberto , resultados devolvidos e recuperados no dossier: ponto de equilíbrio 20 unidades; défice A 0 /B70000MZN. Balcão preparado como DRAFT, países PT /origemZA guardados; tarefa interna atribuída /assumida/iniciada/concluída no UI pelo gestor 14 e recuperada pelo investidor. Gestor sem acesso a resultados financeiros privados; QA23 dossier 403 /rascunho404 ; sem mistura entre projetos. investor-ab-chromium-20261010.json e visual-persistence-qa.json . C80 : bloquear edição /avanço enquanto GET do rascunho não terminou; diagnóstico guardado, correção e resposta deliberadamente atrasada no Chromium demonstrados em portal-simulator-loading-visual-qa.cjs /recibo. | [Visual QA 10/10/2026] Chromium desktop18: dois dossiers próprios A/B criados, guardados e recuperados noutra sessão; cinco fases e19 etapas preservadas. A dispensaS10; B espera externaS10 comS02 independente. Plano contextual guardado/reaberto, resultados devolvidos e recuperados no dossier: ponto de equilíbrio20unidades; défice A0/B70000MZN. Balcão preparado comoDRAFT, paísesPT/origemZA guardados; tarefa interna atribuída/assumida/iniciada/concluída no UI pelo gestor14 e recuperada pelo investidor. Gestor sem acesso a resultados financeiros privados; QA23 dossier403/rascunho404; sem mistura entre projetos. investor-ab-chromium-20261010.json e visual-persistence-qa.json. C80: bloquear edição/avanço enquanto GET do rascunho não terminou; diagnóstico guardado, correção e resposta deliberadamente atrasada no Chromium demonstrados em portal-simulator-loading-visual-qa.cjs/recibo. | [QA A/B e países 10/10/2026] A/B internos concluídos em QA: provas anteriores de criação/gravação/nova sessão/permissões compostas com investor-ab-remaining-chromium-20261010.json e investor-ab-remaining-persistence-qa.json. A terra/financiamento=no, S10 dispensada, equilíbrio20, necessidade0MZN; B=yes, S10waiting_external, equilíbrio20, necessidade70000MZN. Resultado/draft/dossier corretos, BalcãoDRAFT com título do dossier/resumo da ferramenta/PT/ZA, tarefaS02done posterior à esperaS10 e preparação independente habilitada; cinco fases/19etapas preservadas. Seis verificações390/320px sem overflow ou violações axe. C88 ação explícita recuperou descrição vazia de A, guardando revisão antiga/fonte(v3)/auditoria. Sem recriar dossiers/resultados/tarefas ou repetir C37. Ativo não alterado. | [QA consumidores 10/10/2026] consumer-stats-chromium-20261010.json: pedido separado no dossierA, PT/ZA, PUT303→submitted/protocolo→nova sessão→gestãoZA0→1; replay200 conserva protocolo/v2. SQL:uma revisão/um evento submitted. PedidosA/B originais continuamDRAFT. ProvaSQL:consumer-final-persistence-qa.json; QA somente, sem instalação/ativação.","Não demonstrado individualmente; localizar critério e executar em QA. | [Visual QA 10 /10/2026 ] Respostas guardadas por método /rota/status , sem corpos de autenticação; QA23 negado 403 /404. | [Visual QA 10/10/2026] Respostas guardadas por método/rota/status, sem corpos de autenticação; QA23 negado403/404. | [QA A/B e países 10/10/2026] Respostas UI e GET de recuperação com destino QA verificado; evidências vinculadas a IDs do mesmo dossier/formulário. Regresso ao Balcão DRAFT, sem decisão externa. | [QA consumidores 10/10/2026] Pedidos de interface e GET de recuperação no servidor18097, header QA conferido antes de escrita; ver respostas/perfis no recibo por consumidor.",,,,"2–8 h de reconciliação/ensaio por consumidor agrupado, pressupondo dados sintéticos/perfis preparados. Alteração: estimar após reprodução concreta; variante integral pode exceder esta faixa.",,,
+[Segmentação bf26caeee043 — identidade confirmada; nome local v1.docx] Pedidos relacionados sem novo inventário/backlog paralelo; referência documental acrescentada, critérios anteriores preservados. Confirmar os bytes do v1(3) antes do fecho documental.",parcial,desk_cases: 1; desk_requests: 0; desk_institutional_links: 0; desk_messages: 0,"24/10/2026 FECHO ESTABILIZACAO: reconciliado com entregas 6b544548, d8224ba8, 55136b44, 8036b9b0, cf2ddf21 e 066707ec; recibos mantidos. Zero novas falhas tecnicas conhecidas nos recortes delimitados. PDF, complementos, contextos por oportunidade, ancoras e mapas nao estao pendentes de entrega. Causa dos mapas limitada ao filtro publico e gate legado; nao explica todas as perdas anteriores. Saldo e limites precisos no inicio de traceability-and-manual.md e preservation-inventory-20261023.json, sem nova matriz/backlog. Preservacao tecnica cabe a Codex/programadores; Tempo avalia utilidade/clareza/apresentacao. Ordem: estabilizacao, simulador fiscal delimitado, Imobiliario, Bens de consumo/franquias, Estatistica/paineis, IA. Historico abaixo nao reabre fechos aceites nem declara todos os criterios agregados concluidos. | Historico preservado: Capacidades/provas específicas anteriores existem, mas o requisito agregado ainda tem os critérios restantes explicitados; fechos parciais preservados.","[APIEX-SWOT-20261110] Preparação documental APIEX: requisitos/documentos/revisão/índice+anexos/registo externo e recuperação demonstrados. SWOT privada: quatro dimensões, fontes/data/classificação/revisão/histórico/acção nativa no mesmo dossier demonstrados. Restam instalação deste delta e visual; períodos/regimes não mapeados continuam indeterminados. Recepção electrónica APIEX não é requisito actual nem bloqueio. Restantes critérios originais mantidos. | Histórico anterior preservado: [CONCLUSAO-INTEGRAL-20261110] Núcleo do dossier/pedido/resultado, fecho pelo dono, pré-dossier e editor de versões já implementados; fontes até ff726e57 instaladas. Restam consumidores, parametrização transversal e camadas por fonte/âmbito, habilitação nominal só quando exigida e conferência dos recortes sem prova visual. | Histórico anterior preservado: 03/11/2026: coerência do closed_at e cancelamento de rascunhos demonstrados nos percursos identificados, sem alterar regras/perfis ou encerrar dossiers automaticamente. A operação de encerrar/reabrir o dossier completo foi implementada conforme a resposta expressa do proprietário: o dono executa essa acção. Mantêm-se acesso efectivo, motivo, versão e histórico, sem impor que todas as pendências estejam concluídas nem alterar estados de outros processos. Restam restantes consumidores/parametrização/percurso adaptativo, conferência visual/login real e disponibilização no destino. Histórico anterior: 03/11/2026: comprovativo pendente ou corrigido pode completar a declaração existente sem repetir montante/moeda/fonte, com histórico e revisão independente. Restam outros consumidores e origens por formulário, atribuições/próxima acção/documentos por âmbito, parametrização transversal, conferência visual/login real e disponibilização no destino; integração bancária/entrega de mensagens não é declarada por estes registos manuais. Critérios gerais do Balcão/percurso não estão integralmente encerrados. Histórico anterior: 24/10/2026 FECHO ESTABILIZACAO: reconciliado com entregas 6b544548, d8224ba8, 55136b44, 8036b9b0, cf2ddf21 e 066707ec; recibos mantidos. Zero novas falhas tecnicas conhecidas nos recortes delimitados. PDF, complementos, contextos por oportunidade, ancoras e mapas nao estao pendentes de entrega. Causa dos mapas limitada ao filtro publico e gate legado; nao explica todas as perdas anteriores. Saldo e limites precisos no inicio de traceability-and-manual.md e preservation-inventory-20261023.json, sem nova matriz/backlog. Preservacao tecnica cabe a Codex/programadores; Tempo avalia utilidade/clareza/apresentacao. Ordem: estabilizacao, simulador fiscal delimitado, Imobiliario, Bens de consumo/franquias, Estatistica/paineis, IA. Historico abaixo nao reabre fechos aceites nem declara todos os criterios agregados concluidos. | Historico preservado: A/B encerrados no âmbito definido. Restam restantes serviços, documentos/mensagens, transições e perfis do Balcão; executar apenas critérios não demonstrados.","VirtualDesk, pedidos/casos, anexos, contexto dossier e acompanhamento; desk_payments/desk_documents/eventos cifrados e VerifiedDocumentBinary, mesma referência e declaração sem duplicação; VirtualDesk/assertOpen, autorização existente, closed_at, CRM/tasks e transição cancelled já existente","Decisão do proprietário de03/11 aplicada: o dono executa o fecho/reabertura integral; verificação do acesso efectivo e restante desenvolvimento preservados. Perfis próprios do Balcão; serviços/campos e decisões externas aplicáveis, sem inventar destinatário/prazo.","03/11/2026: estado de fecho e autoridade de acesso são eixos distintos; leituras autorizadas continuam. Cancelamento existente não concede poder de fecho/reabertura de dossiers. MFA/perfis e regras CRM de próxima acção preservados. 03/11/2026: completar documentação de declaração manual existente é correcção do percurso já disponível; não confirma dinheiro, não altera alçadas/valores ou activa integração externa. Revisão competente/histórico conservados. Nota anterior: Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.",Completar critérios restantes sem repetir provas válidas,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: balcão. Esforço de código adicional só após lacuna reproduzida.,"[APIEX-SWOT-20261110] outputs/investment-preparation-20261110/verification.json e artefactos sintéticos; seis casos API/211asserções,16frontend dirigidos, tipos/análise/lint. outputs/entrega-apiex-swot-20261110.zip, base7476dc34, sem migrations. Manual e saldo no início dos registos existentes. | Histórico anterior preservado: [CONCLUSAO-INTEGRAL-20261110] Instalação ff726e57: outputs/reviewed-install-20261110/verification.json; fontes aceites e recibos anteriores reutilizados. Saldo por percurso no início de visao-consolidada-modulos.md. 24/10/2026 FECHO ESTABILIZACAO: reconciliado com entregas 6b544548, d8224ba8, 55136b44, 8036b9b0, cf2ddf21 e 066707ec; recibos mantidos. Zero novas falhas tecnicas conhecidas nos recortes delimitados. PDF, complementos, contextos por oportunidade, ancoras e mapas nao estao pendentes de entrega. Causa dos mapas limitada ao filtro publico e gate legado; nao explica todas as perdas anteriores. Saldo e limites precisos no inicio de traceability-and-manual.md e preservation-inventory-20261023.json, sem nova matriz/backlog. Preservacao tecnica cabe a Codex/programadores; Tempo avalia utilidade/clareza/apresentacao. Ordem: estabilizacao, simulador fiscal delimitado, Imobiliario, Bens de consumo/franquias, Estatistica/paineis, IA. Historico abaixo nao reabre fechos aceites nem declara todos os criterios agregados concluidos. | Historico preservado: outputs/investmoz-audit-current-20261012/reused-evidence-integrity.json: 35 recibos anteriores com hashes correspondentes; o âmbito de cada recibo permanece limitado ao critério ensaiado. outputs/investmoz-audit-current-20261012/http-promoter.json; http-validator.json; http-publisher.json; http-manager.json. [DESK-PAYMENT-EVIDENCE-20261103] A declaração manual já existia e permitia comprovativo pendente, mas faltava juntá-lo posteriormente sem repetir a referência. Agora o titular/representante com escrita acrescenta ou corrige o suporte do mesmo pagamento pending/internal_issue por vínculo seleccionado, versão, motivo e consentimento. Referência, montante, moeda e fonte do valor são conservados; a nova associação fica pending, sem confirmação bancária. Registo internal_verified não pode ser substituído pelo titular; eventual problema continua a ser registado pelo revisor independente no percurso existente. Proveniência documental, exemplar, versão/hash registados e validade declarada ficam nos eventos cifrados, sem segunda tabela/migração ou cópia física. Conferência valida o original comum e a correspondência ao exemplar associado; legado sem captura continua desconhecido, sem reconstituição retroactiva. Pesquisa/reutilização anterior preservada. Dossier encerrado mantém leitura dos pagamentos, sem novas operações manuais. 53 Feature/721 asserções e 47 frontend, PHPStan/Pint/tipos/lint/build aprovados; 18 tabelas QA vazias/owner/RLS/índices. Dois processos sobrepostos 0.392022s, em pedidos diferentes com a mesma referência, conservaram 1 declaração/evento; segundo com conflito 409 e pedidos principais intactos. Recibo desk_payment_evidence_increment_20261103, sem escrita activa ou nova migração. [DESK-CLOSED-LIFECYCLE-20261103] Por decisão expressa do proprietário, o dono registado executa agora o encerramento/reabertura, com acesso efectivo, versão, motivo, operação idempotente e histórico. Gestores/outros representantes não recebem esse poder por inferência. Resumo das pendências antes da confirmação e manutenção dos estados/payloads/documentos/tarefas/pagamentos, sem aprovação em cascata. Dossier com closed_at já bloqueava rascunhos/anexos/pagamentos, mas permitia transições, etapas, atribuições, mensagens e actualizações de tarefas. Reproduzidos HTTP200 nesses percursos, incluindo atribuição com MFA válido. Agora a guarda de estado comum e lock do dossier protegem esses comandos, preservando leitura/histórico e as permissões anteriores. Tarefas com vínculo CRM/dossier respeitam o fecho também no CRM; CRM sem tarefas vinculadas não consulta nem exige o Balcão. Listas de triagem/filas excluem encerrados e a interface retira decisões/atribuições/mensagens/etapas/conferência/tarefas sem aplicação. Cancelamento de rascunho/devolvido, já autorizado pelo servidor ao titular com escrita, fica disponível por motivo e confirmação explícita, conservando dados/documentos/histórico e o dossier. Sucesso mostra a versão efectivamente guardada; falha conserva edições. Justificação de correcção só é perguntada num pedido devolvido. 77 Feature/1016 na regressão, 15/202 específicos finais (rondas sobrepostas, não somar),64 frontend e estática/Pint/tipos/lint/build aprovados;20 tabelas QA vazias/owner/RLS/índices. Recibo desk_closed_lifecycle_increment_20261103, sem nova migração/escrita activa.",balcão,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,"[QA consumidores 10/10/2026] Preparação A/B e submissão de pedido QA separado com protocolo/recuperação/replay sem duplicação demonstrados. Restam os outros serviços/condições, mensagens/transições, documentos e decisões externas aplicáveis; não repetir A/B ou C37. | Antes da reconciliacao de estabilizacao de 24/10/2026: A/B encerrados no âmbito definido. Restam restantes serviços, documentos/mensagens, transições e perfis do Balcão; executar apenas critérios não demonstrados.","Serviço interno real e dono/responsável; primeiro pedido só com dados do utilizador | [Semântica QA 10/10/2026] Leitura ativaREADONLY10/10:020000eBalcão07/190000+08/120000instalados;030000não;040000não;09/190000prepare_investor_pathausente(ledger/2colunas/definição). QA03/04/09-190instalados;definição19etapaspublicada61000919-0000-4000-8000-000000000001 SHAe0acbc723cd3def7e415b2ef7a0173add08387c3cedabac9bb7b86409e4d25bf. 09/190000nãofoi substituída:continuanecessária paraativo e não se repeteQA. 030/040semdependênciaDDL190;190dependeBalcão/journeys/steps/questionnaire_versions;workflowusa020+030+040+tasks/catalogue. Planofuturo:visual/candidata→backup/restaurofrescos→códigoflagsfalse→030autenticada→040instalador/bootstrapautenticadosaindaemfalta→190apenasfaltantesvia/management/balcao-install→dadosreais/perfis→cartografiaprivadaidempotente→flagspercurso/oportunidades→publicaçãoseparada. 0fixturesQAnoativo;readytrueépreparação;semativaçãoautorizada;reversãodesativaflags/preservahistóricoourestaurabackupverificado,nãodropusado.",VirtualDesk; desk_cases/requests/messages; tarefas existentes,"Portal Audit Consumer Lot Test: 2 testes /124 asserções; phpunit-lote 3-final.xml; geometry-consumers-lote3.json : 361 limites reais recuperados em QA, zero divulgação pública; visual não demonstrado | [Semântica QA 10 /10/2026 ] Provasdeledger /colunas/definição : dashboard-active-readonly.json e opportunity-semantic-environment-qa.json ;preservação 18 coleções /MFA18/manifestoativo : profiles-v1-preservation-qa.json . | [Visual QA 10 /10/2026 ] Chromium desktop 18: dois dossiers próprios A /B criados, guardados e recuperados noutra sessão; cinco fases e 19 etapas preservadas. A dispensa S10 ; B espera externa S10 com S02 independente. Plano contextual guardado /reaberto , resultados devolvidos e recuperados no dossier: ponto de equilíbrio 20 unidades; défice A 0 /B70000MZN. Balcão preparado como DRAFT, países PT /origemZA guardados; tarefa interna atribuída /assumida/iniciada/concluída no UI pelo gestor 14 e recuperada pelo investidor. Gestor sem acesso a resultados financeiros privados; QA23 dossier 403 /rascunho404 ; sem mistura entre projetos. investor-ab-chromium-20261010.json e visual-persistence-qa.json . C80 : bloquear edição /avanço enquanto GET do rascunho não terminou; diagnóstico guardado, correção e resposta deliberadamente atrasada no Chromium demonstrados em portal-simulator-loading-visual-qa.cjs /recibo. | [Visual QA 10/10/2026] Chromium desktop18: dois dossiers próprios A/B criados, guardados e recuperados noutra sessão; cinco fases e19 etapas preservadas. A dispensaS10; B espera externaS10 comS02 independente. Plano contextual guardado/reaberto, resultados devolvidos e recuperados no dossier: ponto de equilíbrio20unidades; défice A0/B70000MZN. Balcão preparado comoDRAFT, paísesPT/origemZA guardados; tarefa interna atribuída/assumida/iniciada/concluída no UI pelo gestor14 e recuperada pelo investidor. Gestor sem acesso a resultados financeiros privados; QA23 dossier403/rascunho404; sem mistura entre projetos. investor-ab-chromium-20261010.json e visual-persistence-qa.json. C80: bloquear edição/avanço enquanto GET do rascunho não terminou; diagnóstico guardado, correção e resposta deliberadamente atrasada no Chromium demonstrados em portal-simulator-loading-visual-qa.cjs/recibo. | [QA A/B e países 10/10/2026] A/B internos concluídos em QA: provas anteriores de criação/gravação/nova sessão/permissões compostas com investor-ab-remaining-chromium-20261010.json e investor-ab-remaining-persistence-qa.json. A terra/financiamento=no, S10 dispensada, equilíbrio20, necessidade0MZN; B=yes, S10waiting_external, equilíbrio20, necessidade70000MZN. Resultado/draft/dossier corretos, BalcãoDRAFT com título do dossier/resumo da ferramenta/PT/ZA, tarefaS02done posterior à esperaS10 e preparação independente habilitada; cinco fases/19etapas preservadas. Seis verificações390/320px sem overflow ou violações axe. C88 ação explícita recuperou descrição vazia de A, guardando revisão antiga/fonte(v3)/auditoria. Sem recriar dossiers/resultados/tarefas ou repetir C37. Ativo não alterado. | [QA consumidores 10/10/2026] consumer-stats-chromium-20261010.json: pedido separado no dossierA, PT/ZA, PUT303→submitted/protocolo→nova sessão→gestãoZA0→1; replay200 conserva protocolo/v2. SQL:uma revisão/um evento submitted. PedidosA/B originais continuamDRAFT. ProvaSQL:consumer-final-persistence-qa.json; QA somente, sem instalação/ativação.","Não demonstrado individualmente; localizar critério e executar em QA. | [Visual QA 10 /10/2026 ] Respostas guardadas por método /rota/status , sem corpos de autenticação; QA23 negado 403 /404. | [Visual QA 10/10/2026] Respostas guardadas por método/rota/status, sem corpos de autenticação; QA23 negado403/404. | [QA A/B e países 10/10/2026] Respostas UI e GET de recuperação com destino QA verificado; evidências vinculadas a IDs do mesmo dossier/formulário. Regresso ao Balcão DRAFT, sem decisão externa. | [QA consumidores 10/10/2026] Pedidos de interface e GET de recuperação no servidor18097, header QA conferido antes de escrita; ver respostas/perfis no recibo por consumidor.",,,,"2–8 h de reconciliação/ensaio por consumidor agrupado, pressupondo dados sintéticos/perfis preparados. Alteração: estimar após reprodução concreta; variante integral pode exceder esta faixa.",,,
AUD-DESK-02,"Reutilizar investimento, percurso, pedido e responsável no Balcão","Pedido direto 09/10/2026, auditoria §1–4; fontes específicas descritas em relatorio-executivo.md | Proposta consolidação 09/10/2026; DOCX aa13c53138ec15cd808de43d9dc2fc6808da86943d09d3352c9dd0944bdae364; texto P22–P40, estados P76–P88, aprovação P326/P497; proposta-consolidacao-percurso.md | Aprovação expressa da execução I1–I3 exclusivamente QA; execução 09/10/2026, execucao-percurso-i1-i3.md, C25/C26. | Pedido direto 09/10/2026: corrigir HTTP500 POST /two-factor-challenge na QA18097 após conta13; preservar conta/chave/MFA, invalidar sessão exposta e retomar cenárioA.
[Segmentação bf26caeee043 — identidade confirmada; nome local v1.docx] SEG-bf26caee-p94 §1.0.2; SEG-bf26caee-p99 §1.0.2; SEG-bf26caee-p104 §1.0.2; SEG-bf26caee-p109 §1.0.2; SEG-bf26caee-p114 §1.0.2; SEG-bf26caee-p119 §1.0.2; SEG-bf26caee-p129 §1.0.2; SEG-bf26caee-p144 §1.2; SEG-bf26caee-p145 §1.2; SEG-bf26caee-p146 §1.2; SEG-bf26caee-p147 §1.2; SEG-bf26caee-p469 §3.2; SEG-bf26caee-p470 §3.2; SEG-bf26caee-p471 §3.2; SEG-bf26caee-p472 §3.2; SEG-bf26caee-p473 §3.2; SEG-bf26caee-p474 §3.2; SEG-bf26caee-p475 §3.2; SEG-bf26caee-p476 §3.2; SEG-bf26caee-p477 §3.2; SEG-bf26caee-p479 §3.2.1; SEG-bf26caee-p571 §5.1; SEG-bf26caee-p574 §5.1; SEG-bf26caee-p577 §5.1; SEG-bf26caee-p580 §5.1; SEG-bf26caee-p583 §5.1; SEG-bf26caee-p586 §5.1; SEG-bf26caee-p589 §5.1; SEG-bf26caee-p592 §5.1; SEG-bf26caee-p597 §5.2; SEG-bf26caee-p598 §5.2; SEG-bf26caee-p599 §5.2; SEG-bf26caee-p600 §5.2; SEG-bf26caee-p601 §5.2; SEG-bf26caee-p612 §6; SEG-bf26caee-p730 §6.1
-[Revisão externa 10/11/2026] Directiva de Implementação Segura v1.0 de 08/11/2026; correecoes ao portal.docx SHA db630ab937cc00686480aa02ef0156a8ac20edadf97306995277a5173d890f51; confronto em revisao-externa-2026-11-10.md.",Balcão/orientação,/balcao-virtual/painel,"VirtualDesk, pedidos/casos, anexos, contexto dossier e acompanhamento. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual. [DESK-PAYMENT-EVIDENCE-20261103] A declaração manual já existia e permitia comprovativo pendente, mas faltava juntá-lo posteriormente sem repetir a referência. Agora o titular/representante com escrita acrescenta ou corrige o suporte do mesmo pagamento pending/internal_issue por vínculo seleccionado, versão, motivo e consentimento. Referência, montante, moeda e fonte do valor são conservados; a nova associação fica pending, sem confirmação bancária. Registo internal_verified não pode ser substituído pelo titular; eventual problema continua a ser registado pelo revisor independente no percurso existente. Proveniência documental, exemplar, versão/hash registados e validade declarada ficam nos eventos cifrados, sem segunda tabela/migração ou cópia física. Conferência valida o original comum e a correspondência ao exemplar associado; legado sem captura continua desconhecido, sem reconstituição retroactiva. Pesquisa/reutilização anterior preservada. Dossier encerrado mantém leitura dos pagamentos, sem novas operações manuais. 53 Feature/721 asserções e 47 frontend, PHPStan/Pint/tipos/lint/build aprovados; 18 tabelas QA vazias/owner/RLS/índices. Dois processos sobrepostos 0.392022s, em pedidos diferentes com a mesma referência, conservaram 1 declaração/evento; segundo com conflito 409 e pedidos principais intactos. Recibo desk_payment_evidence_increment_20261103, sem escrita activa ou nova migração. [DESK-CLOSED-LIFECYCLE-20261103] Por decisão expressa do proprietário, o dono registado executa agora o encerramento/reabertura, com acesso efectivo, versão, motivo, operação idempotente e histórico. Gestores/outros representantes não recebem esse poder por inferência. Resumo das pendências antes da confirmação e manutenção dos estados/payloads/documentos/tarefas/pagamentos, sem aprovação em cascata. Dossier com closed_at já bloqueava rascunhos/anexos/pagamentos, mas permitia transições, etapas, atribuições, mensagens e actualizações de tarefas. Reproduzidos HTTP200 nesses percursos, incluindo atribuição com MFA válido. Agora a guarda de estado comum e lock do dossier protegem esses comandos, preservando leitura/histórico e as permissões anteriores. Tarefas com vínculo CRM/dossier respeitam o fecho também no CRM; CRM sem tarefas vinculadas não consulta nem exige o Balcão. Listas de triagem/filas excluem encerrados e a interface retira decisões/atribuições/mensagens/etapas/conferência/tarefas sem aplicação. Cancelamento de rascunho/devolvido, já autorizado pelo servidor ao titular com escrita, fica disponível por motivo e confirmação explícita, conservando dados/documentos/histórico e o dossier. Sucesso mostra a versão efectivamente guardada; falha conserva edições. Justificação de correcção só é perguntada num pedido devolvido. 77 Feature/1016 na regressão, 15/202 específicos finais (rondas sobrepostas, não somar),64 frontend e estática/Pint/tipos/lint/build aprovados;20 tabelas QA vazias/owner/RLS/índices. Recibo desk_closed_lifecycle_increment_20261103, sem nova migração/escrita activa.","[CONCLUSAO-INTEGRAL-20261110] Fontes até ff726e57 na homologação teste-investidor. Não confundir instalação do código com nova concessão, habilitação nominal ou prova visual integral. | Histórico anterior preservado: 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. | 22/10/2026 — disponibilizado por autorização Tempo: revisão servida042ffbde (inclui a76369eb/a1fbda06/064296e1 e correcção dirigida da recuperação legada). Percurso habilitado na homologação, versão private-investment-preparation-2026-v1; main ancestral preservado, sem conflitos/force-push. Zero migrations/importações/fixtures; nenhuma nova regra fiscal publicada/activada. Revisão/configuração/rotas conferidas; provas funcionais QA reutilizadas.","outputs/investmoz-audit-current-20261012/reused-evidence-integrity.json: 35 recibos anteriores com hashes correspondentes; o âmbito de cada recibo permanece limitado ao critério ensaiado. outputs/investmoz-audit-current-20261012/http-promoter.json; http-validator.json; http-publisher.json; http-manager.json.
+[Revisão externa 10/11/2026] Directiva de Implementação Segura v1.0 de 08/11/2026; correecoes ao portal.docx SHA db630ab937cc00686480aa02ef0156a8ac20edadf97306995277a5173d890f51; confronto em revisao-externa-2026-11-10.md.",Balcão/orientação,/balcao-virtual/painel,"VirtualDesk, pedidos/casos, anexos, contexto dossier e acompanhamento. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual. [DESK-PAYMENT-EVIDENCE-20261103] A declaração manual já existia e permitia comprovativo pendente, mas faltava juntá-lo posteriormente sem repetir a referência. Agora o titular/representante com escrita acrescenta ou corrige o suporte do mesmo pagamento pending/internal_issue por vínculo seleccionado, versão, motivo e consentimento. Referência, montante, moeda e fonte do valor são conservados; a nova associação fica pending, sem confirmação bancária. Registo internal_verified não pode ser substituído pelo titular; eventual problema continua a ser registado pelo revisor independente no percurso existente. Proveniência documental, exemplar, versão/hash registados e validade declarada ficam nos eventos cifrados, sem segunda tabela/migração ou cópia física. Conferência valida o original comum e a correspondência ao exemplar associado; legado sem captura continua desconhecido, sem reconstituição retroactiva. Pesquisa/reutilização anterior preservada. Dossier encerrado mantém leitura dos pagamentos, sem novas operações manuais. 53 Feature/721 asserções e 47 frontend, PHPStan/Pint/tipos/lint/build aprovados; 18 tabelas QA vazias/owner/RLS/índices. Dois processos sobrepostos 0.392022s, em pedidos diferentes com a mesma referência, conservaram 1 declaração/evento; segundo com conflito 409 e pedidos principais intactos. Recibo desk_payment_evidence_increment_20261103, sem escrita activa ou nova migração. [DESK-CLOSED-LIFECYCLE-20261103] Por decisão expressa do proprietário, o dono registado executa agora o encerramento/reabertura, com acesso efectivo, versão, motivo, operação idempotente e histórico. Gestores/outros representantes não recebem esse poder por inferência. Resumo das pendências antes da confirmação e manutenção dos estados/payloads/documentos/tarefas/pagamentos, sem aprovação em cascata. Dossier com closed_at já bloqueava rascunhos/anexos/pagamentos, mas permitia transições, etapas, atribuições, mensagens e actualizações de tarefas. Reproduzidos HTTP200 nesses percursos, incluindo atribuição com MFA válido. Agora a guarda de estado comum e lock do dossier protegem esses comandos, preservando leitura/histórico e as permissões anteriores. Tarefas com vínculo CRM/dossier respeitam o fecho também no CRM; CRM sem tarefas vinculadas não consulta nem exige o Balcão. Listas de triagem/filas excluem encerrados e a interface retira decisões/atribuições/mensagens/etapas/conferência/tarefas sem aplicação. Cancelamento de rascunho/devolvido, já autorizado pelo servidor ao titular com escrita, fica disponível por motivo e confirmação explícita, conservando dados/documentos/histórico e o dossier. Sucesso mostra a versão efectivamente guardada; falha conserva edições. Justificação de correcção só é perguntada num pedido devolvido. 77 Feature/1016 na regressão, 15/202 específicos finais (rondas sobrepostas, não somar),64 frontend e estática/Pint/tipos/lint/build aprovados;20 tabelas QA vazias/owner/RLS/índices. Recibo desk_closed_lifecycle_increment_20261103, sem nova migração/escrita activa.","[APIEX-SWOT-20261110] Homologação7476dc34 instalada; preparação APIEX e SWOT no dossier existente implementadas em QA, não instaladas. | Histórico anterior preservado: [CONCLUSAO-INTEGRAL-20261110] Fontes até ff726e57 na homologação teste-investidor. Não confundir instalação do código com nova concessão, habilitação nominal ou prova visual integral. | Histórico anterior preservado: 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. | 22/10/2026 — disponibilizado por autorização Tempo: revisão servida042ffbde (inclui a76369eb/a1fbda06/064296e1 e correcção dirigida da recuperação legada). Percurso habilitado na homologação, versão private-investment-preparation-2026-v1; main ancestral preservado, sem conflitos/force-push. Zero migrations/importações/fixtures; nenhuma nova regra fiscal publicada/activada. Revisão/configuração/rotas conferidas; provas funcionais QA reutilizadas.","outputs/investmoz-audit-current-20261012/reused-evidence-integrity.json: 35 recibos anteriores com hashes correspondentes; o âmbito de cada recibo permanece limitado ao critério ensaiado. outputs/investmoz-audit-current-20261012/http-promoter.json; http-validator.json; http-publisher.json; http-manager.json.
[B QA 13/10/2026] OpçãoB fixada antes de executar. QA190000 já instalada, definição5fases/19etapas; flagQA estavaOFF, ativada isoladamente sem instalação. HTTP13contextos existentes com5/19; acesso a dossier privado alheio403. Casos/journeys/rascunhos anteriores preservados por hash. Provas agrupadas em proof-groups.json e execução-B-QA.md.
@@ -5688,11 +5688,11 @@ AUD-DESK-02,"Reutilizar investimento, percurso, pedido e responsável no Balcão
[Reconciliação visual14/10/2026 — sem novo ensaio] A/B fechado preservado. Apenas vínculo explícitoC145, quatroseletores/anexos da entidade, linkadministrativoC144 e recursos/recibo/revogaçãoBalcão específicos aguardam visual. Referência: outputs/investmoz-audit-current-20261012/acceptance-396c-visual-reconciliation-20261014.json
-[RECONCILIACAO-43-20261019] 10: Motor, contexto e recuperação instalados; falta observação do caso legítimo. Variantes societárias/fiscais/contratuais em11,16,17,22. | 31: Só project-preparationv5 registado. project-change/project-follow-up existem na configuração e faltam versões internas. Gestão/decisão da equipa ainda usa gate global. | 32: Prova positiva no destino exige dossier real autorizado; dependência de verificação/dados, não reconstrução. Ligação documental por referência adicional em39. | 39: Integrar306e3ebc8a70 e31 referências a2 originais. Preservar permissões, versão/citação/hash e compatibilidade de reversão. Dossier legítimo para verificação final. | 22/10/2026: primeiro incremento QA na branch codex/project-context-continuity-QA; contexto único por dossier/conta, herança com edições preservadas, moeda/IVA mensal e análise territorial explícita. Ver traceability-and-manual.md, secção Continuidade e adaptação contextual. 4 HTTP/74 asserções; 8 frontend; percurso visual A/B e nova sessão. Não encerra adaptação jurídica integral. | 22/10/2026 — percurso privado executável em QA (base52fbb146): condições oficiais seleccionam mero registo/autorização, alternativas documentais e próximos passos; contexto C v4 mero registo após distinção directo/indirecto (Lei14/R13); prévia visual, vínculo inactivo preservado e relatório v3 por autorização conservado como histórico. 3 testes/96 asserções e um teste do novo relatório, tipos/build aprovados. Sem validação jurídica genérica adicional; orientação permanente Tempo em AGENTS. Branch codex/private-investment-path-executable-QA; sem integração main/alteração da homologação/activação fiscal.","[CONCLUSAO-INTEGRAL-20261110] Núcleo do dossier/pedido/resultado, fecho pelo dono, pré-dossier e editor de versões já implementados; fontes até ff726e57 instaladas. Restam consumidores, parametrização transversal e camadas por fonte/âmbito, habilitação nominal só quando exigida e conferência dos recortes sem prova visual. | Histórico anterior preservado: 03/11/2026: coerência do closed_at e cancelamento de rascunhos demonstrados nos percursos identificados, sem alterar regras/perfis ou encerrar dossiers automaticamente. A operação de encerrar/reabrir o dossier completo foi implementada conforme a resposta expressa do proprietário: o dono executa essa acção. Mantêm-se acesso efectivo, motivo, versão e histórico, sem impor que todas as pendências estejam concluídas nem alterar estados de outros processos. Restam restantes consumidores/parametrização/percurso adaptativo, conferência visual/login real e disponibilização no destino. Histórico anterior: 03/11/2026: comprovativo pendente ou corrigido pode completar a declaração existente sem repetir montante/moeda/fonte, com histórico e revisão independente. Restam outros consumidores e origens por formulário, atribuições/próxima acção/documentos por âmbito, parametrização transversal, conferência visual/login real e disponibilização no destino; integração bancária/entrega de mensagens não é declarada por estes registos manuais. Critérios gerais do Balcão/percurso não estão integralmente encerrados. Histórico anterior: 24/10/2026 FECHO ESTABILIZACAO: reconciliado com entregas 6b544548, d8224ba8, 55136b44, 8036b9b0, cf2ddf21 e 066707ec; recibos mantidos. Zero novas falhas tecnicas conhecidas nos recortes delimitados. PDF, complementos, contextos por oportunidade, ancoras e mapas nao estao pendentes de entrega. Causa dos mapas limitada ao filtro publico e gate legado; nao explica todas as perdas anteriores. Saldo e limites precisos no inicio de traceability-and-manual.md e preservation-inventory-20261023.json, sem nova matriz/backlog. Preservacao tecnica cabe a Codex/programadores; Tempo avalia utilidade/clareza/apresentacao. Ordem: estabilizacao, simulador fiscal delimitado, Imobiliario, Bens de consumo/franquias, Estatistica/paineis, IA. Historico abaixo nao reabre fechos aceites nem declara todos os criterios agregados concluidos. | Historico preservado: [B8 QA 13/10/2026] Somente oito percursos visuaisL4/C135 e consolidação/backup-restauroQA da revisãofixa restam na checklistB; não há exigência técnica genérica nova. Requisito agregado continua parcial; critérios foraB e ativação separados.
+[RECONCILIACAO-43-20261019] 10: Motor, contexto e recuperação instalados; falta observação do caso legítimo. Variantes societárias/fiscais/contratuais em11,16,17,22. | 31: Só project-preparationv5 registado. project-change/project-follow-up existem na configuração e faltam versões internas. Gestão/decisão da equipa ainda usa gate global. | 32: Prova positiva no destino exige dossier real autorizado; dependência de verificação/dados, não reconstrução. Ligação documental por referência adicional em39. | 39: Integrar306e3ebc8a70 e31 referências a2 originais. Preservar permissões, versão/citação/hash e compatibilidade de reversão. Dossier legítimo para verificação final. | 22/10/2026: primeiro incremento QA na branch codex/project-context-continuity-QA; contexto único por dossier/conta, herança com edições preservadas, moeda/IVA mensal e análise territorial explícita. Ver traceability-and-manual.md, secção Continuidade e adaptação contextual. 4 HTTP/74 asserções; 8 frontend; percurso visual A/B e nova sessão. Não encerra adaptação jurídica integral. | 22/10/2026 — percurso privado executável em QA (base52fbb146): condições oficiais seleccionam mero registo/autorização, alternativas documentais e próximos passos; contexto C v4 mero registo após distinção directo/indirecto (Lei14/R13); prévia visual, vínculo inactivo preservado e relatório v3 por autorização conservado como histórico. 3 testes/96 asserções e um teste do novo relatório, tipos/build aprovados. Sem validação jurídica genérica adicional; orientação permanente Tempo em AGENTS. Branch codex/private-investment-path-executable-QA; sem integração main/alteração da homologação/activação fiscal.","[APIEX-SWOT-20261110] Preparação documental APIEX: requisitos/documentos/revisão/índice+anexos/registo externo e recuperação demonstrados. SWOT privada: quatro dimensões, fontes/data/classificação/revisão/histórico/acção nativa no mesmo dossier demonstrados. Restam instalação deste delta e visual; períodos/regimes não mapeados continuam indeterminados. Recepção electrónica APIEX não é requisito actual nem bloqueio. Restantes critérios originais mantidos. | Histórico anterior preservado: [CONCLUSAO-INTEGRAL-20261110] Núcleo do dossier/pedido/resultado, fecho pelo dono, pré-dossier e editor de versões já implementados; fontes até ff726e57 instaladas. Restam consumidores, parametrização transversal e camadas por fonte/âmbito, habilitação nominal só quando exigida e conferência dos recortes sem prova visual. | Histórico anterior preservado: 03/11/2026: coerência do closed_at e cancelamento de rascunhos demonstrados nos percursos identificados, sem alterar regras/perfis ou encerrar dossiers automaticamente. A operação de encerrar/reabrir o dossier completo foi implementada conforme a resposta expressa do proprietário: o dono executa essa acção. Mantêm-se acesso efectivo, motivo, versão e histórico, sem impor que todas as pendências estejam concluídas nem alterar estados de outros processos. Restam restantes consumidores/parametrização/percurso adaptativo, conferência visual/login real e disponibilização no destino. Histórico anterior: 03/11/2026: comprovativo pendente ou corrigido pode completar a declaração existente sem repetir montante/moeda/fonte, com histórico e revisão independente. Restam outros consumidores e origens por formulário, atribuições/próxima acção/documentos por âmbito, parametrização transversal, conferência visual/login real e disponibilização no destino; integração bancária/entrega de mensagens não é declarada por estes registos manuais. Critérios gerais do Balcão/percurso não estão integralmente encerrados. Histórico anterior: 24/10/2026 FECHO ESTABILIZACAO: reconciliado com entregas 6b544548, d8224ba8, 55136b44, 8036b9b0, cf2ddf21 e 066707ec; recibos mantidos. Zero novas falhas tecnicas conhecidas nos recortes delimitados. PDF, complementos, contextos por oportunidade, ancoras e mapas nao estao pendentes de entrega. Causa dos mapas limitada ao filtro publico e gate legado; nao explica todas as perdas anteriores. Saldo e limites precisos no inicio de traceability-and-manual.md e preservation-inventory-20261023.json, sem nova matriz/backlog. Preservacao tecnica cabe a Codex/programadores; Tempo avalia utilidade/clareza/apresentacao. Ordem: estabilizacao, simulador fiscal delimitado, Imobiliario, Bens de consumo/franquias, Estatistica/paineis, IA. Historico abaixo nao reabre fechos aceites nem declara todos os criterios agregados concluidos. | Historico preservado: [B8 QA 13/10/2026] Somente oito percursos visuaisL4/C135 e consolidação/backup-restauroQA da revisãofixa restam na checklistB; não há exigência técnica genérica nova. Requisito agregado continua parcial; critérios foraB e ativação separados.
[Reconciliação visual14/10/2026 — sem novo ensaio] A classificação anterior «outrossetepercursos pendentes» é histórica e não invalida critérios visuais válidos. Roteiro atual:12trechos específicos em1/4/5/6/7/8;2/3 sem passos restantes. Sem novo critério, nem fecho global/opçãoB/candidata/ativação. A/B fechado preservado. Apenas vínculo explícitoC145, quatroseletores/anexos da entidade, linkadministrativoC144 e recursos/recibo/revogaçãoBalcão específicos aguardam visual.
-[UTILIZACAO-HOMOLOGACAO-20261019] 10: Disponibilidade condicionada conforme limite registado — Início e lista própria abrem; definição de 19 etapas instalada. Não repetidas as 19 etapas aceites. | 31: Disponibilidade condicionada conforme limite registado — Painel e serviço existente abrem; dez tabelas base instaladas, definição interna project-preparation v5 transportada. | 32: Implementado no recorte; falta processo real — Recuperação no clone aceite; vínculo positivo no destino depende de dossier legítimo autorizado. | 39: Disponibilidade condicionada conforme limite registado — Reutilização documental Inhambane/dossier permanece no incremento QA separado. | Recorte executável C concluído em QA. Restantes coberturas sectoriais/benefícios e encaminhamento visual de zona real têm limites concretos no manual; não bloqueiam os ramos já documentados. Integração/habilitação no destino não executadas. | Integração/habilitação deste recorte executadas em22/10/2026; referências anteriores a operação pendente são históricas. Não reabrir as provas aceites.","VirtualDesk, pedidos/casos, anexos, contexto dossier e acompanhamento; desk_payments/desk_documents/eventos cifrados e VerifiedDocumentBinary, mesma referência e declaração sem duplicação; VirtualDesk/assertOpen, autorização existente, closed_at, CRM/tasks e transição cancelled já existente","Decisão do proprietário de03/11 aplicada: o dono executa o fecho/reabertura integral; verificação do acesso efectivo e restante desenvolvimento preservados. Perfis próprios do Balcão; serviços/campos e decisões externas aplicáveis, sem inventar destinatário/prazo.","03/11/2026: estado de fecho e autoridade de acesso são eixos distintos; leituras autorizadas continuam. Cancelamento existente não concede poder de fecho/reabertura de dossiers. MFA/perfis e regras CRM de próxima acção preservados. 03/11/2026: completar documentação de declaração manual existente é correcção do percurso já disponível; não confirma dinheiro, não altera alçadas/valores ou activa integração externa. Revisão competente/histórico conservados. Nota anterior: Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.",Completar critérios restantes sem repetir provas válidas,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: balcão. Esforço de código adicional só após lacuna reproduzida.,"[CONCLUSAO-INTEGRAL-20261110] Instalação ff726e57: outputs/reviewed-install-20261110/verification.json; fontes aceites e recibos anteriores reutilizados. Saldo por percurso no início de visao-consolidada-modulos.md. 24/10/2026 FECHO ESTABILIZACAO: reconciliado com entregas 6b544548, d8224ba8, 55136b44, 8036b9b0, cf2ddf21 e 066707ec; recibos mantidos. Zero novas falhas tecnicas conhecidas nos recortes delimitados. PDF, complementos, contextos por oportunidade, ancoras e mapas nao estao pendentes de entrega. Causa dos mapas limitada ao filtro publico e gate legado; nao explica todas as perdas anteriores. Saldo e limites precisos no inicio de traceability-and-manual.md e preservation-inventory-20261023.json, sem nova matriz/backlog. Preservacao tecnica cabe a Codex/programadores; Tempo avalia utilidade/clareza/apresentacao. Ordem: estabilizacao, simulador fiscal delimitado, Imobiliario, Bens de consumo/franquias, Estatistica/paineis, IA. Historico abaixo nao reabre fechos aceites nem declara todos os criterios agregados concluidos. | Historico preservado: outputs/investmoz-audit-current-20261012/reused-evidence-integrity.json: 35 recibos anteriores com hashes correspondentes; o âmbito de cada recibo permanece limitado ao critério ensaiado. outputs/investmoz-audit-current-20261012/http-promoter.json; http-validator.json; http-publisher.json; http-manager.json.
+[UTILIZACAO-HOMOLOGACAO-20261019] 10: Disponibilidade condicionada conforme limite registado — Início e lista própria abrem; definição de 19 etapas instalada. Não repetidas as 19 etapas aceites. | 31: Disponibilidade condicionada conforme limite registado — Painel e serviço existente abrem; dez tabelas base instaladas, definição interna project-preparation v5 transportada. | 32: Implementado no recorte; falta processo real — Recuperação no clone aceite; vínculo positivo no destino depende de dossier legítimo autorizado. | 39: Disponibilidade condicionada conforme limite registado — Reutilização documental Inhambane/dossier permanece no incremento QA separado. | Recorte executável C concluído em QA. Restantes coberturas sectoriais/benefícios e encaminhamento visual de zona real têm limites concretos no manual; não bloqueiam os ramos já documentados. Integração/habilitação no destino não executadas. | Integração/habilitação deste recorte executadas em22/10/2026; referências anteriores a operação pendente são históricas. Não reabrir as provas aceites.","VirtualDesk, pedidos/casos, anexos, contexto dossier e acompanhamento; desk_payments/desk_documents/eventos cifrados e VerifiedDocumentBinary, mesma referência e declaração sem duplicação; VirtualDesk/assertOpen, autorização existente, closed_at, CRM/tasks e transição cancelled já existente","Decisão do proprietário de03/11 aplicada: o dono executa o fecho/reabertura integral; verificação do acesso efectivo e restante desenvolvimento preservados. Perfis próprios do Balcão; serviços/campos e decisões externas aplicáveis, sem inventar destinatário/prazo.","03/11/2026: estado de fecho e autoridade de acesso são eixos distintos; leituras autorizadas continuam. Cancelamento existente não concede poder de fecho/reabertura de dossiers. MFA/perfis e regras CRM de próxima acção preservados. 03/11/2026: completar documentação de declaração manual existente é correcção do percurso já disponível; não confirma dinheiro, não altera alçadas/valores ou activa integração externa. Revisão competente/histórico conservados. Nota anterior: Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.",Completar critérios restantes sem repetir provas válidas,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: balcão. Esforço de código adicional só após lacuna reproduzida.,"[APIEX-SWOT-20261110] outputs/investment-preparation-20261110/verification.json e artefactos sintéticos; seis casos API/211asserções,16frontend dirigidos, tipos/análise/lint. outputs/entrega-apiex-swot-20261110.zip, base7476dc34, sem migrations. Manual e saldo no início dos registos existentes. | Histórico anterior preservado: [CONCLUSAO-INTEGRAL-20261110] Instalação ff726e57: outputs/reviewed-install-20261110/verification.json; fontes aceites e recibos anteriores reutilizados. Saldo por percurso no início de visao-consolidada-modulos.md. 24/10/2026 FECHO ESTABILIZACAO: reconciliado com entregas 6b544548, d8224ba8, 55136b44, 8036b9b0, cf2ddf21 e 066707ec; recibos mantidos. Zero novas falhas tecnicas conhecidas nos recortes delimitados. PDF, complementos, contextos por oportunidade, ancoras e mapas nao estao pendentes de entrega. Causa dos mapas limitada ao filtro publico e gate legado; nao explica todas as perdas anteriores. Saldo e limites precisos no inicio de traceability-and-manual.md e preservation-inventory-20261023.json, sem nova matriz/backlog. Preservacao tecnica cabe a Codex/programadores; Tempo avalia utilidade/clareza/apresentacao. Ordem: estabilizacao, simulador fiscal delimitado, Imobiliario, Bens de consumo/franquias, Estatistica/paineis, IA. Historico abaixo nao reabre fechos aceites nem declara todos os criterios agregados concluidos. | Historico preservado: outputs/investmoz-audit-current-20261012/reused-evidence-integrity.json: 35 recibos anteriores com hashes correspondentes; o âmbito de cada recibo permanece limitado ao critério ensaiado. outputs/investmoz-audit-current-20261012/http-promoter.json; http-validator.json; http-publisher.json; http-manager.json.
[B QA 13/10/2026] OpçãoB fixada antes de executar. QA190000 já instalada, definição5fases/19etapas; flagQA estavaOFF, ativada isoladamente sem instalação. HTTP13contextos existentes com5/19; acesso a dossier privado alheio403. Casos/journeys/rascunhos anteriores preservados por hash. Provas agrupadas em proof-groups.json e execução-B-QA.md.
@@ -10832,11 +10832,11 @@ AUD-LEG-06,"Preservar contexto ao entrar/regressar ao percurso, URLs existentes
[Delta territorial e saldo Tempo 10/11/2026] Directiva de Implementação Segura v1.0 de 08/11/2026; correecoes ao portal.docx SHA db630ab937cc00686480aa02ef0156a8ac20edadf97306995277a5173d890f51; confronto em revisao-externa-2026-11-10.md.
-[Entrega conjunta e saldo separado 10/11/2026] Pedido expresso da Tempo de 10/11/2026: preparar entrega conjunta de contador/aliases, compatibilidade main e contexto, conservando S08 separada da revisão visual. Referência: entrega-conjunta-contador-aliases-2026-11-10.md.",biblioteca / conteúdo público / percurso do investidor,/explorar/agronegocio; /agronegocio; /documentos/6; /investimentos/a-partir-de/agronegocio; /investimentos/{id}/conteudos,"documents, biblioteca, importação autenticada, VerifiedDocumentBinary, jobs/derivadas. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Disponibilizado em 15/10/2026, setores-fintech-QA-d5b4dc354265 DOC01: 16 fontes e compilação; sete entradas setoriais e especialização Fintech no dossier; três artigos publicados (recursos reais 27/28/29), imagem 24 reutilizada por identidade/hash. Flags existentes preservadas; sem migrations/categorias novas. B e COUNTRY02 preservados. | 22/10/2026 — disponibilizado por autorização Tempo: revisão servida042ffbde (inclui a76369eb/a1fbda06/064296e1 e correcção dirigida da recuperação legada). Percurso habilitado na homologação, versão private-investment-preparation-2026-v1; main ancestral preservado, sem conflitos/force-push. Zero migrations/importações/fixtures; nenhuma nova regra fiscal publicada/activada. Revisão/configuração/rotas conferidas; provas funcionais QA reutilizadas.","QA aceite reutilizada; execução ativa com backup/restauro, scan real, publicação expressa e HTTP anónimo200. Sem repetir percurso. outputs/investmoz-legado-ativacao-20261015/RESULTADO-FINAL.json; FINAL-READONLY.json; ANONYMOUS-HTTP.json; RECIBO-INTEGRIDADE-FINAL.json; outputs/investmoz-legado-restantes-setores-preparacao-20261015/INVENTARIO-E-RECORTE.json | 22/10/2026: primeiro incremento QA na branch codex/project-context-continuity-QA; contexto único por dossier/conta, herança com edições preservadas, moeda/IVA mensal e análise territorial explícita. Ver traceability-and-manual.md, secção Continuidade e adaptação contextual. 4 HTTP/74 asserções; 8 frontend; percurso visual A/B e nova sessão. Não encerra adaptação jurídica integral. | 22/10/2026 — percurso privado executável em QA (base52fbb146): condições oficiais seleccionam mero registo/autorização, alternativas documentais e próximos passos; contexto C v4 mero registo após distinção directo/indirecto (Lei14/R13); prévia visual, vínculo inactivo preservado e relatório v3 por autorização conservado como histórico. 3 testes/96 asserções e um teste do novo relatório, tipos/build aprovados. Sem validação jurídica genérica adicional; orientação permanente Tempo em AGENTS. Branch codex/private-investment-path-executable-QA; sem integração main/alteração da homologação/activação fiscal.",Implementado parcialmente — entradas setoriais e três artigos ativos,Continuidade de preparacao/dossier por oportunidade e ancora entregue 8036b9b0/cf2ddf21; mapas 066707ec. Os dois originais incompletos e correspondencias documentais nao identificadas conservam o limite proprio do acervo; nao sao falha criada pela regressao dos mapas.,Scanner/worker/GD/WebP e originais privados; ACL por oportunidade/sala diferente de partilha individual não implementada. LegadoOFF. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,URL antigo recupera a mesma fonte; login/retorno preservam a escolha; nova sessão recupera; nenhuma mistura entre projetos nem conversão de roteiro legado.,P1,"Legado post171985 modificado2026-04-20; categoria Oportunidades preservada como metadado, entidade guia. Metadados/sitemapInfopublica e área de investimento distintos; não remapear por nome.",USR-LEG-20261010-06,1,"[{""id"":""USR-LEG-20261010-06"",""pedido"":""Preservar contexto ao entrar/regressar ao percurso, URLs existentes e correspondências de migração"",""fontes"":[""Pedido direto10/10/2026 §6""],""aceitacao"":""URL antigo recupera a mesma fonte; login/retorno preservam a escolha; nova sessão recupera; nenhuma mistura entre projetos nem conversão de roteiro legado."",""estado"":""parcial"",""variantes"":""IntegraçãoprogressivaQA, sem substituição de pendências anteriores"",""modulo"":""legado/biblioteca/percurso"",""confirmacao_manual"":{""recebida_em"":""2026-10-10"",""fonte"":""Mensagem do responsável nesta conversa"",""conta"":""não indicada"",""perfil"":""não indicado"",""dispositivo"":""não indicado"",""criterios"":[{""criterio"":""criar_ou_escolher_dossier"",""estado"":""confirmado manualmente"",""ambito"":""piloto agronegócio QA""},{""criterio"":""guardar_referencia"",""estado"":""confirmado manualmente"",""ambito"":""piloto agronegócio QA""},{""criterio"":""nova_sessao"",""estado"":""confirmado manualmente"",""ambito"":""piloto agronegócio QA""},{""criterio"":""recuperar_dossier"",""estado"":""confirmado manualmente"",""ambito"":""piloto agronegócio QA""},{""criterio"":""abrir_artigo"",""estado"":""confirmado manualmente"",""ambito"":""piloto agronegócio QA""}],""exclusoes"":[""móvel"",""acessibilidade"",""outros perfis"",""C37 conta18"",""cenários A/B"",""cobertura integral""]},""incremento_setores_qa_20261010"":{""atualizado_em"":""2026-10-10T16:23:25.695297+00:00"",""ambito"":""QA18097;base55441isolada"",""evidencia"":""22 originais importados privadamente após prévia renovada, hashes recuperados,22 scans ClamD reais e replay sem novos documentos/recursos/auditoria/scans. Divulgação autenticada separada:16 artigos com texto+5 imagens públicos; Mercado Financeiro privado, vazio confirmado na origem HTML e Inertia200. Chromium desktop:16 artigos, pesquisa/imagens, Energia e Mineração distintas, C72 título preservado; QA21 criou4 dossiers, retorno, logout/novaMFA/F5/replay; QA23 negado403 e anónimo sem contexto. Persistência READ ONLY:8 dossiers HTTP/Chromium, uma referência/evento cada,22 hashes únicos,0 relações geográficas automáticas. legacy-sectors-{apply,replay,http,browser,persistence}-qa.json; legacy-financial-origin-20261010/proof.json. C37/QA18,A/B,móvel/acessibilidade/cobertura integral não encerrados."",""estado_requisito_atual"":""parcial"",""exclusoes"":[""ativação"",""C37/QA18"",""A/B"",""móvel"",""acessibilidade"",""cobertura integral""]},""incremento_visual_qa_20261010"":{""atualizado_em"":""2026-10-10T17:57:54.604301+00:00"",""ambito"":""QA18097/55441 exclusivamente"",""evidencia"":""FalhasC77–C83 corrigidas emQA: landmarks, nomeARIA do mapa, hierarquia de títulos do texto legado sem alteraroriginal/hash, tabelas financeiras focáveis por teclado, reflow de tarefas/select/data no dossier, langpt-MZ apenas no routerQA e proteção da recuperação assíncrona do simulador. Após correções15execuções axe/390–320–1440px,0violações automáticas/0overflow e idiomaPT; skiplink primeiroTab→conteúdo em3páginas; tabelas financeiras focadas/teclas no Chromium. Não equivale a leitor de ecrã, zoom/dispositivo real ou cobertura de todo oportal. LegacyContentTest5/84 e rastreioMFA1/14 são provas específicas, não contagem substituta de percursos. visual-followup-chromium-20261010.json e screenshots; históricos de falhas mantidos."",""lacuna_atual"":""Cobertura integral, mais perfis/dispositivos, leitor de ecrã e editor administrativoC74 não demonstrados. Mercado Financeiro permanece privado/corpo vazio confirmado na origem; rotas404. Sem associação automática Turismo→cadastro territorial, sem fundir Energia/Mineração."",""estado_global_preservado"":""parcial"",""ativacao"":false}}]","[Interface legado QA 10 /10/2026 ] Render /cliques observados no Chromium QA, com recuperação noutra sessão /F5 e negação à conta 23. Não é o navegador pessoal do utilizador nem o ensaio C37 /QA18. | Evidência anterior preservada: React preparado e build QA; dados Inertia recuperados. Navegador indisponível; roteiro manual em legado-piloto-qa.md . Aceitação visual pendente. | [Confirmação manual recebida 10 /10/2026 ] Responsável confirmou leitura pública → autenticação → criar /escolher dossier → guardar referência → nova sessão → recuperar dossier e abrir artigo. Confirmação declarada, sem conta /perfil/dispositivo/data de execução identificados. Não comprova MFA específico, ensaios móveis, acessibilidade, outros perfis, deduplicação, C37 /QA18 ou A /B. Ver legado-piloto-qa.md , confirmação manual. | [Setores QA após C71 10 /10/2026 ] 22 originais importados privadamente após prévia renovada, hashes recuperados,22 scans ClamD reais e replay sem novos documentos /recursos/auditoria/scans. Divulgação autenticada separada:16 artigos com texto+5 imagens públicos; Mercado Financeiro privado, vazio confirmado na origem HTML e Inertia 200. Chromium desktop:16 artigos, pesquisa /imagens , Energia e Mineração distintas, C72 título preservado; QA21 criou 4 dossiers, retorno, logout /novaMFA/F5/replay ; QA23 negado 403 e anónimo sem contexto. Persistência READ ONLY:8 dossiers HTTP /Chromium , uma referência /evento cada,22 hashes únicos,0 relações geográficas automáticas. legacy-sectors-{apply,replay,http,browser,persistence} -qa.json ; legacy-financial-origin-20261010 /proof.json. C37 /QA18 ,A /B ,móvel /acessibilidade/cobertura integral não encerrados. | [Visual QA 10 /10/2026 ] Leitura pública /móvel dirigida, teclado e 4 consumidores do mapa demonstrados;15 execuções de acessibilidade sem violação automática. | [Visual QA 10/10/2026] Leitura pública/móvel dirigida, teclado e4consumidores do mapa demonstrados;15execuções de acessibilidade semviolação automática.","GET públicos e escritas autenticadas no servidor18097, alvo real55441 confirmado; publicação separada do importador. | [Setores QA após C71 10/10/2026] 22 originais importados privadamente após prévia renovada, hashes recuperados,22 scans ClamD reais e replay sem novos documentos/recursos/auditoria/scans. Divulgação autenticada separada:16 artigos com texto+5 imagens públicos; Mercado Financeiro privado, vazio confirmado na origem HTML e Inertia200. Chromium desktop:16 artigos, pesquisa/imagens, Energia e Mineração distintas, C72 título preservado; QA21 criou4 dossiers, retorno, logout/novaMFA/F5/replay; QA23 negado403 e anónimo sem contexto. Persistência READ ONLY:8 dossiers HTTP/Chromium, uma referência/evento cada,22 hashes únicos,0 relações geográficas automáticas. legacy-sectors-{apply,replay,http,browser,persistence}-qa.json; legacy-financial-origin-20261010/proof.json. C37/QA18,A/B,móvel/acessibilidade/cobertura integral não encerrados.","Dois recursos na biblioteca existente e referências no payload cifrado do dossier; sem nova tabela/cadastro paralelo. | [Confirmação manual recebida 10/10/2026] Responsável confirmou leitura pública → autenticação → criar/escolher dossier → guardar referência → nova sessão → recuperar dossier e abrir artigo. Confirmação declarada, sem conta/perfil/dispositivo/data de execução identificados. Não comprova MFA específico, ensaios móveis, acessibilidade, outros perfis, deduplicação, C37/QA18 ou A/B. Ver legado-piloto-qa.md, confirmação manual. | [Setores QA após C71 10/10/2026] 22 originais importados privadamente após prévia renovada, hashes recuperados,22 scans ClamD reais e replay sem novos documentos/recursos/auditoria/scans. Divulgação autenticada separada:16 artigos com texto+5 imagens públicos; Mercado Financeiro privado, vazio confirmado na origem HTML e Inertia200. Chromium desktop:16 artigos, pesquisa/imagens, Energia e Mineração distintas, C72 título preservado; QA21 criou4 dossiers, retorno, logout/novaMFA/F5/replay; QA23 negado403 e anónimo sem contexto. Persistência READ ONLY:8 dossiers HTTP/Chromium, uma referência/evento cada,22 hashes únicos,0 relações geográficas automáticas. legacy-sectors-{apply,replay,http,browser,persistence}-qa.json; legacy-financial-origin-20261010/proof.json. C37/QA18,A/B,móvel/acessibilidade/cobertura integral não encerrados.","[Interface legado QA 10/10/2026] Render/cliques observados no Chromium QA, com recuperação noutra sessão/F5 e negação à conta23. Não é o navegador pessoal do utilizador nem o ensaio C37/QA18. | Evidência anterior preservada: Logout/nova sessão FortifyMFA21: fonte/versão/hashes recuperados; outra conta negada e projeto independente sem referência. | [Confirmação manual recebida 10/10/2026] Responsável confirmou leitura pública → autenticação → criar/escolher dossier → guardar referência → nova sessão → recuperar dossier e abrir artigo. Confirmação declarada, sem conta/perfil/dispositivo/data de execução identificados. Não comprova MFA específico, ensaios móveis, acessibilidade, outros perfis, deduplicação, C37/QA18 ou A/B. Ver legado-piloto-qa.md, confirmação manual. | [Setores QA após C71 10/10/2026] 22 originais importados privadamente após prévia renovada, hashes recuperados,22 scans ClamD reais e replay sem novos documentos/recursos/auditoria/scans. Divulgação autenticada separada:16 artigos com texto+5 imagens públicos; Mercado Financeiro privado, vazio confirmado na origem HTML e Inertia200. Chromium desktop:16 artigos, pesquisa/imagens, Energia e Mineração distintas, C72 título preservado; QA21 criou4 dossiers, retorno, logout/novaMFA/F5/replay; QA23 negado403 e anónimo sem contexto. Persistência READ ONLY:8 dossiers HTTP/Chromium, uma referência/evento cada,22 hashes únicos,0 relações geográficas automáticas. legacy-sectors-{apply,replay,http,browser,persistence}-qa.json; legacy-financial-origin-20261010/proof.json. C37/QA18,A/B,móvel/acessibilidade/cobertura integral não encerrados.",Piloto ativo encerrado; restante legado pendente.,Piloto agronegócio: ativo e entrega encerrada. Integração integral do legado: pendente nos mesmos IDs.,parcial,Não disponibilizado; guarda QA/flagfalse. Nenhuma escrita ou divulgação ativa autorizada.,"24/10/2026 FECHO ESTABILIZACAO: reconciliado com entregas 6b544548, d8224ba8, 55136b44, 8036b9b0, cf2ddf21 e 066707ec; recibos mantidos. Zero novas falhas tecnicas conhecidas nos recortes delimitados. PDF, complementos, contextos por oportunidade, ancoras e mapas nao estao pendentes de entrega. Causa dos mapas limitada ao filtro publico e gate legado; nao explica todas as perdas anteriores. Saldo e limites precisos no inicio de traceability-and-manual.md e preservation-inventory-20261023.json, sem nova matriz/backlog. Preservacao tecnica cabe a Codex/programadores; Tempo avalia utilidade/clareza/apresentacao. Ordem: estabilizacao, simulador fiscal delimitado, Imobiliario, Bens de consumo/franquias, Estatistica/paineis, IA. Historico abaixo nao reabre fechos aceites nem declara todos os criterios agregados concluidos. | Historico preservado: 23/10/2026: anchor slice delivered in homologation cf2ddf21 after 3fd5128c; installed delta verified, 28 accepted territorial links restored in 13 projects, exact 29 approved fiches unchanged. Receipt docs/investmoz/unification/anchor-integration-receipt-20261023.json. Preserved cdf8fcfb/8036b9b0 and earlier closures; no accepted proofs repeated; statistics/AI deferred. | 23/10/2026: anchor integration executable in isolated QA; 4 tests/116 assertions + 2 frontend tests; 28 accepted territorial links recovered in QA, 29 real published fiches preserved. Receipt docs/investmoz/unification/anchor-integration-receipt-20261023.json. Homologation still 8036b9b0 until Git installation and exact 28-link recovery; no accepted proofs repeated; statistics/AI deferred. | 15/10/2026: entrega do piloto encerrada; dados/B/COUNTRY02/build preservados. Não equivale a integração integral do legado. | Lote setorial disponibilizado por autorização expressa da Tempo; integração integral continua pendente. | QA 15/10/2026: setores-fintech-QA-d5b4dc354265; sete entradas comerciais/contexto no dossier e três artigos preparados. B/COUNTRY02/aceitações preservados; sem disponibilização ativa. | Disponibilização expressamente autorizada pela Tempo: «Autorizo a disponibilizar». Executada com backup/restauro fresco verificado; apenas conferência operacional, sem repetir aceitação QA.
+[Entrega conjunta e saldo separado 10/11/2026] Pedido expresso da Tempo de 10/11/2026: preparar entrega conjunta de contador/aliases, compatibilidade main e contexto, conservando S08 separada da revisão visual. Referência: entrega-conjunta-contador-aliases-2026-11-10.md.",biblioteca / conteúdo público / percurso do investidor,/explorar/agronegocio; /agronegocio; /documentos/6; /investimentos/a-partir-de/agronegocio; /investimentos/{id}/conteudos,"documents, biblioteca, importação autenticada, VerifiedDocumentBinary, jobs/derivadas. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","[APIEX-SWOT-20261110] Homologação7476dc34 instalada; preparação APIEX e SWOT no dossier existente implementadas em QA, não instaladas. | Histórico anterior preservado: Disponibilizado em 15/10/2026, setores-fintech-QA-d5b4dc354265 DOC01: 16 fontes e compilação; sete entradas setoriais e especialização Fintech no dossier; três artigos publicados (recursos reais 27/28/29), imagem 24 reutilizada por identidade/hash. Flags existentes preservadas; sem migrations/categorias novas. B e COUNTRY02 preservados. | 22/10/2026 — disponibilizado por autorização Tempo: revisão servida042ffbde (inclui a76369eb/a1fbda06/064296e1 e correcção dirigida da recuperação legada). Percurso habilitado na homologação, versão private-investment-preparation-2026-v1; main ancestral preservado, sem conflitos/force-push. Zero migrations/importações/fixtures; nenhuma nova regra fiscal publicada/activada. Revisão/configuração/rotas conferidas; provas funcionais QA reutilizadas.","QA aceite reutilizada; execução ativa com backup/restauro, scan real, publicação expressa e HTTP anónimo200. Sem repetir percurso. outputs/investmoz-legado-ativacao-20261015/RESULTADO-FINAL.json; FINAL-READONLY.json; ANONYMOUS-HTTP.json; RECIBO-INTEGRIDADE-FINAL.json; outputs/investmoz-legado-restantes-setores-preparacao-20261015/INVENTARIO-E-RECORTE.json | 22/10/2026: primeiro incremento QA na branch codex/project-context-continuity-QA; contexto único por dossier/conta, herança com edições preservadas, moeda/IVA mensal e análise territorial explícita. Ver traceability-and-manual.md, secção Continuidade e adaptação contextual. 4 HTTP/74 asserções; 8 frontend; percurso visual A/B e nova sessão. Não encerra adaptação jurídica integral. | 22/10/2026 — percurso privado executável em QA (base52fbb146): condições oficiais seleccionam mero registo/autorização, alternativas documentais e próximos passos; contexto C v4 mero registo após distinção directo/indirecto (Lei14/R13); prévia visual, vínculo inactivo preservado e relatório v3 por autorização conservado como histórico. 3 testes/96 asserções e um teste do novo relatório, tipos/build aprovados. Sem validação jurídica genérica adicional; orientação permanente Tempo em AGENTS. Branch codex/private-investment-path-executable-QA; sem integração main/alteração da homologação/activação fiscal.",Implementado parcialmente — entradas setoriais e três artigos ativos,Continuidade de preparacao/dossier por oportunidade e ancora entregue 8036b9b0/cf2ddf21; mapas 066707ec. Os dois originais incompletos e correspondencias documentais nao identificadas conservam o limite proprio do acervo; nao sao falha criada pela regressao dos mapas.,Scanner/worker/GD/WebP e originais privados; ACL por oportunidade/sala diferente de partilha individual não implementada. LegadoOFF. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,URL antigo recupera a mesma fonte; login/retorno preservam a escolha; nova sessão recupera; nenhuma mistura entre projetos nem conversão de roteiro legado.,P1,"Legado post171985 modificado2026-04-20; categoria Oportunidades preservada como metadado, entidade guia. Metadados/sitemapInfopublica e área de investimento distintos; não remapear por nome.",USR-LEG-20261010-06,1,"[{""id"":""USR-LEG-20261010-06"",""pedido"":""Preservar contexto ao entrar/regressar ao percurso, URLs existentes e correspondências de migração"",""fontes"":[""Pedido direto10/10/2026 §6""],""aceitacao"":""URL antigo recupera a mesma fonte; login/retorno preservam a escolha; nova sessão recupera; nenhuma mistura entre projetos nem conversão de roteiro legado."",""estado"":""parcial"",""variantes"":""IntegraçãoprogressivaQA, sem substituição de pendências anteriores"",""modulo"":""legado/biblioteca/percurso"",""confirmacao_manual"":{""recebida_em"":""2026-10-10"",""fonte"":""Mensagem do responsável nesta conversa"",""conta"":""não indicada"",""perfil"":""não indicado"",""dispositivo"":""não indicado"",""criterios"":[{""criterio"":""criar_ou_escolher_dossier"",""estado"":""confirmado manualmente"",""ambito"":""piloto agronegócio QA""},{""criterio"":""guardar_referencia"",""estado"":""confirmado manualmente"",""ambito"":""piloto agronegócio QA""},{""criterio"":""nova_sessao"",""estado"":""confirmado manualmente"",""ambito"":""piloto agronegócio QA""},{""criterio"":""recuperar_dossier"",""estado"":""confirmado manualmente"",""ambito"":""piloto agronegócio QA""},{""criterio"":""abrir_artigo"",""estado"":""confirmado manualmente"",""ambito"":""piloto agronegócio QA""}],""exclusoes"":[""móvel"",""acessibilidade"",""outros perfis"",""C37 conta18"",""cenários A/B"",""cobertura integral""]},""incremento_setores_qa_20261010"":{""atualizado_em"":""2026-10-10T16:23:25.695297+00:00"",""ambito"":""QA18097;base55441isolada"",""evidencia"":""22 originais importados privadamente após prévia renovada, hashes recuperados,22 scans ClamD reais e replay sem novos documentos/recursos/auditoria/scans. Divulgação autenticada separada:16 artigos com texto+5 imagens públicos; Mercado Financeiro privado, vazio confirmado na origem HTML e Inertia200. Chromium desktop:16 artigos, pesquisa/imagens, Energia e Mineração distintas, C72 título preservado; QA21 criou4 dossiers, retorno, logout/novaMFA/F5/replay; QA23 negado403 e anónimo sem contexto. Persistência READ ONLY:8 dossiers HTTP/Chromium, uma referência/evento cada,22 hashes únicos,0 relações geográficas automáticas. legacy-sectors-{apply,replay,http,browser,persistence}-qa.json; legacy-financial-origin-20261010/proof.json. C37/QA18,A/B,móvel/acessibilidade/cobertura integral não encerrados."",""estado_requisito_atual"":""parcial"",""exclusoes"":[""ativação"",""C37/QA18"",""A/B"",""móvel"",""acessibilidade"",""cobertura integral""]},""incremento_visual_qa_20261010"":{""atualizado_em"":""2026-10-10T17:57:54.604301+00:00"",""ambito"":""QA18097/55441 exclusivamente"",""evidencia"":""FalhasC77–C83 corrigidas emQA: landmarks, nomeARIA do mapa, hierarquia de títulos do texto legado sem alteraroriginal/hash, tabelas financeiras focáveis por teclado, reflow de tarefas/select/data no dossier, langpt-MZ apenas no routerQA e proteção da recuperação assíncrona do simulador. Após correções15execuções axe/390–320–1440px,0violações automáticas/0overflow e idiomaPT; skiplink primeiroTab→conteúdo em3páginas; tabelas financeiras focadas/teclas no Chromium. Não equivale a leitor de ecrã, zoom/dispositivo real ou cobertura de todo oportal. LegacyContentTest5/84 e rastreioMFA1/14 são provas específicas, não contagem substituta de percursos. visual-followup-chromium-20261010.json e screenshots; históricos de falhas mantidos."",""lacuna_atual"":""Cobertura integral, mais perfis/dispositivos, leitor de ecrã e editor administrativoC74 não demonstrados. Mercado Financeiro permanece privado/corpo vazio confirmado na origem; rotas404. Sem associação automática Turismo→cadastro territorial, sem fundir Energia/Mineração."",""estado_global_preservado"":""parcial"",""ativacao"":false}}]","[Interface legado QA 10 /10/2026 ] Render /cliques observados no Chromium QA, com recuperação noutra sessão /F5 e negação à conta 23. Não é o navegador pessoal do utilizador nem o ensaio C37 /QA18. | Evidência anterior preservada: React preparado e build QA; dados Inertia recuperados. Navegador indisponível; roteiro manual em legado-piloto-qa.md . Aceitação visual pendente. | [Confirmação manual recebida 10 /10/2026 ] Responsável confirmou leitura pública → autenticação → criar /escolher dossier → guardar referência → nova sessão → recuperar dossier e abrir artigo. Confirmação declarada, sem conta /perfil/dispositivo/data de execução identificados. Não comprova MFA específico, ensaios móveis, acessibilidade, outros perfis, deduplicação, C37 /QA18 ou A /B. Ver legado-piloto-qa.md , confirmação manual. | [Setores QA após C71 10 /10/2026 ] 22 originais importados privadamente após prévia renovada, hashes recuperados,22 scans ClamD reais e replay sem novos documentos /recursos/auditoria/scans. Divulgação autenticada separada:16 artigos com texto+5 imagens públicos; Mercado Financeiro privado, vazio confirmado na origem HTML e Inertia 200. Chromium desktop:16 artigos, pesquisa /imagens , Energia e Mineração distintas, C72 título preservado; QA21 criou 4 dossiers, retorno, logout /novaMFA/F5/replay ; QA23 negado 403 e anónimo sem contexto. Persistência READ ONLY:8 dossiers HTTP /Chromium , uma referência /evento cada,22 hashes únicos,0 relações geográficas automáticas. legacy-sectors-{apply,replay,http,browser,persistence} -qa.json ; legacy-financial-origin-20261010 /proof.json. C37 /QA18 ,A /B ,móvel /acessibilidade/cobertura integral não encerrados. | [Visual QA 10 /10/2026 ] Leitura pública /móvel dirigida, teclado e 4 consumidores do mapa demonstrados;15 execuções de acessibilidade sem violação automática. | [Visual QA 10/10/2026] Leitura pública/móvel dirigida, teclado e4consumidores do mapa demonstrados;15execuções de acessibilidade semviolação automática.","GET públicos e escritas autenticadas no servidor18097, alvo real55441 confirmado; publicação separada do importador. | [Setores QA após C71 10/10/2026] 22 originais importados privadamente após prévia renovada, hashes recuperados,22 scans ClamD reais e replay sem novos documentos/recursos/auditoria/scans. Divulgação autenticada separada:16 artigos com texto+5 imagens públicos; Mercado Financeiro privado, vazio confirmado na origem HTML e Inertia200. Chromium desktop:16 artigos, pesquisa/imagens, Energia e Mineração distintas, C72 título preservado; QA21 criou4 dossiers, retorno, logout/novaMFA/F5/replay; QA23 negado403 e anónimo sem contexto. Persistência READ ONLY:8 dossiers HTTP/Chromium, uma referência/evento cada,22 hashes únicos,0 relações geográficas automáticas. legacy-sectors-{apply,replay,http,browser,persistence}-qa.json; legacy-financial-origin-20261010/proof.json. C37/QA18,A/B,móvel/acessibilidade/cobertura integral não encerrados.","Dois recursos na biblioteca existente e referências no payload cifrado do dossier; sem nova tabela/cadastro paralelo. | [Confirmação manual recebida 10/10/2026] Responsável confirmou leitura pública → autenticação → criar/escolher dossier → guardar referência → nova sessão → recuperar dossier e abrir artigo. Confirmação declarada, sem conta/perfil/dispositivo/data de execução identificados. Não comprova MFA específico, ensaios móveis, acessibilidade, outros perfis, deduplicação, C37/QA18 ou A/B. Ver legado-piloto-qa.md, confirmação manual. | [Setores QA após C71 10/10/2026] 22 originais importados privadamente após prévia renovada, hashes recuperados,22 scans ClamD reais e replay sem novos documentos/recursos/auditoria/scans. Divulgação autenticada separada:16 artigos com texto+5 imagens públicos; Mercado Financeiro privado, vazio confirmado na origem HTML e Inertia200. Chromium desktop:16 artigos, pesquisa/imagens, Energia e Mineração distintas, C72 título preservado; QA21 criou4 dossiers, retorno, logout/novaMFA/F5/replay; QA23 negado403 e anónimo sem contexto. Persistência READ ONLY:8 dossiers HTTP/Chromium, uma referência/evento cada,22 hashes únicos,0 relações geográficas automáticas. legacy-sectors-{apply,replay,http,browser,persistence}-qa.json; legacy-financial-origin-20261010/proof.json. C37/QA18,A/B,móvel/acessibilidade/cobertura integral não encerrados.","[Interface legado QA 10/10/2026] Render/cliques observados no Chromium QA, com recuperação noutra sessão/F5 e negação à conta23. Não é o navegador pessoal do utilizador nem o ensaio C37/QA18. | Evidência anterior preservada: Logout/nova sessão FortifyMFA21: fonte/versão/hashes recuperados; outra conta negada e projeto independente sem referência. | [Confirmação manual recebida 10/10/2026] Responsável confirmou leitura pública → autenticação → criar/escolher dossier → guardar referência → nova sessão → recuperar dossier e abrir artigo. Confirmação declarada, sem conta/perfil/dispositivo/data de execução identificados. Não comprova MFA específico, ensaios móveis, acessibilidade, outros perfis, deduplicação, C37/QA18 ou A/B. Ver legado-piloto-qa.md, confirmação manual. | [Setores QA após C71 10/10/2026] 22 originais importados privadamente após prévia renovada, hashes recuperados,22 scans ClamD reais e replay sem novos documentos/recursos/auditoria/scans. Divulgação autenticada separada:16 artigos com texto+5 imagens públicos; Mercado Financeiro privado, vazio confirmado na origem HTML e Inertia200. Chromium desktop:16 artigos, pesquisa/imagens, Energia e Mineração distintas, C72 título preservado; QA21 criou4 dossiers, retorno, logout/novaMFA/F5/replay; QA23 negado403 e anónimo sem contexto. Persistência READ ONLY:8 dossiers HTTP/Chromium, uma referência/evento cada,22 hashes únicos,0 relações geográficas automáticas. legacy-sectors-{apply,replay,http,browser,persistence}-qa.json; legacy-financial-origin-20261010/proof.json. C37/QA18,A/B,móvel/acessibilidade/cobertura integral não encerrados.",Piloto ativo encerrado; restante legado pendente.,Piloto agronegócio: ativo e entrega encerrada. Integração integral do legado: pendente nos mesmos IDs.,parcial,Não disponibilizado; guarda QA/flagfalse. Nenhuma escrita ou divulgação ativa autorizada.,"24/10/2026 FECHO ESTABILIZACAO: reconciliado com entregas 6b544548, d8224ba8, 55136b44, 8036b9b0, cf2ddf21 e 066707ec; recibos mantidos. Zero novas falhas tecnicas conhecidas nos recortes delimitados. PDF, complementos, contextos por oportunidade, ancoras e mapas nao estao pendentes de entrega. Causa dos mapas limitada ao filtro publico e gate legado; nao explica todas as perdas anteriores. Saldo e limites precisos no inicio de traceability-and-manual.md e preservation-inventory-20261023.json, sem nova matriz/backlog. Preservacao tecnica cabe a Codex/programadores; Tempo avalia utilidade/clareza/apresentacao. Ordem: estabilizacao, simulador fiscal delimitado, Imobiliario, Bens de consumo/franquias, Estatistica/paineis, IA. Historico abaixo nao reabre fechos aceites nem declara todos os criterios agregados concluidos. | Historico preservado: 23/10/2026: anchor slice delivered in homologation cf2ddf21 after 3fd5128c; installed delta verified, 28 accepted territorial links restored in 13 projects, exact 29 approved fiches unchanged. Receipt docs/investmoz/unification/anchor-integration-receipt-20261023.json. Preserved cdf8fcfb/8036b9b0 and earlier closures; no accepted proofs repeated; statistics/AI deferred. | 23/10/2026: anchor integration executable in isolated QA; 4 tests/116 assertions + 2 frontend tests; 28 accepted territorial links recovered in QA, 29 real published fiches preserved. Receipt docs/investmoz/unification/anchor-integration-receipt-20261023.json. Homologation still 8036b9b0 until Git installation and exact 28-link recovery; no accepted proofs repeated; statistics/AI deferred. | 15/10/2026: entrega do piloto encerrada; dados/B/COUNTRY02/build preservados. Não equivale a integração integral do legado. | Lote setorial disponibilizado por autorização expressa da Tempo; integração integral continua pendente. | QA 15/10/2026: setores-fintech-QA-d5b4dc354265; sete entradas comerciais/contexto no dossier e três artigos preparados. B/COUNTRY02/aceitações preservados; sem disponibilização ativa. | Disponibilização expressamente autorizada pela Tempo: «Autorizo a disponibilizar». Executada com backup/restauro fresco verificado; apenas conferência operacional, sem repetir aceitação QA.
-[RECONCILIACAO-43-20261019] 5: Sem saldo de código no recorte visual aceite. | 8: Outras identidades do legado exigem lotes e eventual adaptação por tipo. Não há autorização genérica para publicar todo o acervo. | 22/10/2026: primeiro incremento QA na branch codex/project-context-continuity-QA; contexto único por dossier/conta, herança com edições preservadas, moeda/IVA mensal e análise territorial explícita. Ver traceability-and-manual.md, secção Continuidade e adaptação contextual. 4 HTTP/74 asserções; 8 frontend; percurso visual A/B e nova sessão. Não encerra adaptação jurídica integral. | 22/10/2026 — percurso privado executável em QA (base52fbb146): condições oficiais seleccionam mero registo/autorização, alternativas documentais e próximos passos; contexto C v4 mero registo após distinção directo/indirecto (Lei14/R13); prévia visual, vínculo inactivo preservado e relatório v3 por autorização conservado como histórico. 3 testes/96 asserções e um teste do novo relatório, tipos/build aprovados. Sem validação jurídica genérica adicional; orientação permanente Tempo em AGENTS. Branch codex/private-investment-path-executable-QA; sem integração main/alteração da homologação/activação fiscal.","24/10/2026 FECHO ESTABILIZACAO: reconciliado com entregas 6b544548, d8224ba8, 55136b44, 8036b9b0, cf2ddf21 e 066707ec; recibos mantidos. Zero novas falhas tecnicas conhecidas nos recortes delimitados. PDF, complementos, contextos por oportunidade, ancoras e mapas nao estao pendentes de entrega. Causa dos mapas limitada ao filtro publico e gate legado; nao explica todas as perdas anteriores. Saldo e limites precisos no inicio de traceability-and-manual.md e preservation-inventory-20261023.json, sem nova matriz/backlog. Preservacao tecnica cabe a Codex/programadores; Tempo avalia utilidade/clareza/apresentacao. Ordem: estabilizacao, simulador fiscal delimitado, Imobiliario, Bens de consumo/franquias, Estatistica/paineis, IA. Historico abaixo nao reabre fechos aceites nem declara todos os criterios agregados concluidos. | Historico preservado: [CURRENT ANCHOR SLICE 23/10/2026] Delivered in homologation cf2ddf21; 28 accepted territorial relations recovered, 29 approved fiches preserved; sector/location search and continuity to manifestation, dossier and simulator covered. No identified code/recovery/delivery pending in this slice. Next: Tempo navigation/presentation review. Statistics and AI deferred. Receipt: docs/investmoz/unification/anchor-integration-receipt-20261023.json. This supersedes earlier anchor-analysis/QA/delivery pending statements only; unrelated scopes and historical evidence below remain preserved. | Inventário reconciliado: 20 artigos e cinco imagens publicados; 28 artigos com corpo por integrar (2 setoriais, 8 trabalho doméstico, 18 históricos/noticiosos); Mercado Financeiro vazio e post 74364 sem título separados. Onze variantes de URL e 43 capturas adicionais de artigos já cobertas, sem novas identidades. Demais referências, anexos técnicos e sitemap misto conservam recorte próprio. | Entrega operacional deste delta concluída. Mercado Financeiro geral vazio e restante acervo mantêm os seus estados. Licenças, requisitos e documentos específicos Fintech por atividade permanecem por determinar; não bloqueiam a preparação independente nem se consideram concluídos. | Recorte QA demonstrado, sem encerrar critérios globais. Histórico económico combinado conservado, fora de novas escolhas; oportunidade6 não inferida como Fintech. Sem fusões por nome. Recuperação existente conferida por leitura e hashes; outra sessão/dispositivo e percursos aceites não reensaiados. Conferência dos anexos pelo utilizador pendente. | Recorte aprovado disponibilizado; requisitos globais permanecem abertos. Atividade historica combinada e oportunidade6 sem reclassificacao. Conferencia dos anexos finais pelo utilizador pendente. Sem repetir testes aceites, formularios ou L1.
+[RECONCILIACAO-43-20261019] 5: Sem saldo de código no recorte visual aceite. | 8: Outras identidades do legado exigem lotes e eventual adaptação por tipo. Não há autorização genérica para publicar todo o acervo. | 22/10/2026: primeiro incremento QA na branch codex/project-context-continuity-QA; contexto único por dossier/conta, herança com edições preservadas, moeda/IVA mensal e análise territorial explícita. Ver traceability-and-manual.md, secção Continuidade e adaptação contextual. 4 HTTP/74 asserções; 8 frontend; percurso visual A/B e nova sessão. Não encerra adaptação jurídica integral. | 22/10/2026 — percurso privado executável em QA (base52fbb146): condições oficiais seleccionam mero registo/autorização, alternativas documentais e próximos passos; contexto C v4 mero registo após distinção directo/indirecto (Lei14/R13); prévia visual, vínculo inactivo preservado e relatório v3 por autorização conservado como histórico. 3 testes/96 asserções e um teste do novo relatório, tipos/build aprovados. Sem validação jurídica genérica adicional; orientação permanente Tempo em AGENTS. Branch codex/private-investment-path-executable-QA; sem integração main/alteração da homologação/activação fiscal.","[APIEX-SWOT-20261110] Preparação documental APIEX: requisitos/documentos/revisão/índice+anexos/registo externo e recuperação demonstrados. SWOT privada: quatro dimensões, fontes/data/classificação/revisão/histórico/acção nativa no mesmo dossier demonstrados. Restam instalação deste delta e visual; períodos/regimes não mapeados continuam indeterminados. Recepção electrónica APIEX não é requisito actual nem bloqueio. Restantes critérios originais mantidos. | Histórico anterior preservado: 24/10/2026 FECHO ESTABILIZACAO: reconciliado com entregas 6b544548, d8224ba8, 55136b44, 8036b9b0, cf2ddf21 e 066707ec; recibos mantidos. Zero novas falhas tecnicas conhecidas nos recortes delimitados. PDF, complementos, contextos por oportunidade, ancoras e mapas nao estao pendentes de entrega. Causa dos mapas limitada ao filtro publico e gate legado; nao explica todas as perdas anteriores. Saldo e limites precisos no inicio de traceability-and-manual.md e preservation-inventory-20261023.json, sem nova matriz/backlog. Preservacao tecnica cabe a Codex/programadores; Tempo avalia utilidade/clareza/apresentacao. Ordem: estabilizacao, simulador fiscal delimitado, Imobiliario, Bens de consumo/franquias, Estatistica/paineis, IA. Historico abaixo nao reabre fechos aceites nem declara todos os criterios agregados concluidos. | Historico preservado: [CURRENT ANCHOR SLICE 23/10/2026] Delivered in homologation cf2ddf21; 28 accepted territorial relations recovered, 29 approved fiches preserved; sector/location search and continuity to manifestation, dossier and simulator covered. No identified code/recovery/delivery pending in this slice. Next: Tempo navigation/presentation review. Statistics and AI deferred. Receipt: docs/investmoz/unification/anchor-integration-receipt-20261023.json. This supersedes earlier anchor-analysis/QA/delivery pending statements only; unrelated scopes and historical evidence below remain preserved. | Inventário reconciliado: 20 artigos e cinco imagens publicados; 28 artigos com corpo por integrar (2 setoriais, 8 trabalho doméstico, 18 históricos/noticiosos); Mercado Financeiro vazio e post 74364 sem título separados. Onze variantes de URL e 43 capturas adicionais de artigos já cobertas, sem novas identidades. Demais referências, anexos técnicos e sitemap misto conservam recorte próprio. | Entrega operacional deste delta concluída. Mercado Financeiro geral vazio e restante acervo mantêm os seus estados. Licenças, requisitos e documentos específicos Fintech por atividade permanecem por determinar; não bloqueiam a preparação independente nem se consideram concluídos. | Recorte QA demonstrado, sem encerrar critérios globais. Histórico económico combinado conservado, fora de novas escolhas; oportunidade6 não inferida como Fintech. Sem fusões por nome. Recuperação existente conferida por leitura e hashes; outra sessão/dispositivo e percursos aceites não reensaiados. Conferência dos anexos pelo utilizador pendente. | Recorte aprovado disponibilizado; requisitos globais permanecem abertos. Atividade historica combinada e oportunidade6 sem reclassificacao. Conferencia dos anexos finais pelo utilizador pendente. Sem repetir testes aceites, formularios ou L1.
-[UTILIZACAO-HOMOLOGACAO-20261019] 5: Disponibilidade condicionada conforme limite registado — Ecrã aberto: dez sectores principais, especialização Fintech sem cartão principal duplicado; 12 registos conservados. | 8: Disponibilidade condicionada conforme limite registado — Adaptador habilitado; artigos/imagens transportados privadamente, sem os publicar. | Recorte executável C concluído em QA. Restantes coberturas sectoriais/benefícios e encaminhamento visual de zona real têm limites concretos no manual; não bloqueiam os ramos já documentados. Integração/habilitação no destino não executadas. | Integração/habilitação deste recorte executadas em22/10/2026; referências anteriores a operação pendente são históricas. Não reabrir as provas aceites. Delta de complementos preparado/verificado em QA; conferência visual e instalação no destino ainda não realizadas. Relações sem oferta identificada permanecem necessidades, sem presumir inexistência no acervo. Cobertura transversal e restantes pendências desta linha mantêm-se. Actualização visual 23/10/2026: supera apenas a pendência visual dos complementos no recorte documentado. Não demonstra contextos específicos de várias oportunidades em zonas/parques, Terra/DUAT, Balcão ou manifestação. Sem disponibilização no destino nem fecho global. | [Saldo corrente 23/10/2026] São três lacunas de integração constatadas por leitura e quatro verificações delimitadas, não sete falhas de execução. Os itens 1–3 determinam a correcção executável seguinte; 4–6 podem ser conferidos independentemente em QA isolado; 7 depende apenas do âmbito corrigido. A contagem refere-se a estes sete recortes, não a cada formato ou campo. Uma verificação que passe encerra o item; uma que falhe regista o defeito concreto na mesma linha da matriz. Não criar outra matriz/backlog nem converter ausência de prova em regressão. Fechos preservados: 6b544548/4098192a; d8224ba8/af926180; 55136b44/b6a626c9. Notas historicas de falta de entrega destes recortes estao superadas. Ver sete recortes no inicio do manual existente. | [QA conjunta 23/10/2026] Itens 1-3 corrigidos: escolha de oportunidade no simulador, aplicabilidade/estados por oportunidade, atalho Terra pelo pedido associado. Provas dirigidas novas nos itens 4-6: retirada da primeira, contactos autorizados, entradas ideia/sector/territorio e login. Word/ZIP gerados; composicao de impressao conferida. Resta PDF nativo efectivamente guardado/paginacao e recorte ancora por analisar. Sem entrega na homologacao desta candidata. Ver estado corrente no inicio do manual; sete itens historicos abaixo nao sao o saldo corrente. Fechos 6b544548, d8224ba8, 55136b44 preservados. Estatisticas e IA adiadas. | [PDF nativo 23/10/2026] Falhas observadas na saida real: not_started e detalhe dos requisitos ausente. Correcao 2856240c sobre candidata 1afdfee8: estados humanos e requisitos apenas da oportunidade aplicavel. Teste novo native-pdf-scope passou; tipos/build passaram; sem repetir Word/ZIP. Saida real revista13, oportunidade309/Manica, valores QA123456/45678/diferenca77778MZN, pronta para gravacao manual. PDF guardado/paginacao pendentes por falta de controlo do dialogo nativo. Integracao/disponibilizacao ja autorizada pela Tempo apos conferencia, ainda nao executada; origin/main55136b44. Estatisticas e IA adiadas. [Analise corrente 23/10/2026] Recorte ancora analisado: duas lacunas de implementacao (filtro sectorial combinado com localizacao e ideia directa a partir de ancora sem oferta); uma reconciliacao de dados/ambiente e uma prova dirigida de interesse/login. Quinze fichas documentais QA mantem texto de sector/localizacao/regiao, sem correspondencias territoriais canonicas nem oferta publica directa nesse clone; ficha SYNTHETIC QA separada. Nao inferir perda na homologacao. Preservar recibo de 29 fichas e continuidade via oportunidade ja aceite. Ver inicio do manual para escopo, fontes e criterios; nenhuma implementacao de ancoras nesta passagem. | [PDF nativo guardado conferido 23/10/2026] Original encontrado na pasta indicada com titulo automatico Relatorio SYNTHETIC QA, extensao .pdf, maquina ONALA/macbook/Console. SHA256010eb4ea12015563c1b2f8bc255b1078c276f824c50690732541d5bffe34b8a6. Dez paginas renderizadas e conferidas: oportunidade309/Manica, cinco requisitos especificos, valores123456/45678/diferenca77778MZN; paginacao e legibilidade aprovadas. Sem regenerar PDF ou repetir Word/ZIP/provas aceites. Condicao satisfeita para1afdfee8+2856240c; disponibilizacao Git autorizada em execucao, ainda a confirmar instalada. Ver inicio do manual e native-pdf-and-anchor-review-20261023.json. Pendencias historicas de ficheiro em falta superadas; saldo de ancoras6985f82e preservado; Estatisticas/IA adiadas. | [Entrega confirmada 23/10/2026] 1afdfee8+2856240c entregues na homologacao8036b9b0. PDF original encontrado pelo titulo automatico na mesma pasta/maquina/sessao: dez paginas e ambito/requisitos/valores/paginacao conferidos, SHA256010eb4ea12015563c1b2f8bc255b1078c276f824c50690732541d5bffe34b8a6, sem regeneracao. Fast-forward55136b44->8036b9b0, instalador installed16:46:13UTC, zero migrations/importacoes. Revisao publica e15hashes funcionais coincidem; delta autenticado na ficha53/dossier958df138 verificado, versao5 preservada, zero novos pedidos/gravacoes/submissoes. Sem repetir provas aceites. Ver treatment-scope-installation-receipt-20261023.json e inicio do manual. Pendencias historicas de PDF/instalacao superadas neste recorte. Complementos e fechos anteriores preservados. Saldo ancora6985f82e mantido; Estatisticas/IA adiadas; sem fecho global.","documents, biblioteca, importação autenticada, VerifiedDocumentBinary, jobs/derivadas","Dependências operacionais desta entrega resolvidas: hashes, backup/restauro fresco, conta autenticada, scans e publicações. Dependências regulatórias específicas e editoriais restantes preservadas no critério atual. | Origem: pedido expresso da Tempo de18/10. IDs, especialização por leitura e ponte histórica são escolhas técnicas; sem nova regra organizacional. Ativo inalterado; disponibilização separada. Sem migration/instalação140000/150000; reversão retém somente a rota nova Fintech além dos dados/histórico e associação2→8. Estados e critérios anteriores preservados. | Origem: autorizacao expressa Tempo18/10/2026. Backup/restauro e execucao autenticada concluidos; 140000/150000 presentes uma vez, sem migrations. Reversao parcial preserva dados/auditoria/esquemas e rota compativel Fintech. Matriz/manual/backlog atuais preservados. Ficha integral dos parques separada.","Autorização Tempo para setores-fintech-QA-d5b4dc354265 DOC01 executada, limitada a 16 fontes/compilação e três artigos. Decisões fora deste recorte mantêm-se; nenhuma publicação do restante acervo.",Delta disponibilizado; pendências fora do recorte continuam na mesma matriz.,"Saldo operacional desta entrega: zero. A faixa 1h30–3h era estimativa, não saldo atual. Esforço das lacunas remanescentes depende de delimitação concreta; não repetir aceitações.","24/10/2026 FECHO ESTABILIZACAO: reconciliado com entregas 6b544548, d8224ba8, 55136b44, 8036b9b0, cf2ddf21 e 066707ec; recibos mantidos. Zero novas falhas tecnicas conhecidas nos recortes delimitados. PDF, complementos, contextos por oportunidade, ancoras e mapas nao estao pendentes de entrega. Causa dos mapas limitada ao filtro publico e gate legado; nao explica todas as perdas anteriores. Saldo e limites precisos no inicio de traceability-and-manual.md e preservation-inventory-20261023.json, sem nova matriz/backlog. Preservacao tecnica cabe a Codex/programadores; Tempo avalia utilidade/clareza/apresentacao. Ordem: estabilizacao, simulador fiscal delimitado, Imobiliario, Bens de consumo/franquias, Estatistica/paineis, IA. Historico abaixo nao reabre fechos aceites nem declara todos os criterios agregados concluidos. | Historico preservado: 23/10/2026: anchor slice delivered in homologation cf2ddf21 after 3fd5128c; installed delta verified, 28 accepted territorial links restored in 13 projects, exact 29 approved fiches unchanged. Receipt docs/investmoz/unification/anchor-integration-receipt-20261023.json. Preserved cdf8fcfb/8036b9b0 and earlier closures; no accepted proofs repeated; statistics/AI deferred. | 23/10/2026: anchor integration executable in isolated QA; 4 tests/116 assertions + 2 frontend tests; 28 accepted territorial links recovered in QA, 29 real published fiches preserved. Receipt docs/investmoz/unification/anchor-integration-receipt-20261023.json. Homologation still 8036b9b0 until Git installation and exact 28-link recovery; no accepted proofs repeated; statistics/AI deferred. | outputs/investmoz-legado-ativacao-20261015/RESULTADO-FINAL.json; FINAL-READONLY.json; ANONYMOUS-HTTP.json; RECIBO-INTEGRIDADE-FINAL.json; outputs/investmoz-legado-restantes-setores-preparacao-20261015/INVENTARIO-E-RECORTE.json | 15/10/2026: outputs/investmoz-legado-setores-ativacao-20261015/FINAL-READONLY.json; ANONYMOUS-HTTP.json; SOURCE-DELIVERY.json; FRESH-BACKUP.json. 20 importados privados, scan clean e publicados pela sessão Osmane Nala (2); registos de negócio anteriores preservados. | 15/10/2026: outputs/investmoz-legado-inventario-reconciliado-20261015/SALDO-LEGADO.md; RECONCILIACAO-LEGADO.json; LEITURA-ESTADO.json; inventários existentes atualizados por identidade/versão/hash. | outputs/investmoz-fintech-investimento-QA-20261015/RESULTADO-QA.md; PROVA-DELTA-QA.json; HTTP-DELTA-QA.json; PROVA-FINAL-DELTA-QA.json; HTTP-RECUPERACAO-FINAL-QA.json; MANIFESTO-ENTREGA.json | outputs/investmoz-setores-fintech-ativacao-20261015/RELATORIO-ENTREGA.md; PUBLISHED.json; PRESERVACAO-FINAL.json; HTTP-OPERACIONAL.json; FRESH-BACKUP.json; RECIBO-FINAL.json | 18/10: sectores-duplicacoes-QA-9b6097f97121, organização sectorial/duplicações apenas QA. Energia8/Mineração7; Fintech9 especialização de Mercado6; oportunidade2 reclassificada2→8 sem duplicação; 56HTTP,30serviço,3SQL e5reversão observados. Relatório e manifesto exatos em outputs/investmoz-sectores-duplicacoes-QA-20261018/para-revisao/. | 18/10/2026: disponibilizada sectores-duplicacoes-QA-e9f7d821b6f7 em investemoz:5432, procedimento DOC02. Backup/restauro fresco validado. 34 fontes/167 build. Conta2 com permissao/MFA; oportunidade2 sector2 para8; evento/recibo unicos, operacao27e6a658-d8bc-4d94-ab7b-b977ba56d141. Mesma transacao/ligacao e limpeza SET LOCAL observadas. Provas em outputs/investmoz-sectores-duplicacoes-ativacao-20261018/CONFERENCIA-FINAL.json e para-revisao/RECIBO-EXECUCAO.json. | Homologação teste-investidor 19/10/2026: Sectores e duplicação visual=Instalado mas desabilitado; Legado — conteúdo restante=Instalado mas desabilitado. Saldo derivado e limites em outputs/investmoz-disponibilizacao-integral-20261019/SALDO-E-ACTUALIZACAO-CONSOLIDADA.md. Não substitui estado/provas do activo; trecho documental encerrado, vínculo dossier aberto. | Proposta integral fdcb31f1b5b9: aplicação activa local completa + R2/DOC01/destino reconciliados; schema/build/recuperação de contexto e reversão de apresentação ensaiados no clone isolado. Não instalado remotamente. Inc. QA territoriais/Inhambane/programas separados. Limites e decisões em outputs/investmoz-disponibilizacao-integral-20261019/PROPOSTA-INTEGRAL-PARA-DECISAO.md. | Execução autorizada fdcb31f1b5b9 concluída em teste-investidor: Sectores e duplicação visual=Disponível; Legado — conteúdo restante=Instalado mas desabilitado. 1080 hashes iguais, schema171/88, custódia/scan/recuperação reais. Sem publicação ou papéis novos. Vínculo dossier legítimo pendente; incrementos QA separados. Limites em outputs/investmoz-disponibilizacao-integral-20261019/RESULTADO-DISPONIBILIZACAO-INTEGRAL.md; não encerra critérios globais não demonstrados.
+[UTILIZACAO-HOMOLOGACAO-20261019] 5: Disponibilidade condicionada conforme limite registado — Ecrã aberto: dez sectores principais, especialização Fintech sem cartão principal duplicado; 12 registos conservados. | 8: Disponibilidade condicionada conforme limite registado — Adaptador habilitado; artigos/imagens transportados privadamente, sem os publicar. | Recorte executável C concluído em QA. Restantes coberturas sectoriais/benefícios e encaminhamento visual de zona real têm limites concretos no manual; não bloqueiam os ramos já documentados. Integração/habilitação no destino não executadas. | Integração/habilitação deste recorte executadas em22/10/2026; referências anteriores a operação pendente são históricas. Não reabrir as provas aceites. Delta de complementos preparado/verificado em QA; conferência visual e instalação no destino ainda não realizadas. Relações sem oferta identificada permanecem necessidades, sem presumir inexistência no acervo. Cobertura transversal e restantes pendências desta linha mantêm-se. Actualização visual 23/10/2026: supera apenas a pendência visual dos complementos no recorte documentado. Não demonstra contextos específicos de várias oportunidades em zonas/parques, Terra/DUAT, Balcão ou manifestação. Sem disponibilização no destino nem fecho global. | [Saldo corrente 23/10/2026] São três lacunas de integração constatadas por leitura e quatro verificações delimitadas, não sete falhas de execução. Os itens 1–3 determinam a correcção executável seguinte; 4–6 podem ser conferidos independentemente em QA isolado; 7 depende apenas do âmbito corrigido. A contagem refere-se a estes sete recortes, não a cada formato ou campo. Uma verificação que passe encerra o item; uma que falhe regista o defeito concreto na mesma linha da matriz. Não criar outra matriz/backlog nem converter ausência de prova em regressão. Fechos preservados: 6b544548/4098192a; d8224ba8/af926180; 55136b44/b6a626c9. Notas historicas de falta de entrega destes recortes estao superadas. Ver sete recortes no inicio do manual existente. | [QA conjunta 23/10/2026] Itens 1-3 corrigidos: escolha de oportunidade no simulador, aplicabilidade/estados por oportunidade, atalho Terra pelo pedido associado. Provas dirigidas novas nos itens 4-6: retirada da primeira, contactos autorizados, entradas ideia/sector/territorio e login. Word/ZIP gerados; composicao de impressao conferida. Resta PDF nativo efectivamente guardado/paginacao e recorte ancora por analisar. Sem entrega na homologacao desta candidata. Ver estado corrente no inicio do manual; sete itens historicos abaixo nao sao o saldo corrente. Fechos 6b544548, d8224ba8, 55136b44 preservados. Estatisticas e IA adiadas. | [PDF nativo 23/10/2026] Falhas observadas na saida real: not_started e detalhe dos requisitos ausente. Correcao 2856240c sobre candidata 1afdfee8: estados humanos e requisitos apenas da oportunidade aplicavel. Teste novo native-pdf-scope passou; tipos/build passaram; sem repetir Word/ZIP. Saida real revista13, oportunidade309/Manica, valores QA123456/45678/diferenca77778MZN, pronta para gravacao manual. PDF guardado/paginacao pendentes por falta de controlo do dialogo nativo. Integracao/disponibilizacao ja autorizada pela Tempo apos conferencia, ainda nao executada; origin/main55136b44. Estatisticas e IA adiadas. [Analise corrente 23/10/2026] Recorte ancora analisado: duas lacunas de implementacao (filtro sectorial combinado com localizacao e ideia directa a partir de ancora sem oferta); uma reconciliacao de dados/ambiente e uma prova dirigida de interesse/login. Quinze fichas documentais QA mantem texto de sector/localizacao/regiao, sem correspondencias territoriais canonicas nem oferta publica directa nesse clone; ficha SYNTHETIC QA separada. Nao inferir perda na homologacao. Preservar recibo de 29 fichas e continuidade via oportunidade ja aceite. Ver inicio do manual para escopo, fontes e criterios; nenhuma implementacao de ancoras nesta passagem. | [PDF nativo guardado conferido 23/10/2026] Original encontrado na pasta indicada com titulo automatico Relatorio SYNTHETIC QA, extensao .pdf, maquina ONALA/macbook/Console. SHA256010eb4ea12015563c1b2f8bc255b1078c276f824c50690732541d5bffe34b8a6. Dez paginas renderizadas e conferidas: oportunidade309/Manica, cinco requisitos especificos, valores123456/45678/diferenca77778MZN; paginacao e legibilidade aprovadas. Sem regenerar PDF ou repetir Word/ZIP/provas aceites. Condicao satisfeita para1afdfee8+2856240c; disponibilizacao Git autorizada em execucao, ainda a confirmar instalada. Ver inicio do manual e native-pdf-and-anchor-review-20261023.json. Pendencias historicas de ficheiro em falta superadas; saldo de ancoras6985f82e preservado; Estatisticas/IA adiadas. | [Entrega confirmada 23/10/2026] 1afdfee8+2856240c entregues na homologacao8036b9b0. PDF original encontrado pelo titulo automatico na mesma pasta/maquina/sessao: dez paginas e ambito/requisitos/valores/paginacao conferidos, SHA256010eb4ea12015563c1b2f8bc255b1078c276f824c50690732541d5bffe34b8a6, sem regeneracao. Fast-forward55136b44->8036b9b0, instalador installed16:46:13UTC, zero migrations/importacoes. Revisao publica e15hashes funcionais coincidem; delta autenticado na ficha53/dossier958df138 verificado, versao5 preservada, zero novos pedidos/gravacoes/submissoes. Sem repetir provas aceites. Ver treatment-scope-installation-receipt-20261023.json e inicio do manual. Pendencias historicas de PDF/instalacao superadas neste recorte. Complementos e fechos anteriores preservados. Saldo ancora6985f82e mantido; Estatisticas/IA adiadas; sem fecho global.","documents, biblioteca, importação autenticada, VerifiedDocumentBinary, jobs/derivadas","Dependências operacionais desta entrega resolvidas: hashes, backup/restauro fresco, conta autenticada, scans e publicações. Dependências regulatórias específicas e editoriais restantes preservadas no critério atual. | Origem: pedido expresso da Tempo de18/10. IDs, especialização por leitura e ponte histórica são escolhas técnicas; sem nova regra organizacional. Ativo inalterado; disponibilização separada. Sem migration/instalação140000/150000; reversão retém somente a rota nova Fintech além dos dados/histórico e associação2→8. Estados e critérios anteriores preservados. | Origem: autorizacao expressa Tempo18/10/2026. Backup/restauro e execucao autenticada concluidos; 140000/150000 presentes uma vez, sem migrations. Reversao parcial preserva dados/auditoria/esquemas e rota compativel Fintech. Matriz/manual/backlog atuais preservados. Ficha integral dos parques separada.","Autorização Tempo para setores-fintech-QA-d5b4dc354265 DOC01 executada, limitada a 16 fontes/compilação e três artigos. Decisões fora deste recorte mantêm-se; nenhuma publicação do restante acervo.",Delta disponibilizado; pendências fora do recorte continuam na mesma matriz.,"Saldo operacional desta entrega: zero. A faixa 1h30–3h era estimativa, não saldo atual. Esforço das lacunas remanescentes depende de delimitação concreta; não repetir aceitações.","[APIEX-SWOT-20261110] outputs/investment-preparation-20261110/verification.json e artefactos sintéticos; seis casos API/211asserções,16frontend dirigidos, tipos/análise/lint. outputs/entrega-apiex-swot-20261110.zip, base7476dc34, sem migrations. Manual e saldo no início dos registos existentes. | Histórico anterior preservado: 24/10/2026 FECHO ESTABILIZACAO: reconciliado com entregas 6b544548, d8224ba8, 55136b44, 8036b9b0, cf2ddf21 e 066707ec; recibos mantidos. Zero novas falhas tecnicas conhecidas nos recortes delimitados. PDF, complementos, contextos por oportunidade, ancoras e mapas nao estao pendentes de entrega. Causa dos mapas limitada ao filtro publico e gate legado; nao explica todas as perdas anteriores. Saldo e limites precisos no inicio de traceability-and-manual.md e preservation-inventory-20261023.json, sem nova matriz/backlog. Preservacao tecnica cabe a Codex/programadores; Tempo avalia utilidade/clareza/apresentacao. Ordem: estabilizacao, simulador fiscal delimitado, Imobiliario, Bens de consumo/franquias, Estatistica/paineis, IA. Historico abaixo nao reabre fechos aceites nem declara todos os criterios agregados concluidos. | Historico preservado: 23/10/2026: anchor slice delivered in homologation cf2ddf21 after 3fd5128c; installed delta verified, 28 accepted territorial links restored in 13 projects, exact 29 approved fiches unchanged. Receipt docs/investmoz/unification/anchor-integration-receipt-20261023.json. Preserved cdf8fcfb/8036b9b0 and earlier closures; no accepted proofs repeated; statistics/AI deferred. | 23/10/2026: anchor integration executable in isolated QA; 4 tests/116 assertions + 2 frontend tests; 28 accepted territorial links recovered in QA, 29 real published fiches preserved. Receipt docs/investmoz/unification/anchor-integration-receipt-20261023.json. Homologation still 8036b9b0 until Git installation and exact 28-link recovery; no accepted proofs repeated; statistics/AI deferred. | outputs/investmoz-legado-ativacao-20261015/RESULTADO-FINAL.json; FINAL-READONLY.json; ANONYMOUS-HTTP.json; RECIBO-INTEGRIDADE-FINAL.json; outputs/investmoz-legado-restantes-setores-preparacao-20261015/INVENTARIO-E-RECORTE.json | 15/10/2026: outputs/investmoz-legado-setores-ativacao-20261015/FINAL-READONLY.json; ANONYMOUS-HTTP.json; SOURCE-DELIVERY.json; FRESH-BACKUP.json. 20 importados privados, scan clean e publicados pela sessão Osmane Nala (2); registos de negócio anteriores preservados. | 15/10/2026: outputs/investmoz-legado-inventario-reconciliado-20261015/SALDO-LEGADO.md; RECONCILIACAO-LEGADO.json; LEITURA-ESTADO.json; inventários existentes atualizados por identidade/versão/hash. | outputs/investmoz-fintech-investimento-QA-20261015/RESULTADO-QA.md; PROVA-DELTA-QA.json; HTTP-DELTA-QA.json; PROVA-FINAL-DELTA-QA.json; HTTP-RECUPERACAO-FINAL-QA.json; MANIFESTO-ENTREGA.json | outputs/investmoz-setores-fintech-ativacao-20261015/RELATORIO-ENTREGA.md; PUBLISHED.json; PRESERVACAO-FINAL.json; HTTP-OPERACIONAL.json; FRESH-BACKUP.json; RECIBO-FINAL.json | 18/10: sectores-duplicacoes-QA-9b6097f97121, organização sectorial/duplicações apenas QA. Energia8/Mineração7; Fintech9 especialização de Mercado6; oportunidade2 reclassificada2→8 sem duplicação; 56HTTP,30serviço,3SQL e5reversão observados. Relatório e manifesto exatos em outputs/investmoz-sectores-duplicacoes-QA-20261018/para-revisao/. | 18/10/2026: disponibilizada sectores-duplicacoes-QA-e9f7d821b6f7 em investemoz:5432, procedimento DOC02. Backup/restauro fresco validado. 34 fontes/167 build. Conta2 com permissao/MFA; oportunidade2 sector2 para8; evento/recibo unicos, operacao27e6a658-d8bc-4d94-ab7b-b977ba56d141. Mesma transacao/ligacao e limpeza SET LOCAL observadas. Provas em outputs/investmoz-sectores-duplicacoes-ativacao-20261018/CONFERENCIA-FINAL.json e para-revisao/RECIBO-EXECUCAO.json. | Homologação teste-investidor 19/10/2026: Sectores e duplicação visual=Instalado mas desabilitado; Legado — conteúdo restante=Instalado mas desabilitado. Saldo derivado e limites em outputs/investmoz-disponibilizacao-integral-20261019/SALDO-E-ACTUALIZACAO-CONSOLIDADA.md. Não substitui estado/provas do activo; trecho documental encerrado, vínculo dossier aberto. | Proposta integral fdcb31f1b5b9: aplicação activa local completa + R2/DOC01/destino reconciliados; schema/build/recuperação de contexto e reversão de apresentação ensaiados no clone isolado. Não instalado remotamente. Inc. QA territoriais/Inhambane/programas separados. Limites e decisões em outputs/investmoz-disponibilizacao-integral-20261019/PROPOSTA-INTEGRAL-PARA-DECISAO.md. | Execução autorizada fdcb31f1b5b9 concluída em teste-investidor: Sectores e duplicação visual=Disponível; Legado — conteúdo restante=Instalado mas desabilitado. 1080 hashes iguais, schema171/88, custódia/scan/recuperação reais. Sem publicação ou papéis novos. Vínculo dossier legítimo pendente; incrementos QA separados. Limites em outputs/investmoz-disponibilizacao-integral-20261019/RESULTADO-DISPONIBILIZACAO-INTEGRAL.md; não encerra critérios globais não demonstrados.
[UTILIZACAO-HOMOLOGACAO-20261019] Leitura nominal de contas/recursos no destino; saldo18/10; prévia29 sem escrita; comparação de hashes QA separados. outputs/investmoz-disponibilizacao-integral-20261019/UTILIZACAO-EFECTIVA-HOMOLOGACAO.md
diff --git a/docs/investmoz/v2/auditoria-portal/visao-consolidada-modulos.md b/docs/investmoz/v2/auditoria-portal/visao-consolidada-modulos.md
index 6bf2f800..84c496b7 100644
--- a/docs/investmoz/v2/auditoria-portal/visao-consolidada-modulos.md
+++ b/docs/investmoz/v2/auditoria-portal/visao-consolidada-modulos.md
@@ -1,3 +1,15 @@
+## 10/11/2026 — APIEX e SWOT no dossier existente: QA concluído, instalação pendente
+
+**Instalado:** `7476dc343098f15a7982e9d7581bf4f59d43bc1a` em https://teste-investidor.tempo.co.mz, promovido às14:28:12UTC e conferido às14:29:07UTC (16:29 locais). Transporte CBF15 deixa de ser pendência de instalação. Delta14hashes Git/HTTPS, root/up/login/revision200, configuração intacta, zero migrations/importações; backup/restauro190tabelas e369ficheiros conferidos. Recibos `outputs/cbf15-carry-delivery-20261110/`; release anterior e pacotes preservados.
+
+**Implementado em QA, ainda não instalado — APIEX:** dossier existente → requisitos fundamentados disponíveis/em falta/não aplicáveis/indeterminados → documentos existentes e complementos → revisão → prévia/ZIP com índice e anexos íntegros → registo da entrega externa, esclarecimento, resposta e decisão com data/referência/comprovativo. Dados do investidor/empresa/contexto/localização/oportunidade reutilizados. Estados em preparação/pronto para entrega/entrega registada/decisão recebida distintos; exportar não submete nem aprova. Snapshot preparado, versões, SHA e pacote privado cifrado preservados; recuperação devolve os mesmos bytes após alteração do contexto, revalidando acesso e segurança dos documentos. Ausência de recepção electrónica APIEX, segundo a orientação Tempo, não bloqueia este percurso; nenhum conector fictício ou formulário oficial inventado. Reutiliza o avaliador e modelos/fontes aceites; períodos/regimes fora do âmbito actualmente mapeado ficam indeterminados, sem conclusão normativa presumida.
+
+**Implementado em QA, ainda não instalado — SWOT:** no mesmo dossier/oportunidade, objecto explícito investimento/território/sector/cluster, evidências do contexto/análise proactiva e Competitividade pública aprovada, quatro dimensões internas/externas, fonte/data/classificação de cada conclusão (facto documentado/hipótese/por confirmar). Sem pontuação, IA ou inferência de ausência pela falta de registos. Gravação/recuperação/histórico paginado e revisão pela equipa com permissões existentes. Alteração/retirada de fontes assinala revisão, conserva fotografia consultada e edições deliberadas. Acções ideia/oportunidade/parceiros/risco continuam no mesmo dossier; risco liga à tarefa nativa com origem própria e repetição sem duplicação. Privado por defeito; publicação exige o fluxo editorial existente, nunca automática. Contextos retirados ficam no histórico privado de leitura, sem reactivação.
+
+Provas sintéticas no QA55441 existente, com rollback: seis casos API/211asserções;16casos frontend dirigidos (incluindo transporte e cabeçalho comum147páginas), tipos, análise estática e lint aprovados. `outputs/investment-preparation-20261110/verification.json`, ZIP/índice/anexos, recuperação SWOT e provas de isolamento/histórico/segurança. Pacote Git agrupado `outputs/entrega-apiex-swot-20261110.zip`, base exacta7476dc34, reversão de código sem apagar auditoria, pacotes privados ou tarefas posteriores. Nenhuma migration/base/porta/conta real nova, submissão real ou publicação. Compilação QA separada; provas anteriores reutilizadas.
+
+**Saldo concreto:** APIEX e SWOT acima encerrados em implementação QA; instalação deste conjunto e conferência visual continuam pendentes. O conector mantém “The browser access host is unavailable”; SSR/testes não substituem visual, sem novo ciclo de reinícios. Os restantes módulos conservam o saldo anterior, incluindo resíduos L1–L7, restanteL8 e L9–L16. Isto não declara o portal integralmente concluído.
+
## 10/11/2026 — transporte documental CBF15 em QA
Homologação mantém `d216830b`; este delta ainda não está instalado. Tipos/lint/Pint/buildQA aprovados; pacote com aplicação/reversão exactas,sem migrations/dados/credenciais. Pendência encerrada no recorte normal residente2026/ano civil/MZN: crédito de investimento de origem anterior do mesmo contribuinte/projecto/local/regime, com activo/documento/parcela, exercício de origem, NUIT/projecto de origem, taxa original e qualificação históricas documentados. Exercício de origem anterior a2026,dentro da janela original e não anterior à aquisição; no projecto em funcionamento,a aquisição não precede o início aplicável. Não renova o prazo nem recalcula origem a outra taxa. Valor corrente/ausência e uso efectivo agregado exigem reconciliação explícita; histórico de simulações não equivale a utilização fiscal.
diff --git a/resources/js/lib/investment-preparation.ts b/resources/js/lib/investment-preparation.ts
new file mode 100644
index 00000000..27f17492
--- /dev/null
+++ b/resources/js/lib/investment-preparation.ts
@@ -0,0 +1,143 @@
+import { createOperationKey } from './operation-key.ts';
+export const swotDimensions = {
+ strength: 'Forças — internas ao objecto',
+ weakness: 'Fraquezas — internas ao objecto',
+ opportunity: 'Oportunidades — externas ao objecto',
+ threat: 'Ameaças — externas ao objecto',
+} as const;
+export type SwotRow = {
+ id: string;
+ dimension: keyof typeof swotDimensions;
+ text: string;
+ reference: string;
+ source_key: string | null;
+ date: string | null;
+ classification: 'documented_fact' | 'hypothesis' | 'unconfirmed';
+};
+export type SwotDraft = {
+ sources_snapshot?: unknown;
+ snapshot_fingerprint?: string;
+ object_key: string;
+ scope: string | null;
+ rows: SwotRow[];
+ source_fingerprint: string;
+ review?: { reason: string; at: string } | null;
+ actions: {
+ id: string;
+ title: string;
+ kind: string;
+ href: string;
+ review_version: number;
+ }[];
+};
+export type Workspace = {
+ historical?: boolean;
+ initial_scope?: boolean;
+ saved_scopes?: { key: string; label: string; href: string }[];
+ case: { id: string; title: string; closed: boolean };
+ opportunity: string | null;
+ opportunity_label?: string | null;
+ version: number;
+ apiex: {
+ note: string | null;
+ additional_documents: string[];
+ review: { reason: string; at: string; fingerprint: string } | null;
+ exports: { id: string; at: string; context_revision: number }[];
+ external: {
+ id: string;
+ kind: string;
+ date: string;
+ reference: string;
+ proof_document: string;
+ related_id?: string;
+ export_id: string;
+ outcome?: string;
+ }[];
+ };
+ swot: SwotDraft;
+ api_state: string;
+ api_issues: string[];
+ api_fingerprint: string;
+ swot_fingerprint: string;
+ swot_review_required: boolean;
+ can_write: boolean;
+ can_review: boolean;
+ links: Record;
+ objects: { key: string; label: string; kind: string }[];
+ sources: {
+ key: string;
+ label: string;
+ consulted?: unknown;
+ current?: unknown;
+ notice?: string;
+ }[];
+ reused?: Record;
+ context: { revision: number; fields: Record };
+ assessment: {
+ requirements: {
+ key: string;
+ label: string;
+ state: string;
+ required: boolean;
+ available: boolean;
+ reason: string;
+ document_id: string | null;
+ source: { reference: string; url: string };
+ }[];
+ };
+ documents: {
+ id: string;
+ document_id: string;
+ file_name: string;
+ available: boolean;
+ version_no: number;
+ }[];
+ history_next?: number | null;
+ history: {
+ version: number;
+ action: string;
+ at: string;
+ actor: number;
+ operation_key?: string;
+ }[];
+};
+/** A lost response retains the exact intent; editing fields never mutates a retry. */
+export class PreparationAttempt {
+ private value: Record | null = null;
+ start(
+ version: number,
+ opportunity: string | null,
+ action: string,
+ data: Record,
+ reason: string,
+ ) {
+ if (this.value)
+ throw Error('Resolva a tentativa anterior antes de iniciar outra.');
+ this.value = JSON.parse(
+ JSON.stringify({
+ ...data,
+ version,
+ opportunity,
+ action,
+ reason,
+ operation_key: createOperationKey(),
+ }),
+ ) as Record;
+ return this.current()!;
+ }
+ current() {
+ return this.value ? structuredClone(this.value) : null;
+ }
+ complete() {
+ this.value = null;
+ }
+ canAdopt(view: Pick) {
+ return (
+ !this.value ||
+ view.version > Number(this.value.version) ||
+ view.history.some(
+ (h) => h.operation_key === this.value?.operation_key,
+ )
+ );
+ }
+}
diff --git a/resources/js/lib/profile-json.ts b/resources/js/lib/profile-json.ts
index 84708c3f..8e288cc8 100644
--- a/resources/js/lib/profile-json.ts
+++ b/resources/js/lib/profile-json.ts
@@ -3,6 +3,7 @@ export class ProfileValidationError extends Error {
message: string,
public readonly fields: Record,
public readonly reauthenticate = false,
+ public readonly status: number | null = null,
) {
super(message);
}
@@ -67,6 +68,7 @@ export async function profileJson(
]),
),
reauthenticate,
+ response.status,
);
return result;
}
diff --git a/resources/js/pages/investor-path/preparation.tsx b/resources/js/pages/investor-path/preparation.tsx
new file mode 100644
index 00000000..5f6cb04d
--- /dev/null
+++ b/resources/js/pages/investor-path/preparation.tsx
@@ -0,0 +1,1417 @@
+import { useEffect, useRef, useState } from 'react';
+import { Link, router } from '@inertiajs/react';
+import { Frame, card, input, button } from '@/pages/investment/shared';
+import { profileJson, ProfileValidationError } from '@/lib/profile-json';
+import { createOperationKey } from '@/lib/operation-key';
+import {
+ PreparationAttempt,
+ swotDimensions,
+ type SwotRow,
+ type Workspace,
+} from '@/lib/investment-preparation';
+
+const apiStates: Record = {
+ preparing: 'Em preparação',
+ ready: 'Pronto para entrega',
+ delivery_recorded: 'Entrega registada',
+ decision_received: 'Decisão recebida',
+};
+const externalKinds: Record = {
+ delivery: 'Entrega externa',
+ clarification: 'Pedido de esclarecimento',
+ response: 'Resposta ao esclarecimento',
+ decision: 'Decisão recebida',
+};
+export default function Preparation({ workspace }: { workspace: Workspace }) {
+ return (
+
+ );
+}
+function PreparationEditor({ initial }: { initial: Workspace }) {
+ const [view, setView] = useState(initial),
+ [tab, setTab] = useState<'apiex' | 'swot'>('apiex');
+ const [swot, setSwot] = useState({
+ ...initial.swot,
+ object_key: initial.swot.object_key || 'investment:' + initial.case.id,
+ source_fingerprint:
+ initial.swot.source_fingerprint || initial.swot_fingerprint,
+ });
+ const [note, setNote] = useState(initial.apiex.note ?? ''),
+ [additional, setAdditional] = useState(
+ initial.apiex.additional_documents,
+ );
+ const [reason, setReason] = useState(''),
+ [busy, setBusy] = useState(false),
+ [error, setError] = useState(''),
+ [notice, setNotice] = useState(''),
+ [pending, setPending] = useState(false),
+ [recovery, setRecovery] = useState(null);
+ const [apiDirty, setApiDirty] = useState(false),
+ [swotDirty, setSwotDirty] = useState(false);
+ const dirty = tab === 'apiex' ? apiDirty : swotDirty;
+ function setDirty(value: boolean) {
+ if (tab === 'apiex') setApiDirty(value);
+ else setSwotDirty(value);
+ }
+ const [external, setExternal] = useState({
+ kind: 'delivery',
+ date: '',
+ reference: '',
+ proof_document: '',
+ export_id: '',
+ related_id: '',
+ outcome: '',
+ });
+ const [action, setAction] = useState({
+ conclusion_id: '',
+ kind: 'risk',
+ title: '',
+ });
+ const attempt = useRef(new PreparationAttempt()),
+ running = useRef(false);
+ const base = '/investimentos/' + view.case.id + '/preparacao',
+ query = view.initial_scope
+ ? '?history_scope=dossier'
+ : view.opportunity
+ ? '?opportunity=' + encodeURIComponent(view.opportunity)
+ : '';
+ useEffect(() => {
+ const unsaved = apiDirty || swotDirty || pending || busy;
+ if (!unsaved) return;
+ const leave = (event: BeforeUnloadEvent) => {
+ event.preventDefault();
+ event.returnValue = '';
+ };
+ window.addEventListener('beforeunload', leave);
+ const off = router.on('before', (event) => {
+ if (
+ !window.confirm(
+ 'Existem campos locais ou uma confirmação pendente. Sair sem os guardar?',
+ )
+ )
+ event.preventDefault();
+ });
+ return () => {
+ window.removeEventListener('beforeunload', leave);
+ off();
+ };
+ }, [apiDirty, swotDirty, pending, busy]);
+ function download(id: string) {
+ const a = document.createElement('a');
+ a.href = base + '/exportar/' + encodeURIComponent(id) + query;
+ a.download = '';
+ a.click();
+ }
+ async function send(body: Record) {
+ if (running.current) return;
+ running.current = true;
+ setBusy(true);
+ setError('');
+ try {
+ const next = (await profileJson(base, body)) as Workspace;
+ setView(next);
+ attempt.current.complete();
+ setPending(false);
+ setRecovery(null);
+ if (body.action === 'swot_save' || body.action === 'swot_restore') {
+ setSwot({
+ ...next.swot,
+ source_fingerprint:
+ next.swot.source_fingerprint || next.swot_fingerprint,
+ });
+ setSwotDirty(false);
+ }
+ if (body.action === 'swot_review')
+ setSwot((old) => ({
+ ...old,
+ source_fingerprint: next.swot.source_fingerprint,
+ }));
+ if (body.action === 'apiex_save') setApiDirty(false);
+ if (body.action === 'external')
+ setExternal((old) => ({
+ ...old,
+ date: '',
+ reference: '',
+ proof_document: '',
+ related_id: '',
+ outcome: '',
+ }));
+ if (body.action === 'apiex_export') {
+ download(String(body.operation_key));
+ setExternal((old) => ({
+ ...old,
+ export_id: String(body.operation_key),
+ }));
+ setNotice(
+ 'Pacote preparado para descarga. Exportar não submete nem regista entrega externa.',
+ );
+ } else
+ setNotice(
+ 'Versão ' +
+ next.version +
+ ' guardada. Dados e histórico anteriores preservados.',
+ );
+ } catch (e) {
+ setError(
+ e instanceof Error
+ ? e.message
+ : 'Não foi possível confirmar a gravação.',
+ );
+ setPending(true);
+ if (
+ e instanceof ProfileValidationError &&
+ (e.status === null || (e.status >= 400 && e.status < 500 && e.status !== 408))
+ ) {
+ attempt.current.complete();
+ setPending(false);
+ setError(e.message + ' ' + Object.values(e.fields).join(' '));
+ }
+ } finally {
+ running.current = false;
+ setBusy(false);
+ }
+ }
+ function act(kind: string, data: Record = {}) {
+ if (running.current || pending) return;
+ void send(
+ attempt.current.start(
+ view.version,
+ view.opportunity,
+ kind,
+ data,
+ reason.trim() ||
+ 'Operador confere e guarda esta versão do dossier',
+ ),
+ );
+ }
+ async function consult() {
+ if (running.current) return;
+ running.current = true;
+ setBusy(true);
+ try {
+ setRecovery(
+ (await profileJson(base + query, {}, 'GET')) as Workspace,
+ );
+ } catch (e) {
+ setError(e instanceof Error ? e.message : 'Consulta indisponível');
+ } finally {
+ running.current = false;
+ setBusy(false);
+ }
+ }
+ function adopt() {
+ if (!recovery || !attempt.current.canAdopt(recovery)) return;
+ setView(recovery);
+ setSwot({
+ ...recovery.swot,
+ object_key:
+ recovery.swot.object_key || 'investment:' + view.case.id,
+ source_fingerprint:
+ recovery.swot.source_fingerprint || recovery.swot_fingerprint,
+ });
+ setNote(recovery.apiex.note ?? '');
+ setAdditional(recovery.apiex.additional_documents);
+ attempt.current.complete();
+ setPending(false);
+ setApiDirty(false);
+ setSwotDirty(false);
+ setRecovery(null);
+ }
+ async function olderHistory() {
+ if (running.current || busy || !view.history_next) return;
+ running.current = true;
+ setBusy(true);
+ try {
+ const next = (await profileJson(
+ base +
+ query +
+ (query ? '&' : '?') +
+ 'history_before=' +
+ view.history_next,
+ {},
+ 'GET',
+ )) as Workspace;
+ setView((old) => ({
+ ...old,
+ history: [
+ ...new Map(
+ [...old.history, ...next.history].map((h) => [
+ h.version,
+ h,
+ ]),
+ ).values(),
+ ],
+ history_next: next.history_next,
+ }));
+ } catch (e) {
+ setError(
+ e instanceof Error
+ ? e.message
+ : 'Não foi possível consultar o histórico.',
+ );
+ } finally {
+ running.current = false;
+ setBusy(false);
+ }
+ }
+ function keepLocal() {
+ if (!recovery || !attempt.current.canAdopt(recovery)) return;
+ setView(recovery);
+ setApiDirty(true);
+ setSwotDirty(true);
+ attempt.current.complete();
+ setPending(false);
+ setRecovery(null);
+ setNotice(
+ 'Campos locais mantidos; fontes e versão do servidor actualizadas. Compare,guarde e reveja antes de avançar.',
+ );
+ }
+ const change = (id: string, patch: Partial) => {
+ setSwot((old) => ({
+ ...old,
+ rows: old.rows.map((r) => (r.id === id ? { ...r, ...patch } : r)),
+ }));
+ setDirty(true);
+ };
+ const exportId =
+ external.export_id ||
+ (view.apiex.exports.length === 1 ? view.apiex.exports[0].id : '');
+ const locked = busy || pending;
+ return (
+
+
+
+ {view.case.title} · Oportunidade:{' '}
+ {view.opportunity_label ?? 'contexto único do dossier'} · Versão{' '}
+ {view.version}
+
+
+ Voltar ao mesmo dossier
+
+ {view.historical && (
+
+ Oportunidade retirada das escolhas actuais. Consulta
+ histórica preservada; não são alteradas as escolhas nem
+ os dados actuais do dossier.
+
+ )}
+
+ Preparação privada. Não há ligação de recepção electrónica
+ APIEX. Exportação, entrega externa e decisão são registos
+ distintos. A SWOT apoia a decisão; não produz pontuação
+ automática.
+
+
+
+
+
+
+ {error && (
+
+ {error} Os campos locais foram conservados.
+
+ )}
+ {notice &&
{notice}
}
+ {pending && (
+
+
+ A confirmação está pendente. Repetir conserva
+ exactamente a mesma tentativa,sem duplicar o
+ registo.
+
+
+
+ )}
+ {recovery && (
+
+
Versão do servidor: {recovery.version}
+
+ Consultar não substitui os campos locais. Compare
+ antes de recuperar.
+