Compare commits

...
Author SHA1 Message Date
nala 4f9450a71d docs(investment): demonstrate source-based Cahora Bassa idea in private QA dossier 2026-10-27 10:22:33 +02:00
nala 1afab4a2a7 docs(investment): record proactive QA proof guide and concrete residuals 2026-10-27 09:43:04 +02:00
nala 3439f35038 feat(investment): prepare evidence-led territorial needs and ideas in existing workflows 2026-10-27 09:35:20 +02:00
nala f8d57bddf9 docs(irpc): record current main compatibility and preserved fiscal evidence
tests / ci (push) Canceled after 0s
2026-10-26 16:08:45 +02:00
nala ea2bceb5ce merge: preserve current main catalogue and restore accepted fiscal manual history 2026-10-26 16:07:28 +02:00
nala 245549f9e8 feat(irpc): qualify supported benefit combinations and prevent duplicate deductions in QA 2026-10-26 16:04:05 +02:00
paulomassigue a7434cd27c .
tests / ci (push) Canceled after 0s
2026-10-26 16:04:04 +02:00
paulomassigue 71551deb73 restaturacao da cor nornmal de porque incvestir em Mocambique 2026-10-26 16:02:04 +02:00
nala f33d99b4d5 docs(irpc): record grouped CBF16 installation and remaining L7 scope 2026-10-26 15:37:27 +02:00
nala 632dc06930 docs(irpc): prepare grouped cessation and prior quota QA delivery
tests / ci (push) Canceled after 0s
2026-10-26 15:20:58 +02:00
nala ff84ab648f merge: preserve current main presentation alongside grouped L7 QA 2026-10-26 15:17:11 +02:00
nala 992c97ad4e feat(irpc): reconcile CBF16 cessation and documented prior quotas in QA 2026-10-26 15:16:45 +02:00
paulomassigue ae0d74bb3a azul claro como fundo em porque investir em mocambique
tests / ci (push) Canceled after 0s
2026-10-26 15:06:35 +02:00
paulomassigue 894ca4ec69 correcao de conflitos
tests / ci (push) Canceled after 0s
2026-10-26 14:57:27 +02:00
nala ba83afe7d8 feat(irpc): qualify CBF16 monthly quotas for resident start periods in QA 2026-10-26 14:55:35 +02:00
paulomassigue 4da7a16a50 mudanca da cor em por que investir em Mocambique 2026-10-26 14:54:49 +02:00
nala eccd95f9e7 docs(irpc): record monthly CBF16 installation and next short-period scope 2026-10-26 14:43:40 +02:00
nala 0bd5d49550 feat(irpc): reuse L6 monthly quotas for qualified CBF16 in QA
tests / ci (push) Canceled after 0s
2026-10-26 14:24:28 +02:00
nala aed020d19e docs(irpc): reconcile installed L7 server capacity and next monthly asset scope 2026-10-26 14:02:57 +02:00
nala 1649710cf7 docs(irpc): record grouped L7 installation and concrete remaining scope 2026-10-26 13:05:56 +02:00
nala e07f89da3d Merge demonstrated L7 treatments preserving concurrent portal changes and accepted history
tests / ci (push) Canceled after 0s
2026-10-26 12:53:38 +02:00
nala ab2ff2fdbc feat(irpc): qualify L7 expenses and compatible special treatments in QA 2026-10-26 12:14:52 +02:00
paulomassigue a2122dc34c correcao de conflitos
tests / ci (push) Canceled after 0s
2026-10-26 12:02:22 +02:00
nala d37fffb2d2 docs(irpc): accept bounded L6 operations and delimit L7 treatments 2026-10-26 11:46:33 +02:00
nala 45fd591c7f docs(irpc): record 5aaf1a56 delivery and separate remaining code from documentary questions 2026-10-26 11:07:26 +02:00
paulomassigue 17d633c99c Adicao do texto por que investir em Moz e ajuste dos elementos 2026-10-26 11:01:35 +02:00
nala 5aaf1a56f9 feat(irpc): prepare exact values and documented M20 M22 field mappings
tests / ci (push) Canceled after 0s
2026-10-26 10:51:05 +02:00
nala 2116f66b2b docs(irpc): record 56475acb installation and remaining L6 scope 2026-10-26 10:33:32 +02:00
paulomassigue 8f1ab24b22 acrescimo no hero de Porquê investir em Moçambique?
Partir de uma ideia Sectores de investimento
2026-10-26 10:22:17 +02:00
nala 56475acb2f feat(irpc): map short periods and foreign currency plans with explicit simulation evidence
tests / ci (push) Canceled after 0s
2026-10-26 09:55:25 +02:00
nala 0effdc9fcb docs(irpc): record e9fe1022 installation and partial L6 scope 2026-10-26 09:44:28 +02:00
nala e9fe102259 feat(irpc): demonstrate documented depreciation methods and prior quotas
tests / ci (push) Canceled after 0s
2026-10-26 09:24:06 +02:00
nala 44d0858cee docs(irpc): record 043dd35d installation and remaining L6 cases 2026-10-26 08:43:14 +02:00
nala 043dd35d8e feat(irpc): prepare scoped cost limits provisions and timing in QA
tests / ci (push) Canceled after 0s
2026-10-26 08:29:28 +02:00
nala f400e56a5b docs(irpc): record a2de7259 delivery and bounded L6 remainder 2026-10-25 22:39:35 +02:00
nala a2de725901 feat(irpc): prepare compatible L6 schedules and scoped form mappings in QA
tests / ci (push) Canceled after 0s
2026-10-25 22:29:06 +02:00
nala 82d0d05887 Record installed normal colecta and concrete L6 remainder separate from L7 L8 2026-10-25 22:11:55 +02:00
nala 2f684e5984 Calculate scoped normal IRPC colecta and preserve annual settlement boundary
tests / ci (push) Canceled after 0s
2026-10-25 21:58:59 +02:00
nala b8d45796dd Determine scoped IRPC taxable base from documented own loss balances 2026-10-25 21:46:59 +02:00
nala 5e02c23af8 Complete scoped IRPC taxable profit with explicit evidence states
tests / ci (push) Canceled after 0s
2026-10-25 21:33:51 +02:00
nala 664c88c8f7 Start scoped normal IRPC adjustments and record operational L5 installation 2026-10-25 21:22:42 +02:00
nala 7a11c4ef8f Specify AT interest and CER questions and label simulation assumptions
tests / ci (push) Canceled after 0s
2026-10-25 21:04:53 +02:00
nala acf8ec3cb5 Prepare documented interest calculations and separate MRFTA working cases 2026-10-25 20:52:21 +02:00
nala 5fa64bc0f4 Preserve exact original BM source bytes in the QA archive
tests / ci (push) Canceled after 0s
2026-10-25 20:19:53 +02:00
nala 85e3cd5c7b Prepare scoped MRFTA and documented compensatory interest with QA recovery 2026-10-25 20:19:08 +02:00
nala ce746d889d Implement scoped IRPC reliefs and PT-MZ royalties with QA recovery evidence
tests / ci (push) Canceled after 0s
2026-10-25 19:56:32 +02:00
nala 2b33a1c343 Identify IRPC income category and retention nature in Portuguese
tests / ci (push) Canceled after 0s
2026-10-25 19:20:44 +02:00
nala 4d6f828230 Group compatible IRPC withholding rates and reuse delivered FX selection 2026-10-25 19:14:46 +02:00
nala da0d8abb47 Start scoped IRPC L5 withholding workflow with document and payment reuse 2026-10-25 18:45:04 +02:00
nala 5c0cb25cea Preserve documented liberatory settlement when changing ISPC route
tests / ci (push) Canceled after 0s
2026-10-25 18:18:03 +02:00
nala 3dda7130ee Group ISPC occasional operations, excess acquisition treatment and 2026 formal preparation in QA 2026-10-25 18:12:34 +02:00
nala 6af7092e83 Reconcile installed L3 receipt and preserve current balance in compatible ISPC QA
tests / ci (push) Canceled after 0s
2026-10-25 17:15:52 +02:00
nala 49b448eb47 Prepare compatible ISPC quarterly QA on L3 baseline without experimental P001 changes 2026-10-25 17:11:58 +02:00
223 changed files with 34190 additions and 282 deletions
+3
View File
@@ -12,3 +12,6 @@ database/data/economic-references-lot-01.json text eol=crlf
CHANGELOG.md export-ignore
README.md export-ignore
.github/workflows/browser-tests.yml export-ignore
# Preserve the original archived BM HTML bytes and whitespace.
docs/investmoz/simulations/source-archive/BM-Mercado-Monetario-MAIBOR-20261025.html -text -diff
@@ -147,7 +147,7 @@ class OpportunityManagementController extends Controller
Inertia::share('publicationPreview', app(OpportunityCanonicalContract::class)->publicProjection($values['canonical'] ?? []));
$classification = $id ? DB::table('audit_events')->where('source_system', 'opportunity-origin-review')->where('after_data->opportunity_id', $id)->orderByDesc('occurred_at')->orderByDesc('id')->value('after_data') : null;
return Inertia::render('management/opportunity-draft', ['resourcesInstalled' => app(OpportunityResources::class)->installed(), 'record' => $record, 'values' => $values, 'etag' => $record ? $service->etag($record) : null, 'readOnly' => str_ends_with($request->path(), '/view') || ($record && ! $access->canEdit($request->user(), $record)), 'closedVersion' => $record ? $service->closed($record) : false, 'classification' => $classification ? json_decode($classification, true)['classification'] : 'undetermined', 'sectors' => Sector::choices()->orderBy('name')->get(['id', 'name', 'slug']), 'categories' => OpportunityManagement::CATEGORIES,
return Inertia::render('management/opportunity-draft', ['proactiveHistory' => app(\App\Services\ProactiveInvestment::class)->history($record), 'proactiveOptions' => app(\App\Services\ProactiveInvestment::class)->options($record), 'resourcesInstalled' => app(OpportunityResources::class)->installed(), 'record' => $record, 'values' => $values, 'etag' => $record ? $service->etag($record) : null, 'readOnly' => str_ends_with($request->path(), '/view') || ($record && ! $access->canEdit($request->user(), $record)), 'closedVersion' => $record ? $service->closed($record) : false, 'classification' => $classification ? json_decode($classification, true)['classification'] : 'undetermined', 'sectors' => Sector::choices()->orderBy('name')->get(['id', 'name', 'slug']), 'categories' => OpportunityManagement::CATEGORIES,
'maturityCatalogue' => ['version' => OpportunityMaturity::VERSION, 'stages' => OpportunityMaturity::STAGES, 'legacyVersion' => OpportunityMaturity::LEGACY, 'legacyLabels' => OpportunityMaturity::LEGACY_LABELS],
'territoryPath' => app(InvestmentGeography::class)->path($values['primary_territory_id'] ?? null, true),
'history' => $id ? DB::table('audit_events')->where('source_system', 'opportunity-management')->where('after_data->record_id', $id)->orderByDesc('occurred_at')->get(['id', 'action', 'actor_user_id', 'occurred_at']) : []]);
@@ -71,6 +71,7 @@ class PortalServicesController extends Controller
$props = ['section' => $page, 'filters' => $filters, 'countries' => app(CountryCatalogue::class)->all()];
if ($page === 'sectors') {
$props['sectors'] = \App\Services\SectorOrganization::catalog();
$props['sectorDetails'] = $props['sectors']->map(fn (Sector $sector) => app(\App\Services\SectorInvestment::class)->page($sector))->values();
}
if (in_array($page, ['documents', 'legislation'], true)) {
$query = $this->resources();
@@ -25,9 +25,7 @@ class PublicPortalController extends Controller
if ($slug === 'mercado-financeiro/fintech') $slug = 'fintech';
$sector = Sector::where('slug', $slug)->where('is_active', true)->whereNotNull('published_at')->firstOrFail();
return Inertia::render('portal/services', ['section' => 'sector', 'sector' => $sector->only(['id', 'name', 'slug', 'description', 'short_description']),
'sectorEntry' => array_key_exists($sector->slug, SectorInvestment::CONTENT) ? app(SectorInvestment::class)->publicView($sector) : null,
'opportunities' => \App\Services\SectorOrganization::opportunities($sector)->latest('published_at')->limit(12)->get(['id', 'title', 'slug', 'province', 'summary'])]);
return Inertia::render('portal/services', ['section' => 'sector', ...app(SectorInvestment::class)->page($sector)]);
}
public function opportunity(string $slug): Response
+1
View File
@@ -35,6 +35,7 @@ class Opportunity extends Model
{
$data = parent::toArray();
if (isset($data['description'])) $data['description'] = \App\Services\OpportunityPublicText::description($this, $data['description']);
if ($this->exists && ($proactive = app(\App\Services\ProactiveInvestment::class)->publicData($this))) $data['proactive'] = $proactive;
return $data;
}
+3 -1
View File
@@ -17,7 +17,7 @@ class InvestmentCatalogue
/** @return array<string,mixed> */
public function filters(Request $request): array
{
$filters = $request->validate(['q' => ['nullable', 'string', 'max:120'], 'sector' => ['nullable', 'string', 'max:80'],
$filters = $request->validate(['perspective' => ['nullable', 'in:exists,needs,ideas,opportunities'],'q' => ['nullable', 'string', 'max:120'], 'sector' => ['nullable', 'string', 'max:80'],
'preparation' => ['nullable', \Illuminate\Validation\Rule::in(array_column(OpportunityMaturity::searchOptions(), 'value'))],
'opportunity_id' => ['nullable', 'integer', 'min:1'],
'province_id' => ['nullable', 'uuid'], 'district_id' => ['nullable', 'uuid'], 'admin_post_id' => ['nullable', 'uuid'], 'locality_id' => ['nullable', 'uuid'],
@@ -63,6 +63,8 @@ class InvestmentCatalogue
public function query(array $filters): Builder
{
$query = Opportunity::published()->with('sector:id,name,slug');
if (in_array($filters['perspective'] ?? '', ['exists','needs','ideas'], true)) $query->where('workflow_context->promotional_summary->projection->proactive->group', $filters['perspective']);
elseif (($filters['perspective'] ?? '') === 'opportunities') $query->whereNull('workflow_context->promotional_summary->projection->proactive');
$associated = $this->publicAssociatedIds($filters);
if (($filters['territory_basis'] ?? 'all') === 'direct') {
$query->where(fn ($q) => $q->whereNotNull('opportunities.primary_territory_id')->orWhereExists(fn ($l) => $l->selectRaw('1')->from('opportunity_locations')->whereColumn('opportunity_id', 'opportunities.id')));
+2
View File
@@ -159,6 +159,8 @@ final class InvestorContext
$fields['sector_id'] = (string) $o->sector_id;
$fields['sector'] = $o->sector->name;
}
$proactive = $published ? app(ProactiveInvestment::class)->publicData($o) : ($draft['proactive'] ?? null);
if ($proactive) $zoneAnalysis = ['proactive' => $proactive, 'source_key' => $key, 'source_version' => $version, 'private_source' => !$published];
// Text labels do not establish a canonical territorial correspondence.
if ($o->province) {
$fields['province'] = $o->province;
+8 -5
View File
@@ -21,7 +21,7 @@ class OpportunityManagement
public const MATURITY_FIELDS = ['maturity_level', 'maturity_label', 'maturity_stage', 'maturity_catalogue_version'];
public const PRIVATE_DRAFT_FIELDS = [...self::MATURITY_FIELDS, 'real_estate', 'canonical'];
public const PRIVATE_DRAFT_FIELDS = [...self::MATURITY_FIELDS, 'real_estate', 'canonical', 'proactive'];
/** @return array<string,mixed> */
public function values(Opportunity $record): array
@@ -63,7 +63,7 @@ class OpportunityManagement
abort_if(array_key_exists('organization_id', $input) && $input['organization_id'] !== $existingRecord->organization_id, 403, 'A organização não pode ser alterada por edição.');
}
} elseif ($profileCreation) {
abort_unless($access->canCreate($actor, $input['organization_id'] ?? null, $input['opportunity_category'] ?? ''), 403);
abort_unless(($access->canCreate($actor, $input['organization_id'] ?? null, $input['opportunity_category'] ?? '') || (isset($input['proactive']) && empty($input['organization_id']) && !$access->has($actor, 'auditor') && $access->internalAssignment($actor, $input['opportunity_category'] ?? '') !== null)), 403);
} else {
abort_unless($access->legacyWriteAllowed($actor), 403, 'O papel v1 não usa a criação legada para contornar o seu âmbito.');
}
@@ -92,6 +92,7 @@ class OpportunityManagement
'opportunity_category' => ['nullable', Rule::in(self::CATEGORIES)],
'real_estate' => ['sometimes', 'array'],
'canonical' => ['sometimes', 'array'],
'proactive' => ['sometimes', 'array'],
'estimated_investment_amount' => ['nullable', 'regex:/^\d{1,16}(\.\d{1,2})?$/'],
'estimated_investment_currency' => ['nullable', 'in:MZN,USD,EUR,ZAR'],
'reason' => ['required', 'string', 'min:20', 'max:1000'],
@@ -127,6 +128,7 @@ class OpportunityManagement
$this->check($record, $data['etag']);
abort_if($record->trashed() || $record->status === 'archived', 409, 'Restaure antes de editar.');
}
if (array_key_exists('proactive', $data)) $data['proactive'] = app(ProactiveInvestment::class)->draft($data['proactive'], $record);
$before = $record->getAttributes();
$previousCanonical = $record->exists ? ($this->values($record)['canonical'] ?? []) : [];
$changes = array_intersect_key($data, array_flip([...self::FIELDS, ...self::PRIVATE_DRAFT_FIELDS]));
@@ -170,7 +172,7 @@ class OpportunityManagement
$record->management_version = 1;
$record->estimated_investment_currency = null;
if ($profileCreation) {
abort_unless($access->canCreate($actor, $data['organization_id'] ?? null, $data['opportunity_category'] ?? ''), 403);
abort_unless(($access->canCreate($actor, $data['organization_id'] ?? null, $data['opportunity_category'] ?? '') || (isset($data['proactive']) && empty($data['organization_id']) && !$access->has($actor, 'auditor') && $access->internalAssignment($actor, $data['opportunity_category'] ?? '') !== null)), 403);
$record->owner_user_id = $actor->id;
$record->organization_id = $data['organization_id'] ?? null;
$record->workflow_context = ['policy_version' => PortalProfileAccess::VERSION, 'contributors' => [$actor->id]];
@@ -187,12 +189,12 @@ class OpportunityManagement
$record->management_draft = json_encode([...$previous, ...$changes], JSON_THROW_ON_ERROR);
} else {
foreach ($changes as $key => $value) {
if (in_array($key, ['real_estate', 'canonical', 'maturity_stage', 'maturity_catalogue_version'], true) || (($changes['maturity_catalogue_version'] ?? null) === OpportunityMaturity::VERSION && in_array($key, ['maturity_level', 'maturity_label'], true))) {
if (in_array($key, ['real_estate', 'canonical', 'proactive', 'maturity_stage', 'maturity_catalogue_version'], true) || (($changes['maturity_catalogue_version'] ?? null) === OpportunityMaturity::VERSION && in_array($key, ['maturity_level', 'maturity_label'], true))) {
continue;
}
$record->{$key} = $value;
}
if (isset($changes['maturity_catalogue_version']) || array_key_exists('real_estate', $changes) || array_key_exists('canonical', $changes)) {
if (isset($changes['maturity_catalogue_version']) || array_key_exists('real_estate', $changes) || array_key_exists('canonical', $changes) || array_key_exists('proactive', $changes)) {
// The existing draft JSON holds the versioned catalogue; legacy columns stay intact.
$previous = $record->management_draft ? json_decode($record->management_draft, true, 512, JSON_THROW_ON_ERROR) : [];
$record->management_draft = json_encode([...$previous, ...array_intersect_key($changes, array_flip(self::PRIVATE_DRAFT_FIELDS))], JSON_THROW_ON_ERROR);
@@ -225,6 +227,7 @@ class OpportunityManagement
$record = Opportunity::withTrashed()->whereKey($id)->lockForUpdate()->firstOrFail();
abort_if($record->owner_user_id !== null, 403, 'A v1 exige pedido e decisão de arquivo; não concede exclusão ou restauro ao Promotor.');
$this->check($record, $data['etag']);
if (array_key_exists('proactive', $data)) $data['proactive'] = app(ProactiveInvestment::class)->draft($data['proactive'], $record);
$before = $record->getAttributes();
if ($data['action'] === 'restore') {
abort_unless($record->trashed() || $record->status === 'archived', 409, 'Registo não está eliminado/arquivado.');
+3 -1
View File
@@ -48,7 +48,7 @@ final class OpportunityPromotion
'limitations' => '', 'territory_ids' => $existing ? DB::table('opportunity_locations')->where('opportunity_id', $record->id)->pluck('geo_location_id')->all() : [],
'sector_id' => $record->sector_id];
return ['record' => ['id' => $record->id, 'reference' => $record->reference], 'etag' => app(OpportunityManagement::class)->etag($record),
'initial' => $form, 'publicNow' => $existing && $record->status === 'published',
'proactiveRelations' => app(ProactiveInvestment::class)->publicationRelations($record), 'proactiveKind' => app(OpportunityManagement::class)->values($record)['proactive']['kind'] ?? null, 'proactiveEnabled' => isset(app(OpportunityManagement::class)->values($record)['proactive']), 'proactiveEvidence' => array_values(array_filter(app(OpportunityManagement::class)->values($record)['proactive']['evidence'] ?? [], fn ($e) => $e['access'] === 'public')), 'proactiveOptions' => app(ProactiveInvestment::class)->options(), 'initial' => [...$form, ...($saved['input']['proactive_public'] ?? null ? ['proactive_public' => $saved['input']['proactive_public']] : [])], 'publicNow' => $existing && $record->status === 'published',
'reauthenticationRequired' => ! app(PortalProfileAccess::class)->mfa($actor),
'sectors' => \App\Models\Sector::catalog()->orderBy('name')->get(['id', 'name']),
'territories' => app(InvestmentGeography::class)->publicReferences()->orderBy('name')->get(['id', 'name', 'location_type']),
@@ -63,6 +63,7 @@ final class OpportunityPromotion
'title' => 'required_if:action,disclose|nullable|string|max:255', 'summary' => 'required_if:action,disclose|nullable|string|max:499',
'description' => 'nullable|string|max:6000', 'limitations' => 'nullable|string|max:2500',
'source_reference' => 'nullable|string|max:2000', 'edition' => 'nullable|string|max:150', 'source_date' => 'nullable|date_format:Y-m-d',
'proactive_public' => 'sometimes|array', 'proactive_reviewed' => 'sometimes|boolean',
'sector_id' => ['nullable', 'integer', Rule::in(\App\Models\Sector::catalog()->pluck('id')->all())],
'territory_ids' => 'sometimes|array|max:30', 'territory_ids.*' => 'required|uuid|distinct',
])->validate();
@@ -83,6 +84,7 @@ final class OpportunityPromotion
$projection = ['title' => $text('title'), 'summary' => $text('summary'), 'description' => $body,
'sector_id' => $data['sector_id'] ?? null, 'maturity_label' => 'Em preparação', 'notice' => self::NOTICE,
'territories' => array_map(fn ($p) => ['id' => end($p)->id, 'label' => implode(' / ', array_column($p, 'name'))], $paths)];
if ($data['action'] === 'disclose' && ($proactive = app(ProactiveInvestment::class)->publication($record, $data))) { $projection['proactive'] = $proactive; $projection['description'] .= "\n\n".implode("\n", [$proactive['group'] === 'ideas' ? 'Ideia em preparação' : ($proactive['group'] === 'needs' ? 'Necessidade — '.$proactive['state'] : 'O que existe'), 'Necessidade: '.$proactive['need'], 'Proposta: '.$proactive['proposal'], 'Fundamento: '.$proactive['basis'], 'Limitações: '.$proactive['limitations'], 'Próximo passo: '.$proactive['next_action'], ProactiveInvestment::NOTICE]); }
if ($data['action'] === 'disclose') abort_unless($projection['title'] !== '' && $projection['summary'] !== '', 422, 'Indique título e resumo em texto simples.');
if ($data['action'] === 'withdraw') $projection = [...$projection, ...$record->only(['title', 'summary', 'description', 'sector_id', 'maturity_label'])];
$payload = ['actor_id' => $actor->id, 'record_id' => $record->id, 'etag' => $data['etag'], 'action' => $data['action'],
+3 -1
View File
@@ -245,7 +245,9 @@ class PortalProfileAccess
return $this->canView($actor, $record) && $this->promoterRecordScope($actor, $record) && ! $record->trashed()
&& in_array($this->state($record), ['draft', 'needs_information'], true)
&& $this->scoped($actor, 'promoter', $record->organization_id, $newType ?? $record->opportunity_category)
&& ($this->scoped($actor, 'promoter', $record->organization_id, $newType ?? $record->opportunity_category)
|| ($record->organization_id === null && isset(app(OpportunityManagement::class)->values($record)['proactive'])
&& $this->internalAssignment($actor, $newType ?? $record->opportunity_category) !== null))
&& $this->operational($actor, 'edit', $record->id);
}
+181
View File
@@ -0,0 +1,181 @@
<?php
namespace App\Services;
use App\Models\Opportunity;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Crypt;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException;
/** Analysis in the existing opportunity draft; publication and private preparation remain separate. */
final class ProactiveInvestment
{
public const VERSION = 1;
public const NOTICE = 'A ausência de registo não comprova ausência de oferta. Proximidade não comprova contrato, participação, energia acessível, terra disponível ou benefício fiscal. Necessidade confirmada não comprova viabilidade comercial; hipótese de fornecimento não é encomenda.';
public const GROUPS = ['exists' => 'O que existe', 'needs' => 'Necessidades identificadas', 'ideas' => 'Ideias de investimento'];
public function draft(array $input, ?Opportunity $record = null): array
{
$d = Validator::make(['proactive' => $input], [
'proactive' => 'required|array:version,kind,evidence,need,idea,relations', 'proactive.version' => 'required|integer|in:1',
'proactive.kind' => 'required|in:exists,needs,ideas', 'proactive.evidence' => 'present|array|max:60',
'proactive.evidence.*' => 'array:id,category,purpose,statement,interpretation,source,locator,period,scope,coverage,verified_on,access,document_id',
'proactive.evidence.*.id' => 'required|uuid|distinct',
'proactive.evidence.*.category' => 'required|in:activity,resource,infrastructure,supply,demand',
'proactive.evidence.*.purpose' => 'required|in:local,methodology',
'proactive.evidence.*.access' => 'required|in:internal,public',
'proactive.evidence.*.document_id' => 'nullable|uuid',
'proactive.evidence.*.verified_on' => 'nullable|date_format:Y-m-d|before_or_equal:today',
...collect(['statement','interpretation','source','locator','period','scope','coverage'])->mapWithKeys(fn ($k) => ['proactive.evidence.*.'.$k => 'present|nullable|string|max:4000'])->all(),
'proactive.need' => 'required|array:state,problem,observed_supply,observed_demand,type,clients,evidence_ids,limitations,missing,confirmation',
'proactive.need.state' => 'required|in:hypothesis,confirmed',
'proactive.need.type' => 'nullable|in:quantity,quality,logistics,processing,coordination,support',
...collect(['problem','observed_supply','observed_demand','clients','limitations','missing','confirmation'])->mapWithKeys(fn ($k) => ['proactive.need.'.$k => 'present|nullable|string|max:6000'])->all(),
'proactive.need.evidence_ids' => 'present|array|max:60', 'proactive.need.evidence_ids.*' => 'uuid|distinct',
'proactive.idea' => 'required|array:solution,activity,chain_id,stage,coverage,mode,resources,assumptions,conditions,pending,next_action',
'proactive.idea.chain_id' => ['nullable','uuid',Rule::exists('value_chains','id')->whereNull('deleted_at')],
'proactive.idea.mode' => 'nullable|in:create,expand,associate',
...collect(['solution','activity','stage','coverage','resources','assumptions','conditions','pending','next_action'])->mapWithKeys(fn ($k) => ['proactive.idea.'.$k => 'present|nullable|string|max:6000'])->all(),
'proactive.relations' => 'present|array|max:40',
'proactive.relations.*' => 'array:id,kind,target_id,relation,reference,evidence_ids',
'proactive.relations.*.id' => 'required|uuid|distinct',
'proactive.relations.*.kind' => 'required|in:project,cluster,corridor,park,chain',
'proactive.relations.*.target_id' => 'required|uuid',
'proactive.relations.*.relation' => 'required|in:documented,hypothesis,proximity',
'proactive.relations.*.reference' => 'required|string|max:4000',
'proactive.relations.*.evidence_ids' => 'present|array|max:60', 'proactive.relations.*.evidence_ids.*' => 'uuid|distinct',
])->validate()['proactive'];
$ids = array_column($d['evidence'], 'id');
foreach ([$d['need'], ...$d['relations']] as $row) {
if (array_diff($row['evidence_ids'], $ids)) $this->fail('evidence', 'Seleccione apenas evidências desta análise.');
}
$seen = [];
foreach ($d['evidence'] as $e) {
$key = mb_strtolower(trim(($e['source'] ?? '').'|'.($e['locator'] ?? '').'|'.($e['statement'] ?? '')));
if (trim($key, '| ') !== '' && isset($seen[$key])) $this->fail('evidence', 'A mesma evidência já foi registada; edite a entrada existente.');
$seen[$key] = true;
if (! empty($e['document_id'])) $this->document($record, $e['document_id'], $e['access'] === 'public');
}
$seen = [];
foreach ($d['relations'] as $row) {
$target = app(OpportunityClassification::class)->targets($row['kind'])->where('id', $row['target_id'])->exists();
if (! $target) $this->fail('relations', 'Referência existente indisponível; não foi criada outra empresa, zona ou estrutura.');
$key = $row['kind'].'|'.$row['target_id'];
if (isset($seen[$key])) $this->fail('relations', 'A referência já está nesta análise; reúna o fundamento na entrada existente.');
$seen[$key] = true;
if ($row['relation'] === 'documented' && ! $row['evidence_ids']) $this->fail('relations', 'Relação documentada exige evidência seleccionada; mantenha hipótese ou proximidade quando não demonstrada.');
}
if ($d['kind'] !== 'exists' && $d['need']['state'] === 'confirmed') {
foreach (['problem','observed_supply','observed_demand','type','clients','confirmation'] as $field) {
if (trim($d['need'][$field] ?? '') === '') $this->fail('need.'.$field, 'Confirmação exige observação e fundamento concretos; pode guardar como hipótese.');
}
if (! $d['need']['evidence_ids']) $this->fail('need.evidence_ids', 'Uma hipótese não é confirmada sem evidência seleccionada.');
foreach ($d['evidence'] as $e) {
if (! in_array($e['id'], $d['need']['evidence_ids'], true)) continue;
if ($e['purpose'] !== 'local') $this->fail('need.evidence_ids', 'Uma referência metodológica internacional não confirma oferta ou procura local. Preserve a hipótese e recolha evidência local.');
foreach (['statement','source','locator','period','scope','coverage','verified_on'] as $field) {
if (trim($e[$field] ?? '') === '') $this->fail('evidence', 'Evidência da necessidade confirmada: faltam facto, fonte, localizador, período, abrangência, cobertura ou data de verificação.');
}
}
}
return $d;
}
private function document(?Opportunity $record, string $id, bool $public): void
{
$row = $record?->exists ? DB::table('opportunity_documents as link')->join('documents as d','d.id','=','link.document_id')
->where('link.opportunity_id', $record->id)->where('d.id', $id)->whereNull('link.deleted_at')->first(['d.data_classification','d.status','d.malware_scan_status','d.sha256','d.malware_scanned_sha256','d.rights_status','link.payload','link.deleted_at']) : null;
if (! $row) $this->fail('evidence', 'Documento não associado à ficha neste âmbito; reutilize o gestor documental existente.');
if ($public && ($row->data_classification !== 'public' || $row->status !== 'active' || $row->malware_scan_status !== 'clean' || $row->sha256 !== $row->malware_scanned_sha256 || $row->rights_status === 'restricted' || data_get(json_decode($row->payload, true), 'visibility') !== 'public')) {
$this->fail('evidence', 'Documento interno, restrito ou sem disponibilização pública: preserve a evidência interna, sem a divulgar.');
}
}
/** No private field is copied into the public summary automatically. */
public function publication(Opportunity $record, array $input): ?array
{
$private = app(OpportunityManagement::class)->values($record)['proactive'] ?? null;
if (! $private) {
if (isset($input['proactive_public'])) $this->fail('publication', 'Prepare a análise antes de divulgar esta síntese.');
return null;
}
$d = Validator::make($input, [
'proactive_reviewed' => 'required|accepted',
'proactive_public' => 'required|array:group,state,need,proposal,basis,limitations,next_action,evidence_ids,chain_id,stage,resources,assumptions,conditions,relation_ids',
'proactive_public.group' => 'required|in:exists,needs,ideas',
'proactive_public.resources'=>'nullable|string|max:2500', 'proactive_public.assumptions'=>'nullable|string|max:2500', 'proactive_public.conditions'=>'nullable|string|max:2500',
'proactive_public.relation_ids'=>'sometimes|array|max:40', 'proactive_public.relation_ids.*'=>'uuid|distinct',
'proactive_public.state' => 'required|in:hypothesis,confirmed', 'proactive_public.chain_id' => 'nullable|uuid', 'proactive_public.stage' => 'nullable|string|max:1000',
'proactive_public.need'=>'required_unless:proactive_public.group,exists|nullable|string|max:2500', 'proactive_public.proposal'=>'required_if:proactive_public.group,ideas|nullable|string|max:2500',
...collect(['basis','limitations','next_action'])->mapWithKeys(fn ($k) => ['proactive_public.'.$k => 'required|string|max:2500'])->all(),
'proactive_public.evidence_ids' => 'present|array|max:60', 'proactive_public.evidence_ids.*' => 'uuid|distinct',
])->validate()['proactive_public'];
$d += ['need'=>'','proposal'=>''];
if ($d['group'] !== $private['kind']) $this->fail('publication', 'O grupo público deve corresponder à análise guardada.');
$proofs = [];
foreach ($d['evidence_ids'] as $id) {
$e = collect($private['evidence'])->firstWhere('id', $id);
if (! $e || $e['access'] !== 'public') $this->fail('publication', 'Não pode divulgar evidência interna nem a sua fonte indirectamente. Redija uma síntese independente ou seleccione evidência pública autorizada.');
if (! empty($e['document_id'])) $this->document($record, $e['document_id'], true);
$proofs[] = array_intersect_key($e, array_flip(['id','category','purpose','statement','source','locator','period','scope','coverage','verified_on']));
}
if ($d['group'] !== 'exists' && $d['state'] === 'confirmed' && ($private['need']['state'] !== 'confirmed' || array_diff($private['need']['evidence_ids'], $d['evidence_ids']))) $this->fail('publication', 'Confirmação pública exige a necessidade confirmada e o fundamento público seleccionado; pode divulgar uma hipótese com limitações explícitas.');
if (!empty($d['chain_id']) && !app(OpportunityClassification::class)->targets('chain')->where('id', $d['chain_id'])->exists()) $this->fail('publication', 'Cadeia de valor pública indisponível.');
$relations=[];
foreach ($d['relation_ids'] ?? [] as $id) {
$r=collect($private['relations'])->firstWhere('id',$id);
if (!$r || array_diff($r['evidence_ids'],$d['evidence_ids'])) $this->fail('publication','A relação exige o fundamento público seleccionado; nenhuma referência interna é copiada.');
$target=app(OpportunityClassification::class)->targets($r['kind'])->where('id',$r['target_id'])->first(['id',OpportunityClassification::TARGETS[$r['kind']][1].' as name']);
if (!$target) $this->fail('publication','Referência pública da relação indisponível.');
$relations[]=['kind'=>$r['kind'],'target_id'=>$r['target_id'],'label'=>$target->name,'relationship'=>$r['relation'],'evidence_ids'=>$r['evidence_ids'],'basis'=>$d['basis']];
}
// Catch literal reuse of private statements, interpretations, references and document identities.
$publicText = mb_strtolower(implode(' ', [...array_filter($input, 'is_scalar'), ...array_filter($d, 'is_scalar')]));
foreach ($private['evidence'] as $e) {
if ($e['access'] === 'public') continue;
foreach (['statement','interpretation','source','locator','document_id'] as $key) {
$value = trim($e[$key] ?? '');
if (mb_strlen($value) >= 10 && str_contains($publicText, mb_strtolower($value))) $this->fail('publication', 'O resumo contém informação de evidência interna. Reveja a síntese e a divulgação indirecta antes de publicar.');
}
}
return [...array_map(fn ($v) => is_string($v) ? trim(strip_tags($v)) : $v, $d),
'version' => self::VERSION, 'relations'=>$relations, 'evidence' => $proofs, 'notice' => self::NOTICE,
'availability_confirmed' => false, 'economic_validation' => false];
}
public function publicData(Opportunity $record): ?array
{
$p = data_get($record->workflow_context, 'promotional_summary.projection.proactive');
return is_array($p) && Opportunity::published()->whereKey($record->id)->exists() ? $p : null;
}
public function publicationRelations(Opportunity $record): array
{
return collect(app(OpportunityManagement::class)->values($record)['proactive']['relations'] ?? [])->map(function($r){
$label=app(OpportunityClassification::class)->targets($r['kind'])->where('id',$r['target_id'])->value(OpportunityClassification::TARGETS[$r['kind']][1]);
return $label?['id'=>$r['id'],'label'=>$label,'relationship'=>$r['relation']]:null;
})->filter()->values()->all();
}
public function history(?Opportunity $record): array
{
if (!$record) return [];
return DB::table('audit_events')->where('source_system', 'opportunity-management')->where('after_data->record_id', $record->id)->orderByDesc('occurred_at')->orderByRaw("(after_data->>'version')::integer DESC")->limit(30)->get()->map(function ($event) {
$entry=json_decode($event->after_data,true);$snapshot=json_decode(Crypt::decryptString($entry['snapshot']),true);
$draft=json_decode($snapshot['management_draft'] ?? '{}',true);$need=$draft['proactive']['need'] ?? null;
return $need ? ['at'=>$event->occurred_at,'version'=>$entry['version'],'state'=>$need['state'],'problem'=>$need['problem'],'confirmation'=>$need['confirmation'],'evidence_ids'=>$need['evidence_ids']] : null;
})->filter()->values()->all();
}
public function options(?Opportunity $record = null): array
{
return ['documents' => $record ? DB::table('opportunity_documents as l')->join('documents as d','d.id','=','l.document_id')->where('l.opportunity_id',$record->id)->whereNull('l.deleted_at')->whereNull('d.deleted_at')->get(['d.id','d.file_name as title'])->all() : [], 'groups' => self::GROUPS, 'references' => collect(['project','cluster','corridor','park','chain'])->mapWithKeys(fn ($kind) => [$kind => app(OpportunityClassification::class)->targets($kind)->orderBy(OpportunityClassification::TARGETS[$kind][1])->limit(300)->get(['id', OpportunityClassification::TARGETS[$kind][1].' as name'])])->all()];
}
private function fail(string $key, string $message): never
{
throw ValidationException::withMessages(['proactive.'.$key => $message]);
}
}
+11
View File
@@ -34,6 +34,17 @@ final class SectorInvestment
return [...$sector->only(['id', 'name', 'slug']), 'href' => SectorOrganization::href($sector->slug)];
}
/** Public detail shared by the catalogue and the individual sector page. */
public function page(Sector $sector): array
{
return [
'sector' => $sector->only(['id', 'name', 'slug', 'description', 'short_description']),
'sectorEntry' => $this->publicView($sector),
'opportunities' => SectorOrganization::opportunities($sector)->latest('published_at')
->limit(12)->get(['id', 'title', 'slug', 'province', 'summary']),
];
}
public function publicView(Sector $sector): array
{
$query = SectorOrganization::opportunities($sector);
@@ -353,3 +353,818 @@ Fecho do delta privado na homologação: candidata `fb4e7d89` integrada em `65ed
Actualização do mesmo requisito: os 28 rascunhos têm edição, leitura privada, prévia sem guardar, recuperação e publicação/retirada pela interface em QA, preservando originais, origem e revisões. Seis testes/1.000 asserções, TypeScript e build passaram; publicação positiva apenas em transacções revertidas. Pacote privado v2 preparado com 28 originais e proveniência; não transportado nem publicado na homologação. Guia, permissões existentes, lacunas de imagens, dependências da entrega e reversão na secção «Legado — edição e leitura dos 28 rascunhos em QA» do manual. Pedido funcional expresso da Tempo; hash de âmbito, prévia e controlo de versão são escolhas técnicas, sem novo papel/aprovador. Conserva o saldo de 20 públicos aceites e dois originais incompletos, sem repetir provas ou fechar a integração integral.
Referência do acervo legado, 22/10/2026: a lista única `v2/auditoria-portal/legado-correspondencia-integral.md` e o CSV existente reconciliam 50 identidades (20 publicados, 28 por integrar no destino, um vazio, um sem título). 20/20 páginas conferidas por HTTP anónimo/identidade/origem; cartões de Turismo observados no destino. Os 28 restantes avançaram para rascunhos internos QA, com ClamAV real e repetição idempotente, sem publicação. Recibo e limites no manual, secção «Legado — correspondência integral e avanço privado QA». As duas lacunas editoriais foram confirmadas no original. Não fecha a integração integral nem substitui revisão editorial por prova HTTP; nenhuma alteração activa nesta passagem.
## 25/10/2026 — L5: dispensas e convenção demonstradas em QA
Base de código `2b33a1c3`, ramo `codex/irpc-l5-reliefs-qa-20261025`. O último relatório de instalação mantém o portal nessa entrega; este candidato não executa instalação. O inventário anterior de L3, ISPC, câmbio, fontes e provas aceites é reutilizado. Comparação do delta: sem alteração nesses módulos, em schema/migrações, configuração ou permissões; sem escrita na base activa. As correcções de codificação que tinham atingido trechos históricos durante a preparação foram retiradas do delta; os registos anteriores são conservados.
**Executável:** dispensa 68(d) para serviços/uso de equipamento 67(1)b/g com natureza por conta, titular sujeito a IRPC relativamente ao rendimento; dispensa 68(f) para rendas de sociedade de gestão de imóveis próprios fora da transparência fiscal 6(1)c; limite convencional de 10% sobre royalties/uso de equipamento qualificados PT–MZ, não digitais, titular residente convencional em Portugal, beneficiário efectivo, sem EP em Moçambique, devedor residente em Moçambique e montante sem excesso por relações especiais. As condições são dados documentados do caso, sem aprovador adicional. A selecção de regra não é substituída por texto livre ou taxa manual. Outros ramos continuam separados.
Reutilizados contraparte, residência/EP, documento, qualificação, montante e conversão da linha. Diploma, artigo, período, documentos e condições ficam no mesmo livro e no histórico. Alterar a prova invalida apenas a correspondência do resultado afectado. A dispensa produz retenção zero justificada, apresentada como dispensa, sem isentar o rendimento nem gerar crédito anual. Informação insuficiente, negativa, período incompatível ou artigo divergente fica indeterminada, sem zero/taxa reduzida presumidos. A existência de prova de entrega numa linha dispensada pede reconciliação sem apagar o pagamento.
**Demonstração:** Wayfinder `wayfinder:generate --with-form`, pelo wrapper QA guardado `tools/irpc-reliefs-qa.php routes`; TypeScript passou; compilação completa QA passou. Nove testes novos e cinco verificações dirigidas de compatibilidade IRPC passaram. API privada: um teste/17 verificações, base `simulator_fiscal_delta_20261021_test`, loopback55441, transacção com rollback. Resultados 68(d),68(f), convenção e informação insuficiente recuperados com documentos/histórico. Relatório de retenções, exportação de preparação e dossier financeiro conferidos a partir da recuperação da API. Corrigida a associação da secção «IRPC — retenções» à secção financeira do dossier: a linha existia, mas era omitida nessa apresentação. UI sintética do componente real demonstra cálculo, gravação/recuperação local e relatório; esta prova local é distinta da API privada.
**Reprodução:** gerar routes/actions com `php tools/irpc-reliefs-qa.php routes`; executar `node --test tests/frontend/irpc-reliefs.test.mjs` (produz a amostra sintética); executar `php tools/irpc-reliefs-qa.php test`. Usar PHP8.5/Node24 e dependências existentes. `tsc --noEmit`; compilação `INVESTMOZ_QA_BUILD=1 vp build` no ramo QA. Os módulos gerados são artefactos locais, sem edição manual ou commit.
**Saldo na mesma matriz:** restantes alíneas68, categorias digitais/residentes não correspondidas, outras convenções/Estados e casos com EP, dividendos/juros ou excesso por relações especiais mantêm correspondência própria. Juros de mora, rectificações, agregação, rubricas/CER e preenchimento do MRFTA permanecem discriminados. O cálculo convencional não declara cumpridas as formalidades de accionamento, recepção ou aceitação AT. Não são transportados formulários portugueses21-RFI para obrigações moçambicanas. Pendências condicionam apenas os casos dependentes. L5, IRPC e IRPS não estão integralmente concluídos. L3/ISPC/câmbio não foram retestados; as suas provas são reutilizadas. Entrega conjunta preparada apenas para os recortes demonstrados. Instalação futura segue o procedimento Git e os controlos de destino/backup/restauro já existentes.
Recibo: `docs/investmoz/simulations/irpc-l5-reliefs-qa-20261025.json`; provas locais em `outputs/irpc-reliefs/`.
## 25/10/2026 — dispensas IRPC e convenção PT–MZ instaladas pelo Git
Instalada `ce746d88`, com `2b33a1c3` preservada como release anterior. Backup fresco2026-10-25T18:00:39Z:174 tabelas e369 ficheiros/configuração;restauro isolado em contentor sem rede/55441 passou. Quatro ficheiros de execução conferidos,28 protegidos L3/ISPC/câmbio e29 originais preservados. Schema,permissões e configuração iguais;zero migrações/importações. As172 tabelas de negócio mantêm checksums;apenas cache operacional e sessões anónimas das verificações foram reconciliadas. O mínimo de espaço do instalador foi reposto pelo arquivo e verificação de dependências de5 releases antigas,sem tocar na actual/anterior nem apagar dados/backups.
Manifesto público/revisão servida,8marcadores compilados e simuladorHTTP200 conferidos. Provas QA aceites reutilizadas;CI habitual do procedimento Git passou. Sem ampliar a cobertura:68(d/f) e royalties/uso de equipamento PT–MZ nos casos efectivamente demonstrados. Juros,MRFTA e restantes casos continuam na mesma matriz;L5 permanece parcial. Seguimento em QA separado,sem instalar novos cálculos. Recibo:`irpc-l5-reliefs-delivery-20261025.json`.
## 25/10/2026 — juros e preenchimento MRFTA: incremento QA após ce746d88
O portal mantém a entrega instalada `ce746d88`, com `2b33a1c3` preservada;recibo de instalação `irpc-l5-reliefs-delivery-20261025.json`. Seguimento isolado em `codex/irpc-juros-mrfta-qa-20261025`,sem nova instalação. Reutilizadas as provas aceites;29 originais e29 ficheiros protegidos conferidos por hash. Sem delta de schema,configuração ou permissões.
**Preenchimento:** quadros1–7 do MRFTA de preparação,um mês/ano;identidade fiscal reutilizável entre livros sem sobrescrever edições nem misturar NUIT distintos. Base,taxa,imposto,documentos e entregas vêm do cálculo IRPC guardado. Agrupamento apenas da mesma rubrica/taxa/CER. Retenções sofridas,dispensas e outros períodos ficam separados. CER requer referência aplicável;os números de campos do M/39 antigo não são convertidos em códigos de receita. Rubricas digitais/especiais desconhecidas e múltiplas taxas na mesma rubrica permanecem discriminadas. Quadros8/9 não são assinados/preenchidos pelo portal. Exportação HTML de preparação,não alteração do PDF oficial nem declaração submetida.
**Juros:** Decreto9/2008,25/35,PDF6/8,p121/123 identifica MAIBOR12meses+2p.p.;BM documenta a descontinuidade da publicação. Não foi obtido parâmetro fiscal sucessor aplicável2026;MIMO/Prime não o substituem. Implementada transcrição de juros compensatórios de liquidação documentada,com período,data,montante e referência;ou ausência de atraso quando entrega integral e datas/prazo documentados coincidem. Informação insuficiente não vira zero. Juros de mora continuam por implementar. O subtotal do principal permanece disponível;total do formulário fica indeterminado enquanto faltarem juros,CER,completude ou situação de outras rubricas (IRPS/autónoma),sem isenções ou créditos presumidos. A completude é um dado da preparação,não novo aprovador organizacional.
**Prova do delta:**12 testes novos+1 de apresentação IRPC;TypeScript e compilação QA passaram. API privada1teste/14verificações com rollback no55441;preparação→gravação→recuperação→relatório/dossier. UI real em exemplo sintético:preparação,gravação/recuperação local,informação insuficiente e download HTML;prova API separada. CER999 é fictício de teste,não taxa/código oficial activado. Exemplo:principal20000MZN,entrega3000,juros documentados500,total17500;alterar provas conserva histórico e desactualiza a preparação. Não foram repetidas manualmente suites L3/ISPC/câmbio.
**Saldo:**cálculo automático dos juros e taxa aplicável2026,juros de mora,catálogo CER integral,rubricas digitais/especiais,mistura de taxas e obrigações IRPS/autónomas fora do recorte. Limita apenas as parcelas dependentes;L5/IRPC/IRPS continuam parciais. Recibo `irpc-juros-mrfta-qa-20261025.json`;provas locais `outputs/irpc-mrfta/`.
Reprodução QA: `php tools/irpc-mrfta-qa.php routes`; `node --test tests/frontend/irpc-mrfta.test.mjs`; `php tools/irpc-mrfta-qa.php test`. PHP8.5,Node24,dependências existentes;alvo e identidadeQA guardados antes de fornecedores/testes.
## 25/10/2026 — entrega5fa64bc0 instalada;seguimento restrito a juros/CER em QA
Instalada pelo Git a revisão exacta `5fa64bc0`,com `ce746d88` preservada como release anterior. Backup fresco2026-10-25T18:28:38Z;174tabelas e369ficheiros/configuração;restauro isolado sem rede/55441 passou. Quatro ficheiros de execução,29protegidos e30originais conferidos. Schema,permissões e configuração iguais;zero migrações/importações. As172tabelas de negócio mantêm checksums;apenas cache operacional e sessões anónimas da instalação/verificação foram reconciliadas. Revisão/manifesto públicos,8marcadores compilados e simuladorHTTP200 passaram. Provas aceites reutilizadas,sem nova ronda manual;CI habitual do instalador passou.
Cobertura instalada:preparação por período,registo de juros documentados e relatório/exportação MRFTA. Registar não significa calcular automaticamente;CER/rubricas desconhecidos continuam identificados sem preenchimento presumido. Não houve submissão ou aceitação AT. Seguimento isolado apenas de juros automáticos eCER/rubricas;L5continua parcial,L3/ISPC/câmbio preservados. Recibo:`irpc-mrfta-delivery-20261025.json`.
## 25/10/2026 — seguimento QA restrito: juros automáticos e casos CER/rubricas
Portal instalado em `5fa64bc0`,com `ce746d88` preservada;recibo `irpc-mrfta-delivery-20261025.json`. Novo ramo `codex/irpc-interest-cer-qa-20261025`,sem instalação. Não foram reabertos outros saldos L5.
**Juros:** nova aritmética racional diária por parâmetros documentados do caso:taxa anual final,fonte/fundamento fiscal,vigência na data de liquidação,base anual,arredondamento do total e ocorrência. Nenhum valor vem pré-definido. Intervalos começam no dia posterior ao prazo documentado;entregas reduzem a base após o seu dia e o pagamento integral pára encargos. Contagem por ano/base365/366 e arredondamento só conforme convenção preenchida com referência. Definitiva e por conta retida cobertas neste recorte;por conta não retida e mora mantêm regra própria. Sem perfil completo,juros indeterminados e principal preservado. A taxa10%,base365 e convenções dos testes são fictícias,sem activação de parâmetro fiscal2026. O registo de liquidação documentada da entrega instalada mantém significado e histórico.
**CER/rubricas:** separação estável por período,rubrica,taxa e CER,com documentos e referências. Fichas de trabalhoHTML independentes conservam as pendências globais;não são declarações autónomas,anexos oficiais nem uma taxa média. Teste integrado distingue retenções20%/10% e CERfictícios999/998;juros por perfil permanecem demonstráveis,mas o total do formulário continua indeterminado pela transposição de rubricas distintas. Ausência de código ou referência continua identificada,sem preenchimento presumido. Nenhum catálogo CER oficial foi acrescentado.
**Compatibilidade/provas:** campos novos adicionais conservam os modos conhecidos pelo leitor5fa64bc0. Prova só de leitura/gravação exacta do novo payload nesse leitor:retenções actuais e nova preparação histórica,sem executar novamente cálculos antigos. Preservados31ficheiros de execução e30originais por hash. TypeScript,buildQA e13testes novos passaram;API1teste/19verificações com rollback em55441. UI:parâmetro fictício explícito,sem taxa→indeterminado,gravação/recuperação,relatório e download de casos20%/999 e10%/998. Relatório do dossier a partir da recuperação API. Provas aceites L3/ISPC/câmbio e5fa64bc0 reutilizadas;sem nova ronda manual das suites antigas.
**Saldo,apenas os mesmos dois pontos:** (1)corresponder fonte/parâmetro fiscal vigente2026 e convenções aplicáveis,além dos ramos mora/por conta não retida fora desta aritmética;(2)corresponder catálogo CER/rubricas ainda pendentes e procedimento oficial para taxas/códigos distintos. O inventário oficial AT189documentos foi consultado por metadados,não relido integralmente;nenhuma taxa/código foi inferido de rascunho,número de campo,agregado orçamental,MIMO ouPrime. L5 continua parcial. Recibo `irpc-interest-cer-qa-20261025.json`;provas em`outputs/irpc-interest-cer/`.
Reprodução do delta em QA: `php tools/irpc-interest-cer-qa.php routes`;`node --test tests/frontend/irpc-interest-cer.test.mjs`;`php tools/irpc-interest-cer-qa.php test`. Dependências existentes,PHP8.5/Node24;alvo QA guardado antes dos fornecedores/testes.
## 25/10/2026 — esclarecimentos concretos para a AT (AUD-SIM-INT02, L5 parcial)
Esta discriminação desenvolve os mesmos dois pontos; não cria outra matriz nem reabre provas aceites. Base instalada: `5fa64bc0`; funcionalidade demonstrada em QA: `acf8ec3c`. Os exemplos abaixo são perguntas de aplicação, não parâmetros ou códigos oficiais. Não foram enviados à AT por este registo.
| Dúvida na mesma matriz | Parâmetro ou correspondência exacta em falta / esclarecimento a obter | Exemplo para acompanhar o esclarecimento | Comportamento enquanto falta |
|---|---|---|---|
| J1 — taxa e vigência | Valor anual final aplicável na data de liquidação em 2026, incluindo eventual acréscimo; série/diploma sucessor da referência MAIBOR 12 meses + 2 p.p., fonte, início e fim de vigência (`annualRate`, `rateSource`, `fiscalBasis`, `validFrom`, `validTo`). | Retenção definitiva de 7 300 MZN, prazo documentado 20/11/2026 e liquidação em 30/11/2026: qual taxa anual final usar? Os 10% do ensaio são fictícios. | Sem taxa predefinida; não substituir por MIMO/Prime. Perfil completo permite apenas simulação pelos dados introduzidos. |
| J2 — contagem diária | Base anual aplicável: 365, 366 ou dias efectivos por ano (`dayBasis`, `dayBasisRef`); incidência do dia da entrega parcial e divisão de períodos entre anos. | Mesmo principal de 7 300 MZN, entrega de 3 650 em 25/11 e liquidação em 30/11: a redução começa em 26/11? Num intervalo 31/12/2027–02/01/2028, qual denominador em cada ano? | Motor demonstra dia posterior ao prazo, dia da entrega incluído e redução no dia seguinte; só usar como pressuposto de simulação até esclarecer a aplicação. |
| J3 — arredondamento | Método e momento oficiais: total ou parcela/dia, cêntimos, metade por excesso ou outra convenção (`rounding`, `roundingRef`). | 7 300 MZN × taxa fictícia 10,0025% × 10/365 = 20,005 MZN: declarar 20,00 ou 20,01? Arredondar só o total ou cada segmento? | As duas opções do motor são convenções explícitas de simulação; outra convenção mantém o caso por implementar. |
| J4 — retenção por conta não efectuada | Regra e datas específicas dependentes da declaração/liquidação anual, base e limite temporal; não equiparar a retenção efectuada ou definitiva (`retention`, `occurrenceRef`). | Retenção por conta de 7 300 MZN não efectuada em Novembro/2026: até que evento anual se contam juros e sobre que montante? | Ramo indeterminado; não herda a fórmula do ramo demonstrado. |
| J5 — mora | Taxa, fundamento, início/fim, base após pagamentos e articulação com juros compensatórios, evitando duplicação. | Liquidação documentada de compensatórios, com saldo de imposto de 3 650 MZN ainda não pago após o prazo: quando começa a mora e sobre que parcelas? | Mora não calculada; registo de liquidação documentada mantém-se independente. |
| C1 — CER de capitais e prediais por conta | Código CER exacto e referência/versão para cada rubrica “Taxa normal — Rendimentos de capitais e mais valias” e “Taxa normal — Rendimentos prediais”. | Dois pagamentos no mesmo mês: juros de financiamento e renda de imóvel, ambos com retenção por conta: quais CER respectivos? São códigos distintos? | CER por identificar; nome da rubrica já correspondido não prova o código. |
| C2 — CER das quatro rubricas liberatórias | Código CER exacto e referência/versão por rubrica: actividade intelectual/industrial e informações; uso de equipamento; aplicação de capitais e rendimentos prediais; comissões/intermediação/prestação de serviços. | No mesmo período, royalties, aluguer de equipamento, juros e comissão a não residentes: indicar o CER de cada natureza e eventual distinção adicional. | Cada natureza permanece separada; não reutilizar números de campos do M/39 como CER. |
| C3 — rendimentos digitais/especiais | Rubrica MRFTA e CER exactos para cada categoria não correspondida, conforme qualificação fiscal documentada; distinguir de serviços comuns. | Pagamento a não residente por serviço digital já qualificado no livro IRPC: em que rubrica/CER deve ser transcrito? Um serviço comum tem a mesma correspondência? | Categoria sem correspondência continua pendente; não copiar para serviços comuns por aproximação. |
| C4 — taxas diferentes na mesma rubrica | Forma oficial de transcrever várias taxas: linhas adicionais, anexo ou outro procedimento, com indicação dos campos; confirmar se o CER varia com regime/convenção. | Royalties de base 10 000 MZN à taxa interna de 20% e outros de 10 000 à taxa convencional demonstrada de 10%, no mesmo mês: como apresentar bases/impostos sem taxa média? | Duas fichas de trabalho; total oficial permanece indeterminado enquanto depender dessa transposição. |
| C5 — códigos diferentes na mesma rubrica | Forma oficial de conservar códigos distintos no mesmo período/rubrica e regra de totalização/entregas; obter os códigos reais antes de preencher. | Duas parcelas agrupáveis por rubrica mas com CER distintos segundo documentos do caso: uma ou várias linhas/guias? Nos ensaios, 999/998 são apenas marcadores fictícios. | Separar período/rubrica/taxa/CER; não inventar declarações autónomas nem reconhecer marcadores como oficiais. |
**Entrega funcional independente:** aritmética pelos pressupostos explicitados, reconciliação de entregas, gravação/recuperação/relatório e fichas separadas podem acompanhar a entrega. Interface e exportações identificam simulação e CER introduzido sem validação por catálogo; referência digitada não equivale a confirmação fiscal. Não activar taxa ou catálogo global por esta entrega. A ausência de dados conserva indeterminação e principal. As respostas da AT poderão completar apenas as células correspondentes, com fonte e vigência, sem outra pesquisa genérica ou nova aprovação inventada.
**Preservação:** L3, ISPC, câmbio, `ce746d88` e `5fa64bc0` conservam provas aceites; nenhum caso aceite foi reaberto. L5 permanece parcial. O presente delta de apresentação/documentação não altera schema, API, permissões, originais ou regras de retenção.
## 25/10/2026 — L5 operacional no âmbito demonstrado; entrega 7a11c4ef
Instalado pelo Git `7a11c4ef8f06ef149eb0488be3cd0749dc609bd0`, sobre `5fa64bc0`, sem força, migrações ou importações. Backup fresco em 25/10/2026 19:14:23 UTC, restaurado em PostgreSQL isolado (rede nenhuma/porta55441):174 tabelas por contagem/checksum. Conferidos4ficheiros do delta,31protegidos,30originais e369ficheiros/configuração persistentes. Schema,roles/grants e permissões conservados.172tabelas de negócio iguais;cache/sessões reconciliadas com reinício da fila,throttle e sessões anónimas da verificação. Versão5fa64bc0 conservada como anterior;L3,ISPC,câmbio e provas aceites preservados. Arquivadas e verificadas dependências de8versões antigas para respeitar espaço mínimo,sem eliminar fontes,dados ou backups nem modificar versões actual/anterior.
Revisão/manifest públicos,8marcadores compilados,4assets e simuladorHTTP200 conferidos. Pipeline normal:1teste/3106asserções,59testes/317asserções,872testesfrontend,tipo/build;sem outra ronda manual das provas aceites. Recibo:`irpc-interest-cer-delivery-20261025.json`.
**L5 fica operacional apenas no âmbito demonstrado**, incluindo preparação por período,registo de juros documentados,simulação por pressupostos explícitos e fichas separadas porCER/rubrica/taxa. Não confirma fiscalmente juros nem converte códigos provisórios em correspondências oficiais. As dez dúvidas J1–J5/C1–C5 da secção anterior acompanham a reunião com a AT;permanecem pendentes e não foram enviadas por esta operação. Sem informação nova,não reabrir a pesquisa desses pontos. Não declararL5 integralmente concluído.
**Sequência autorizada:**L6—IRPC normal,começando pela ponte do resultado financeiro aos ajustamentos documentados. Retenções/créditos anuais,amortizações,perdas e colecta conservam desenvolvimento próprio;nenhuma pendênciaL5 bloqueia o primeiro recorte independenteL6.
## 25/10/2026 — L6 iniciado em QA: primeiros ajustamentos ao resultado financeiro
Base instalada7a11c4ef;L5 operacional apenas no âmbito demonstrado. Primeiro recorteL6 reutiliza a ponte financeira reconciliada por oportunidade,receitas/custos discriminados e resultado antes de imposto. Corresponde explicitamente12meses aJan–Dez2026,MZN,sujeito residente no regime geral fora de transparência/regimes especiais. Projecção com pressupostos,não demonstração contabilística confirmada. Art17(1)é enquadramento da ponte,não equivalência automática do resultado antes de imposto ao lucro tributável.
Implementados acréscimos integrais36(1)c de multas/encargos por infracções sem origem contratual e juros compensatórios já incluídos no custo de origem. Documento/linha,qualificação,montante e inclusão têm suporte/pressuposto expresso. Não classifica juros comerciais nem multas contratuais por aproximação,não importa juros simuladosL5 como despesa efectiva. Limites por custo da origem e duplicação documental previnem dupla contagem. Encargo já excluído não é acrescentado de novo. Lacuna limita a respectiva parcela;acréscimos independentes continuam disponíveis,resultado parcial agregado indeterminado se houver parcela não resolvida.
Exemplo sintético:resultado financeiro6480MZN,multa100 e juros compensatórios20 incluídos;acréscimos120,resultado parcial6600. Sem suporte da multa:apenas20 demonstrados,resultado parcial indeterminado. Lucro tributável,matéria colectável e imposto permanecem indeterminados em todos os casos. Outros ajustamentos,custos/variações patrimoniais,amortizações,perdas,deduções/colecta,créditos anuais eM20/M22 seguem por recortes próprios;EP/regimes especiais,outra moeda/exercício/horizonte não abrangidos.
Prova do delta:7testes novos;APIprivada1teste/19asserções comrollback naQA55441;routes/actions gerados pelo procedimentoWayfinder;TypeScript/buildQA passaram. UI real:cálculo,gravação/recuperação local,relatório,informação insuficiente e download;API demonstrada separadamente,dossier gerado da recuperaçãoAPI. LivroL6 separado mantém payloadL5 e restante histórico;alterar plano/entradas torna resultado histórico sem o apagar.32ficheiros anteriores protegidos e30originais sem alteração;integração mínima emsimulation-form/project-dossier/project-dossier-report. Provas aceites não repetidas. Recibo:`irpc-l6-adjustments-qa-20261025.json`;QA isolada,sem instalaçãoL6.
Fonte adicional necessária apenas paraL6:exemplar oficialAT intitulado19/2009 contém tambémLei20/2009;PDF4/p272(16),36(1)a–i mantidas ealíneasj–n aditadas,conferido visualmente. Lei4/2012PDF2/3 e19/2013PDF1/2 mantêm36(1)c. Não reabre as dez dúvidasL5,que ficam paraAT até informação nova. L5 eL6 não integralmente concluídos.
## 25/10/2026 — L6: percurso delimitado até ao lucro tributável demonstrado em QA
Base instalada `7a11c4ef`; primeiro recorte QA `664c88c8` preservado. A continuação reutiliza o plano reconciliado, o exercício, a oportunidade e os ajustamentos existentes. Não obriga a reintroduzir os montantes financeiros. Âmbito: projecção de Janeiro a Dezembro de 2026, MZN, sujeito residente no regime geral, com referência expressa de que o cenário cobre o sujeito passivo/exercício completo. Uma oportunidade parcial não se transforma automaticamente no total da empresa.
Cada linha do resultado exige qualificação ordinária e suporte: proveitos do exercício (18/20), custos remanescentes indispensáveis e documentados (22), sem outras exclusões/limites declarados. Os acréscimos 36(1)c reutilizam documentos e parcelas já registados. Seis grupos conservam a situação das variações patrimoniais positivas/negativas fora do resultado, outras correcções de rendimentos/custos, diferenças de periodização e operações especiais. **Valor conhecido (incluindo zero), ausência declarada com suporte e informação em falta são estados distintos.** Ausência não pode apagar uma origem financeira positiva ou descartar um montante já preenchido. Um valor conhecido não zero sem tratamento implementado permanece visível e impede apenas o fecho dependente, sem ser aplicado por presunção.
No caso ordinário delimitado, resultado financeiro + acréscimos fundamentados = lucro tributável simulado quando a conferência anual está completa e os outros efeitos são expressamente ausentes ou de valor conhecido zero. Exemplo sintético: 6480 + multa100 + juros compensatórios120 = 6700 MZN. Os 120 são um custo/pressuposto qualificado já incluído na origem; não são juros automaticamente calculados ou fiscalmente confirmados por L5. Falta de prova da variação patrimonial negativa mantém o lucro indeterminado, conservando resultado6480 e acréscimos220. Variação conhecida500, depreciação positiva ou juros financeiros remanescentes mantêm correspondência específica pendente. Sem acréscimos, uma conferência completa pode conservar o resultado financeiro; resultados negativos não são convertidos em zero nem em crédito/perda reportável.
Prova do delta: 9 testes novos; API privada 1 teste/38 verificações, criação → alteração com If-Match → recuperação, com rollback na QA isolada55441. Wayfinder gerou routes/actions; TypeScript e buildQA passaram. UI real: cálculo, gravação/recuperação local, valor conhecido zero, ausência, informação em falta, contradição e exportação HTML. Relatórios/dossiers dos casos conhecido e incompleto gerados a partir da recuperação efectiva da API. Versão2 adicional mantém o snapshot/resultado1 de664c88c8 legível e actual sem o recalcular; mudanças nas entradas desactualizam apenas o novo resultado e conservam histórico. Preservados33ficheiros anteriores de execução e31originais por hash;integrações anteriores de formulário/dossier não alteradas neste delta. Provas aceites L3/ISPC/câmbio/L5 reutilizadas, sem nova ronda manual.
**Preparação conjunta para entrega pelo Git:** primeiro recorte664c88c8 e continuação até lucro tributável, sobre7a11c4ef, com pacote/manifest e delta conferido. Não instalado nem integrado em main por esta preparação. Backup/restauro fresco e conferência do destino fazem parte da instalação posterior; não reutilizar como fresco o backup da entregaL5. Recibo `irpc-l6-taxable-profit-qa-20261025.json`; provas `outputs/irpc-l6-profit/` na QA isolada.
Matéria colectável, perdas reportadas, deduções, colecta, créditos de retenção e M20/M22 continuam fora deste percurso; L6 não está integralmente concluído. L5 permanece operacional no âmbito demonstrado; J1–J5/C1–C5 ficam para a AT e só limitam os casos efectivamente dependentes. Nenhuma nova pesquisa de taxas/CER de L5 foi feita.
## 25/10/2026 — entrega conjunta L6 até lucro tributável instalada:5e02c23a
Instalado pelo Git `5e02c23af863485f6881e409c8704ec7e7573cc9`, sobre `7a11c4ef`, incluindo o primeiro recorte664c88c8. Backup fresco de25/10/2026 19:38:10UTC,restauro isolado sem rede na porta55441:174tabelas conferidas por contagem/checksum. Conferidos6ficheiros do delta,33protegidos,31originais e369ficheiros/configuração persistentes. Schema,roles/grants e permissões iguais.172tabelas de negócio preservadas;cache/sessões reconciliadas com reinício da fila,throttle e sessões anónimas da verificação.7a11c4ef conservado como versão anterior. Arquivadas/verificadas dependências de4versões antigas para margem de espaço,sem eliminar fontes,dados ou backups nem modificar as versões actual/anterior.
Revisão/manifest servidos,10marcadores compilados,4assets e simuladorHTTP200 conferidos. Pipeline normal:1teste/3106asserções,59testes/317asserções,888testesfrontend,tipo/build;sem outra ronda manual das provas aceites. Recibo:`irpc-l6-profit-delivery-20261025.json`.
**Disponível no âmbito demonstrado:**resultado financeiro6480+acréscimos220=lucro tributável simulado6700MZN;estados conhecidos,ausência declarada e informação em falta preservados. **6700MZN não é imposto a pagar.** Matéria colectável,deduções/perdas e colecta não são concluídas por esta instalação. L6 permanece parcial;dúvidasL5J1–J5/C1–C5 só limitam casos efectivamente dependentes. Continuação independente emQA para matéria colectável,sem repetir pesquisa ou provas aceitesL5/L3/ISPC/câmbio.
## 25/10/2026 — L6 matéria colectável: perdas próprias e deduções delimitadas em QA
Base instalada `5e02c23a`, com lucro tributável simulado6700MZN; não é imposto a pagar. A continuação reutiliza esse resultado e a identidade fiscal já disponível na mesma oportunidade, mediante acção expressa que conserva edições. Recorte: sujeito residente no regime geral,2026,método declarativo/directo,perdas fiscais próprias em exercícios anuais ordinários. CIRPC15(1)a/15(2–4) e41(1–7),PDF5/p768(59) ePDF12/p768(66),conferidos nos originais aceites;cadeia de alterações existente reutilizada. Sem novos originais ou pesquisa dos pontosL5.
Livro de perdas por exercício e sujeito:montante fiscal apurado/corrigido,utilizações anteriores,saldo disponível e utilização proposta deste ano,com documentos e completude. Não usa perda contabilística como fiscal. Confere cinco exercícios ordinários posteriores,manutenção/alteração da actividade/objecto no termo do exercício,regime geral e saldo corrigido. Métodos indirectos,períodos especiais/curtos,transparência/isenção parcial,transferências/fusão41-A e correcções pendentes ficam fora do recorte. Expiração/exclusão conhecidas não são apagadas;pedido positivo contra perda excluída exige reconciliação. Utilização proposta é expressa,sem FIFO obrigatório,percentagem inventada ou saldo negativo;excesso sobre saldo/lucro mantém base indeterminada. Simular/gravar não consome o saldo oficial nem actualiza utilizações anteriores.
Exemplo sintético:lucro6700;perda2021apurada1000/utilizada200/saldo800/proposta800;perda2024apurada3000/utilizada500/saldo2500/proposta1500. Dedução2300,**matéria colectável simulada4400MZN**,saldos aritméticos0/1000. **Imposto a pagar permanece indeterminado.** Perda ordinária2020 expira após2025;2021pode ser usada em2026 no recorte demonstrado. Sem perdas/benefícios,ausência expressa e suportada pode conservar base6700;informação em falta não ézero. Benefício conhecido positivo é conservado com referência,mas não subtraído sem regra/condições/limite específicos. Deduções à base15(4) são distintas de efeitos já conferidos no lucro e de créditos à colecta/retenções. Resultado actual negativo permanece conhecido,sem basezero ou reporte automático neste recorte.
Prova do delta:10testes novos;APIprivada1teste/42verificações,criação→alteração comIf-Match→recuperação,rollback naQA55441. Routes/actions peloWayfinder,tipo/buildQA passaram. UI:cálculo4400,gravação/recuperação local,alteração expressa de utilização para700→base4500,repetição sem consumo,sobreutilização recusada,download,informação em falta e benefício positivo conservado sem subtracção. Dossier/HTML gerados da recuperação efectiva daAPI. Versão3 opcional conserva resultado2 actual e históricos1/2;alteração de entradas desactualiza apenas o novo resultado.37ficheiros anteriores de execução e31originais preservados por hash. Provas aceites reutilizadas,sem nova ronda manual. Recibo:`irpc-l6-taxable-base-qa-20261025.json`;QA isolada,sem instalação deste incremento.
L6 continua parcial. Colecta/imposto,créditos anuais,M20/M22,benefícios positivos e casos fora do recorte mantêm desenvolvimento próprio. As dúvidasL5J1–J5/C1–C5 só limitam casos efectivamente dependentes;nenhuma taxa de juros ou CER provisório foi promovido a confirmação fiscal.
## 25/10/2026 — L6 colecta normal demonstrada em QA; entrega conjunta com a matéria colectável
Portal mantém `5e02c23a`. A continuação parte da QA `b8d45796` e reutiliza a matéria colectável actual, sem reintroduzir montantes. No recorte de sujeito residente em regime normal/MZN, exercício anual de01/01/2026 a31/12/2026, o enquadramento explícito do artigo61(1) aplica a taxa geral32%. A fonte/versão, período, classificação e suporte/pressuposto do caso são guardados. Campo por identificar ou caso especial não recebe taxa geral por aproximação; a matéria colectável conhecida permanece disponível.
**Sequência demonstrada:**lucro tributável simulado6700 → matéria colectável simulada4400 → colecta simulada4400×32%=1408MZN → **saldo final a pagar ou recuperar indeterminado, âmbitoL8**. Retenções, pagamentos e créditos do fecho anual não são abatidos nem reconciliados nesta etapa. Colecta não é saldo final. O campo legado `tax` continua nulo e o novo modelo guarda `colecta` separadamente; `finalBalance` mantém pagar/recuperar nulos, não zero.
Taxa32% conferida no CIRPC Lei34/2007,PDF17/p768(71). Lei4/2012 altera61(2); Lei20/2022PDF1/p2731 mantém61(1) e delimita medidas temporárias61(2) até31/12/2025; Lei12/2025PDF18/20 não altera61(1) e distingue61-A. Taxas reduzidas, benefícios, tributação autónoma e mais-valias continuam com tratamento próprio, mesmo se uma percentagem coincidir. Nenhuma extensão temporal/benefício foi inferida. A aritmética é racional exacta; eventual fracção de cêntimo é conservada sem arredondamento fiscal inventado. Não preenche/submeteM20/M22.
Prova do delta:8testes novos;APIprivada1teste/40verificações com criação→alteraçãoIf-Match→recuperação e rollback naQA55441. Wayfinder gerou routes/actions;TypeScript e buildQA passaram. UI real:base reutilizada,colecta1408,taxa/período/enquadramento visíveis,sequência ordenada,gravação/recuperação local,download e casos especiais/informação em falta sem taxa presumida. Dossier/HTML dos casos conhecido e incompleto gerados da recuperação efectiva daAPI. Versão4 opcional conserva versões1/2/3 e o resultado3 actual sem recálculo;mudanças nas entradas desactualizam só o novo resultado e conservam histórico.39ficheiros anteriores daQA e37do portal preservados,31originais sem alteração. Provas aceites reutilizadas,sem outra ronda manual. Recibo:`irpc-l6-colecta-qa-20261025.json`.
**Preparação conjunta compatível:**matéria colectávelb8d45796 e colecta normal neste candidato,base5e02c23a,6ficheiros de execução no delta conjunto. PacoteGit/provas/manifest conferidos apóscommit;sem integração emmain ou instalação nesta preparação. Instalação futura mantém procedimento de destino autenticado,backup/restauro fresco e conferência do delta. L6 continua parcial. Benefícios e casos especiais permanecem explícitos;L8 conserva o fecho anual e as dúvidasL5 só limitam os casos efectivamente dependentes.
## 25/10/2026 — entrega conjunta matéria colectável/colecta instalada:2f684e59
Instalado pelo Git `2f684e59846187f3fb8a338d9d6f6a08cadb4d0d`, incluindo a matéria colectávelb8d45796, sobre `5e02c23a`, sem força, migrações ou importações. Backup fresco de25/10/2026 20:05:19UTC;restauro em base isolada sem rede/porta55441:174tabelas conferidas por contagem/checksum. Conferidos6ficheiros do delta,37protegidos,31originais e369ficheiros/configuração persistentes. Schema,roles/grants e permissões iguais;172tabelas de negócio preservadas. Cache/sessões reconciliadas com reinício da fila,throttle e sessões anónimas da verificação.5e02c23a permanece disponível como versão anterior. Arquivadas/verificadas dependências de4versões antigas para margem de espaço,sem eliminar fontes,dados ou backups nem modificar as versões actual/anterior.
Revisão/manifest públicos,11marcadores compilados,4assets e simuladorHTTP200 conferidos. Pipeline normal:1teste/3106asserções,59testes/317asserções,906testesfrontend,tipo/build. Provas aceites reutilizadas,sem outra ronda manual. Recibo:`irpc-l6-colecta-delivery-20261025.json`.
**Disponível no âmbito demonstrado:**lucro tributável simulado6700→matéria colectável4400→colecta normal32%/2026=1408MZN. **1408MZN não é saldo final a pagar.** A pagar/a recuperar continuam indeterminados emL8. Benefícios/casos especiais anuais sãoL7. O saldo concreto deL6 que justifica «parcial» fica discriminado na secção seguinte;esta actualização substitui,para o estado actual,as pendências genéricas de lucro/base/colecta anteriores já entregues,preservando-as apenas como histórico.
## 25/10/2026 — saldo concreto de L6 após a entrega 2f684e59
Esta discriminação actualiza **AUD-SIM-INT02 na mesma matriz**, com o âmbito L6/L7/L8 já registado no plano consolidado e a leitura do código de `2f684e59`. Não cria outro lote, matriz ou backlog. O estado «L6 parcial» decorre das lacunas funcionais abaixo; **não decorre de faltar o saldo anual de L8 ou os tratamentos de L7**. Os exemplos são casos de fronteira para desenvolvimento, não novos cálculos fiscais confirmados.
**Concluído no âmbito demonstrado e a preservar:** plano financeiro reconciliado → acréscimos36(1)c → lucro tributável6700 → perdas próprias ordinárias2300 → matéria colectável4400 → colecta normal32%/2026=1408MZN. Inclui conhecido/zero/ausência/falta de informação, limites de utilização, gravação/recuperação, histórico, relatório/exportação e indeterminação dos casos dependentes. Não repetir estas provas para fechar os pontos seguintes, excepto se o delta os afectar.
| Saldo que continua em L6 | Evidência concreta no código entregue | Exemplo do caso ainda não coberto | Critério concreto de fecho |
|---|---|---|---|
| Outros ajustamentos ordinários: admissibilidade de custos e correcções aos proveitos | `irpc-normal.ts`, `NormalAdjustment.rule` e `calculateNormal`: apenas multas não contratuais e juros compensatórios36(1)c; `other` fica fora do recorte. `irpc-normal-profit.ts` não aplica `incomeCorrections`/`expenseCorrections` conhecidos não zero. | Encargo de terceiro de250MZN com qualificação36(1)b, ou despesa não documentada36(1)g, incluído no resultado; a correcção não tem regra executável neste livro. A eventual tributação autónoma é outra operação, emL7. | Corresponder a regra geral e condições de cada categoria incluída, calcular acréscimo/dedução/exclusão com sinal e origem, evitar dupla contagem e demonstrar reflexo no lucro, base e colecta. A tributação autónoma que possa coexistir pertence aL7. |
| Dedutibilidade dos juros financeiros ordinários | `irpc-normal-profit.ts`, `closeNormalProfit`: qualquer remanescente não zero de `interest_expense` mantém pendência; só os compensatórios integralmente acrescidos estão cobertos. | Juros de financiamento comercial de120MZN, distintos de juros compensatórios, com finalidade/custo documentados. | Qualificar a parcela ordinária, dedutibilidade e correcção aplicável, conservar os montantes reconhecidos/pagos separados e fechar o lucro sem a equiparar a infracção. Relações especiais/benefícios e regras especiais seguemL7; taxa de juros compensatóriosL5 só é dependência se esse cálculo for efectivamente usado. |
| Reintegrações/amortizações fiscais e diferença face à contabilidade | `irpc-normal-profit.ts`: `depreciation` positivo bloqueia o fecho; não existe mapa fiscal de activos/quotas nesta família de módulos. | Depreciação contabilística120MZN com quota fiscal do activo ainda por corresponder. | Reutilizar activo, base e datas; corresponder método/taxa/limites e afectação ordinários, calcular quota fiscal e diferença para o resultado; manter mapas por activo/exercício e histórico. Incentivos, majorações e regimes especiais de activos seguemL7. |
| Variações patrimoniais e periodização ordinárias de montante não zero | `irpc-normal-profit.ts`, `profitTopics`/`closeNormalProfit`: `positivePatrimonial`, `negativePatrimonial` e `timing` conhecidos não zero conservam valor e impedem o fecho; ausência/zero suportados são o caminho demonstrado. | Variação500MZN fora do resultado, ou diferença temporal300MZN entre reconhecimento contabilístico e exercício fiscal, com natureza concreta documentada. | Corresponder natureza/ano/regra ordinária e decidir inclusão, exclusão ou ajustamento com sinal; impedir reaplicação em dois exercícios; demonstrar cálculo→gravação→recuperação→relatório. Operações especiais/benefícios do tópico `special` não são saldo deL6. |
| Resultado fiscal negativo do próprio exercício | `irpc-normal-base.ts`, `calculateNormalBase`: lucro negativo é conservado, mas a base fica indeterminada; o livro de perdas só admite exercícios anteriores ao de utilização. | Resultado fiscal actual−500MZN conhecido; não é uma perda anterior dedutível a si própria. | Tratar a situação da base/colecta nesse exercício e preparar a perda fiscal própria com origem/ano para utilização futura, conforme regra aplicável, sem confundir ausência de lucro, falta de informação, crédito ou consumo do saldo oficial. Perdas anteriores ordinárias já demonstradas continuam aceites. |
| Extensões do âmbito normal previstas no L6 original | `irpc-normal.ts` fixa12meses/ano civil2026/residente/MZN; `irpc-normal-base.ts` exige exercícios anuais ordinários; a entrada deL6 no plano original inclui exercício fiscal e residência/EP. | Caso de estabelecimento estável sob regime geral, ou período fiscal normal diferente do calendário/horizonte do plano; plano noutra moeda ainda sem reconciliação fiscal anualMZN. | Delimitar os casos normais a admitir, imputação de resultados ao sujeito/EP, datas/períodos e reconciliaçãoMZN usando o câmbio já entregue; demonstrar o percurso dependente. Não reimplementar câmbio, exigir pesquisa de todos os anos históricos ou aplicar automaticamente32% fora do período correspondido. Benefícios/convenções/regimes específicos pertencem aos lotes próprios. |
| Representação fiscal da colecta com fracção de cêntimo | `irpc-normal-assessment.ts` conserva o racional e assinala `centExact:false`; não aplica regra fiscal de arredondamento/transcrição. | Base0,01MZN×32%=0,0032MZN exactos; o caso1408MZN não tem esta ambiguidade e continua válido. | Identificar e executar a convenção aplicável à colecta/representação do formulário, mantendo o exacto e a rastreabilidade do valor transcrito. Não importar por analogia arredondamento de prestações/pagamentosL8 nem criar uma regra por defeito. |
| Correspondência dos dados de L6 aos exemplares M/20/M/22 | A família `irpc-normal*` produz mapaHTML/dossier e exclui expressamente correspondência/transcrição oficial; o âmbito original deL6 inclui M/20/M/22 e diferenças de ediçãoPDF/XLSX. | Resultado, correcções, perdas, base4400 e colecta1408 existem no mapa de trabalho; os respectivos campos/anexos aplicáveis dos exemplares não estão correspondidos no motor. | Cotejar os exemplares já inventariados e mapear apenas os dados deL6 aos campos/versões efectivamente aplicáveis, com prova de preenchimento/recuperação. Os campos de retenções,pagamentos,créditos e saldo final sãoL8. Submissão electrónica/aceitaçãoAT não são presumidas como parte desta correspondência. |
**Encaminhado a L7, sem manter L6 parcial por essa razão:** benefícios/isenções da determinação anual do IRPC, taxas reduzidas/cooperativas, tributação autónoma de despesas e mais-valias61-A, operações especiais, perdas transmitidas/fusão41-A e segregação de regimes especiais. Uma dedução positiva de benefício à base continua sem aplicação no recorte entregue, mas o trabalho substantivo desse benefício éL7, não uma dedução livre nem um novo saldo genérico deL6. A integração posterior usa as interfaces/versionamento já existentes e afecta só os casos dependentes.
**Encaminhado a L8, sem manter L6 parcial por essa razão:** retenções sofridas a imputar ao fecho anual, PPC/PEC e outros pagamentos, créditos/deduções à colecta, dupla tributação quando aplicável, limites/transportes respectivos, reconciliação e saldo final a pagar ou recuperar/calendário. **1408MZN é colecta; pagar e recuperar continuam indeterminados.** Não abater parcelas L5 nem promover os seus códigos/taxas provisórios ao fecho anual nesta entrega.
**Informação do caso, distinta de desenvolvimento em falta:** falta de documento, NUIT, completude anual, montante, prova de saldo ou qualificação dentro de uma regra já implementada mantém o caso indeterminado, mas não constitui por si só outra tarefa deL6. O mesmo vale para a ausência de uma nova prova de uma funcionalidade já aceite. Não exigir nova aprovação genérica das fontes oficiais, novo aprovador ou repetição deL3/ISPC/câmbio/L5. Anos não incluídos no recorte temporal não se tornam automaticamente um projecto de cobertura histórica integral.
**Ordem de continuação delimitada:** ajustamentos ordinários/juros financeiros e amortizações; depois variações/periodização e resultado negativo; ampliar apenas os casos normais concretamente abrangidos e concluir a representação/correspondência dos dados deL6. Cada fecho deve demonstrar o delta e substituir a pendência correspondente nesta mesma linha/nota. Não há estimativa nova nem declaração deL6 integralmente concluído nesta revisão documental.
## 25/10/2026 — L6: três conjuntos compatíveis em QA sobre 2f684e59
Actualização de **AUD-SIM-INT02**, na matriz existente. O percurso instalado em `2f684e59` permanece aceite: lucro6700 → perdas2300 → matéria colectável4400 → colecta1408MZN; saldo anual continua indeterminado emL8. Este incremento é **QA, sem instalação**. Não repete as provas de L3, ISPC, câmbio ou L5; conserva a fotografia4 e o histórico sem recalcular a aceitação anterior.
| Conjunto | Delta executável demonstrado | Efeito e prova nova | Pendência concreta que subsiste |
|---|---|---|---|
| 1 — ajustamentos, juros, variações e periodização | Acréscimos36(1)a/b/g com parcela incluída e origem reconciliada; juros financeiros22c de exploração documentados, sem capitalização/relações/limites especiais; entradas de capital21a e distribuições24c externas ao resultado sem efeito fiscal; variações positivas21 e negativas22/24 ordinárias; especialização18(1) de custo/proveito entre exercício corrente e seguinte. Documento/linha únicos entre mapas, sinal e soma bruta por tema conferidos. | Resultado financeiro6240 + acréscimos anteriores220 + imposto de terceiro250 + variação positiva200 − negativa50 + custo de2027 contabilizado em2026 de100 + diferença de amortização20 = lucro6980. Juros reconhecidos240, compensatórios acrescidos120, remanescente ordinário120; pagamentos continuam separados. Informação insuficiente mantém os efeitos independentes visíveis e impede somente os totais dependentes. | Correcções ordinárias ainda sem regra: encargos e limites36(1)e/f/h/i/n, provisões28/29, operações plurianuais19 e componentes de exercícios anteriores18(2). Juros capitalizáveis/relações especiais e limites exigem o tratamento próprio; não são aceites por simples selecção de juros ordinários. A tributação autónoma que possa coexistir pertence aL7. |
| 2 — amortizações e perda corrente | Decreto72/2013: quotas anuais constantes, custo/residual/acumulado, limite do saldo e vida útil; tabelaII/grupo3/item9 computadores25% e9.1 servidores20%, sem taxa específica da tabelaI prevalecente. Soma da depreciação contabilística por activo reconciliada com o plano; nenhum efeito de mapa incompleto aplicado. Perda corrente separada das perdas anteriores, sem auto-reporte. | Servidor500 ×20%=100 fiscal, depreciação contabilística120 → acréscimo20. Alterar quota/categoria, exceder vida útil ou não reconciliar a origem mantém o lucro dependente indeterminado. Outro exemplo: resultado fiscal−3820 → perda corrente3820 → base0/colecta0 apenas com suporte e conferência completos, sem dedução de perdas anteriores a si própria nem criação de saldo oficial. | Restante catálogo sectorial/genérico de activos, taxas reduzidas dentro dos limites, duodécimos, quotas decrescentes, bens usados/reavaliados, activos intangíveis e recuperação de quotas contabilizadas em anos anteriores. Não declarar toda a amortização fiscal concluída por estes dois itens. |
| 3 — âmbitos, representação e M20/M22 | EP no regime geral, resultado completo exclusivamente imputável ao estabelecimento; ano civil ou período anual diferente autorizado7(2)/comunicado7(3), correspondência dos12 meses e termo em2026/MZN. Valores racionais exactos, sem arredondamento fiscal inventado. M22 campos259/260,269/270,276/277/278 e300 conforme aplicação; M20A.1 quadro4 contas6.1.1/6.2/6.5/6.9 com valores contabilísticos próprios. |6980 − perdas2300 = base4680; ×32%=colecta1497,60MZN, não saldo a pagar. EP com período01/07/2025–30/06/2026 demonstrado; período curto incompatível fica pendente. API privada recupera os quatro casos calculado/falta/perda/EP e os relatórios respectivos. M20 inteiro e M22 ao cêntimo apenas quando a representação é exacta; fracções conservadas e marcadas sem transcrição pronta. | Períodos curtos/transição/liquidação e reconciliação fiscal anual de planos noutra moeda (motor cambial aceite preservado). Representação fiscal de fracções de unidade/cêntimo por corresponder. No M20 faltam discriminação vendas/serviços, fornecimentos/outros gastos, imposto e resultado líquido; no M22 faltam a reconciliação do campo200 e detalhe dos restantes ajustamentos. Divergência delimitada de edições: folha M20A.1 do XLSX remete ao campo201/quadro8 do M22; PDF inventariado utiliza200/quadro10. Bloqueia esse transporte, não os outros campos. |
**Provas apenas do delta:** 14 testes frontend; API privada1 teste/78 asserções com transacção revertida na base QA127.0.0.1:55441; geração de routes/actions pelo procedimento existente, TypeScript e build; interface real com edição, taxa/categoria incompatível, falta de juros, gravação/recuperação, download e perda corrente; relatórios/dossier construídos a partir dos dados recuperados. Recibo `docs/investmoz/simulations/irpc-l6-compatible-sets-qa-20261025.json`; pacote/bundle em `outputs/irpc-l6-sets`. Sem alteração de schema, API, configuração, permissões ou dependências.
**Âmbitos próprios preservados:** L7 conserva benefícios, isenções, taxas reduzidas, tributações autónomas e operações especiais; L8 conserva retenções, pagamentos, créditos e saldo final. M22 campo302 não é preenchido só com a parcela normal300, nem os campos309–316 são preenchidos com zeros presumidos. As dez dúvidas deL5 continuam na mesma matriz, sem nova pesquisa e bloqueando apenas dependências efectivas. L6 continua parcial exclusivamente pelas pendências concretas da tabela; nenhum desses pontos reabre o percurso instalado.
## 25/10/2026 — conjunto L6 a2de7259 entregue pelo Git
Instalado `a2de725901c308fb2ac2bc3d72181ab50ef46b7a` sobre `2f684e59`, pelo procedimento Git existente, sem força, migrações ou importações. Backup fresco `2026-10-25T20:34:03Z` e restauro isolado sem rede/porta55441: **174tabelas** conferidas por contagem/checksum; **369ficheiros/configuração** preservados. Conferidos **8ficheiros do delta,38protegidos e31originais**; schema,roles/grants e permissões iguais. Tabelas de negócio preservadas; cache/sessões reconciliadas com os eventos operacionais da entrega. `2f684e59` permanece como versão anterior. Dependências de5versões antigas arquivadas e verificadas para espaço, sem modificar as versões actual/anterior, fontes, dados ou backups.
Revisão/manifest público,10marcadores compilados e simuladorHTTP200 conferidos. Pipeline normal concluído; as provas QA aceites foram reutilizadas, sem nova ronda manual. **Disponível no âmbito demonstrado: lucro6980 → base4680 → colecta1497,60MZN. O saldo final a pagar/recuperar continua indeterminado emL8.** Também preservados o caso de perda corrente e as distinções conhecido/ausência/falta de informação, os períodos/EP demonstrados e a preparação parcialM20/M22. Recibo:`docs/investmoz/simulations/irpc-l6-sets-delivery-20261025.json`.
O estado «QA sem instalação» da nota anterior é histórico para este conjunto. **L6 continua parcial pelos seis grupos concretos da secção seguinte**, cada um com condição de resolução e bloqueio delimitado. L7 eL8 mantêm os seus âmbitos.
## 25/10/2026 — saldo curto de L6 após o conjunto a2de7259
Actualização de **AUD-SIM-INT02 na mesma matriz**, sem novo lote ou backlog. O percurso financeiro → ajustamentos documentados → lucro tributável → matéria colectável → colecta está demonstrado; no caso novo,6980 →4680 →1497,60MZN. A colecta não é saldo final a pagar. As pendências abaixo substituem a enumeração genérica anterior para o saldo actual deL6; não revogam as provas aceites.
| Caso ou correspondência pendente | Condição concreta de resolução | Limite do bloqueio |
|---|---|---|
| Custos com limites36(1)e/f/h/i/n, provisões28/29, obras plurianuais19 e componentes de exercícios anteriores18(2). | Implementar a regra de cada categoria a partir do diploma aplicável: parcela contabilizada, limite/base próprios, documentação e exercício de imputação; demonstrar o efeito com sinal nos totais. Nos exercícios anteriores, distinguir o que era imprevisível/manifestamente desconhecido no encerramento. | Só a categoria ou parcela ainda sem regra; os acréscimos36a/b/c/g, juros ordinários e periodização corrente/seguinte demonstrados permanecem utilizáveis. Eventual tributação autónoma pertence aL7. |
| Amortizações além dos itensII/3/9 e9.1: restantes tabelas, quotas inferiores, duodécimos, quotas decrescentes, bens usados/reavaliados/intangíveis e recuperação de quotas anteriormente tributadas. | Corresponder categoria/tabela prevalecente, método, entrada em uso, vida útil, base depreciável e quotas contabilizadas/fiscais acumuladas; implementar o cálculo e a reconciliação que impeçam dupla dedução. | Só os activos/métodos afectados. Computadores25% e servidores20% no recorte anual constante e a perda corrente já demonstrada não são reabertos. |
| Períodos curtos, transição/liquidação e reconciliação fiscal anual de plano noutra moeda. | Ligar os meses e factos de início/cessação/transição ao período fiscal; implementar os efeitos sobre quotas e contagem das perdas. Para outra moeda, identificar os eventos/datas e a regra de conversão anual aplicável, reutilizando o motor cambial aceite. | Só o período ou origem cambial sem reconciliação. Os períodos anuais emMZN e oEP com imputação documentada conservam o cálculo demonstrado. |
| Representação fiscal de fracções de unidade/cêntimo. | Identificar a instrução de representação/arredondamento da edição/campo aplicável ou obter esclarecimento específico daAT; então implementar essa regra conservando o valor racional original. O exemplarM20A.1 pede meticais sem centavos, mas isso não determina sozinho como arredondar uma fracção. | Só a transcrição do valor não exactamente representável. Os cálculos racionais e os valores exactamente representáveis permanecem disponíveis; não é necessária nova validação genérica das fontes. |
| M20A.1: discriminação de vendas/serviços, fornecimentos/outros gastos, imposto sobre o rendimento e resultado líquido; M22: campo200 e detalhe dos restantes ajustamentos. | Reutilizar a origem financeira, recolhendo apenas a classificação em falta e o imposto contabilizado; reconciliar resultado antes/depois de imposto e cada ajustamento com a edição aplicável. Não usar a colecta simulada como imposto contabilizado. Completar as correspondências por campo e demonstrar a recuperação/exportação. | Só os campos sem correspondência. M20A.1/Q4 contas6.1.1/6.2/6.5/6.9 e M22 campos259/260,269/270,276/277/278 e300 conservam a preparação parcial demonstrada. |
| Transporte de resultado entre ediçõesM20/M22: XLSXM20A.1 remete para201/quadro8; PDFM22 inventariado usa200/quadro10. | Identificar a edição do formulário de destino e corresponder explicitamente o resultado líquido a essa edição; registar a remissão corrigida sem substituir os exemplares ou reutilizar fórmulas antigas por aproximação. | Só esse transporte entre edições; não bloqueia os cálculos independentes nem os outros campos já correspondidos. |
**L6 continua parcial por estes casos concretos.** Documento ou parâmetro em falta dentro de regra implementada é uma pendência do caso, não outra tarefa genérica deL6. Juros capitalizáveis, relações especiais e tratamentos especiais conservam o enquadramento próprio, sem presumir que satisfazem o recorte de juros ordinários.
**L7** mantém benefícios, isenções, taxas reduzidas, tributações autónomas e operações especiais. **L8** mantém retenções, pagamentos, créditos e saldo final a pagar/recuperar. A ausência desses tratamentos não reabre o percurso normal entregue nem justifica, por si, «L6 parcial». A divergência documental não autoriza preencher M22 campo302 ou309–316 com zeros presumidos. As dez dúvidas deL5 permanecem válidas e bloqueiam apenas os casos efectivamente dependentes; sem nova pesquisa ou repetição das provas aceites.
## 26/10/2026 — L6: custos com limites, provisões e periodização em QA
Actualização de **AUD-SIM-INT02 na mesma matriz**, sobre o conjunto instalado `a2de7259`. **Novo incremento em QA, sem instalação.** O percurso e as provas já aceites deL6/L3/ISPC/câmbio/L5 foram reutilizados; não foram novamente executados os testes funcionais anteriores. A fotografia5 continua actual sem activar os novos campos; a fotografia6 guarda estes mapas e conserva o resultado anterior no histórico.
**Reutilização e resultado demonstrado:** resultado financeiro6240MZN, acréscimos anteriores220 e mapas anteriores520 conservados; novos ajustamentos de custos/provisões/periodização+350 e obra−600 → **lucro tributável6730MZN**. Dedução expressa das perdas anteriores2300 → **matéria colectável4430MZN**; taxa normal32% → **colecta1417,60MZN**. Não é saldo final a pagar. Nenhum saldo oficial de provisões/perdas é consumido, nem é alterada declaração ou história anterior.
| Categoria e condição no exercício anual com termo em2026 | Parcela aceite, limite e ajustamento demonstrados | Informação insuficiente ou caso separado |
|---|---|---|
| Ajudas de custo/deslocação em viatura própria36(1)e: parcelas facturadas e tributadas emIRPS identificadas sem sobreposição. Representação36(1)f/36(3) ordinária documentada. | Ajudas100:facturadas20,tributadas e não facturadas20;remanescente60 →30 acrescido/70 aceite. Representação50 →40 acrescido/10 aceite. Zero conhecido nos parâmetros é distinto de campo vazio. | Parcela facturada/tributada em falta impede a aceitação dependente; não presumir ausência deIRPS. Eventual tributação autónoma continuaL7. |
| Publicidade ordinária36(1)n,Lei20/2009: receita declarada reconciliada com vendas normais e completude anual das parcelas. | Um limite anual partilhado de1% de12000=120. Caso com duas parcelas100+100:aceites60+60,acréscimo80. A repartição proporcional é apenas aritmética de simulação, não uma ordem fiscal obrigatória. | Campanha de lançamento com horizonte superior a um ano não recebe este tratamento por aproximação: periodização36-A e articulação do limite permanecem por implementar. |
| Encargos com viaturas36(4), combustível36i e aluguer sem condutor36h, distinguindo categoria/serviço público/locação na actividade normal. | Outros encargos100 de passageiros sem excepção:aceite50/acréscimo50. Combustível50 não sujeito a36(4),com40 comprovados no activo/locação e consumo normal:aceite40/acréscimo10. Renda100 no caso documentado de excepção36(4),quota não aceite36h de20:aceite80/acréscimo20; a quota é reutilizada do suporte e não apurada automaticamente. | Se há simultaneamente parcela excluída porh/i e aplicação dos50% de36(4), a combinação fica pendente. Exemplo:fuel100,comprovado80,passageiro sem excepção; não somar nem repartir correcções por presunção. Resolver a regra de articulação dos trechos aplicáveis ou esclarecer esse exemplo especificamente comAT. Apuramento automático da quota36h permanece no saldo de amortizações; só bloqueia esse caso. |
| Provisão/perda por imparidade de créditos28a/29: regime ordinário identificado, créditos normais finais e provisão fiscal anterior conhecidos. | Base10000:limite anual1,5%=150,acumulado6%=600. Saldo anterior550 deixa50;provisão contabilística200 →50 aceite/150 acrescido. Duas parcelas100+100 partilham25+25; não repetem os limites nem consomem o saldo oficial. | Saldo anterior vazio não é zero; anterior superior ao tecto pede reconciliação/reversão28(2). Provisões sujeitas a supervisão financeira/seguradora28d ou reforços financeiros28(3) exigem correspondência própria, sem aplicar29 por aproximação. |
| Existências28b:perda efectivamente observada. Processo judicial28c:em curso e obrigação subjacente fiscalmente dedutível. | Existências:parcela60,perda total40,provisão anterior10 →30 aceite/30 acrescido. Judicial:parcela90,obrigação100,anterior20 →80 aceite/10 acrescido. Perda não observada ou processo que não esteja em curso são condições negativas conhecidas:acréscimo integral, sem zero presumido como dedução. | Falta de prova do evento,obrigação,perda ou saldo anterior fica indeterminada. Objecto/saldo repetido entre documentos impede reutilizar a cobertura; agregar/reconciliar as parcelas do mesmo objecto. |
| Reversões28(2) e provisões anteriormente tributadas:mesmo objecto e tratamento fiscal anterior comprovados. | Provisão antes deduzida:reversão50 já incluída no resultado não acrescenta novamente;omitida dos proveitos acrescenta50. Reversão contabilística50 de provisão antes tributada comprovada é excluída por50. | Não inferir o tratamento anterior do saldo contabilístico. Quantia superior à parcela fiscal demonstrada,evento que continua a subsistir ou objecto duplicado ficam pendentes. Sem alteração retrospectiva ou consumo do saldo oficial. |
| Componentes de exercícios anteriores18(2):conhecimento/imprevisibilidade no encerramento anterior documentados. | Custo80 conhecido no fecho2025,incluído no resultado actual →acréscimo80. Se imprevisível/manifestamente desconhecido à data daquele fecho →sem acréscimo por periodização. Proveito50 conhecido no fecho anterior →excluído do actual por50;se imprevisível/desconhecido →considerado no actual. | Conhecimento no fecho em falta impede apenas a imputação da parcela. Nenhuma rectificação de declaração anterior é executada. Periodizações específicas18(6–10) não passam a estar cobertas por este recorte18(2). |
| Obras plurianuais19 e perdas meramente estimadas36m:critério uniforme,preço,custo incorporado/custo total e acumulados fiscais anteriores documentados. | Percentagem:preço2000,custo total1000,incorrido500;proveito fiscal acumulado1000 menos anterior600=400 corrente;custo500 menos anterior300=200 corrente. Proveito contabilizado1000/custo200 →ajustamento−600. Encerramento tem caso separado;facturação parcial com acabamento correspondente/entregas fraccionadas impõem percentagem;95% com preço conhecido ou recepção provisória pública determina conclusão. Perda meramente estimada50 de obra em curso →acréscimo50. | Acumulados incoerentes ou método incompatível bloqueiam essa obra. Receita antecipada19(5) positiva e mudança de critério com autorização19(6) ficam por corresponder; o caso demonstrado declara expressamente zero de receita antecipada e método mantido, sem presumir essas condições. |
**Percurso demonstrado:** cálculo → gravação → recuperação pela API privada → relatório/dossier/exportação em cinco casos:conjunto calculado,informação insuficiente,categorias adicionais,limites partilhados e encerramento de obra. Só os novos casos foram testados: **22 testes frontend,1 testeAPI/83asserções**, transacção revertida na base QA127.0.0.1:55441; routes/actions gerados pelo procedimento existente,TypeScript/build e interface real passaram. Interface permite reutilizar a parcela livre da origem e o saldo financeiro de créditos quando conhecido; alterações às somas dos temas são revistas antes de aplicar e não apagam escolhas ou históricos. Fonte ausente ou saldo não acompanhado nunca cria zero. Valores racionais são conservados, apresentações decimais aproximadas são identificadas e uma perda inferior a um cêntimo não é truncada para zero.
**Preservação:**6ficheiros de runtime no delta,42protegidos e31originais conferidos; sem schema/API/configuração/permissões/dependências alterados, sem escrita no activo. Recibo:`docs/investmoz/simulations/irpc-l6-costs-provisions-timing-qa-20261026.json`;bundle/pacote em `outputs/irpc-l6-costs`. DivergênciaM20/M22 permanece limitada ao transporte201/quadro8 versus200/quadro10; não é uma condição destes cálculos. Não foram criadas correspondências oficiais de campos para estes novos ajustamentos por presunção.
**Saldo deL6 após estes casos QA:**combinação36h/i+36(4);quota36h automática e restantes amortizações;campanhas36-A e sua articulação com1%;provisões reguladas/reforços financeiros e periodizações específicas não cobertas;receita antecipada positiva/mudança autorizada do método de obra;períodos curtos/conversão fiscal anual;representação fiscal de fracções e restantes correspondênciasM20/M22. Cada pendência afecta o caso/campo dependente, não o conjunto independente demonstrado. Benefícios,isenções,taxas reduzidas e operações especiais mantêm âmbitoL7;retenções,pagamentos,créditos e saldo anual mantêm âmbitoL8. **L6 continua parcial.** As dez dúvidas deL5 não foram reabertas.
## 26/10/2026 — conjunto L6 043dd35d entregue pelo Git
Instalado `043dd35d8ee247123b3a32f1fc10fd2ede81e9f4` sobre `a2de7259`, pelo procedimento Git existente, sem força, migrações ou importações. Backup fresco `2026-10-26T06:35:29Z` e restauro isolado sem rede/porta55441: **174tabelas** conferidas por contagem/checksum; **369ficheiros/configuração** preservados. Conferidos **6ficheiros do delta,42protegidos e31originais**; schema,roles/grants e permissões iguais. Tabelas de negócio preservadas; cache/sessões reconciliadas com os eventos operacionais da entrega. `a2de7259` permanece como versão anterior. Dependências de4versões antigas arquivadas e verificadas para espaço, sem modificar as versões actual/anterior, fontes, dados ou backups.
Revisão/manifest público,11marcadores compilados e simuladorHTTP200 conferidos. Pipeline normal concluído; as provas QA aceites foram reutilizadas, sem nova ronda manual. **Disponível no âmbito demonstrado: lucro6730 → base4430 → colecta1417,60MZN. O saldo final a pagar/recuperar continua indeterminado emL8.** Também preservados o caso de perda corrente e as distinções conhecido/ausência/falta de informação, os períodos/EP demonstrados e a preparação parcialM20/M22. Recibo:`docs/investmoz/simulations/irpc-l6-costs-delivery-20261026.json`.
O estado «QA sem instalação» da nota anterior é histórico para este conjunto. **L6 continua parcial pelos seis grupos concretos da secção seguinte**, cada um com condição de resolução e bloqueio delimitado. L7 eL8 mantêm os seus âmbitos.
## 26/10/2026 — saldo de L6 após a entrega043dd35d
Mesma matriz AUD-SIM-INT02. Custos/provisões/periodização demonstrados entregues; trabalho seguinte:amortizações. Provas aceites reutilizadas.
| Caso ou correspondência pendente | Condição concreta de resolução | Limite do bloqueio |
|---|---|---|
| Combinação36h/i com36(4) | Corresponder a regra de articulação dos trechos aplicáveis ou esclarecer comAT o exemplo combustível100/comprovado80/passageiro sem excepção;sem somar ou repartir correcções por presunção. | Apenas o caso/campo dependente; cálculos independentes preservados. |
| Quota36h automática e amortizações restantes | Reconciliar tabela/método/entrada emuso/quotas contabilísticas e fiscais anteriores;prioridade seguinte deL6. A parcela36h documentada continua reutilizável nos casos independentes. | Apenas o caso/campo dependente; cálculos independentes preservados. |
| Campanhas plurianuais36-A e limite1% | Implementar a periodização por três exercícios e a sua articulação com36n; não tratar a campanha como publicidade ordinária. | Apenas o caso/campo dependente; cálculos independentes preservados. |
| Provisões reguladas28d e reforços financeiros28(3) | Corresponder a regra sectorial/supervisão ou o reforço financeiro e os saldos documentados; não usar os limites ordinários29 por aproximação. | Apenas o caso/campo dependente; cálculos independentes preservados. |
| Receita antecipada19(5) positiva e mudança autorizada19(6) | Corresponder os custos futuros/receita antecipada e o transporte entre exercícios ou a autorização da mudança de método;os casos zero conhecido/método mantido permanecem executáveis. | Apenas o caso/campo dependente; cálculos independentes preservados. |
| Outras periodizações,âmbitos eM20/M22 | Tratar apenas os casos específicos18(6–10),períodos curtos/conversão anual,representação fiscal e campos ainda sem correspondência,com os parâmetros da edição/caso;divergência201/Q8 versus200/Q10 só afecta o transporte indicado. | Apenas o caso/campo dependente; cálculos independentes preservados. |
L6 continua parcial. L7 mantém benefícios/casos especiais;L8 mantém retenções/pagamentos/créditos/saldo final. As dez dúvidasL5 não foram reabertas.
## 26/10/2026 — L6: amortizações em QA, sem instalação
O portal mantém `043dd35d` instalado: colecta demonstrada1417,60MZN, sem saldo finalL8. O novo conjunto optativo `IRPC-normal-adjustments/7` reutiliza os activos e o resultado financeiro já declarados. Versões1–6 e históricos permanecem intactos; activar o novo mapa substitui o efeito fiscal anterior das amortizações, sem o somar novamente. Ausência declarada de quotas anteriores é distinta de informação em falta e exige referência.
Cobertura delimitada ao exercício anual2026/MZN e bens novos ao custo histórico: tabelaII/3/9 computadores25%,3/9.1 servidores20%,3/23 segurança20%,3/22 máquinas não especificadas10%,5/7 mobiliário10%,1/2.2 edifícios comerciais/administrativos2%,4/9.2 veículos ligeiros/mistos25%,5/8 software25%; tabelaI/84.2/B decoração hoteleira20% e84.3/A máquinas de lavandaria12,5%. A tabelaI prevalece quando aplicável; não se presume que esta lista cobre todo o catálogo. Fonte: Decreto72/2013, artigos3–10/17 e tabelas, exemplar original anteriormente aceite e hash preservado; CIRPC27e para limite800000MZN de viaturas e exclusão de terrenos.
Método constante com taxa expressamente escolhida no recorte metade–máximo; degressivo apenas para bens elegíveis novos, factores máximos1,5/2/2,5 segundo vida útil. Opção8(2) demonstrada apenas em ano civil/início1Janeiro, com quotas anteriores completas documentadas. Duodécimos incluem mês de entrada e excluem mês de saída, respeitando vida máxima. Software exige direitos onerosos/exclusivos e duração limitada; art17 exige bem individual até20000 e opção documentada. Quotas anteriores recuperáveis têm prova contabilística/fiscal e são limitadas à parte elegível: quotas nunca contabilizadas ou permanentemente excluídas não se tornam dedutíveis. Nenhum saldo oficial é consumido.
| Novo caso | Efeito demonstrado em MZN: lucro → matéria colectável → colecta |
|---|---|
| Computador em uso desdeJulho: quota fiscal50, ajustamento70, substituindo anterior20 | 6780 →4480 →1433,60 |
| Mesmo activo, saída15Outubro:3meses/quota25 | Colecta1441,60; entrada/saída identificadas no relatório |
| Degressivo elegível: quota200, ajustamento40 | 6630 →4330 →1385,60 |
| Quota anterior documentada:20 recuperados,20 restantes; ajustamento−20 | 6730 →4430 →1417,60 |
| Máquina de lavandariaI/84.3/A: quota62,50, ajustamento57,50 | 6767,50 →4467,50 →1429,60 |
| Quota contabilística anterior em falta | Lucro/base/colecta indeterminados; ajustamentos independentes conhecidos continuam discriminados |
Cálculo → gravação → recuperação pela API privada → relatório/dossier demonstrado em cinco casos. **18novos testes frontend;1testeAPI/84asserções**, rollback na baseQA127.0.0.1:55441; routes/actions gerados, TypeScript/build e interface real passaram, incluindo edição, reutilização, ausência declarada, falta de informação, recuperação e exportação. Provas aceites reutilizadas. **7ficheiros de runtime no delta,43protegidos e31originais conferidos**; sem migração/API/configuração/permissões/dependências ou escrita no activo.
| Saldo concreto das amortizações | Condição de retoma |
|---|---|
| Outros códigos/taxas, por exemploII/3/3 ar condicionado12,5% | Acrescentar correspondência verificada, elegibilidade e prova apenas desse delta; sem aprovação genérica adicional |
| Bens usados, abertura de escrita, grandes reparações/benfeitorias7(2)/(4), reavaliações15 e transição anterior2014 | Documentar vida esperada, bases/quotas anteriores e implementar a regra específica aplicável |
| Uso intensivo11, concessões12, peças14, intangíveis específicos16 e eventos de transferência/relocação | Corresponder condições legais e histórico do evento; desenvolvimento/goodwill não herdam taxa do software |
| Mudança de método10, excepções, taxas fora do recorte, vida máxima anual terminada a meio do período e opção8(2) fora do caso demonstrado | Histórico concreto e regra/excepção correspondente; autorização apenas quando a norma a exigir |
| Restantes custos/provisões/periodizações da entrega043dd35d; períodos curtos, conversão anual, representação fiscal e correspondênciasM20/M22 | Mantêm os critérios concretos já registados na matriz; este incremento não os encerra |
A divergência201/quadro8 versus200/quadro10 bloqueia apenas o transporte afectado. Não foram presumidas correspondências oficiais para estes novos campos. **L6 continua parcial;L7 eL8 mantêm os seus âmbitos.** As dez dúvidasL5 não foram reabertas. Recibo: `docs/investmoz/simulations/irpc-l6-depreciation-qa-20261026.json`.
## 26/10/2026 — amortizações e9fe1022 entregues pelo Git
Instalado `e9fe102259c183a9d9bf7e39f246a8c3860839c6` sobre `043dd35d`, preservado como versão anterior. Backup fresco `2026-10-26T07:31:29Z` e restauro isolado sem rede/porta55441: **174tabelas** por contagem/checksum e **369ficheiros/configuração** conferidos. **7ficheiros do delta,43protegidos e31originais** verificados; schema,roles/grants e permissões iguais. As172tabelas de negócio mantêm os valores do backup. Cache:reinício da fila,contadores/timers e renovação da validade do mesmo valor de cache da página inicial. Sessões:expiração individual comprovada pelo prazo configurado120minutos,novas consultas da entrega e acessos anónimos correlacionados por agente/data no nginx;sem perda de dados de negócio. Dependências de5versões antigas arquivadas/verificadas para a margem do pipeline,preservando versões actual/anterior,fontes,dados e backups.
Revisão/manifest público,5marcadores compilados,4assets e simuladorHTTP200 conferidos. Pipeline normal concluído; provas QA18frontend/API1-84/UI/tipos/build reutilizadas,sem nova ronda manual. **Exemplo disponível: lucro6780 → matéria colectável4480 → colecta1433,60MZN. Saldo final a pagar/recuperar indeterminado emL8.** Históricos1–6 preservados; versão7 apenas por activação do novo mapa,substituindo o efeito anterior sem duplicação. Recibo:`docs/investmoz/simulations/irpc-l6-depreciation-delivery-20261026.json`.
O estado anterior «QA sem instalação» de e9fe1022 é histórico. Mantêm-se explícitos os outros códigos de tabela;usados/abertura de escrita/reparações/reavaliação/transição;uso intensivo/concessões/peças/intangíveis específicos/eventos;mudanças/excepções de método e opções fora do recorte. Retoma por correspondência da regra específica,base/vida/quotas e prova do delta,sem autorização genérica adicional. Períodos curtos e planos noutra moeda são o próximo incrementoQA,reutilizando o mecanismo cambial. Restantes custos/períodos/representação/camposM20-M22 conservam critérios próprios;divergência201/Q8 versus200/Q10 restringe apenas o transporte afectado. **L6 parcial;L7/L8 próprios;dez dúvidasL5 não reabertas.**
## 26/10/2026 — L6: períodos curtos e planos noutra moeda em QA
`e9fe1022` está instalado, com o âmbito de amortizações já demonstrado e os restantes casos de tabela/método explícitos acima. Este novo conjunto optativo `IRPC-normal-adjustments/8` está **emQA,sem instalação**. Reutiliza os meses e montantes do plano,os mapas fiscais emMZN e o mecanismo cambial entregue. Os históricos1–7 e o plano original não são reescritos.
Períodos de meses completos com termo em2026: início7(4)a,cessação7(4)b,início/fim de sujeição7(4)c e transição7(4)d,mediante identificação do evento/datas/suporte; plano com6meses ou selecção explícita de6dos12meses,sem anualizar receita,resultado,base ou taxa. Primeiro mês civil do plano é declarado,não inferido do mês orçamental. Anual diferente do ano civil conserva a correspondência do período autorizado/comunicado existente. Duodécimos ordinários do art9(3) do Decreto72/2013 aplicam o número de meses de utilização;art17 integral em período curto e restantes excepções não se tornam suportados por aproximação. Elemento conhecido como não amortizável mantém acréscimo integral,sem exigir método irrelevante.
Planos em outra moeda: cada mês seleccionado reutiliza ou confirma selecção cambial pelo procedimento existente,coluna/data/boletim/sentido e vínculo à origem. Moeda e valores originais permanecem no relatório. Não se adopta taxa actual,única ou de outro mês por defeito. **A conversão mensal para simulação exige pressuposto documentado;não confirma automaticamente uma regra fiscal de conversão anual.** Os mapas/activos/quotas/perdas existentes continuam emMZN e são reconciliados expressamente;nenhuma segunda conversão automática. Saldos patrimoniais de créditos em moeda estrangeira não são apresentados comoMZN pela conversão dos fluxos do plano;correspondência de saldo/data/taxa continua separada.
| Caso novo | Efeito demonstrado emMZN |
|---|---|
| Início1Julho–31Dezembro,meses7–12: resultado3120;quota fiscal50 e ajustamento10 | Lucro3130 → matéria colectável3130 → colecta1001,60,à taxa32%;ausência de perdas/benefícios declarada |
| Mesmo recorte emUSD,pressuposto sintético64MZN/USD identificado em cada mês;mapasMZN reconciliados | Resultado199680;ajustamento640;lucro/base200320 → colecta64102,40. Taxa64 é pressupostoQA,não boletimBM real ou parâmetro fiscal confirmado |
| Anual emUSD;plano de6meses iniciado emJulho;cessação e sujeição no mesmo ano | Novos testes próprios;respectivamente colecta128204,80 e1001,60nos casos correspondidos,sem anualização do semestre |
| Falta de selecção de um mês,moeda incompatível ou taxa editada sem confirmação | Valores originais e conversões independentes visíveis;resultado/lucro/base/colecta dependentes indeterminados |
| Perdas reportadas propostas num período curto | Lucro3130conhecido;dedução/base/colecta pendentes da sequência de períodos. Art41(5) exclui da contagem o período de transição7(4)d inferior a6meses;não autoriza agregar todos os períodos curtos |
Cálculo → gravação → recuperaçãoAPI → relatório/dossier demonstrado em4casos. **13testes novos frontend,API1teste/58asserções**, rollback na baseQA127.0.0.1:55441;routes/actions pelo procedimento existente,TypeScript/build e interface real passaram. Interface demonstrou alteração de datas e taxa,confirmação cambial,recuperação e exportação. Mudança na origem cambial invalida a actualidade do novo resultado,conservando o histórico. Provas aceites reutilizadas,sem repetição manual. Delta:**9ficheiros de runtime,43protegidos e31originais**;sem API/schema/configuração/permissões/dependências ou escrita no activo.
| Pendência concreta | Condição de retoma e bloqueio |
|---|---|
| Datas parciais,períodos superiores a12meses/liquidação e curtos fora do recorte2026 | Corresponder datas/evento,parcelas de dias e regra aplicável;apenas esse período depende da implementação |
| Dedução de perdas em sequência com períodos curtos/transição | Declarar sequência efectiva de períodos posteriores e aplicar41(5) ao caso7(4)d inferior a6meses;sem prazo presumido só por ano civil. Lucro independente continua calculável |
| Limites anuais de publicidade e provisão de créditos em período curto | Corresponder expressamente a base/limite do período e regra de proporcionalização,se aplicável;sem anualização ou rateio presumidos. Outros custos e períodos anuais não bloqueados |
| Quota integral art17 em período curto,opções/métodos/tabelas e casos de amortização ainda não suportados | Implementar combinação específica e provar só o novo efeito;condições restantes do conjuntoe9fe1022 continuam válidas |
| Conversão fiscal anual confirmada,saldos em moeda estrangeira e fracções de cêntimo da conversão | Identificar regra fiscal/data/base,taxa e âmbito;para saldos,conversão própria em vez de somar fluxos;para fracções,regra de representação. Até lá,pressupostos de simulação explícitos e total indeterminado quando não representável neste recorte |
| Restantes custos/periodizações e correspondênciasM20/M22 | Mantêm os critérios já registados. Divergência201/Q8 versus200/Q10 limita só o transporte afectado |
Fontes primárias reutilizadas: CIRPC Lei34/2007 PDF4/p768(58),art7(4)/(7),ePDF12/p768(66),art41(5);Decreto72/2013 PDF3/p1074(7),art9(3). Exemplar e originais/hash preservados;sem importação/publicação documental. **L6 continua parcial. Colecta não é saldo final a pagar;L7 eL8 mantêm âmbitos próprios.** As dez dúvidasL5 não foram reabertas. Recibo:`docs/investmoz/simulations/irpc-l6-periods-fx-qa-20261026.json`.
## 26/10/2026 — períodos curtos e planos noutra moeda56475acb entregues pelo Git
Instalado `56475acb2f39e58cb51664913f7fb499f58eb7ab` sobre `e9fe1022`,preservado como versão anterior. Backup fresco `2026-10-26T08:17:39Z` e restauro isolado sem rede/porta55441: **174tabelas** por contagem/checksum e **369ficheiros/configuração** conferidos. **9ficheiros do delta,43protegidos e31originais** verificados;schema,roles/grants e permissões iguais. As172tabelas de negócio mantêm os valores do backup. Cache/sessões reconciliadas com os eventos operacionais e acessos anónimos registados;expiração,quando aplicável,comprovada individualmente pelo prazo configurado. Dependências de5versões antigas arquivadas/verificadas,preservando versões actual/anterior,fontes,dados e backups.
Revisão/manifest público,6marcadores compilados,4assets e simuladorHTTP200 conferidos. Pipeline normal concluído;provasQA13frontend/API1-58/UI/tipos/build reutilizadas,sem nova ronda manual. **Semestre demonstrado: lucro3130 → matéria colectável3130 → colecta1001,60MZN.** PlanoUSD:pressuposto sintético64MZN/USD por mês identificado,originais conservados e mapasMZN reconciliados;lucro/base200320 → colecta64102,40MZN. **Não confirma regra fiscal de conversão anual nem boletimBM real. Saldo final a pagar/recuperar continua indeterminado emL8.** Históricos1–7 preservados;versão8 optativa,sem anualizar resultados ou usar taxa actual por defeito. Recibo:`docs/investmoz/simulations/irpc-l6-periods-fx-delivery-20261026.json`.
O estado anterior «QA sem instalação» de56475acb é histórico. Permanecem explícitos os casos de datas parciais/liquidação,sequência de perdas41(5),limites anuais em período curto,art17 curto/restantes amortizações,conversão fiscal anual/saldos em outra moeda/fracções e demais custos/periodizações. Condições de retoma continuam na mesma matriz. Próximo incrementoQA:representação de valores e camposM20/M22 por corresponder;divergência201/Q8 versus200/Q10 limitada ao transporte do resultado afectado,sem reabrir cálculos demonstrados. **L6 parcial;L7/L8 próprios;dez dúvidasL5 não reabertas.**
## 26/10/2026 — L6: representação dos valores e campos M20/M22 em QA
`56475acb` está instalado. Este novo conjunto optativo `IRPC-normal-adjustments/9` está **em QA, sem instalação** e acrescenta preparação dos valores/campos, sem alterar fórmulas de lucro tributável, matéria colectável ou colecta. Históricos1–8, plano original, pressupostos cambiais e demais livros preservados. A falta de uma correspondência documental afecta o campo e a sua reconciliação, mantendo os totais fiscais existentes.
**Representação:** valor racional exacto conservado, apresentação aproximada identificada por«≈» e fracção original; zero conhecido, informação em falta e campo sem aplicação distintos. M20A.1/quadro4/M12 pede meticais sem centavos: valores inteiros são representáveis, fracções ficam por corresponder, sem arredondamento/truncagem. Preparação M22 já aceite com valores exactos ao cêntimo preservada; fracções de cêntimo continuam explícitas e pendentes da regra fiscal aplicável. Resultado líquido negativo M20 é apresentado entre parêntesis; M22 separa campo de lucro do de prejuízo, sem colocar perda no lucro ou criar matéria colectável negativa.
**M20:** reutiliza as quatro correspondências directas de custos das vendas,pessoal,depreciação e juros. Discrimina as receitas e despesas operacionais por conta com suporte e reconciliação exacta ao plano do período/moeda. Demonstra prestação de serviços7.2,fornecimentos/serviços6.3,outros gastos6.8 e imposto contabilizado8.5, além das contas directas6.1.1/6.2/6.5/6.9. Rótulos das demais contas são estrutura disponível; não constituem novas regras fiscais nem provam a qualificação de uma parcela. Uma origem incompleta não apaga as contas directas independentes.
O imposto contabilizado tem valor/ausência e suporte próprios, e localização já incluída ou exterior ao plano. Colecta não é despesa contabilística presumida. Valor já incluído não é subtraído novamente; contradição com o mapa de imposto próprio ou coexistência das duas localizações fica identificada. O resultado líquido é apurado para preparação; o transporte automático entre edições continua impedido só no resultado afectado.
**M22 PDF:** correspondências de variações patrimoniais201/202,resultado203,amortizações não aceites206,provisões/imparidade209,impostos de outrem213,multas/juros compensatórios215,ajudas219,representação220,publicidade221,despesas não documentadas223,aluguer224,combustíveis225,viaturas226 e reposição de provisões tributadas239. Reutiliza os ajustamentos demonstrados; não reaplica as percentagens impressas. A representação já calculada usa80%,compatível com220. Campo213 é apenas de outrem: imposto próprio36(1)a continua **sem campo presumido**. Efeitos positivos de amortização vão a206; recuperações negativas de quotas anteriores ficam separadas até correspondência própria, sem compensação no mesmo campo.
Somas238/258 e lucro reconstruído apenas quando todas as parcelas têm correspondência e reconciliam; campos259/260/269/270/276/277/278/300 reutilizam o cálculo existente, mesmo havendo uma parcela sem campo. Colecta total302 só é preparada com ausência de parcela de taxa reduzida declarada com suporte;caso conhecido mantém âmbitoL7 e não apaga300. Campos309–316/saldo final permanecem emL8.
| Caso novo | Resultado e limite de aplicação |
|---|---|
| Correspondência no semestre demonstrado, ausência de imposto contabilizado e taxa reduzida declaradas | Resultado líquido3120;203=3120;206=10;238=3130;258=0;lucro/base3130;colecta normal300 e total302=1001,60MZN. Reconciliação aritmética exacta, sem transporte automático entre edições |
| Fornecimentos300,50 e outros gastos299,50, origem600 | Parcela300,50 conserva601/2;M20 em meticais inteiros pendente só nas parcelas fraccionárias;resultado e colecta1001,60inalterados |
| Imposto contabilizado em falta | Resultado líquido/campo200 e somas dependentes indeterminados;lucro/base3130 e colecta1001,60mantidos |
| Recuperação de quota anterior:ajustamento−26 | Efeito fiscal e colecta1001,60preservados;sem código de dedução inventado,somas238/258 pendentes;260/278/300 conhecidos |
| Imposto próprio320 contabilizado exterior ao plano | Resultado líquido2800 conhecido;campo de acréscimo próprio por corresponder,sem usar213 de outrem;lucro/base3130 e colecta1001,60preservados |
Percurso cálculo → gravação → recuperação privada → relatório/dossier demonstrado em **5casos**. **15testes novos frontend;API1teste/97asserções**, transacção revertida na baseQA127.0.0.1:55441;routes/actions gerados pelo procedimento existente,TypeScript/build e interface real passaram. Interface demonstrou edição de parcelas,imposto em falta sem apagar valor anterior,recuperação/exportação e pendências apenas dependentes. Provas aceites reutilizadas;sem repetir suites anteriores. **4ficheiros de runtime no delta,50protegidos e31originais** conferidos;sem API/schema/configuração/permissões/dependências ou escrita no activo.
Fontes: PDF M22 SHA2564b61bd83d1fbcfd3b7b5c5523cea5923f7d0f65dc4c004eff58e5db38f763c88,3páginas já aceites reutilizadas;M20A.1 SHA2561ceca6f4c6d77853c1b2b445876599b42093175fa89eecf40590180956d83a9e,M12/D13–D35. Inventariados os20ficheiros acessíveis deModelos/Notas,incluindo temporários;originais/hash preservados. Só rótulos genéricos necessários extraídos do XLSX;sem valores privados,fórmulas/cache do exemplar,importação ou publicação documental.
| Saldo concreto da preparação M20/M22 | Condição de retoma e alcance |
|---|---|
| Transporte do resultado M20A.1/D35→M22 | Exemplar compatível ou instrução que resolva201/quadro8 versus200/quadro10. Só esse transporte fica impedido;valor líquido próprio e demais campos continuam visíveis |
| Imposto próprio36(1)a,quota anterior recuperada e restantes efeitos de periodização/obras/reversões sem campo | Corresponder rótulo,edição/período e regra específica do campo. Efeito/valor conservados sem código provisório;apenas somas/campos dependentes aguardam |
| Fracções M20 e subcentavos M22 | Identificar regra de representação do caso;preservar fracção e apresentar aproximação identificada até então. InteirosM20 e cêntimos exactosM22 não bloqueados |
| Imposto contabilizado simultaneamente incluído e exterior ao plano | Discriminar ambas as componentes/referências e conciliar8.5/acréscimo próprio sem repetir gasto;sem inferir o valor da colecta |
| Contas/quadros e anexos restantes fora das seis linhas financeiras demonstradas | Reutilizar dados existentes,classificar componentes com suporte e acrescentar correspondência específica;sem tomar campos preenchidos do exemplar como dados do investidor |
L7 mantém benefícios/casos especiais/taxas reduzidas eL8 mantém retenções,pagamentos,créditos e saldo final. Restantes regras deL6 e as dez dúvidasL5 conservam o saldo e as condições já documentadas. **L6 continua parcial;colecta não é saldo final a pagar.** Recibo:`docs/investmoz/simulations/irpc-l6-values-forms-qa-20261026.json`.
## 26/10/2026 — representação dos valores e campos M20/M22 5aaf1a56 entregues pelo Git
Instalado `5aaf1a56f9d928331364fcc8b0d1528e51dba327` sobre `56475acb`,preservado como versão anterior. Backup fresco `2026-10-26T08:57:09Z` e restauro isolado sem rede/porta55441: **174tabelas** por contagem/checksum e **369ficheiros/configuração** conferidos. **4ficheiros do delta,50protegidos e31originais** verificados;schema,roles/grants e permissões iguais. As172tabelas de negócio mantêm os valores do backup;cache/sessões reconciliadas com eventos operacionais/acessos anónimos,sem alteração de dados de negócio. Revisão/manifest público,7marcadores compilados,4assets e simuladorHTTP200 conferidos. Sem migrações,importações ou escrita privada sintética no activo.
Pipeline normal concluído;provasQA15frontend/API1-97/UI/tipos/build reutilizadas,sem nova ronda manual. **Disponível no âmbito demonstrado: resultado líquido3120 + ajustamento10 → lucro/base3130 → colecta1001,60MZN.** Representação exacta,ausência/informação em falta/campo sem aplicação e valores ainda sem correspondência conservados. M20 mantém fracções sem arredondamento presumido;M22 mantém preparação exacta ao cêntimo já aceite. Imposto próprio320 exterior produz resultado líquido2800,mas campo de acréscimo próprio continua pendente,sem usar213 de outrem. Divergência201/Q8 versus200/Q10 só limita o transporte afectado. Históricos e cálculos anteriores,pressupostos cambiais e âmbitosL3/ISPC/câmbio/L5 preservados. **Colecta não é saldo finalL8.** Recibo:`docs/investmoz/simulations/irpc-l6-values-forms-delivery-20261026.json`.
O estado anterior «QA sem instalação» de5aaf1a56 é histórico. O saldo seguinte separa desenvolvimento de esclarecimento documental,com exemplo e condição de retoma,para decidir o fecho operacional delimitado. **L6 não está integralmente concluído;L7 eL8 mantêm os seus âmbitos.** Não foi executada pesquisa nova nem repetição dos testes aceites para esta consolidação.
## 26/10/2026 — saldo consolidado de L6 para decisão de fecho operacional delimitado
Referência actual após a entrega `5aaf1a56`: percurso normal demonstrado até à **colecta**, com períodos/moedas/ajustamentos e preparação parcialM20/M22 documentados. Colecta não é saldo final a pagar ou recuperar;L8 conserva esse fecho. Esta lista consolida o saldo das notas anteriores,sem reabrir o que já foi demonstrado. Os pormenores e exemplares continuam nas mesmas secções/recibos;nenhuma nova matriz ou backlog é criado.
**Código ainda por implementar.** São extensões não demonstradas;as fontes já aceites permitem iniciar os casos correspondidos. Dados de um investidor em falta dentro de regra já implementada são uma pendência desse caso, não outra tarefa genérica deL6.
| Trabalho | Exemplo | Condição de retoma / alcance |
|---|---|---|
| Amortizações e quota de aluguer36h restantes | Ar condicionadoII/3/3,12,5%,fora dos10códigos implementados;bem usado com vida esperada e quotas anteriores documentadas. | Acrescentar catálogo e variantes previstas nas fontes aceites:usados/abertura/reparações/reavaliação,uso intensivo/concessões/peças/intangíveis,transição e excepções de método/vida útil,art17 em período curto e quota36h automática. Implementar só o caso escolhido e provar o delta;sem aguardar validação genérica daAT. Só activo,método ou quota ainda não suportados;amortizações demonstradas preservadas. |
| Custos e periodizações específicos | Campanha de lançamento300 com imputação por3exercícios;obra com receita antecipada positiva em vez do zero demonstrado. | Implementar36-A e articulação com36n,reforços financeiros28(3),19(5)/19(6) e18(6–10),com saldos/condições do caso. Autorização de mudança de método apenas quando a disposição aplicável a exigir. Provisões sectoriais dependem primeiro da norma específica indicada abaixo. Só campanha,obra ou periodização específica;limites/provisões ordinários e casos já demonstrados mantidos. |
| Períodos e sequência de perdas | Transição de4meses seguida dos períodos posteriores:aplicar a exclusão de contagem de41(5) ao período7(4)d,sem contar apenas anos civis. | Representar a sequência efectiva de períodos/perdas e acrescentar datas parciais,liquidação/períodos superiores a12meses e outros exercícios com regra/taxa aplicável. Não há nova pesquisa necessária para repetir o recorte de meses completos2026 já entregue. Só período ou utilização de perda dependente;lucro independente e semestres demonstrados preservados. |
| Desdobramentos contabilísticos e quadros/anexos M20/M22 restantes | Imposto próprio200 já incluído no plano e320 exterior:discriminar as duas componentes sem duplicar gasto;contas fora das6linhas financeiras ainda não transportadas. | Acrescentar o desdobramento e as correspondências dos quadros/anexos escolhidos,reutilizando dados existentes. Campos sem correspondência aguardam a referência concreta abaixo;os outros componentes podem ser implementados/provados separadamente. Só componente/conta/campo ainda não suportado;valores e campos correspondidos preservados. |
| Saldos em moeda estrangeira | Crédito final100USD não é soma das receitas convertidas por mês. | Implementar reconciliação de saldo e conversão pela data/regra que vier identificada,usando o motor cambial já entregue. A selecção mensal para simulação continua disponível;esta tarefa não cria outro mecanismo cambial. Só saldo/conversão fiscal dependente da regra;plano e pressupostos mensais permanecem disponíveis. |
**Esclarecimentos documentais aguardados.** Cada ponto abaixo exige apenas a referência/resposta específica indicada. A ausência dessa informação não significa revogação das fontes aceites,nem autoriza transformar a dúvida numa validação genérica deL6. Não se presume que um pedido já tenha sido enviado àAT;estes são pontos delimitados para o esclarecimento aplicável.
| Informação em falta | Exemplo da dúvida | Condição de retoma / alcance |
|---|---|---|
| Edição e campos M20/M22 | M20A.1/D35 remete201/quadro8;PDF M22 usa200/quadro10. Imposto próprio320 não pertence ao213 de outrem;quota recuperada−26 não tem campo de dedução confirmado. | Obter exemplar compatível ou instrução que identifique edição/período,campo e sentido do transporte. Para periodização/obras/reversões ainda sem campo,identificar a correspondência específica. Até informação nova,manter valores/efeitos sem código presumido e não repetir pesquisa. Só transporte,campo e somas dependentes;resultado líquido próprio,260/278/300 e demais campos conhecidos mantidos. |
| Representação fiscal de fracções | M20:300,50=601/2MZN,num exemplar que pede meticais sem centavos;M22:1/300MZN não é um número exacto de cêntimos. | Identificar instrução de representação/arredondamento da edição/campo ou esclarecimento específico. Conservar a fracção até lá;não deduzir regra de arredondamento apenas do rótulo «sem centavos». Só transcrição não exactamente representável;inteirosM20,cêntimos exactosM22 e cálculo racional preservados. |
| Articulação de limites em combinações não demonstradas | Combustível100,comprovado80,viatura de passageiros sem excepção:36h/i com36(4). Provisão de créditos200 num período curto de3meses:limite anual por corresponder. | Esclarecer especificamente a articulação h/i/36(4) e a base/limite dos períodos curtos de publicidade/créditos,se houver proporcionalização aplicável. Não somar exclusões,anualizar ou repartir por presunção. Retomar só perante referência/resposta concreta para o exemplo. Só combinação ou limite do período;casos independentes com regra já aplicada mantidos. |
| Regra fiscal de conversão anual | PlanoUSD com64MZN/USD por mês é pressuposto sintético de simulação,não confirmação da data/taxa fiscal anual ou da cotação do saldo final. | Identificar disposição/âmbito,data,base e taxa/boletim aplicáveis ao resultado e,quando necessário,ao saldo. Reutilizar o motor existente e demonstrar só a correspondência nova;sem taxa actual por defeito ou nova ronda da pesquisa anterior. Só confirmação fiscal anual e saldo dependente;conversões mensais documentadas de simulação mantidas com os avisos. |
| Norma sectorial de provisões reguladas | Provisão200 de uma entidade financeira sujeita ao28d não herda os1,5%/6% do regime ordinário29. | Identificar sector,regulador,norma de supervisão aplicável e saldos/condições necessários,antes da implementação específica. A fonte oficial fornecida é aceite;falta a regra concreta do caso,não certificação genérica da fonte. Só provisão regulada respectiva;provisões ordinárias demonstradas preservadas. |
**Base da decisão operacional:** o âmbito demonstrado e as suas limitações permanecem disponíveis na interface e nas exportações;as provas aceites mantêm validade. Um fecho operacional delimitado pode referir esse âmbito,com estas extensões/documentos fora da cobertura e retoma por caso. Esta consolidação **não declara L6 integralmente concluído nem regista uma decisão de fecho ainda não tomada**. Permite preparar o avanço paraL7 sem condicionar os casos independentes à resolução de todo este saldo. Benefícios/isenções/taxas reduzidas/tributações autónomas e operações especiais mantêm âmbitoL7;retenções,pagamentos,créditos e saldo anual mantêm âmbitoL8. As dez dúvidasL5 só afectam dependências efectivas e não foram pesquisadas novamente.
## 26/10/2026 — L6 operacional no âmbito demonstrado e delimitação de L7
**Decisão expressa da Tempo:** L6 fica operacional no âmbito demonstrado disponível em `5aaf1a56`, com limitações explícitas. Não é conclusão integral de L6 ou do IRPC. Os cinco grupos de código e cinco grupos documentais da secção «saldo consolidado de L6» permanecem separados, com exemplos e condições de retoma. As notas anteriores que deixavam a decisão operacional por tomar conservam o seu valor histórico; esta decisão é posterior. As provas aceites são reutilizadas. As pendências de L5/L6 só impedem tratamentos que dependam delas.
**Estado deste incremento:** delimitação documental de L7, sem novo cálculo, instalação, migração, importação ou alteração de dados activos. A colecta normal entregue mantém-se distinta do saldo a pagar/recuperar. Retenções, pagamentos, aplicação anual de créditos e liquidação final permanecem em L8. Recibo: `simulations/irpc-l7-scope-20261026.json` (relativo a `docs/investmoz/`).
### Dados existentes e fronteiras de integração
| Reutilização | Contrato para L7 e limite |
| --- | --- |
| Oportunidade/dossier: `context_opportunity`, `context_opportunity_snapshot`, `context_applicability_snapshot`, `context_reuse` | Conservar origem e data, selecção de campos compatíveis e edições deliberadas; `context-inheritance.ts` e `dossier-prefill.tsx` já sustentam esta reutilização. Associação documental a oportunidade/âncora não confirma implantação ou incentivo. |
| `sector_id`, `province_id`, `district_id`, `admin_post_id`, `locality_id` e respectivas designações | Servem para identificar candidatos e pedir apenas elementos em falta. Confirmar actividade efectivamente exercida, estabelecimento/projecto e parcela abrangida por documentos do caso. Localização, polígono, DUAT ou código sectorial isolados não concedem benefício. |
| Sujeito, NUIT, residência/EP, período, início de actividade/exploração e dados do plano | Reutilizar valores declarados e respectivas provas. Data prevista no dossier não substitui início efectivo quando esse for o termo inicial da norma. Distinguir conhecido, ausência declarada e desconhecido. |
| `business_plan_snapshot`, livro `modelo_a_snapshot.irpcNormal` e versões L6 | Receber lucro/base/colecta e parcelas identificadas, com chave e versão de origem. Só alterar o ponto previsto pela norma: ajustamento ao lucro, dedução à base, taxa por parcela ou tributação autónoma separada. Não alterar nem recalcular silenciosamente históricos. |
| Activos, quotas anteriores e despesas já registadas | Reutilizar os mesmos identificadores e montantes; calcular apenas o efeito adicional permitido. Não repetir o acréscimo de uma despesa nem deduzir duas vezes a amortização do mesmo activo. Um caso dependente de regra L6 não implementada conserva essa dependência específica. |
| Preparação M20/M22 e aritmética racional existentes | Conservar montante exacto, unidade/moeda e parcela. Transporte só com correspondência demonstrada para a edição; campo desconhecido, fracção não representável ou divergência editorial não invalida o cálculo independente. Não arredondar por conveniência. |
O motor actual de matéria colectável não subtrai benefícios positivos livres: exige regra, condições, limite e ordem. A colecta normal cobre a taxa geral no recorte demonstrado; escolher «outro tratamento» não implementa uma taxa especial. A presença de campos ou de fontes no portal não equivale a execução de L7.
### Famílias de tratamentos a implementar por casos compatíveis
As referências seguintes delimitam a regra e o ponto de integração; **não constituem benefícios concedidos nem cobertura executável nova**. O exercício do caso, alterações aplicáveis e duração individual ficam associados à versão da regra. Não se transportam taxas temporárias para outro período.
| Família / fonte identificada | Condições e período a guardar | Efeito e exemplo de dúvida delimitada / condição de retoma |
| --- | --- | --- |
| **Despesas com tributação autónoma** — CIRPC, Lei34/2007, art.61(4), com art.36(1)g; PDF17/p768(71) | Natureza legal documentada da despesa não devidamente documentada, confidencial ou ilícita; valor e exercício; taxa de 35% da disposição e versão aplicável ao período. Não classificar pela simples falta de ficheiro anexado. | Parcela autónoma separada da colecta normal; reutilizar o acréscimo36g já feito, sem duplicação. Ex.: despesa100 já acrescida em L6 → parcela autónoma35 no caso qualificado; não é saldo final. Se só falta anexo, pedir a caracterização/prova da despesa e manter indeterminado apenas este tratamento. |
| **Mais-valias autónomas** — Lei12/2025, art.2, CIRPC61-A; art.3 revoga39/47; art.6 vigora em01/01/2026; PDF20/p2180(20) | Alienação, activo, datas, realização/valor fiscal, origem contabilística, período e parcela identificados; taxa32% do61-A. Separar eventos anteriores a2026. | Apurar parcela autónoma, reconciliando o que já integra o resultado L6, sem dupla incidência ordinária/autónoma nem compensação presumida de perdas. Ex.: ganho100 incluído no resultado exige identificar a sua parcela antes de integrar a colecta autónoma32. Retoma: implementar essa reconciliação e a regra de apuramento aplicável ao activo; não bloqueia despesas autónomas ou benefícios independentes. |
| **Isenções e redução por natureza da entidade** — CIRPC9–14; cooperativas no art.12, PDF5/p768(59), e taxa geral61(1) | Tipo efectivo da entidade, rendimentos elegíveis/excluídos, destino dos rendimentos, constituição e reconhecimento apenas onde exigido pela disposição; exercício e norma aplicável. Art.12 refere cooperativas agrárias, de artesanato e culturais e redução de50% da taxa geral; não todas as cooperativas. Arts.12(2)/14 separam rendimentos sujeitos a retenção. | Isenção ou taxa reduzida apenas na parcela coberta; actividade comercial acessória não se torna isenta por designação da entidade. Ex.: cooperativa com actividade elegível e outra não abrangida exige separar rendimentos e custos. Retoma: classificação documental e segregação da parcela, sem transportar a dispensa para retenções L5 ou liquidar créditos L8. |
| **Amortização acelerada** — CBF, Lei4/2009, art.16; compilaçãoAPIEX p72 | Imóveis novos usados no projecto; imóveis reabilitados e máquinas/equipamentos industriais/agro-industriais nas condições da disposição; enquadramento CBF3/9/10 quando aplicável, entrada em uso, taxa normal, base, quota contabilizada e quotas anteriores. Incremento de50% sobre a taxa normal, não cinquenta pontos percentuais. | Efeito no ajustamento ao lucro e, através da cadeia L6, na base/colecta. Ex.: taxa normal10% → taxa acelerada15%, antes das restantes condições/limites; não autoriza uma segunda dedução integral. Retoma por activo com classificação/documentos e conciliação de quotas/custo disponíveis; tabelas L6 em falta bloqueiam só o activo dependente. |
| **Deduções e majorações de despesas/investimentos** — CBF17–19; compilaçãoAPIEX pp73–74 | Tecnologia de ponta, formação de trabalhadores moçambicanos e despesas elegíveis de utilidade pública: natureza, base, exercício inicial, janela dos primeiros cinco anos/exercícios conforme artigo, limites, exclusões, ordem e não cumulaçãoCBF4. Distinguir dedução à matéria colectável de majoração de custo. | Efeito no ponto exacto previsto pela disposição. Ex.: formação sem prova do tipo não permite escolher entre o limite5% e o ramo10% para novas tecnologias do art.18. Retoma: identificar tipo/base de limite e conciliar a despesa já contabilizada; não converter percentagem em dedução livre. |
| **Crédito fiscal por investimento** — CBF15; compilaçãoAPIEX pp71–72 | Investimento novo elegível, exclusões, início, Maputo/outras províncias como uma das condições, parcela da colecta atribuível ao projecto e prazo de utilização/transporte de cinco exercícios. Taxas5%/10% distinguem os ramos da disposição, sem direito automático por localização. | **L7 identifica origem, elegibilidade e crédito potencial; L8 aplica o crédito anual, limites/saldos e liquidação.** Ex.: projecto situado fora de Maputo, sem discriminação do investimento elegível, não gera automaticamente10% de crédito. Retoma: base elegível e calendário documentados; utilização anual aguarda o mecanismo L8. |
| **Tratamentos sectoriais/territoriais CBF** — infra-estruturas20–22; agricultura/pescas27–29; turismo30–33; parques de ciência34–35; grandes projectos36–38; zonas de rápido desenvolvimento39–44; ZFI45–46; ZEE47–48 | Seleccionar a disposição de IRPC efectivamente pertinente, actividade/projecto, delimitação/estabelecimento e estatuto comprovados, data de autorização/início quando exigidos, escalões, duração, cumulação e cessaçãoCBF49–52. ZFI46 e ZEE48 são os artigos de impostos sobre rendimento. Não tratar benefícios exclusivamente aduaneiros como benefícios IRPC. | Isenção, redução ou dedução por parcela e intervalo próprio, em vez de taxa comum ao sector/localização. Ex.: endereço numa ZEE sem estatuto documentado deixa o ramo ZEE pendente; o cálculo normal independente continua. CIRPC61(2) na Lei20/2022 tem termo31/12/2025: não presumir prorrogação para2026. Retoma de cada ramo: condições e cronologia da disposição específica preenchidas, com regra versionada; não exigir pesquisa repetida de todos os sectores. |
| **Operações e regimes especiais** — CIRPC54–56 (entradas de activos, fusões/cisões e sócios), transferência de perdas41-A; regimes sectoriais específicos do acervo | Tipo de operação, intervenientes, residência, datas, activos/passivos/valores fiscais e continuidade; identificar diploma sectorial/artigo e regra aplicável antes de escolher tratamento. Não inferir neutralidade por chamar «fusão» à operação nem aplicar regime mineiro/petrolífero por rótulo sectorial. | Continuidade/ajustamento/tributação diferida ou parcela própria conforme norma, mantendo bases históricas. Ex.: perda recebida de outra sociedade não é perda própria ordinária41 de L6. Retoma: correspondência específica41-A e operação documentada; regras sectoriais sem artigo correspondido ficam candidatas, sem taxa provisória. Não há bloqueio transversal de L7. |
### Registo por tratamento e demonstração a exigir ao código novo
Cada tratamento terá: identificador estável; sujeito/NUIT; oportunidade/projecto/estabelecimento e parcela; contexto herdado e divergências; fonte/exemplar/hash/artigo/versão; intervalo de vigência e período do caso; facto que inicia/termina a duração; condições individualizadas em «sim/não/desconhecido» com prova ou ausência declarada; título/reconhecimento somente quando a regra o exige; base elegível, taxa, limite, ordem e compatibilidade com outros tratamentos; resultado normal de origem; efeito adicional e ponto da cadeia; moeda/conversão e pressupostos; montante exacto; motivos de exclusão/informação em falta; versão/histórico e dependência concreta.
Os estados «candidato», «não aplicável», «informação em falta» e «calculado por regra implementada» não se confundem. Ausência declarada pode produzir efeito zero justificado; desconhecido não produz benefício zero nem benefício presumido. Uma condição negativa exclui o tratamento e conserva o percurso normal quando os seus dados são suficientes. Com potencial benefício ainda indeterminado, apresentar o cenário normal de referência e a parcela pendente sem declarar total fiscal definitivo. Mudança de sector/localização/documento invalida apenas a correspondência dependente e pede confirmação de reutilização; conserva o original e as edições deliberadas.
**Primeiro incremento delimitado para implementação:** qualificação comum e segregação de efeitos, acompanhadas do caso35% do61(4), com despesa já ajustada36g e caso de informação insuficiente. É independente de transporte M20/M22 não correspondido e de amortizações L6 em falta. **Incremento compatível seguinte:** cooperativa abrangida pelo12 com parcela elegível separada e amortização acelerada16 para activo já suportado em L6; cada caso só acompanha a entrega se demonstrado. Mais-valias61-A, deduções17–19, ramos sectoriais e operações especiais seguem separadamente quando as respectivas parcelas/regras estiverem correspondidas. Crédito15 prepara direito potencial em L7 e contrato de passagem para L8, sem antecipar liquidação anual.
Para cada nova regra: condição satisfeita, negativa, informação em falta, período incompatível/benefício expirado, sobreposição com ajustamento existente e alteração de contexto. Demonstrar apenas o delta: cálculo → gravação → recuperação → relatório, incluindo fonte, período, condições, efeito no lucro/base/colecta ou parcela autónoma e saldo final L8 por determinar. Recuperar históricos anteriores sem os alterar; não duplicar ajustamentos ao voltar a guardar. Reutilizar as provas aceites; não reabrir L3, ISPC, câmbio ou percursos L5/L6 independentes.
### Fontes consultadas e pendências delimitadas
Reutilizado o inventário autorizado de **8143ficheiros**, sem nova varredura de pastas. Para delimitação foram consultados os originais CIRPC/alterações já arquivados, a Lei4/2009 local e a compilação oficial [APIEX — Legislação de Investimentos em Moçambique](https://pt.apiex.gov.mz/wp-content/uploads/2025/02/LEGISLACAO-DE-INVESTIMENTOS-EM-MOCAMBIQUE.pdf), que reúne Lei8/2023, Decreto8/2024 e CBF4/2009. Disponibilidade, situação documental/jurídica e uso no cálculo continuam estados independentes. O acesso actual à cópia CBF supera a indisponibilidade assinalada em notas antigas; não activa regra nem apaga a nota histórica. Artigos, páginas, hashes e limites no recibo. A compilação não dispensa o período/alterações de cada tratamento, nem cria validação jurídica genérica adicional.
**Código por implementar em L7:** qualificação e persistência específicas; efeitos segregados; regras das famílias acima, por parcelas; conciliação sem duplicação; relatório/exportação correspondente. **Documentação por caso:** estatuto/reconhecimento ou enquadramento individual quando a fonte o exige; identificação de parcela/limite/cronologia; norma sectorial ainda sem correspondência; edição/campo de transporte afectado. Cada uma conserva exemplo e condição de retoma na linha correspondente. Não é necessário resolver todos os documentos para começar o primeiro incremento independente. L6 operacional não elimina este desenvolvimento; L7 delimitado não é L7 implementado; L8 conserva a liquidação final.
## 26/10/2026 — L7: qualificação, despesas autónomas e casos compatíveis em QA
**QA, sem instalação.** Base instalada preservada `5aaf1a56`; delimitação `d37fffb2`; ramo `codex/irpc-l7-common-autonomous-qa-20261026`, fotografia opcional `IRPC-normal-adjustments/10`. L6 continua operacional no âmbito demonstrado, com os cinco grupos de código e cinco documentais preservados. A implementação abaixo acrescenta apenas os tratamentos demonstrados; não conclui L7 nem o IRPC. Saldo final, retenções, pagamentos e aplicação anual de créditos permanecem em L8.
**Qualificação comum executável:** reutiliza sujeito/NUIT, âmbito, período, origem da oportunidade/dossier, sector e território; guarda condições, prova, fonte/artigo e período por tratamento. «Informação em falta», «ausência declarada», «não aplicável/condição negativa» e «calculado» têm resultados distintos. Desconhecido não vira zero. Período incompatível, identidade por reconciliar ou contradição afectam só o resultado dependente. A localização não escolhe taxa nem activa benefício. Os snapshots de origem ficam internos; o relatório apresenta contexto legível e as condições documentadas.
**Despesas61(4):** cada parcela aponta para uma linha `undocumented` do mapa36(1)g de L6, com acréscimo integral já calculado. Montante, documento e linha são reutilizados; L7 não introduz outro acréscimo nem outra despesa. A classificação legal e incidência são declaradas com prova própria; falta de anexo não classifica uma despesa. O imposto autónomo usa35% apenas nos casos qualificados. Duplicação da referência, parcela não correspondida, ausência contraditória ou informação insuficiente deixam o imposto reconciliado indeterminado; as parcelas conhecidas permanecem discriminadas. Condição negativa documentada conserva o ajustamentoL6 e não aplica imposto autónomo à parcela.
**Cooperativas12/14:** agrárias, artesanato ou culturais, residentes, com base ordinária integralmente elegível e ausência documentada de rendimentos sujeitos a retenção, aplicam redução de50% à taxa geral32%, ou16%. Não depende de seleccionar um sector semelhante. A qualificação especial pode coexistir com a opção «outro tratamento» da colectaL6: não exige fingir que a taxa reduzida é regime geral. Parcela mista, rendimentos retidos, outra entidade ou ausência contraditória conservam pendência própria; não recebem redução global presumida. O imposto autónomo de despesas não é reduzido por esta taxa.
**CBF16:** reutiliza identificadores e valores dos activosL6 suportados; imóvel novo do projecto ou máquinas industriais/agro-industriais das categorias correspondidas, com enquadramentoCBF3/9 e reconhecimento10 quando exigido (ou excepção identificada). Recorte inicial: primeiro exercício anual civil2026, método constante pela taxa normal máxima da tabela, activo desde01/01/2026, custo histórico novo, sem quotas anteriores/saída e sem cumulação de outros benefícios. Incrementa a taxa normal em50% e reutiliza limites de contabilização/saldo fiscal. Deduz apenas a diferença entre o mapa normal e o acelerado, sem alterar o activo de origem, os documentos ou os saldos oficiais. Quotas constantes gerais e demais cálculosL6 conservam o comportamento anterior quandoL7 está ausente.
| Caso sintético recuperado da API QA | Lucro/base e colecta de referênciaL6 | EfeitoL7 demonstrado | Resultado e limite |
| --- | --- | --- | --- |
| Despesa100 já acrescida36g | Lucro/base3230;colecta1033,60MZN | Novo ajustamento ao lucro0;imposto autónomo35 | Colecta combinada1068,60MZN;saldo finalL8indeterminado |
| Classificação da mesma despesa em falta | Lucro/base3230;colecta1033,60MZN preservados | Imposto autónomo indeterminado | Colecta combinada indeterminada;sem perda dos cálculos independentes |
| Condição negativa documentada na parcela | Ajustamento36g100 preservado | Parcela não aplicável;imposto autónomo0 justificado | Não confunde condição negativa com informação em falta |
| Ausência declarada de despesas autónomas | Lucro/base3130;colecta1001,60MZN | Ausência com suporte;imposto autónomo0 | Ausência contraditória com despesa36g fica pendente |
| Cooperativa integralmente abrangida | Base3130;colecta geral1001,60MZN | Taxa16%;colecta500,80MZN | Base/proveitos não alterados;sem retenções/créditos abatidos |
| Máquina industrial existente:base1000,taxa10%,quota contabilística120 | Quota normal100;lucro/base6260;colecta2003,20MZN | Quota acelerada150,mas dedução limitada120;diferença adicional20 | Lucro/base6240;colecta1996,80MZN;sem deduzir50 nem150 outra vez |
**Cálculo → gravação → recuperação → relatório:** fotografia10 opcional no mesmo livro/snapshot, chave com entradas/contexto e histórico imutável anterior. SemL7, a fotografia9 aceite e a sua chave/totais permanecem iguais. Recalcular não acumula imposto nem duplica o acréscimo. HTML e dossier financeiro mostram referênciaL6, efeitosL7, parcelas autónomas, fonte, condições, período e limitações; recuperação e download demonstrados no componente real. Uma mudança de origem/entradas torna a fotografia anterior histórica; não altera o registo anterior. M20/M22 conservam a preparaçãoL6 de referência: **este incremento não transporta efeitosL7 para campos oficiais por aproximação**, nem resolve as divergências documentais existentes.
**Provas novas:** Wayfinder `--with-form` gerou routes/actions pelo wrapper QA; TypeScript e build QA passaram. Dezanove testes dirigidos novos passaram, incluindo comparação exacta com a fotografia9 aceite, duplicação, período curto, opção especial de cooperativa, ausência contraditória, dados em falta e contexto apresentado sem despejar snapshots internos. API privada:1teste/108asserções, `simulator_fiscal_delta_20261021_test`,127.0.0.1:55441, transacção com rollback e guarda de identidade/base; seis casos recuperados com plano/livro/históricos idênticos. UI do componente real: alteração de classificação, informação em falta, ausência, cooperativa mista, cumulação pendente, gravação/recuperação local e exportação; sem erros de página. A prova local é distinta da API. Não houve testes/escrita no activo nem repetição das suites funcionais aceites de L3, ISPC, câmbio ou L5/L6.
**Entrega agrupada preparada:** qualificação + despesas autónomas, cooperativa integralmente elegível e amortizaçãoCBF16 no recorte acima. Despesa autónoma e cooperativa também foram demonstradas juntas:parcela35 sem redução,colecta sobre a base516,80 e combinada551,80MZN no exemplo de base3230. Isto não autoriza cumulação cooperativa+CBF16: essa combinação mantém resultado dependente indeterminado. A futura instalação segue o procedimento Git existente, com backup/restauro fresco e conferência do delta; não foi executada nesta passagem.
**SaldoL7 na mesma matriz:**
| Natureza | Ainda fora da cobertura / exemplo | Condição concreta de retoma |
| --- | --- | --- |
| Código | Despesa autónoma fora de linha36g calculada ou parcela ainda não segregada | Implementar origem/segregação correspondente e prova da incidência;não copiar montante para uma segunda despesa |
| Código | Cooperativa com actividade abrangida e outra não abrangida,ou rendimento sujeito a retenção | Segregar proveitos/custos/base e aplicar o tratamento apenas à parcela elegível;L5 conserva a retenção |
| Código | CBF16 em imóvel reabilitado,outra categoria,quota inferior à máxima,método degressivo,duodécimos,quotas anteriores ou exercício posterior | Corresponder regra e cronologia respectivas e reutilizar o activo/quotas existentes;pendênciaL6 limita apenas o activo dependente |
| Código/documento por caso | Cooperativa+CBF16 ou outro benefício positivo a cumular | Identificar compatibilidade,ordem e limites específicos;implementar a combinação,sem presumir soma de benefícios |
| Código | Mais-valias61-A,demais isenções/deduçõesCBF17–19,regimes sectoriais/territoriais e operações especiais | Implementar a família/parcelas já delimitadas na secção anterior;período e fonte específicos,sem nova pesquisa transversal |
| Documento por caso | Estatuto/título/excepçãoCBF ou prova das condições em falta;endereçoZEE sem estatuto | Juntar o elemento que a disposição exige ou registar condição negativa;localização isolada permanece insuficiente |
| Transporte/documento | CampoM20/M22 para efeitoL7,edição divergente ou representação não correspondida | Correspondência do campo/edição e regra de representação demonstradas;preservar o cálculo independente exacto |
| ÂmbitoL8 | Direito potencial ao créditoCBF15,aplicação anual de créditos,retenções,pagamentos e saldo final | Executar o mecanismo próprioL8;nenhuma dedução/compensação anual é presumida neste lote |
Fontes reutilizadas: inventário autorizado8143ficheiros; originaisCIRPC/alterações e CBF/compilaçãoAPIEX já identificados na delimitação,com hashes conservados. Sem activação por consulta ou revalidação jurídica genérica. Recibo: `docs/investmoz/simulations/irpc-l7-common-qa-20261026.json`. Provas locais: `outputs/irpc-l7-common/`; reprodução dirigida: `node --test tests/frontend/irpc-special.test.mjs`, `php tools/irpc-special-qa.php routes`, `php tools/irpc-special-qa.php test`, `tsc --noEmit`, build com `INVESTMOZ_QA_BUILD=1`.
## 26/10/2026 — preparação da entrega L7 e preservação do main concorrente
A entrega do âmbito QA `ab2ff2fd` integra o `main` concorrente `a2122dc3`, sem substituir as alterações de apresentação/navegação. Os seis ficheiros de execução L7 conservam exactamente o código QA;os oito ficheiros concorrentes conservam exactamente o código do main. Reutilizadas as provas19testes/API108/UI/tipos/build de L7. O conflito documental foi resolvido recuperando586linhas de histórico do manual que tinham sido removidas no merge concorrente,sem apagar a sua notaV2-01 no CSV. As3555linhas mantêm-se,com o único delta fiscal emAUD-SIM-INT02. O registo de instalação só será actualizado após backup/restauro fresco,conferência do destino e conclusão da entrega Git;esta nota não a antecipa.
## 26/10/2026 — primeira entrega agrupada L7 instalada pelo Git
Instalada `e07f89da3d59d06aa1b8c50c22a478b7b167bfdd` (integração do código QA `ab2ff2fdbcbe6fb94f03e4bc4cc7ccbd647d94fc` com o main concorrente`a2122dc3`),com `5aaf1a56f9d928331364fcc8b0d1528e51dba327` preservado como versão anterior. Os seis ficheiros de execução L7 são exactamente os da prova QA aceite;as sete alterações concorrentes de apresentação/navegação e o respectivo teste foram preservados. Recuperadas586linhas de histórico do manual removidas no merge concorrente;notaV2-01 conservada,sem alterar o seu conteúdo.
Backup fresco `2026-10-26T10:55:59Z`;restauro isolado sem rede/55441 verificou174tabelas por contagem/checksum e369ficheiros/configuração. Conferidos13ficheiros de execução do delta,50protegidos e31originais. Schema,roles/grants e permissões mantêm-se;172tabelas de negócio iguais ao backup. Cache/sessões reconciliadas por eventos operacionais e acessos públicos,sem inferir perda por RLS. A versão activa e a anterior foram preservadas durante o arquivo conferido de dependências antigas para recuperar espaço;nenhum dado,original ou backup foi eliminado.
Revisão/manifest público,marcadoresL7/L6/câmbio,assets e simuladorHTTP200 conferidos. Procedimento Git concluído;provas funcionais aceites19testes/API108/UI/tipos/build reutilizadas. Os controlos automáticos obrigatórios da instalação ficaram registados no recibo,sem nova ronda manual dos casos aceites. Sem migrações,importações,recálculo de históricos ou escrita privada sintética no activo.
Disponíveis apenas qualificação e tratamentos demonstrados:despesas61(4) sobre36g já ajustado,cooperativas12 integralmente abrangidas eCBF16 no recorte documentado. L6 permanece operacional no âmbito aceite;as suas pendências condicionam só dependentes. L7/IRPC não estão integralmente concluídos;localização não concede benefício;saldo final permaneceL8. O estado anterior deQA sem instalação é histórico. Recibo:`docs/investmoz/simulations/irpc-l7-common-delivery-20261026.json`.
## 26/10/2026 — saldo concreto de L7 após a primeira entrega agrupada
O âmbito demonstrado compreende qualificação comum, imposto autónomo61(4) sobre parcelas36g já calculadas emL6, cooperativas12 integralmente abrangidas e amortizaçãoCBF16 nos activos/período/método expressamente suportados. L7 permanece parcial. Este saldo distingue implementação de prova documental por caso; não cria outra matriz nem exige revalidação genérica das fontes aceites. L6 mantém o estado operacional delimitado e as suas pendências; só condiciona tratamentos que efectivamente dependam delas.
### Código ainda por implementar
| Tratamento / caso fora da cobertura | Exemplo | Condição concreta de retoma |
| --- | --- | --- |
| Despesas autónomas fora de parcela36g calculada e segregações adicionais | Despesa100 com apenas60 correspondidos no mapa de origem,ou encargo não incluído no resultado de partida | Implementar origem/parcela e reconciliação próprias,documentar incidência61(4) e impedir nova contabilização/acréscimo da mesma despesa. O ramo já entregue36g não é reaberto. |
| Cooperativas com rendimentos mistos/retidos;demais isenções por natureza da entidade,CIRPC9–14 | Cooperativa com actividade agrária e serviços não abrangidos;associação com rendimentos comerciais acessórios | Segregar proveitos,custos e base elegível e implementar o artigo específico. Não reduzir a base inteira nem estender a redução às retençõesL5. |
| ExtensõesCBF16 e combinações de benefícios | Imóvel reabilitado,método degressivo,quota inferior à máxima,duodécimos,quotas anteriores,ano posterior,cooperativa+CBF16 | Corresponder a regra temporal/método/contabilização e a compatibilidade/ordem/limite da combinação;reutilizar activo e quotas. Tabela ou casoL6 em falta impede apenas o activo dependente. |
| Mais-valias autónomas61-A e operações especiais | Ganho100 já incluído no resultado em2026;entrada de activos/fusão;perda transferida de outra sociedade | Implementar apuramento/parcela e reconciliação com resultadoL6,sem dupla incidência ou compensação de perdas presumida;para operações,aplicar54–56/41-A e preservar valores históricos. |
| Deduções/majoraçõesCBF17–19 e crédito potencialCBF15 | Formação sem ramo/base de limite;investimento novo com activos elegíveis e excluídos | Implementar elegibilidade,base,limite,ordem,janela temporal e não cumulação. CBF15 emL7 delimita direito/origem/crédito potencial;utilização anual,limitação por créditos/saldos e liquidação ficam emL8. |
| Regimes sectoriais/territoriais e disposições especiais | Projecto emZEE sem tratamentoIRPC correspondido;actividade mineira/petrolífera com regime próprio | Implementar a disposição/versão/período aplicáveis ao projecto e à parcela (CBF20–48 ou diploma específico). Endereço/código sectorial só identifica candidato;benefício aduaneiro não se transforma em benefícioIRPC. |
| Transporte de efeitosL7 paraM20/M22 | Imposto autónomo ou redução calculados mas sem campo/edição correspondente | Implementar apenas a correspondência demonstrada e a representação aplicável;conservar os montantes exactos e a preparaçãoL6 de referência,sem campo/taxa provisórios. |
### Dependências documentais que condicionam apenas o caso afectado
| Elemento em falta / dúvida concreta | Exemplo | Condição de retoma |
| --- | --- | --- |
| Classificação/incidência,parcela e período da operação | Há uma despesa36g e falta qualificar61(4);ou há actividade elegível e outra não abrangida | Associar prova/declaração da natureza e parcela ao exercício correcto. Informação em falta continua indeterminada;condição negativa e ausência declarada têm suporte próprio. Não inferir pela falta de anexo. |
| Estatuto e reconhecimento exigidos pela disposição | Endereço numaZEE sem estatuto do projecto;CBF16 sem instrumento10 ou norma de excepção | Juntar o elemento concreto exigido ou documentar a condição negativa/excepção aplicável. Não pedir aprovador ou parecer jurídico genérico adicional. |
| Norma/período/compatibilidade específicos ainda não correspondidos | Redução com termo31/12/2025 pretendida em2026;cumulação cooperativa+CBF16 | Disposição de vigência/prorrogação efectiva ou correspondência da combinação e seus limites. Sem informação nova,não repetir pesquisa transversal;prosseguir com os restantes casos. |
| Edição,campo ou representação do formulário | EfectoL7 com campoM20/M22 não identificado ou fracção sem regra de representação | Identificar exemplar/edição,instrução/campo e forma de representar o valor;limitar a pendência ao transporte afectado. O cálculo independente mantém-se disponível. |
**Limites conservados:** localização não concede benefícios automaticamente;benefício desconhecido não é zero;colecta normal,L7 e imposto autónomo permanecem discriminados. Retenções,pagamentos,aplicação anual de créditos e saldo final a pagar/recuperar continuam emL8. As provas aceites não são invalidadas por esta lista nem por uma dúvida documental num caso independente.
## 26/10/2026 — reconciliação do estado servido L7 e capacidade do instalador
Conferência autenticada por leitura em `2026-10-26T13:56:51.412248+02:00` (Africa/Johannesburg):o portal,o registo do instalador e o main actual coincidem em `e07f89da3d59d06aa1b8c50c22a478b7b167bfdd`. **L7 já está instalado no âmbito demonstrado**,com origemQA`ab2ff2fd`;o estado «ainda emQA,sem instalação» é histórico/desactualizado. A instalação terminou em26/10/2026 às13:02:35 locais;backup anterior às12:55:59 e restauro174tabelas/369ficheiros permanecem comprovados pelo recibo de entrega. Nesta passagem,o dump e o arquivo de ficheiros ainda coincidem com os hashes desse backup e a prova de restauro refere o mesmo dump. Não foi apresentado um novo backup/restauro como executado,nem repetida a instalação da revisão já activa.
**Partição do instalador e backup:**`/dev/md2 / ext4`;release,state,backup,tmp eDocker no mesmo dispositivo. Livres5.52GiB e21448231inodes de29089792. O código do instalador mantém o limiar5GiB;os ficheiros do backup observado ocupam0.164GiB. A leitura satisfaz5GiB+um backup desse tamanho,com margem0.35GiB. A release actual tem28674ficheiros e2503directórios sem seguir links,como referência de escala,não um novo limite arbitrário de inodes. Futuras entregas devem voltar a medir a capacidade imediatamente antes da operação;estes números não garantem uma carga futura diferente. Nenhuma limpeza local/remota foi executada;SGF TEMPO não foi afectado.
**Só o delta L7:**seis hashes de código correspondem à provaQA;revisão/manifest,sete marcadoresL7,quatroassets e entrada do simuladorHTTP200 conferidos. Reutilizadas as provas19testes/API108/UI/tipos/build e as provas anteriores de preservaçãoL6/L3/ISPC/câmbio;sem nova ronda funcional,escrita privada sintética,migração ou importação. A revisão activa e a anterior permanecem preservadas.
**Próximo conjunto delimitado para implementaçãoQA:CBF16 com duodécimos.** Reutilizar activos,tabela/taxa normal máxima,método constante,qualificaçãoCBF e periodizaçãoL6 existentes. Primeiro caso:exercício anual civil2026 com entrada em uso durante o ano;imóvel novo do projecto ou máquina industrial/agro-industrial já suportada;sem quotas anteriores,saída ou cumulação de outros benefícios. Ligar a quota mensalL6 ao incrementoCBF16,limitando ao contabilizado/saldo fiscal e mostrando apenas a diferença adicional. Demonstrar condição satisfeita,negativa,informação em falta e ausência declarada,cálculo→gravação→recuperação→relatório,efeitos no lucro/base/colecta e conservação dos históricos. Este conjunto está apenas delimitado:não é novo cálculo instalado.
Degressivo,reabilitados/usados/reavaliados,quotas anteriores e cumulação cooperativa+CBF16 continuam nos casos próprios. O saldo anterior de sete grupos de código e quatro dependências documentais permanece na mesma matriz,com exemplos/condições de retoma;nenhuma pendência foi apagada. Documento individual em falta limita só o activo/caso dependente. Localização não concede benefício. **L6 operacional delimitado;L7 parcial;retenções,pagamentos,créditos anuais e saldo final emL8.** Recibo:`docs/investmoz/simulations/irpc-l7-server-state-20261026.json`.
## 26/10/2026 — CBF16 com duodécimos demonstrado em QA
**QA preparado, sem instalação.** O portal mantém `e07f89da`, incluindo o primeiro conjuntoL7 `ab2ff2fd`. Este incremento implementa a ligação CBF16–duodécimos delimitada no recibo `irpc-l7-server-state-20261026.json`. L6 permanece operacional no âmbito aceite;L7 continua parcial;L8 conserva retenções,pagamentos,aplicação anual de créditos e saldo final a pagar/recuperar. SGF TEMPO não foi afectado.
**Reutilização e condições:** a opção «Preparar CBF16 com duodécimos» é explícita e conserva os activos,datas,valores e restantes escolhas. O utilizador confirma a reutilização dos meses e da opção mensal do mapaL6. Sem essa opção,os livros/resultados entregues permanecem na fotografia10,com a mesma chave e valores. Com ela,a fotografia11 guarda a preparação,o cálculo e o histórico10 anterior. É possível manter a preparação anual sem alterar automaticamente activos ou apagar resultados anteriores.
Recorte demonstrado:exercício anual civil2026,activo novo já suportado emL6,imóvel novo afecto ao projecto ou máquina industrial/agro-industrial das categorias correspondidas,método constante pela taxa normal máxima,entrada emuso durante2026,sem saída,quotas anteriores ou cumulação de outros benefícios. Mantêm-se prova das condiçõesCBF3/9,reconhecimento10 quando exigido (ou excepção identificada),afectação e período. Localização/sector não activam benefício. Os meses calculados por L6 incluem o mês da entrada emuso;não se introduz cálculo diário nem uma segunda agenda de amortização.
**Cálculo:** usa o motor de amortizaçõesL6 existente,com taxa normal×1,5 e os mesmos duodécimos/12. Mantém base depreciável,terreno/residual,limite contabilístico e saldo fiscal. L7 aplica apenas a diferença entre a dedução fiscal normal e a acelerada;não cria outro activo ou uma segunda depreciação contabilística. Os outros activos do mapa conservam a quota normal. O resultado de referênciaL6 e o resultado apósL7 são apresentados separadamente.
| Caso sintético | Valores demonstrados |
| --- | --- |
| Máquina existente:base1000,taxa normal10%,entrada15/07/2026,6duodécimos,contabilizado60 | Quota normal50;quotaCBF16 75;dedução limitada60;diferença adicional10MZN. Lucro/base de referência6310 e colecta2019,20;apósL7 lucro/base6300 e colecta2016,00MZN. Saldo finalL8indeterminado. |
| Entrada emOutubro,3duodécimos | Quota normal25;quotaCBF16 37,50;diferença12,50 quando o contabilizado a suporta. |
| Entrada emDezembro,1duodécimo | Quota normal25/3,quotaCBF16 25/2;diferença exacta25/6MZN,sem arredondamento fiscal presumido. Aproximação de apresentação e valor exacto permanecem distintos. |
| Imóvel novo já classificado emL6 | Terreno/residual e base são reutilizados;taxa e meses aplicam-se à mesma base. O exemplo confirma quota40→60,limitada50,com diferença10. |
| Falta de suporte da opção/datas/condições | CBF16 fica indeterminado;entradas e referênciaL6 conhecidas conservadas. Não substituir desconhecido por zero. |
| Condição negativa / ausência declarada | Estados distintos e documentados;nenhuma taxaCBF16 aplicada à parcela negativa;ausência produz efeito zero justificado. |
**Demonstração executada:**15testes dirigidos novos,com comparação exacta dos três livros10 aceites (despesa autónoma,cooperativa e amortização anual),sem repetir as suas suites funcionais. API privada:1teste/89asserções,cinco casos mensal/fracção/falta/negativa/ausência,em `simulator_fiscal_delta_20261021_test`,127.0.0.1:55441,guarda de identidade/base e transacção com rollback. Cálculo→gravação→recuperação→HTML e dossier financeiro conferidos a partir dos casos recuperados,com plano/activos/históricos conservados. Recalcular não acumula a diferença adicional. Alterar a data invalida a fotografia corrente sem alterar a anterior.
UI do componente real:opção explícita/cancelamento,alteração das datas e opção mensal no activoL6,informação em falta,6→3duodécimos,limite75→60,diferença10,fracção25/6,gravação/recuperação local e download do relatório;sem erros de página. Esta prova local é distinta da API. Wayfinder`--with-form`,TypeScript e buildQA passaram. Não houve escrita no activo,migração,importação,activação por consulta de fonte ou nova ronda das provas não afectadas deL3/ISPC/câmbio/L5/L6. O motor de amortizaçõesL6 não foi alterado.
**Saldo e condição de retoma:** este recorte cobre duodécimos em exercício anual civil2026;períodos fiscais curtos/autorizados distintos,saídas,anos posteriores,quotas anteriores,quota escolhida inferior à máxima,degressivo,reabilitados/usados/reavaliados e cumulações mantêm correspondência própria. Retomar cada caso quando a respectiva regra/período/contabilização e compatibilidade estiverem ligados ao activo/documentos já existentes,e demonstrar só o seu efeito novo. Uma pendênciaL6 afecta apenas o activo dependente. Os restantes grupos do saldoL7 e os camposM20/M22 ainda sem correspondência mantêm-se;este lote não preenche campos oficiais por aproximação nem conclui o IRPC.
**Entrega agrupada:** os casos compatíveis mensal/fracção/negativa/ausência/informação insuficiente acompanham o mesmo candidato. A capacidade remota de5,52GiB/21448231inodes observada às13:56:51 de26/10 é histórica,não confirmação para nova instalação. Antes da próxima entrega,medir outra vez espaço/inodes na partição de release+backup+temporários,confrontar com o limiar existente5GiB e o backup/carga dessa execução,conferir o main então actual e executar backup/restauro fresco. Manter a versão activa até a nova ficar pronta. Não executar limpeza local ou doSGF para substituir esse controlo remoto.
Fontes e inventário8143 reutilizados dos cotejos aceitesCBF16 eDecreto72/2013art9;originais preservados,sem pesquisa transversal repetida. Recibo:`docs/investmoz/simulations/irpc-l7-months-qa-20261026.json`;provas locais:`outputs/irpc-l7-months/`. Reprodução dirigida: `node --test tests/frontend/irpc-special-months.test.mjs`; `php tools/irpc-special-months-qa.php routes`; `php tools/irpc-special-months-qa.php test`; `tsc --noEmit`; build com `INVESTMOZ_QA_BUILD=1`.
## 26/10/2026 — CBF16 com duodécimos instalado pelo Git
Instalado `0bd5d495505d512088887efd3dc5c61f645b1647`,com `e07f89da3d59d06aa1b8c50c22a478b7b167bfdd` preservado como versão anterior. O main não apresentava divergência;integração por fast-forward sem alterações de código à candidataQA. Backup fresco `2026-10-26T12:34:42Z` e restauro isolado sem rede/55441:174tabelas e369ficheiros/configuração conferidos. Capacidade medida imediatamente antes:5.50GiB e21448052inodes;depois do backup:5.33GiB,acima do limiar existente5GiB,com inodes disponíveis confrontados com a carga observada. Sem limpeza local/remota ou intervençãoSGF.
Conferidos3ficheiros do delta,60ficheiros de execução protegidos e31originais. Schema,roles/grants e permissões iguais;172tabelas de negócio mantêm o backup,cache/sessões reconciliadas com eventos operacionais/acessos públicos. Revisão/manifest,marcadoresCBF16 e suporte10,assets e simuladorHTTP200 conferidos. Sem migrações,importações,recálculo de históricos ou escrita privada sintética no activo. Reutilizadas as provasQA15testes/API89/UI/tipos/build;apenas os controlos automáticos obrigatórios do procedimentoGit e a conferência do delta instalado.
O exemplo mantém quota normal50,quotaCBF16 75 limitada ao contabilizado60:dedução adicional**60−50=10MZN**,não75 nem uma segunda amortização. Lucro/base apósL7 6300 e**colecta simulada2016MZN**;saldo final a pagar/recuperar por determinar emL8. Os tratamentos de despesas autónomas,cooperativas abrangidas e amortizações anuais anteriores permanecem disponíveis,com fotografias/históricos conservados. O estadoQAsem instalação é histórico para este incremento.
**SaldoL7:**CBF16 anual com duodécimos entregue;continuam fora deste recorte períodos curtos/não civis,saídas,anos/quotas anteriores,métodos/categorias não correspondidos,cumulações e restantes famílias/transportesM20M22 já discriminados na mesma matriz. Retoma por regra/período/contabilização e compatibilidade do caso;documentos em falta só limitam o dependente. O próximo conjunto a executar emQA é**CBF16 em período curto por início de actividade de residente em2026**,reutilizando tipo/período e mesesL6,sem anualizar base ou taxa. Cessação,transição e outras extensões conservam âmbito próprio. L6operacional delimitado;L7parcial;localização não concede benefício;L8conserva liquidação final. Recibo:`docs/investmoz/simulations/irpc-l7-months-delivery-20261026.json`.
## 26/10/2026 — CBF16 no início de actividade demonstrado em QA
**QA preparado, sem instalação.** O portal mantém `0bd5d495`, com duodécimos anuais e os tratamentos anteriores preservados. Este incremento cobre apenas CBF16 num período curto por início de actividade de residente em2026,com meses completos até31/12. Reutiliza período,tipo,suporte e activosL6,sem anualizar resultados. Não altera o motor cambial/de amortizaçõesL6 nem volta a pesquisar fontes/provas aceites.
A preparação é explícita dentro dos duodécimosCBF16. Pode reutilizar o suporte já declarado emL6 por acção do utilizador,sem modificar datas,activos ou qualificação. Exige condiçõesCBF3/9,reconhecimento10 quando aplicável ou excepção identificada,afectação do activo e suporte do período. Activo novo já correspondido,entrada emuso no período,método constante pela taxa normal máxima,sem quotas anteriores,saída ou cumulação. A localização não activa benefícios. Sem a nova opção,as fotografias10/11 mantêm chaves e resultados;com ela,a fotografia12 conserva o resultado11 e todo o histórico anterior.
| Caso novo | Efeito demonstrado |
| --- | --- |
| Início1Julho;máquina com entrada15Julho,base1000,taxa10%,contabilizado60 | 6mesesL6;quota normal50,acelerada75,limitada60:dedução adicional10MZN. Lucro/baseL6 3130→L7 3120;colecta simulada1001,60→998,40MZN. Saldo finalL8indeterminado. |
| InícioOutubro / Dezembro | 3 /1meses efectivos;sem anualização. Dedução adicional5 /5/3MZN,com fracção exacta e aproximação de apresentação separadas. |
| Suporte em falta | SóCBF16 fica indeterminado;referênciaL6 conhecida e entradas conservadas. |
| Condição negativa / ausência declarada | Estados distintos e justificados;efeito zero identificado,sem taxa acelerada aplicada à parcela negativa. |
Provas novas dirigidas:9testes;API privada1teste/97asserções emQA isolada127.0.0.1:55441/base `simulator_fiscal_delta_20261021_test`,com guarda e transacção/rollback. Cinco casos passaram cálculo→gravação→recuperação→HTML e dossier financeiro. Comparação exacta do resultado11 aceite e conservação de todo o histórico,plano,activos e outros livros;recalcular não acumula deduções. Interface real demonstrou preparar/cancelar,reutilizar suporteL6,pendência,limites,fracções,guardar/recuperar e exportar,sem erros. Wayfinder`--with-form`,TypeScript e buildQA passaram. Conferidos584ficheiros protegidos e31originais sem alteração;nenhuma migração/importação/escrita privada no activo. SGF TEMPO separado.
**Saldo concretoL7 — código:**(1)outras origens/parcelas de despesas autónomas;(2)cooperativas mistas/retidas e demais entidades9–14;(3)CBF16 cessação/transição/períodos não civis,saídas,quotas/anos anteriores,quota inferior,métodos/categorias e cumulações;(4)mais-valias61-A/operações54–56/41-A;(5)CBF17–19 e direito potencial15;(6)regimes sectoriais/territoriais;(7)transporteL7M20/M22. A extensão de início de actividade sai deste saldo apenas no recorteQA acima;cessação é um próximo candidato compatível,reutilizando o períodoL6,com regra/quotas/saída próprias a demonstrar antes de se declarar suportada.
**Documentos por caso — exemplos/retoma:**despesa36g sem qualificação61(4)→associar natureza/parcela/período;projecto sem reconhecimento10→instrumento ou norma de excepção exigida;cumulação cooperativa+CBF16→disposição aplicável,ordem e limites;efeitoL7 sem campoM20/M22→exemplar/edição/campo e representação das fracções. Não são novos aprovadores ou revalidações genéricas. A dúvida limita o caso/campo dependente;as demais provas permanecem válidas.
Entrega agrupada preparada para os cinco casos compatíveis,sem instalação deste incremento. Na futura entrega:medir novamente espaço/inodes/carga de compilação e backup,conferir o main então actual e executar backup/restauro fresco,mantendo a versão activa até a nova ficar pronta. O controlo de5,50GiB antes/5,33GiB após backup desta entrega0bd5d495 é histórico,não garantia futura. **L6 operacional delimitado;L7 parcial;colecta distinta do saldo final deL8.** Recibo:`docs/investmoz/simulations/irpc-l7-start-period-qa-20261026.json`;provas:`outputs/irpc-l7-start-period/`. Reprodução dirigida:`node --test tests/frontend/irpc-special-start-period.test.mjs`;`php tools/irpc-special-start-period-qa.php routes`;`php tools/irpc-special-start-period-qa.php test`;`tsc --noEmit`;build com `INVESTMOZ_QA_BUILD=1`.
## 26/10/2026 — CBF16 cessação e quotas anteriores: entrega agrupada preparada em QA
**QA, sem instalação.** O conjunto inclui `ba83afe7` (início de actividade) e acrescenta cessação da actividade em2026 e quotas anteriores documentadas de activos que entraram emuso em2025. A versão do portal comunicada permanece `0bd5d495`;não se voltou a instalar ou a conferir remotamente o activo nesta passagem. O main entretanto avançou para `ae0d74bb`;a candidata incorpora a alteração visual de «Porquê investir»,a nota do manual e a linhaV2-01 da matriz,sem perda das notas fiscais. Nenhum ficheiro dessa alteração foi substituído pelo incrementoL7.
**Condições e reutilização.** Preparação opcional13,distinta de início12 e do recorte mensal11,sem alteração das chaves/resultados anteriores. Usa sujeito/período/activos/quotas e saldosL6. CBF3/9/10/16,Decreto72/2013 art3(3),9(1–3) e10 eCIRPC7(4):condições/afectação/reconhecimento ou excepção identificados,ano civil2026 ou cessação de residente desde1Janeiro até ao último mês completo,contabilização/saldos reconciliados,método constante pela taxa normal máxima,duodécimos desde entrada emuso e ausência de cumulação. Localização não concede benefício.
O recorte de implementação admite activos novos a custo histórico com entrada2025/2026. A selecção destes anos é coberturaQA,não um limite legal inventado para os restantes activos. Valores anteriores contabilísticos,fiscais,parcela temporariamente tributada e suporte são reutilizados deL6;não se recalculam taxas/benefícios de exercícios passados. Uma entrada em2026 com quotas anteriores positivas fica por reconciliar. Informação em falta não é zero;condição negativa e ausência declarada permanecem distintas.
**Cessação não é saída do activo.** O termo do período limita os meses efectivos,sem preencher transmissão/inutilização por presunção. Uma saída de activo documentada dentro do período reutiliza a dataL6 e exclui o mês do evento,conformeart9(2);sem ela,reutiliza os meses do período. Este ramo só apura a amortização,não calcula uma mais-valia ou operação de transmissão por aproximação.
| Caso sintético novo | Efeito no cálculo |
| --- | --- |
| Cessação30Junho,activo emuso desdeJaneiro2026,sem quotas anteriores,contabilizado60 | 6meses;quota normal50,acelerada75 limitada60;diferença adicional10MZN. Lucro/base3130→3120;colecta simulada1001,60→998,40MZN. Sem saída do activo presumida. |
| Mesmo período,activo2025;quotas anteriores contabilísticas150,fiscais100,parcela recuperável50 | Dedução normal50;acelerada75,incluindo15 de parcela anterior. Diferença adicional25MZN,sem somar novamente os15. Saldo anterior aritmético50→35;saldo fiscal após dedução850→825. Lucro/base3130→3105;colecta simulada1001,60→993,60MZN. Os saldos declarados150/100/50 permanecem intactos. |
| Ano civil2026,mesmos saldos anteriores,contabilizado120 | Dedução100→150,incluindo30 de parcela anterior;diferença adicional50MZN e saldo anterior aritmético20. Lucro/base6260→6210;colecta simulada2003,20→1987,20MZN. |
| CessaçãoJunho com saída do activo documentada20Junho | 5meses;quota normal125/3 eacelerada125/2;diferença125/6MZN. Fracção exacta preservada,sem arredondamento fiscal presumido. |
| Saldo fiscal remanescente20 ou contabilização/parcela anterior insuficiente | Ambos os cálculos respeitam os mesmos limites;dedução adicional pode ser zero,sem exceder a base nem consumir saldos oficiais. |
| Suporte em falta / condição negativa / ausência declarada | Estados e efeitos separados;uma falta de suporteCBF16 mantém a referênciaL6 conhecida e limita apenas o benefício dependente. Um saldoL6 desconhecido limita também os cálculos que dele dependem. |
**Provas novas:**11testes dirigidos,API privada1teste/123asserções,sete casos cálculo→gravação→recuperação→HTML/dossier financeiro. BaseQA `simulator_fiscal_delta_20261021_test`,127.0.0.1:55441,guarda de identidade e transacção com rollback. Comparação exacta do resultado12 aceite,conservação de todo o histórico,activos,plano e outros livros;recalcular não acumula a dedução nem reduz os saldos declarados. Interface real:preparar/cancelar,preencher apenas os suportes novos,pendência,recuperação15/saldo35,saída5meses/fracção,gravação/recuperação/exportação e ausência/negativa,sem erros. Wayfinder`--with-form`,TypeScript ebuildQA passaram;build/tipos conferidos também após incorporar o main. Reutilizadas,sem repetir,as provas aceites de `ba83afe7` e dos restantes percursos. MotoresL6 de amortizações/periodização/câmbio,schema,configuração,permissões,originais e provas anteriores preservados. SGF TEMPO separado;nenhuma escrita no activo,migração ou importação.
**Saldo concreto — código:**(1)outras origens/segregações de despesas autónomas;(2)cooperativas mistas/retidas e demais entidades9–14;(3)CBF16 com activos anteriores a2025,períodos parciais/não civis/transição,saídas fora do recorte,quota inferior,métodos/categorias e cumulações;(4)mais-valias61-A/operações54–56/41-A;(5)CBF17–19 e direito potencial15;(6)regimes sectoriais/territoriais;(7)transporteL7M20/M22. O recorte agora demonstrado deixa de figurar como integralmente por implementar,mas permanece apenas emQA. Retomar extensõesCBF16 com a regra temporal/método/base ligada aos activos e demonstrar o efeito novo;retomar mistos/cumulações com segregação,ordem e limites,sem pesquisar novamente o que já está aceite.
**Dependências documentais por caso:**natureza/parcela/período da operação→associar os factos e o exercício;reconhecimentoCBF10→instrumento ou excepção exigida;quotas anteriores150/100/50 sem suporte→reconciliar a parcela temporariamente tributada,sem incluir exclusões permanentes;cumulação→disposição/ordem/limites aplicáveis;campoM20/M22→exemplar/edição/campo e representação exacta. A falta limita só o caso/campo dependente,não exige aprovadores ou revalidação genérica de fontes.
**Entrega agrupada preparada:**início12 de `ba83afe7` mais cessação/quotas anteriores13,com as provas aceites e novas separadas no mesmo pacote. Antes de instalar,voltar a conferir main,espaço/inodes/carga de compilação ebackup,executar backup/restauro fresco e manter a versão activa até a nova ficar pronta. **L6 operacional delimitado;L7 parcial;colecta simulada não é saldo final:retenções,pagamentos,créditos anuais e saldo a pagar/recuperar permanecem emL8.** Recibo:`docs/investmoz/simulations/irpc-l7-cessation-prior-qa-20261026.json`;provas:`outputs/irpc-l7-cessation-prior/`. Reprodução só do delta:`node --test tests/frontend/irpc-special-cessation-prior.test.mjs`;`php tools/irpc-special-cessation-prior-qa.php routes`;`php tools/irpc-special-cessation-prior-qa.php test`;`tsc --noEmit`;build com `INVESTMOZ_QA_BUILD=1`.
## 26/10/2026 — CBF16 início, cessação e quotas anteriores instalado pelo Git
**Instalado `632dc06930d6b4f1b012feb3b4daa3b1cfc53f39`,incluindo `ba83afe7`.** Entrega única do início de actividade,cessação e quotas anteriores no âmbitoQA demonstrado. `0bd5d495` permanece como release anterior;históricos e provas aceites conservados. O main `ae0d74bb` e a alteração visual de «Porquê investir» foram incorporados,preservando texto/cor/geometria e a linhaV2-01 da matriz. Sem instalação separada dos dois incrementos.
**Capacidade e recuperação:**a primeira medição confirmou 4.32GiB,abaixo do mínimo existente5GiB,e a falha anteriorae0d74bb por falta de espaço;versão activa preservada. Conferidas ausência de instalaçõesnpm e de ficheiros abertos,só a cache regenerável `/root/.npm/_cacache` foi limpa pelo comando npm próprio. Recuperados 2.82GiB;32logs npm anteriores e `_npx` preservados. Sem apagar releases,backups,dependências dos projectos,provas únicas ou ficheirosSGF. Nova medição:7.15GiB e21431150inodes;após backup:6.99GiB,acima do limiar5GiB,com capacidade de backup/compilação e escala de inodes conferidas. O limiar do instalador não foi reduzido.
Backup fresco `2026-10-26T13:29:24Z`:174tabelas e369ficheiros/configuração conferidos;restauro isolado sem rede/porta55441 com174checksums iguais. Schema,roles/grants e permissões mantidos. Só depois destas guardas,integraçãoGit por fast-forward sem forçar o histórico. A release anterior ficou activa até a nova estar pronta. Revisão/manifest servidos,marcadores12/13 e restantes leitores,assets e simuladorHTTP200 conferidos após instalação. Três ficheiros do delta fiscal,60ficheiros protegidos/enquadrados no main e31originais correspondem ao destino preparado. Dados de negócio comparados com o backup;cache/sessões reconciliadas com eventos operacionais/acessos públicos. Sem migrações,importações ou escrita privada sintética no activo.
**Resultado demonstrado preservado:**dedução normal50MZN→acelerada75MZN;**75−50=25MZN adicionais**. Os15MZN recuperados de quotas anteriores **já estão incluídos nos75**,não são somados novamente. Saldo anterior aritmético35MZN;valores declarados150/100/50 e históricos mantidos,sem consumo de saldos oficiais. Lucro/base3105MZN e**colecta simulada993,60MZN**;saldo final a pagar/recuperar permanece indeterminado emL8. Cessação da actividade não presume transmissão/inutilização dos activos;saída só quando documentada no mapa existente.
Reutilizadas as provas aceites:início12 (9testes/API97) e cessação/quotas13 (11testes/API123),UI real,gravação/recuperação/relatórios,tipos/build. Não se repetiram as respectivas suites por iniciativa desta entrega;apenas os controlos automáticos obrigatórios do procedimentoGit e a conferência do delta instalado. Os motoresL6 de amortizações,periodização e câmbio mantêm-se;L3,ISPC,L5 e demais provas aceites não foram reabertos. Recibo:`docs/investmoz/simulations/irpc-l7-grouped-delivery-20261026.json`;provas locais:`outputs/irpc-l7-grouped-delivery-20261026/`.
**SaldoL7 e próxima retoma:**continuam próprios as cumulações (por exemplo cooperativa+CBF16:identificar disposição,parcela elegível,ordem e limites antes de combinar),outras origens/segregações de despesas autónomas,cooperativas mistas/retidas e demais entidades,extensõesCBF16fora dos anos/períodos/métodos/categorias demonstrados,mais-valias61-A/operações54–56/41-A,CBF17–19/direito potencial15,regimes sectoriais/territoriais e transporteM20/M22. Mantém-se a separação entre código por implementar e documentos por caso:natureza/parcela/período,reconhecimento ou excepção exigida,saldos anteriores temporariamente tributados,norma/ordem/limites de cumulação e edição/campo/fracção. Uma falta limita só o caso/campo dependente;sem pesquisa transversal repetida ou aprovador genérico. **L6 operacional delimitado;L7 parcial;L8 conserva retenções,pagamentos,créditos anuais e saldo final.** Cada futura entrega volta a medir capacidade e executar backup/restauro fresco.
## 26/10/2026 — Cumulações L7 demonstradas em QA e saldo do simulador
**QA pronto,sem instalação.** `632dc069`,incluindo `ba83afe7`,está entregue e deixa de constituir pendência de instalação. A próxima candidata acrescenta apenas a qualificação e o cálculo das combinações abaixo;mantém resultados/entradas/históricos10–13. L6 continua operacional no âmbito demonstrado;L7 parcial;L8 conserva a liquidação final.
**Regra aplicada e fontes reutilizadas:**CBF4,APIEXp66,veda a cumulação dos benefícios específicos entre si ou com os genéricos,salvo previsão expressa. CBF13,APIEXp70,delimita os genéricos a investimentos não destinatários de específicos;CBF16,APIEXp72,é genérico. CIRPC12/14,PDF5/p768(59),reduz50% da taxa geral nas cooperativas abrangidas,excluindo rendimentos sujeitos a retenção. A correspondência agora implementada trata a reduçãoCIRPC12 e o efeitoCBF16 genérico em fases distintas,no mesmo sujeito/projecto/período,quando ambos estão qualificados e não há benefício específico nem outro benefício por corresponder. Não transforma o artigo4 numa proibição genérica de todos os tratamentosCIRPC, nem numa autorização de qualquer outra combinação. Não há novo parecer/aprovador genérico como condição;as condições dos artigos e documentos concretos continuam necessárias.
A opção «Preparar cumulações dos tratamentosL7 registados» reutiliza cooperativa,activos,períodos,despesas e suportes existentes. Discrimina presença/ausência de específicosCBF,excepção expressa invocada e outros benefícios,em lugar da antiga confirmação global de ausência de outros benefícios;esta entrada anterior permanece conservada,sem alteração automática das escolhas. Não selecciona benefício pela localização. Uma incompatibilidade não escolhe o tratamento a manter,não apaga registos e não aplica o benefício específico sem motor próprio. A nova preparação é opcional14;sem ela,as chaves/modelos anteriores permanecem exactos.
| Caso novo | Efeito demonstrado |
| --- | --- |
| Cooperativa agrária abrangida +CBF16 genérico,períodoJan–Jun2026 e activo2025/quotas anteriores já entregues | Lucro/baseL6 3130;CBF16 deduz só25adicionais e obtém3105;depois taxa16% sobre3105:colecta simulada496,80MZN. Os15recuperados já estão nos75deduzidos,sem outra dedução. Não se somam reduções monetárias calculadas sobre bases diferentes. |
| Mesmo caso com despesa36g100 e incidência61(4) qualificada | Acréscimo100 já emL6:lucro3230→3205 após25CBF16;colecta ordinária512,80MZN à taxa16%;imposto autónomo35MZN separado,sem redução cooperativa;colecta combinada547,80MZN. Nenhum novo acréscimo da despesa. |
| EspecíficoCBF22 declarado no mesmo projecto +genérico16,sem excepção expressa | Combinação incompatívelCBF4/13;totalL7indeterminado e entradas conservadas. ReferênciaL6 conhecida mantida. O artigo/taxa do benefício específico não é aplicado por presunção. |
| Excepção invocada/outro benefício/presença de específico ou suporte em falta | Estado indeterminado até corresponder artigo,âmbito,período,ordem e limites. Não tratar desconhecido como ausência. |
| Duplicação de activo ou dedução positiva não correspondida já registada na baseL6 | Impede reaplicar a mesma origem;registo e valor original conservados,sem preencher outro benefício por aproximação. |
| Saldo fiscal20 /base tributável zero | Dedução respeita saldo e contabilização,sem saldo negativo. Numa base zero a colecta ordinária é zero,mas o imposto autónomo35 permanece,sem compensação pelo prejuízo. |
| Condição cooperativa negativa /ausênciaCBF16 declarada | Apenas o tratamento efectivamente aplicável permanece;estados separados,sem forçar acumulação. |
**Ordem e limites:**diferença fiscalCBF16 uma vez→mesmas deduções/perdasL6→matéria colectável→taxa cooperativa16% na base integralmente elegível→imposto autónomo35% separado. Mantêm-se limites de contabilização,parcela anterior recuperável e saldo fiscal do activo,sem alterar os saldos declarados ou consumir saldo oficial. A redução não se estende a rendimentos mistos/retidos nem ao imposto autónomo. O relatório apresenta a origem documental/activo,a dedução normal,a acelerada,a recuperação já incluída e a única diferença adicional.
**Demonstração nova:**12testes dirigidos,API privada1teste/133asserções e sete casos cálculo→gravação→recuperação→HTML/dossier financeiro. BaseQA `simulator_fiscal_delta_20261021_test`,127.0.0.1:55441,guarda de identidade e transacção/rollback. Resultado13 aceite reproduzido exactamente e histórico integral,activos,saldos,plano e outros livros conservados;recalcular não acumula valores. Interface real demonstrou preparar/cancelar,preencher só as declarações novas,combinação permitida,incompatibilidade,excepção não correspondida,falta de informação,imposto autónomo separado,guardar/recuperar e exportar,sem erros. Wayfinder`--with-form`,TypeScript ebuildQA passaram. Sem repetir suites aceites,migração,importação ou escrita no activo;SGF TEMPO separado. MotoresL6 de amortizações/periodização/câmbio e31originais preservados.
**SaldoL7:**este recorte sai do grupo «cumulação ainda não implementada» apenas paraCIRPC12+CBF16 e a coexistência separada61(4),com as condições acima. Permanecem por implementar outras cumulações/excepções expressas,CBF17–19 e direito potencial15,regimes específicos,parcelas cooperativas mistas/retidas e demais entidades,outras origens de despesas,extensõesCBF16,mais-valias/operações especiais e transporteM20/M22. Retoma por disposição/artigo/ordem/limite e parcela identificados,implementando os tratamentos ainda ausentes;documento individual em falta limita só o caso/campo dependente. Não reabrir as provas aceites ou pesquisar outra vez dúvidas sem informação nova.
**Quanto falta no simulador:**a matriz conserva estimativas iniciais,sem uma reestimativa actual do esforço integral restante. SóL8–L14 somavam inicialmente240–416horas (30–52dias de8h);esta referência não é um saldo actualizado nem inclui resíduosL1–L7,L15–L16 ou espera documental. L8 contém liquidação/pagamentos/créditos/saldo final;L9–L14 contêm INSS,IRPS,Selo,direitos aduaneiros eICE;L15–L16,SISA/encargos imobiliários,ainda por dimensionar. L6 mantém5grupos de código e5documentais;L5 mantém as dez dúvidasAT só para os casos dependentes. Os lotes e grupos não são unidades iguais,não sustentam uma percentagem global de conclusão. A cobertura já entregue continua utilizável com limites explícitos;simulador fiscal integral permanece um trabalho de dezenas de dias na referência de planeamento,sem prazo fechado.
Entrega agrupada preparada com os sete casos novos compatíveis;incompatibilidade e informação insuficiente acompanham o mesmo candidato como estados demonstrados. Não houve instalação nesta passagem. A futura entrega requer main compatível,capacidade do servidor medida novamente ebackup/restauro fresco,mantendo a versão activa até a nova ficar pronta. Recibo:`docs/investmoz/simulations/irpc-l7-combinations-qa-20261026.json`;provas:`outputs/irpc-l7-combinations/`. Reprodução só do delta:`node --test tests/frontend/irpc-special-combinations.test.mjs`;`php tools/irpc-special-combinations-qa.php routes`;`php tools/irpc-special-combinations-qa.php test`;`tsc --noEmit`;build com `INVESTMOZ_QA_BUILD=1`. **L7 parcial;colecta simulada distinta do saldo finalL8.**
Conferência de compatibilidade:main `a7434cd2` incorporado na candidata,com apresentação/catálogo e linhas não fiscais da matriz preservados. Recuperada a adenda históricaQA13 que tinha desaparecido do manual no main;isto é perda documental,não perda do cálculo13. Só tipos/build de integração foram conferidos novamente;provas fiscais aceites conservadas. A revisão servida não foi consultada nesta passagemQA.
## 27/10/2026 — identidade proactiva: primeiro incremento demonstrado em QA
**QA concluído em `3439f350`; sem instalação, publicação real ou análise económica validada.** Partida no `main` remoto `f8d57bdd`, conferido novamente antes da entrega. Ramo separado `codex/proactive-investment-first-qa-20261027`, worktree `C:/laragon/www/portal-investidor-proactive-qa-20261027`. A referência local `fa02c70` e o ramo `codex/proactive-investment-scope-20261027` não foram encontrados no repositório consultado; o âmbito expresso da Tempo foi suficiente e não se criou dependência desse commit. **L8 `14360748` mantém-se preparado, sem instalação e sem integração nesta candidata.** A capacidade do servidor continua fora deste trabalho local. Sem SSH, instalação, limpeza do servidor ou intervenção no SGF TEMPO nesta passagem.
### Diagnóstico dirigido e decisões de implementação
| Componente existente | Reutilização e lacuna concreta tratada |
| --- | --- |
| `geo_locations`, `sectors`, `value_chains`, `projects`, `economic_clusters`, `development_corridors`, `investment_zones` | Mesmos identificadores, hierarquia, sectores e referências públicas já disponíveis; selectores e catálogo existentes. Não se criaram mestres territoriais, empresas, projectos ou estruturas para completar campos em falta. |
| `investment_gaps` e `investment_specific_needs` | Mantidos nos seus âmbitos de lacuna de cluster/cadeia e necessidade de manifestação. O schema público exige contexto de cluster/cadeia/capacidade no primeiro e submissão/opções no segundo. Não se inventam esses valores para guardar uma hipótese territorial inicial. A análise editorial é uma parte versionada do rascunho existente, não outro catálogo ou cadastro de lacunas económicas validadas. |
| `Opportunity`, `OpportunityManagement`, `management_draft`, `audit_events` | Acrescentado só o bloco opcional `proactive`: evidências, necessidade, ideia e relações. Reutilizados identidade, chave de criação, etag, rascunho, auditoria cifrada e versões. Criação repetida não duplica a ficha; versão antiga não sobrescreve edição concorrente. |
| Editor de oportunidades e designação interna da equipa | Lacuna confirmada: a preparação inicial exigia organização promotora até quando desconhecida. Permitida a preparação/edição de análise proactiva sem promotor real apenas no âmbito da designação interna existente. Organização real fica nula; operador e responsável continuam identificados. Sem novo papel, aprovador, grant activo ou permissão universal. Os restantes percursos mantêm as condições anteriores; actores não designados e operadores de outro âmbito são recusados. |
| `portal_resources`, `documents`, `opportunity_documents` e gestor documental existente | Referência ao documento já associado, fonte, exemplar, localizador, período, abrangência, cobertura e verificação. Não copia o binário nem altera direitos, classificação ou scan. Documento interno/restrito ou fora do âmbito não passa a público pelo formulário da análise. Listas de empresas, hotéis e restaurantes continuam inicialmente internas. |
| `OpportunityPromotion` e catálogo/ficha existentes | Síntese expressamente pública, prévia e confirmação no fluxo já autorizado, com MFA normal. Nenhum texto interno é preenchido automaticamente. Estado da necessidade e estado da publicação são independentes. Consulta anónima só da versão publicada. |
| `InvestorContext`, escolhas por oportunidade, `desk_cases`, `InvestorPath` e simulador | A origem, versão, território, sector, cadeia/etapa, relações públicas seleccionadas, pressupostos e limites seguem no contexto cifrado do dossier existente. Selecções múltiplas conservam uma fotografia por ideia; o consumidor/simulador recebe só a escolha em tratamento. Título e outras edições deliberadas são preservados. Sem regra fiscal nova ou benefício inferido da localização. |
### Implementado e demonstrado
- **Evidência:** actividades, recursos, infra-estruturas, oferta e procura; facto separado da interpretação. Finalidade local ou metodológica, acesso interno ou público autorizado e documento associado opcionais. Duplicação de evidência ou da mesma referência na análise é recusada. Informação em falta permanece em falta.
- **Necessidade:** problema, oferta/procura observadas, quantidade/qualidade/logística/transformação/coordenação/apoio, clientes/beneficiários, fontes, limites e pendências. Pode guardar como hipótese. Confirmação exige os campos/fundamento e evidências locais seleccionadas com proveniência/cobertura/período/verificação; referência internacional, por si só, não confirma procura local. Histórico mostra hipótese e confirmação anteriores sem recalcular nem apagar os originais.
- **Ideia:** solução, actividade, cadeia existente/etapa, abrangência, recursos, criar/expandir/associar, pressupostos, condições, pendências e próxima acção. Relações com estruturas existentes mantêm a qualificação documentada, hipotética ou proximidade. Nenhuma relação cria contrato, energia acessível, terra disponível, participação ou benefício fiscal.
- **Aplicabilidade:** “O que existe” mostra evidências e contexto; “Necessidade” acrescenta a lacuna; “Ideia” acrescenta a solução. Campos anteriores ficam conservados quando ocultos. Não se exigem montante, promotor, coordenadas ou uma oportunidade previamente publicada para iniciar a preparação da equipa.
- **Divulgação:** grupos “O que existe”, “Necessidades identificadas” e “Ideias de investimento” no catálogo existente; a consulta de oportunidades cadastradas conserva a verificação de disponibilidade na respectiva ficha. Uma ideia não é convertida em oportunidade com participação disponível. Textos públicos são redigidos separadamente, com revisão expressa da exposição directa/indirecta. Evidências internas e cópias literais detectadas são bloqueadas; uma confirmação pública depende do fundamento público seleccionado. Relações divulgadas transportam apenas referência pública, qualificação e base pública, sem copiar a referência privada.
- **Continuidade:** criar → guardar → recuperar → editar → prévia/publicação em QA → consulta anónima → autenticação → dossier → recarregar/retomar sessão. Login e MFA Fortify normais demonstrados com contas sintéticas QA. O mesmo contexto chega ao dossier, sem substituir o título deliberado do investidor. Relatório existente mostra origem, estado, fundamento, evidências, relações, pressupostos, limites e próximo passo por ideia; sem preparação proactiva não acrescenta linhas.
### Referências metodológicas do Ruanda — dependência resolvida
O responsável forneceu os dois caminhos após a procura dirigida inicial. Exemplares acessíveis, originais preservados e hashes conferidos antes/depois. **Não foram importados ou publicados no portal.** Texto integral extraído e imagens de leitura ficam apenas nas provas privadas/ignoradas; o pacote entrega rastreabilidade e paráfrases metodológicas, sem os originais ou a reprodução integral dos diapositivos.
| Exemplar e passagem utilizada | Aplicação delimitada |
| --- | --- |
| `20070627_Rwanda_5d0cc43d-c990-4cf1-8ee9-ada71094918f.pdf`, 31 páginas, capa “Creating a Competitive Rwanda”, Michael E. Porter/HBS, Kigali, Junho2007. SHA256 `18b07a9379a1ad0baa33697d57d6237f15a6fec346db44bfee7506bf1fa27dee`. P14, “Improving the Business Environment: The Diamond”; P27, “Role of the Private Sector in Economic Development”, conferidas visualmente. | Perguntar por factores de produção, procura, fornecedores, actividades e serviços de apoio; distinguir relação documentada de acesso/compromisso. Cada afirmação sobre Moçambique precisa de evidência local própria. |
| `Rwanda Competitiveness Briefing_Prof Porter_OTF.ppt`, 50 diapositivos na leitura nativa PowerPoint, capa “How Rwanda Competes Today”, RNIC, briefing para Prof. Porter, 20Julho2008. SHA256 `4a9325ad64278cb0ef3c60367a05ee2ed9262e2cd49a48d579061349914aa830`. Slide17, procura turística, fonte/amostra/período visíveis; slide20, constrangimentos por etapa da cadeia do chá; slide24, diagnóstico mineiro, texto em ordem nativa. | Conservar fonte, período, abrangência e cobertura/amostra das observações; estruturar etapas e limitações em vez de presumir uma lacuna. Dados, valores, projecções e instituições estrangeiras não são transferidos para os pilotos nem para regras fiscais. Slide17 conferido visualmente;20/24 lidos em texto nativo, sem alegar conferência visual desses dois. |
Os caminhos completos e os trechos/limites estão no recibo. O PDF2007 e o briefing2008 são exemplares distintos. Os 91 grupos de texto históricos encontrados numa exploração OLE não foram usados como número de diapositivos; a ordem nativa de 50 é a referência do PPT. A metodologia internacional orienta perguntas e organização; não demonstra procura em Cahora Bassa, Montepuez ou Gurué.
### Guia curto de utilização em QA
1. Entre na conta da equipa com a designação existente e abra **Minhas oportunidades → Nova oportunidade → Preparar análise e ideia**. Escolha título, sector e nível territorial conhecidos. O promotor real pode ficar por identificar; não são necessários montante ou coordenadas.
2. Acrescente evidências. Separe o facto da interpretação e preencha fonte/exemplar, localizador, período, abrangência, cobertura e data de verificação. Marque referências internacionais como **metodológicas** e listas internas como **internas**. Use o documento já associado quando disponível.
3. Mantenha a necessidade como **hipótese** enquanto faltar fundamento local. Para confirmar, explicite problema, observações, tipo, beneficiários, fundamentação e evidências locais. “Confirmada” não significa viabilidade comercial demonstrada. Guarde com motivo e recupere o rascunho; o histórico conserva o fundamento anterior.
4. Quando aplicável, escolha **Ideia de investimento** e prepare solução/actividade, cadeia/etapa, recursos, relações e próxima acção. A proximidade fica identificada como proximidade. Escolhas existentes e campos ocultos continuam conservados.
5. Abra **Divulgação promocional — Em preparação**. Redija os campos públicos separadamente, seleccione só evidências públicas e relações autorizadas, reveja a exposição directa/indirecta, prepare a prévia e confirme **apenas em QA**. A referência privada da relação e os documentos internos não são copiados. A revisão editorial continua humana no fluxo existente; o controlo literal não é validação semântica de todas as inferências possíveis.
6. Consulte sem sessão em `/oportunidades?perspective=ideas` (ou `exists`/`needs`). **Iniciar ou continuar o roteiro deste investimento** utiliza a autenticação e o dossier existentes. Confirme o contexto na prévia antes de guardar; pode continuar um dossier ou criar um novo. Para várias ideias, escolha a que está em tratamento nos consumidores. O simulador recebe o contexto e conserva os seus dados/regras próprios; não calcula sem dados ou pressupostos explícitos.
**Reprodução técnica só do delta:** `php tools/proactive-investment-qa.php routes` (`--with-form`); `php tools/proactive-investment-qa.php test`; `node --test tests/frontend/proactive-investment.test.mjs`; `tsc --noEmit`; build com `INVESTMOZ_QA_BUILD=1`. Base isolada `proactive_investment_20261027_test`,127.0.0.1:55441, clonada do QA anterior com o mesmo schema/identificadores; guarda de identidade e rollback nos testes. Flags existentes de perfis/contratos especializados/percurso foram configuradas só no bootstrap QA; `.env`, configuração activa e grants activos não mudaram. O servidor HTTP de prova usou127.0.0.1:18760, não a homologação.
### Provas, preservação e saldo concreto
**Passaram:**14 testes da API/139asserções;7testes frontend de relatório/isolamento por ideia;Wayfinder,TypeScript ebuildQA;interface real com login/MFA,criação/edição/recuperação,histórico,perguntas aplicáveis,prévia/publicação QA,consulta anónima,contexto após autenticação,recarregar/retomar sessão,relações/pressupostos e ausência de erros de página. Casos Cahora Bassa/energia,Montepuez/mineração eGurué/chá são **inequivocamente sintéticos**,reutilizando distritos e sectores existentes. Não se publicou uma análise económica real nem se validou um mercado.14testes não são nova ronda de L3/ISPC/câmbio/L5–L8.
**Preservado:**15pontos de integração anteriores e7ficheiros novos de código/testes/guarda;89ficheiros de motores fiscais e31originais fiscais iguais,mais os2originais Ruanda intactos. Sem migrações ou novo catálogo/base territorial/sistema de permissões. Sem escrita na base origem ou activa;fixtures/grants sintéticos apenas no clone QA. A candidataL8 `14360748` conserva exactamente a mesma referência. O checkout raiz recebe somente este registo documental,sem integrar o runtime do ramoQA.
| Estado | Saldo e condição concreta de retoma |
| --- | --- |
| Implementado e demonstrado neste incremento | Percurso editorial técnico completo acima, no recorte QA e com os estados/limites visíveis. Pode preparar novos investimentos sem depender de oportunidades publicadas. |
| Parcial — conteúdo económico real dos três pilotos | Recolher oferta/procura locais,exemplares,períodos,cobertura e informação de clientes/beneficiários;relacionar recursos/serviços com evidência. Só os casos apoiados por esses dados podem mudar de hipótese. Nenhuma falta bloqueia outra análise independente. |
| Dependência documental/comercial | Contrato/encomenda,energia acessível,terra,participação disponível e condições comerciais precisam de prova específica por caso. A qualificação formal da oportunidade continua nos campos/fluxos existentes;este incremento não a presume a partir da localização,lista de empresas ou necessidade. Listas e contactos privados exigem síntese autorizada e revisão editorial no fluxo actual antes de qualquer divulgação. |
| Dependência resolvida | Os dois exemplares Ruanda foram localizados/lidos nos trechos identificados;deixam de constar como ficheiros indisponíveis. A sua existência não substitui a evidência local. |
| Trabalho futuro,fora do primeiro incremento | Automatizar inventário,indicadores,comparação/priorização e eventual IA;quantificar mercado/custos/rentabilidade só com dados/pressupostos explícitos;eventual correspondência a lacunas mestre de cluster quando os seus campos e fundamento forem conhecidos. Não há novo prazo global ou implantação activa reivindicados. |
| Entrega futura no destino | CandidataQA peloGit apenas. Conferir o main vigente e compatibilidade com outros incrementos antes de integrar;capacidade,backup/restauro e instalação são uma execução separada autorizada. A espera de capacidade deL8 não foi contornada. |
Recibo:`docs/investmoz/unification/proactive-investment-first-qa-20261027.json`;provas:`outputs/proactive-investment-20261027/`. Não há novos cálculos fiscais,submissão AT,publicação na homologação ou alteração do SGF TEMPO.
## 27/10/2026 — primeiro caso proactivo com fontes reais: Cahora Bassa / apoio metrológico
**Análise preliminar privada demonstrada em QA, sobre o runtime aceite `3439f350` / candidata `1afab4a2`, sem nova alteração funcional ou instalação.** Caso `CB-METROLOGIA-20261027`, ficha QA `401`, dossier privado QA `894343c7-c33d-452e-a6a5-b6675f77ee23`. O operador é uma conta sintética QA já existente; os factos e referências desta análise são reais e identificados, distintos dos cenários fictícios anteriores. Não se publicou a análise, não se contactou comprador ou prestador e não se transportaram contactos, documentos pessoais ou NUIT das listas. L8 `14360748` conserva a mesma referência e continua separado. Main remoto conferido: `f8d57bdd`; sem SSH, limpeza, instalação ou intervenção no SGF TEMPO.
### Escolha do piloto e fontes reutilizadas
| Piloto | Resultado da triagem dirigida |
| --- | --- |
| **Cahora Bassa — seleccionado** | A lista empresarial fornecida contém referências históricas locais de reparação/manutenção mecânica e eléctrica. O acervo inclui a reprodução histórica da concessão HCB. Foram acrescentados o relatório primário HCB2024, a página institucional de engenharia e, decisivamente, o Plano de Compras HCB2026 publicado pelo IGEPE, que delimita um serviço concreto de calibração. É uma decisão por disponibilidade de fundamento nesta ronda, sem ranking de rentabilidade ou potencial económico. |
| Montepuez | Há referências empresariais internas e fontes mineiras localizadas. Não foi escolhido nesta ronda um âmbito primário de aquisição tão directamente utilizável para esta aplicação. Não se conclui que falte actividade ou procura; continua elegível para outro caso documentado. |
| Gurué | Há referências históricas internas ligadas ao chá e perfis/fontes públicos localizados. Os constrangimentos antigos encontrados não bastam para atribuir automaticamente uma lacuna actual à cadeia do chá. Não foram transpostos para a proposta de Cahora Bassa. |
Inventário anterior de606 fontes preservado e consultado; listagem dirigida dos documentos acessíveis no acervo e triagem dos dois workbooks empresariais/cadastro turístico ficam nas provas privadas. Os workbooks têm grãos/períodos/versões distintos e registos repetidos: não se somaram os totais entre eles nem se contou uma denominação repetida como várias empresas. O cadastro de alojamento de3–5estrelas não demonstrou cobertura distrital comparável neste recorte; não demonstra ausência de hotéis ou serviços e não foi usado para inferir procura metrológica.
| Evidência / exemplar | Âmbito usado e limite |
| --- | --- |
| HCB, **Relatório e Contas2024**, edição bilingue,63páginas PDF; PDFp9/página impressa14. URL `https://hcbadm.mzbusiness.com/wp-content/uploads/2025/08/Relatorio-e-Contas-2024-Bilingue-VF-1.pdf`. SHA256 `d0fed6af0e40fffd6f7f385152fdbfff2a10cae0b66c9d7a59a0a99658758080`. | Actividade e infra-estruturas existentes da HCB. Página conferida visualmente; não é carteira de contratos disponíveis. Matambo não é atribuída ao distrito de Cahora Bassa. |
| HCB, **Plano Anual de Compras2026**,8páginas; PDFp1,2.ª/3.ªlinhas de dados. URL `https://igepe.org.mz/wp-content/uploads/2026/06/HCB-Plano-Anual-de-Aquisicoes-2026.pdf`. SHA256 `cbc93102fea61a712c193d1c1815e7ec19e7d570ee2703c1b1390d4c05e5bd8e`. | Duas entradas de calibração de equipamento de medida e monitorização, concurso limitado, previsões19/02–30/06 e05/05–14/09/2026. Em27/10/2026 os prazos previstos já passaram. Plano não confirma procedimento aberto, adjudicação ou procura ainda insatisfeita. “1” em “Qtde de Itens” não é número de instrumentos; linhas de igual designação não provam dois contratos independentes. Conferência visual da tabela. |
| Lista fornecida **Empresas Licenciadas.xlsx**, `Servicos Tempo/Relatorios/novos/docs`, folha`EMPRESAS`; SHA256 `1b5087b464e39e88c42def39655c2391aaaf684b4c832d6a77ff274b98889f00`. | Pistas internas: L19376,D19376,O19376:P19376,U19376:V19376 e L55640,D55640,O55640:P55640,U55640:V55640. Licenças2018/2021, não capacidade actual. Linhas12243/19376/65567 repetem denominação e não são contadas como três empresas. Nenhuma lista/contacto foi copiada para publicação. |
| **CAE eBAU.xlsx** fornecido, folha`CAE`, B857/F857 e B859/F859. | Etiquetas de33120 — reparação/manutenção de máquinas/equipamentos e33140 — equipamento eléctrico, lidas no exemplar fornecido. Não comprovam calibração, qualificação, acreditação ou vigência actual de licença; não se declarou uma versão oficial actual do catálogo sem identificação. Hash/caminho no recibo. |
| **HCB-TERMOS-DO-CONTRATO-DE-CONCESSAO.pdf** fornecido, página única; BR I Série47,21/11/2007,Decreto57/2007,artigo2. SHA256 `f4afc62f140d197cae3bf395674adce2eba37f0436261d52d7eb554f6230a073`. | Contexto documental histórico da actividade, conferido visualmente. Sem análise da vigência actual ou aplicação de regra ao novo investimento. Direitos de concessão não se tornam direitos do promotor. Original preservado, não importado/publicado. |
| Página institucional HCB`https://www.hcb.co.mz/hidroelectricidade`, consultada27/10/2026. | Contexto do complexo e CAPEX Vital; sem data editorial precisa ou progresso actualizado de cada obra. Não comprova contratação adicional. Captura/hash privados; sem copiar projecções para o orçamento da ideia. |
Os exemplares Ruanda já aceites continuam apenas metodológicos; não se repetiu a sua prova nem se usaram como evidência de procura local. Os cinco originais locais usados permanecem com hashes iguais. Fontes públicas adicionais foram guardadas como cópias privadas de consulta, sem importação, publicação ou alteração de direitos no portal.
### Actividade, necessidade e ideia estruturada
**O que existe:** actividade hidroeléctrica e infra-estruturas HCB documentadas; registos históricos locais de actividades de reparação/manutenção. **Necessidade documental:** o comprador planeou serviços de calibração em2026. **Hipótese por verificar:** existe procura residual/recorrente e uma vantagem concreta de apoio local no Songo. Não há evidência de falta de fornecedores, atrasos, preços elevados ou adjudicação disponível; a necessidade comercial mantém o estado **hipótese**, com esse fundamento guardado.
**Ideia:** estudar associação entre prestador local e laboratório qualificado para apoio metrológico à HCB no Songo: inventário/gestão de instrumentos, preparação, recolha/entrega controlada e acompanhamento documental. Calibração/ensaios só por quem demonstrar competência no âmbito contratado. A associação é uma proposta, não acordo. **Cliente potencial:** HCB, apenas nas unidades e procedimentos em que o serviço se justifique; outros clientes não foram presumidos. Etapa: apoio à manutenção na produção/transporte de electricidade. Sem criar cadeia mestre ou relação canónica para preencher uma correspondência não disponível no clone. Abrangência distrital/proposta no Songo, sem parcela, instalações, energia ou acesso assegurados.
**Condições:** confirmar requisitos efectivos do comprador e do âmbito metrológico, capacidade, rastreabilidade, segurança/acesso, responsabilidades, regras de associação/transporte e eventual acreditação exigida. Não se impôs certificação específica por interpretação do plano. Recursos de operação, equipa, instrumentos, veículo, instalações e laboratório ainda não estão assegurados. Montante, promotor empresarial, coordenadas exactas, preços, volume, mercado, receitas e rentabilidade permanecem por determinar; sem usar zero ou totais do plano como substitutos.
### Demonstração deste caso e continuidade
Criada pela interface existente,guardada,recuperada e conferida na mesma ficha privada. Cinco evidências preservadas;necessidade comercial como hipótese;campos de clientes,oferta,procura,condições e próxima acção recuperados sem alteração. A mesma contaQA preparou um dossier privado pelo percurso existente,confirmou o contexto e recuperou a fotografia da ideia pela API autenticada. O relatório existente produziu as cinco linhas de evidência e os mesmos limites;uma leitura privada de prova reúne essas linhas e as observações do caso. Nenhuma publicação promocional foi preparada ou confirmada. Ficha permanece`draft`,fora da consulta publicada;consulta anónima do dossier recusada.
Reutilizadas as14provas API/139asserções,7provas frontend,tipos ebuild de`1afab4a2`;não se repetiu a ronda técnica ou fiscal. Feita apenas aplicação e conferência do novo caso real. A primeira leitura da página do dossier antecedeu o fim da gravação do contexto;após recuperação concluída,interface eAPI concordaram. Corrigida a espera no script local de prova,sem mudar código da aplicação ou regravar históricos. Preservação por hash das linhas anteriores no mesmo clone:52fichas,17dossiers,19projectos,1921territórios,12sectores,63documentos;uma ficha e um dossier novos. Sem migrações,importação de empresas,novos grants ou alteração do destino activo.
**Para consultar ao retomar QA:**usar a contaQA já designada e abrir`/minhas-oportunidades/401/edit`;comparar os campos/fundamentos;abrir o dossier`/investimentos/894343c7-c33d-452e-a6a5-b6675f77ee23`. É um percurso privado,não um link público nem uma nova instalação. Recibo:`docs/investmoz/unification/proactive-real-pilot-qa-20261027.json`;provas privadas:`outputs/proactive-real-pilot-20261027/`. Cookies,credenciais,extractos integrais de listas,originais e ficheiros de diagnóstico não integram o pacote de entrega.
### Saldo e perguntas concretas de retoma
| Ponto | Exemplo/pergunta e condição de retoma |
| --- | --- |
| Procura actual e estado das compras | As entradas terminavam em30/06 e14/09/2026:foram executadas,adjudicadas,canceladas ou reprogramadas? Existe novo ciclo em2027? Retoma da qualificação comercial apenas com estado e necessidade residual/recorrente identificados pelo comprador. |
| Âmbito técnico e operacional | Que famílias/instrumentos,quantidades,periodicidade,local de execução e prazo de devolução se aplicam? Que qualificação/rastreabilidade/acreditação é exigida neste âmbito? Obter a especificação antes de dimensionar meios ou afirmar elegibilidade. |
| Oferta e associação | Os dois registos internos seleccionados continuam activos,interessados e tecnicamente aptos? Que laboratório pode assumir o âmbito? Verificar capacidade/competência,consentimento e oferta concorrente;cadastro/CAE não basta. Não enviar contactos ou listas automaticamente. |
| Vantagem e viabilidade | O apoio no Songo reduz um problema mensurável do cliente face à solução actual? Comparar transporte,prazos,risco,custos e condições;quantificar só quando houver dados. Não comprar equipamento ou criar orçamento com base apenas no plano. |
| Divulgação ou uso no activo | Preparar eventual síntese pública separada só quando autorizada/revista;instalação do código não publica nem transporta automaticamente a ficha e o dossierQA. Capacidade,compatibilidade e backup/restauro serão tratados na execução futura aplicável. Nenhuma dependência de capacidade impede esta análise privada. |
**Estado:**primeira aplicação real demonstrada,análise económica/comercial preliminar. Preparadas perguntas para reunião exploratória com a HCB,sem as enviar. L8eSGF preservados;limites e pendências anteriores não foram eliminados.
@@ -74,3 +74,30 @@ Novas execucoes identificam-se como `portal-arithmetic-v1`, para nao sugerir que
- Snapshot `business-plan-v17`: adds `openingPayablesInstallments`, an optional schedule with month and percent of the original opening payable balance. Declared percentages sum to at most 100%; cent rounding is capped at the unpaid balance. Scheduled settlements reduce cash and opening payables, not profit or period expenses. Any unpaid amount remains a closing payable; an absent schedule assumes no settlement and leaves the full opening amount outstanding. Snapshots v1-v16 remain readable with an empty schedule; explicit resave produces v17.
- Execuções API concluídas só são aceites pelo consumidor se `result_snapshot` for um envelope `contract_version: 1` válido (incluindo consistência entre `result.value` e `indicative_total`) ou um snapshot legado legível com montante decimal. Estados concluídos sem snapshot, com snapshot malformado ou com versão v1 inválida são rejeitados na fronteira da API; estados não concluídos podem manter snapshot ausente/nulo. Snapshots históricos legíveis continuam compatíveis.
## IRPC normal — conferência anual opcional, versão de cálculo 2
O envelope de livros mantém `version:1`; `irpcNormal[opportunity]` aceita `profit` opcional (`version:1`, `completenessReference`, `lines`, `topics`). As linhas mantêm o código/origem financeira, estado `known|absent|''` e referência; os tópicos conservam separadamente estado, montante original e referência. `known` com montante zero não se torna `absent`; `''` não se torna zero. Tópicos de valor conhecido não zero sem regra implementada não são aplicados. Uma ausência incompatível com a origem ou com montante preenchido mantém pendência.
Sem `profit`, o cálculo/leitor/histórico `IRPC-normal-adjustments/1` mantém significado e chave anterior. Com conferência adicional, `IRPC-normal-adjustments/2` acrescenta `model.profit` congelado e pode produzir `taxableProfit` racional com sinal. `taxableBase` e `tax` continuam nulos. O cálculo só fecha no recorte anual/residente/MZN documentado, sujeito-exercício completo, receitas/custos ordinários qualificados, acréscimos resolvidos e demais efeitos expressamente ausentes ou zero conhecidos. A origem continua `projected`; não é demonstração contabilística nem confirmação AT. Depreciação positiva e juros financeiros remanescentes exigem tratamento próprio.
O fingerprint inclui os novos factos apenas quando presentes; alterações do plano ou da conferência desactualizam o resultado sem eliminar histórico. Os demais livros permanecem intactos no snapshot. Gravação e recuperação usam a API privada existente com ETag/If-Match; sem novo endpoint, schema, permissões ou activação de parâmetros. Matéria colectável/colecta/créditos anuais e M20/M22 não são inferidos de um lucro conhecido.
## IRPC normal — matéria colectável opcional, versão de cálculo3
O envelope de livros e entradas mantém `version:1`; `irpcNormal[opportunity].base` é opcional e versionado1. Conserva NUIT/suporte,método,situação/completude das perdas,manutenção da actividade,linhas anuais de perdas e estado/montante/referência dos benefícios à base. Os montantes apurados,utilizados anteriormente e propostos são stringsMZN,não negativos,até dois decimais;campos ausentes não recebem zero. Um saldo por sujeito/exercício;sem fusão de livros ou origens.
Sem `base`,as versões1/2 mantêm chaves e significado. Com `base`,`IRPC-normal-adjustments/3` acrescenta modelo congelado de elegibilidade/propostas/deduções/saldos e pode produzir `taxableBase` racional no recorte documentado;`tax` permanece nulo. O fingerprint inclui apenas as novas entradas quando presentes. Repetir cálculo não altera `previouslyUsed`;`remaining` é saldo aritmético desta simulação,não reporte/consumo oficial. Uma edição preserva os resultados anteriores no histórico e exige novo cálculo antes de exportar.
Estado conhecido zero,ausência suportada e informação em falta permanecem distintos. Benefício positivo,perda transmitida ou saldo/regime não correspondido não se convertem em dedução livre. Dados e resultado usam a APIprivada existente/ETag,sem schema,endpoints,permissões ou parâmetros novos. A matéria colectável simulada não é colecta nem imposto a pagar.
## IRPC normal — colecta opcional, versão de cálculo4
O envelope e o livro mantêm `version:1`; `irpcNormal[opportunity].assessment` opcional guarda `version:1`, `treatment:''|general_61_1|other` e referência do enquadramento. Sem esta entrada,versões/chaves1–3 mantêm o significado anterior. Com ela,o cálculo `IRPC-normal-adjustments/4` acrescenta modelo congelado `assessment` e `colecta` racional,sem reutilizar o campo legado `tax` como colecta ou saldo final.
A colecta corresponde à matéria colectável actual×32/100 no recorte2026/MZN/residente geral,após classificação e suporte expressos. O modelo identifica taxa32,art61(1),versão da regra e período anual. Informação em falta,período fora do recorte,moeda/âmbito distintos ou caso especial mantêm colecta nula;zero exige base conhecida zero. A fracção racional é conservada exactamente;`centExact:false` não autoriza arredondamento fiscal nem transcrição oficial.
`assessment.finalBalance` é sempre `scope:L8,status:not_calculated,payable:null,recoverable:null` nesta versão. Retenções,pagamentos e créditos anuais não entram na fórmula da colecta nem são subtraídos automaticamente. UI,HTML e dossier apresentam lucro tributável→matéria colectável→colecta→saldo final com esse limite. APIprivada/ETag existente conserva todo o snapshot e histórico,sem novos endpoints,schema,permissões ou migração dos resultados anteriores.
@@ -27258,5 +27258,274 @@
},
"P084_P085": "closed",
"positive_field06_case": "not demonstrated;see receipt"
},
"l3_additional_prepared_20261025": {
"status": "prepared_compatible_not_installed",
"candidate": "0f4df8a4d1cfd0d7b788e58d7f6af8d385384d82",
"source_QA": "b189d0fa",
"baseline": "7ad187f9",
"report": "docs/investmoz/simulations/l3-additional-delivery-20261025.json",
"fresh_authenticated_backup_restore": "required at execution;not yet performed",
"next": "L4ISPCaccordingtoexistingplan;L3remainingvisible",
"superseded_by": "l3_additional_delivered_20261025",
"installed_followup": "fa32a2b9"
},
"ispc_l4a_eligibility_qa_20261025": {
"status": "QA_partial_eligibility_and_separate_option_not_installed",
"report": "docs/investmoz/simulations/ispc-l4a-eligibility-qa-20261025.json",
"tests": "12 new frontend passed;types/build exit0",
"remaining": [
"Apuramento trimestral e aplicação dos escalões3/4/5%,serviços12%,liberal15%,excesso20% e actividades mistas8; identificar correspondência exacta anual/trimestral antes do cálculo.",
"Mínimo trimestral500 e obrigação declarativa; retenção5% nas aquisições ocasionais próprias,limite2.500.000 e modelo; sem reutilizar taxa deIVA.",
"Percurso ocasional3(3–4),formalidades,modelos e prazos do regulamento aplicável; conferir apenas correspondências concretas necessárias,sem nova validação genérica.",
"Demonstração visual integrada e gravação privada deste incremento antes de propor entregaL4."
],
"active_changes": false
},
"ispc_l4_quarterly_qa_20261025": {
"status": "QA_demonstrated_eligibility_option_quarter_calculation_private_recovery_and_report_not_installed",
"report": "docs/investmoz/simulations/ispc-l4-quarterly-qa-20261025.json",
"example": {
"context": "opportunity:375;SYNTHETIC QA",
"option": "documentada2026-01-01",
"quarter": "2026/T2",
"prior_turnover_MZN": "100000",
"quarter_base_MZN": "200000",
"rate_percent": 12,
"tax_MZN": "24000",
"payment_MZN": "24000",
"declaration": "mantida",
"other_fiscal_books": "exactamente preservados"
},
"remaining_specific": [
"Operações ocasionais próprias3(3–4)enquanto sujeito passivo,distintas da retenção do adquirente;mantidas indeterminadas no percurso específico.",
"Aquisições acima limiteglobal2.500.000:correspondência do tratamento próprio;nãoliquidar5%porpresunção.",
"Formulário/modelo,instruções eprocedimentos da regulamentação2026;relatório depreparação não édeclaraçãosubmetida. Aviso primário do Governo confirma aprovação de novo regulamento,mas não contém articulado/modelos: https://portaldogoverno.gov.mz/governo-introduz-alteracoes-nos-regulamentos-fiscais-para-reforcar-eficiencia-tributaria/ . Sem impor segunda validação jurídica ou repetir pesquisa sem nova evidência."
],
"active_changes": false
},
"l3_additional_delivered_20261025": {
"status": "installed_and_delta_verified",
"requested": "0f4df8a4",
"installed": "fa32a2b9e127da9c4d764dd99ef58ee43b770aa6",
"test_only_descendant": true,
"backup_tables": 174,
"backup_files": 369,
"restore_verified": true,
"runtime_files_verified": 12,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "8ba41882cd8a7068c45619b3234af395"
},
"after": {
"rows": 106,
"checksum": "e2140cc9610defc5e64743159fb4df57"
}
},
"sessions": {
"before": {
"rows": 153,
"checksum": "66a8c21d1167a5c4ef27e205006736d4"
},
"after": {
"rows": 154,
"checksum": "6bd8d1311dcc20736dacc02873316399"
}
}
},
"report": "docs/investmoz/simulations/l3-additional-delivery-20261025.json",
"L3": "open_specific_balance_preserved",
"L4": "QA only;habitualquarterlypathdemonstrated"
},
"ispc_l4_prepared_delivery_20261025": {
"status": "prepared_for_Git_delivery_not_installed",
"candidate": "6af7092e83b9b3932712aa7a9f527393fcec4da8",
"baseline": "fa32a2b9e127da9c4d764dd99ef58ee43b770aa6",
"feature_ref": "refs/heads/codex/ispc-l4-quarterly-qa-20261025",
"runtime_files": 9,
"compiled_markers": 12,
"QA_proofs": "reused;no new functional round",
"backup_restore": "fresh execution still required",
"main_or_active_changed": false,
"report": "docs/investmoz/simulations/ispc-l4-prepared-delivery-20261025.json",
"remaining_specific": [
"Operações ocasionais próprias3(3–4)enquanto sujeito passivo,distintas da retenção do adquirente;mantidas indeterminadas no percurso específico.",
"Aquisições acima limiteglobal2.500.000:correspondência do tratamento próprio;nãoliquidar5%porpresunção.",
"Formulário/modelo,instruções eprocedimentos da regulamentação2026;relatório depreparação não édeclaraçãosubmetida. Aviso primário do Governo confirma aprovação de novo regulamento,mas não contém articulado/modelos: https://portaldogoverno.gov.mz/governo-introduz-alteracoes-nos-regulamentos-fiscais-para-reforcar-eficiencia-tributaria/ . Sem impor segunda validação jurídica ou repetir pesquisa sem nova evidência."
],
"superseded_by": "ispc_l4_delivered_20261025"
},
"ispc_l4_delivered_20261025": {
"status": "installed_scoped_habitual_quarterly_ISPC_and_delta_verified",
"commit": "6af7092e83b9b3932712aa7a9f527393fcec4da8",
"previous": "fa32a2b9",
"report": "docs/investmoz/simulations/ispc-l4-delivery-20261025.json",
"restore_verified": true,
"tables": 174,
"files": 369,
"L3_preserved": true,
"ISPC_integrally_completed": false,
"remaining_specific": [
"Operações ocasionais próprias3(3–4)enquanto sujeito passivo,distintas da retenção do adquirente;mantidas indeterminadas no percurso específico.",
"Aquisições acima limiteglobal2.500.000:correspondência do tratamento próprio;nãoliquidar5%porpresunção.",
"Formulário/modelo,instruções eprocedimentos da regulamentação2026;relatório depreparação não édeclaraçãosubmetida. Aviso primário do Governo confirma aprovação de novo regulamento,mas não contém articulado/modelos: https://portaldogoverno.gov.mz/governo-introduz-alteracoes-nos-regulamentos-fiscais-para-reforcar-eficiencia-tributaria/ . Sem impor segunda validação jurídica ou repetir pesquisa sem nova evidência."
]
},
"ispc_residuals_grouped_QA_20261025": {
"status": "QA_grouped_compatible_delta_not_installed",
"report": "docs/investmoz/simulations/ispc-residuals-qa-20261025.json",
"new_tests": 19,
"API": "1/22",
"active_changes": false,
"remaining_calculations": [
{
"item": "Juros compensatórios",
"state": "montante documentado pode ser conservado;fórmula ainda não implementada",
"needed": "regra/taxa/base/período/dias efectivamente aplicáveis,no documento/instrução correspondente;sem zero ou taxa presumidos"
},
{
"item": "Outros enquadramentos da parcela excedente",
"state": "sem fórmula genérica;casos diferentes do acto isolado qualificado não recebem taxa automática",
"needed": "natureza,regime do fornecedor,opção aplicável,base e suporte concretos;encaminhar para o cálculo próprio quando for outro regime,não bloquear o caso positivo implementado"
}
],
"external_formal_dependencies": [
{
"item": "Quadro2doB–Geral",
"needed": "correspondência concreta do mês/ano a inscrever para o trimestre;comunicado fornece meses de pagamento,que não são copiados automaticamente para período"
},
{
"item": "Dispensa inferior500MZN noB–Geral",
"needed": "Representação declarativa do imposto apurado com prestação dispensada10-A;sem preencher montanteapurado comozero porpresunção. O cálculo imposto/prestação jáestá implementado."
},
{
"item": "Entrega de retenções",
"needed": "modelo/código/instrução próprios12(3)ISPCe57(2k)IRPS;B–Geraldeapoio nãoéapresentadocomocorrespondênciacompletadestasretenções"
},
{
"item": "Regulamentação2026/instruções de envio de facturas",
"needed": "texto/exemplar/instrução concreta quando disponibilizado;comunicado transitório já implementado,não se mantém pesquisa genérica como aprovação adicional"
},
{
"item": "Submissão e pagamento",
"needed": "actos externos e comprovativos reais;nenhuma operaçãoATfoiexecutadaemQA"
}
],
"installation_followup": "ispc_residuals_delivered_20261025"
},
"ispc_residuals_delivered_20261025": {
"status": "installed_grouped_ISPC_residual_delta_verified",
"commit": "5c0cb25cea7826811c389b55a64bcdf5e43b937f",
"receipt": "ispc-residual-delivery-20261025.json",
"backup_restore_verified": true,
"ISPC_integrally_completed": false,
"IRPS_integrally_completed": false
},
"irpc_l5_first_scoped_QA_20261025": {
"status": "QA_first_scoped_increment_not_installed",
"receipt": "irpc-l5-withholdings-qa-20261025.json",
"verification": {
"new_frontend_distinct": 17,
"frontend": "frontend.txt:16pass;directed-cross-context.txt:1pass",
"API": "1test/23assertions;guardedloopback55441/simulator_fiscal_delta_20261021_test;DatabaseTransactionsrollback;allpreviousL3/ISPCmapsidentical",
"types": "types-final.txt:exit0",
"build": "build-final.txt:exit0",
"UI": "Actualcomponent calculation/save/recover/report andexport;localfileharness distinguishedfromprivateAPI;reuse existingacquisition at373 demonstrated",
"previous_functional_suites_repeated": false
},
"remaining": [
{
"item": "Taxas normais e especiais dos demais rendimentos",
"needed": "Corresponder62(1–4)/67 por rendimento e período,com alterações20/2009,4/2012,19/2013 e20/2022. Ficheiro local BR252/2022 contém apenas3.ºsuplemento/Decreto74/2022,semLei20/2022;INM identifica esta na p2731. Texto exacto em falta não é revalidação de autenticidade.",
"resolution": "Implementar ramo dirigido após correspondência do texto aplicável;não usar2002 ou taxa genérica."
},
{
"item": "Residentes/EP e dispensa68",
"needed": "Corresponder62(5) novo com dispensas68,em especial68(d),titular/rendimento imputável aEP e factos de cada dispensa;sem confundir taxa com obrigação de reter.",
"resolution": "Ramo próprio por natureza/dispensa;sem presumirretenção10%ouzero."
},
{
"item": "Convenções/benefícios",
"needed": "Convenção invocada,artigo,residência,beneficiário,condições,período e documento aplicável",
"resolution": "Só o caso dependente permanece indeterminado;nenhuma taxa reduzida sem esses elementos."
},
{
"item": "Conversão cambial",
"needed": "Moeda,montante,data,taxa efonte aplicáveis à operação",
"resolution": "Conversão rastreável;sem taxa actual nem relabelagemMZN."
},
{
"item": "Juros/regularizações/guia agregada",
"needed": "Regra/taxa/base/período próprios;guias/declarações anteriores e pagamentos para substituições",
"resolution": "Não substituir juros porzero;preparação actual não é declaração rectificativa nem liquidação anualIRPC."
}
],
"external": [
{
"item": "MRFTA19/39:rubricas eCER digitais/moeda electrónica",
"needed": "Correspondência da nova categoria62(5)a/b às rubricas/CERdo quadro7;remissão67(7)para62(6)existe no original,masnova taxa aparece62(5).",
"resolution": "Preservar divergência e original;não renumerar,adivinharCERou bloquear cálculo positivo independente."
},
{
"item": "GuiaM39 anterior eMRFTAactual",
"needed": "Manter exemplares;instruçõesMRFTAidentificamperíodoúnico e prazonominaldia20mêsseguinte àdedução;calendário/prorrogação eprocedimento2026específico nãoinferidos",
"resolution": "Mapa de preparação/exportação;sem preenchimentofinalCER,assinaturaouusodosserviços."
},
{
"item": "ActosAT",
"needed": "Submissão,recepção,aceitação eeventualcomprovativo externo",
"resolution": "Externos aoportal;exportar nãoexecuta nemcertifica estes actos."
}
],
"active_changes": false
},
"irpc_l5_grouped_QA_20261025": {
"status": "QA_grouped_compatible_L5_prepared_not_installed",
"receipt": "irpc-l5-grouped-qa-20261025.json",
"new_frontend_tests": 19,
"API": "1/34",
"FX": "Existingselectorandconversionunchanged",
"remaining": [
{
"item": "Dispensas68 e casos residentes/EP dependentes",
"data_needed": "Titular/operação e condições de68(a/b/c/d/f/g),incluindo gestão de imóveis próprios/transparência,participações e tipos de juros;casos digitais residentes/EP confrontados com62(5)/68(d).",
"resolution": "Ramo específico por dispensa/factos;não bloquear royalties comuns,retenções definitivas ou especiais independentes."
},
{
"item": "Convenções/benefícios invocados",
"data_needed": "País/convenção/artigo,beneficiário,residência,condições/período e prova invocados",
"resolution": "Só esse caso fica indeterminado;sem taxa reduzida presumida."
},
{
"item": "Outros rendimentos/devedores/períodos",
"data_needed": "Artigo próprio para categorias fora dos ramos agrupados,via devedorIRPS,anos fora2026,EP de categorias especiais62(4)quando não cabe62(2)",
"resolution": "Não aplicar20%ou10%genéricos;avançar os casos compatíveis."
},
{
"item": "Juros,rectificações e arredondamento de entrega",
"data_needed": "Regra/taxa/base/período dejuros,declaração/guia anterior,documentos de correcção e regra de arredondamento legal da entrega se aplicável",
"resolution": "Aritmética exacta preservada;aproximação assinalada;sem zero dejuros ou crédito anual automático."
},
{
"item": "EntregaAT com comprovativo em moeda estrangeira",
"data_needed": "MontanteMZN efectivamente entregue no comprovativo;conversão do pagamento ao beneficiário não prova entregaIRPC",
"resolution": "Base e comprovativo de retenção sofrida já convertem pelo mecanismo entregue;esta limitação não reabre o câmbio geral."
}
],
"external": [
{
"item": "MRFTA/CER e remissão67(7)",
"data_needed": "Correspondência concreta de rubricas/CER para novos casos;67(7)refere62(6),nova taxaestá62(5);manteroriginal",
"resolution": "Preparação/exportação disponível;sem adivinhar código,assinatura ou submissão."
},
{
"item": "ActosAT",
"data_needed": "Submissão,recepção,aceitação e eventuais comprovativos externos",
"resolution": "Externos;exportar não executa nem certifica esses actos."
}
],
"active_changes": false
}
}
@@ -0,0 +1,25 @@
{
"status": "prepared_for_Git_delivery_not_installed",
"installed": "5fa64bc0",
"previous_QA": "acf8ec3c",
"date": "2026-10-25",
"scope": "Existing AUD-SIM-INT02 only; J1-J5 and C1-C5 each with example in existing matrix/manual; not sent to AT",
"presentation": "Automatic interest is a simulation with supplied assumptions, not fiscally confirmed. Entered CER is not validated by official catalogue. Fictional999/998 and10% remain fictional.",
"pending": "Exact annual rate/source/validity, day basis, rounding, on-account not-withheld/mora; official CER by nature/digital-special and official transcription of mixed rates/codes.",
"verification": {
"new_delta_tests": 13,
"typescript": "passed",
"QA_build": "passed exit0",
"accepted_API_UI_L3_ISPC_FX": "reused; no new round",
"protected_runtime": 31
},
"runtime_sha256_LF": {
"resources/js/lib/irpc-interest.ts": "f8e6390b3b2c58c296f7e3fd14576e06ae248bc0cabce1a666b7094611f2a7dd",
"resources/js/lib/irpc-mrfta.ts": "76dcce8954f68b081d500be61de9c5b146a452a3eb578a0b78776ba9e1f8051c",
"resources/js/lib/irpc-mrfta-cases.ts": "4266746076ab3f70312fd042351e24dd2f136c4f3e8a277b57dd97849a9f1862",
"resources/js/components/simulation-irpc-mrfta.tsx": "913d1bb4ac0fc59763cf5d27bc637f6a713b2050c4463748db554af4be451538"
},
"previous_receipt": "irpc-interest-cer-qa-20261025.json remains historical proof for acf8ec3c; current presentation hashes in this receipt",
"schema_API_permissions_originals_changed": false,
"L5_complete": false
}
@@ -0,0 +1,579 @@
{
"status": "installed_operational_L5_demonstrated_scope_only",
"installed": {
"status": "installed",
"commit": "7a11c4ef8f06ef149eb0488be3cd0749dc609bd0",
"release": "/var/www/investmoz-homologacao/releases/7a11c4ef8f06ef149eb0488be3cd0749dc609bd0-68c76bdc",
"previous_release": "/var/www/investmoz-homologacao/releases/5fa64bc0f4b067e81d8728b344eb8697415ebedf-b08a592f",
"database_migrations": 0,
"content_imports": 0
},
"previous_baseline": "5fa64bc0f4b067e81d8728b344eb8697415ebedf",
"backup": {
"stage": "/var/backups/investmoz-irpc-interest-delivery-20261025/backup",
"created_at": "2026-10-25T19:14:23Z",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "ae9ba280390f9ca676845fdced1193642102658ea1274669c81387b26e38c8ba",
"files_sha256": "45b492019ca2f7cc93388f54b776754e5e045e15916f824d257928bb45e324f4",
"restore_verified": false
},
"restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "irpc_l5_restore_20261025",
"port": 55441,
"source_dump_sha256": "ae9ba280390f9ca676845fdced1193642102658ea1274669c81387b26e38c8ba",
"active_database_writes": 0
},
"preservation": {
"previous_release_preserved": "/var/www/investmoz-homologacao/releases/5fa64bc0f4b067e81d8728b344eb8697415ebedf-b08a592f",
"installed": {
"status": "installed",
"commit": "7a11c4ef8f06ef149eb0488be3cd0749dc609bd0",
"release": "/var/www/investmoz-homologacao/releases/7a11c4ef8f06ef149eb0488be3cd0749dc609bd0-68c76bdc",
"previous_release": "/var/www/investmoz-homologacao/releases/5fa64bc0f4b067e81d8728b344eb8697415ebedf-b08a592f",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 4,
"preserved_L3_ISPC_FX_runtime_files_verified": 31,
"documentary_files_verified": 30,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "e4bcbac53e96b6fef0b4bf512aeb9470"
},
"after": {
"rows": 106,
"checksum": "58c1c37e3152c0e387a19b3bcf057bb0"
}
},
"sessions": {
"before": {
"rows": 21,
"checksum": "887634a88e9462f38305ff7623c4c508"
},
"after": {
"rows": 22,
"checksum": "6a080a3d85940d192748fa272fe94f15"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"schema_permissions": {
"schema_sha256": "5045b3e51d2185377aa3d9ac7fa07a44fad3ec620cdfa83ffe31c8884ee1601d",
"roles_grants_sha256": "1530c33cb016e67bfdc64891ddfce7f185b13b56b2cd87c012871a685e118109",
"filesystem_permissions": {
".env": {
"mode": 416,
"uid": 1001,
"gid": 33
},
"storage": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"storage/app": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"bootstrap/cache": {
"mode": 1528,
"uid": 1001,
"gid": 33
}
},
"comparison_identity": "postgres;catalogue read only;no passwords collected",
"unchanged": true
},
"operational_delta": {
"status": "operational_delta_reconciled",
"comparison_identity": "postgres before/after;isolated restored baseline;no RLS visibility inference",
"cache": "queue:restart value/expiry and request-throttle counter/timer pair;no deleted cache rows",
"sessions": "anonymous sessions created by exact delivery verification user-agent",
"delta": {
"cache": {
"before_rows": 106,
"after_rows": 106,
"changes": [
{
"key_sha256": "8d6ea77eb4b34d86d207362d583cfa8bf2880b907becd9b00398964482c6b4bd",
"kind": "updated",
"fields": [
"expiration"
],
"key_pattern": "investemoz-cache-{hash}",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true
},
{
"key_sha256": "2f251473865d14b953236ab95b1521764754d76abd79b58ca7d38c96dfe2fab1",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-{hash}:timer",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true
},
{
"key_sha256": "7f7dd83f47f5bf404d55e6e9f1367948721579970b195680645e356031a070ff",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-illuminate:queue:restart",
"is_queue_restart_key": true,
"expiration_unchanged": false,
"throttle_timer_pair": false
}
]
},
"sessions": {
"before_rows": 21,
"after_rows": 24,
"changes": [
{
"key_sha256": "f72f988e8b92b60a9a4c888ad2e0a275af4dd678ca1c3f59765808df2385706b",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
},
{
"key_sha256": "c1d4a5d1f3f22112b617003a45e285538c6afbfc16502fe76476528808c5a62f",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
},
{
"key_sha256": "fb07fca164c39ae39fbf4002fe20469826c1c6050f2e6af7ce54926bffe87a87",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
}
]
}
},
"business_tables_to_confirm_separately": 172,
"active_data_writes_by_comparison": 0,
"restore_network": "none"
},
"public_verification": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "7a11c4ef8f06ef149eb0488be3cd0749dc609bd0",
"branch": "main",
"built_at": "2026-10-25T19:18:14.226356+00:00",
"manifest_sha256": "d78df5e7caee48690641143c8e8633b850db421468c837ec37992ee9cfa21aaa"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"Simulação pelos pressupostos introduzidos, sem confirmação fiscal dos juros.": [
"assets/services-xTyGW6qB.js"
],
"Códigos provisórios ou de simulação não são correspondências oficiais.": [
"assets/project-dossier-CxbkzdT3.js"
],
"Casos de trabalho separados por período, rubrica, taxa e CER": [
"assets/services-xTyGW6qB.js"
],
"Não são juros calculados pelo portal.": [
"assets/project-dossier-CxbkzdT3.js"
],
"Dispensa de retenção": [
"assets/project-dossier-CxbkzdT3.js",
"assets/services-xTyGW6qB.js"
],
"Calcular e guardar apuramento trimestral ISPC": [
"assets/services-xTyGW6qB.js"
],
"Calcular e guardar restituição E": [
"assets/services-xTyGW6qB.js"
],
"Reutilizar selecção cambial": [
"assets/services-xTyGW6qB.js"
]
},
"assets": [
{
"file": "assets/project-dossier-CxbkzdT3.js",
"status": 200,
"sha256": "be74df50d3dbed2fcf9873c70e9afd8b7e5403f74c4dfe3805ad96ab21f85440"
},
{
"file": "assets/services-xTyGW6qB.js",
"status": 200,
"sha256": "7a127267891fe3b05112ee7d749027d4c290e70539652d797345f9f6e059ffae"
},
{
"file": "assets/project-dossier-document-BjM1GMjD.js",
"status": 200,
"sha256": "b745b5faea379ce38afd77a90c4e391caf446513059727d1fcb75917a85b2429"
},
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-D3TVl0n5.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"runtime_delta": [
{
"path": "resources/js/lib/irpc-interest.ts",
"sha256_LF": "f8e6390b3b2c58c296f7e3fd14576e06ae248bc0cabce1a666b7094611f2a7dd"
},
{
"path": "resources/js/lib/irpc-mrfta.ts",
"sha256_LF": "76dcce8954f68b081d500be61de9c5b146a452a3eb578a0b78776ba9e1f8051c"
},
{
"path": "resources/js/lib/irpc-mrfta-cases.ts",
"sha256_LF": "4266746076ab3f70312fd042351e24dd2f136c4f3e8a277b57dd97849a9f1862"
},
{
"path": "resources/js/components/simulation-irpc-mrfta.tsx",
"sha256_LF": "913d1bb4ac0fc59763cf5d27bc637f6a713b2050c4463748db554af4be451538"
}
],
"protected_runtime": [
{
"path": "resources/js/components/acquisition-beverage-restitution.tsx",
"sha256": "6f44897b8b12569314551df0022c26da57a165634087942a724293e66837558d"
},
{
"path": "resources/js/components/fiscal-calculation-gaps.tsx",
"sha256": "1dab6ceb73756d4e023096b3b2ba767aaa843ff6cc69046ea630ab449a00b0dd"
},
{
"path": "resources/js/components/fiscal-l3-preparation.tsx",
"sha256": "e84a7b1ccadaa1b5bd78d778a3287f96ccaf530855eef404786cd7aa3d321b73"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256": "c206d4cfe575d6ba007aa2b425b5f898efa97e4162b8710e358b6ecfd9458542"
},
{
"path": "resources/js/components/simulation-operations.tsx",
"sha256": "a7e55972fa790063dcf11945055de2af46a77db9e509900af22ede7ec47bb4cf"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256": "b0ef55e0917bdb79f14b53ba9e95d73c08153befeb7d4ce73f81e6fb13992225"
},
{
"path": "resources/js/lib/iva-beverage-allocation.ts",
"sha256": "32968d198c7fe0c53ca89641c22d5749be6636be2c79127b867e4e3afd0dd40d"
},
{
"path": "resources/js/lib/iva-beverage-restitution.ts",
"sha256": "5c650cbd9469d5f99001f56fc4ff99ac973eb368036d4e96c6d171f1b220bd9e"
},
{
"path": "resources/js/lib/iva-calculation-gaps.ts",
"sha256": "2e7d84a0c196bd5b56fd67cc1a389d43d5041894184e675680a4de3cd10b31a2"
},
{
"path": "resources/js/lib/iva-operations.ts",
"sha256": "ec37b949f1233c5f5c14a87450c421ed29fabf1ed5b73fb32564564a2bc31f54"
},
{
"path": "resources/js/lib/l3-form-preparation.ts",
"sha256": "fc47f5fa5ec1420fbd847d0d081f00d99ebbb524164eef785b20877e0562f704"
},
{
"path": "resources/js/lib/ispc-residuals.ts",
"sha256": "40d5751c06c7c155ab4b7a17ee2d1653da2fbbf075807fbb8561cdbe19820955"
},
{
"path": "resources/js/components/simulation-ispc-residuals.tsx",
"sha256": "a9219d6f41ccbd0ce45659d4f6aa0fa1c169a685840f5cb1e18daeca377d5e18"
},
{
"path": "resources/js/lib/ispc-eligibility.ts",
"sha256": "44675c5efacdc1ae19505667611ba3b522d3043cebacc8754597c3a68ca89d25"
},
{
"path": "resources/js/components/simulation-ispc-quarter.tsx",
"sha256": "2c2555309b32d4261f14e7164f39314c9188129c2990357fc54090a2468dd2b4"
},
{
"path": "resources/js/components/simulation-ispc-withholding.tsx",
"sha256": "e0445d015b72859e48726959aa52686f79b1cf5c2ade29751efa83257068b878"
},
{
"path": "resources/js/lib/ispc-quarter.ts",
"sha256": "f66bd52e9cdfe1ddaa6b00a931465862b3d890b9be216b7a056740f027f24129"
},
{
"path": "resources/js/lib/ispc-withholding.ts",
"sha256": "6c31b240299edd3262efa28f7f3d5aee21123f94e30ef4ab90e26c35777cb6e4"
},
{
"path": "resources/js/components/simulation-ispc-eligibility.tsx",
"sha256": "f48dd4a8f87a994eda0447f81a463589905e5873b2e1044debac9d10825a880c"
},
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256": "cce283b1d0a07fb383fcb527225f4dd5bec829010a662cbaae1d60e595221977"
},
{
"path": "resources/js/lib/iva-modelo-a.ts",
"sha256": "c641619a05613c1620385baad0e9ffbf810dd970aafb30e12b3a7f9a3bf11846"
},
{
"path": "resources/js/lib/iva-fx-selection.ts",
"sha256": "9aa07ad443bc777b80510a3b5bd6aff9ddb9814d2450f3c690e531e74d71d998"
},
{
"path": "resources/js/components/simulation-fx-selection.tsx",
"sha256": "39bb6d87d404745b0b66349bc11626545a3672ae27321ce9b4658416592059bf"
},
{
"path": "resources/js/lib/business-financial-plan.ts",
"sha256": "c20274722d1ffcd0360f041a6cacb5d868fe0621cb27a1aca6e06826612c3ebb"
},
{
"path": "resources/js/lib/iva-currency-events.ts",
"sha256": "cc9f2045d302d7987310da4006cc250fc5c99a27397918d166d649bfc32fab08"
},
{
"path": "resources/js/lib/irpc-fx.ts",
"sha256": "5c4a7a477429f8d775acf6db3e117008468f5554e5731dec81f60fbb75e948fb"
},
{
"path": "resources/js/components/simulation-form.tsx",
"sha256": "01d20f4761933a3e4dd7c776bd4adcf9610ac0435d918a1998ae9f0c3ce3f234"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256": "df8b224b9472449711d0b69a873fa75f9cc9f4d84dce1a314fc576fae9c6eae2"
},
{
"path": "resources/js/lib/project-dossier-report.ts",
"sha256": "4523365e2d4a2fcd014e13393deb33a5ec4b9396ff580d8a237aa8c4f02265e4"
},
{
"path": "resources/js/lib/irpc-withholdings.ts",
"sha256": "8e5f3c035ce5e4d6c3fc82f933439ab580fa5519492f9c4d32cfb71b77b54803"
},
{
"path": "resources/js/components/simulation-irpc-withholdings.tsx",
"sha256": "751af4fab346659bc5ccb08b8a2169769af7521ea0035050af32b41ea7f5aa76"
}
],
"originals": [
{
"path": "docs/investmoz/simulations/source-archive/AT-Comunicado-9-2026-ISPC.pdf",
"sha256": "106f8a9ce9255c03549c70bf07fe999d32e6e55302d009b509862aa74ccb4973"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-30-ISPC.pdf",
"sha256": "6802edd06b6ff638a0b851a3ec7ecf69af8f07840faa47446becad67d35d445c"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-B-Geral.pdf",
"sha256": "bd977c7c59d4d98befd92e2c566b1bf168cb1343bb519f51b41a3807f431fc57"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-MRFTA-19-39.pdf",
"sha256": "8ea62c53066b482f87078a7a7b1ecf15ca98a12a122e8d7abca63acfc993186b"
},
{
"path": "docs/investmoz/simulations/source-archive/BM-Mercado-Monetario-MAIBOR-20261025.html",
"sha256": "00e8a7e0d3a1db4ca3beb56d5361b2084a0f1684f3d40fc1c203702a2190e063"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf",
"sha256": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-89-I-Serie-2017-06-08.pdf",
"sha256": "11f0cab15eb6e51010952203ffa24fdc533a24fd642e19525fe4f46b17a1f5e5"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-95-I-Suplemento-2025-05-21.pdf",
"sha256": "e0e682e2c027c3cd9c1d46a73a3f48bc5f6bdbf05667fd97314d7a3f6a456358"
},
{
"path": "docs/investmoz/simulations/source-archive/BR252-I-Serie-2022-Lei20-PESOE.pdf",
"sha256": "1159fd3ce1ba5581671796d083534da48bd3c5578298819e896f1c2a8026318d"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-22-2021-BR70.pdf",
"sha256": "a8fac38dcfe08f9c7a8e46254cff10e1ec82fc4f7a8d88ad6e4fe7d91ffc21a5"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-27-2026-BR123.pdf",
"sha256": "26249c3fa58f149c81de36e99d1aac2819a4771379d9e8833159660dabf539bb"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-29-1998-BR22-5-suplemento.pdf",
"sha256": "6242cbe675faadf085f43f95ec8c7e8868aafe67c3b2ab2bb010992288f954f8"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-3-2011-BR-11-I-mineiros.pdf",
"sha256": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-37-2023-BR124.pdf",
"sha256": "7e680b191481faa0e2e9057fa5053587eb2a29d1d8c819e0eb9f02814255a04c"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-9-2008-BR16.pdf",
"sha256": "96fccdecbfdc11c9eafb90fbc6c7bc259f88bbd4c7507d1ac3af1fa03f960697"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf",
"sha256": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-14-1992-BR42.pdf",
"sha256": "089fff7423e99a70a230a73ca379e4ea3a91d124703f91016e57ff82794b9e56"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-BR251-exemplar-MCNet5.pdf",
"sha256": "14eb34f0af91a8f5cb1770c7b52d6ff839c6818302d1ed96d79afbfb9fe999d4"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-IPP-BR250-Parlamento.pdf",
"sha256": "978cd22403ffd336a631704ecd7a5bbd814a427c815b9acdaca5515591dd9e2a"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2013-BR76.pdf",
"sha256": "bba96d645cc935ffc3d1a79b9f0f73ac1c693d6459c2ad41f56cd2841accae76"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2017-IRPS-BR-OCAM.pdf",
"sha256": "c3a0186cb9ad090d7a9533006295dc9bb6a62ad0d6150173cbd49dba4ee4b52d"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-2-2011-BR-1-4-suplemento-MCNet.pdf",
"sha256": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf",
"sha256": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-34-2007-BR52.pdf",
"sha256": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-1994-BR37-3-suplemento.pdf",
"sha256": "210df9db8980d0a5690cd187a6eeec7e37a900d743e39062c16f4e0d12215c7e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-2012-BR3.pdf",
"sha256": "b8845cef41dcbd9ba50c43dbfa743a56030dd3d348242a107e1ae30279eec121"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-7-1991-Partidos-IFES.pdf",
"sha256": "6b783a0bb3330688ef10660a58060d9724aa2da6a873d234fe902f0eaaeda42d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-CDT-1992.pdf",
"sha256": "d504e1024b28aee5c6acf4592acb96ec9c915a8414f67a61ab6984d6acf9df9d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-Protocolo-2009.pdf",
"sha256": "f353773dcf41f09f4daa6cf5ba5a5f7994f3e02615867c2dcffc61c3d901bf9b"
}
],
"pipeline_checks": [
"OK (1 test, 3106 assertions)",
"built in 30.04s",
"OK (59 tests, 317 assertions)",
"# tests 872",
"# pass 872",
"# fail 0"
],
"accepted_proofs_reused": true,
"manually_repeated_accepted_functional_suites": false,
"limitations": "Simulation with explicit supplied parameters is not fiscal confirmation of interest; provisional CER not official correspondence. Ten exact AT questions J1-J5/C1-C5 retained in existing matrix. L5 operational within demonstrated scope,not fully completed.",
"L5_complete": false,
"next": "L6 normal IRPC:adjustments to financial result;no repeated L5 source research without new information",
"proof_files": {
"backup.txt": "f321c1f1f595c3a056b41b6fe0dfe68941461d8efa686de7e76905946af180c9",
"compact-dependencies.txt": "6c66d80adb889a470b2500dfbbd6f984bef3a2ce9967f11ea21ac1bafe5af745",
"installed-protected.txt": "60564bfd4ee8d7158ebd5247b1321c0c1a4cfb69eb2401b8d7e4ec1b71f8e560",
"installed-public-delta.json": "9f121ebaff22a17942d2ba3ca98feaf3e5f9735c1eb25f1dcc47c0d07ba95804",
"installed-public.txt": "da646d8f4adfc9f6314bd5201675ea35c7bf9d247a15612bbcb0370dda1672c2",
"integration.txt": "dcdc8f4540117e2d87c44fbe99c92028700dc998b8d051cbebc9fe8638ef25f0",
"manifest-served.json": "d78df5e7caee48690641143c8e8633b850db421468c837ec37992ee9cfa21aaa",
"operational-delta.txt": "264946621bdd67789d3d6b2c4589fc77e2337e606f90e90a5baec812a2368940",
"preflight.txt": "fbf315297e990f29224c110982d02dbae88da98c2819f001af914f7f8a23c73e",
"preparation.json": "e4b83c40a692adc864650391515f29e97b59da6ddfee3f19840ff07e7e8771ec",
"progress.txt": "2f9ccb94847d399d18b4e76e1f283ae00376791d428cf138c750d5075fba1ce0",
"restore.txt": "e51ada3301c3c18af3dfda10a537275b55f183bb6ac1e9bb1d2ea10ec1d4ecff",
"schema-permissions-after.txt": "76b5a4d8af11e4898a205062766cfb7ab6ec0783200e77e60a1927aa1ca18597",
"schema-permissions-before.txt": "0ab7c964792acdd8917bce256c472e55e034b103500a58b49f020b5084823ed7",
"status1.txt": "b6da9d8d0b2a31b94bed039b7806400193bcbf9c386faae848d7ea7512e6da71",
"status2.txt": "b6da9d8d0b2a31b94bed039b7806400193bcbf9c386faae848d7ea7512e6da71",
"status3.txt": "998b40a5ebef08ac85ee0cdf80a8f8b07da159565f0f7a62e8c02613d9859c8d",
"status4.txt": "f2580fba78230810b2bd95885494d76c86a2e5ee7f3705e3d300eca2f06e5109",
"status5.txt": "f2580fba78230810b2bd95885494d76c86a2e5ee7f3705e3d300eca2f06e5109",
"status6.txt": "f2580fba78230810b2bd95885494d76c86a2e5ee7f3705e3d300eca2f06e5109",
"status7.txt": "1248021d6ed7f0651a4d19b0d9985eb19cb285cb73927ed6c02a3e195881aabc"
}
}
@@ -0,0 +1,391 @@
{
"status": "QA_two_point_delta_demonstrated_not_installed",
"installed_baseline": "5fa64bc0f4b067e81d8728b344eb8697415ebedf",
"branch": "codex/irpc-interest-cer-qa-20261025",
"scope_only": [
"juros automáticos por parâmetros documentados",
"separação CER/rubrica/taxa por casos de trabalho"
],
"implemented": {
"juros": "Aritmética racional diária com taxa anual final/base anual/arredondamento/fontes/versão do caso;principal após entregas parciais,paragem no pagamento integral,contagem por anos quando documentada,versão própria apenas da nova aritmética. Definitiva e por conta efectivamente retida neste recorte.",
"CER_rubricas": "Chaves estáveis por período/rubrica/taxa/CER;origens,documentos e referências conservados;fichaHTML por caso,mantendo pendências do período e sem declarar anexo/declaração autónoma.",
"compatibility": "Campos adicionais;modo legado preservado. Leitor5fa64bc0 conserva o payload exacto e o cálculo fiscal actual;novo resultado de juros é histórico nessa versão,sem recálculo."
},
"not_claimed": [
"Taxa fiscal2026 global cadastrada/activada ou substituição automática daMAIBOR",
"Convenção fiscal de base anual/arredondamento inferida sem fonte do caso",
"Juros de mora ou regra completa de imposto por conta não retido",
"CatálogoCER integral e novas correspondências oficiais digitais/especiais",
"Autorização para fundir taxas/CER ou criar declarações/anexos oficiais",
"Instalação deste novo incremento ou conclusão deL5"
],
"remaining_only_two_points": {
"juros": "Ligar parâmetro/fonte fiscal aplicáveis2026 e as convenções documentadas do caso;regra de mora e retenção por conta não efectuada continuam separadas. Sem perfil completo,a aritmética fica indeterminada;não reutilizar taxa de exemplo.",
"CER_rubricas": "Obter/corresponder os códigos/rubricas ainda pendentes e a transposição oficial de múltiplas taxas/CER;as fichas separam trabalho,mas não resolvem o catálogo ou o procedimento oficial."
},
"verification": {
"new_frontend": "13 tests passed;no old functional suites manually repeated",
"types": "tsc --noEmit exit0",
"build": "complete QA build exit0",
"private_api": "1test/19assertions;DatabaseTransactions rollback;loopback55441/simulator_fiscal_delta_20261021_test",
"dossier": "generated from actual API recovery;parameters/day segments/report preserved",
"UI": {
"documentedParameterCalculation": true,
"fictionalRateExplicit": true,
"missingRateIndeterminate": true,
"principalPreserved": true,
"localSaveRecovery": true,
"caseDownload": true,
"notOfficialDeclaration": true,
"differentRatesCodesSeparated": true,
"periodTotalIndeterminate": true,
"privateApi": "IrpcInterestCerDraftTest,separate",
"errors": []
},
"installed_reader_new_payload": {
"readerRevision": "5fa64bc0",
"readNewPayload": true,
"taxResultCurrent": true,
"newPreparationHistorical": true,
"roundTripExact": true,
"oldCalculationsReexecuted": false
},
"accepted_proofs": "Existing5fa64bc0,L3,ISPC,FX proofs reused;onlynewdelta andnew-payload-reader compatibility checked"
},
"examples": "Annual10%,365days,rounding conventions andCER999/998 are explicitly fictional QA parameters/codes,not official2026 fiscal data. Principal7300,paid3650,interest15 on5+5days,total3665 in onecase;20%/10%withholding and999/998 separate cases keepperiodtotalindeterminate.",
"runtime_delta": [
{
"path": "resources/js/lib/irpc-interest.ts",
"sha256_LF": "f8e6390b3b2c58c296f7e3fd14576e06ae248bc0cabce1a666b7094611f2a7dd"
},
{
"path": "resources/js/lib/irpc-mrfta-cases.ts",
"sha256_LF": "65133d0005051e0e5c9fbc8346478cca5198717e283e153094132a16d384a620"
},
{
"path": "resources/js/lib/irpc-mrfta.ts",
"sha256_LF": "c3132e6c1cdecff6a2d6d369ef5d8118aa6d58b59bca51516a1a3e0cb42f058e"
},
{
"path": "resources/js/components/simulation-irpc-mrfta.tsx",
"sha256_LF": "27a93e14eecfb002fe2f264e1854ec5bf852997535d61db1a8d3373a8e8470eb"
}
],
"protected_runtime": [
{
"path": "resources/js/components/acquisition-beverage-restitution.tsx",
"sha256": "6f44897b8b12569314551df0022c26da57a165634087942a724293e66837558d",
"sha256_LF": "6f44897b8b12569314551df0022c26da57a165634087942a724293e66837558d"
},
{
"path": "resources/js/components/fiscal-calculation-gaps.tsx",
"sha256": "1dab6ceb73756d4e023096b3b2ba767aaa843ff6cc69046ea630ab449a00b0dd",
"sha256_LF": "1dab6ceb73756d4e023096b3b2ba767aaa843ff6cc69046ea630ab449a00b0dd"
},
{
"path": "resources/js/components/fiscal-l3-preparation.tsx",
"sha256": "e84a7b1ccadaa1b5bd78d778a3287f96ccaf530855eef404786cd7aa3d321b73",
"sha256_LF": "e84a7b1ccadaa1b5bd78d778a3287f96ccaf530855eef404786cd7aa3d321b73"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256": "c206d4cfe575d6ba007aa2b425b5f898efa97e4162b8710e358b6ecfd9458542",
"sha256_LF": "c206d4cfe575d6ba007aa2b425b5f898efa97e4162b8710e358b6ecfd9458542"
},
{
"path": "resources/js/components/simulation-operations.tsx",
"sha256": "a7e55972fa790063dcf11945055de2af46a77db9e509900af22ede7ec47bb4cf",
"sha256_LF": "a7e55972fa790063dcf11945055de2af46a77db9e509900af22ede7ec47bb4cf"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256": "b0ef55e0917bdb79f14b53ba9e95d73c08153befeb7d4ce73f81e6fb13992225",
"sha256_LF": "b0ef55e0917bdb79f14b53ba9e95d73c08153befeb7d4ce73f81e6fb13992225"
},
{
"path": "resources/js/lib/iva-beverage-allocation.ts",
"sha256": "32968d198c7fe0c53ca89641c22d5749be6636be2c79127b867e4e3afd0dd40d",
"sha256_LF": "32968d198c7fe0c53ca89641c22d5749be6636be2c79127b867e4e3afd0dd40d"
},
{
"path": "resources/js/lib/iva-beverage-restitution.ts",
"sha256": "5c650cbd9469d5f99001f56fc4ff99ac973eb368036d4e96c6d171f1b220bd9e",
"sha256_LF": "5c650cbd9469d5f99001f56fc4ff99ac973eb368036d4e96c6d171f1b220bd9e"
},
{
"path": "resources/js/lib/iva-calculation-gaps.ts",
"sha256": "2e7d84a0c196bd5b56fd67cc1a389d43d5041894184e675680a4de3cd10b31a2",
"sha256_LF": "2e7d84a0c196bd5b56fd67cc1a389d43d5041894184e675680a4de3cd10b31a2"
},
{
"path": "resources/js/lib/iva-operations.ts",
"sha256": "ec37b949f1233c5f5c14a87450c421ed29fabf1ed5b73fb32564564a2bc31f54",
"sha256_LF": "ec37b949f1233c5f5c14a87450c421ed29fabf1ed5b73fb32564564a2bc31f54"
},
{
"path": "resources/js/lib/l3-form-preparation.ts",
"sha256": "fc47f5fa5ec1420fbd847d0d081f00d99ebbb524164eef785b20877e0562f704",
"sha256_LF": "fc47f5fa5ec1420fbd847d0d081f00d99ebbb524164eef785b20877e0562f704"
},
{
"path": "resources/js/lib/ispc-residuals.ts",
"sha256": "40d5751c06c7c155ab4b7a17ee2d1653da2fbbf075807fbb8561cdbe19820955",
"sha256_LF": "40d5751c06c7c155ab4b7a17ee2d1653da2fbbf075807fbb8561cdbe19820955"
},
{
"path": "resources/js/components/simulation-ispc-residuals.tsx",
"sha256": "a9219d6f41ccbd0ce45659d4f6aa0fa1c169a685840f5cb1e18daeca377d5e18",
"sha256_LF": "a9219d6f41ccbd0ce45659d4f6aa0fa1c169a685840f5cb1e18daeca377d5e18"
},
{
"path": "resources/js/lib/ispc-eligibility.ts",
"sha256": "44675c5efacdc1ae19505667611ba3b522d3043cebacc8754597c3a68ca89d25",
"sha256_LF": "44675c5efacdc1ae19505667611ba3b522d3043cebacc8754597c3a68ca89d25"
},
{
"path": "resources/js/components/simulation-ispc-quarter.tsx",
"sha256": "2c2555309b32d4261f14e7164f39314c9188129c2990357fc54090a2468dd2b4",
"sha256_LF": "2c2555309b32d4261f14e7164f39314c9188129c2990357fc54090a2468dd2b4"
},
{
"path": "resources/js/components/simulation-ispc-withholding.tsx",
"sha256": "e0445d015b72859e48726959aa52686f79b1cf5c2ade29751efa83257068b878",
"sha256_LF": "e0445d015b72859e48726959aa52686f79b1cf5c2ade29751efa83257068b878"
},
{
"path": "resources/js/lib/ispc-quarter.ts",
"sha256": "f66bd52e9cdfe1ddaa6b00a931465862b3d890b9be216b7a056740f027f24129",
"sha256_LF": "f66bd52e9cdfe1ddaa6b00a931465862b3d890b9be216b7a056740f027f24129"
},
{
"path": "resources/js/lib/ispc-withholding.ts",
"sha256": "6c31b240299edd3262efa28f7f3d5aee21123f94e30ef4ab90e26c35777cb6e4",
"sha256_LF": "6c31b240299edd3262efa28f7f3d5aee21123f94e30ef4ab90e26c35777cb6e4"
},
{
"path": "resources/js/components/simulation-ispc-eligibility.tsx",
"sha256": "f48dd4a8f87a994eda0447f81a463589905e5873b2e1044debac9d10825a880c",
"sha256_LF": "f48dd4a8f87a994eda0447f81a463589905e5873b2e1044debac9d10825a880c"
},
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256": "cce283b1d0a07fb383fcb527225f4dd5bec829010a662cbaae1d60e595221977",
"sha256_LF": "cce283b1d0a07fb383fcb527225f4dd5bec829010a662cbaae1d60e595221977"
},
{
"path": "resources/js/lib/iva-modelo-a.ts",
"sha256": "c641619a05613c1620385baad0e9ffbf810dd970aafb30e12b3a7f9a3bf11846",
"sha256_LF": "c641619a05613c1620385baad0e9ffbf810dd970aafb30e12b3a7f9a3bf11846"
},
{
"path": "resources/js/lib/iva-fx-selection.ts",
"sha256": "9aa07ad443bc777b80510a3b5bd6aff9ddb9814d2450f3c690e531e74d71d998",
"sha256_LF": "9aa07ad443bc777b80510a3b5bd6aff9ddb9814d2450f3c690e531e74d71d998"
},
{
"path": "resources/js/components/simulation-fx-selection.tsx",
"sha256": "39bb6d87d404745b0b66349bc11626545a3672ae27321ce9b4658416592059bf",
"sha256_LF": "39bb6d87d404745b0b66349bc11626545a3672ae27321ce9b4658416592059bf"
},
{
"path": "resources/js/lib/business-financial-plan.ts",
"sha256": "c20274722d1ffcd0360f041a6cacb5d868fe0621cb27a1aca6e06826612c3ebb",
"sha256_LF": "c20274722d1ffcd0360f041a6cacb5d868fe0621cb27a1aca6e06826612c3ebb"
},
{
"path": "resources/js/lib/iva-currency-events.ts",
"sha256": "cc9f2045d302d7987310da4006cc250fc5c99a27397918d166d649bfc32fab08",
"sha256_LF": "cc9f2045d302d7987310da4006cc250fc5c99a27397918d166d649bfc32fab08"
},
{
"path": "resources/js/lib/irpc-fx.ts",
"sha256": "5c4a7a477429f8d775acf6db3e117008468f5554e5731dec81f60fbb75e948fb",
"sha256_LF": "5c4a7a477429f8d775acf6db3e117008468f5554e5731dec81f60fbb75e948fb"
},
{
"path": "resources/js/components/simulation-form.tsx",
"sha256": "01d20f4761933a3e4dd7c776bd4adcf9610ac0435d918a1998ae9f0c3ce3f234",
"sha256_LF": "01d20f4761933a3e4dd7c776bd4adcf9610ac0435d918a1998ae9f0c3ce3f234"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256": "df8b224b9472449711d0b69a873fa75f9cc9f4d84dce1a314fc576fae9c6eae2",
"sha256_LF": "df8b224b9472449711d0b69a873fa75f9cc9f4d84dce1a314fc576fae9c6eae2"
},
{
"path": "resources/js/lib/project-dossier-report.ts",
"sha256": "4523365e2d4a2fcd014e13393deb33a5ec4b9396ff580d8a237aa8c4f02265e4",
"sha256_LF": "4523365e2d4a2fcd014e13393deb33a5ec4b9396ff580d8a237aa8c4f02265e4"
},
{
"path": "resources/js/lib/irpc-withholdings.ts",
"sha256_LF": "8e5f3c035ce5e4d6c3fc82f933439ab580fa5519492f9c4d32cfb71b77b54803"
},
{
"path": "resources/js/components/simulation-irpc-withholdings.tsx",
"sha256_LF": "751af4fab346659bc5ccb08b8a2169769af7521ea0035050af32b41ea7f5aa76"
}
],
"originals_unchanged": [
{
"path": "docs/investmoz/simulations/source-archive/AT-Comunicado-9-2026-ISPC.pdf",
"sha256": "106f8a9ce9255c03549c70bf07fe999d32e6e55302d009b509862aa74ccb4973"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-30-ISPC.pdf",
"sha256": "6802edd06b6ff638a0b851a3ec7ecf69af8f07840faa47446becad67d35d445c"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-B-Geral.pdf",
"sha256": "bd977c7c59d4d98befd92e2c566b1bf168cb1343bb519f51b41a3807f431fc57"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-MRFTA-19-39.pdf",
"sha256": "8ea62c53066b482f87078a7a7b1ecf15ca98a12a122e8d7abca63acfc993186b"
},
{
"path": "docs/investmoz/simulations/source-archive/BM-Mercado-Monetario-MAIBOR-20261025.html",
"sha256": "00e8a7e0d3a1db4ca3beb56d5361b2084a0f1684f3d40fc1c203702a2190e063"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf",
"sha256": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-89-I-Serie-2017-06-08.pdf",
"sha256": "11f0cab15eb6e51010952203ffa24fdc533a24fd642e19525fe4f46b17a1f5e5"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-95-I-Suplemento-2025-05-21.pdf",
"sha256": "e0e682e2c027c3cd9c1d46a73a3f48bc5f6bdbf05667fd97314d7a3f6a456358"
},
{
"path": "docs/investmoz/simulations/source-archive/BR252-I-Serie-2022-Lei20-PESOE.pdf",
"sha256": "1159fd3ce1ba5581671796d083534da48bd3c5578298819e896f1c2a8026318d"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-22-2021-BR70.pdf",
"sha256": "a8fac38dcfe08f9c7a8e46254cff10e1ec82fc4f7a8d88ad6e4fe7d91ffc21a5"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-27-2026-BR123.pdf",
"sha256": "26249c3fa58f149c81de36e99d1aac2819a4771379d9e8833159660dabf539bb"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-29-1998-BR22-5-suplemento.pdf",
"sha256": "6242cbe675faadf085f43f95ec8c7e8868aafe67c3b2ab2bb010992288f954f8"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-3-2011-BR-11-I-mineiros.pdf",
"sha256": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-37-2023-BR124.pdf",
"sha256": "7e680b191481faa0e2e9057fa5053587eb2a29d1d8c819e0eb9f02814255a04c"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-9-2008-BR16.pdf",
"sha256": "96fccdecbfdc11c9eafb90fbc6c7bc259f88bbd4c7507d1ac3af1fa03f960697"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf",
"sha256": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-14-1992-BR42.pdf",
"sha256": "089fff7423e99a70a230a73ca379e4ea3a91d124703f91016e57ff82794b9e56"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-BR251-exemplar-MCNet5.pdf",
"sha256": "14eb34f0af91a8f5cb1770c7b52d6ff839c6818302d1ed96d79afbfb9fe999d4"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-IPP-BR250-Parlamento.pdf",
"sha256": "978cd22403ffd336a631704ecd7a5bbd814a427c815b9acdaca5515591dd9e2a"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2013-BR76.pdf",
"sha256": "bba96d645cc935ffc3d1a79b9f0f73ac1c693d6459c2ad41f56cd2841accae76"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2017-IRPS-BR-OCAM.pdf",
"sha256": "c3a0186cb9ad090d7a9533006295dc9bb6a62ad0d6150173cbd49dba4ee4b52d"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-2-2011-BR-1-4-suplemento-MCNet.pdf",
"sha256": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf",
"sha256": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-34-2007-BR52.pdf",
"sha256": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-1994-BR37-3-suplemento.pdf",
"sha256": "210df9db8980d0a5690cd187a6eeec7e37a900d743e39062c16f4e0d12215c7e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-2012-BR3.pdf",
"sha256": "b8845cef41dcbd9ba50c43dbfa743a56030dd3d348242a107e1ae30279eec121"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-7-1991-Partidos-IFES.pdf",
"sha256": "6b783a0bb3330688ef10660a58060d9724aa2da6a873d234fe902f0eaaeda42d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-CDT-1992.pdf",
"sha256": "d504e1024b28aee5c6acf4592acb96ec9c915a8414f67a61ab6984d6acf9df9d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-Protocolo-2009.pdf",
"sha256": "f353773dcf41f09f4daa6cf5ba5a5f7994f3e02615867c2dcffc61c3d901bf9b"
}
],
"source_review": {
"reuse": "AcceptedDecreto9/2008,25/35 andMRFTA/BM original sources. No new rate/CER activated from research.",
"AT_inventory": {
"url": "https://www.at.gov.mz/api/documents?root=LEGISLACAO",
"path": "outputs/irpc-interest-cer/at-legislation-inventory.json",
"sha256": "d74e764224d97fdea2e6e6e3496614c9b0f94941e8f8757eed8e7847bda9508c",
"documents": 189,
"read_scope": "Metadata/title inventory;not a fresh integral reading of189PDFs. No identified title supplies the required successor fiscal parameter or MRFTA CER crosswalk."
},
"CER_search": "Decreto68/2014 and subsequent disaggregation references identified;no applicable detailed CER crosswalk recovered for automatic mapping. Unnumbered drafts,field numbers and budget aggregates not used as revenue codes.",
"rate_search": "No applicable2026 fiscal replacement parameter obtained in this scoped check;current banking reference rates were not substituted."
},
"implementation_choices": [
"Complete parameter references are case data,not a new organizational approver. No default tax rate/day basis/rounding or source publication activates a calculation.",
"Working-case export retains period gaps;it does not decide official declaration splitting."
],
"active_changes": false,
"schema_backend_api_config_permissions_dependencies_delta": false,
"L5_integrally_completed": false,
"proofs": {
"outputs/irpc-interest-cer/api.txt": "e647e9d8daf16cfa4359e35edd373cfdbc7e35ef684b5fb8cdb1107eeb158ee7",
"outputs/irpc-interest-cer/at-legislation-inventory.json": "d74e764224d97fdea2e6e6e3496614c9b0f94941e8f8757eed8e7847bda9508c",
"outputs/irpc-interest-cer/build.txt": "3841d26e7f52f6468a337f1fd786dc7c04be122bc639bf3755842c39e1a837ad",
"outputs/irpc-interest-cer/calculated.json": "ff2d649ba269e7618a9cb9208f5e47baff5bbbc45c65176ba163cea5e69ad390",
"outputs/irpc-interest-cer/case-10-998.html": "bcfe6a84e07d3b411e28e231c797daf7c013041856dbb0aa05ba605309e8370a",
"outputs/irpc-interest-cer/case.html": "24ee8874acb770769bbe4e807af05e9d42646257142717c55c621d34259a6dc8",
"outputs/irpc-interest-cer/dossier.html": "5f69bd87ff0bcaa52c20eaa1c9feafeb6ae263d667aa4c53df15bd2abce8752d",
"outputs/irpc-interest-cer/dossier.json": "61c194509f6c2feb432819ff6f5d72647acf3ec2ff068bb299fe4c6be6a294da",
"outputs/irpc-interest-cer/dossier.txt": "a0473de355821758c4d320eea8e7af76a0d196a9cee652c71af723d6f69832f0",
"outputs/irpc-interest-cer/frontend.txt": "686362609c03b88d3f0d90951be11d0a3c65be8d79a3c50aa24c0249ab545da2",
"outputs/irpc-interest-cer/index.html": "6bb76e37ac20a73cb9ffcda14f1ac9db701aa01bc2ef2f62fc5adaaffb640ca8",
"outputs/irpc-interest-cer/installed-reader-compatibility.json": "dcac8cb281bac3d3ccace6c73087632c53dec1c27c5e4967b631a822dcb7da14",
"outputs/irpc-interest-cer/mixed.json": "82fec05e50261f4eb13160de93c78d76a6a58c79644ed2ca97fc27ae3ce41c3e",
"outputs/irpc-interest-cer/preparation.html": "8f210407ab61ed7a1f0bd3b8bce7c247bcecfc4ce2fe932924957fd3af1ff990",
"outputs/irpc-interest-cer/recovered.json": "ac9d7c1338c99190616d62f0ad5c7d11403af65d73ff6f7726a871c1693596e1",
"outputs/irpc-interest-cer/types.txt": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"outputs/irpc-interest-cer/ui-proof.json": "366a3aa989f40ea195b4d334bdc666d255ed88125eca9533a669eb0721e0267d",
"outputs/irpc-interest-cer/ui.png": "cac3bab6a576d5394b97d349903ead7ad12f3270a9c8a9f16ec2880822420d41",
"outputs/irpc-interest-cer/ui.txt": "98b34de11dd5b993510b997413d537320f291c447c6a1a9244817df99cc7cc72"
}
}
@@ -0,0 +1,360 @@
{
"status": "QA_juros_MRFTA_demonstrated_not_installed",
"installed_baseline": "ce746d889d5711f23f4e0ac8d9802997b5e106f9",
"branch": "codex/irpc-juros-mrfta-qa-20261025",
"implemented": [
"MRFTA preparation fields1–7 by single month;reserved8/9;HTML preparation export",
"Rubric/base/rate/tax and reconciled payments reused from frozen IRPC result;separate suffered/dispensed/other-month rows",
"Documented CER transcription with reference;no inferred CER from old guide field numbers",
"Documented compensatory-interest assessment amount or zero only after full timely remittance with documented deadline",
"Unknown rates/interest,digital/special rubrics,unknown CER,multiple rates or other taxes keep final total indeterminate while principal rows remain available",
"Private draft persistence,recovery,history;standalone MRFTA and full dossier reports;old IRPC inputs/calculations retained"
],
"not_implemented": [
"Automatic compensatory-interest arithmetic for2026:applicable successor/parameter for discontinuedMAIBOR12months not obtained",
"Juros de mora;autonomous tax;IRPS beyond prior delivered case",
"Digital/e-money and unqualified special rubrics;MRFTA CER catalogue not supplied by this increment",
"Mixed rate/CER same official rubric remains separate pending correspondence",
"No official PDF changed/filled;HTML preparation reflects fields and retains sourcePDF original;no submission/signatures/ATacceptance"
],
"verification": {
"frontend": "12 new tests+1 directed existing IRPC presentation test passed",
"types": "tsc --noEmit exit0",
"build": "complete QA build exit0",
"private_api": "1test/14assertions;DatabaseTransactions rollback;127.0.0.1:55441/simulator_fiscal_delta_20261021_test",
"dossier": "generated from actual private API recovered model",
"UI": {
"calculation": true,
"localSaveRecovery": true,
"privateApiProof": "IrpcMrftaDraftTest, separate",
"report": true,
"documentedInterest": true,
"insufficientInformation": true,
"download": true,
"errors": []
},
"CER_example": "999 is explicitly fictional QA data,not an official recipe-code mapping",
"unchanged_proofs": "AcceptedL3/ISPC/FX and ce746d88 calculation proofs reused;no manual repeat suites"
},
"runtime_delta": [
{
"path": "resources/js/lib/irpc-mrfta.ts",
"sha256_LF": "1ff1725724dbdaaa9a3857941d03e312c6a7da573d369ee86015edc90cd2d0d1"
},
{
"path": "resources/js/lib/irpc-withholdings.ts",
"sha256_LF": "8e5f3c035ce5e4d6c3fc82f933439ab580fa5519492f9c4d32cfb71b77b54803"
},
{
"path": "resources/js/components/simulation-irpc-mrfta.tsx",
"sha256_LF": "9cf7d5e447e1a9ed37d1bd24b4ac5104b1adec3790ff8db4356c3b68b339d89a"
},
{
"path": "resources/js/components/simulation-irpc-withholdings.tsx",
"sha256_LF": "751af4fab346659bc5ccb08b8a2169769af7521ea0035050af32b41ea7f5aa76"
}
],
"protected_runtime": [
{
"path": "resources/js/components/acquisition-beverage-restitution.tsx",
"sha256": "6f44897b8b12569314551df0022c26da57a165634087942a724293e66837558d",
"sha256_LF": "6f44897b8b12569314551df0022c26da57a165634087942a724293e66837558d"
},
{
"path": "resources/js/components/fiscal-calculation-gaps.tsx",
"sha256": "1dab6ceb73756d4e023096b3b2ba767aaa843ff6cc69046ea630ab449a00b0dd",
"sha256_LF": "1dab6ceb73756d4e023096b3b2ba767aaa843ff6cc69046ea630ab449a00b0dd"
},
{
"path": "resources/js/components/fiscal-l3-preparation.tsx",
"sha256": "e84a7b1ccadaa1b5bd78d778a3287f96ccaf530855eef404786cd7aa3d321b73",
"sha256_LF": "e84a7b1ccadaa1b5bd78d778a3287f96ccaf530855eef404786cd7aa3d321b73"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256": "c206d4cfe575d6ba007aa2b425b5f898efa97e4162b8710e358b6ecfd9458542",
"sha256_LF": "c206d4cfe575d6ba007aa2b425b5f898efa97e4162b8710e358b6ecfd9458542"
},
{
"path": "resources/js/components/simulation-operations.tsx",
"sha256": "a7e55972fa790063dcf11945055de2af46a77db9e509900af22ede7ec47bb4cf",
"sha256_LF": "a7e55972fa790063dcf11945055de2af46a77db9e509900af22ede7ec47bb4cf"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256": "b0ef55e0917bdb79f14b53ba9e95d73c08153befeb7d4ce73f81e6fb13992225",
"sha256_LF": "b0ef55e0917bdb79f14b53ba9e95d73c08153befeb7d4ce73f81e6fb13992225"
},
{
"path": "resources/js/lib/iva-beverage-allocation.ts",
"sha256": "32968d198c7fe0c53ca89641c22d5749be6636be2c79127b867e4e3afd0dd40d",
"sha256_LF": "32968d198c7fe0c53ca89641c22d5749be6636be2c79127b867e4e3afd0dd40d"
},
{
"path": "resources/js/lib/iva-beverage-restitution.ts",
"sha256": "5c650cbd9469d5f99001f56fc4ff99ac973eb368036d4e96c6d171f1b220bd9e",
"sha256_LF": "5c650cbd9469d5f99001f56fc4ff99ac973eb368036d4e96c6d171f1b220bd9e"
},
{
"path": "resources/js/lib/iva-calculation-gaps.ts",
"sha256": "2e7d84a0c196bd5b56fd67cc1a389d43d5041894184e675680a4de3cd10b31a2",
"sha256_LF": "2e7d84a0c196bd5b56fd67cc1a389d43d5041894184e675680a4de3cd10b31a2"
},
{
"path": "resources/js/lib/iva-operations.ts",
"sha256": "ec37b949f1233c5f5c14a87450c421ed29fabf1ed5b73fb32564564a2bc31f54",
"sha256_LF": "ec37b949f1233c5f5c14a87450c421ed29fabf1ed5b73fb32564564a2bc31f54"
},
{
"path": "resources/js/lib/l3-form-preparation.ts",
"sha256": "fc47f5fa5ec1420fbd847d0d081f00d99ebbb524164eef785b20877e0562f704",
"sha256_LF": "fc47f5fa5ec1420fbd847d0d081f00d99ebbb524164eef785b20877e0562f704"
},
{
"path": "resources/js/lib/ispc-residuals.ts",
"sha256": "40d5751c06c7c155ab4b7a17ee2d1653da2fbbf075807fbb8561cdbe19820955",
"sha256_LF": "40d5751c06c7c155ab4b7a17ee2d1653da2fbbf075807fbb8561cdbe19820955"
},
{
"path": "resources/js/components/simulation-ispc-residuals.tsx",
"sha256": "a9219d6f41ccbd0ce45659d4f6aa0fa1c169a685840f5cb1e18daeca377d5e18",
"sha256_LF": "a9219d6f41ccbd0ce45659d4f6aa0fa1c169a685840f5cb1e18daeca377d5e18"
},
{
"path": "resources/js/lib/ispc-eligibility.ts",
"sha256": "44675c5efacdc1ae19505667611ba3b522d3043cebacc8754597c3a68ca89d25",
"sha256_LF": "44675c5efacdc1ae19505667611ba3b522d3043cebacc8754597c3a68ca89d25"
},
{
"path": "resources/js/components/simulation-ispc-quarter.tsx",
"sha256": "2c2555309b32d4261f14e7164f39314c9188129c2990357fc54090a2468dd2b4",
"sha256_LF": "2c2555309b32d4261f14e7164f39314c9188129c2990357fc54090a2468dd2b4"
},
{
"path": "resources/js/components/simulation-ispc-withholding.tsx",
"sha256": "e0445d015b72859e48726959aa52686f79b1cf5c2ade29751efa83257068b878",
"sha256_LF": "e0445d015b72859e48726959aa52686f79b1cf5c2ade29751efa83257068b878"
},
{
"path": "resources/js/lib/ispc-quarter.ts",
"sha256": "f66bd52e9cdfe1ddaa6b00a931465862b3d890b9be216b7a056740f027f24129",
"sha256_LF": "f66bd52e9cdfe1ddaa6b00a931465862b3d890b9be216b7a056740f027f24129"
},
{
"path": "resources/js/lib/ispc-withholding.ts",
"sha256": "6c31b240299edd3262efa28f7f3d5aee21123f94e30ef4ab90e26c35777cb6e4",
"sha256_LF": "6c31b240299edd3262efa28f7f3d5aee21123f94e30ef4ab90e26c35777cb6e4"
},
{
"path": "resources/js/components/simulation-ispc-eligibility.tsx",
"sha256": "f48dd4a8f87a994eda0447f81a463589905e5873b2e1044debac9d10825a880c",
"sha256_LF": "f48dd4a8f87a994eda0447f81a463589905e5873b2e1044debac9d10825a880c"
},
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256": "cce283b1d0a07fb383fcb527225f4dd5bec829010a662cbaae1d60e595221977",
"sha256_LF": "cce283b1d0a07fb383fcb527225f4dd5bec829010a662cbaae1d60e595221977"
},
{
"path": "resources/js/lib/iva-modelo-a.ts",
"sha256": "c641619a05613c1620385baad0e9ffbf810dd970aafb30e12b3a7f9a3bf11846",
"sha256_LF": "c641619a05613c1620385baad0e9ffbf810dd970aafb30e12b3a7f9a3bf11846"
},
{
"path": "resources/js/lib/iva-fx-selection.ts",
"sha256": "9aa07ad443bc777b80510a3b5bd6aff9ddb9814d2450f3c690e531e74d71d998",
"sha256_LF": "9aa07ad443bc777b80510a3b5bd6aff9ddb9814d2450f3c690e531e74d71d998"
},
{
"path": "resources/js/components/simulation-fx-selection.tsx",
"sha256": "39bb6d87d404745b0b66349bc11626545a3672ae27321ce9b4658416592059bf",
"sha256_LF": "39bb6d87d404745b0b66349bc11626545a3672ae27321ce9b4658416592059bf"
},
{
"path": "resources/js/lib/business-financial-plan.ts",
"sha256": "c20274722d1ffcd0360f041a6cacb5d868fe0621cb27a1aca6e06826612c3ebb",
"sha256_LF": "c20274722d1ffcd0360f041a6cacb5d868fe0621cb27a1aca6e06826612c3ebb"
},
{
"path": "resources/js/lib/iva-currency-events.ts",
"sha256": "cc9f2045d302d7987310da4006cc250fc5c99a27397918d166d649bfc32fab08",
"sha256_LF": "cc9f2045d302d7987310da4006cc250fc5c99a27397918d166d649bfc32fab08"
},
{
"path": "resources/js/lib/irpc-fx.ts",
"sha256": "5c4a7a477429f8d775acf6db3e117008468f5554e5731dec81f60fbb75e948fb",
"sha256_LF": "5c4a7a477429f8d775acf6db3e117008468f5554e5731dec81f60fbb75e948fb"
},
{
"path": "resources/js/components/simulation-form.tsx",
"sha256": "01d20f4761933a3e4dd7c776bd4adcf9610ac0435d918a1998ae9f0c3ce3f234",
"sha256_LF": "01d20f4761933a3e4dd7c776bd4adcf9610ac0435d918a1998ae9f0c3ce3f234"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256": "df8b224b9472449711d0b69a873fa75f9cc9f4d84dce1a314fc576fae9c6eae2",
"sha256_LF": "df8b224b9472449711d0b69a873fa75f9cc9f4d84dce1a314fc576fae9c6eae2"
},
{
"path": "resources/js/lib/project-dossier-report.ts",
"sha256_LF": "4523365e2d4a2fcd014e13393deb33a5ec4b9396ff580d8a237aa8c4f02265e4"
}
],
"accepted_originals_inventory": [
{
"path": "docs/investmoz/simulations/source-archive/AT-Comunicado-9-2026-ISPC.pdf",
"sha256": "106f8a9ce9255c03549c70bf07fe999d32e6e55302d009b509862aa74ccb4973"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-30-ISPC.pdf",
"sha256": "6802edd06b6ff638a0b851a3ec7ecf69af8f07840faa47446becad67d35d445c"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-B-Geral.pdf",
"sha256": "bd977c7c59d4d98befd92e2c566b1bf168cb1343bb519f51b41a3807f431fc57"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-MRFTA-19-39.pdf",
"sha256": "8ea62c53066b482f87078a7a7b1ecf15ca98a12a122e8d7abca63acfc993186b"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf",
"sha256": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-89-I-Serie-2017-06-08.pdf",
"sha256": "11f0cab15eb6e51010952203ffa24fdc533a24fd642e19525fe4f46b17a1f5e5"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-95-I-Suplemento-2025-05-21.pdf",
"sha256": "e0e682e2c027c3cd9c1d46a73a3f48bc5f6bdbf05667fd97314d7a3f6a456358"
},
{
"path": "docs/investmoz/simulations/source-archive/BR252-I-Serie-2022-Lei20-PESOE.pdf",
"sha256": "1159fd3ce1ba5581671796d083534da48bd3c5578298819e896f1c2a8026318d"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-22-2021-BR70.pdf",
"sha256": "a8fac38dcfe08f9c7a8e46254cff10e1ec82fc4f7a8d88ad6e4fe7d91ffc21a5"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-27-2026-BR123.pdf",
"sha256": "26249c3fa58f149c81de36e99d1aac2819a4771379d9e8833159660dabf539bb"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-29-1998-BR22-5-suplemento.pdf",
"sha256": "6242cbe675faadf085f43f95ec8c7e8868aafe67c3b2ab2bb010992288f954f8"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-3-2011-BR-11-I-mineiros.pdf",
"sha256": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-37-2023-BR124.pdf",
"sha256": "7e680b191481faa0e2e9057fa5053587eb2a29d1d8c819e0eb9f02814255a04c"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-9-2008-BR16.pdf",
"sha256": "96fccdecbfdc11c9eafb90fbc6c7bc259f88bbd4c7507d1ac3af1fa03f960697"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf",
"sha256": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-14-1992-BR42.pdf",
"sha256": "089fff7423e99a70a230a73ca379e4ea3a91d124703f91016e57ff82794b9e56"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-BR251-exemplar-MCNet5.pdf",
"sha256": "14eb34f0af91a8f5cb1770c7b52d6ff839c6818302d1ed96d79afbfb9fe999d4"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-IPP-BR250-Parlamento.pdf",
"sha256": "978cd22403ffd336a631704ecd7a5bbd814a427c815b9acdaca5515591dd9e2a"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2013-BR76.pdf",
"sha256": "bba96d645cc935ffc3d1a79b9f0f73ac1c693d6459c2ad41f56cd2841accae76"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2017-IRPS-BR-OCAM.pdf",
"sha256": "c3a0186cb9ad090d7a9533006295dc9bb6a62ad0d6150173cbd49dba4ee4b52d"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-2-2011-BR-1-4-suplemento-MCNet.pdf",
"sha256": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf",
"sha256": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-34-2007-BR52.pdf",
"sha256": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-1994-BR37-3-suplemento.pdf",
"sha256": "210df9db8980d0a5690cd187a6eeec7e37a900d743e39062c16f4e0d12215c7e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-2012-BR3.pdf",
"sha256": "b8845cef41dcbd9ba50c43dbfa743a56030dd3d348242a107e1ae30279eec121"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-7-1991-Partidos-IFES.pdf",
"sha256": "6b783a0bb3330688ef10660a58060d9724aa2da6a873d234fe902f0eaaeda42d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-CDT-1992.pdf",
"sha256": "d504e1024b28aee5c6acf4592acb96ec9c915a8414f67a61ab6984d6acf9df9d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-Protocolo-2009.pdf",
"sha256": "f353773dcf41f09f4daa6cf5ba5a5f7994f3e02615867c2dcffc61c3d901bf9b"
}
],
"new_official_source": {
"path": "docs/investmoz/simulations/source-archive/BM-Mercado-Monetario-MAIBOR-20261025.html",
"sha256": "00e8a7e0d3a1db4ca3beb56d5361b2084a0f1684f3d40fc1c203702a2190e063",
"url": "https://bancomoc.mz/pt/areas-de-actuacao/mercados/mercado-monetario/",
"review": "Official page expressly documentsdiscontinuedMAIBOR publication;MIMO/Prime not transported into fiscalrule",
"publication_import_activation": "Private source archive only;no library publication or fiscal activation;no scan claimed"
},
"source_mapping": [
"AT MRFTA19/39PDF1–2,visuallyreviewed;fields1–7,reserved8/9,singleperiod",
"Decreto9/2008 arts25/35 PDF6/8,p121/123;reusedacceptedofficialoriginal,notoldrevoked2002code"
],
"implementation_choices": [
"Completeness and absence of other tax rubrics are recorded facts to avoid treating this context subtotal as the entire declaration;not new approvers or organizational permissions",
"Manual CER/assessment references record applicable documents;no generic legal authenticity revalidation"
],
"active_changes": false,
"schema_migrations_configuration_permissions_changed": false,
"L5_integrally_completed": false,
"proofs": {
"outputs/irpc-mrfta/api.txt": "63e401f6422cdea294b4ae58bf1ff5c25e7c5dd87eccf81c249319bffbb06dd3",
"outputs/irpc-mrfta/AT-MRFTA-19-39.pdf1.png": "d0f4118a696ab940d2fd9a9cb792656dcba860b9b3a300c78334445d43d46a72",
"outputs/irpc-mrfta/AT-MRFTA-19-39.pdf2.png": "449ce541e08d886e7851e04c6b53ee44694d89508143da3c497d16db1a3f6a59",
"outputs/irpc-mrfta/build.txt": "ede4498073edeeadcbda9b1868b4be5574ad31a36d78664a1ebf8fb27ee89c86",
"outputs/irpc-mrfta/calculated.json": "b41a7dec0802a573d67f8e9b0ba42e54c4a20e935e844febd538752605d3446f",
"outputs/irpc-mrfta/Decreto-9-2008-BR16.pdf6.png": "ae8f0d02c2c01fafd1f390492ecf442defa094edd5612923c5f34b458f6c6392",
"outputs/irpc-mrfta/Decreto-9-2008-BR16.pdf8.png": "6097b3137f22a59c55cf1017643e0be4c0d6ba571e1d3c84331940988a4967b7",
"outputs/irpc-mrfta/dossier.html": "743a1960b2b70dfd4e5231f37bbf0799184f8f9d39c58c7569f66852ad1e3db5",
"outputs/irpc-mrfta/dossier.json": "864a2c9da690b086a2aa7c10ae18549d7d462f43a6f87826e6b1f57d8751e5c0",
"outputs/irpc-mrfta/dossier.txt": "a0473de355821758c4d320eea8e7af76a0d196a9cee652c71af723d6f69832f0",
"outputs/irpc-mrfta/frontend.txt": "707ef1a9c37fbeb53997027c1aff5c3a85c3358e40b3ed63512ddf93ded74b7a",
"outputs/irpc-mrfta/index.html": "6bb76e37ac20a73cb9ffcda14f1ac9db701aa01bc2ef2f62fc5adaaffb640ca8",
"outputs/irpc-mrfta/preparation.html": "c8855ab0bcbaa85e95149ca36d1b035b59a21760d3336c088b552c147eafc330",
"outputs/irpc-mrfta/recovered.json": "f7ef8221ad1ffba237f683eb2333e4bde8b076e00a459c131f8c81c96c3048f5",
"outputs/irpc-mrfta/types.txt": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"outputs/irpc-mrfta/ui-export.html": "c8855ab0bcbaa85e95149ca36d1b035b59a21760d3336c088b552c147eafc330",
"outputs/irpc-mrfta/ui-proof.json": "9d41f8a7f48e0a1f611bd0916e58e9dc6ffaa9760b281f056edbe2ccde115777",
"outputs/irpc-mrfta/ui.png": "ee9e6f5240d1f0b58569609bdb6c0c38a3cd11373db7b6ad0008b15fb229afad",
"outputs/irpc-mrfta/ui.txt": "59df712c7a7873532c4eab94fb582fd1e470803a5da1bfd68c884f8e8ad2386b"
}
}
@@ -0,0 +1,193 @@
{
"status": "QA_grouped_compatible_L5_prepared_not_installed",
"installed_baseline": "5c0cb25cea7826811c389b55a64bcdf5e43b937f",
"previous_QA": "da0d8abb4775a7a68142f84129e312b86dadfe23",
"branch": "codex/irpc-l5-withholdings-qa-20261025",
"authorization": "Tempo:agrupar restantes enquadramentos compatíveis,reutilizar contrapartes/documentos/pagamentos e câmbio entregue;preparar entrega conjunta;manterportal5c/L3/ISPC;sem instalar este incremento.",
"implemented": [
"Firstda0d8abb scope preserved;MZN10%digital/nonresident resultscurrentandunchanged without forcedrecalculation.",
"Ordinary20% qualifiedroyalties/equipment/services/nonlistedcapital;rentstandard20%onaccount;residentroyalties20%onaccount;onlydependentdispensascaseslimited.",
"62(3):20%definitivelisteddebt/Treasuryinterestandbankliquidityswaps with exactnationalheadquarters/effectivemanagementfacts.",
"62(4):10%qualifiedtelecom/internationaltransport/connectedinstallation/aircraftmaintenancecharter/publicruralelectricity/maritimefishingcabotage/otherBMlistedsecurities;notgeneral10%.",
"Expiredagriculturalmeasures31/12/2025 not carriedto2026;source2022gapresolved.",
"ExistingFXselector/selectFx/fxSelectionKey/convertCents reused unchanged through IRPCadapter;originalcurrency/amount,bulletin,column,direction,date andhistory retained.",
"Foreignwithholdingproofcapacityconvertedonce;MZNallocations,sharedpaymentlimits andsourcechangeschecked;ATremittance/beneficiarypaymentnotconfused.",
"Private draft persistence/recovery/report/preparationexport;annualcredits/ATactsnotautomaticallygenerated."
],
"new_source": {
"url": "https://www.cipmoz.org/wp-content/uploads/2023/financas/17F%29%20Lei%2029_2022%20Plano%20Economico%20Social%20Or%C3%A7amento%20do%20Estado%202023.pdf",
"sha256": "1159fd3ce1ba5581671796d083534da48bd3c5578298819e896f1c2a8026318d",
"pages": 268,
"bytes": 17966640,
"path": "docs/investmoz/simulations/source-archive/BR252-I-Serie-2022-Lei20-PESOE.pdf",
"citation": "BR252/I,30/12/2022,p2731/PDF1,Lei20/2022 arts1/2",
"read_scope": "Full268pages preserved/inventoried;first3pages textread;page1 visuallyreviewed;budgetpages not usedforwithholding",
"provenance": "Original officialBR hostedCIP;acceptance ofofficialsource preserved,no second authenticityvalidation",
"scan": "Not claimed performed;private source archive,not librarypublication/import"
},
"source_mapping_reused": [
"Lei34/2007,62(1)/67/68,PDF17–19",
"Lei19/2013,62(3/4),PDF2/p682(22),visuallyreviewed",
"Lei20/2022,62(1–5),PDF1/p2731,visuallyreviewed",
"Lei12/2025,62(5)/67(5/7),previouslyacceptedBR248/2025PDF19"
],
"runtime_delta": [
{
"path": "resources/js/lib/irpc-withholdings.ts",
"sha256_LF": "f10d82f1bf353b1a92c37790b213fad9e769ed39139a99577747ee703be63b49"
},
{
"path": "resources/js/components/simulation-irpc-withholdings.tsx",
"sha256_LF": "5cffcc26c72ed736e88386589710cf7929ec9bc25f78910648ba676fb1cf4b08"
},
{
"path": "resources/js/lib/irpc-fx.ts",
"sha256_LF": "5c4a7a477429f8d775acf6db3e117008468f5554e5731dec81f60fbb75e948fb"
},
{
"path": "resources/js/components/simulation-form.tsx",
"sha256_LF": "01d20f4761933a3e4dd7c776bd4adcf9610ac0435d918a1998ae9f0c3ce3f234"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "df8b224b9472449711d0b69a873fa75f9cc9f4d84dce1a314fc576fae9c6eae2"
}
],
"additional_runtime_since_da0d8abb": [
"resources/js/lib/irpc-withholdings.ts",
"resources/js/components/simulation-irpc-withholdings.tsx",
"resources/js/lib/irpc-fx.ts"
],
"existing_FX_files_unchanged": {
"resources/js/lib/iva-fx-selection.ts": "9aa07ad443bc777b80510a3b5bd6aff9ddb9814d2450f3c690e531e74d71d998",
"resources/js/components/simulation-fx-selection.tsx": "39bb6d87d404745b0b66349bc11626545a3672ae27321ce9b4658416592059bf",
"resources/js/lib/business-financial-plan.ts": "c20274722d1ffcd0360f041a6cacb5d868fe0621cb27a1aca6e06826612c3ebb",
"resources/js/lib/iva-currency-events.ts": "cc9f2045d302d7987310da4006cc250fc5c99a27397918d166d649bfc32fab08"
},
"previous_resources_unchanged_except_manifest": 438,
"old_original_PDFs_preserved": 26,
"total_source_original_PDFs": 27,
"previous_QA_proofs_reused": {
"new_frontend_distinct": 17,
"frontend": "frontend.txt:16pass;directed-cross-context.txt:1pass",
"API": "1test/23assertions;guardedloopback55441/simulator_fiscal_delta_20261021_test;DatabaseTransactionsrollback;allpreviousL3/ISPCmapsidentical",
"types": "types-final.txt:exit0",
"build": "build-final.txt:exit0",
"UI": "Actualcomponent calculation/save/recover/report andexport;localfileharness distinguishedfromprivateAPI;reuse existingacquisition at373 demonstrated;UI proof reused for unchanged positive route after final shared-payment-key refinement;directed test proves only that delta",
"previous_functional_suites_repeated": false
},
"previous_QA_proof_hashes_reconciled": true,
"verification": {
"new_frontend_distinct": 19,
"frontend_proofs": [
"frontend.txt:17pass;listedcapitalcase superseded bydirectedcapital",
"directed-capital.txt:updatedcapitalcase+1newcasepass",
"directed-report.txt:3affectedreportcasespass",
"directed-fx-origin.txt:1newcasepass"
],
"API": "1test/34assertions;loopback55441/simulator_fiscal_delta_20261021_test;DatabaseTransactionsrollback;acceptedhistory/oldmaps preserved",
"types": "types-final.txt:exit0",
"build": "build-final.txt:exit0",
"UI": "ActualexistingFXpreview/confirmationinsideIRPC,calculation/save/recover/report/export;localfileharness distinguishedfromprivateAPI",
"unaffected_old_functional_suites_repeated": false
},
"example": {
"foreign_royalty": "1000USD×64=64000MZN;20%=12800;ATreceipt5000MZN;balance7800MZN;FXdate20Oct vs costevent2Oct",
"special_telecom": "100000MZN;qualified62(4)a10%=10000;notdigital62(5)",
"resident_royalty": "50000MZN;20%=10000;onaccount,notannualcredit",
"foreign_withholding_proof": "100USDbase→6400MZN;tax1280;10USDproof→640MZN;difference640MZN"
},
"remaining_calculations_and_specific_mapping": [
{
"item": "Dispensas68 e casos residentes/EP dependentes",
"data_needed": "Titular/operação e condições de68(a/b/c/d/f/g),incluindo gestão de imóveis próprios/transparência,participações e tipos de juros;casos digitais residentes/EP confrontados com62(5)/68(d).",
"resolution": "Ramo específico por dispensa/factos;não bloquear royalties comuns,retenções definitivas ou especiais independentes."
},
{
"item": "Convenções/benefícios invocados",
"data_needed": "País/convenção/artigo,beneficiário,residência,condições/período e prova invocados",
"resolution": "Só esse caso fica indeterminado;sem taxa reduzida presumida."
},
{
"item": "Outros rendimentos/devedores/períodos",
"data_needed": "Artigo próprio para categorias fora dos ramos agrupados,via devedorIRPS,anos fora2026,EP de categorias especiais62(4)quando não cabe62(2)",
"resolution": "Não aplicar20%ou10%genéricos;avançar os casos compatíveis."
},
{
"item": "Juros,rectificações e arredondamento de entrega",
"data_needed": "Regra/taxa/base/período dejuros,declaração/guia anterior,documentos de correcção e regra de arredondamento legal da entrega se aplicável",
"resolution": "Aritmética exacta preservada;aproximação assinalada;sem zero dejuros ou crédito anual automático."
},
{
"item": "EntregaAT com comprovativo em moeda estrangeira",
"data_needed": "MontanteMZN efectivamente entregue no comprovativo;conversão do pagamento ao beneficiário não prova entregaIRPC",
"resolution": "Base e comprovativo de retenção sofrida já convertem pelo mecanismo entregue;esta limitação não reabre o câmbio geral."
}
],
"external_formalities": [
{
"item": "MRFTA/CER e remissão67(7)",
"data_needed": "Correspondência concreta de rubricas/CER para novos casos;67(7)refere62(6),nova taxaestá62(5);manteroriginal",
"resolution": "Preparação/exportação disponível;sem adivinhar código,assinatura ou submissão."
},
{
"item": "ActosAT",
"data_needed": "Submissão,recepção,aceitação e eventuais comprovativos externos",
"resolution": "Externos;exportar não executa nem certifica esses actos."
}
],
"currency_gap_previous": "Resolvedforbaseandforeignwithholdingproofbyexistingoperationalmechanism;no newselector ormeanformula. ATremittanceamount remainsactualdocumentedMZN.",
"new_organizational_restrictions": false,
"restriction_origin": "Tempoexpressedreuse;legalrates/conditionsfromacceptedBR;optionaltypedlinks/fingerprints aretechnicalchoices,notnewapprovers.",
"L3_ISPC": "Preserved;ISPCinterest/otherexcess/instructionsinexistingmatrix;IRPSstillonlypreviousdemonstratedcase;P001/P058nonblocking;P084/P085closed;statistics/AIdeferred.",
"L5_integrally_completed": false,
"IRPC_integrally_completed": false,
"IRPS_integrally_completed": false,
"schema_backend_config_dependency_changes": false,
"active_changes": false,
"execution_remaining": [
"Authenticatedfreshdestinationcomparison,backupandisolatedrestorebeforeinstallation.",
"FastforwarddeliverybyexistingGitprocessafterfreshguards;nevermergerootP001experimentalruntime.",
"Verifyinstalledruntime/compiledmarkers/persistentfiles/configuration/schema/permissions/dataunder equivalentidentity;reuseacceptedfunctionalproofs."
],
"compiled_markers": {
"Calcular e guardar retenções IRPC": [
"assets/services-Es7_7t9u.js"
],
"Base do rendimento/conversão por resolver:": [
"assets/project-dossier-DZQJzKcc.js"
],
"Retenção liberatória20%62(3)a/b": [
"assets/project-dossier-DZQJzKcc.js"
],
"Reutilizar selecção cambial": [
"assets/services-Es7_7t9u.js"
],
"Calcular e guardar apuramento trimestral ISPC": [
"assets/services-Es7_7t9u.js"
],
"Calcular e guardar restituição E": [
"assets/services-Es7_7t9u.js"
]
},
"active_readonly_revision": {
"commit": "5c0cb25cea7826811c389b55a64bcdf5e43b937f",
"branch": "main",
"built_at": "2026-10-25T16:24:27.707113+00:00",
"manifest_sha256": "385a289f9ba26a632aa0164fbba3913cc8dc2fb891641881fc8d2dcda1951626"
},
"proof_hashes": {
"outputs/irpc-l5-grouped-20261025/preservation-before-tests.json": "ab8a892a14cd7cac916cbda51c1904eae87f3008d5f2e41d65494abb09e25dd8",
"outputs/irpc-l5-grouped-20261025/frontend.txt": "1939704865fc1f963adf4616837b615aeb5dfb7d5fa1567b8dc9d978bd39299a",
"outputs/irpc-l5-grouped-20261025/directed-capital.txt": "ba5dbd9d0047decb36e646f6152258552f0a36e34141b60070e0c36e41b4d610",
"outputs/irpc-l5-grouped-20261025/directed-report.txt": "2bc8ac7c9e5bfdfe18a59eb3e0eb7e2450c9ae0cb211efb4e07752851c5250a7",
"outputs/irpc-l5-grouped-20261025/directed-fx-origin.txt": "121c998e6d95820b8d6dda8fc09dc9d190416d3f64e5fc8dfed6df78dd18e523",
"outputs/irpc-l5-grouped-20261025/api.txt": "58365c069bb4c5d7bc91c24834575c19e1458049b73f5b42e9b1e543cd2b4944",
"outputs/irpc-l5-grouped-20261025/types-final.txt": "5346ac8a6566c1c38cb0bbda6a029579df58cd78af78e2c4845d9c82b5d1d76c",
"outputs/irpc-l5-grouped-20261025/build-final.txt": "db910282d69133fbdaee6c5d22b0397d377ed0b652072094be0a165884d97fba",
"outputs/irpc-l5-grouped-20261025/ui-fx-preview.txt": "a5ddc73db4cf9a8424ce0a8fcec9da55d8828f2cb13faf9f8715c0bcd6074523",
"outputs/irpc-l5-grouped-20261025/ui-report.txt": "0561e14566e4b9b4ab333c5c2a13b03f055c4ae413d3f9d211e663f2da38a7b5",
"outputs/irpc-l5-grouped-20261025/preparation.html": "c3c3e8df77e3f22e34e0cfbd2a8cc04a7d3cdc2e7080a0a70415f8f1c661818b",
"outputs/irpc-l5-grouped-20261025/active-baseline.json": "2f2d1a9d3e311f12099d2372d0c1a01eb5ff3918a39218c73b668dfbe51c66f8"
}
}
@@ -0,0 +1,22 @@
{
"status": "directed_presentation_delta_passed",
"base": "4d6f8282302c7646bd7350b8d67695d005feab9a",
"authorization": "Tempo:each calculation identifiesincomeclassification,rateanddefinitive/onaccountnature.",
"changed_runtime": "resources/js/lib/irpc-withholdings.ts",
"sha256_LF": "919a6b7427fcbf67976797358dde0d02a3aba1121bb827b17280b13c0ddc3bd4",
"arithmetic_input_persistence_logic_changed": false,
"verification": {
"presentation": "1newdirectedtest;all6savedcases showcategory/rate/nature inPortuguese;frozendataunchanged",
"affected_export": "1existingexportcase;obsoleteEnglishlabelassertionupdated",
"types": "exit0",
"build": "exit0"
},
"proof_hashes": {
"presentation.txt": "7b348f1e6d64ac0e5cab732175e69fa32154db504e7781c028ced14ec703aaf8",
"export-presentation.txt": "54ada0166f309a216fdbc294bcee98283392b09a2d20a6b2718f2584fb78a133",
"types.txt": "5346ac8a6566c1c38cb0bbda6a029579df58cd78af78e2c4845d9c82b5d1d76c",
"build.txt": "2291bfc0b02957632c92a3a39215c35931a469eba4548473db4de26135468eed"
},
"other_accepted_proofs": "Reused;no new calculationround.",
"active_changes": false
}
@@ -0,0 +1,521 @@
{
"status": "installed_scoped_IRPC_reliefs_delta_verified",
"candidate_installed": "ce746d889d5711f23f4e0ac8d9802997b5e106f9",
"previous_installed": "2b33a1c343d192f80fb24aac2a27b2d375af5601",
"previous_release_preserved": "/var/www/investmoz-homologacao/releases/2b33a1c343d192f80fb24aac2a27b2d375af5601-23fd8416",
"authorization": "Tempo: disponibilizar entrega conjunta via Git,backup/restauro fresco e conferência do delta;preservar2b33a1c3,L3,ISPC,câmbio;L5 parcial.",
"fresh_backup": {
"stage": "/var/backups/investmoz-irpc-reliefs-delivery-20261025/backup",
"created_at": "2026-10-25T18:00:39Z",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "3dc0eeea326beff9a7780f3a11ef1ed23a58dbaab8382db975ddfb356d6206c8",
"files_sha256": "d0dc27540dd41131c0fbf923b15b05fefc81760d80bfb0bd8ce04bf80ec9eb50",
"restore_verified": false
},
"isolated_restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "irpc_l5_restore_20261025",
"port": 55441,
"source_dump_sha256": "3dc0eeea326beff9a7780f3a11ef1ed23a58dbaab8382db975ddfb356d6206c8",
"active_database_writes": 0
},
"preflight": {
"free_bytes": 6596661248,
"existing_pipeline_minimum_bytes": 5368709120,
"space_guard_satisfied": true,
"installed": {
"status": "installed",
"commit": "2b33a1c343d192f80fb24aac2a27b2d375af5601",
"release": "/var/www/investmoz-homologacao/releases/2b33a1c343d192f80fb24aac2a27b2d375af5601-23fd8416",
"previous_release": "/var/www/investmoz-homologacao/releases/5c0cb25cea7826811c389b55a64bcdf5e43b937f-32c4fd00",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/2b33a1c343d192f80fb24aac2a27b2d375af5601-23fd8416",
"release_revision": {
"commit": "2b33a1c343d192f80fb24aac2a27b2d375af5601",
"branch": "main",
"built_at": "2026-10-25T17:27:10.176918+00:00",
"manifest_sha256": "75b06330161a813a10e3eb3a044e2ba4a924537dae381f97d0c8d4ee7295295a"
},
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"configuration_keys": [
"repository",
"branch",
"target_url",
"legacy_root",
"state_root",
"release_root",
"current_link",
"shared_assets",
"php",
"schema_contract",
"ci_environment",
"postgis_image",
"test_database",
"qa_port",
"retention",
"webhook_secret_file"
],
"safe_paths": {
"repository": "nala/Investidor-V2",
"release_root": "/var/www/investmoz-homologacao/releases",
"postgis_image": "postgis/postgis@sha256:01a6a70e41e6c4467c8f55f6063555ed72db2d6662cd0d571040d42eadaeb6f6"
},
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604"
},
"protected_delta": {
"previous_release_preserved": "/var/www/investmoz-homologacao/releases/2b33a1c343d192f80fb24aac2a27b2d375af5601-23fd8416",
"installed": {
"status": "installed",
"commit": "ce746d889d5711f23f4e0ac8d9802997b5e106f9",
"release": "/var/www/investmoz-homologacao/releases/ce746d889d5711f23f4e0ac8d9802997b5e106f9-5fdb1b51",
"previous_release": "/var/www/investmoz-homologacao/releases/2b33a1c343d192f80fb24aac2a27b2d375af5601-23fd8416",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 4,
"preserved_L3_ISPC_FX_runtime_files_verified": 28,
"documentary_files_verified": 29,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "df13c9623faded047b71df595d350ec7"
},
"after": {
"rows": 106,
"checksum": "cf7d9fdcfb64c81360cce81a5fa8c45d"
}
},
"sessions": {
"before": {
"rows": 15,
"checksum": "2c17940b66d6fd97d011edabbbf9ec47"
},
"after": {
"rows": 16,
"checksum": "4b7ab676493d6d1892d9933b3fde1780"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"schema_permissions": {
"schema_sha256": "5045b3e51d2185377aa3d9ac7fa07a44fad3ec620cdfa83ffe31c8884ee1601d",
"roles_grants_sha256": "1530c33cb016e67bfdc64891ddfce7f185b13b56b2cd87c012871a685e118109",
"filesystem_permissions": {
".env": {
"mode": 416,
"uid": 1001,
"gid": 33
},
"storage": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"storage/app": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"bootstrap/cache": {
"mode": 1528,
"uid": 1001,
"gid": 33
}
},
"comparison_identity": "postgres;catalogue read only;no passwords collected",
"unchanged": true
},
"operational_delta": {
"status": "operational_delta_reconciled",
"comparison_identity": "postgres before/after;isolated restored baseline;no RLS visibility inference",
"cache": "queue:restart value/expiry and request-throttle counter/timer pair;no deleted cache rows",
"sessions": "anonymous sessions created by exact delivery verification user-agent",
"delta": {
"cache": {
"before_rows": 106,
"after_rows": 106,
"changes": [
{
"key_sha256": "8d6ea77eb4b34d86d207362d583cfa8bf2880b907becd9b00398964482c6b4bd",
"kind": "updated",
"fields": [
"expiration"
],
"key_pattern": "investemoz-cache-{hash}",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true
},
{
"key_sha256": "2f251473865d14b953236ab95b1521764754d76abd79b58ca7d38c96dfe2fab1",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-{hash}:timer",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true
},
{
"key_sha256": "7f7dd83f47f5bf404d55e6e9f1367948721579970b195680645e356031a070ff",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-illuminate:queue:restart",
"is_queue_restart_key": true,
"expiration_unchanged": false,
"throttle_timer_pair": false
}
]
},
"sessions": {
"before_rows": 15,
"after_rows": 18,
"changes": [
{
"key_sha256": "4dd9d761c194f0c736e2b800add6792a790734c947d6de06bb7d91dc8778ec3b",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
},
{
"key_sha256": "93dba7d9de797b0301f4395afa891df1c9803a7abbd2f5c083ebb4a01569f75e",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
},
{
"key_sha256": "0208243bb27c67eee43773c1d4f3df5a1df5a24af6402a68de18bb518ce27beb",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
}
]
}
},
"business_tables_to_confirm_separately": 172,
"active_data_writes_by_comparison": 0,
"restore_network": "none"
},
"public_delta": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "ce746d889d5711f23f4e0ac8d9802997b5e106f9",
"branch": "main",
"built_at": "2026-10-25T18:06:03.871601+00:00",
"manifest_sha256": "feb2dce3fc8845c6307c982323b3e3523b333a018189c47488f9fcba25490555"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"Calcular e guardar retenções IRPC": [
"assets/services-rCdKRO1R.js"
],
"Dispensa de retenção": [
"assets/project-dossier-I7GMfANo.js",
"assets/services-rCdKRO1R.js"
],
"Limite convencional": [
"assets/project-dossier-I7GMfANo.js"
],
"Portugal–Moçambique — royalties, artigo 12": [
"assets/project-dossier-I7GMfANo.js"
],
"Informação insuficiente: documente residência convencional": [
"assets/project-dossier-I7GMfANo.js"
],
"Calcular e guardar apuramento trimestral ISPC": [
"assets/services-rCdKRO1R.js"
],
"Calcular e guardar restituição E": [
"assets/services-rCdKRO1R.js"
],
"Reutilizar selecção cambial": [
"assets/services-rCdKRO1R.js"
]
},
"assets": [
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
},
{
"file": "assets/project-dossier-document-CR2W33oB.js",
"status": 200,
"sha256": "d5e23e7b8da99bdf4368991f54c6d4d5a12c206a18eeef754f0bc0f68183865c"
},
{
"file": "assets/project-dossier-I7GMfANo.js",
"status": 200,
"sha256": "2e5134e2163dbd23a83374d9e06e2ed68b3e37009f3ed07e97af7aa34f97e8ca"
},
{
"file": "assets/services-rCdKRO1R.js",
"status": 200,
"sha256": "ecd38dd17a4b371f2bc55167887206a98db8f066e6ab3f66b7a0b1938fdcf49d"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-GOBc44N3.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"runtime_delta": [
{
"path": "resources/js/lib/irpc-relief-preparation.ts",
"sha256_LF": "e41a389ad0b5d3f33985e375b0c488eed8c2d185257eec1cf5f7d40fccd365d4"
},
{
"path": "resources/js/lib/irpc-withholdings.ts",
"sha256_LF": "75bf1c5940595e90d7a27355aeae6f9fdca4841f3e9ce3cb02103376bbd4d91b"
},
{
"path": "resources/js/components/simulation-irpc-withholdings.tsx",
"sha256_LF": "28dd35e40c5d8440adad01131714d324f0c7fcdfeb3f6ddd9d27750d563b5e4f"
},
{
"path": "resources/js/lib/project-dossier-report.ts",
"sha256_LF": "4523365e2d4a2fcd014e13393deb33a5ec4b9396ff580d8a237aa8c4f02265e4"
}
],
"preserved_runtime": [
{
"path": "resources/js/components/acquisition-beverage-restitution.tsx",
"sha256": "6f44897b8b12569314551df0022c26da57a165634087942a724293e66837558d"
},
{
"path": "resources/js/components/fiscal-calculation-gaps.tsx",
"sha256": "1dab6ceb73756d4e023096b3b2ba767aaa843ff6cc69046ea630ab449a00b0dd"
},
{
"path": "resources/js/components/fiscal-l3-preparation.tsx",
"sha256": "e84a7b1ccadaa1b5bd78d778a3287f96ccaf530855eef404786cd7aa3d321b73"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256": "c206d4cfe575d6ba007aa2b425b5f898efa97e4162b8710e358b6ecfd9458542"
},
{
"path": "resources/js/components/simulation-operations.tsx",
"sha256": "a7e55972fa790063dcf11945055de2af46a77db9e509900af22ede7ec47bb4cf"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256": "b0ef55e0917bdb79f14b53ba9e95d73c08153befeb7d4ce73f81e6fb13992225"
},
{
"path": "resources/js/lib/iva-beverage-allocation.ts",
"sha256": "32968d198c7fe0c53ca89641c22d5749be6636be2c79127b867e4e3afd0dd40d"
},
{
"path": "resources/js/lib/iva-beverage-restitution.ts",
"sha256": "5c650cbd9469d5f99001f56fc4ff99ac973eb368036d4e96c6d171f1b220bd9e"
},
{
"path": "resources/js/lib/iva-calculation-gaps.ts",
"sha256": "2e7d84a0c196bd5b56fd67cc1a389d43d5041894184e675680a4de3cd10b31a2"
},
{
"path": "resources/js/lib/iva-operations.ts",
"sha256": "ec37b949f1233c5f5c14a87450c421ed29fabf1ed5b73fb32564564a2bc31f54"
},
{
"path": "resources/js/lib/l3-form-preparation.ts",
"sha256": "fc47f5fa5ec1420fbd847d0d081f00d99ebbb524164eef785b20877e0562f704"
},
{
"path": "resources/js/lib/ispc-residuals.ts",
"sha256": "40d5751c06c7c155ab4b7a17ee2d1653da2fbbf075807fbb8561cdbe19820955"
},
{
"path": "resources/js/components/simulation-ispc-residuals.tsx",
"sha256": "a9219d6f41ccbd0ce45659d4f6aa0fa1c169a685840f5cb1e18daeca377d5e18"
},
{
"path": "resources/js/lib/ispc-eligibility.ts",
"sha256": "44675c5efacdc1ae19505667611ba3b522d3043cebacc8754597c3a68ca89d25"
},
{
"path": "resources/js/components/simulation-ispc-quarter.tsx",
"sha256": "2c2555309b32d4261f14e7164f39314c9188129c2990357fc54090a2468dd2b4"
},
{
"path": "resources/js/components/simulation-ispc-withholding.tsx",
"sha256": "e0445d015b72859e48726959aa52686f79b1cf5c2ade29751efa83257068b878"
},
{
"path": "resources/js/lib/ispc-quarter.ts",
"sha256": "f66bd52e9cdfe1ddaa6b00a931465862b3d890b9be216b7a056740f027f24129"
},
{
"path": "resources/js/lib/ispc-withholding.ts",
"sha256": "6c31b240299edd3262efa28f7f3d5aee21123f94e30ef4ab90e26c35777cb6e4"
},
{
"path": "resources/js/components/simulation-ispc-eligibility.tsx",
"sha256": "f48dd4a8f87a994eda0447f81a463589905e5873b2e1044debac9d10825a880c"
},
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256": "cce283b1d0a07fb383fcb527225f4dd5bec829010a662cbaae1d60e595221977"
},
{
"path": "resources/js/lib/iva-modelo-a.ts",
"sha256": "c641619a05613c1620385baad0e9ffbf810dd970aafb30e12b3a7f9a3bf11846"
},
{
"path": "resources/js/lib/iva-fx-selection.ts",
"sha256": "9aa07ad443bc777b80510a3b5bd6aff9ddb9814d2450f3c690e531e74d71d998"
},
{
"path": "resources/js/components/simulation-fx-selection.tsx",
"sha256": "39bb6d87d404745b0b66349bc11626545a3672ae27321ce9b4658416592059bf"
},
{
"path": "resources/js/lib/business-financial-plan.ts",
"sha256": "c20274722d1ffcd0360f041a6cacb5d868fe0621cb27a1aca6e06826612c3ebb"
},
{
"path": "resources/js/lib/iva-currency-events.ts",
"sha256": "cc9f2045d302d7987310da4006cc250fc5c99a27397918d166d649bfc32fab08"
},
{
"path": "resources/js/lib/irpc-fx.ts",
"sha256": "5c4a7a477429f8d775acf6db3e117008468f5554e5731dec81f60fbb75e948fb"
},
{
"path": "resources/js/components/simulation-form.tsx",
"sha256": "01d20f4761933a3e4dd7c776bd4adcf9610ac0435d918a1998ae9f0c3ce3f234"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256": "df8b224b9472449711d0b69a873fa75f9cc9f4d84dce1a314fc576fae9c6eae2"
}
],
"accepted_QA_proofs_reused": {
"routes": "normal Wayfinder generate --with-form through guarded QA wrapper",
"types": "tsc --noEmit passed",
"build": "complete QA build passed; existing optional-font/chunk-size notices only",
"frontend": "9 new tests passed",
"compatibility": "5 directed IRPC cases passed;no repeated L3/ISPC/FX suites",
"api": "1test/17assertions;private endpoints;55441/simulator_fiscal_delta_20261021_test;DatabaseTransactions rollback",
"report": "retentions preparation and financial dossier from actual API recovered sample",
"ui": {
"calculation": true,
"localSaveRecovery": true,
"privateApiProof": "IrpcReliefsDraftTest, separate",
"report": true,
"insufficientInformation": true,
"errors": []
}
},
"installer_report": {
"status": "installed",
"commit": "ce746d889d5711f23f4e0ac8d9802997b5e106f9",
"release": "/var/www/investmoz-homologacao/releases/ce746d889d5711f23f4e0ac8d9802997b5e106f9-5fdb1b51",
"previous_release": "/var/www/investmoz-homologacao/releases/2b33a1c343d192f80fb24aac2a27b2d375af5601-23fd8416",
"database_migrations": 0,
"content_imports": 0,
"requested_commits": [
"ce746d889d5711f23f4e0ac8d9802997b5e106f9"
],
"finished_at": "2026-10-25T18:06:07.393002+00:00"
},
"space": {
"status": "dependencies_archived_and_verified",
"versions": 5,
"free_before": 5281300480,
"free_after": 6596743168,
"receipt": "/var/backups/investmoz-build-dependencies-irpc-reliefs-20261025/receipt.json",
"protected": [
"/var/www/investmoz-homologacao/releases/2b33a1c343d192f80fb24aac2a27b2d375af5601-23fd8416",
"/var/www/investmoz-homologacao/releases/5c0cb25cea7826811c389b55a64bcdf5e43b937f-32c4fd00"
],
"active_or_previous_release_modified": false,
"source_data_backups_deleted": 0
},
"remaining": [
"Other68paragraphs and digital/resident-specific cases",
"Other countries,treaties,EP-related and special-relationship excess cases",
"Dividends,interest-specific treaty branches",
"Late-payment interest,rectifications,aggregation,MRFTA/CER/form filling",
"External treaty claiming formalities are not declared satisfied by this calculation"
],
"database_migrations": 0,
"content_imports": 0,
"L5_integrally_completed": false,
"scope": "Only demonstrated68d/68f and qualifiedPT-MZ12royalties/equipment;nextinterest/MRFTAincrementstaysQA",
"evidence": {
"backup.txt": "53019c43c14005ca429e747a38d909b175218490add7fa416d7b3c387211db3b",
"compact-dependencies.txt": "4f087279b4760e71de0621da342d2dea14dbf38272816e938d5b9e6c171afe1d",
"installed-protected.txt": "0dff5ae05c6e73542c99fa14f0c06fcf87e7c096d29ff80b1517d21b57404504",
"installed-public.txt": "ae35a04719d1f05478b4936d4d563f9050c47f1db7d9b69610322e7653878858",
"integration.txt": "1c4d1be9b3a758a39529c69ebf87eda0b2dea36aef7622ba550ca7021dc41b6f",
"operational-delta.txt": "711f26fd0e56b8b52cef90d6245bbf32f7ec1758f5af8fcb8112241a919dbd94",
"preflight.txt": "90411a15339db664782a58139072c0fec52331d5a336348d260d6e336f2d299e",
"restore.txt": "a199e138c500d1f94da75ab38022932aa37232585ca2a6914eaf1dea91accf1a",
"schema-permissions-after.txt": "76b5a4d8af11e4898a205062766cfb7ab6ec0783200e77e60a1927aa1ca18597",
"schema-permissions-before.txt": "0ab7c964792acdd8917bce256c472e55e034b103500a58b49f020b5084823ed7",
"status1.txt": "595260a11ec30b4e7ef3e2a2aad11a178077283300f3572270a8d104307fe3ad",
"status2.txt": "4de7380a350e99585cbeea3646331759892b469aae5fd121effdb4f18fa39922",
"status3.txt": "49c26c68447722bfafed48930cd7cf0da62a088d2f66c05b3ef0ed90c3dc32b8",
"status4.txt": "7cbb15d32c6b6455b60df644f045880854c7acc4e21dfce0dd77e0df88c2a97e",
"status5.txt": "7cbb15d32c6b6455b60df644f045880854c7acc4e21dfce0dd77e0df88c2a97e",
"status6.txt": "a1224e56d81b8fbed83555dd413084cb9fff74a6b4f88960ea83ee6faec09f2f",
"status7.txt": "e2b53e3916f2a77a530f663d971d66fe495aefd1159d37b4e7c595dd93f3bf0c"
}
}
@@ -0,0 +1,330 @@
{
"status": "QA_demonstrated_grouped_candidate_not_installed",
"baseline_reported_installed": "2b33a1c3",
"branch": "codex/irpc-l5-reliefs-qa-20261025",
"implemented": [
"CIRPC68d qualified on-account services/equipment",
"CIRPC68f own-property management,not fiscal transparency",
"PT-MZ12 qualified royalties/equipment10%gross definitive",
"Insufficient/contradictory/out-of-period evidence remains indeterminate",
"Private API persistence,recovery,history;standalone report and complete financial dossier",
"IRPC dossier section association restored"
],
"runtime_delta": [
{
"path": "resources/js/lib/irpc-relief-preparation.ts",
"sha256_LF": "e41a389ad0b5d3f33985e375b0c488eed8c2d185257eec1cf5f7d40fccd365d4"
},
{
"path": "resources/js/lib/irpc-withholdings.ts",
"sha256_LF": "75bf1c5940595e90d7a27355aeae6f9fdca4841f3e9ce3cb02103376bbd4d91b"
},
{
"path": "resources/js/components/simulation-irpc-withholdings.tsx",
"sha256_LF": "28dd35e40c5d8440adad01131714d324f0c7fcdfeb3f6ddd9d27750d563b5e4f"
},
{
"path": "resources/js/lib/project-dossier-report.ts",
"sha256_LF": "4523365e2d4a2fcd014e13393deb33a5ec4b9396ff580d8a237aa8c4f02265e4"
}
],
"verification": {
"routes": "normal Wayfinder generate --with-form through guarded QA wrapper",
"types": "tsc --noEmit passed",
"build": "complete QA build passed; existing optional-font/chunk-size notices only",
"frontend": "9 new tests passed",
"compatibility": "5 directed IRPC cases passed;no repeated L3/ISPC/FX suites",
"api": "1test/17assertions;private endpoints;55441/simulator_fiscal_delta_20261021_test;DatabaseTransactions rollback",
"report": "retentions preparation and financial dossier from actual API recovered sample",
"ui": {
"calculation": true,
"localSaveRecovery": true,
"privateApiProof": "IrpcReliefsDraftTest, separate",
"report": true,
"insufficientInformation": true,
"errors": []
}
},
"preserved_FX_files": [
{
"path": "resources/js/lib/iva-fx-selection.ts",
"sha256_LF": "9aa07ad443bc777b80510a3b5bd6aff9ddb9814d2450f3c690e531e74d71d998"
},
{
"path": "resources/js/components/simulation-fx-selection.tsx",
"sha256_LF": "39bb6d87d404745b0b66349bc11626545a3672ae27321ce9b4658416592059bf"
},
{
"path": "resources/js/lib/business-financial-plan.ts",
"sha256_LF": "c20274722d1ffcd0360f041a6cacb5d868fe0621cb27a1aca6e06826612c3ebb"
},
{
"path": "resources/js/lib/iva-currency-events.ts",
"sha256_LF": "cc9f2045d302d7987310da4006cc250fc5c99a27397918d166d649bfc32fab08"
},
{
"path": "resources/js/lib/irpc-fx.ts",
"sha256_LF": "5c4a7a477429f8d775acf6db3e117008468f5554e5731dec81f60fbb75e948fb"
}
],
"sources_inventory": [
{
"path": "docs/investmoz/simulations/source-archive/AT-Comunicado-9-2026-ISPC.pdf",
"sha256": "106f8a9ce9255c03549c70bf07fe999d32e6e55302d009b509862aa74ccb4973",
"bytes": 308401
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-30-ISPC.pdf",
"sha256": "6802edd06b6ff638a0b851a3ec7ecf69af8f07840faa47446becad67d35d445c",
"bytes": 159748
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-B-Geral.pdf",
"sha256": "bd977c7c59d4d98befd92e2c566b1bf168cb1343bb519f51b41a3807f431fc57",
"bytes": 319577
},
{
"path": "docs/investmoz/simulations/source-archive/AT-MRFTA-19-39.pdf",
"sha256": "8ea62c53066b482f87078a7a7b1ecf15ca98a12a122e8d7abca63acfc993186b",
"bytes": 256695
},
{
"path": "docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf",
"sha256": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee",
"bytes": 2267865
},
{
"path": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251",
"bytes": 440018
},
{
"path": "docs/investmoz/simulations/source-archive/BR-89-I-Serie-2017-06-08.pdf",
"sha256": "11f0cab15eb6e51010952203ffa24fdc533a24fd642e19525fe4f46b17a1f5e5",
"bytes": 9456358
},
{
"path": "docs/investmoz/simulations/source-archive/BR-95-I-Suplemento-2025-05-21.pdf",
"sha256": "e0e682e2c027c3cd9c1d46a73a3f48bc5f6bdbf05667fd97314d7a3f6a456358",
"bytes": 329070
},
{
"path": "docs/investmoz/simulations/source-archive/BR252-I-Serie-2022-Lei20-PESOE.pdf",
"sha256": "1159fd3ce1ba5581671796d083534da48bd3c5578298819e896f1c2a8026318d",
"bytes": 17966640
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-22-2021-BR70.pdf",
"sha256": "a8fac38dcfe08f9c7a8e46254cff10e1ec82fc4f7a8d88ad6e4fe7d91ffc21a5",
"bytes": 905551
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-27-2026-BR123.pdf",
"sha256": "26249c3fa58f149c81de36e99d1aac2819a4771379d9e8833159660dabf539bb",
"bytes": 665722
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-29-1998-BR22-5-suplemento.pdf",
"sha256": "6242cbe675faadf085f43f95ec8c7e8868aafe67c3b2ab2bb010992288f954f8",
"bytes": 590418
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-3-2011-BR-11-I-mineiros.pdf",
"sha256": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be",
"bytes": 135471
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-37-2023-BR124.pdf",
"sha256": "7e680b191481faa0e2e9057fa5053587eb2a29d1d8c819e0eb9f02814255a04c",
"bytes": 730017
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-9-2008-BR16.pdf",
"sha256": "96fccdecbfdc11c9eafb90fbc6c7bc259f88bbd4c7507d1ac3af1fa03f960697",
"bytes": 900370
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf",
"sha256": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b",
"bytes": 2127554
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-14-1992-BR42.pdf",
"sha256": "089fff7423e99a70a230a73ca379e4ea3a91d124703f91016e57ff82794b9e56",
"bytes": 1604284
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-BR251-exemplar-MCNet5.pdf",
"sha256": "14eb34f0af91a8f5cb1770c7b52d6ff839c6818302d1ed96d79afbfb9fe999d4",
"bytes": 1603184
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-IPP-BR250-Parlamento.pdf",
"sha256": "978cd22403ffd336a631704ecd7a5bbd814a427c815b9acdaca5515591dd9e2a",
"bytes": 1990307
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2013-BR76.pdf",
"sha256": "bba96d645cc935ffc3d1a79b9f0f73ac1c693d6459c2ad41f56cd2841accae76",
"bytes": 147521
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2017-IRPS-BR-OCAM.pdf",
"sha256": "c3a0186cb9ad090d7a9533006295dc9bb6a62ad0d6150173cbd49dba4ee4b52d",
"bytes": 1894997
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-2-2011-BR-1-4-suplemento-MCNet.pdf",
"sha256": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899",
"bytes": 161625
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf",
"sha256": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53",
"bytes": 1834284
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-34-2007-BR52.pdf",
"sha256": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e",
"bytes": 1676884
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-1994-BR37-3-suplemento.pdf",
"sha256": "210df9db8980d0a5690cd187a6eeec7e37a900d743e39062c16f4e0d12215c7e",
"bytes": 186487
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-2012-BR3.pdf",
"sha256": "b8845cef41dcbd9ba50c43dbfa743a56030dd3d348242a107e1ae30279eec121",
"bytes": 187572
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-7-1991-Partidos-IFES.pdf",
"sha256": "6b783a0bb3330688ef10660a58060d9724aa2da6a873d234fe902f0eaaeda42d",
"bytes": 309350
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-CDT-1992.pdf",
"sha256": "d504e1024b28aee5c6acf4592acb96ec9c915a8414f67a61ab6984d6acf9df9d",
"bytes": 199331
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-Protocolo-2009.pdf",
"sha256": "f353773dcf41f09f4daa6cf5ba5a5f7994f3e02615867c2dcffc61c3d901bf9b",
"bytes": 197027
}
],
"new_sources": [
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-CDT-1992.pdf",
"sha256": "d504e1024b28aee5c6acf4592acb96ec9c915a8414f67a61ab6984d6acf9df9d",
"bytes": 199331,
"url": "https://dcjri.ministeriopublico.pt/sites/default/files/documentos/instrumentos/rar36-1992.pdf"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-Protocolo-2009.pdf",
"sha256": "f353773dcf41f09f4daa6cf5ba5a5f7994f3e02615867c2dcffc61c3d901bf9b",
"bytes": 197027,
"url": "https://files.dre.pt/1s/2009/05/08900/0275202756.pdf"
}
],
"remaining": [
"Other68paragraphs and digital/resident-specific cases",
"Other countries,treaties,EP-related and special-relationship excess cases",
"Dividends,interest-specific treaty branches",
"Late-payment interest,rectifications,aggregation,MRFTA/CER/form filling",
"External treaty claiming formalities are not declared satisfied by this calculation"
],
"active_changes": false,
"active_verification": "No fresh live inspection claimed;2b33a1c3 remains last reported installation",
"schema_config_permissions_delta": false,
"L5_integrally_completed": false,
"L3_ISPC_FX": "Unchanged;accepted proofs reused;no repeated functional suites",
"installation_remaining": "Existing Git release process,destination comparison and fresh backup/restore safeguards at installation",
"proofs": [
{
"path": "outputs/irpc-reliefs/api.txt",
"sha256": "5cccf4ee4e62ae00ef85276d48482fa8c13e202ddf68b6d79b1948977fb1f597"
},
{
"path": "outputs/irpc-reliefs/build.txt",
"sha256": "c60d4a5285f57a6458285163f64279d87558a8119f9b386cad8d12861d49e025"
},
{
"path": "outputs/irpc-reliefs/calculated.json",
"sha256": "563e05189c0a1255bf071fd1086aa8e67d6f0872891c5851dccbfc0d944752fe"
},
{
"path": "outputs/irpc-reliefs/compatibility.txt",
"sha256": "f37ad0ac9a0f2675fa4199f7600f3ae4e5a2df35a7294fe6e5aefd8024344051"
},
{
"path": "outputs/irpc-reliefs/dossier.html",
"sha256": "a34c2e9ef8b4d202e23412aaf6862ef9d603efeee0518a16adeb9d895f775641"
},
{
"path": "outputs/irpc-reliefs/dossier.json",
"sha256": "717561321d4b6c7659f0e6ab82c0e411ada0002a4f5436ba42092f8002f96076"
},
{
"path": "outputs/irpc-reliefs/dossier.txt",
"sha256": "a0473de355821758c4d320eea8e7af76a0d196a9cee652c71af723d6f69832f0"
},
{
"path": "outputs/irpc-reliefs/frontend.txt",
"sha256": "f86464b0d6a36ccfc39e22c0616d4a2e4f657126da134cb2014fcc199a11bdf2"
},
{
"path": "outputs/irpc-reliefs/index.html",
"sha256": "6bb76e37ac20a73cb9ffcda14f1ac9db701aa01bc2ef2f62fc5adaaffb640ca8"
},
{
"path": "outputs/irpc-reliefs/Lei-19-2013-BR76.pdf-review.png",
"sha256": "b62716ed89669622a33bde81a5ab6dcf0a6faafaf41726a09cd5b473b59abab1"
},
{
"path": "outputs/irpc-reliefs/Lei-34-2007-BR52.pdf19.png",
"sha256": "8355aa0b103439bb2b652b8499b2abf9bee1e4f3cc1af54b1be3ea059a2384f4"
},
{
"path": "outputs/irpc-reliefs/Lei-4-2012-BR3.pdf-review.png",
"sha256": "207224d8712713c9f4c5dda4e61539eba28f37af1ec70ef139cff0b450a62b2e"
},
{
"path": "outputs/irpc-reliefs/preparation.html",
"sha256": "2943b6cd21cc4ac043ae9b0605aee23c0fbbbed552842aeafef187ff963389a1"
},
{
"path": "outputs/irpc-reliefs/protocol-page1.png",
"sha256": "d981c72e254239c911554ff1289b578f7136bae7964a3d53f76a69094186cc04"
},
{
"path": "outputs/irpc-reliefs/PT-MZ-CDT-1992.pdf13.png",
"sha256": "2a57bc9924c0c826452bbc7f097b48c1899e6b642d6cdc247c244ace8993bb96"
},
{
"path": "outputs/irpc-reliefs/PT-MZ-CDT-1992.pdf14.png",
"sha256": "9fd31dcf17bdd1526390758a48a5afa8f9b98aebd83209b962ea97b7deef4006"
},
{
"path": "outputs/irpc-reliefs/PT-MZ-Protocolo-2009.pdf-review.png",
"sha256": "ba5ad799456a16959b83878c8935eb326ec3f0d87a2ba32e43217411e3f0dac9"
},
{
"path": "outputs/irpc-reliefs/recovered.json",
"sha256": "0b2378d1b8232b1424cf3d13e199146f4eabc330b9750a74b2b59f172741515e"
},
{
"path": "outputs/irpc-reliefs/types.txt",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"path": "outputs/irpc-reliefs/ui-proof.json",
"sha256": "274ffe6c237da799aceff79df76087cf17f2a83505755aa6354d90b9d1f85abb"
},
{
"path": "outputs/irpc-reliefs/ui.png",
"sha256": "55df91c9dfc9a028eceafaf0b55b4ad2df892da491f8ac97d5d8edaacea73a4e"
}
]
}
@@ -0,0 +1,200 @@
{
"status": "QA_first_scoped_increment_not_installed",
"base_installed": "5c0cb25cea7826811c389b55a64bcdf5e43b937f",
"branch": "codex/irpc-l5-withholdings-qa-20261025",
"L5_integrally_completed": false,
"IRPC_integrally_completed": false,
"IRPS_integrally_completed": false,
"scope": "Shared counterpart/document reuse;2026event chronology;10% digitalgoods/services/emoneycommission,nonresident nonattributabletoEP with explicit IRPCpayer/recipient/Mozambiquesource and no invokedspecialrelief;withheld/remitted/proven amounts separate;private draft persistence/recovery/report/preparationexport.",
"sources": [
{
"file": "Lei-34-2007-BR52.pdf",
"url": "https://www.dlapiperafrica.com/export/sites/africa/mozambique/insights/legislation-series/tax/downloads/Lei_34_2007.pdf_2063068952.pdf",
"sha256": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e",
"pages": 22,
"path": "docs/investmoz/simulations/source-archive/Lei-34-2007-BR52.pdf",
"usage": "Art67(3)/68 visually reviewed onPDF19;other text identified"
},
{
"file": "Lei-4-2012-BR3.pdf",
"url": "https://www.dlapiperafrica.com/export/sites/africa/mozambique/insights/legislation-series/tax/downloads/Lei-n-4.2012-de-23-de-Janeiro-de-2012.pdf_2063068952.pdf",
"sha256": "b8845cef41dcbd9ba50c43dbfa743a56030dd3d348242a107e1ae30279eec121",
"pages": 3,
"path": "docs/investmoz/simulations/source-archive/Lei-4-2012-BR3.pdf",
"usage": "Original inventoried/preserved;full article mapping not yet complete,no rate activated from this copy"
},
{
"file": "Lei-19-2013-BR76.pdf",
"url": "https://www.dlapiperafrica.com/export/sites/africa/mozambique/insights/legislation-series/tax/downloads/Lei-n_19.2013.pdf_2063068952.pdf",
"sha256": "bba96d645cc935ffc3d1a79b9f0f73ac1c693d6459c2ad41f56cd2841accae76",
"pages": 2,
"path": "docs/investmoz/simulations/source-archive/Lei-19-2013-BR76.pdf",
"usage": "Original inventoried/preserved;full article mapping not yet complete,no rate activated from this copy"
},
{
"file": "Decreto-9-2008-BR16.pdf",
"url": "https://www.dlapiperafrica.com/export/sites/africa/mozambique/insights/legislation-series/tax/downloads/Decreto_9_2008.pdf_2063068952.pdf",
"sha256": "96fccdecbfdc11c9eafb90fbc6c7bc259f88bbd4c7507d1ac3af1fa03f960697",
"pages": 11,
"path": "docs/investmoz/simulations/source-archive/Decreto-9-2008-BR16.pdf",
"usage": "Original inventoried/preserved;full article mapping not yet complete,no rate activated from this copy"
},
{
"file": "AT-MRFTA-19-39.pdf",
"url": "https://www.at.gov.mz/api/webdav?path=%2FFORMULARIOS%2FIMPOSTOS%20FISCAIS%2FIRPS%2FIRPS-IRPC%20MRFTA%20-%2019-39.pdf",
"pages": 2,
"sha256": "8ea62c53066b482f87078a7a7b1ecf15ca98a12a122e8d7abca63acfc993186b",
"path": "docs/investmoz/simulations/source-archive/AT-MRFTA-19-39.pdf",
"usage": "MRFTA p1–2 visually reviewed;consultation/preparation,not submission"
}
],
"existing_2026_source": {
"path": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251",
"citation": "Lei12/2025 PDF18–20;p2180(18–20);PDF19visually reviewed via identical text in received4pageexemplar;62(5),67(5/7)"
},
"excluded_legacy_sources": [
{
"file": "IRPColectivas.pdf",
"sha256": "06b1ac1310e973c2cc0406396177f9182922988b2ce4f95786f128c8310f907f",
"reason": "Decreto21/2002 revogadoLei34/2007 art3;consultation only,not2026calculation"
},
{
"file": "BR252-2022.pdf",
"sha256": "3339f1a11099466b01bf7b9024ff36266d056e6a914d1fa67f6b60f0e9f12f2b",
"reason": "Filename identifiesdate/issue butactual3rdsupplementDecree74/2022 tourism;notLei20/2022"
}
],
"inventories_reused": [
"8143localaccessiblefiles",
"39ATforms and189ATlegislation:all inventoriedbeforeselection",
"existingModelosinventory andIRPC_IRPSM39structure;no new workbook formulas trusted"
],
"runtime_delta": [
{
"path": "resources/js/lib/irpc-withholdings.ts",
"sha256_LF": "7a2f92695d5732c3c3525f70f23598bbfd9ab0346429e2997c9e07e324106eb5"
},
{
"path": "resources/js/components/simulation-irpc-withholdings.tsx",
"sha256_LF": "e513e9ee9318d71fb4cc40b8b132e6bb5fc6cf88746061fff8c537cb5e88291a"
},
{
"path": "resources/js/components/simulation-form.tsx",
"sha256_LF": "01d20f4761933a3e4dd7c776bd4adcf9610ac0435d918a1998ae9f0c3ce3f234"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "df8b224b9472449711d0b69a873fa75f9cc9f4d84dce1a314fc576fae9c6eae2"
}
],
"existing_integrations_additions_only": {
"resources/js/components/simulation-form.tsx": 2,
"resources/js/lib/project-dossier.ts": 2
},
"unchanged_previous_resources": 438,
"previous_original_PDFs_preserved": 21,
"new_PDFs_preserved": 5,
"verification": {
"new_frontend_distinct": 17,
"frontend": "frontend.txt:16pass;directed-cross-context.txt:1pass",
"API": "1test/23assertions;guardedloopback55441/simulator_fiscal_delta_20261021_test;DatabaseTransactionsrollback;allpreviousL3/ISPCmapsidentical",
"types": "types-final.txt:exit0",
"build": "build-final.txt:exit0",
"UI": "Actualcomponent calculation/save/recover/report andexport;localfileharness distinguishedfromprivateAPI;reuse existingacquisition at373 demonstrated;UI proof reused for unchanged positive route after final shared-payment-key refinement;directed test proves only that delta",
"previous_functional_suites_repeated": false
},
"examples": {
"retained": "base100000;10%;tax10000;remittance6000;outstanding4000;cost2026-10-02beforepayment2026-11-03=>period2026-10",
"suffered": "base20000;tax2000;documentedwithholding1500;difference500notannualcredit"
},
"remaining_calculations_and_mapping": [
{
"item": "Taxas normais e especiais dos demais rendimentos",
"needed": "Corresponder62(1–4)/67 por rendimento e período,com alterações20/2009,4/2012,19/2013 e20/2022. Ficheiro local BR252/2022 contém apenas3.ºsuplemento/Decreto74/2022,semLei20/2022;INM identifica esta na p2731. Texto exacto em falta não é revalidação de autenticidade.",
"resolution": "Implementar ramo dirigido após correspondência do texto aplicável;não usar2002 ou taxa genérica."
},
{
"item": "Residentes/EP e dispensa68",
"needed": "Corresponder62(5) novo com dispensas68,em especial68(d),titular/rendimento imputável aEP e factos de cada dispensa;sem confundir taxa com obrigação de reter.",
"resolution": "Ramo próprio por natureza/dispensa;sem presumirretenção10%ouzero."
},
{
"item": "Convenções/benefícios",
"needed": "Convenção invocada,artigo,residência,beneficiário,condições,período e documento aplicável",
"resolution": "Só o caso dependente permanece indeterminado;nenhuma taxa reduzida sem esses elementos."
},
{
"item": "Conversão cambial",
"needed": "Moeda,montante,data,taxa efonte aplicáveis à operação",
"resolution": "Conversão rastreável;sem taxa actual nem relabelagemMZN."
},
{
"item": "Juros/regularizações/guia agregada",
"needed": "Regra/taxa/base/período próprios;guias/declarações anteriores e pagamentos para substituições",
"resolution": "Não substituir juros porzero;preparação actual não é declaração rectificativa nem liquidação anualIRPC."
}
],
"external_formalities": [
{
"item": "MRFTA19/39:rubricas eCER digitais/moeda electrónica",
"needed": "Correspondência da nova categoria62(5)a/b às rubricas/CERdo quadro7;remissão67(7)para62(6)existe no original,masnova taxa aparece62(5).",
"resolution": "Preservar divergência e original;não renumerar,adivinharCERou bloquear cálculo positivo independente."
},
{
"item": "GuiaM39 anterior eMRFTAactual",
"needed": "Manter exemplares;instruçõesMRFTAidentificamperíodoúnico e prazonominaldia20mêsseguinte àdedução;calendário/prorrogação eprocedimento2026específico nãoinferidos",
"resolution": "Mapa de preparação/exportação;sem preenchimentofinalCER,assinaturaouusodosserviços."
},
{
"item": "ActosAT",
"needed": "Submissão,recepção,aceitação eeventualcomprovativo externo",
"resolution": "Externos aoportal;exportar nãoexecuta nemcertifica estes actos."
}
],
"preservation": "L3/ISPCbooks unchanged;131L1closures preserved;P001/P058nonblocking;P084/P085closed;statistics/AIdeferred. ISPCinterest/otherexcess/forminstructionsremaininexistingmatrix;IRPSlimitedpriorcase.",
"technical_choices": "Snapshotversion1 extension,exactfractions,source fingerprints andsharedpaymentdependencies areimplementationchoices;notnewTempoapprovals. ExistingIVApayments remainboundtoIVA;newIRPCproofregisteredonce/reusedwithoutoverallocation;noautomaticannualcredit.",
"schema_backend_configuration_dependency_changes": false,
"active_changes": false,
"proof_hashes": {
"outputs/irpc-l5-20261025/preservation-before-tests.json": "bd4ac1ee0e0d892b204f30baeed8842d00787d4b1f20656479e11ccafaca279f",
"outputs/irpc-l5-20261025/frontend.txt": "40bfc0c12fbf5b1f690a7a12570fbdc390f039b9ac845bab4bbddca622bbbcee",
"outputs/irpc-l5-20261025/directed-cross-context.txt": "5303e16fb702f8e022ac694965345d2388779af278844a7262d66bcbc630fd16",
"outputs/irpc-l5-20261025/api.txt": "f2ec740d0df65c8336abcbea48bf49eecb8bfcc1c70440ba7a8b27d24707d9f3",
"outputs/irpc-l5-20261025/types-final.txt": "5346ac8a6566c1c38cb0bbda6a029579df58cd78af78e2c4845d9c82b5d1d76c",
"outputs/irpc-l5-20261025/build-final.txt": "28b7601fefa8d992c9ff7dcf95465a84358381d073dc5f537e37d9a48ae36d9e",
"outputs/irpc-l5-20261025/ui-report.txt": "545f5fdaabd96e5dad996e6992e0721a8f39ed4dd473d769450ea35bbf39c311",
"outputs/irpc-l5-20261025/ui-reuse.txt": "26fc3ae1fbb7c6a5afbc1f57181e93566415bd17d418aceebe7f0d579f99c532",
"outputs/irpc-l5-20261025/preparation.html": "dce6700bffbffb9885f80c777ba0d85c61b5303778f6993dd3f9d70eee3d9fde",
"outputs/irpc-l5-20261025/active-baseline.json": "2f2d1a9d3e311f12099d2372d0c1a01eb5ff3918a39218c73b668dfbe51c66f8"
},
"compiled_markers": {
"Calcular e guardar retenções IRPC": [
"assets/services-D_pyIjFg.js"
],
"Exportar preparação IRPC": [
"assets/services-D_pyIjFg.js"
],
"Reutilizar contrapartes e documentos existentes": [
"assets/services-D_pyIjFg.js"
],
"Calcular e guardar apuramento trimestral ISPC": [
"assets/services-D_pyIjFg.js"
],
"Calcular e guardar restituição E": [
"assets/services-D_pyIjFg.js"
]
},
"active_revision_readonly": {
"commit": "5c0cb25cea7826811c389b55a64bcdf5e43b937f",
"branch": "main",
"built_at": "2026-10-25T16:24:27.707113+00:00",
"manifest_sha256": "385a289f9ba26a632aa0164fbba3913cc8dc2fb891641881fc8d2dcda1951626"
},
"current_balance_followup": {
"receipt": "irpc-l5-grouped-qa-20261025.json",
"source2022_gap": "ResolvedbynewfullBR,p2731",
"currency_gap": "Resolvedthroughdeliveredmechanismforbaseandwithholdingproof",
"previous_proofs": "Preserved;originalscopeandhistorynotrevoked"
}
}
@@ -0,0 +1,359 @@
{
"status": "L6_first_scoped_adjustments_QA_not_installed",
"installed_baseline": "7a11c4ef8f06ef149eb0488be3cd0749dc609bd0",
"branch": "codex/irpc-l6-adjustments-qa-20261025",
"QA_workspace": "C:\\laragon\\www\\portal-investidor-irpc-l6-qa-20261025",
"scope": "Projection from financial plan for resident general-regime subject,explicit12monthJan-Dec2026 mapping,MZN. First documented full addbacks36(1)c:noncontractual fines/charges and compensatory interest already included in accounting expense.",
"implemented": [
"reuse reconciled finance bridge;cash flows and loan principal excluded",
"per-document-line and expense-source traceability;positive cents,duplicate and source capacity guards",
"unknown case limits its own addition;partial result remains indeterminate if any adjustment unresolved",
"versioned separate opportunity book;save/recovery/history/stale source guards;installed L5 payload preserved",
"UI,partial HTML export and private recovered dossier reporting"
],
"not_implemented": [
"full taxable profit or taxable base/tax",
"automatic expense classification or actual accounting statement import",
"other addbacks/deductions,patrimonial variations,depreciation/tax amortisation,losses and collection",
"M20/M22 official field mapping/submission,annual withholding credits",
"automatic reuse of L5 simulated interest as actual expense",
"nonresidentEP/specialregimes/othercurrency/years/shorterhorizons"
],
"example": {
"origin": "synthetic projection",
"accounting_profit_before_tax": "6480.00 MZN",
"included_noncontractual_fine": "100.00 MZN",
"included_compensatory_interest": "20.00 MZN",
"partial_additions": "120.00 MZN",
"partial_adjusted_result": "6600.00 MZN",
"taxable_profit": null,
"taxable_base": null,
"tax": null,
"missing_reference_example": "Fine unsupported -> addition20 only;partial adjusted total indeterminate;principal financial result retained"
},
"verification": {
"frontend_new_tests": 7,
"private_API": "1test/19assertions,DatabaseTransactions rollback,isolatedloopback55441/simulator_fiscal_delta_20261021_test",
"typescript": "pass",
"QA_build": "pass exit0",
"UI": {
"calculation": true,
"localSaveRecovery": true,
"report": true,
"missingInformationPartial": true,
"independentAdditionPreserved": true,
"download": true,
"privateApi": "IrpcNormalDraftTest separate",
"errors": []
},
"dossier": "generated from actual privateAPI recovered payload;contains6600",
"accepted_suites": "not repeated;reused",
"protected_runtime_files": 32,
"old_originals": 30
},
"runtime_delta": [
{
"path": "resources/js/lib/irpc-normal.ts",
"sha256_LF": "659e8f198632097f08404857e7766621aa38d98622aaaaba8f6cf31a993fa2f0"
},
{
"path": "resources/js/components/simulation-irpc-normal.tsx",
"sha256_LF": "a512052f4a170d7c40f55ab2bfe695281be839a1cacb92c6c5ec0da8f6b3c3d7"
},
{
"path": "resources/js/components/simulation-form.tsx",
"sha256_LF": "85b024a7f45ceb52efd6ff1f21d0eab1fd8fcf1ab59e4b5302c08685235c472a"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "a0909bbfcdf7e8542b010faa104fcb918e86ae38ddf096082d4d5be98d31b2b9"
},
{
"path": "resources/js/lib/project-dossier-report.ts",
"sha256_LF": "5207a2ffeb208cd5ace6713038cee85208020ee618194dca7114e94fc3200b6c"
}
],
"protected_runtime": [
{
"path": "resources/js/components/acquisition-beverage-restitution.tsx",
"sha256_LF": "6f44897b8b12569314551df0022c26da57a165634087942a724293e66837558d"
},
{
"path": "resources/js/components/fiscal-calculation-gaps.tsx",
"sha256_LF": "1dab6ceb73756d4e023096b3b2ba767aaa843ff6cc69046ea630ab449a00b0dd"
},
{
"path": "resources/js/components/fiscal-l3-preparation.tsx",
"sha256_LF": "e84a7b1ccadaa1b5bd78d778a3287f96ccaf530855eef404786cd7aa3d321b73"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256_LF": "c206d4cfe575d6ba007aa2b425b5f898efa97e4162b8710e358b6ecfd9458542"
},
{
"path": "resources/js/components/simulation-operations.tsx",
"sha256_LF": "a7e55972fa790063dcf11945055de2af46a77db9e509900af22ede7ec47bb4cf"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256_LF": "b0ef55e0917bdb79f14b53ba9e95d73c08153befeb7d4ce73f81e6fb13992225"
},
{
"path": "resources/js/lib/iva-beverage-allocation.ts",
"sha256_LF": "32968d198c7fe0c53ca89641c22d5749be6636be2c79127b867e4e3afd0dd40d"
},
{
"path": "resources/js/lib/iva-beverage-restitution.ts",
"sha256_LF": "5c650cbd9469d5f99001f56fc4ff99ac973eb368036d4e96c6d171f1b220bd9e"
},
{
"path": "resources/js/lib/iva-calculation-gaps.ts",
"sha256_LF": "2e7d84a0c196bd5b56fd67cc1a389d43d5041894184e675680a4de3cd10b31a2"
},
{
"path": "resources/js/lib/iva-operations.ts",
"sha256_LF": "ec37b949f1233c5f5c14a87450c421ed29fabf1ed5b73fb32564564a2bc31f54"
},
{
"path": "resources/js/lib/l3-form-preparation.ts",
"sha256_LF": "fc47f5fa5ec1420fbd847d0d081f00d99ebbb524164eef785b20877e0562f704"
},
{
"path": "resources/js/lib/ispc-residuals.ts",
"sha256_LF": "40d5751c06c7c155ab4b7a17ee2d1653da2fbbf075807fbb8561cdbe19820955"
},
{
"path": "resources/js/components/simulation-ispc-residuals.tsx",
"sha256_LF": "a9219d6f41ccbd0ce45659d4f6aa0fa1c169a685840f5cb1e18daeca377d5e18"
},
{
"path": "resources/js/lib/ispc-eligibility.ts",
"sha256_LF": "44675c5efacdc1ae19505667611ba3b522d3043cebacc8754597c3a68ca89d25"
},
{
"path": "resources/js/components/simulation-ispc-quarter.tsx",
"sha256_LF": "2c2555309b32d4261f14e7164f39314c9188129c2990357fc54090a2468dd2b4"
},
{
"path": "resources/js/components/simulation-ispc-withholding.tsx",
"sha256_LF": "e0445d015b72859e48726959aa52686f79b1cf5c2ade29751efa83257068b878"
},
{
"path": "resources/js/lib/ispc-quarter.ts",
"sha256_LF": "f66bd52e9cdfe1ddaa6b00a931465862b3d890b9be216b7a056740f027f24129"
},
{
"path": "resources/js/lib/ispc-withholding.ts",
"sha256_LF": "6c31b240299edd3262efa28f7f3d5aee21123f94e30ef4ab90e26c35777cb6e4"
},
{
"path": "resources/js/components/simulation-ispc-eligibility.tsx",
"sha256_LF": "f48dd4a8f87a994eda0447f81a463589905e5873b2e1044debac9d10825a880c"
},
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256_LF": "cce283b1d0a07fb383fcb527225f4dd5bec829010a662cbaae1d60e595221977"
},
{
"path": "resources/js/lib/iva-modelo-a.ts",
"sha256_LF": "c641619a05613c1620385baad0e9ffbf810dd970aafb30e12b3a7f9a3bf11846"
},
{
"path": "resources/js/lib/iva-fx-selection.ts",
"sha256_LF": "9aa07ad443bc777b80510a3b5bd6aff9ddb9814d2450f3c690e531e74d71d998"
},
{
"path": "resources/js/components/simulation-fx-selection.tsx",
"sha256_LF": "39bb6d87d404745b0b66349bc11626545a3672ae27321ce9b4658416592059bf"
},
{
"path": "resources/js/lib/business-financial-plan.ts",
"sha256_LF": "c20274722d1ffcd0360f041a6cacb5d868fe0621cb27a1aca6e06826612c3ebb"
},
{
"path": "resources/js/lib/iva-currency-events.ts",
"sha256_LF": "cc9f2045d302d7987310da4006cc250fc5c99a27397918d166d649bfc32fab08"
},
{
"path": "resources/js/lib/irpc-fx.ts",
"sha256_LF": "5c4a7a477429f8d775acf6db3e117008468f5554e5731dec81f60fbb75e948fb"
},
{
"path": "resources/js/lib/irpc-withholdings.ts",
"sha256_LF": "8e5f3c035ce5e4d6c3fc82f933439ab580fa5519492f9c4d32cfb71b77b54803"
},
{
"path": "resources/js/components/simulation-irpc-withholdings.tsx",
"sha256_LF": "751af4fab346659bc5ccb08b8a2169769af7521ea0035050af32b41ea7f5aa76"
},
{
"path": "resources/js/lib/irpc-interest.ts",
"sha256_LF": "f8e6390b3b2c58c296f7e3fd14576e06ae248bc0cabce1a666b7094611f2a7dd"
},
{
"path": "resources/js/lib/irpc-mrfta.ts",
"sha256_LF": "76dcce8954f68b081d500be61de9c5b146a452a3eb578a0b78776ba9e1f8051c"
},
{
"path": "resources/js/lib/irpc-mrfta-cases.ts",
"sha256_LF": "4266746076ab3f70312fd042351e24dd2f136c4f3e8a277b57dd97849a9f1862"
},
{
"path": "resources/js/components/simulation-irpc-mrfta.tsx",
"sha256_LF": "913d1bb4ac0fc59763cf5d27bc637f6a713b2050c4463748db554af4be451538"
}
],
"originals_preserved": [
{
"path": "docs/investmoz/simulations/source-archive/AT-Comunicado-9-2026-ISPC.pdf",
"sha256": "106f8a9ce9255c03549c70bf07fe999d32e6e55302d009b509862aa74ccb4973"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-30-ISPC.pdf",
"sha256": "6802edd06b6ff638a0b851a3ec7ecf69af8f07840faa47446becad67d35d445c"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-B-Geral.pdf",
"sha256": "bd977c7c59d4d98befd92e2c566b1bf168cb1343bb519f51b41a3807f431fc57"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-MRFTA-19-39.pdf",
"sha256": "8ea62c53066b482f87078a7a7b1ecf15ca98a12a122e8d7abca63acfc993186b"
},
{
"path": "docs/investmoz/simulations/source-archive/BM-Mercado-Monetario-MAIBOR-20261025.html",
"sha256": "00e8a7e0d3a1db4ca3beb56d5361b2084a0f1684f3d40fc1c203702a2190e063"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf",
"sha256": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-89-I-Serie-2017-06-08.pdf",
"sha256": "11f0cab15eb6e51010952203ffa24fdc533a24fd642e19525fe4f46b17a1f5e5"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-95-I-Suplemento-2025-05-21.pdf",
"sha256": "e0e682e2c027c3cd9c1d46a73a3f48bc5f6bdbf05667fd97314d7a3f6a456358"
},
{
"path": "docs/investmoz/simulations/source-archive/BR252-I-Serie-2022-Lei20-PESOE.pdf",
"sha256": "1159fd3ce1ba5581671796d083534da48bd3c5578298819e896f1c2a8026318d"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-22-2021-BR70.pdf",
"sha256": "a8fac38dcfe08f9c7a8e46254cff10e1ec82fc4f7a8d88ad6e4fe7d91ffc21a5"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-27-2026-BR123.pdf",
"sha256": "26249c3fa58f149c81de36e99d1aac2819a4771379d9e8833159660dabf539bb"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-29-1998-BR22-5-suplemento.pdf",
"sha256": "6242cbe675faadf085f43f95ec8c7e8868aafe67c3b2ab2bb010992288f954f8"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-3-2011-BR-11-I-mineiros.pdf",
"sha256": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-37-2023-BR124.pdf",
"sha256": "7e680b191481faa0e2e9057fa5053587eb2a29d1d8c819e0eb9f02814255a04c"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-9-2008-BR16.pdf",
"sha256": "96fccdecbfdc11c9eafb90fbc6c7bc259f88bbd4c7507d1ac3af1fa03f960697"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf",
"sha256": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-14-1992-BR42.pdf",
"sha256": "089fff7423e99a70a230a73ca379e4ea3a91d124703f91016e57ff82794b9e56"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-BR251-exemplar-MCNet5.pdf",
"sha256": "14eb34f0af91a8f5cb1770c7b52d6ff839c6818302d1ed96d79afbfb9fe999d4"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-IPP-BR250-Parlamento.pdf",
"sha256": "978cd22403ffd336a631704ecd7a5bbd814a427c815b9acdaca5515591dd9e2a"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2013-BR76.pdf",
"sha256": "bba96d645cc935ffc3d1a79b9f0f73ac1c693d6459c2ad41f56cd2841accae76"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2017-IRPS-BR-OCAM.pdf",
"sha256": "c3a0186cb9ad090d7a9533006295dc9bb6a62ad0d6150173cbd49dba4ee4b52d"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-2-2011-BR-1-4-suplemento-MCNet.pdf",
"sha256": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf",
"sha256": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-34-2007-BR52.pdf",
"sha256": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-1994-BR37-3-suplemento.pdf",
"sha256": "210df9db8980d0a5690cd187a6eeec7e37a900d743e39062c16f4e0d12215c7e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-2012-BR3.pdf",
"sha256": "b8845cef41dcbd9ba50c43dbfa743a56030dd3d348242a107e1ae30279eec121"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-7-1991-Partidos-IFES.pdf",
"sha256": "6b783a0bb3330688ef10660a58060d9724aa2da6a873d234fe902f0eaaeda42d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-CDT-1992.pdf",
"sha256": "d504e1024b28aee5c6acf4592acb96ec9c915a8414f67a61ab6984d6acf9df9d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-Protocolo-2009.pdf",
"sha256": "f353773dcf41f09f4daa6cf5ba5a5f7994f3e02615867c2dcffc61c3d901bf9b"
}
],
"new_source": {
"path": "docs/investmoz/simulations/source-archive/Lei-20-2009-BR36-AT-exemplar19.pdf",
"sha256": "fc1c8144db42960cbf73e717e095896f511ece0f907f58f78819b27d6917a7ee",
"bytes": 6269169,
"url": "https://www.at.gov.mz/api/webdav?path=%2FLEGISLA%C3%87%C3%83O%2FLEGISLA%C3%87%C3%83O%20GERAL%2FLEI%2FLei%20n%C2%BA.%2019-2009%2C%20de%2010%20de%20Setembro.pdf",
"read_scope": "Official AT catalogue title19/2009 contains BR36 4th supplement pp272(13–17),including20/2009;all5pages inventoried,PDF4/p272(16) visually reviewed.36(1)a–i retained;adds j–n. Only36(1)c used in this L6 increment. No L5 points reopened;no library publication/import or scan claimed."
},
"source_review": "Visual:Lei34/2007PDF6/10;Lei20/2009PDF4;Lei4/2012PDF2/3;Lei19/2013PDF1/2. Lei12/2025 explicit amendment list and effective date reused from accepted evidence;20/2022 changes61/62 reused. No generic legal revalidation.",
"proof_sha256": {
"api.txt": "ebefca22663853108963f34aa70c98b81fee7196b9dc96c9dd74ad5e532326a5",
"build-exit.txt": "5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9",
"build.txt": "8268c2fe3d56f20c0ede7f8245a70657f54410c4941f77f2c337aae430c1eb20",
"calculated.json": "22968d447a30ad222f83bfb1c142ea1900fc2456945bfc6d517440829dec32cc",
"dossier.json": "4f5f1810cb60f4bb117958d89a8332231e82424e28b6ad380678932042e4374a",
"download.html": "b09b0f69a7aef7812d700234dfedbec3e5f4136cdd9e7497ad094052e8bcea99",
"frontend.txt": "6526af2df04cf412dc0b54e6282d32faa86661a9130712ae5b176eb54646c7a0",
"index.html": "9af7b69c19ca2fb213988ace8eb927008cb0bea73e267f16dee363fcdbcb0f12",
"preparation.html": "588d3f573d1f5cfc6286cd7da726dbfae39cb29d99d0753547580779090aac8f",
"recovered-preparation.html": "588d3f573d1f5cfc6286cd7da726dbfae39cb29d99d0753547580779090aac8f",
"recovered.json": "409eca12048865fc0f4d7828e45fb30554c6ace018c7e9960976c962e9e25eec",
"types.txt": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"ui-proof.json": "c381d89d855a0d4cc2f57c6c97795060f6638990eac6f1bea0c2d47bc24ec4dd",
"ui.png": "4a10262a1ce34d962fdeadc62fb43fa5724b874db821e37af19c009f95342124",
"ui.txt": "2529288ae9c74296003f1f591d984f3671c5e8922a99116bec67d42062a03230"
},
"active_changes": false,
"schema_API_config_permissions_dependencies_delta": false,
"L5_operational_demonstrated_scope": true,
"L5_complete": false,
"L6_complete": false,
"L5_AT_questions": "J1-J5/C1-C5 unchanged;no repeated research without new information"
}
@@ -0,0 +1,690 @@
{
"status": "installed_joint_L6_taxable_base_and_normal_colecta",
"installed": {
"status": "installed",
"commit": "2f684e59846187f3fb8a338d9d6f6a08cadb4d0d",
"release": "/var/www/investmoz-homologacao/releases/2f684e59846187f3fb8a338d9d6f6a08cadb4d0d-b46cd351",
"previous_release": "/var/www/investmoz-homologacao/releases/5e02c23af863485f6881e409c8704ec7e7573cc9-e83fcca2",
"database_migrations": 0,
"content_imports": 0
},
"previous_baseline": "5e02c23af863485f6881e409c8704ec7e7573cc9",
"backup": {
"stage": "/var/backups/investmoz-irpc-l6-colecta-delivery-20261025/backup",
"created_at": "2026-10-25T20:05:19Z",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "0f33d0bd0b8740bcc5363445a0fe59c85af42c16f02e723f9db3d0ef5898e020",
"files_sha256": "498b72430bbe9bd005856b65cb0d7e41e12898380e3324c5687044730796e95c",
"restore_verified": false
},
"restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "irpc_l5_restore_20261025",
"port": 55441,
"source_dump_sha256": "0f33d0bd0b8740bcc5363445a0fe59c85af42c16f02e723f9db3d0ef5898e020",
"active_database_writes": 0
},
"preservation": {
"previous_release_preserved": "/var/www/investmoz-homologacao/releases/5e02c23af863485f6881e409c8704ec7e7573cc9-e83fcca2",
"installed": {
"status": "installed",
"commit": "2f684e59846187f3fb8a338d9d6f6a08cadb4d0d",
"release": "/var/www/investmoz-homologacao/releases/2f684e59846187f3fb8a338d9d6f6a08cadb4d0d-b46cd351",
"previous_release": "/var/www/investmoz-homologacao/releases/5e02c23af863485f6881e409c8704ec7e7573cc9-e83fcca2",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 6,
"preserved_L3_ISPC_FX_runtime_files_verified": 37,
"documentary_files_verified": 31,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "7ff72d185a8c0dc624a7043fb5e68d72"
},
"after": {
"rows": 106,
"checksum": "49de7290166a6bdb90b3b2428106a6a5"
}
},
"sessions": {
"before": {
"rows": 28,
"checksum": "86bfbd7a7cc79988cf30ee47bc023e33"
},
"after": {
"rows": 29,
"checksum": "875df8b3f32a30fa7cbf7764e5290472"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"schema_permissions": {
"schema_sha256": "5045b3e51d2185377aa3d9ac7fa07a44fad3ec620cdfa83ffe31c8884ee1601d",
"roles_grants_sha256": "1530c33cb016e67bfdc64891ddfce7f185b13b56b2cd87c012871a685e118109",
"filesystem_permissions": {
".env": {
"mode": 416,
"uid": 1001,
"gid": 33
},
"storage": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"storage/app": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"bootstrap/cache": {
"mode": 1528,
"uid": 1001,
"gid": 33
}
},
"comparison_identity": "postgres;catalogue read only;no passwords collected",
"unchanged": true
},
"operational_delta": {
"status": "operational_delta_reconciled",
"comparison_identity": "postgres before/after;isolated restored baseline;no RLS visibility inference",
"cache": "queue:restart value/expiry and request-throttle counter/timer pair;no deleted cache rows",
"sessions": "anonymous sessions created by exact delivery verification user-agent",
"delta": {
"cache": {
"before_rows": 106,
"after_rows": 106,
"changes": [
{
"key_sha256": "8d6ea77eb4b34d86d207362d583cfa8bf2880b907becd9b00398964482c6b4bd",
"kind": "updated",
"fields": [
"expiration"
],
"key_pattern": "investemoz-cache-{hash}",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true
},
{
"key_sha256": "2f251473865d14b953236ab95b1521764754d76abd79b58ca7d38c96dfe2fab1",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-{hash}:timer",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true
},
{
"key_sha256": "7f7dd83f47f5bf404d55e6e9f1367948721579970b195680645e356031a070ff",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-illuminate:queue:restart",
"is_queue_restart_key": true,
"expiration_unchanged": false,
"throttle_timer_pair": false
}
]
},
"sessions": {
"before_rows": 28,
"after_rows": 31,
"changes": [
{
"key_sha256": "521c7bd9ee130bd5be6200caff027c80f95ac631aa7889296adfd3c9504726fe",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
},
{
"key_sha256": "52e0cf41e90b1efe2651dee901feefc64e2b2a2edc2ee76238ae280765f7794d",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
},
{
"key_sha256": "e4606ee652bc13d62167aff5f88b13ddb14a746bd84e0445961832b344cfa3e4",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
}
]
}
},
"business_tables_to_confirm_separately": 172,
"active_data_writes_by_comparison": 0,
"restore_network": "none"
},
"public_verification": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "2f684e59846187f3fb8a338d9d6f6a08cadb4d0d",
"branch": "main",
"built_at": "2026-10-25T20:08:55.991892+00:00",
"manifest_sha256": "db2d2ff2e4f69877f6112cf57886720e3b57635b8bc993478f1cb2083fe94d23"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"Iniciar determinação da matéria colectável": [
"assets/services-C5XL4k_e.js"
],
"Iniciar cálculo da colecta normal": [
"assets/services-C5XL4k_e.js"
],
"Colecta — regime normal": [
"assets/services-C5XL4k_e.js",
"assets/project-dossier-DG7_2Cag.js"
],
"Saldo final — âmbito L8": [
"assets/project-dossier-DG7_2Cag.js"
],
"colecta simulada:": [
"assets/project-dossier-DG7_2Cag.js"
],
"Saldo final a pagar ou recuperar por determinar emL8:": [
"assets/project-dossier-DG7_2Cag.js"
],
"Simulação pelos pressupostos introduzidos, sem confirmação fiscal dos juros.": [
"assets/services-C5XL4k_e.js"
],
"Códigos provisórios ou de simulação não são correspondências oficiais.": [
"assets/project-dossier-DG7_2Cag.js"
],
"Calcular e guardar apuramento trimestral ISPC": [
"assets/services-C5XL4k_e.js"
],
"Calcular e guardar restituição E": [
"assets/services-C5XL4k_e.js"
],
"Reutilizar selecção cambial": [
"assets/services-C5XL4k_e.js"
]
},
"assets": [
{
"file": "assets/services-C5XL4k_e.js",
"status": 200,
"sha256": "4a97b79acd063296697ca75cc6c7be36dec142d697c74247a539457925ff2531"
},
{
"file": "assets/project-dossier-DG7_2Cag.js",
"status": 200,
"sha256": "4a04d6ca91df6db1c03f3a08a658a5f65dffbe9dd88f6e66aa2c62bc4b7250ed"
},
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
},
{
"file": "assets/project-dossier-document-Ctx2pT1S.js",
"status": 200,
"sha256": "fa9a89f7136265a8a701f723cfcc961c86f711566de71d77fe09194be97ca213"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-CN8XDMiO.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"runtime_delta": [
{
"path": "resources/js/lib/irpc-normal-base.ts",
"sha256_LF": "ab7f7389bac23abd990d0d3a8d4c52b81f7b11066586d74b4254c6cc2c15392f"
},
{
"path": "resources/js/components/simulation-irpc-taxable-base.tsx",
"sha256_LF": "e4fe9f66d35d24aa68fd87de6a5a6a0e901706b270c18962fd0c7ab00f9abd93"
},
{
"path": "resources/js/lib/irpc-normal.ts",
"sha256_LF": "682de29e04cd0e3a6c33ef7c5cb2ebf763e16448bdf787be5de66e94fac61bc1"
},
{
"path": "resources/js/components/simulation-irpc-normal.tsx",
"sha256_LF": "78274f4d63162d0bb0fb32dcedbfc8b1de9b7eb4fbb7b638f8db1b8a064c0d58"
},
{
"path": "resources/js/lib/irpc-normal-assessment.ts",
"sha256_LF": "e5bce1e5015b52477febce1ba2a164e4064d887385f550b7ee55d1e20065b5a8"
},
{
"path": "resources/js/components/simulation-irpc-assessment.tsx",
"sha256_LF": "7174cc0160005a0c332ea40f02ba8a6d57985081b5ab45177ccd6e721bceea54"
}
],
"protected_runtime": [
{
"path": "resources/js/components/acquisition-beverage-restitution.tsx",
"sha256": "6f44897b8b12569314551df0022c26da57a165634087942a724293e66837558d"
},
{
"path": "resources/js/components/fiscal-calculation-gaps.tsx",
"sha256": "1dab6ceb73756d4e023096b3b2ba767aaa843ff6cc69046ea630ab449a00b0dd"
},
{
"path": "resources/js/components/fiscal-l3-preparation.tsx",
"sha256": "e84a7b1ccadaa1b5bd78d778a3287f96ccaf530855eef404786cd7aa3d321b73"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256": "c206d4cfe575d6ba007aa2b425b5f898efa97e4162b8710e358b6ecfd9458542"
},
{
"path": "resources/js/components/simulation-operations.tsx",
"sha256": "a7e55972fa790063dcf11945055de2af46a77db9e509900af22ede7ec47bb4cf"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256": "b0ef55e0917bdb79f14b53ba9e95d73c08153befeb7d4ce73f81e6fb13992225"
},
{
"path": "resources/js/lib/iva-beverage-allocation.ts",
"sha256": "32968d198c7fe0c53ca89641c22d5749be6636be2c79127b867e4e3afd0dd40d"
},
{
"path": "resources/js/lib/iva-beverage-restitution.ts",
"sha256": "5c650cbd9469d5f99001f56fc4ff99ac973eb368036d4e96c6d171f1b220bd9e"
},
{
"path": "resources/js/lib/iva-calculation-gaps.ts",
"sha256": "2e7d84a0c196bd5b56fd67cc1a389d43d5041894184e675680a4de3cd10b31a2"
},
{
"path": "resources/js/lib/iva-operations.ts",
"sha256": "ec37b949f1233c5f5c14a87450c421ed29fabf1ed5b73fb32564564a2bc31f54"
},
{
"path": "resources/js/lib/l3-form-preparation.ts",
"sha256": "fc47f5fa5ec1420fbd847d0d081f00d99ebbb524164eef785b20877e0562f704"
},
{
"path": "resources/js/lib/ispc-residuals.ts",
"sha256": "40d5751c06c7c155ab4b7a17ee2d1653da2fbbf075807fbb8561cdbe19820955"
},
{
"path": "resources/js/components/simulation-ispc-residuals.tsx",
"sha256": "a9219d6f41ccbd0ce45659d4f6aa0fa1c169a685840f5cb1e18daeca377d5e18"
},
{
"path": "resources/js/lib/ispc-eligibility.ts",
"sha256": "44675c5efacdc1ae19505667611ba3b522d3043cebacc8754597c3a68ca89d25"
},
{
"path": "resources/js/components/simulation-ispc-quarter.tsx",
"sha256": "2c2555309b32d4261f14e7164f39314c9188129c2990357fc54090a2468dd2b4"
},
{
"path": "resources/js/components/simulation-ispc-withholding.tsx",
"sha256": "e0445d015b72859e48726959aa52686f79b1cf5c2ade29751efa83257068b878"
},
{
"path": "resources/js/lib/ispc-quarter.ts",
"sha256": "f66bd52e9cdfe1ddaa6b00a931465862b3d890b9be216b7a056740f027f24129"
},
{
"path": "resources/js/lib/ispc-withholding.ts",
"sha256": "6c31b240299edd3262efa28f7f3d5aee21123f94e30ef4ab90e26c35777cb6e4"
},
{
"path": "resources/js/components/simulation-ispc-eligibility.tsx",
"sha256": "f48dd4a8f87a994eda0447f81a463589905e5873b2e1044debac9d10825a880c"
},
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256": "cce283b1d0a07fb383fcb527225f4dd5bec829010a662cbaae1d60e595221977"
},
{
"path": "resources/js/lib/iva-modelo-a.ts",
"sha256": "c641619a05613c1620385baad0e9ffbf810dd970aafb30e12b3a7f9a3bf11846"
},
{
"path": "resources/js/lib/iva-fx-selection.ts",
"sha256": "9aa07ad443bc777b80510a3b5bd6aff9ddb9814d2450f3c690e531e74d71d998"
},
{
"path": "resources/js/components/simulation-fx-selection.tsx",
"sha256": "39bb6d87d404745b0b66349bc11626545a3672ae27321ce9b4658416592059bf"
},
{
"path": "resources/js/lib/business-financial-plan.ts",
"sha256": "c20274722d1ffcd0360f041a6cacb5d868fe0621cb27a1aca6e06826612c3ebb"
},
{
"path": "resources/js/lib/iva-currency-events.ts",
"sha256": "cc9f2045d302d7987310da4006cc250fc5c99a27397918d166d649bfc32fab08"
},
{
"path": "resources/js/lib/irpc-fx.ts",
"sha256": "5c4a7a477429f8d775acf6db3e117008468f5554e5731dec81f60fbb75e948fb"
},
{
"path": "resources/js/lib/irpc-withholdings.ts",
"sha256": "8e5f3c035ce5e4d6c3fc82f933439ab580fa5519492f9c4d32cfb71b77b54803"
},
{
"path": "resources/js/components/simulation-irpc-withholdings.tsx",
"sha256": "751af4fab346659bc5ccb08b8a2169769af7521ea0035050af32b41ea7f5aa76"
},
{
"path": "resources/js/lib/irpc-interest.ts",
"sha256": "f8e6390b3b2c58c296f7e3fd14576e06ae248bc0cabce1a666b7094611f2a7dd"
},
{
"path": "resources/js/lib/irpc-mrfta.ts",
"sha256": "76dcce8954f68b081d500be61de9c5b146a452a3eb578a0b78776ba9e1f8051c"
},
{
"path": "resources/js/lib/irpc-mrfta-cases.ts",
"sha256": "4266746076ab3f70312fd042351e24dd2f136c4f3e8a277b57dd97849a9f1862"
},
{
"path": "resources/js/components/simulation-irpc-mrfta.tsx",
"sha256": "913d1bb4ac0fc59763cf5d27bc637f6a713b2050c4463748db554af4be451538"
},
{
"path": "resources/js/lib/financial-fiscal-bridge.ts",
"sha256": "5a30c501653b16b5fedcb12631ce81fcce4fe473aa542e94374986b3c50f2d33"
},
{
"path": "resources/js/components/simulation-form.tsx",
"sha256": "85b024a7f45ceb52efd6ff1f21d0eab1fd8fcf1ab59e4b5302c08685235c472a"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256": "a0909bbfcdf7e8542b010faa104fcb918e86ae38ddf096082d4d5be98d31b2b9"
},
{
"path": "resources/js/lib/project-dossier-report.ts",
"sha256": "5207a2ffeb208cd5ace6713038cee85208020ee618194dca7114e94fc3200b6c"
},
{
"path": "resources/js/lib/irpc-normal-profit.ts",
"sha256": "35dc586d9ab6c77405f3a46ed2ce3d9db74c54f338314d5e3c4959f0b6a55860"
}
],
"originals": [
{
"path": "docs/investmoz/simulations/source-archive/AT-Comunicado-9-2026-ISPC.pdf",
"sha256": "106f8a9ce9255c03549c70bf07fe999d32e6e55302d009b509862aa74ccb4973"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-30-ISPC.pdf",
"sha256": "6802edd06b6ff638a0b851a3ec7ecf69af8f07840faa47446becad67d35d445c"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-B-Geral.pdf",
"sha256": "bd977c7c59d4d98befd92e2c566b1bf168cb1343bb519f51b41a3807f431fc57"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-MRFTA-19-39.pdf",
"sha256": "8ea62c53066b482f87078a7a7b1ecf15ca98a12a122e8d7abca63acfc993186b"
},
{
"path": "docs/investmoz/simulations/source-archive/BM-Mercado-Monetario-MAIBOR-20261025.html",
"sha256": "00e8a7e0d3a1db4ca3beb56d5361b2084a0f1684f3d40fc1c203702a2190e063"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf",
"sha256": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-89-I-Serie-2017-06-08.pdf",
"sha256": "11f0cab15eb6e51010952203ffa24fdc533a24fd642e19525fe4f46b17a1f5e5"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-95-I-Suplemento-2025-05-21.pdf",
"sha256": "e0e682e2c027c3cd9c1d46a73a3f48bc5f6bdbf05667fd97314d7a3f6a456358"
},
{
"path": "docs/investmoz/simulations/source-archive/BR252-I-Serie-2022-Lei20-PESOE.pdf",
"sha256": "1159fd3ce1ba5581671796d083534da48bd3c5578298819e896f1c2a8026318d"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-22-2021-BR70.pdf",
"sha256": "a8fac38dcfe08f9c7a8e46254cff10e1ec82fc4f7a8d88ad6e4fe7d91ffc21a5"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-27-2026-BR123.pdf",
"sha256": "26249c3fa58f149c81de36e99d1aac2819a4771379d9e8833159660dabf539bb"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-29-1998-BR22-5-suplemento.pdf",
"sha256": "6242cbe675faadf085f43f95ec8c7e8868aafe67c3b2ab2bb010992288f954f8"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-3-2011-BR-11-I-mineiros.pdf",
"sha256": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-37-2023-BR124.pdf",
"sha256": "7e680b191481faa0e2e9057fa5053587eb2a29d1d8c819e0eb9f02814255a04c"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-9-2008-BR16.pdf",
"sha256": "96fccdecbfdc11c9eafb90fbc6c7bc259f88bbd4c7507d1ac3af1fa03f960697"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf",
"sha256": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-14-1992-BR42.pdf",
"sha256": "089fff7423e99a70a230a73ca379e4ea3a91d124703f91016e57ff82794b9e56"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-BR251-exemplar-MCNet5.pdf",
"sha256": "14eb34f0af91a8f5cb1770c7b52d6ff839c6818302d1ed96d79afbfb9fe999d4"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-IPP-BR250-Parlamento.pdf",
"sha256": "978cd22403ffd336a631704ecd7a5bbd814a427c815b9acdaca5515591dd9e2a"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2013-BR76.pdf",
"sha256": "bba96d645cc935ffc3d1a79b9f0f73ac1c693d6459c2ad41f56cd2841accae76"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2017-IRPS-BR-OCAM.pdf",
"sha256": "c3a0186cb9ad090d7a9533006295dc9bb6a62ad0d6150173cbd49dba4ee4b52d"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-2-2011-BR-1-4-suplemento-MCNet.pdf",
"sha256": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-20-2009-BR36-AT-exemplar19.pdf",
"sha256": "fc1c8144db42960cbf73e717e095896f511ece0f907f58f78819b27d6917a7ee"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf",
"sha256": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-34-2007-BR52.pdf",
"sha256": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-1994-BR37-3-suplemento.pdf",
"sha256": "210df9db8980d0a5690cd187a6eeec7e37a900d743e39062c16f4e0d12215c7e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-2012-BR3.pdf",
"sha256": "b8845cef41dcbd9ba50c43dbfa743a56030dd3d348242a107e1ae30279eec121"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-7-1991-Partidos-IFES.pdf",
"sha256": "6b783a0bb3330688ef10660a58060d9724aa2da6a873d234fe902f0eaaeda42d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-CDT-1992.pdf",
"sha256": "d504e1024b28aee5c6acf4592acb96ec9c915a8414f67a61ab6984d6acf9df9d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-Protocolo-2009.pdf",
"sha256": "f353773dcf41f09f4daa6cf5ba5a5f7994f3e02615867c2dcffc61c3d901bf9b"
}
],
"pipeline_checks": [
"OK (1 test, 3106 assertions)",
"built in 29.57s",
"OK (59 tests, 317 assertions)",
"# tests 906",
"# pass 906",
"# fail 0"
],
"accepted_proofs_reused": true,
"manually_repeated_accepted_functional_suites": false,
"sequence": {
"taxable_profit": "6700MZN simulated",
"taxable_base": "4400MZN simulated",
"normal_colecta": "1408MZN simulated,32%,2026",
"final_payable": null,
"final_recoverable": null,
"final_balance_scope": "L8"
},
"remaining_L6": [
{
"work": "Outros ajustamentos ordinários: admissibilidade de custos e correcções aos proveitos",
"evidence": "`irpc-normal.ts`, `NormalAdjustment.rule` e `calculateNormal`: apenas multas não contratuais e juros compensatórios36(1)c; `other` fica fora do recorte. `irpc-normal-profit.ts` não aplica `incomeCorrections`/`expenseCorrections` conhecidos não zero.",
"example": "Encargo de terceiro de250MZN com qualificação36(1)b, ou despesa não documentada36(1)g, incluído no resultado; a correcção não tem regra executável neste livro. A eventual tributação autónoma é outra operação, emL7.",
"completion_criterion": "Corresponder a regra geral e condições de cada categoria incluída, calcular acréscimo/dedução/exclusão com sinal e origem, evitar dupla contagem e demonstrar reflexo no lucro, base e colecta. A tributação autónoma que possa coexistir pertence aL7."
},
{
"work": "Dedutibilidade dos juros financeiros ordinários",
"evidence": "`irpc-normal-profit.ts`, `closeNormalProfit`: qualquer remanescente não zero de `interest_expense` mantém pendência; só os compensatórios integralmente acrescidos estão cobertos.",
"example": "Juros de financiamento comercial de120MZN, distintos de juros compensatórios, com finalidade/custo documentados.",
"completion_criterion": "Qualificar a parcela ordinária, dedutibilidade e correcção aplicável, conservar os montantes reconhecidos/pagos separados e fechar o lucro sem a equiparar a infracção. Relações especiais/benefícios e regras especiais seguemL7; taxa de juros compensatóriosL5 só é dependência se esse cálculo for efectivamente usado."
},
{
"work": "Reintegrações/amortizações fiscais e diferença face à contabilidade",
"evidence": "`irpc-normal-profit.ts`: `depreciation` positivo bloqueia o fecho; não existe mapa fiscal de activos/quotas nesta família de módulos.",
"example": "Depreciação contabilística120MZN com quota fiscal do activo ainda por corresponder.",
"completion_criterion": "Reutilizar activo, base e datas; corresponder método/taxa/limites e afectação ordinários, calcular quota fiscal e diferença para o resultado; manter mapas por activo/exercício e histórico. Incentivos, majorações e regimes especiais de activos seguemL7."
},
{
"work": "Variações patrimoniais e periodização ordinárias de montante não zero",
"evidence": "`irpc-normal-profit.ts`, `profitTopics`/`closeNormalProfit`: `positivePatrimonial`, `negativePatrimonial` e `timing` conhecidos não zero conservam valor e impedem o fecho; ausência/zero suportados são o caminho demonstrado.",
"example": "Variação500MZN fora do resultado, ou diferença temporal300MZN entre reconhecimento contabilístico e exercício fiscal, com natureza concreta documentada.",
"completion_criterion": "Corresponder natureza/ano/regra ordinária e decidir inclusão, exclusão ou ajustamento com sinal; impedir reaplicação em dois exercícios; demonstrar cálculo→gravação→recuperação→relatório. Operações especiais/benefícios do tópico `special` não são saldo deL6."
},
{
"work": "Resultado fiscal negativo do próprio exercício",
"evidence": "`irpc-normal-base.ts`, `calculateNormalBase`: lucro negativo é conservado, mas a base fica indeterminada; o livro de perdas só admite exercícios anteriores ao de utilização.",
"example": "Resultado fiscal actual−500MZN conhecido; não é uma perda anterior dedutível a si própria.",
"completion_criterion": "Tratar a situação da base/colecta nesse exercício e preparar a perda fiscal própria com origem/ano para utilização futura, conforme regra aplicável, sem confundir ausência de lucro, falta de informação, crédito ou consumo do saldo oficial. Perdas anteriores ordinárias já demonstradas continuam aceites."
},
{
"work": "Extensões do âmbito normal previstas no L6 original",
"evidence": "`irpc-normal.ts` fixa12meses/ano civil2026/residente/MZN; `irpc-normal-base.ts` exige exercícios anuais ordinários; a entrada deL6 no plano original inclui exercício fiscal e residência/EP.",
"example": "Caso de estabelecimento estável sob regime geral, ou período fiscal normal diferente do calendário/horizonte do plano; plano noutra moeda ainda sem reconciliação fiscal anualMZN.",
"completion_criterion": "Delimitar os casos normais a admitir, imputação de resultados ao sujeito/EP, datas/períodos e reconciliaçãoMZN usando o câmbio já entregue; demonstrar o percurso dependente. Não reimplementar câmbio, exigir pesquisa de todos os anos históricos ou aplicar automaticamente32% fora do período correspondido. Benefícios/convenções/regimes específicos pertencem aos lotes próprios."
},
{
"work": "Representação fiscal da colecta com fracção de cêntimo",
"evidence": "`irpc-normal-assessment.ts` conserva o racional e assinala `centExact:false`; não aplica regra fiscal de arredondamento/transcrição.",
"example": "Base0,01MZN×32%=0,0032MZN exactos; o caso1408MZN não tem esta ambiguidade e continua válido.",
"completion_criterion": "Identificar e executar a convenção aplicável à colecta/representação do formulário, mantendo o exacto e a rastreabilidade do valor transcrito. Não importar por analogia arredondamento de prestações/pagamentosL8 nem criar uma regra por defeito."
},
{
"work": "Correspondência dos dados de L6 aos exemplares M/20/M/22",
"evidence": "A família `irpc-normal*` produz mapaHTML/dossier e exclui expressamente correspondência/transcrição oficial; o âmbito original deL6 inclui M/20/M/22 e diferenças de ediçãoPDF/XLSX.",
"example": "Resultado, correcções, perdas, base4400 e colecta1408 existem no mapa de trabalho; os respectivos campos/anexos aplicáveis dos exemplares não estão correspondidos no motor.",
"completion_criterion": "Cotejar os exemplares já inventariados e mapear apenas os dados deL6 aos campos/versões efectivamente aplicáveis, com prova de preenchimento/recuperação. Os campos de retenções,pagamentos,créditos e saldo final sãoL8. Submissão electrónica/aceitaçãoAT não são presumidas como parte desta correspondência."
}
],
"remaining_scope_origin": "Existing L6 scope in traceability-and-manual.md table:normal costs/amortisations/losses/colecta/M20-M22,exercise and residence/EP;actual code at2f684e59. No new backlog or generic legal approval imposed.",
"excluded_from_L6_remainder": {
"L7": "Annual benefits/exemptions,reduced/cooperative rates,autonomous expense/capital-gain taxation,special operations,transferred losses and special-regime segregation",
"L8": "Annual retentions,PPC/PEC/otherpayments,credits/deductions tocolecta,doubletaxation,limits/carryforwards,reconciliation,final payable/recoverable balance/calendar",
"data_gaps": "Missing support,identity,amount,completeness or qualification under an already implemented rule is case data,not automatically new development",
"already_accepted": "Demonstrated6700->4400->1408 path,persistence/history/recovery/report,known/absent/missing handling,L3/ISPC/FX/L5 proofs"
},
"matrix_row": "AUD-SIM-INT02 existing matrix only",
"L6_status": "operational in demonstrated scope;partial only for the eight listed L6 work items,not for L7/L8",
"L6_complete": false,
"documentation_runtime_changed": false,
"new_legal_research": false,
"proof_files": {
"backup.txt": "26a42cfc6ac437c9bf7ffbd46f5f87b355b9e05e4fb82b10ee9b9f519dfe317c",
"compact-dependencies.txt": "80e9605f77b859630bd5d52c43908d72e76ee055e62892c3617b5e8c9cd82aaa",
"installed-protected.txt": "4c655d788b48214a1e6697bef459315756815eb6974e0c930c32a53334c8f7fc",
"installed-public-delta.json": "8d4d53ff066a5c48a505870973f26ca4d168e95376bb8085eed9b3cd6bdc0385",
"installed-public.txt": "4f6a74186b0d1371a7438a8e50bfbd0548b4039c3d8d04f850c8fbf0530bd9a7",
"integration.txt": "871bb24ee1fa0f45d096b85141124940500c6b84edfae01d8ff2bcf1d53bffd8",
"manifest-served.json": "db2d2ff2e4f69877f6112cf57886720e3b57635b8bc993478f1cb2083fe94d23",
"operational-delta.txt": "a24421b24ebc470bf0b0a12cc5345b41b229c1f5181320d2a7422f1bd044687c",
"preflight.txt": "2b68ed9a649a68ca1ba6c0c217a7e60287dc56d4af7e83c3dfe77e8a18a13f83",
"preparation.json": "d5c4124098015fef2a7f69bfc5d88f7789dc95cad38ef4430d24a34079f5b68f",
"progress.txt": "458df3545877efa51b97967221b8e3b2b737316970f3ccc63a01d5e07a6d8dda",
"remaining-section.md": "32ce79517daa0c9d33963f71c15e068eb5be548d7eddbf9874bab594b5592461",
"restore.txt": "524b246a6c0f62692c7a774347560962c4021bcf46e0368d9a075c44843b362a",
"schema-permissions-after.txt": "76b5a4d8af11e4898a205062766cfb7ab6ec0783200e77e60a1927aa1ca18597",
"schema-permissions-before.txt": "0ab7c964792acdd8917bce256c472e55e034b103500a58b49f020b5084823ed7",
"status-final.txt": "c20d733a19ff8d25afdf4a52e67193b1d0d255847d8aeef2c78c80a4dcf29476",
"status1.txt": "0d2be4308f1b2a4eda966d5bf4c10d719bf13cb87ba69b724bf90f765543fee4",
"status2.txt": "248a3a7e6921d2021971e43cc15df8bc0f76a5834a7ef6c46c839304e1a21349",
"status3.txt": "248a3a7e6921d2021971e43cc15df8bc0f76a5834a7ef6c46c839304e1a21349",
"status4.txt": "df65a125eb3ea41c86c9b0f2fd78ea77775aa240846eac75faeacbf459b55382"
}
}
@@ -0,0 +1,582 @@
{
"status": "normal_colecta_QA_joint_with_taxable_base_prepared_not_installed",
"installed_baseline": "5e02c23af863485f6881e409c8704ec7e7573cc9",
"previous_QA": "b8d45796dd8785e26dd27375f6da8b745c73e6ad",
"branch": "codex/irpc-l6-colecta-qa-20261025",
"QA_workspace": "C:\\laragon\\www\\portal-investidor-irpc-l6-colecta-qa-20261025",
"scope": "Normal general rate32%,CIRPC61(1),annual2026,01January-31December,MZN,resident general regime,current taxable base. Explicit case classification/reference;special/reduced/benefit/autonomous cases not mapped to general rate by approximation.",
"sequence": {
"simulated_taxable_profit": "6700MZN",
"simulated_taxable_base": "4400MZN",
"general_rate": "32%",
"simulated_colecta": "1408MZN",
"final_balance_payable": null,
"final_balance_recoverable": null,
"final_balance_scope": "L8"
},
"implemented": [
"Reuse current taxable base from b8d45796,not profit as a substitute;no re-entry of4400",
"Versioned statutory rate identification scoped to2026 and resident-general/MZN classification;missing/special case keeps base visible but colecta indeterminate",
"Exact rational base*32/100;zero only when base known zero,subcent result retained exact without invented fiscal rounding",
"Optional calculationversion4;legacy1/2/3 readers/history remain supported and legacy3 current without recalculation",
"UI and exports preserve profit -> base -> colecta -> final balance order;known1408 never labelled final payable amount",
"FinalBalance explicitly not_calculated/payable null/recoverable null,L8;legacytax remains null",
"No withholding/payment/annual credit input,netting,refund or final settlement introduced",
"Private API create/update/recovery;known/missing dossier from actual recovered payload"
],
"source_review": {
"existing_primary_sources": [
"Lei34/2007PDF17/p768(71),61(1):32%general",
"Lei4/2012PDF2/p34(5),61(2) amendment reused",
"Lei20/2022PDF1/p2731:61(1)retained,61(2)temporary reductions end31/12/2025",
"Lei12/2025PDF18/p2180(18):amendment list excludes61(1);PDF20/p2180(20):separate61-Acapitalgain taxation and effective01/01/2026"
],
"visual_review": "2007PDF17,2022PDF1,2025PDF18/20;accepted originals unchanged",
"primary_index": "https://www.inm.gov.mz/pt-br/content/br-n%C2%BA-252-de-301222-boletim-da-rep%C3%BAblica-i-serie",
"new_originals": 0,
"not_inferred": "No reduced-rate extension,benefit eligibility,autonomous tax or rounding rule presumed. No L5 tax-rate/CER research reopened."
},
"verification": {
"frontend_new_tests": 8,
"private_API": "1test/40assertions;create/update If-Match/recovery;DatabaseTransactions rollback;isolated127.0.0.1:55441/simulator_fiscal_delta_20261021_test",
"Wayfinder": "existing guarded generation ofroutes/actions",
"typescript": "passed",
"QA_build": "passed exit0",
"UI": {
"normalColecta1408": true,
"ratePeriodClassificationVisible": true,
"baseReused": true,
"sequenceOrdered": true,
"finalPayableAndRecoverableUnknownL8": true,
"localSaveRecovery": true,
"download": true,
"specialCaseNoGeneralRate": true,
"missingClassificationIndeterminate": true,
"privateApi": "IrpcNormalAssessmentDraftTest separate",
"errors": []
},
"dossier": "known and missing outputs from actual private API recovery",
"accepted_proofs": "b8d45796,L5,L3,ISPC,FX reused,no manual repeated accepted suites;legacy3 snapshot only read/roundtripped",
"legacy_fixture_sha256": "ee1b1b49e0686bed3f8171beaacf9f57327850bcd36c96e1cc2ba5f1064ff585",
"protected_from_previous_QA": 39,
"protected_from_installed": 37,
"originals": 31
},
"runtime_delta_increment": [
{
"path": "resources/js/lib/irpc-normal-assessment.ts",
"sha256_LF": "e5bce1e5015b52477febce1ba2a164e4064d887385f550b7ee55d1e20065b5a8"
},
{
"path": "resources/js/components/simulation-irpc-assessment.tsx",
"sha256_LF": "7174cc0160005a0c332ea40f02ba8a6d57985081b5ab45177ccd6e721bceea54"
},
{
"path": "resources/js/lib/irpc-normal.ts",
"sha256_LF": "682de29e04cd0e3a6c33ef7c5cb2ebf763e16448bdf787be5de66e94fac61bc1"
},
{
"path": "resources/js/components/simulation-irpc-normal.tsx",
"sha256_LF": "78274f4d63162d0bb0fb32dcedbfc8b1de9b7eb4fbb7b638f8db1b8a064c0d58"
}
],
"runtime_delta_joint_from_5e02c23a": [
{
"path": "resources/js/lib/irpc-normal-base.ts",
"sha256_LF": "ab7f7389bac23abd990d0d3a8d4c52b81f7b11066586d74b4254c6cc2c15392f"
},
{
"path": "resources/js/components/simulation-irpc-taxable-base.tsx",
"sha256_LF": "e4fe9f66d35d24aa68fd87de6a5a6a0e901706b270c18962fd0c7ab00f9abd93"
},
{
"path": "resources/js/lib/irpc-normal.ts",
"sha256_LF": "682de29e04cd0e3a6c33ef7c5cb2ebf763e16448bdf787be5de66e94fac61bc1"
},
{
"path": "resources/js/components/simulation-irpc-normal.tsx",
"sha256_LF": "78274f4d63162d0bb0fb32dcedbfc8b1de9b7eb4fbb7b638f8db1b8a064c0d58"
},
{
"path": "resources/js/lib/irpc-normal-assessment.ts",
"sha256_LF": "e5bce1e5015b52477febce1ba2a164e4064d887385f550b7ee55d1e20065b5a8"
},
{
"path": "resources/js/components/simulation-irpc-assessment.tsx",
"sha256_LF": "7174cc0160005a0c332ea40f02ba8a6d57985081b5ab45177ccd6e721bceea54"
}
],
"protected_runtime": [
{
"path": "resources/js/components/acquisition-beverage-restitution.tsx",
"sha256_LF": "6f44897b8b12569314551df0022c26da57a165634087942a724293e66837558d"
},
{
"path": "resources/js/components/fiscal-calculation-gaps.tsx",
"sha256_LF": "1dab6ceb73756d4e023096b3b2ba767aaa843ff6cc69046ea630ab449a00b0dd"
},
{
"path": "resources/js/components/fiscal-l3-preparation.tsx",
"sha256_LF": "e84a7b1ccadaa1b5bd78d778a3287f96ccaf530855eef404786cd7aa3d321b73"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256_LF": "c206d4cfe575d6ba007aa2b425b5f898efa97e4162b8710e358b6ecfd9458542"
},
{
"path": "resources/js/components/simulation-operations.tsx",
"sha256_LF": "a7e55972fa790063dcf11945055de2af46a77db9e509900af22ede7ec47bb4cf"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256_LF": "b0ef55e0917bdb79f14b53ba9e95d73c08153befeb7d4ce73f81e6fb13992225"
},
{
"path": "resources/js/lib/iva-beverage-allocation.ts",
"sha256_LF": "32968d198c7fe0c53ca89641c22d5749be6636be2c79127b867e4e3afd0dd40d"
},
{
"path": "resources/js/lib/iva-beverage-restitution.ts",
"sha256_LF": "5c650cbd9469d5f99001f56fc4ff99ac973eb368036d4e96c6d171f1b220bd9e"
},
{
"path": "resources/js/lib/iva-calculation-gaps.ts",
"sha256_LF": "2e7d84a0c196bd5b56fd67cc1a389d43d5041894184e675680a4de3cd10b31a2"
},
{
"path": "resources/js/lib/iva-operations.ts",
"sha256_LF": "ec37b949f1233c5f5c14a87450c421ed29fabf1ed5b73fb32564564a2bc31f54"
},
{
"path": "resources/js/lib/l3-form-preparation.ts",
"sha256_LF": "fc47f5fa5ec1420fbd847d0d081f00d99ebbb524164eef785b20877e0562f704"
},
{
"path": "resources/js/lib/ispc-residuals.ts",
"sha256_LF": "40d5751c06c7c155ab4b7a17ee2d1653da2fbbf075807fbb8561cdbe19820955"
},
{
"path": "resources/js/components/simulation-ispc-residuals.tsx",
"sha256_LF": "a9219d6f41ccbd0ce45659d4f6aa0fa1c169a685840f5cb1e18daeca377d5e18"
},
{
"path": "resources/js/lib/ispc-eligibility.ts",
"sha256_LF": "44675c5efacdc1ae19505667611ba3b522d3043cebacc8754597c3a68ca89d25"
},
{
"path": "resources/js/components/simulation-ispc-quarter.tsx",
"sha256_LF": "2c2555309b32d4261f14e7164f39314c9188129c2990357fc54090a2468dd2b4"
},
{
"path": "resources/js/components/simulation-ispc-withholding.tsx",
"sha256_LF": "e0445d015b72859e48726959aa52686f79b1cf5c2ade29751efa83257068b878"
},
{
"path": "resources/js/lib/ispc-quarter.ts",
"sha256_LF": "f66bd52e9cdfe1ddaa6b00a931465862b3d890b9be216b7a056740f027f24129"
},
{
"path": "resources/js/lib/ispc-withholding.ts",
"sha256_LF": "6c31b240299edd3262efa28f7f3d5aee21123f94e30ef4ab90e26c35777cb6e4"
},
{
"path": "resources/js/components/simulation-ispc-eligibility.tsx",
"sha256_LF": "f48dd4a8f87a994eda0447f81a463589905e5873b2e1044debac9d10825a880c"
},
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256_LF": "cce283b1d0a07fb383fcb527225f4dd5bec829010a662cbaae1d60e595221977"
},
{
"path": "resources/js/lib/iva-modelo-a.ts",
"sha256_LF": "c641619a05613c1620385baad0e9ffbf810dd970aafb30e12b3a7f9a3bf11846"
},
{
"path": "resources/js/lib/iva-fx-selection.ts",
"sha256_LF": "9aa07ad443bc777b80510a3b5bd6aff9ddb9814d2450f3c690e531e74d71d998"
},
{
"path": "resources/js/components/simulation-fx-selection.tsx",
"sha256_LF": "39bb6d87d404745b0b66349bc11626545a3672ae27321ce9b4658416592059bf"
},
{
"path": "resources/js/lib/business-financial-plan.ts",
"sha256_LF": "c20274722d1ffcd0360f041a6cacb5d868fe0621cb27a1aca6e06826612c3ebb"
},
{
"path": "resources/js/lib/iva-currency-events.ts",
"sha256_LF": "cc9f2045d302d7987310da4006cc250fc5c99a27397918d166d649bfc32fab08"
},
{
"path": "resources/js/lib/irpc-fx.ts",
"sha256_LF": "5c4a7a477429f8d775acf6db3e117008468f5554e5731dec81f60fbb75e948fb"
},
{
"path": "resources/js/lib/irpc-withholdings.ts",
"sha256_LF": "8e5f3c035ce5e4d6c3fc82f933439ab580fa5519492f9c4d32cfb71b77b54803"
},
{
"path": "resources/js/components/simulation-irpc-withholdings.tsx",
"sha256_LF": "751af4fab346659bc5ccb08b8a2169769af7521ea0035050af32b41ea7f5aa76"
},
{
"path": "resources/js/lib/irpc-interest.ts",
"sha256_LF": "f8e6390b3b2c58c296f7e3fd14576e06ae248bc0cabce1a666b7094611f2a7dd"
},
{
"path": "resources/js/lib/irpc-mrfta.ts",
"sha256_LF": "76dcce8954f68b081d500be61de9c5b146a452a3eb578a0b78776ba9e1f8051c"
},
{
"path": "resources/js/lib/irpc-mrfta-cases.ts",
"sha256_LF": "4266746076ab3f70312fd042351e24dd2f136c4f3e8a277b57dd97849a9f1862"
},
{
"path": "resources/js/components/simulation-irpc-mrfta.tsx",
"sha256_LF": "913d1bb4ac0fc59763cf5d27bc637f6a713b2050c4463748db554af4be451538"
},
{
"path": "resources/js/lib/financial-fiscal-bridge.ts",
"sha256_LF": "5a30c501653b16b5fedcb12631ce81fcce4fe473aa542e94374986b3c50f2d33"
},
{
"path": "resources/js/components/simulation-form.tsx",
"sha256_LF": "85b024a7f45ceb52efd6ff1f21d0eab1fd8fcf1ab59e4b5302c08685235c472a"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "a0909bbfcdf7e8542b010faa104fcb918e86ae38ddf096082d4d5be98d31b2b9"
},
{
"path": "resources/js/lib/project-dossier-report.ts",
"sha256_LF": "5207a2ffeb208cd5ace6713038cee85208020ee618194dca7114e94fc3200b6c"
},
{
"path": "resources/js/lib/irpc-normal-profit.ts",
"sha256_LF": "35dc586d9ab6c77405f3a46ed2ce3d9db74c54f338314d5e3c4959f0b6a55860"
}
],
"protected_previous_QA_runtime": [
{
"path": "resources/js/components/acquisition-beverage-restitution.tsx",
"sha256_LF": "6f44897b8b12569314551df0022c26da57a165634087942a724293e66837558d"
},
{
"path": "resources/js/components/fiscal-calculation-gaps.tsx",
"sha256_LF": "1dab6ceb73756d4e023096b3b2ba767aaa843ff6cc69046ea630ab449a00b0dd"
},
{
"path": "resources/js/components/fiscal-l3-preparation.tsx",
"sha256_LF": "e84a7b1ccadaa1b5bd78d778a3287f96ccaf530855eef404786cd7aa3d321b73"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256_LF": "c206d4cfe575d6ba007aa2b425b5f898efa97e4162b8710e358b6ecfd9458542"
},
{
"path": "resources/js/components/simulation-operations.tsx",
"sha256_LF": "a7e55972fa790063dcf11945055de2af46a77db9e509900af22ede7ec47bb4cf"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256_LF": "b0ef55e0917bdb79f14b53ba9e95d73c08153befeb7d4ce73f81e6fb13992225"
},
{
"path": "resources/js/lib/iva-beverage-allocation.ts",
"sha256_LF": "32968d198c7fe0c53ca89641c22d5749be6636be2c79127b867e4e3afd0dd40d"
},
{
"path": "resources/js/lib/iva-beverage-restitution.ts",
"sha256_LF": "5c650cbd9469d5f99001f56fc4ff99ac973eb368036d4e96c6d171f1b220bd9e"
},
{
"path": "resources/js/lib/iva-calculation-gaps.ts",
"sha256_LF": "2e7d84a0c196bd5b56fd67cc1a389d43d5041894184e675680a4de3cd10b31a2"
},
{
"path": "resources/js/lib/iva-operations.ts",
"sha256_LF": "ec37b949f1233c5f5c14a87450c421ed29fabf1ed5b73fb32564564a2bc31f54"
},
{
"path": "resources/js/lib/l3-form-preparation.ts",
"sha256_LF": "fc47f5fa5ec1420fbd847d0d081f00d99ebbb524164eef785b20877e0562f704"
},
{
"path": "resources/js/lib/ispc-residuals.ts",
"sha256_LF": "40d5751c06c7c155ab4b7a17ee2d1653da2fbbf075807fbb8561cdbe19820955"
},
{
"path": "resources/js/components/simulation-ispc-residuals.tsx",
"sha256_LF": "a9219d6f41ccbd0ce45659d4f6aa0fa1c169a685840f5cb1e18daeca377d5e18"
},
{
"path": "resources/js/lib/ispc-eligibility.ts",
"sha256_LF": "44675c5efacdc1ae19505667611ba3b522d3043cebacc8754597c3a68ca89d25"
},
{
"path": "resources/js/components/simulation-ispc-quarter.tsx",
"sha256_LF": "2c2555309b32d4261f14e7164f39314c9188129c2990357fc54090a2468dd2b4"
},
{
"path": "resources/js/components/simulation-ispc-withholding.tsx",
"sha256_LF": "e0445d015b72859e48726959aa52686f79b1cf5c2ade29751efa83257068b878"
},
{
"path": "resources/js/lib/ispc-quarter.ts",
"sha256_LF": "f66bd52e9cdfe1ddaa6b00a931465862b3d890b9be216b7a056740f027f24129"
},
{
"path": "resources/js/lib/ispc-withholding.ts",
"sha256_LF": "6c31b240299edd3262efa28f7f3d5aee21123f94e30ef4ab90e26c35777cb6e4"
},
{
"path": "resources/js/components/simulation-ispc-eligibility.tsx",
"sha256_LF": "f48dd4a8f87a994eda0447f81a463589905e5873b2e1044debac9d10825a880c"
},
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256_LF": "cce283b1d0a07fb383fcb527225f4dd5bec829010a662cbaae1d60e595221977"
},
{
"path": "resources/js/lib/iva-modelo-a.ts",
"sha256_LF": "c641619a05613c1620385baad0e9ffbf810dd970aafb30e12b3a7f9a3bf11846"
},
{
"path": "resources/js/lib/iva-fx-selection.ts",
"sha256_LF": "9aa07ad443bc777b80510a3b5bd6aff9ddb9814d2450f3c690e531e74d71d998"
},
{
"path": "resources/js/components/simulation-fx-selection.tsx",
"sha256_LF": "39bb6d87d404745b0b66349bc11626545a3672ae27321ce9b4658416592059bf"
},
{
"path": "resources/js/lib/business-financial-plan.ts",
"sha256_LF": "c20274722d1ffcd0360f041a6cacb5d868fe0621cb27a1aca6e06826612c3ebb"
},
{
"path": "resources/js/lib/iva-currency-events.ts",
"sha256_LF": "cc9f2045d302d7987310da4006cc250fc5c99a27397918d166d649bfc32fab08"
},
{
"path": "resources/js/lib/irpc-fx.ts",
"sha256_LF": "5c4a7a477429f8d775acf6db3e117008468f5554e5731dec81f60fbb75e948fb"
},
{
"path": "resources/js/lib/irpc-withholdings.ts",
"sha256_LF": "8e5f3c035ce5e4d6c3fc82f933439ab580fa5519492f9c4d32cfb71b77b54803"
},
{
"path": "resources/js/components/simulation-irpc-withholdings.tsx",
"sha256_LF": "751af4fab346659bc5ccb08b8a2169769af7521ea0035050af32b41ea7f5aa76"
},
{
"path": "resources/js/lib/irpc-interest.ts",
"sha256_LF": "f8e6390b3b2c58c296f7e3fd14576e06ae248bc0cabce1a666b7094611f2a7dd"
},
{
"path": "resources/js/lib/irpc-mrfta.ts",
"sha256_LF": "76dcce8954f68b081d500be61de9c5b146a452a3eb578a0b78776ba9e1f8051c"
},
{
"path": "resources/js/lib/irpc-mrfta-cases.ts",
"sha256_LF": "4266746076ab3f70312fd042351e24dd2f136c4f3e8a277b57dd97849a9f1862"
},
{
"path": "resources/js/components/simulation-irpc-mrfta.tsx",
"sha256_LF": "913d1bb4ac0fc59763cf5d27bc637f6a713b2050c4463748db554af4be451538"
},
{
"path": "resources/js/lib/financial-fiscal-bridge.ts",
"sha256_LF": "5a30c501653b16b5fedcb12631ce81fcce4fe473aa542e94374986b3c50f2d33"
},
{
"path": "resources/js/components/simulation-form.tsx",
"sha256_LF": "85b024a7f45ceb52efd6ff1f21d0eab1fd8fcf1ab59e4b5302c08685235c472a"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "a0909bbfcdf7e8542b010faa104fcb918e86ae38ddf096082d4d5be98d31b2b9"
},
{
"path": "resources/js/lib/project-dossier-report.ts",
"sha256_LF": "5207a2ffeb208cd5ace6713038cee85208020ee618194dca7114e94fc3200b6c"
},
{
"path": "resources/js/lib/irpc-normal-profit.ts",
"sha256_LF": "35dc586d9ab6c77405f3a46ed2ce3d9db74c54f338314d5e3c4959f0b6a55860"
},
{
"path": "resources/js/lib/irpc-normal-base.ts",
"sha256_LF": "ab7f7389bac23abd990d0d3a8d4c52b81f7b11066586d74b4254c6cc2c15392f"
},
{
"path": "resources/js/components/simulation-irpc-taxable-base.tsx",
"sha256_LF": "e4fe9f66d35d24aa68fd87de6a5a6a0e901706b270c18962fd0c7ab00f9abd93"
}
],
"originals_preserved": [
{
"path": "docs/investmoz/simulations/source-archive/AT-Comunicado-9-2026-ISPC.pdf",
"sha256": "106f8a9ce9255c03549c70bf07fe999d32e6e55302d009b509862aa74ccb4973"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-30-ISPC.pdf",
"sha256": "6802edd06b6ff638a0b851a3ec7ecf69af8f07840faa47446becad67d35d445c"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-B-Geral.pdf",
"sha256": "bd977c7c59d4d98befd92e2c566b1bf168cb1343bb519f51b41a3807f431fc57"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-MRFTA-19-39.pdf",
"sha256": "8ea62c53066b482f87078a7a7b1ecf15ca98a12a122e8d7abca63acfc993186b"
},
{
"path": "docs/investmoz/simulations/source-archive/BM-Mercado-Monetario-MAIBOR-20261025.html",
"sha256": "00e8a7e0d3a1db4ca3beb56d5361b2084a0f1684f3d40fc1c203702a2190e063"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf",
"sha256": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-89-I-Serie-2017-06-08.pdf",
"sha256": "11f0cab15eb6e51010952203ffa24fdc533a24fd642e19525fe4f46b17a1f5e5"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-95-I-Suplemento-2025-05-21.pdf",
"sha256": "e0e682e2c027c3cd9c1d46a73a3f48bc5f6bdbf05667fd97314d7a3f6a456358"
},
{
"path": "docs/investmoz/simulations/source-archive/BR252-I-Serie-2022-Lei20-PESOE.pdf",
"sha256": "1159fd3ce1ba5581671796d083534da48bd3c5578298819e896f1c2a8026318d"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-22-2021-BR70.pdf",
"sha256": "a8fac38dcfe08f9c7a8e46254cff10e1ec82fc4f7a8d88ad6e4fe7d91ffc21a5"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-27-2026-BR123.pdf",
"sha256": "26249c3fa58f149c81de36e99d1aac2819a4771379d9e8833159660dabf539bb"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-29-1998-BR22-5-suplemento.pdf",
"sha256": "6242cbe675faadf085f43f95ec8c7e8868aafe67c3b2ab2bb010992288f954f8"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-3-2011-BR-11-I-mineiros.pdf",
"sha256": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-37-2023-BR124.pdf",
"sha256": "7e680b191481faa0e2e9057fa5053587eb2a29d1d8c819e0eb9f02814255a04c"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-9-2008-BR16.pdf",
"sha256": "96fccdecbfdc11c9eafb90fbc6c7bc259f88bbd4c7507d1ac3af1fa03f960697"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf",
"sha256": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-14-1992-BR42.pdf",
"sha256": "089fff7423e99a70a230a73ca379e4ea3a91d124703f91016e57ff82794b9e56"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-BR251-exemplar-MCNet5.pdf",
"sha256": "14eb34f0af91a8f5cb1770c7b52d6ff839c6818302d1ed96d79afbfb9fe999d4"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-IPP-BR250-Parlamento.pdf",
"sha256": "978cd22403ffd336a631704ecd7a5bbd814a427c815b9acdaca5515591dd9e2a"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2013-BR76.pdf",
"sha256": "bba96d645cc935ffc3d1a79b9f0f73ac1c693d6459c2ad41f56cd2841accae76"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2017-IRPS-BR-OCAM.pdf",
"sha256": "c3a0186cb9ad090d7a9533006295dc9bb6a62ad0d6150173cbd49dba4ee4b52d"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-2-2011-BR-1-4-suplemento-MCNet.pdf",
"sha256": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-20-2009-BR36-AT-exemplar19.pdf",
"sha256": "fc1c8144db42960cbf73e717e095896f511ece0f907f58f78819b27d6917a7ee"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf",
"sha256": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-34-2007-BR52.pdf",
"sha256": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-1994-BR37-3-suplemento.pdf",
"sha256": "210df9db8980d0a5690cd187a6eeec7e37a900d743e39062c16f4e0d12215c7e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-2012-BR3.pdf",
"sha256": "b8845cef41dcbd9ba50c43dbfa743a56030dd3d348242a107e1ae30279eec121"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-7-1991-Partidos-IFES.pdf",
"sha256": "6b783a0bb3330688ef10660a58060d9724aa2da6a873d234fe902f0eaaeda42d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-CDT-1992.pdf",
"sha256": "d504e1024b28aee5c6acf4592acb96ec9c915a8414f67a61ab6984d6acf9df9d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-Protocolo-2009.pdf",
"sha256": "f353773dcf41f09f4daa6cf5ba5a5f7994f3e02615867c2dcffc61c3d901bf9b"
}
],
"proof_sha256": {
"api.txt": "0d75de04e58963d6c3a6c4f8a8347770ca3ece09784e0ad2a9db6fd7e457af13",
"BR-248-I-Suplemento-1-2025.pdf-page18.png": "48e5cde488cb879bbe55f35a75e4153b4a29668757e9da49c3c67f69b581ed1b",
"BR-248-I-Suplemento-1-2025.pdf-page20.png": "9412fe514a0ee097ddd32c5bf212b72a87063d251118a4b97565bf29c0be634d",
"BR252-I-Serie-2022-Lei20-PESOE.pdf-page1.png": "be4585d255933806a3a79fa826c8bf2ee57a096b64dbb0b65b1eb0014bf05c80",
"build-exit.txt": "5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9",
"build.txt": "00d322501e52ed59d4a36d1dde50a8cc15c6643f8af8a786da522ebe11308f6c",
"calculated.json": "16f6398a752c780781ad7d8a3133afbeb3bbc0776beadb7341d10ca2923ff58e",
"dossier-calculated.json": "d9f6b225930dbc0652593d67119bf06190e39dc46e73328ddb8d41a3d487fb87",
"dossier-missing.json": "cd8f122e98c62e6170676594bd413644323af6ed6d44ee2613bd5449ba67f636",
"download.html": "65ad3a808e97404fb0690a587ecf9a09cd58ced4d640956615d0aaf48e58d941",
"frontend.txt": "baae440ead1ff0649087f86431e4751db91d21f7639c40e1073e8b4fb6247dd0",
"index.html": "9af7b69c19ca2fb213988ace8eb927008cb0bea73e267f16dee363fcdbcb0f12",
"Lei-34-2007-BR52.pdf-page17.png": "55de382892c9ec9c9344aa8a8dc195abf0cffd41535a36bafadf1868f80614c0",
"missing.json": "bd9a8feca32ac0eb36abbc8c81b8eb898856bf9a14fe4bb2fd9ead35c87583d1",
"preparation.html": "d1c159d8747b25233f4b2f2cb729d2f9c56c117e9a9cbd9f4253d6a3b907fb46",
"recovered-calculated.html": "d1c159d8747b25233f4b2f2cb729d2f9c56c117e9a9cbd9f4253d6a3b907fb46",
"recovered-calculated.json": "7dc6602a5751822d556181d92a4517d631d1689b8d7073f9b14a206dfb22f57d",
"recovered-missing.html": "4f5c9d02bf4feb8413d452aaa4b5bbffead43bf1e8581e6074ebee39d17caf09",
"recovered-missing.json": "86087de983c1cb43406fb605b6ff10958b22e543206dac281f64656b7621f9cb",
"regulation.txt": "c680dfb73eeb638cf85d06fb0fe19550487de2994ce76f60077ef4baa88e3238",
"types.txt": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"ui-colecta.png": "2de2150e0a13c97a6e9ef641da5f426aa6f73a4e2e583dcc684c99de4b247b71",
"ui-missing.png": "33d0f91aa83e03aaf7667c6540aa73cd5d26852101b1109180dfa4c8fb7c1728",
"ui-proof.json": "491adb430be266abe0e8c95a311fa187d186a6d2beba2658f1431b6e61f58bed",
"ui.txt": "9bd1f1515b85823da48fc2a6b2b513b37b421e26764367f08b3dea23eb77e151"
},
"not_claimed": [
"Final annual payable/recoverable balance,annual withholding/payment/credit reconciliation reserved toL8",
"Reduced or benefit rates,autonomous taxes,capital gains61-A or other special cases",
"Fiscal cent rounding or official M20/M22 transcription/submission",
"Full L6 completion or installation of b8d45796/colecta candidate"
],
"prepared_joint_delivery": "b8d45796 taxable base plus this colecta increment over installed5e02c23a;bundle/manifest aftercommit. No push/installation.",
"active_changes": false,
"schema_API_config_permissions_dependencies_delta": false,
"L6_complete": false,
"L8_implemented": false,
"L5_questions": "Only dependent cases blocked;ten questions unchanged"
}
@@ -0,0 +1,145 @@
{
"status": "three_compatible_L6_sets_QA_prepared_not_installed",
"installed_baseline": "2f684e59846187f3fb8a338d9d6f6a08cadb4d0d",
"branch": "codex/irpc-l6-compatible-sets-qa-20261025",
"QA_workspace": "C:\\laragon\\www\\portal-investidor-irpc-l6-sets-qa-20261025",
"scope": "Ordinary documented rules, annual MZN periods ending2026, resident general or attributable EP result; no assumed fiscal rounding or final settlement.",
"demonstrated": {
"accounting_profit": "6240MZN",
"installed_addbacks": "220MZN",
"new_effects": {
"third_party_tax": 250,
"patrimonial_gain": 200,
"patrimonial_cost": -50,
"timing": 100,
"depreciation_difference": 20
},
"taxable_profit": "6980MZN",
"previous_losses_explicit_deduction": "2300MZN",
"taxable_base": "4680MZN",
"general_rate": "32%",
"colecta": "1497.60MZN",
"payable": null,
"recoverable": null,
"current_loss_case": "3820MZN loss;known zero base/colecta;no official carryforward",
"EP_case": "2025-07-01 to2026-06-30,12 monthly periods"
},
"new_proofs": {
"frontend_tests": 14,
"private_API_tests": 1,
"private_API_assertions": 78,
"database": "127.0.0.1:55441/simulator_fiscal_delta_20261021_test;DatabaseTransactions rollback",
"routes_actions_generated": true,
"typescript": "passed",
"build": "passed",
"actual_UI": "field editing;unsupported asset rate;missing interest;save/recovery;download;current loss",
"dossier": "from API-recovered calculated/missing/loss/EP JSON"
},
"preservation": {
"installed4_fixture_matches_accepted_sha256": true,
"versions1_to4_keys_unchanged_without_optin": true,
"other_runtime_changes": false,
"schema_API_config_permissions_dependencies_changed": false,
"L3_ISPC_FX_L5_accepted_proofs": "reused;not repeated",
"L5_ten_questions": "unchanged,only dependent cases blocked",
"active_data_changed": false
},
"runtime_delta": [
{
"path": "resources/js/components/simulation-irpc-normal.tsx",
"sha256_LF": "e33b3839aac53a1b7ca2a76eda0ec4c54015a6d1c75e386aaeb5d342943f5965"
},
{
"path": "resources/js/components/simulation-irpc-schedules.tsx",
"sha256_LF": "eebd6d9e4100920a5ebf91b800537ffe301fd6a994b86a3b080d673f4a9c9a42"
},
{
"path": "resources/js/lib/irpc-normal-assessment.ts",
"sha256_LF": "1dc6adc0835af033ef296d12cdc1e9ef354b2f54cd36e2349b2df66e369c1ee3"
},
{
"path": "resources/js/lib/irpc-normal-base.ts",
"sha256_LF": "85fa1eb78ce2b8a144a9f0dcda93b542083a7ff119cbc43f4334c87284bfd312"
},
{
"path": "resources/js/lib/irpc-normal-forms.ts",
"sha256_LF": "4e986addb9f2d74e7a80345f8f1e4d8e0b2f562c867fa6eee84880d9f72a3649"
},
{
"path": "resources/js/lib/irpc-normal-profit.ts",
"sha256_LF": "d5a2b52f7deb4cf35651188e04f103fcba950a007e3aa4de5ba7017e686614df"
},
{
"path": "resources/js/lib/irpc-normal-schedules.ts",
"sha256_LF": "b0045fd2c072998ebb290c2a8332c26d05a1f5f746b3beb1805508147497cac8"
},
{
"path": "resources/js/lib/irpc-normal.ts",
"sha256_LF": "62d20bbcebb523f77fde950f623933a13f03283238665cf22fec9390f7ba9333"
}
],
"source_exemplar_added": {
"document": "Decreto72/2013,BR102,2suplemento,23December2013",
"official_issue": "https://www.inm.gov.mz/pt-br/content/conselho-de-ministros-suplemento-n%C2%BA-2-de-231213-pag-1074-3-24-br-n%C2%BA-102-boletim-da-rep%C3%BAblica",
"gazette_copy": "https://www.lexlink.eu/FileGet.aspx?FileId=1152468",
"local_original": "C:\\laragon\\www\\portal-investidor-irpc-l6-sets-qa-20261025\\outputs\\irpc-l6-sets\\decreto-72-2013.pdf",
"sha256": "922ef67cb0c1111405c3c0a092d8c302a74fba8a34d627b6e9e13223612e0659",
"visual_pages": [
1,
2,
17
],
"rate_table": "tableII/group3/items9=25%,9.1=20%,Gazettepage1074(21)/PDF17",
"consultation": "preserved in QA proof archive;no publication/import into active library",
"legal_application": "articles3–7,ordinary annual constant method,tableI precedence;other categories/methods visibly unsupported",
"scan_status": "not asserted"
},
"existing_form_sources": {
"M22": "4b61bd83d1fbcfd3b7b5c5523cea5923f7d0f65dc4c004eff58e5db38f763c88;three accepted page images reused",
"M20_workbook": "1ceca6f4c6d77853c1b2b445876599b42093175fa89eecf40590180956d83a9e;existing structure inventory reused;no third-party sample values or cached formulas",
"concrete_conflict": "M20A.1 refers result to M22 field201/Q8;PDF M22 uses200/Q10;automatic transfer blocked only for that mapping"
},
"remaining": "Concrete cases enumerated in same matrix/manual section25/10;cost limits/provisions/prior-year timing;remaining asset categories/methods;short periods/annual foreign-currency reconciliation;fractional fiscal representation;remaining result/form mapping. L7 benefits/special cases and L8 settlement remain own scopes.",
"L6_complete": false,
"installation_performed": false,
"next_delivery": "Joint Git bundle from installed2f684e59;fresh authenticated destination backup/restore and delta required only at installation,not performed in QA.",
"proof_sha256": {
"api.txt": "3c3142dd55febf17c5e16e3cfabf2266759be7290b8d5ac92823e0f71cbffa6a",
"build-exit.txt": "13bf7b3039c63bf5a50491fa3cfd8eb4e699d1ba1436315aef9cbe5711530354",
"build.txt": "ba955cab87896b78652787f188c092e79108fc0e5289f237be1ddf21d73dbbf3",
"calculated.json": "109426b86ae7c14463699b1d197064617f124ecec0c55085d9e81aeddc505a5a",
"decreto-72-2013.pdf": "922ef67cb0c1111405c3c0a092d8c302a74fba8a34d627b6e9e13223612e0659",
"decreto-72-2013.txt": "bbbf05f109201a6d31e153046576a088e6c0cca97ada07833d0499698d0afcfa",
"decreto-72-page1.png": "bb681e5df24a13d8484a521ae58e480c9dd23b4fd09de3ff11d5287ddd26a4f9",
"decreto-72-page17.png": "bb3468fde9f95576d8d6392a4c906ae904941ad35843c472d3671492c24f0945",
"decreto-72-page2.png": "9bf0f11a4724b079b494f640e905eee5bd278b729091e67aa03d0bfe71f5c273",
"dossier-calculated.json": "e9487c0325db125f8a0ff5266d137141916f329283857f2efc1f64732353454b",
"dossier-ep.json": "57b55c94118bd9767f06b4cd0673bcecbd8882ca1ec8681c393216a0fc3a7ac7",
"dossier-loss.json": "28eb77522fea39947a6cffd7419c24cd37795f361559050377f79d8b9f1cd1fb",
"dossier-missing.json": "bda0394cb059a1800a5dcf4728ba58a5b3ee975a87a7a938ebf5673e0ace1587",
"dossier.mjs": "9ab7bc1ad64ab8f04936068df0f0555749048d9edd9f2d48e8246542204257dc",
"download.html": "d084c44b3b527c9ed5f3f2c2e7ccd88229b0a19b9956e153e63b14618020acdb",
"ep.json": "9ae0b179c100ea5e642ce2ed9362b74e60bf1040bf6e7227592db84220babb23",
"frontend.txt": "92d096de8d364f04339178feeb6e77cf247cbc4974974bce56ba7728401bbdc5",
"index.html": "09941968500d2910121bdcb0029e326fc6d44bb025b01766654289a28caa62fa",
"loss.json": "8a0e85205db146a02fc9e06a2667cdce5a00e48ed8a7e7568a50d361e40671b2",
"missing.json": "1f52b06286d0724fe27d24ab91386732c873fc65064521c270faf357ac193135",
"preparation.html": "7ac15855048512bec05690170368df1ee4d4879f224a9d6c56749c3500d2d9c0",
"qa.tsx": "e2f5dc5e9a9c142b3fe65889c0cefcbfb03fb3b46957437af1108dbf20569647",
"recovered-calculated.html": "7ac15855048512bec05690170368df1ee4d4879f224a9d6c56749c3500d2d9c0",
"recovered-calculated.json": "db98c66ba9cf46a67ead4267d7b3d25b08275a4d8a11bbd316f4bec2b77644af",
"recovered-ep.html": "47df28ba65d7825192ec7fd3fad61998f378829046df2c1b3ab74b7fb32980ef",
"recovered-ep.json": "56f12435276c4cf9604f10e8c53bba61f1eb84dcaa5b911ac06242112d740764",
"recovered-loss.html": "a3f70ddcfe4a10a38110690b7583f1c89be6427fe347a321e9a395db6214fc6a",
"recovered-loss.json": "fe280337741a5004c13c83a41f83ca87c98c07f815fc87b617a0d5c8dbd03573",
"recovered-missing.html": "8989a835f9145e94434f31c90c96c801219494019fbc6167f1c8272d08c6debc",
"recovered-missing.json": "a4a24bc80dd6352c0883a1a555de9cd32a71335bd07b4826526ebe311700766f",
"types.txt": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"ui-calculated.png": "1578772454a4e5902d3ac8f607dbcda3b3c3b7e23d0870bbe233da036f15ba5e",
"ui-missing.png": "72d48f81bc67bd9342c5078d81044290912afacd305980806c42cd96b038a614",
"ui-proof.json": "7bd7a522b4307d8f72fb04317106c3b7cc53763fe8923017ae0f63a510b9bb9e",
"ui.cjs": "207eea61db65ac778f26f35beecd18387d6126b75e1effcf3e33c1e26e957215",
"ui.txt": "9b120d22b3e2539e8862c5ce5a973cce4fc2632a16680e7f997020f4e2cd0196",
"vite.config.ts": "11a4a8f0bf0394f380e731cfb30cf4a0f3de3c6f3734653491e1aa26f57315f1"
}
}
@@ -0,0 +1,695 @@
{
"status": "installed_L6_cost_limits_provisions_timing",
"installed": {
"status": "installed",
"commit": "043dd35d8ee247123b3a32f1fc10fd2ede81e9f4",
"release": "/var/www/investmoz-homologacao/releases/043dd35d8ee247123b3a32f1fc10fd2ede81e9f4-917b3c47",
"previous_release": "/var/www/investmoz-homologacao/releases/a2de725901c308fb2ac2bc3d72181ab50ef46b7a-145e8f25",
"database_migrations": 0,
"content_imports": 0
},
"previous_baseline": "a2de725901c308fb2ac2bc3d72181ab50ef46b7a",
"backup": {
"stage": "/var/backups/investmoz-irpc-l6-costs-delivery-20261026/backup",
"created_at": "2026-10-26T06:35:29Z",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "bf7f4e6ad9e18ef479ae46a08ec9c072047240655331e437da14ae8c39e8bd0b",
"files_sha256": "4046d8eff093201371a9e5fbdd14a6d5fe805d7f72cf30e9d6132e5804da1788",
"restore_verified": false
},
"restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "irpc_l5_restore_20261025",
"port": 55441,
"source_dump_sha256": "bf7f4e6ad9e18ef479ae46a08ec9c072047240655331e437da14ae8c39e8bd0b",
"active_database_writes": 0
},
"preservation": {
"previous_release_preserved": "/var/www/investmoz-homologacao/releases/a2de725901c308fb2ac2bc3d72181ab50ef46b7a-145e8f25",
"installed": {
"status": "installed",
"commit": "043dd35d8ee247123b3a32f1fc10fd2ede81e9f4",
"release": "/var/www/investmoz-homologacao/releases/043dd35d8ee247123b3a32f1fc10fd2ede81e9f4-917b3c47",
"previous_release": "/var/www/investmoz-homologacao/releases/a2de725901c308fb2ac2bc3d72181ab50ef46b7a-145e8f25",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 6,
"preserved_L3_ISPC_FX_runtime_files_verified": 42,
"documentary_files_verified": 31,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "5226f818ead8e964983de752574a1647"
},
"after": {
"rows": 106,
"checksum": "82f4ca900546cfbd7c046c9e2a681522"
}
},
"sessions": {
"before": {
"rows": 35,
"checksum": "077762df7046fb9e6ce60a7470f3b61f"
},
"after": {
"rows": 38,
"checksum": "b90979f4d72922226d368ab21ffe162a"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"schema_permissions": {
"schema_sha256": "5045b3e51d2185377aa3d9ac7fa07a44fad3ec620cdfa83ffe31c8884ee1601d",
"roles_grants_sha256": "1530c33cb016e67bfdc64891ddfce7f185b13b56b2cd87c012871a685e118109",
"filesystem_permissions": {
".env": {
"mode": 416,
"uid": 1001,
"gid": 33
},
"storage": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"storage/app": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"bootstrap/cache": {
"mode": 1528,
"uid": 1001,
"gid": 33
}
},
"comparison_identity": "postgres;catalogue read only;no passwords collected",
"unchanged": true
},
"operational_delta": {
"status": "operational_delta_reconciled",
"comparison_identity": "postgres before/after;isolated restored baseline;no RLS visibility inference",
"cache": "queue:restart value/expiry and request-throttle counter/timer pair;no deleted cache rows",
"sessions": "anonymous sessions created by exact delivery verification user-agent",
"delta": {
"cache": {
"before_rows": 106,
"after_rows": 106,
"changes": [
{
"key_sha256": "dbb99b7e17f5b4b9bb7a8bdf9350d9b2ae368aaa4bc44593a2522d87617d8461",
"kind": "updated",
"fields": [
"expiration"
],
"key_pattern": "investemoz-cache-{hash}",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true
},
{
"key_sha256": "c1c7bc86ef3255c103a0be6aeb651b824eb07259e993cc5daf3665c1a6afff2d",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-{hash}:timer",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true
},
{
"key_sha256": "7f7dd83f47f5bf404d55e6e9f1367948721579970b195680645e356031a070ff",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-illuminate:queue:restart",
"is_queue_restart_key": true,
"expiration_unchanged": false,
"throttle_timer_pair": false
}
]
},
"sessions": {
"before_rows": 35,
"after_rows": 38,
"changes": [
{
"key_sha256": "29cd831ee5192663271b023bde8978c87f54e6779a76887fbdbb7d8b52898085",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
},
{
"key_sha256": "5818b9263233545023da019e37aa9c88c4f02128d540df592d1eb4cb075b406d",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
},
{
"key_sha256": "e30d5aad1397f2c086ee5dcd82a279b9a307415336c02059ff9513ef5251f262",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
}
]
}
},
"business_tables_to_confirm_separately": 172,
"active_data_writes_by_comparison": 0,
"restore_network": "none"
},
"public_verification": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "043dd35d8ee247123b3a32f1fc10fd2ede81e9f4",
"branch": "main",
"built_at": "2026-10-26T06:40:10.666340+00:00",
"manifest_sha256": "d91dd39d49e9e0251c76c811ca6a0798b7cf544e3e807735574ba51691afac9e"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"Iniciar custos com limites, provisões e periodização": [
"assets/services-DkQ7aTGY.js"
],
"Acrescentar custo, provisão ou periodização": [
"assets/services-DkQ7aTGY.js"
],
"Publicidade — limite único anual": [
"assets/services-DkQ7aTGY.js"
],
"Créditos — limites anual e acumulado": [
"assets/services-DkQ7aTGY.js",
"assets/project-dossier-EB1GFWid.js"
],
"Conferir correspondência dos temas com os mapas": [
"assets/services-DkQ7aTGY.js"
],
"Aplicar correspondências conferidas dos mapas": [
"assets/services-DkQ7aTGY.js"
],
"Iniciar mapas complementares L6": [
"assets/services-DkQ7aTGY.js"
],
"Saldo final — âmbito L8": [
"assets/project-dossier-EB1GFWid.js"
],
"Calcular e guardar apuramento trimestral ISPC": [
"assets/services-DkQ7aTGY.js"
],
"Calcular e guardar restituição E": [
"assets/services-DkQ7aTGY.js"
],
"Reutilizar selecção cambial": [
"assets/services-DkQ7aTGY.js"
]
},
"assets": [
{
"file": "assets/project-dossier-document-DDnA8FXy.js",
"status": 200,
"sha256": "47280845a07c33b1d2dd3c8f770a9f0f213476e99ad8f927f812c75a66a855df"
},
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
},
{
"file": "assets/services-DkQ7aTGY.js",
"status": 200,
"sha256": "8782f7a7758e8f25803737ec5e072ba4888ad946d54611ce501364608c24a633"
},
{
"file": "assets/project-dossier-EB1GFWid.js",
"status": 200,
"sha256": "8328b2676e8da123e8126ed718895a0ddaaabed30a80a7cef902be911ef8bffd"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-Dz8nCVw7.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"runtime_delta": [
{
"path": "resources/js/components/simulation-irpc-costs.tsx",
"sha256_LF": "c4156916835daf0f33addf89dfedd40c31b8dc3297112cd98beac33422af274d"
},
{
"path": "resources/js/components/simulation-irpc-normal.tsx",
"sha256_LF": "8001d2e71b58fa07c77f74da2c2b51566659a5d784d9e044133192c66518cb15"
},
{
"path": "resources/js/lib/irpc-normal-base.ts",
"sha256_LF": "fef34966db603633eb03c9830ad3c09e7cd0ffaed49720dbab60f9dc0fd8a8fb"
},
{
"path": "resources/js/lib/irpc-normal-costs.ts",
"sha256_LF": "29aeb16bf8fe60bb322b5449fb3efd84b5108b06112b91be5fc76d8e897d8860"
},
{
"path": "resources/js/lib/irpc-normal-profit.ts",
"sha256_LF": "26810caea4e7d177b385e36452147d84602a7b23cb5f8f23a88488d1bfaf619f"
},
{
"path": "resources/js/lib/irpc-normal.ts",
"sha256_LF": "98adf3e1c84938d27535f65afa24edc0650bfb12a1f9b32352b0d4d71c2c2035"
}
],
"protected_runtime": [
{
"path": "resources/js/components/simulation-irpc-schedules.tsx",
"sha256": "eebd6d9e4100920a5ebf91b800537ffe301fd6a994b86a3b080d673f4a9c9a42"
},
{
"path": "resources/js/lib/irpc-normal-assessment.ts",
"sha256": "1dc6adc0835af033ef296d12cdc1e9ef354b2f54cd36e2349b2df66e369c1ee3"
},
{
"path": "resources/js/lib/irpc-normal-forms.ts",
"sha256": "4e986addb9f2d74e7a80345f8f1e4d8e0b2f562c867fa6eee84880d9f72a3649"
},
{
"path": "resources/js/lib/irpc-normal-schedules.ts",
"sha256": "b0045fd2c072998ebb290c2a8332c26d05a1f5f746b3beb1805508147497cac8"
},
{
"path": "resources/js/components/simulation-irpc-taxable-base.tsx",
"sha256": "e4fe9f66d35d24aa68fd87de6a5a6a0e901706b270c18962fd0c7ab00f9abd93"
},
{
"path": "resources/js/components/simulation-irpc-assessment.tsx",
"sha256": "7174cc0160005a0c332ea40f02ba8a6d57985081b5ab45177ccd6e721bceea54"
},
{
"path": "resources/js/components/acquisition-beverage-restitution.tsx",
"sha256": "6f44897b8b12569314551df0022c26da57a165634087942a724293e66837558d"
},
{
"path": "resources/js/components/fiscal-calculation-gaps.tsx",
"sha256": "1dab6ceb73756d4e023096b3b2ba767aaa843ff6cc69046ea630ab449a00b0dd"
},
{
"path": "resources/js/components/fiscal-l3-preparation.tsx",
"sha256": "e84a7b1ccadaa1b5bd78d778a3287f96ccaf530855eef404786cd7aa3d321b73"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256": "c206d4cfe575d6ba007aa2b425b5f898efa97e4162b8710e358b6ecfd9458542"
},
{
"path": "resources/js/components/simulation-operations.tsx",
"sha256": "a7e55972fa790063dcf11945055de2af46a77db9e509900af22ede7ec47bb4cf"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256": "b0ef55e0917bdb79f14b53ba9e95d73c08153befeb7d4ce73f81e6fb13992225"
},
{
"path": "resources/js/lib/iva-beverage-allocation.ts",
"sha256": "32968d198c7fe0c53ca89641c22d5749be6636be2c79127b867e4e3afd0dd40d"
},
{
"path": "resources/js/lib/iva-beverage-restitution.ts",
"sha256": "5c650cbd9469d5f99001f56fc4ff99ac973eb368036d4e96c6d171f1b220bd9e"
},
{
"path": "resources/js/lib/iva-calculation-gaps.ts",
"sha256": "2e7d84a0c196bd5b56fd67cc1a389d43d5041894184e675680a4de3cd10b31a2"
},
{
"path": "resources/js/lib/iva-operations.ts",
"sha256": "ec37b949f1233c5f5c14a87450c421ed29fabf1ed5b73fb32564564a2bc31f54"
},
{
"path": "resources/js/lib/l3-form-preparation.ts",
"sha256": "fc47f5fa5ec1420fbd847d0d081f00d99ebbb524164eef785b20877e0562f704"
},
{
"path": "resources/js/lib/ispc-residuals.ts",
"sha256": "40d5751c06c7c155ab4b7a17ee2d1653da2fbbf075807fbb8561cdbe19820955"
},
{
"path": "resources/js/components/simulation-ispc-residuals.tsx",
"sha256": "a9219d6f41ccbd0ce45659d4f6aa0fa1c169a685840f5cb1e18daeca377d5e18"
},
{
"path": "resources/js/lib/ispc-eligibility.ts",
"sha256": "44675c5efacdc1ae19505667611ba3b522d3043cebacc8754597c3a68ca89d25"
},
{
"path": "resources/js/components/simulation-ispc-quarter.tsx",
"sha256": "2c2555309b32d4261f14e7164f39314c9188129c2990357fc54090a2468dd2b4"
},
{
"path": "resources/js/components/simulation-ispc-withholding.tsx",
"sha256": "e0445d015b72859e48726959aa52686f79b1cf5c2ade29751efa83257068b878"
},
{
"path": "resources/js/lib/ispc-quarter.ts",
"sha256": "f66bd52e9cdfe1ddaa6b00a931465862b3d890b9be216b7a056740f027f24129"
},
{
"path": "resources/js/lib/ispc-withholding.ts",
"sha256": "6c31b240299edd3262efa28f7f3d5aee21123f94e30ef4ab90e26c35777cb6e4"
},
{
"path": "resources/js/components/simulation-ispc-eligibility.tsx",
"sha256": "f48dd4a8f87a994eda0447f81a463589905e5873b2e1044debac9d10825a880c"
},
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256": "cce283b1d0a07fb383fcb527225f4dd5bec829010a662cbaae1d60e595221977"
},
{
"path": "resources/js/lib/iva-modelo-a.ts",
"sha256": "c641619a05613c1620385baad0e9ffbf810dd970aafb30e12b3a7f9a3bf11846"
},
{
"path": "resources/js/lib/iva-fx-selection.ts",
"sha256": "9aa07ad443bc777b80510a3b5bd6aff9ddb9814d2450f3c690e531e74d71d998"
},
{
"path": "resources/js/components/simulation-fx-selection.tsx",
"sha256": "39bb6d87d404745b0b66349bc11626545a3672ae27321ce9b4658416592059bf"
},
{
"path": "resources/js/lib/business-financial-plan.ts",
"sha256": "c20274722d1ffcd0360f041a6cacb5d868fe0621cb27a1aca6e06826612c3ebb"
},
{
"path": "resources/js/lib/iva-currency-events.ts",
"sha256": "cc9f2045d302d7987310da4006cc250fc5c99a27397918d166d649bfc32fab08"
},
{
"path": "resources/js/lib/irpc-fx.ts",
"sha256": "5c4a7a477429f8d775acf6db3e117008468f5554e5731dec81f60fbb75e948fb"
},
{
"path": "resources/js/lib/irpc-withholdings.ts",
"sha256": "8e5f3c035ce5e4d6c3fc82f933439ab580fa5519492f9c4d32cfb71b77b54803"
},
{
"path": "resources/js/components/simulation-irpc-withholdings.tsx",
"sha256": "751af4fab346659bc5ccb08b8a2169769af7521ea0035050af32b41ea7f5aa76"
},
{
"path": "resources/js/lib/irpc-interest.ts",
"sha256": "f8e6390b3b2c58c296f7e3fd14576e06ae248bc0cabce1a666b7094611f2a7dd"
},
{
"path": "resources/js/lib/irpc-mrfta.ts",
"sha256": "76dcce8954f68b081d500be61de9c5b146a452a3eb578a0b78776ba9e1f8051c"
},
{
"path": "resources/js/lib/irpc-mrfta-cases.ts",
"sha256": "4266746076ab3f70312fd042351e24dd2f136c4f3e8a277b57dd97849a9f1862"
},
{
"path": "resources/js/components/simulation-irpc-mrfta.tsx",
"sha256": "913d1bb4ac0fc59763cf5d27bc637f6a713b2050c4463748db554af4be451538"
},
{
"path": "resources/js/lib/financial-fiscal-bridge.ts",
"sha256": "5a30c501653b16b5fedcb12631ce81fcce4fe473aa542e94374986b3c50f2d33"
},
{
"path": "resources/js/components/simulation-form.tsx",
"sha256": "85b024a7f45ceb52efd6ff1f21d0eab1fd8fcf1ab59e4b5302c08685235c472a"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256": "a0909bbfcdf7e8542b010faa104fcb918e86ae38ddf096082d4d5be98d31b2b9"
},
{
"path": "resources/js/lib/project-dossier-report.ts",
"sha256": "5207a2ffeb208cd5ace6713038cee85208020ee618194dca7114e94fc3200b6c"
}
],
"originals": [
{
"path": "docs/investmoz/simulations/source-archive/AT-Comunicado-9-2026-ISPC.pdf",
"sha256": "106f8a9ce9255c03549c70bf07fe999d32e6e55302d009b509862aa74ccb4973"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-30-ISPC.pdf",
"sha256": "6802edd06b6ff638a0b851a3ec7ecf69af8f07840faa47446becad67d35d445c"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-B-Geral.pdf",
"sha256": "bd977c7c59d4d98befd92e2c566b1bf168cb1343bb519f51b41a3807f431fc57"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-MRFTA-19-39.pdf",
"sha256": "8ea62c53066b482f87078a7a7b1ecf15ca98a12a122e8d7abca63acfc993186b"
},
{
"path": "docs/investmoz/simulations/source-archive/BM-Mercado-Monetario-MAIBOR-20261025.html",
"sha256": "00e8a7e0d3a1db4ca3beb56d5361b2084a0f1684f3d40fc1c203702a2190e063"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf",
"sha256": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-89-I-Serie-2017-06-08.pdf",
"sha256": "11f0cab15eb6e51010952203ffa24fdc533a24fd642e19525fe4f46b17a1f5e5"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-95-I-Suplemento-2025-05-21.pdf",
"sha256": "e0e682e2c027c3cd9c1d46a73a3f48bc5f6bdbf05667fd97314d7a3f6a456358"
},
{
"path": "docs/investmoz/simulations/source-archive/BR252-I-Serie-2022-Lei20-PESOE.pdf",
"sha256": "1159fd3ce1ba5581671796d083534da48bd3c5578298819e896f1c2a8026318d"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-22-2021-BR70.pdf",
"sha256": "a8fac38dcfe08f9c7a8e46254cff10e1ec82fc4f7a8d88ad6e4fe7d91ffc21a5"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-27-2026-BR123.pdf",
"sha256": "26249c3fa58f149c81de36e99d1aac2819a4771379d9e8833159660dabf539bb"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-29-1998-BR22-5-suplemento.pdf",
"sha256": "6242cbe675faadf085f43f95ec8c7e8868aafe67c3b2ab2bb010992288f954f8"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-3-2011-BR-11-I-mineiros.pdf",
"sha256": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-37-2023-BR124.pdf",
"sha256": "7e680b191481faa0e2e9057fa5053587eb2a29d1d8c819e0eb9f02814255a04c"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-9-2008-BR16.pdf",
"sha256": "96fccdecbfdc11c9eafb90fbc6c7bc259f88bbd4c7507d1ac3af1fa03f960697"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf",
"sha256": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-14-1992-BR42.pdf",
"sha256": "089fff7423e99a70a230a73ca379e4ea3a91d124703f91016e57ff82794b9e56"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-BR251-exemplar-MCNet5.pdf",
"sha256": "14eb34f0af91a8f5cb1770c7b52d6ff839c6818302d1ed96d79afbfb9fe999d4"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-IPP-BR250-Parlamento.pdf",
"sha256": "978cd22403ffd336a631704ecd7a5bbd814a427c815b9acdaca5515591dd9e2a"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2013-BR76.pdf",
"sha256": "bba96d645cc935ffc3d1a79b9f0f73ac1c693d6459c2ad41f56cd2841accae76"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2017-IRPS-BR-OCAM.pdf",
"sha256": "c3a0186cb9ad090d7a9533006295dc9bb6a62ad0d6150173cbd49dba4ee4b52d"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-2-2011-BR-1-4-suplemento-MCNet.pdf",
"sha256": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-20-2009-BR36-AT-exemplar19.pdf",
"sha256": "fc1c8144db42960cbf73e717e095896f511ece0f907f58f78819b27d6917a7ee"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf",
"sha256": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-34-2007-BR52.pdf",
"sha256": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-1994-BR37-3-suplemento.pdf",
"sha256": "210df9db8980d0a5690cd187a6eeec7e37a900d743e39062c16f4e0d12215c7e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-2012-BR3.pdf",
"sha256": "b8845cef41dcbd9ba50c43dbfa743a56030dd3d348242a107e1ae30279eec121"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-7-1991-Partidos-IFES.pdf",
"sha256": "6b783a0bb3330688ef10660a58060d9724aa2da6a873d234fe902f0eaaeda42d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-CDT-1992.pdf",
"sha256": "d504e1024b28aee5c6acf4592acb96ec9c915a8414f67a61ab6984d6acf9df9d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-Protocolo-2009.pdf",
"sha256": "f353773dcf41f09f4daa6cf5ba5a5f7994f3e02615867c2dcffc61c3d901bf9b"
}
],
"pipeline_checks": [
"OK (1 test, 3106 assertions)",
"built in 31.63s",
"OK (59 tests, 317 assertions)",
"# tests 942",
"# pass 942",
"# fail 0"
],
"accepted_QA_proofs": {
"new_frontend_tests": 22,
"private_API_tests": 1,
"private_API_assertions": 83,
"database": "127.0.0.1:55441/simulator_fiscal_delta_20261021_test;DatabaseTransactions rollback",
"routes_actions": "generated by existing guarded procedure",
"typescript": "passed",
"build": "passed",
"UI": "actual component;fieldediting;missingconditions;reviewed topic reconciliation;sharedcaps;local roundtrip;download;mandatory work method",
"dossier": "generated from5 API recovered cases",
"accepted_functional_suites": "reused,not manually repeated"
},
"accepted_proofs_reused": true,
"manually_repeated_accepted_suites": false,
"sequence": {
"taxable_profit": "6730MZN simulated",
"taxable_base": "4430MZN simulated",
"normal_colecta": "1417.60MZN simulated,32%",
"final_payable": null,
"final_recoverable": null,
"final_balance_scope": "L8"
},
"remaining_L6": [
{
"pending_case_or_mapping": "Combinação36h/i com36(4)",
"resolution_condition": "Corresponder a regra de articulação dos trechos aplicáveis ou esclarecer comAT o exemplo combustível100/comprovado80/passageiro sem excepção;sem somar ou repartir correcções por presunção.",
"blocking_scope": "Apenas o caso/campo dependente."
},
{
"pending_case_or_mapping": "Quota36h automática e amortizações restantes",
"resolution_condition": "Reconciliar tabela/método/entrada emuso/quotas contabilísticas e fiscais anteriores;prioridade seguinte deL6. A parcela36h documentada continua reutilizável nos casos independentes.",
"blocking_scope": "Apenas o caso/campo dependente."
},
{
"pending_case_or_mapping": "Campanhas plurianuais36-A e limite1%",
"resolution_condition": "Implementar a periodização por três exercícios e a sua articulação com36n; não tratar a campanha como publicidade ordinária.",
"blocking_scope": "Apenas o caso/campo dependente."
},
{
"pending_case_or_mapping": "Provisões reguladas28d e reforços financeiros28(3)",
"resolution_condition": "Corresponder a regra sectorial/supervisão ou o reforço financeiro e os saldos documentados; não usar os limites ordinários29 por aproximação.",
"blocking_scope": "Apenas o caso/campo dependente."
},
{
"pending_case_or_mapping": "Receita antecipada19(5) positiva e mudança autorizada19(6)",
"resolution_condition": "Corresponder os custos futuros/receita antecipada e o transporte entre exercícios ou a autorização da mudança de método;os casos zero conhecido/método mantido permanecem executáveis.",
"blocking_scope": "Apenas o caso/campo dependente."
},
{
"pending_case_or_mapping": "Outras periodizações,âmbitos eM20/M22",
"resolution_condition": "Tratar apenas os casos específicos18(6–10),períodos curtos/conversão anual,representação fiscal e campos ainda sem correspondência,com os parâmetros da edição/caso;divergência201/Q8 versus200/Q10 só afecta o transporte indicado.",
"blocking_scope": "Apenas o caso/campo dependente."
}
],
"matrix_row": "AUD-SIM-INT02",
"L6_complete": false,
"L7_L8_own_scopes": true,
"documentary_divergence": "Only result transfer M20A.1 field201/Q8 versus PDFM22 field200/Q10;independent calculations and mapped fields remain available",
"L5_ten_questions": "unchanged;only dependent cases blocked;no new research",
"documentation_runtime_changed": false,
"proof_files": {
"backup.txt": "a40060e515e6f9a23962654ceca1384a8c4f3a9c0b5cb84a2510a892172023f5",
"compact-dependencies.txt": "52b6b2b5abe937c37c975efa4c595eb0c38b5f23ea9d342786d859c63eb30ebf",
"installed-protected.txt": "d10547839935cf162a2f335aafc6d0e274b1623338fbb3c51031c27ac7fde19c",
"installed-public-delta.json": "00db424cb414c133adb85ae8bd1b3bfa7dc01b89b3bc055db71ab7b921651981",
"installed-public.txt": "ab32725cb73e82888851b46ffc2111e23a839567ccfafca945e6ee2d72f967f0",
"integration.txt": "cb09cb7139c730d7e178de518c4158347725009d4ccee9fc0252e8da7cd6bbc3",
"manifest-served.json": "d91dd39d49e9e0251c76c811ca6a0798b7cf544e3e807735574ba51691afac9e",
"operational-delta.txt": "8739d8f2cc58dd500e8fa393eb65ed15d24ba840e30f429e135d0ed8b49cd60f",
"preflight.txt": "289577c3c3a959ec01405e5bc3d929a0b7be1654579b4bfd32f82ab20c3f22c2",
"preparation.json": "603d3e4f9a40b91a717945160a11723ca3ddeb0e329af69179dba8276f0d4331",
"remaining-section.md": "253d4d1de16bbfe6253971507c3a2e3976ea9ce017930d9ba80eef8c1191955e",
"restore.txt": "bbdee061e3947b1e606c04ad17f83d5951cca0be0d33027a9e20be76121f38b7",
"schema-permissions-after.txt": "76b5a4d8af11e4898a205062766cfb7ab6ec0783200e77e60a1927aa1ca18597",
"schema-permissions-before.txt": "0ab7c964792acdd8917bce256c472e55e034b103500a58b49f020b5084823ed7",
"status-final.txt": "04413dcbffc95e88abd7f5201b5709ee7a3b9856ccf0c5824d9a4d036ea6d3b4",
"status1.txt": "177d1c66d844074ffb3db7b1392804f4de92ab804076671750362b9987a748e5",
"status2.txt": "04413dcbffc95e88abd7f5201b5709ee7a3b9856ccf0c5824d9a4d036ea6d3b4"
}
}
@@ -0,0 +1,869 @@
{
"status": "compatible_cost_limits_provisions_timing_QA_prepared_not_installed",
"installed_baseline": "a2de725901c308fb2ac2bc3d72181ab50ef46b7a",
"branch": "codex/irpc-l6-costs-provisions-timing-qa-20261026",
"QA_workspace": "C:\\laragon\\www\\portal-investidor-irpc-l6-costs-qa-20261026",
"version": "IRPC-normal-adjustments/6",
"scope": "AnnualMZN periods ending2026,ordinary documented cost/provision categories and prior-year/work timing;normal profit/base/colecta only;L7/L8 remain own scopes.",
"demonstrated_sequence": {
"accounting_profit": "6240MZN unchanged",
"previous_addbacks": "220MZN",
"previous_schedule_effect": "520MZN",
"new_cost_provision_prior_timing_adjustments": "350MZN",
"new_work_adjustment": "-600MZN",
"taxable_profit": "6730MZN",
"previous_loss_deduction": "2300MZN explicit,unchanged",
"taxable_base": "4430MZN",
"rate": "32%",
"colecta": "1417.60MZN",
"final_payable": null,
"final_recoverable": null,
"final_balance_scope": "L8"
},
"cases_recovered_by_private_API": {
"calculated": {
"profit": {
"numerator": "6730",
"denominator": "1"
},
"base": {
"numerator": "4430",
"denominator": "1"
},
"colecta": {
"numerator": "7088",
"denominator": "5"
},
"cost_effect": {
"numerator": "-250",
"denominator": "1"
},
"pending": [],
"payable": null,
"recoverable": null
},
"missing": {
"profit": null,
"base": null,
"colecta": null,
"cost_effect": {
"numerator": "-400",
"denominator": "1"
},
"pending": [
"QA-credit: Provisão fiscal anterior dos créditos em falta; não presumir zero."
],
"payable": null,
"recoverable": null
},
"additional": {
"profit": {
"numerator": "7050",
"denominator": "1"
},
"base": {
"numerator": "4750",
"denominator": "1"
},
"colecta": {
"numerator": "1520",
"denominator": "1"
},
"cost_effect": {
"numerator": "70",
"denominator": "1"
},
"pending": [],
"payable": null,
"recoverable": null
},
"limits": {
"profit": {
"numerator": "7210",
"denominator": "1"
},
"base": {
"numerator": "4910",
"denominator": "1"
},
"colecta": {
"numerator": "7856",
"denominator": "5"
},
"cost_effect": {
"numerator": "230",
"denominator": "1"
},
"pending": [],
"payable": null,
"recoverable": null
},
"closing": {
"profit": {
"numerator": "6530",
"denominator": "1"
},
"base": {
"numerator": "4230",
"denominator": "1"
},
"colecta": {
"numerator": "6768",
"denominator": "5"
},
"cost_effect": {
"numerator": "-450",
"denominator": "1"
},
"pending": [],
"payable": null,
"recoverable": null
}
},
"categories_demonstrated": {
"allowance": {
"case": "calculated",
"source_amount": {
"numerator": "100",
"denominator": "1"
},
"accepted": {
"numerator": "70",
"denominator": "1"
},
"adjustment": {
"numerator": "30",
"denominator": "1"
},
"limit": {
"numerator": "30",
"denominator": "1"
},
"rule_source": "CIRPC36(1)e",
"reason": "50% só da parcela não facturada a clientes nem tributada emIRPS; parcelas mutuamente exclusivas."
},
"representation": {
"case": "calculated",
"source_amount": {
"numerator": "50",
"denominator": "1"
},
"accepted": {
"numerator": "10",
"denominator": "1"
},
"adjustment": {
"numerator": "40",
"denominator": "1"
},
"limit": null,
"rule_source": "CIRPC36(1)f/36(3)",
"reason": "20% aceite;80% acrescido. Eventual tributação autónoma não calculada, âmbitoL7."
},
"advertising": {
"case": "calculated",
"source_amount": {
"numerator": "80",
"denominator": "1"
},
"accepted": {
"numerator": "80",
"denominator": "1"
},
"adjustment": {
"numerator": "0",
"denominator": "1"
},
"limit": {
"numerator": "120",
"denominator": "1"
},
"rule_source": "CIRPC36(1)n,Lei20/2009",
"reason": "Limite único anual1% das vendas normais; repartição aritmética proporcional entre parcelas para a simulação, sem ordem fiscal obrigatória."
},
"credit": {
"case": "calculated",
"source_amount": {
"numerator": "200",
"denominator": "1"
},
"accepted": {
"numerator": "50",
"denominator": "1"
},
"adjustment": {
"numerator": "150",
"denominator": "1"
},
"limit": {
"numerator": "50",
"denominator": "1"
},
"rule_source": "CIRPC28(1)a/29",
"reason": "29:1,5% anual,6% acumulado sobre créditos da actividade normal existentes no fim; saldo fiscal anterior conhecido. Repartição proporcional do limite único, sem consumir saldo oficial."
},
"stock": {
"case": "calculated",
"source_amount": {
"numerator": "60",
"denominator": "1"
},
"accepted": {
"numerator": "30",
"denominator": "1"
},
"adjustment": {
"numerator": "30",
"denominator": "1"
},
"limit": {
"numerator": "40",
"denominator": "1"
},
"rule_source": "CIRPC28(1)b",
"reason": "28b:limite das perdas efectivamente observadas, incluindo saldo anterior."
},
"litigation": {
"case": "calculated",
"source_amount": {
"numerator": "90",
"denominator": "1"
},
"accepted": {
"numerator": "80",
"denominator": "1"
},
"adjustment": {
"numerator": "10",
"denominator": "1"
},
"limit": {
"numerator": "100",
"denominator": "1"
},
"rule_source": "CIRPC28(1)c",
"reason": "28c:obrigações de processo judicial em curso que seriam custos dedutíveis, com saldo anterior reconciliado."
},
"fuel": {
"case": "calculated",
"source_amount": {
"numerator": "50",
"denominator": "1"
},
"accepted": {
"numerator": "40",
"denominator": "1"
},
"adjustment": {
"numerator": "10",
"denominator": "1"
},
"limit": null,
"rule_source": "CIRPC36(1)i/36(4)",
"reason": "36i: parcela ligada a activo próprio/locado e consumo normal comprovados."
},
"prior_cost": {
"case": "calculated",
"source_amount": {
"numerator": "80",
"denominator": "1"
},
"accepted": {
"numerator": "0",
"denominator": "1"
},
"adjustment": {
"numerator": "80",
"denominator": "1"
},
"limit": null,
"rule_source": "CIRPC18(2)",
"reason": "18(2):conhecido/previsível no encerramento anterior; excluído do actual, sem alterar declarações/históricos anteriores."
},
"work": {
"case": "calculated",
"source_amount": {
"numerator": "1000",
"denominator": "1"
},
"accepted": {
"numerator": "200",
"denominator": "1"
},
"adjustment": {
"numerator": "-600",
"denominator": "1"
},
"limit": {
"numerator": "400",
"denominator": "1"
},
"rule_source": "CIRPC19(1–6)",
"reason": "19:grau=incorrido/custo total;valores fiscais do exercício obtidos dos acumulados menos o já reconhecido. Proveito fiscal corrente:400.00 MZN;custo fiscal corrente:200.00 MZN;sem imposto/pagamento ou perda estimada presumidos."
},
"vehicle": {
"case": "additional",
"source_amount": {
"numerator": "100",
"denominator": "1"
},
"accepted": {
"numerator": "50",
"denominator": "1"
},
"adjustment": {
"numerator": "50",
"denominator": "1"
},
"limit": null,
"rule_source": "CIRPC36(4)",
"reason": "50% dos outros encargos de passageiros, excepto serviço público de transportes/locação na actividade normal; não inclui quotas, aluguer sem condutor ou combustível já discriminados."
},
"rental": {
"case": "additional",
"source_amount": {
"numerator": "100",
"denominator": "1"
},
"accepted": {
"numerator": "80",
"denominator": "1"
},
"adjustment": {
"numerator": "20",
"denominator": "1"
},
"limit": null,
"rule_source": "CIRPC36(1)h/36(4)",
"reason": "36h: reutiliza parcela de quota não aceite documentada; o portal não apura automaticamente essa quota de viatura."
},
"estimated_work_loss": {
"case": "additional",
"source_amount": {
"numerator": "50",
"denominator": "1"
},
"accepted": {
"numerator": "0",
"denominator": "1"
},
"adjustment": {
"numerator": "50",
"denominator": "1"
},
"limit": null,
"rule_source": "CIRPC36(1)m,Lei20/2009",
"reason": "36m:perda meramente estimada em obra em curso não dedutível; custo efectivo não confundido com estimativa."
},
"provision_reversal": {
"case": "additional",
"source_amount": {
"numerator": "50",
"denominator": "1"
},
"accepted": {
"numerator": "50",
"denominator": "1"
},
"adjustment": {
"numerator": "50",
"denominator": "1"
},
"limit": null,
"rule_source": "CIRPC28(2)",
"reason": "28(2):proveito da provisão antes deduzida; só acresce quando ainda não incluído no resultado."
},
"taxed_reversal": {
"case": "additional",
"source_amount": {
"numerator": "50",
"denominator": "1"
},
"accepted": {
"numerator": "50",
"denominator": "1"
},
"adjustment": {
"numerator": "-50",
"denominator": "1"
},
"limit": null,
"rule_source": "CIRPC17/28;sem dupla tributação da parcela comprovada",
"reason": "Parcela antes tributada comprovada; exclui a reversão contabilística sem duplicar dedução."
},
"prior_income": {
"case": "additional",
"source_amount": {
"numerator": "50",
"denominator": "1"
},
"accepted": {
"numerator": "0",
"denominator": "1"
},
"adjustment": {
"numerator": "-50",
"denominator": "1"
},
"limit": null,
"rule_source": "CIRPC18(2)",
"reason": "18(2):conhecido/previsível no encerramento anterior; excluído do actual, sem alterar declarações/históricos anteriores."
}
},
"verification": {
"new_frontend_tests": 22,
"private_API_tests": 1,
"private_API_assertions": 83,
"database": "127.0.0.1:55441/simulator_fiscal_delta_20261021_test;DatabaseTransactions rollback",
"routes_actions": "generated by existing guarded procedure",
"typescript": "passed",
"build": "passed",
"UI": "actual component;fieldediting;missingconditions;reviewed topic reconciliation;sharedcaps;local roundtrip;download;mandatory work method",
"dossier": "generated from5 API recovered cases",
"accepted_functional_suites": "reused,not manually repeated"
},
"preservation": {
"installed5_fixture_sha256": "109426b86ae7c14463699b1d197064617f124ecec0c55085d9e81aeddc505a5a",
"matches_accepted5_fixture": true,
"versions1_to5_current_keys": "unchanged without optional costs input",
"history": "old record preserved unchanged on new calculation;no rewriting prior returns",
"other_books": "preserved in snapshot roundtrip",
"source_plan": "reused,no re-entry of financial result/base/colecta",
"schema_API_config_permissions_dependencies_changed": false,
"active_data_changed": false,
"official_fiscal_balances_consumed": false,
"fractional_precision_delta": "Exact numerator comparison for current loss and loss-deduction cap;negative subcent result cannot be truncated to zero"
},
"runtime_delta_joint_from_a2de7259": [
{
"path": "resources/js/components/simulation-irpc-costs.tsx",
"sha256_LF": "c4156916835daf0f33addf89dfedd40c31b8dc3297112cd98beac33422af274d"
},
{
"path": "resources/js/components/simulation-irpc-normal.tsx",
"sha256_LF": "8001d2e71b58fa07c77f74da2c2b51566659a5d784d9e044133192c66518cb15"
},
{
"path": "resources/js/lib/irpc-normal-base.ts",
"sha256_LF": "fef34966db603633eb03c9830ad3c09e7cd0ffaed49720dbab60f9dc0fd8a8fb"
},
{
"path": "resources/js/lib/irpc-normal-costs.ts",
"sha256_LF": "29aeb16bf8fe60bb322b5449fb3efd84b5108b06112b91be5fc76d8e897d8860"
},
{
"path": "resources/js/lib/irpc-normal-profit.ts",
"sha256_LF": "26810caea4e7d177b385e36452147d84602a7b23cb5f8f23a88488d1bfaf619f"
},
{
"path": "resources/js/lib/irpc-normal.ts",
"sha256_LF": "98adf3e1c84938d27535f65afa24edc0650bfb12a1f9b32352b0d4d71c2c2035"
}
],
"protected_runtime": [
{
"path": "resources/js/components/simulation-irpc-schedules.tsx",
"sha256_LF": "eebd6d9e4100920a5ebf91b800537ffe301fd6a994b86a3b080d673f4a9c9a42"
},
{
"path": "resources/js/lib/irpc-normal-assessment.ts",
"sha256_LF": "1dc6adc0835af033ef296d12cdc1e9ef354b2f54cd36e2349b2df66e369c1ee3"
},
{
"path": "resources/js/lib/irpc-normal-forms.ts",
"sha256_LF": "4e986addb9f2d74e7a80345f8f1e4d8e0b2f562c867fa6eee84880d9f72a3649"
},
{
"path": "resources/js/lib/irpc-normal-schedules.ts",
"sha256_LF": "b0045fd2c072998ebb290c2a8332c26d05a1f5f746b3beb1805508147497cac8"
},
{
"path": "resources/js/components/simulation-irpc-taxable-base.tsx",
"sha256_LF": "e4fe9f66d35d24aa68fd87de6a5a6a0e901706b270c18962fd0c7ab00f9abd93"
},
{
"path": "resources/js/components/simulation-irpc-assessment.tsx",
"sha256_LF": "7174cc0160005a0c332ea40f02ba8a6d57985081b5ab45177ccd6e721bceea54"
},
{
"path": "resources/js/components/acquisition-beverage-restitution.tsx",
"sha256_LF": "6f44897b8b12569314551df0022c26da57a165634087942a724293e66837558d"
},
{
"path": "resources/js/components/fiscal-calculation-gaps.tsx",
"sha256_LF": "1dab6ceb73756d4e023096b3b2ba767aaa843ff6cc69046ea630ab449a00b0dd"
},
{
"path": "resources/js/components/fiscal-l3-preparation.tsx",
"sha256_LF": "e84a7b1ccadaa1b5bd78d778a3287f96ccaf530855eef404786cd7aa3d321b73"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256_LF": "c206d4cfe575d6ba007aa2b425b5f898efa97e4162b8710e358b6ecfd9458542"
},
{
"path": "resources/js/components/simulation-operations.tsx",
"sha256_LF": "a7e55972fa790063dcf11945055de2af46a77db9e509900af22ede7ec47bb4cf"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256_LF": "b0ef55e0917bdb79f14b53ba9e95d73c08153befeb7d4ce73f81e6fb13992225"
},
{
"path": "resources/js/lib/iva-beverage-allocation.ts",
"sha256_LF": "32968d198c7fe0c53ca89641c22d5749be6636be2c79127b867e4e3afd0dd40d"
},
{
"path": "resources/js/lib/iva-beverage-restitution.ts",
"sha256_LF": "5c650cbd9469d5f99001f56fc4ff99ac973eb368036d4e96c6d171f1b220bd9e"
},
{
"path": "resources/js/lib/iva-calculation-gaps.ts",
"sha256_LF": "2e7d84a0c196bd5b56fd67cc1a389d43d5041894184e675680a4de3cd10b31a2"
},
{
"path": "resources/js/lib/iva-operations.ts",
"sha256_LF": "ec37b949f1233c5f5c14a87450c421ed29fabf1ed5b73fb32564564a2bc31f54"
},
{
"path": "resources/js/lib/l3-form-preparation.ts",
"sha256_LF": "fc47f5fa5ec1420fbd847d0d081f00d99ebbb524164eef785b20877e0562f704"
},
{
"path": "resources/js/lib/ispc-residuals.ts",
"sha256_LF": "40d5751c06c7c155ab4b7a17ee2d1653da2fbbf075807fbb8561cdbe19820955"
},
{
"path": "resources/js/components/simulation-ispc-residuals.tsx",
"sha256_LF": "a9219d6f41ccbd0ce45659d4f6aa0fa1c169a685840f5cb1e18daeca377d5e18"
},
{
"path": "resources/js/lib/ispc-eligibility.ts",
"sha256_LF": "44675c5efacdc1ae19505667611ba3b522d3043cebacc8754597c3a68ca89d25"
},
{
"path": "resources/js/components/simulation-ispc-quarter.tsx",
"sha256_LF": "2c2555309b32d4261f14e7164f39314c9188129c2990357fc54090a2468dd2b4"
},
{
"path": "resources/js/components/simulation-ispc-withholding.tsx",
"sha256_LF": "e0445d015b72859e48726959aa52686f79b1cf5c2ade29751efa83257068b878"
},
{
"path": "resources/js/lib/ispc-quarter.ts",
"sha256_LF": "f66bd52e9cdfe1ddaa6b00a931465862b3d890b9be216b7a056740f027f24129"
},
{
"path": "resources/js/lib/ispc-withholding.ts",
"sha256_LF": "6c31b240299edd3262efa28f7f3d5aee21123f94e30ef4ab90e26c35777cb6e4"
},
{
"path": "resources/js/components/simulation-ispc-eligibility.tsx",
"sha256_LF": "f48dd4a8f87a994eda0447f81a463589905e5873b2e1044debac9d10825a880c"
},
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256_LF": "cce283b1d0a07fb383fcb527225f4dd5bec829010a662cbaae1d60e595221977"
},
{
"path": "resources/js/lib/iva-modelo-a.ts",
"sha256_LF": "c641619a05613c1620385baad0e9ffbf810dd970aafb30e12b3a7f9a3bf11846"
},
{
"path": "resources/js/lib/iva-fx-selection.ts",
"sha256_LF": "9aa07ad443bc777b80510a3b5bd6aff9ddb9814d2450f3c690e531e74d71d998"
},
{
"path": "resources/js/components/simulation-fx-selection.tsx",
"sha256_LF": "39bb6d87d404745b0b66349bc11626545a3672ae27321ce9b4658416592059bf"
},
{
"path": "resources/js/lib/business-financial-plan.ts",
"sha256_LF": "c20274722d1ffcd0360f041a6cacb5d868fe0621cb27a1aca6e06826612c3ebb"
},
{
"path": "resources/js/lib/iva-currency-events.ts",
"sha256_LF": "cc9f2045d302d7987310da4006cc250fc5c99a27397918d166d649bfc32fab08"
},
{
"path": "resources/js/lib/irpc-fx.ts",
"sha256_LF": "5c4a7a477429f8d775acf6db3e117008468f5554e5731dec81f60fbb75e948fb"
},
{
"path": "resources/js/lib/irpc-withholdings.ts",
"sha256_LF": "8e5f3c035ce5e4d6c3fc82f933439ab580fa5519492f9c4d32cfb71b77b54803"
},
{
"path": "resources/js/components/simulation-irpc-withholdings.tsx",
"sha256_LF": "751af4fab346659bc5ccb08b8a2169769af7521ea0035050af32b41ea7f5aa76"
},
{
"path": "resources/js/lib/irpc-interest.ts",
"sha256_LF": "f8e6390b3b2c58c296f7e3fd14576e06ae248bc0cabce1a666b7094611f2a7dd"
},
{
"path": "resources/js/lib/irpc-mrfta.ts",
"sha256_LF": "76dcce8954f68b081d500be61de9c5b146a452a3eb578a0b78776ba9e1f8051c"
},
{
"path": "resources/js/lib/irpc-mrfta-cases.ts",
"sha256_LF": "4266746076ab3f70312fd042351e24dd2f136c4f3e8a277b57dd97849a9f1862"
},
{
"path": "resources/js/components/simulation-irpc-mrfta.tsx",
"sha256_LF": "913d1bb4ac0fc59763cf5d27bc637f6a713b2050c4463748db554af4be451538"
},
{
"path": "resources/js/lib/financial-fiscal-bridge.ts",
"sha256_LF": "5a30c501653b16b5fedcb12631ce81fcce4fe473aa542e94374986b3c50f2d33"
},
{
"path": "resources/js/components/simulation-form.tsx",
"sha256_LF": "85b024a7f45ceb52efd6ff1f21d0eab1fd8fcf1ab59e4b5302c08685235c472a"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "a0909bbfcdf7e8542b010faa104fcb918e86ae38ddf096082d4d5be98d31b2b9"
},
{
"path": "resources/js/lib/project-dossier-report.ts",
"sha256_LF": "5207a2ffeb208cd5ace6713038cee85208020ee618194dca7114e94fc3200b6c"
}
],
"originals_preserved": [
{
"path": "docs/investmoz/simulations/source-archive/AT-Comunicado-9-2026-ISPC.pdf",
"sha256": "106f8a9ce9255c03549c70bf07fe999d32e6e55302d009b509862aa74ccb4973"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-30-ISPC.pdf",
"sha256": "6802edd06b6ff638a0b851a3ec7ecf69af8f07840faa47446becad67d35d445c"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-B-Geral.pdf",
"sha256": "bd977c7c59d4d98befd92e2c566b1bf168cb1343bb519f51b41a3807f431fc57"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-MRFTA-19-39.pdf",
"sha256": "8ea62c53066b482f87078a7a7b1ecf15ca98a12a122e8d7abca63acfc993186b"
},
{
"path": "docs/investmoz/simulations/source-archive/BM-Mercado-Monetario-MAIBOR-20261025.html",
"sha256": "00e8a7e0d3a1db4ca3beb56d5361b2084a0f1684f3d40fc1c203702a2190e063"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf",
"sha256": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-89-I-Serie-2017-06-08.pdf",
"sha256": "11f0cab15eb6e51010952203ffa24fdc533a24fd642e19525fe4f46b17a1f5e5"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-95-I-Suplemento-2025-05-21.pdf",
"sha256": "e0e682e2c027c3cd9c1d46a73a3f48bc5f6bdbf05667fd97314d7a3f6a456358"
},
{
"path": "docs/investmoz/simulations/source-archive/BR252-I-Serie-2022-Lei20-PESOE.pdf",
"sha256": "1159fd3ce1ba5581671796d083534da48bd3c5578298819e896f1c2a8026318d"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-22-2021-BR70.pdf",
"sha256": "a8fac38dcfe08f9c7a8e46254cff10e1ec82fc4f7a8d88ad6e4fe7d91ffc21a5"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-27-2026-BR123.pdf",
"sha256": "26249c3fa58f149c81de36e99d1aac2819a4771379d9e8833159660dabf539bb"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-29-1998-BR22-5-suplemento.pdf",
"sha256": "6242cbe675faadf085f43f95ec8c7e8868aafe67c3b2ab2bb010992288f954f8"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-3-2011-BR-11-I-mineiros.pdf",
"sha256": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-37-2023-BR124.pdf",
"sha256": "7e680b191481faa0e2e9057fa5053587eb2a29d1d8c819e0eb9f02814255a04c"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-9-2008-BR16.pdf",
"sha256": "96fccdecbfdc11c9eafb90fbc6c7bc259f88bbd4c7507d1ac3af1fa03f960697"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf",
"sha256": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-14-1992-BR42.pdf",
"sha256": "089fff7423e99a70a230a73ca379e4ea3a91d124703f91016e57ff82794b9e56"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-BR251-exemplar-MCNet5.pdf",
"sha256": "14eb34f0af91a8f5cb1770c7b52d6ff839c6818302d1ed96d79afbfb9fe999d4"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-IPP-BR250-Parlamento.pdf",
"sha256": "978cd22403ffd336a631704ecd7a5bbd814a427c815b9acdaca5515591dd9e2a"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2013-BR76.pdf",
"sha256": "bba96d645cc935ffc3d1a79b9f0f73ac1c693d6459c2ad41f56cd2841accae76"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2017-IRPS-BR-OCAM.pdf",
"sha256": "c3a0186cb9ad090d7a9533006295dc9bb6a62ad0d6150173cbd49dba4ee4b52d"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-2-2011-BR-1-4-suplemento-MCNet.pdf",
"sha256": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-20-2009-BR36-AT-exemplar19.pdf",
"sha256": "fc1c8144db42960cbf73e717e095896f511ece0f907f58f78819b27d6917a7ee"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf",
"sha256": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-34-2007-BR52.pdf",
"sha256": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-1994-BR37-3-suplemento.pdf",
"sha256": "210df9db8980d0a5690cd187a6eeec7e37a900d743e39062c16f4e0d12215c7e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-2012-BR3.pdf",
"sha256": "b8845cef41dcbd9ba50c43dbfa743a56030dd3d348242a107e1ae30279eec121"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-7-1991-Partidos-IFES.pdf",
"sha256": "6b783a0bb3330688ef10660a58060d9724aa2da6a873d234fe902f0eaaeda42d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-CDT-1992.pdf",
"sha256": "d504e1024b28aee5c6acf4592acb96ec9c915a8414f67a61ab6984d6acf9df9d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-Protocolo-2009.pdf",
"sha256": "f353773dcf41f09f4daa6cf5ba5a5f7994f3e02615867c2dcffc61c3d901bf9b"
}
],
"source_evidence": [
{
"path": "docs/investmoz/simulations/source-archive/Lei-34-2007-BR52.pdf",
"new_clauses": "18(2)/19 PDF6–7;28/29 PDF8–9;36e/f/h/i/4 PDF10–11",
"use": "ordinaryconditions/rates/caps/timing,visual excerpts retained inQA"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-20-2009-BR36-AT-exemplar19.pdf",
"new_clauses": "PDF2 retains18(1–6),adds7–10;PDF3 updates28 wording;PDF4 adds36m/n and36-A",
"use": "provisions/estimatedworkloss/ordinary advertising1percent;campaign36-A explicitlypending"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-2012-BR3.pdf",
"new_clauses": "PDF2 retains36a–n;adds36o",
"use": "scope cross-check of supplied amended source"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2013-BR76.pdf",
"new_clauses": "PDF2 retains36a–o;adds p/q",
"use": "scope cross-check;no new related-party interest rule introduced"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"use": "Existing supplied scope ofLei12/2025,source acceptance and rateproof reused;no unrelated revalidation or L5 research"
}
],
"case_specific_remaining": [
{
"case": "Overlapping36h/i exclusion and36(4)50percent",
"example": "Fuel100,supported80,ordinary passenger vehicle",
"condition": "Correspond explicit combination rule for the cited clauses or obtain a targeted AT clarification;no additive/proportional tax rule presumed"
},
{
"case": "Rental36h quota",
"condition": "Supply documented nonaccepted quota for supported matching;automatic vehicle-quota determination remains in asset scope"
},
{
"case": "Multi-year launch campaign36-A and1percent limit",
"condition": "Implement3exercise timing and its interaction with36n;do not treat as ordinary advertising"
},
{
"case": "Regulated provisions28d,financial unwind28(3),other sector provisions",
"condition": "Map applicable supervision/sector rule and documented balances;do not reuse ordinary29 caps"
},
{
"case": "Positive deferred receipts19(5),authorised method change19(6)",
"condition": "Map remainingcost/deferredreceipt rollforward and applicable authorisation;only knownzero deferral/unchanged method demonstrated"
},
{
"case": "Specific timing18(6–10),other asset/method/shortperiod/annualFX/fiscalrepresentation/form mappings",
"condition": "Remaining concrete L6 cases preserved in existing matrix,not closed by this ordinary increment"
}
],
"m20_m22_divergence": "Unchanged and limited to result transfer201/Q8 versus200/Q10;no dependency gate in cost calculation;no new official field correspondence presumed",
"L5_ten_questions": "unchanged,not researched;only actual dependent cases blocked",
"L6_complete": false,
"L7_L8_own_scopes": true,
"installation_performed": false,
"proof_sha256": {
"additional.json": "b76790cb34736281fd181cbf0c871135cb42e75e1acc34ab3c42ed7e696ad5b1",
"api.txt": "dff9be0d1338e833adf5c7f10dc4c4e5d5cefde97f284db927608f3c3c334be2",
"build-exit.txt": "13bf7b3039c63bf5a50491fa3cfd8eb4e699d1ba1436315aef9cbe5711530354",
"build.txt": "21ce0d3af4edc5c74d5cbeebd817b4716b233b0eb54ad03b1f22ebe80edd844a",
"calculated.json": "23119339a0337c755f2a045078903858b7da6b95196a91de51170ca115d468a7",
"closing.json": "9f87eec9710aeec4819a7b10b64986ad9e4afbb458cd95a49a8f6f035c235ad8",
"Decreto-9-2008-BR16.txt": "c680dfb73eeb638cf85d06fb0fe19550487de2994ce76f60077ef4baa88e3238",
"dossier-additional.json": "19ad04483c38306982cd182e08445952ec1e5ad5ce821cc345df5ccf75ac4a7a",
"dossier-calculated.json": "99c4bff798b7338138216a405aa5de228e88429af3c12290bf1b7071bd40e01a",
"dossier-closing.json": "d054eb3da44363d3861037c7bb59074572f630078f6d3aa3d2e4de89983928b0",
"dossier-limits.json": "52aaea2415159cacdbc44d56a98918a8438e3bacde06199e0545a265b7d6982d",
"dossier-missing.json": "50eff5af4b909ef08f4619ac768d5e8f8d4de01d003c81ef3748bd74a9bccfe2",
"dossier.mjs": "0824a3b05fa4bf758bbb165c0fce74fe9cd6ab817ceda5437ef7c73b28794a46",
"download.html": "ebf40a955530b10753da0cfd7769c0ad879b079bdade64f4e06ec901912456df",
"frontend.txt": "c6aa5222a8b5c867e50a2aca4ab5edd6ab9812f9fb2f6bce8482092951e022bd",
"index.html": "09941968500d2910121bdcb0029e326fc6d44bb025b01766654289a28caa62fa",
"Lei-19-2013-BR76-page2.png": "952cb5d68fa162043964c282b1ac32faf8bcbb92f2bb83fef2084ae691afae12",
"Lei-19-2013-BR76.txt": "7060584c3e59f0b2f12f34aa0b40faadf4aa5790a0459f3319852bcd63262cbb",
"Lei-20-2009-BR36-AT-exemplar19-page2.png": "e39eadef731b6c3ae8cb4820238c4db3184111557d982a20dadee139ea2952a2",
"Lei-20-2009-BR36-AT-exemplar19-page3.png": "a4a39a81849f32e4c596ef7c0726d2054e74bf45531dd8e920d3927cafdb70bd",
"Lei-20-2009-BR36-AT-exemplar19-page4.png": "cafa0e22b0f29296bd28772609fa87708811704c25ae7bf676dba53783e25168",
"Lei-20-2009-BR36-AT-exemplar19.txt": "2e04eb1c5be52619e21eb1c376f71603d998672f4c220e0bfc1648df80d5e6fe",
"Lei-34-2007-BR52-page10.png": "74937b18d2863c1199e88380e25d39c7ada80c37621196e5402bffa61f6b49be",
"Lei-34-2007-BR52-page6.png": "de2c1cc9c8bf5b0cefa9671cc8ad776e21a8492b791648be492d1540d78f748f",
"Lei-34-2007-BR52-page8.png": "f69bbe8484e315a5bf5818277c1bb3d67e4e86724544b34565731d5c3f4408df",
"Lei-34-2007-BR52-page9.png": "e449f13d39c9f23e408c185e00bafd621706d9cccd037d399e602eece33b6ba5",
"Lei-4-2012-BR3-page2.png": "99c5a820ad1e1201af25f60b51c86b3c7bced25acc12343366eadb3133185128",
"Lei-4-2012-BR3.txt": "9478ac3ef61ae9df286d951edbfce4c24049f65e860f053ed9eb2c3fbd78d051",
"limits.json": "c73905029246c1bbdf91b24869582b6057d62d01dd853e76d2e603786d8810ea",
"missing.json": "159c4d3f21d87ff3ea43ad5cfa8a42faea05105feab0a4b5529d37e72d9aea73",
"originals-inventory.json": "f91baf686619187dac23bce2c3bde71cc7ddf201fef10a24479548c44abc7d94",
"preparation.html": "e9951a85471c44fd9ff5211e59a8eb740e5b8823a4bb6b63c12237feb3d997fd",
"qa.tsx": "58e66698e44d68d169117a70d0d15aa07ce77b88bed1234d922d0844a9aac9b0",
"recovered-additional.html": "3f562a91fcc2ba6f47c1661f13a39a6c7d939c4730bd4ba9178b60fb05d5b6a6",
"recovered-additional.json": "a7adf543887479edf259d2501fe061a14c8aa03e206848726fae0f567b594419",
"recovered-calculated.html": "e9951a85471c44fd9ff5211e59a8eb740e5b8823a4bb6b63c12237feb3d997fd",
"recovered-calculated.json": "e000b426aefbfad520fe2a03707ca756a87fe04ab39536d509008e03c6288c2b",
"recovered-closing.html": "d17bd5944b2f37d752883b22955bcd3c57695f72b464580087403dfa448d785e",
"recovered-closing.json": "5f1b2cbe830154e35e60512882aa023fdc443125cf37253e10b85af7f47dddb2",
"recovered-limits.html": "4b24bebe5b4d93bc6b06233d795197bb28ca4116eb29832981bafb33804d1a2d",
"recovered-limits.json": "28611229e027a0d51593ecf71bae32b6f35f7f2767c26680fa2dceb0e7d9ad11",
"recovered-missing.html": "6fa22cb9757a5812d23a1615a43337f20ba1812097d8b4d79c1a3db1a356d8dd",
"recovered-missing.json": "b5aa2c3045d79193518621b4764540775470db97bdbc84ac19804c70baa05324",
"types.txt": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"ui-calculated.png": "3c1070fbb0b9ca66d1b128935ab23e737a11ee2918fc566259a5d70bbae4aa26",
"ui-missing.png": "d0c1c138e9b2404ae8a17c0732d8ab1b7bfbcf89ff431aa4d80e3dfaf7f8d5db",
"ui-proof.json": "108af6bd1557c6a920842102b1a9b54711fc3ab96e32296e1c2c3f77abda177a",
"ui.cjs": "2de9dd0e333edca1a3fd23a6e409cd41271f619cfb2186bbfdf6444855dd35d0",
"ui.txt": "8799b836baa3cf8efefce8a5b0b6951c7963e50fb3e08b0be3d2de3434ff4795",
"vite.config.ts": "2ad3c19a485d8175b33550b017f2a67934f9fbebda5f6f16e69b9fb89809c398"
}
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,682 @@
{
"status": "installed_L6_short_periods_and_foreign_currency_plans",
"installed": {
"status": "installed",
"commit": "56475acb2f39e58cb51664913f7fb499f58eb7ab",
"release": "/var/www/investmoz-homologacao/releases/56475acb2f39e58cb51664913f7fb499f58eb7ab-694b3932",
"previous_release": "/var/www/investmoz-homologacao/releases/e9fe102259c183a9d9bf7e39f246a8c3860839c6-0e29d858",
"database_migrations": 0,
"content_imports": 0
},
"previous_baseline": "e9fe102259c183a9d9bf7e39f246a8c3860839c6",
"backup": {
"stage": "/var/backups/investmoz-irpc-l6-periods-fx-delivery-20261026/backup",
"created_at": "2026-10-26T08:17:39Z",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "9ecd9f379351437f88009aa6da072e09ec8616fd782b929919ade05be1493bdc",
"files_sha256": "6da03ab176387b105da1345764f3b292794d8867d0ed4add47197e0a1e5854fa",
"restore_verified": false
},
"restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "irpc_l5_restore_20261025",
"port": 55441,
"source_dump_sha256": "9ecd9f379351437f88009aa6da072e09ec8616fd782b929919ade05be1493bdc",
"active_database_writes": 0
},
"preservation": {
"previous_release_preserved": "/var/www/investmoz-homologacao/releases/e9fe102259c183a9d9bf7e39f246a8c3860839c6-0e29d858",
"installed": {
"status": "installed",
"commit": "56475acb2f39e58cb51664913f7fb499f58eb7ab",
"release": "/var/www/investmoz-homologacao/releases/56475acb2f39e58cb51664913f7fb499f58eb7ab-694b3932",
"previous_release": "/var/www/investmoz-homologacao/releases/e9fe102259c183a9d9bf7e39f246a8c3860839c6-0e29d858",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 9,
"preserved_L3_ISPC_FX_runtime_files_verified": 43,
"documentary_files_verified": 31,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "1b8bf615a2fdea986761abc88bfb4419"
},
"after": {
"rows": 106,
"checksum": "a845f75cfcf49b86ebb8a3816f886a63"
}
},
"sessions": {
"before": {
"rows": 9,
"checksum": "635e8bece48c8f7780635c0c79cd6010"
},
"after": {
"rows": 12,
"checksum": "703dbf39af0534461019da7c73354454"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"schema_permissions": {
"schema_sha256": "5045b3e51d2185377aa3d9ac7fa07a44fad3ec620cdfa83ffe31c8884ee1601d",
"roles_grants_sha256": "1530c33cb016e67bfdc64891ddfce7f185b13b56b2cd87c012871a685e118109",
"filesystem_permissions": {
".env": {
"mode": 416,
"uid": 1001,
"gid": 33
},
"storage": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"storage/app": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"bootstrap/cache": {
"mode": 1528,
"uid": 1001,
"gid": 33
}
},
"comparison_identity": "postgres;catalogue read only;no passwords collected",
"unchanged": true
},
"operational_delta": {
"status": "operational_delta_reconciled",
"comparison_identity": "postgres before/after;isolated restored baseline;no RLS visibility inference",
"cache": "queue:restart;requestthrottle;identical home-sector cached value with refreshed expiry(HomeController remember10min);no deletedcache",
"sessions": "anonymous sessions from delivery user-agent or exactUA/time correlated with nginx public request;deleted sessions individually expired beyond configured lifetime,normal database session garbage collection(config/session lottery2/100)",
"delta": {
"cache": {
"before_rows": 106,
"after_rows": 106,
"changes": [
{
"key_sha256": "dbb99b7e17f5b4b9bb7a8bdf9350d9b2ae368aaa4bc44593a2522d87617d8461",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-{hash}",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true,
"same_value_home_cache_expiry_refresh": false
},
{
"key_sha256": "c1c7bc86ef3255c103a0be6aeb651b824eb07259e993cc5daf3665c1a6afff2d",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-{hash}:timer",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true,
"same_value_home_cache_expiry_refresh": false
},
{
"key_sha256": "7f7dd83f47f5bf404d55e6e9f1367948721579970b195680645e356031a070ff",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-illuminate:queue:restart",
"is_queue_restart_key": true,
"expiration_unchanged": false,
"throttle_timer_pair": false,
"same_value_home_cache_expiry_refresh": false
}
]
},
"sessions": {
"before_rows": 9,
"after_rows": 12,
"changes": [
{
"key_sha256": "6e12944bc8f670195d0c6d2638337e2bf922261a158d130ba09f640a5722f0df",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true,
"expired_before_comparison": false,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": true
},
{
"key_sha256": "11bbe5f81c536cf605ed71f402fbaa6e9ef551d97c0a76e098078521d9f37f71",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true,
"expired_before_comparison": false,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": true
},
{
"key_sha256": "d0a4dbafaf19e2eee3af4ea41ce9aabf52cb42d5a61a598c54b37d8863b533d7",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true,
"expired_before_comparison": false,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": true
}
]
}
},
"business_tables_to_confirm_separately": 172,
"active_data_writes_by_comparison": 0,
"restore_network": "none"
},
"dependency_archiving": {
"status": "dependencies_archived_and_verified",
"versions": 5,
"free_before": 5329760256,
"free_after": 6645653504,
"receipt": "/var/backups/investmoz-build-dependencies-irpc-l6-periods-fx-20261026/receipt.json",
"protected": [
"/var/www/investmoz-homologacao/releases/043dd35d8ee247123b3a32f1fc10fd2ede81e9f4-917b3c47",
"/var/www/investmoz-homologacao/releases/e9fe102259c183a9d9bf7e39f246a8c3860839c6-0e29d858"
],
"active_or_previous_release_modified": false,
"source_data_backups_deleted": 0
},
"public_verification": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "56475acb2f39e58cb51664913f7fb499f58eb7ab",
"branch": "main",
"built_at": "2026-10-26T08:23:47.654431+00:00",
"manifest_sha256": "f6121cade74d12c6de25630b23a1bd73f244a089c2649bf2c3aa76c68491431c"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"IRPC-normal-adjustments/8": [
"assets/project-dossier-BGxws1O_.js"
],
"Preparar período curto ou plano noutra moeda": [
"assets/services-08vnaMl1.js"
],
"Primeiro mês civil do plano": [
"assets/services-08vnaMl1.js"
],
"Pressuposto documentado da conversão mensal para simulação": [
"assets/services-08vnaMl1.js"
],
"Saldo final — âmbito L8": [
"assets/project-dossier-BGxws1O_.js"
],
"Reutilizar selecção cambial": [
"assets/services-08vnaMl1.js"
]
},
"assets": [
{
"file": "assets/services-08vnaMl1.js",
"status": 200,
"sha256": "6cc2b1bfb11744376ae71d1f0429ee776ef6f004edca72a4f22c5a9ef4937688"
},
{
"file": "assets/project-dossier-BGxws1O_.js",
"status": 200,
"sha256": "f2dc461eca8219602099ac2cf17f52f5adedc4553f4b0e48bbeba273041d9bca"
},
{
"file": "assets/project-dossier-document-BYlep2jg.js",
"status": 200,
"sha256": "0ece3300111d8e5c0e094c2c1688604349de11cde057583bd83d8ae3742c8a99"
},
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-DoIk7pr3.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"runtime_delta": [
{
"path": "resources/js/components/simulation-irpc-normal.tsx",
"sha256_LF": "557714bb3af75080e443ae67b11a66d9feb49d9a4b269065769b128a6d712837"
},
{
"path": "resources/js/components/simulation-irpc-period-fx.tsx",
"sha256_LF": "4b5f718b5ef415ecf5f96dabb0e3806254558c20905de6478e10dacf67569c49"
},
{
"path": "resources/js/components/simulation-irpc-schedules.tsx",
"sha256_LF": "3768c316d5887d337eb3647671863c9464f961d1df4703403e7d57e5641273ed"
},
{
"path": "resources/js/lib/irpc-normal-assessment.ts",
"sha256_LF": "a9b3ced852e37e3e087ce5dab1add4ec0737145ce19f61857a54d5d3d24a6f8c"
},
{
"path": "resources/js/lib/irpc-normal-base.ts",
"sha256_LF": "22019d678f6eb16fead2207dc3d3fa9fd63413c6254633c1ffd4f1c0320344ac"
},
{
"path": "resources/js/lib/irpc-normal-costs.ts",
"sha256_LF": "471457692a2a2f70a1bd1c7abb38d3ce42f07b62a63e5a4ab985ad1bbd068b46"
},
{
"path": "resources/js/lib/irpc-normal-depreciation.ts",
"sha256_LF": "1dad3053157aeac44f6d3bd58885cfc47a73c19d2808284c16931679dfe4291b"
},
{
"path": "resources/js/lib/irpc-normal-period-fx.ts",
"sha256_LF": "a2e7b066623eae17f0d8185d065d0adf5d3a485f780f8b09118a664dc4ba0531"
},
{
"path": "resources/js/lib/irpc-normal.ts",
"sha256_LF": "e4de2fe0421e489bf555885b9cbb459c00ee77803ea9b6e5af45179bd6bb4f21"
}
],
"protected_runtime": [
{
"path": "resources/js/components/simulation-irpc-depreciation.tsx",
"sha256": "1f9918bfb435bb5b7c0ddd2fafd7bace2a02514c6ece04b93f15975e494a5f53"
},
{
"path": "resources/js/lib/irpc-normal-profit.ts",
"sha256": "909e129a0245e6bf098317485b886a2d19e02c64bbfd9c6f718e98ec6b935b8d"
},
{
"path": "resources/js/lib/irpc-normal-schedules.ts",
"sha256": "edfb6fd338411fa8f87a6bdf9a9d4fd5c6dc2fad9d2eb3d32f2640e2951cbbe9"
},
{
"path": "resources/js/components/simulation-irpc-costs.tsx",
"sha256": "c4156916835daf0f33addf89dfedd40c31b8dc3297112cd98beac33422af274d"
},
{
"path": "resources/js/lib/irpc-normal-forms.ts",
"sha256": "4e986addb9f2d74e7a80345f8f1e4d8e0b2f562c867fa6eee84880d9f72a3649"
},
{
"path": "resources/js/components/simulation-irpc-taxable-base.tsx",
"sha256": "e4fe9f66d35d24aa68fd87de6a5a6a0e901706b270c18962fd0c7ab00f9abd93"
},
{
"path": "resources/js/components/simulation-irpc-assessment.tsx",
"sha256": "7174cc0160005a0c332ea40f02ba8a6d57985081b5ab45177ccd6e721bceea54"
},
{
"path": "resources/js/components/acquisition-beverage-restitution.tsx",
"sha256": "6f44897b8b12569314551df0022c26da57a165634087942a724293e66837558d"
},
{
"path": "resources/js/components/fiscal-calculation-gaps.tsx",
"sha256": "1dab6ceb73756d4e023096b3b2ba767aaa843ff6cc69046ea630ab449a00b0dd"
},
{
"path": "resources/js/components/fiscal-l3-preparation.tsx",
"sha256": "e84a7b1ccadaa1b5bd78d778a3287f96ccaf530855eef404786cd7aa3d321b73"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256": "c206d4cfe575d6ba007aa2b425b5f898efa97e4162b8710e358b6ecfd9458542"
},
{
"path": "resources/js/components/simulation-operations.tsx",
"sha256": "a7e55972fa790063dcf11945055de2af46a77db9e509900af22ede7ec47bb4cf"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256": "b0ef55e0917bdb79f14b53ba9e95d73c08153befeb7d4ce73f81e6fb13992225"
},
{
"path": "resources/js/lib/iva-beverage-allocation.ts",
"sha256": "32968d198c7fe0c53ca89641c22d5749be6636be2c79127b867e4e3afd0dd40d"
},
{
"path": "resources/js/lib/iva-beverage-restitution.ts",
"sha256": "5c650cbd9469d5f99001f56fc4ff99ac973eb368036d4e96c6d171f1b220bd9e"
},
{
"path": "resources/js/lib/iva-calculation-gaps.ts",
"sha256": "2e7d84a0c196bd5b56fd67cc1a389d43d5041894184e675680a4de3cd10b31a2"
},
{
"path": "resources/js/lib/iva-operations.ts",
"sha256": "ec37b949f1233c5f5c14a87450c421ed29fabf1ed5b73fb32564564a2bc31f54"
},
{
"path": "resources/js/lib/l3-form-preparation.ts",
"sha256": "fc47f5fa5ec1420fbd847d0d081f00d99ebbb524164eef785b20877e0562f704"
},
{
"path": "resources/js/lib/ispc-residuals.ts",
"sha256": "40d5751c06c7c155ab4b7a17ee2d1653da2fbbf075807fbb8561cdbe19820955"
},
{
"path": "resources/js/components/simulation-ispc-residuals.tsx",
"sha256": "a9219d6f41ccbd0ce45659d4f6aa0fa1c169a685840f5cb1e18daeca377d5e18"
},
{
"path": "resources/js/lib/ispc-eligibility.ts",
"sha256": "44675c5efacdc1ae19505667611ba3b522d3043cebacc8754597c3a68ca89d25"
},
{
"path": "resources/js/components/simulation-ispc-quarter.tsx",
"sha256": "2c2555309b32d4261f14e7164f39314c9188129c2990357fc54090a2468dd2b4"
},
{
"path": "resources/js/components/simulation-ispc-withholding.tsx",
"sha256": "e0445d015b72859e48726959aa52686f79b1cf5c2ade29751efa83257068b878"
},
{
"path": "resources/js/lib/ispc-quarter.ts",
"sha256": "f66bd52e9cdfe1ddaa6b00a931465862b3d890b9be216b7a056740f027f24129"
},
{
"path": "resources/js/lib/ispc-withholding.ts",
"sha256": "6c31b240299edd3262efa28f7f3d5aee21123f94e30ef4ab90e26c35777cb6e4"
},
{
"path": "resources/js/components/simulation-ispc-eligibility.tsx",
"sha256": "f48dd4a8f87a994eda0447f81a463589905e5873b2e1044debac9d10825a880c"
},
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256": "cce283b1d0a07fb383fcb527225f4dd5bec829010a662cbaae1d60e595221977"
},
{
"path": "resources/js/lib/iva-modelo-a.ts",
"sha256": "c641619a05613c1620385baad0e9ffbf810dd970aafb30e12b3a7f9a3bf11846"
},
{
"path": "resources/js/lib/iva-fx-selection.ts",
"sha256": "9aa07ad443bc777b80510a3b5bd6aff9ddb9814d2450f3c690e531e74d71d998"
},
{
"path": "resources/js/components/simulation-fx-selection.tsx",
"sha256": "39bb6d87d404745b0b66349bc11626545a3672ae27321ce9b4658416592059bf"
},
{
"path": "resources/js/lib/business-financial-plan.ts",
"sha256": "c20274722d1ffcd0360f041a6cacb5d868fe0621cb27a1aca6e06826612c3ebb"
},
{
"path": "resources/js/lib/iva-currency-events.ts",
"sha256": "cc9f2045d302d7987310da4006cc250fc5c99a27397918d166d649bfc32fab08"
},
{
"path": "resources/js/lib/irpc-fx.ts",
"sha256": "5c4a7a477429f8d775acf6db3e117008468f5554e5731dec81f60fbb75e948fb"
},
{
"path": "resources/js/lib/irpc-withholdings.ts",
"sha256": "8e5f3c035ce5e4d6c3fc82f933439ab580fa5519492f9c4d32cfb71b77b54803"
},
{
"path": "resources/js/components/simulation-irpc-withholdings.tsx",
"sha256": "751af4fab346659bc5ccb08b8a2169769af7521ea0035050af32b41ea7f5aa76"
},
{
"path": "resources/js/lib/irpc-interest.ts",
"sha256": "f8e6390b3b2c58c296f7e3fd14576e06ae248bc0cabce1a666b7094611f2a7dd"
},
{
"path": "resources/js/lib/irpc-mrfta.ts",
"sha256": "76dcce8954f68b081d500be61de9c5b146a452a3eb578a0b78776ba9e1f8051c"
},
{
"path": "resources/js/lib/irpc-mrfta-cases.ts",
"sha256": "4266746076ab3f70312fd042351e24dd2f136c4f3e8a277b57dd97849a9f1862"
},
{
"path": "resources/js/components/simulation-irpc-mrfta.tsx",
"sha256": "913d1bb4ac0fc59763cf5d27bc637f6a713b2050c4463748db554af4be451538"
},
{
"path": "resources/js/lib/financial-fiscal-bridge.ts",
"sha256": "5a30c501653b16b5fedcb12631ce81fcce4fe473aa542e94374986b3c50f2d33"
},
{
"path": "resources/js/components/simulation-form.tsx",
"sha256": "85b024a7f45ceb52efd6ff1f21d0eab1fd8fcf1ab59e4b5302c08685235c472a"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256": "a0909bbfcdf7e8542b010faa104fcb918e86ae38ddf096082d4d5be98d31b2b9"
},
{
"path": "resources/js/lib/project-dossier-report.ts",
"sha256": "5207a2ffeb208cd5ace6713038cee85208020ee618194dca7114e94fc3200b6c"
}
],
"originals": [
{
"path": "docs/investmoz/simulations/source-archive/AT-Comunicado-9-2026-ISPC.pdf",
"sha256": "106f8a9ce9255c03549c70bf07fe999d32e6e55302d009b509862aa74ccb4973"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-30-ISPC.pdf",
"sha256": "6802edd06b6ff638a0b851a3ec7ecf69af8f07840faa47446becad67d35d445c"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-B-Geral.pdf",
"sha256": "bd977c7c59d4d98befd92e2c566b1bf168cb1343bb519f51b41a3807f431fc57"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-MRFTA-19-39.pdf",
"sha256": "8ea62c53066b482f87078a7a7b1ecf15ca98a12a122e8d7abca63acfc993186b"
},
{
"path": "docs/investmoz/simulations/source-archive/BM-Mercado-Monetario-MAIBOR-20261025.html",
"sha256": "00e8a7e0d3a1db4ca3beb56d5361b2084a0f1684f3d40fc1c203702a2190e063"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf",
"sha256": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-89-I-Serie-2017-06-08.pdf",
"sha256": "11f0cab15eb6e51010952203ffa24fdc533a24fd642e19525fe4f46b17a1f5e5"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-95-I-Suplemento-2025-05-21.pdf",
"sha256": "e0e682e2c027c3cd9c1d46a73a3f48bc5f6bdbf05667fd97314d7a3f6a456358"
},
{
"path": "docs/investmoz/simulations/source-archive/BR252-I-Serie-2022-Lei20-PESOE.pdf",
"sha256": "1159fd3ce1ba5581671796d083534da48bd3c5578298819e896f1c2a8026318d"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-22-2021-BR70.pdf",
"sha256": "a8fac38dcfe08f9c7a8e46254cff10e1ec82fc4f7a8d88ad6e4fe7d91ffc21a5"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-27-2026-BR123.pdf",
"sha256": "26249c3fa58f149c81de36e99d1aac2819a4771379d9e8833159660dabf539bb"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-29-1998-BR22-5-suplemento.pdf",
"sha256": "6242cbe675faadf085f43f95ec8c7e8868aafe67c3b2ab2bb010992288f954f8"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-3-2011-BR-11-I-mineiros.pdf",
"sha256": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-37-2023-BR124.pdf",
"sha256": "7e680b191481faa0e2e9057fa5053587eb2a29d1d8c819e0eb9f02814255a04c"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-9-2008-BR16.pdf",
"sha256": "96fccdecbfdc11c9eafb90fbc6c7bc259f88bbd4c7507d1ac3af1fa03f960697"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf",
"sha256": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-14-1992-BR42.pdf",
"sha256": "089fff7423e99a70a230a73ca379e4ea3a91d124703f91016e57ff82794b9e56"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-BR251-exemplar-MCNet5.pdf",
"sha256": "14eb34f0af91a8f5cb1770c7b52d6ff839c6818302d1ed96d79afbfb9fe999d4"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-IPP-BR250-Parlamento.pdf",
"sha256": "978cd22403ffd336a631704ecd7a5bbd814a427c815b9acdaca5515591dd9e2a"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2013-BR76.pdf",
"sha256": "bba96d645cc935ffc3d1a79b9f0f73ac1c693d6459c2ad41f56cd2841accae76"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2017-IRPS-BR-OCAM.pdf",
"sha256": "c3a0186cb9ad090d7a9533006295dc9bb6a62ad0d6150173cbd49dba4ee4b52d"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-2-2011-BR-1-4-suplemento-MCNet.pdf",
"sha256": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-20-2009-BR36-AT-exemplar19.pdf",
"sha256": "fc1c8144db42960cbf73e717e095896f511ece0f907f58f78819b27d6917a7ee"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf",
"sha256": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-34-2007-BR52.pdf",
"sha256": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-1994-BR37-3-suplemento.pdf",
"sha256": "210df9db8980d0a5690cd187a6eeec7e37a900d743e39062c16f4e0d12215c7e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-2012-BR3.pdf",
"sha256": "b8845cef41dcbd9ba50c43dbfa743a56030dd3d348242a107e1ae30279eec121"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-7-1991-Partidos-IFES.pdf",
"sha256": "6b783a0bb3330688ef10660a58060d9724aa2da6a873d234fe902f0eaaeda42d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-CDT-1992.pdf",
"sha256": "d504e1024b28aee5c6acf4592acb96ec9c915a8414f67a61ab6984d6acf9df9d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-Protocolo-2009.pdf",
"sha256": "f353773dcf41f09f4daa6cf5ba5a5f7994f3e02615867c2dcffc61c3d901bf9b"
}
],
"pipeline_checks": [
"OK (1 test, 3106 assertions)",
"built in 31.08s",
"OK (59 tests, 317 assertions)",
"# tests 973",
"# pass 973",
"# fail 0"
],
"accepted_QA_proofs": {
"frontend_tests": 13,
"API_tests": 1,
"API_assertions": 58,
"database": "127.0.0.1:55441/simulator_fiscal_delta_20261021_test;DatabaseTransactions rollback",
"routes_actions": "generated by guarded existing procedure",
"typescript": "passed",
"build": "passed",
"UI": "actual component;dates/FX edit+confirmation;originals/assumptions;save/recovery/export;missingdata",
"accepted_proofs": "reused"
},
"accepted_proofs_reused": true,
"manually_repeated_accepted_suites": false,
"sequence": {
"short_period": "3130→3130→colecta1001.60MZN",
"USD_simulation64": "200320→200320→colecta64102.40MZN;synthetic QA assumption,not real bulletin or fiscal annual confirmation",
"final_payable": null,
"final_recoverable": null,
"final_balance_scope": "L8"
},
"remaining_L6": "Representation/fiscal precision and remaining M20/M22 fields nextQA;partial dates/loss period sequence/short annualcaps/remaining depreciation and costs/annualFX and foreignbalances;conditions preserved in same matrix.",
"L6_complete": false,
"L7_L8_own_scopes": true,
"proof_files": {
"backup.txt": "b1b580ee73bdf6f2a2d3daaecf1b983e2084fea0a5e69e7fa3486d938cf7a87f",
"compact-dependencies.txt": "18375c30afc5fac24e8111779d455808fa363e02c5e38c8a92af6268dcbae7b4",
"installed-protected.txt": "39cd2444e61f5aca2ce41f2eba245defa246aacb908e066d43019e44c2e07e4e",
"installed-public-delta.json": "f35d40c06ff3a428c37e88b63dfa09ab745376c4c15747176382e9b364f80d5b",
"installed-public.txt": "7cd1a559a1c7d327a2d71846abdbe33cda63fdb99c0fdcf1584a75a5ff7c138a",
"integration.txt": "2526b168e5c6ef2515a9351dcdd56f1bbe9a119c073522376715cc815f7e673b",
"manifest-served.json": "f6121cade74d12c6de25630b23a1bd73f244a089c2649bf2c3aa76c68491431c",
"operational-delta.txt": "cadac629ef03871c14e3dd7186ce95379c526927bfefcae4466d6cb88897c1a4",
"preflight.txt": "dbdc76e4c45a45c127ce733def4260601074cee2bcf4cd6182dae06b3e7652a8",
"preparation.json": "dd755c3cad122e3730f57f8a94ee82dda74bfe49925cea95a518199437706e1a",
"progress.txt": "8ea7368149372f43ee10075198a3cc840394f866158a242353bdd7a3fd8e27a2",
"restore.txt": "5a7358ce267845262582c50261f85ab5d035bc16dc9573dd0554083f4457b324",
"schema-permissions-after.txt": "76b5a4d8af11e4898a205062766cfb7ab6ec0783200e77e60a1927aa1ca18597",
"schema-permissions-before.txt": "0ab7c964792acdd8917bce256c472e55e034b103500a58b49f020b5084823ed7",
"status-final.txt": "3b882f9da83f52e66876e3a2456d50e0454d44668e168e9967c290411af9b0e1"
}
}
@@ -0,0 +1,869 @@
{
"status": "short_period_and_foreign_currency_plan_QA_prepared_not_installed",
"installed_baseline": "e9fe102259c183a9d9bf7e39f246a8c3860839c6",
"branch": "codex/irpc-l6-periods-fx-qa-20261026",
"version": "IRPC-normal-adjustments/8",
"cases_recovered": {
"short": {
"accountingProfit": {
"numerator": "3120",
"denominator": "1"
},
"taxableProfit": {
"numerator": "3130",
"denominator": "1"
},
"taxableBase": {
"numerator": "3130",
"denominator": "1"
},
"colecta": {
"numerator": "5008",
"denominator": "5"
},
"period": {
"version": 1,
"kind": "start",
"from": "2026-07-01",
"to": "2026-12-31",
"planStart": "2026-01-01",
"reference": "QA início documentado1Julho;correspondência completa dos meses7–12 ao período do sujeito",
"conversionReference": "",
"mznMapsReference": "QA activo/quotas/juros e demais mapas reconciliados explicitamente emMZN no período",
"months": []
},
"pending": []
},
"fx": {
"accountingProfit": {
"numerator": "199680",
"denominator": "1"
},
"taxableProfit": {
"numerator": "200320",
"denominator": "1"
},
"taxableBase": {
"numerator": "200320",
"denominator": "1"
},
"colecta": {
"numerator": "320512",
"denominator": "5"
},
"period": {
"version": 1,
"kind": "start",
"from": "2026-07-01",
"to": "2026-12-31",
"planStart": "2026-01-01",
"reference": "QA início documentado1Julho;correspondência completa dos meses7–12 ao período do sujeito",
"conversionReference": "QA pressuposto de simulação64MZN/USD aplicado aos meses seleccionados;sem regra fiscal anual confirmada",
"mznMapsReference": "QA activo/quotas/juros e demais mapas reconciliados explicitamente emMZN no período",
"months": [
{
"period": 7,
"currency": "USD",
"fxSelection": {
"nature": "commercial",
"submissionDate": "2026-10-26",
"bulletinDate": "2026-10-26",
"bulletinRef": "QA pressuposto sintético64; não boletim real",
"source": "https://www.bancomoc.mz/",
"sourceCurrency": "USD",
"direction": "mzn_per_unit",
"bulletinPerspective": "",
"relation": "",
"buy": "",
"sell": "",
"mean": "64",
"mode": "general",
"exceptionRef": "",
"exceptionScope": "",
"exceptionDate": "",
"exceptionRate": "",
"applied": {
"column": "mean",
"rate": "64",
"date": "2026-10-26",
"source": "QA pressuposto sintético64; não boletim real;https://www.bancomoc.mz/;perspectiva:média de referênciaBM;natureza:commercial;relação:não aplicável à média;Orientação operacional expressa da Tempo,25/10/2026:compra de moeda→taxa de compra;venda→taxa de venda;operações comerciais→taxa média de referência do Banco de Moçambique na data de submissão indicada. Interpretar compra/venda pela perspectiva do boletim. Excepções fiscais específicas conservam disposição,data,taxa e âmbito;sem recálculo automático dos históricos.",
"selectedAt": "2026-10-26T07:51:24.920Z",
"selectionKey": "{\"nature\":\"commercial\",\"submissionDate\":\"2026-10-26\",\"bulletinDate\":\"2026-10-26\",\"bulletinRef\":\"QA pressuposto sintético64; não boletim real\",\"source\":\"https://www.bancomoc.mz/\",\"sourceCurrency\":\"USD\",\"direction\":\"mzn_per_unit\",\"bulletinPerspective\":\"\",\"relation\":\"\",\"buy\":\"\",\"sell\":\"\",\"mean\":\"64\",\"mode\":\"general\",\"exceptionRef\":\"\",\"exceptionScope\":\"\",\"exceptionDate\":\"\",\"exceptionRate\":\"\"}"
}
}
},
{
"period": 8,
"currency": "USD",
"fxSelection": {
"nature": "commercial",
"submissionDate": "2026-10-26",
"bulletinDate": "2026-10-26",
"bulletinRef": "QA pressuposto sintético64; não boletim real",
"source": "https://www.bancomoc.mz/",
"sourceCurrency": "USD",
"direction": "mzn_per_unit",
"bulletinPerspective": "",
"relation": "",
"buy": "",
"sell": "",
"mean": "64",
"mode": "general",
"exceptionRef": "",
"exceptionScope": "",
"exceptionDate": "",
"exceptionRate": "",
"applied": {
"column": "mean",
"rate": "64",
"date": "2026-10-26",
"source": "QA pressuposto sintético64; não boletim real;https://www.bancomoc.mz/;perspectiva:média de referênciaBM;natureza:commercial;relação:não aplicável à média;Orientação operacional expressa da Tempo,25/10/2026:compra de moeda→taxa de compra;venda→taxa de venda;operações comerciais→taxa média de referência do Banco de Moçambique na data de submissão indicada. Interpretar compra/venda pela perspectiva do boletim. Excepções fiscais específicas conservam disposição,data,taxa e âmbito;sem recálculo automático dos históricos.",
"selectedAt": "2026-10-26T07:51:24.920Z",
"selectionKey": "{\"nature\":\"commercial\",\"submissionDate\":\"2026-10-26\",\"bulletinDate\":\"2026-10-26\",\"bulletinRef\":\"QA pressuposto sintético64; não boletim real\",\"source\":\"https://www.bancomoc.mz/\",\"sourceCurrency\":\"USD\",\"direction\":\"mzn_per_unit\",\"bulletinPerspective\":\"\",\"relation\":\"\",\"buy\":\"\",\"sell\":\"\",\"mean\":\"64\",\"mode\":\"general\",\"exceptionRef\":\"\",\"exceptionScope\":\"\",\"exceptionDate\":\"\",\"exceptionRate\":\"\"}"
}
}
},
{
"period": 9,
"currency": "USD",
"fxSelection": {
"nature": "commercial",
"submissionDate": "2026-10-26",
"bulletinDate": "2026-10-26",
"bulletinRef": "QA pressuposto sintético64; não boletim real",
"source": "https://www.bancomoc.mz/",
"sourceCurrency": "USD",
"direction": "mzn_per_unit",
"bulletinPerspective": "",
"relation": "",
"buy": "",
"sell": "",
"mean": "64",
"mode": "general",
"exceptionRef": "",
"exceptionScope": "",
"exceptionDate": "",
"exceptionRate": "",
"applied": {
"column": "mean",
"rate": "64",
"date": "2026-10-26",
"source": "QA pressuposto sintético64; não boletim real;https://www.bancomoc.mz/;perspectiva:média de referênciaBM;natureza:commercial;relação:não aplicável à média;Orientação operacional expressa da Tempo,25/10/2026:compra de moeda→taxa de compra;venda→taxa de venda;operações comerciais→taxa média de referência do Banco de Moçambique na data de submissão indicada. Interpretar compra/venda pela perspectiva do boletim. Excepções fiscais específicas conservam disposição,data,taxa e âmbito;sem recálculo automático dos históricos.",
"selectedAt": "2026-10-26T07:51:24.920Z",
"selectionKey": "{\"nature\":\"commercial\",\"submissionDate\":\"2026-10-26\",\"bulletinDate\":\"2026-10-26\",\"bulletinRef\":\"QA pressuposto sintético64; não boletim real\",\"source\":\"https://www.bancomoc.mz/\",\"sourceCurrency\":\"USD\",\"direction\":\"mzn_per_unit\",\"bulletinPerspective\":\"\",\"relation\":\"\",\"buy\":\"\",\"sell\":\"\",\"mean\":\"64\",\"mode\":\"general\",\"exceptionRef\":\"\",\"exceptionScope\":\"\",\"exceptionDate\":\"\",\"exceptionRate\":\"\"}"
}
}
},
{
"period": 10,
"currency": "USD",
"fxSelection": {
"nature": "commercial",
"submissionDate": "2026-10-26",
"bulletinDate": "2026-10-26",
"bulletinRef": "QA pressuposto sintético64; não boletim real",
"source": "https://www.bancomoc.mz/",
"sourceCurrency": "USD",
"direction": "mzn_per_unit",
"bulletinPerspective": "",
"relation": "",
"buy": "",
"sell": "",
"mean": "64",
"mode": "general",
"exceptionRef": "",
"exceptionScope": "",
"exceptionDate": "",
"exceptionRate": "",
"applied": {
"column": "mean",
"rate": "64",
"date": "2026-10-26",
"source": "QA pressuposto sintético64; não boletim real;https://www.bancomoc.mz/;perspectiva:média de referênciaBM;natureza:commercial;relação:não aplicável à média;Orientação operacional expressa da Tempo,25/10/2026:compra de moeda→taxa de compra;venda→taxa de venda;operações comerciais→taxa média de referência do Banco de Moçambique na data de submissão indicada. Interpretar compra/venda pela perspectiva do boletim. Excepções fiscais específicas conservam disposição,data,taxa e âmbito;sem recálculo automático dos históricos.",
"selectedAt": "2026-10-26T07:51:24.920Z",
"selectionKey": "{\"nature\":\"commercial\",\"submissionDate\":\"2026-10-26\",\"bulletinDate\":\"2026-10-26\",\"bulletinRef\":\"QA pressuposto sintético64; não boletim real\",\"source\":\"https://www.bancomoc.mz/\",\"sourceCurrency\":\"USD\",\"direction\":\"mzn_per_unit\",\"bulletinPerspective\":\"\",\"relation\":\"\",\"buy\":\"\",\"sell\":\"\",\"mean\":\"64\",\"mode\":\"general\",\"exceptionRef\":\"\",\"exceptionScope\":\"\",\"exceptionDate\":\"\",\"exceptionRate\":\"\"}"
}
}
},
{
"period": 11,
"currency": "USD",
"fxSelection": {
"nature": "commercial",
"submissionDate": "2026-10-26",
"bulletinDate": "2026-10-26",
"bulletinRef": "QA pressuposto sintético64; não boletim real",
"source": "https://www.bancomoc.mz/",
"sourceCurrency": "USD",
"direction": "mzn_per_unit",
"bulletinPerspective": "",
"relation": "",
"buy": "",
"sell": "",
"mean": "64",
"mode": "general",
"exceptionRef": "",
"exceptionScope": "",
"exceptionDate": "",
"exceptionRate": "",
"applied": {
"column": "mean",
"rate": "64",
"date": "2026-10-26",
"source": "QA pressuposto sintético64; não boletim real;https://www.bancomoc.mz/;perspectiva:média de referênciaBM;natureza:commercial;relação:não aplicável à média;Orientação operacional expressa da Tempo,25/10/2026:compra de moeda→taxa de compra;venda→taxa de venda;operações comerciais→taxa média de referência do Banco de Moçambique na data de submissão indicada. Interpretar compra/venda pela perspectiva do boletim. Excepções fiscais específicas conservam disposição,data,taxa e âmbito;sem recálculo automático dos históricos.",
"selectedAt": "2026-10-26T07:51:24.920Z",
"selectionKey": "{\"nature\":\"commercial\",\"submissionDate\":\"2026-10-26\",\"bulletinDate\":\"2026-10-26\",\"bulletinRef\":\"QA pressuposto sintético64; não boletim real\",\"source\":\"https://www.bancomoc.mz/\",\"sourceCurrency\":\"USD\",\"direction\":\"mzn_per_unit\",\"bulletinPerspective\":\"\",\"relation\":\"\",\"buy\":\"\",\"sell\":\"\",\"mean\":\"64\",\"mode\":\"general\",\"exceptionRef\":\"\",\"exceptionScope\":\"\",\"exceptionDate\":\"\",\"exceptionRate\":\"\"}"
}
}
},
{
"period": 12,
"currency": "USD",
"fxSelection": {
"nature": "commercial",
"submissionDate": "2026-10-26",
"bulletinDate": "2026-10-26",
"bulletinRef": "QA pressuposto sintético64; não boletim real",
"source": "https://www.bancomoc.mz/",
"sourceCurrency": "USD",
"direction": "mzn_per_unit",
"bulletinPerspective": "",
"relation": "",
"buy": "",
"sell": "",
"mean": "64",
"mode": "general",
"exceptionRef": "",
"exceptionScope": "",
"exceptionDate": "",
"exceptionRate": "",
"applied": {
"column": "mean",
"rate": "64",
"date": "2026-10-26",
"source": "QA pressuposto sintético64; não boletim real;https://www.bancomoc.mz/;perspectiva:média de referênciaBM;natureza:commercial;relação:não aplicável à média;Orientação operacional expressa da Tempo,25/10/2026:compra de moeda→taxa de compra;venda→taxa de venda;operações comerciais→taxa média de referência do Banco de Moçambique na data de submissão indicada. Interpretar compra/venda pela perspectiva do boletim. Excepções fiscais específicas conservam disposição,data,taxa e âmbito;sem recálculo automático dos históricos.",
"selectedAt": "2026-10-26T07:51:24.920Z",
"selectionKey": "{\"nature\":\"commercial\",\"submissionDate\":\"2026-10-26\",\"bulletinDate\":\"2026-10-26\",\"bulletinRef\":\"QA pressuposto sintético64; não boletim real\",\"source\":\"https://www.bancomoc.mz/\",\"sourceCurrency\":\"USD\",\"direction\":\"mzn_per_unit\",\"bulletinPerspective\":\"\",\"relation\":\"\",\"buy\":\"\",\"sell\":\"\",\"mean\":\"64\",\"mode\":\"general\",\"exceptionRef\":\"\",\"exceptionScope\":\"\",\"exceptionDate\":\"\",\"exceptionRate\":\"\"}"
}
}
}
]
},
"pending": []
},
"missing": {
"accountingProfit": null,
"taxableProfit": null,
"taxableBase": null,
"colecta": null,
"period": {
"version": 1,
"kind": "start",
"from": "2026-07-01",
"to": "2026-12-31",
"planStart": "2026-01-01",
"reference": "QA início documentado1Julho;correspondência completa dos meses7–12 ao período do sujeito",
"conversionReference": "QA pressuposto de simulação64MZN/USD aplicado aos meses seleccionados;sem regra fiscal anual confirmada",
"mznMapsReference": "QA activo/quotas/juros e demais mapas reconciliados explicitamente emMZN no período",
"months": [
{
"period": 7,
"currency": "USD",
"fxSelection": {
"nature": "commercial",
"submissionDate": "2026-10-26",
"bulletinDate": "2026-10-26",
"bulletinRef": "QA pressuposto sintético64; não boletim real",
"source": "https://www.bancomoc.mz/",
"sourceCurrency": "USD",
"direction": "mzn_per_unit",
"bulletinPerspective": "",
"relation": "",
"buy": "",
"sell": "",
"mean": "64",
"mode": "general",
"exceptionRef": "",
"exceptionScope": "",
"exceptionDate": "",
"exceptionRate": "",
"applied": {
"column": "mean",
"rate": "64",
"date": "2026-10-26",
"source": "QA pressuposto sintético64; não boletim real;https://www.bancomoc.mz/;perspectiva:média de referênciaBM;natureza:commercial;relação:não aplicável à média;Orientação operacional expressa da Tempo,25/10/2026:compra de moeda→taxa de compra;venda→taxa de venda;operações comerciais→taxa média de referência do Banco de Moçambique na data de submissão indicada. Interpretar compra/venda pela perspectiva do boletim. Excepções fiscais específicas conservam disposição,data,taxa e âmbito;sem recálculo automático dos históricos.",
"selectedAt": "2026-10-26T07:51:24.924Z",
"selectionKey": "{\"nature\":\"commercial\",\"submissionDate\":\"2026-10-26\",\"bulletinDate\":\"2026-10-26\",\"bulletinRef\":\"QA pressuposto sintético64; não boletim real\",\"source\":\"https://www.bancomoc.mz/\",\"sourceCurrency\":\"USD\",\"direction\":\"mzn_per_unit\",\"bulletinPerspective\":\"\",\"relation\":\"\",\"buy\":\"\",\"sell\":\"\",\"mean\":\"64\",\"mode\":\"general\",\"exceptionRef\":\"\",\"exceptionScope\":\"\",\"exceptionDate\":\"\",\"exceptionRate\":\"\"}"
}
}
},
{
"period": 8,
"currency": "USD",
"fxSelection": {
"nature": "commercial",
"submissionDate": "2026-10-26",
"bulletinDate": "2026-10-26",
"bulletinRef": "QA pressuposto sintético64; não boletim real",
"source": "https://www.bancomoc.mz/",
"sourceCurrency": "USD",
"direction": "mzn_per_unit",
"bulletinPerspective": "",
"relation": "",
"buy": "",
"sell": "",
"mean": "64",
"mode": "general",
"exceptionRef": "",
"exceptionScope": "",
"exceptionDate": "",
"exceptionRate": "",
"applied": {
"column": "mean",
"rate": "64",
"date": "2026-10-26",
"source": "QA pressuposto sintético64; não boletim real;https://www.bancomoc.mz/;perspectiva:média de referênciaBM;natureza:commercial;relação:não aplicável à média;Orientação operacional expressa da Tempo,25/10/2026:compra de moeda→taxa de compra;venda→taxa de venda;operações comerciais→taxa média de referência do Banco de Moçambique na data de submissão indicada. Interpretar compra/venda pela perspectiva do boletim. Excepções fiscais específicas conservam disposição,data,taxa e âmbito;sem recálculo automático dos históricos.",
"selectedAt": "2026-10-26T07:51:24.924Z",
"selectionKey": "{\"nature\":\"commercial\",\"submissionDate\":\"2026-10-26\",\"bulletinDate\":\"2026-10-26\",\"bulletinRef\":\"QA pressuposto sintético64; não boletim real\",\"source\":\"https://www.bancomoc.mz/\",\"sourceCurrency\":\"USD\",\"direction\":\"mzn_per_unit\",\"bulletinPerspective\":\"\",\"relation\":\"\",\"buy\":\"\",\"sell\":\"\",\"mean\":\"64\",\"mode\":\"general\",\"exceptionRef\":\"\",\"exceptionScope\":\"\",\"exceptionDate\":\"\",\"exceptionRate\":\"\"}"
}
}
},
{
"period": 9,
"currency": "USD",
"fxSelection": {
"nature": "commercial",
"submissionDate": "2026-10-26",
"bulletinDate": "2026-10-26",
"bulletinRef": "QA pressuposto sintético64; não boletim real",
"source": "https://www.bancomoc.mz/",
"sourceCurrency": "USD",
"direction": "mzn_per_unit",
"bulletinPerspective": "",
"relation": "",
"buy": "",
"sell": "",
"mean": "64",
"mode": "general",
"exceptionRef": "",
"exceptionScope": "",
"exceptionDate": "",
"exceptionRate": "",
"applied": {
"column": "mean",
"rate": "64",
"date": "2026-10-26",
"source": "QA pressuposto sintético64; não boletim real;https://www.bancomoc.mz/;perspectiva:média de referênciaBM;natureza:commercial;relação:não aplicável à média;Orientação operacional expressa da Tempo,25/10/2026:compra de moeda→taxa de compra;venda→taxa de venda;operações comerciais→taxa média de referência do Banco de Moçambique na data de submissão indicada. Interpretar compra/venda pela perspectiva do boletim. Excepções fiscais específicas conservam disposição,data,taxa e âmbito;sem recálculo automático dos históricos.",
"selectedAt": "2026-10-26T07:51:24.924Z",
"selectionKey": "{\"nature\":\"commercial\",\"submissionDate\":\"2026-10-26\",\"bulletinDate\":\"2026-10-26\",\"bulletinRef\":\"QA pressuposto sintético64; não boletim real\",\"source\":\"https://www.bancomoc.mz/\",\"sourceCurrency\":\"USD\",\"direction\":\"mzn_per_unit\",\"bulletinPerspective\":\"\",\"relation\":\"\",\"buy\":\"\",\"sell\":\"\",\"mean\":\"64\",\"mode\":\"general\",\"exceptionRef\":\"\",\"exceptionScope\":\"\",\"exceptionDate\":\"\",\"exceptionRate\":\"\"}"
}
}
},
{
"period": 10,
"currency": "USD",
"fxSelection": {
"nature": "commercial",
"submissionDate": "2026-10-26",
"bulletinDate": "2026-10-26",
"bulletinRef": "QA pressuposto sintético64; não boletim real",
"source": "https://www.bancomoc.mz/",
"sourceCurrency": "USD",
"direction": "mzn_per_unit",
"bulletinPerspective": "",
"relation": "",
"buy": "",
"sell": "",
"mean": "64",
"mode": "general",
"exceptionRef": "",
"exceptionScope": "",
"exceptionDate": "",
"exceptionRate": "",
"applied": {
"column": "mean",
"rate": "64",
"date": "2026-10-26",
"source": "QA pressuposto sintético64; não boletim real;https://www.bancomoc.mz/;perspectiva:média de referênciaBM;natureza:commercial;relação:não aplicável à média;Orientação operacional expressa da Tempo,25/10/2026:compra de moeda→taxa de compra;venda→taxa de venda;operações comerciais→taxa média de referência do Banco de Moçambique na data de submissão indicada. Interpretar compra/venda pela perspectiva do boletim. Excepções fiscais específicas conservam disposição,data,taxa e âmbito;sem recálculo automático dos históricos.",
"selectedAt": "2026-10-26T07:51:24.924Z",
"selectionKey": "{\"nature\":\"commercial\",\"submissionDate\":\"2026-10-26\",\"bulletinDate\":\"2026-10-26\",\"bulletinRef\":\"QA pressuposto sintético64; não boletim real\",\"source\":\"https://www.bancomoc.mz/\",\"sourceCurrency\":\"USD\",\"direction\":\"mzn_per_unit\",\"bulletinPerspective\":\"\",\"relation\":\"\",\"buy\":\"\",\"sell\":\"\",\"mean\":\"64\",\"mode\":\"general\",\"exceptionRef\":\"\",\"exceptionScope\":\"\",\"exceptionDate\":\"\",\"exceptionRate\":\"\"}"
}
}
},
{
"period": 11,
"currency": "USD",
"fxSelection": {
"nature": "commercial",
"submissionDate": "2026-10-26",
"bulletinDate": "2026-10-26",
"bulletinRef": "QA pressuposto sintético64; não boletim real",
"source": "https://www.bancomoc.mz/",
"sourceCurrency": "USD",
"direction": "mzn_per_unit",
"bulletinPerspective": "",
"relation": "",
"buy": "",
"sell": "",
"mean": "64",
"mode": "general",
"exceptionRef": "",
"exceptionScope": "",
"exceptionDate": "",
"exceptionRate": "",
"applied": {
"column": "mean",
"rate": "64",
"date": "2026-10-26",
"source": "QA pressuposto sintético64; não boletim real;https://www.bancomoc.mz/;perspectiva:média de referênciaBM;natureza:commercial;relação:não aplicável à média;Orientação operacional expressa da Tempo,25/10/2026:compra de moeda→taxa de compra;venda→taxa de venda;operações comerciais→taxa média de referência do Banco de Moçambique na data de submissão indicada. Interpretar compra/venda pela perspectiva do boletim. Excepções fiscais específicas conservam disposição,data,taxa e âmbito;sem recálculo automático dos históricos.",
"selectedAt": "2026-10-26T07:51:24.924Z",
"selectionKey": "{\"nature\":\"commercial\",\"submissionDate\":\"2026-10-26\",\"bulletinDate\":\"2026-10-26\",\"bulletinRef\":\"QA pressuposto sintético64; não boletim real\",\"source\":\"https://www.bancomoc.mz/\",\"sourceCurrency\":\"USD\",\"direction\":\"mzn_per_unit\",\"bulletinPerspective\":\"\",\"relation\":\"\",\"buy\":\"\",\"sell\":\"\",\"mean\":\"64\",\"mode\":\"general\",\"exceptionRef\":\"\",\"exceptionScope\":\"\",\"exceptionDate\":\"\",\"exceptionRate\":\"\"}"
}
}
}
]
},
"pending": [
"revenue/mês12: Error: Selecção cambial deste mês/moeda em falta;sem usar taxa de outro mês por defeito.",
"cost_of_sales/mês12: Error: Selecção cambial deste mês/moeda em falta;sem usar taxa de outro mês por defeito.",
"operating_expenses/mês12: Error: Selecção cambial deste mês/moeda em falta;sem usar taxa de outro mês por defeito.",
"personnel/mês12: Error: Selecção cambial deste mês/moeda em falta;sem usar taxa de outro mês por defeito.",
"depreciation/mês12: Error: Selecção cambial deste mês/moeda em falta;sem usar taxa de outro mês por defeito.",
"interest_expense/mês12: Error: Selecção cambial deste mês/moeda em falta;sem usar taxa de outro mês por defeito."
]
},
"loss": {
"accountingProfit": {
"numerator": "3120",
"denominator": "1"
},
"taxableProfit": {
"numerator": "3130",
"denominator": "1"
},
"taxableBase": null,
"colecta": null,
"period": {
"version": 1,
"kind": "start",
"from": "2026-07-01",
"to": "2026-12-31",
"planStart": "2026-01-01",
"reference": "QA início documentado1Julho;correspondência completa dos meses7–12 ao período do sujeito",
"conversionReference": "",
"mznMapsReference": "QA activo/quotas/juros e demais mapas reconciliados explicitamente emMZN no período",
"months": []
},
"pending": []
}
},
"verification": {
"frontend_tests": 13,
"API_tests": 1,
"API_assertions": 58,
"database": "127.0.0.1:55441/simulator_fiscal_delta_20261021_test;DatabaseTransactions rollback",
"routes_actions": "generated by guarded existing procedure",
"typescript": "passed",
"build": "passed",
"UI": "actual component;dates/FX edit+confirmation;originals/assumptions;save/recovery/export;missingdata",
"accepted_proofs": "reused"
},
"runtime_delta": [
{
"path": "resources/js/components/simulation-irpc-normal.tsx",
"sha256_LF": "557714bb3af75080e443ae67b11a66d9feb49d9a4b269065769b128a6d712837"
},
{
"path": "resources/js/components/simulation-irpc-period-fx.tsx",
"sha256_LF": "4b5f718b5ef415ecf5f96dabb0e3806254558c20905de6478e10dacf67569c49"
},
{
"path": "resources/js/components/simulation-irpc-schedules.tsx",
"sha256_LF": "3768c316d5887d337eb3647671863c9464f961d1df4703403e7d57e5641273ed"
},
{
"path": "resources/js/lib/irpc-normal-assessment.ts",
"sha256_LF": "a9b3ced852e37e3e087ce5dab1add4ec0737145ce19f61857a54d5d3d24a6f8c"
},
{
"path": "resources/js/lib/irpc-normal-base.ts",
"sha256_LF": "22019d678f6eb16fead2207dc3d3fa9fd63413c6254633c1ffd4f1c0320344ac"
},
{
"path": "resources/js/lib/irpc-normal-costs.ts",
"sha256_LF": "471457692a2a2f70a1bd1c7abb38d3ce42f07b62a63e5a4ab985ad1bbd068b46"
},
{
"path": "resources/js/lib/irpc-normal-depreciation.ts",
"sha256_LF": "1dad3053157aeac44f6d3bd58885cfc47a73c19d2808284c16931679dfe4291b"
},
{
"path": "resources/js/lib/irpc-normal-period-fx.ts",
"sha256_LF": "a2e7b066623eae17f0d8185d065d0adf5d3a485f780f8b09118a664dc4ba0531"
},
{
"path": "resources/js/lib/irpc-normal.ts",
"sha256_LF": "e4de2fe0421e489bf555885b9cbb459c00ee77803ea9b6e5af45179bd6bb4f21"
}
],
"protected_runtime": [
{
"path": "resources/js/components/simulation-irpc-depreciation.tsx",
"sha256_LF": "1f9918bfb435bb5b7c0ddd2fafd7bace2a02514c6ece04b93f15975e494a5f53"
},
{
"path": "resources/js/lib/irpc-normal-profit.ts",
"sha256_LF": "909e129a0245e6bf098317485b886a2d19e02c64bbfd9c6f718e98ec6b935b8d"
},
{
"path": "resources/js/lib/irpc-normal-schedules.ts",
"sha256_LF": "edfb6fd338411fa8f87a6bdf9a9d4fd5c6dc2fad9d2eb3d32f2640e2951cbbe9"
},
{
"path": "resources/js/components/simulation-irpc-costs.tsx",
"sha256_LF": "c4156916835daf0f33addf89dfedd40c31b8dc3297112cd98beac33422af274d"
},
{
"path": "resources/js/lib/irpc-normal-forms.ts",
"sha256_LF": "4e986addb9f2d74e7a80345f8f1e4d8e0b2f562c867fa6eee84880d9f72a3649"
},
{
"path": "resources/js/components/simulation-irpc-taxable-base.tsx",
"sha256_LF": "e4fe9f66d35d24aa68fd87de6a5a6a0e901706b270c18962fd0c7ab00f9abd93"
},
{
"path": "resources/js/components/simulation-irpc-assessment.tsx",
"sha256_LF": "7174cc0160005a0c332ea40f02ba8a6d57985081b5ab45177ccd6e721bceea54"
},
{
"path": "resources/js/components/acquisition-beverage-restitution.tsx",
"sha256_LF": "6f44897b8b12569314551df0022c26da57a165634087942a724293e66837558d"
},
{
"path": "resources/js/components/fiscal-calculation-gaps.tsx",
"sha256_LF": "1dab6ceb73756d4e023096b3b2ba767aaa843ff6cc69046ea630ab449a00b0dd"
},
{
"path": "resources/js/components/fiscal-l3-preparation.tsx",
"sha256_LF": "e84a7b1ccadaa1b5bd78d778a3287f96ccaf530855eef404786cd7aa3d321b73"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256_LF": "c206d4cfe575d6ba007aa2b425b5f898efa97e4162b8710e358b6ecfd9458542"
},
{
"path": "resources/js/components/simulation-operations.tsx",
"sha256_LF": "a7e55972fa790063dcf11945055de2af46a77db9e509900af22ede7ec47bb4cf"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256_LF": "b0ef55e0917bdb79f14b53ba9e95d73c08153befeb7d4ce73f81e6fb13992225"
},
{
"path": "resources/js/lib/iva-beverage-allocation.ts",
"sha256_LF": "32968d198c7fe0c53ca89641c22d5749be6636be2c79127b867e4e3afd0dd40d"
},
{
"path": "resources/js/lib/iva-beverage-restitution.ts",
"sha256_LF": "5c650cbd9469d5f99001f56fc4ff99ac973eb368036d4e96c6d171f1b220bd9e"
},
{
"path": "resources/js/lib/iva-calculation-gaps.ts",
"sha256_LF": "2e7d84a0c196bd5b56fd67cc1a389d43d5041894184e675680a4de3cd10b31a2"
},
{
"path": "resources/js/lib/iva-operations.ts",
"sha256_LF": "ec37b949f1233c5f5c14a87450c421ed29fabf1ed5b73fb32564564a2bc31f54"
},
{
"path": "resources/js/lib/l3-form-preparation.ts",
"sha256_LF": "fc47f5fa5ec1420fbd847d0d081f00d99ebbb524164eef785b20877e0562f704"
},
{
"path": "resources/js/lib/ispc-residuals.ts",
"sha256_LF": "40d5751c06c7c155ab4b7a17ee2d1653da2fbbf075807fbb8561cdbe19820955"
},
{
"path": "resources/js/components/simulation-ispc-residuals.tsx",
"sha256_LF": "a9219d6f41ccbd0ce45659d4f6aa0fa1c169a685840f5cb1e18daeca377d5e18"
},
{
"path": "resources/js/lib/ispc-eligibility.ts",
"sha256_LF": "44675c5efacdc1ae19505667611ba3b522d3043cebacc8754597c3a68ca89d25"
},
{
"path": "resources/js/components/simulation-ispc-quarter.tsx",
"sha256_LF": "2c2555309b32d4261f14e7164f39314c9188129c2990357fc54090a2468dd2b4"
},
{
"path": "resources/js/components/simulation-ispc-withholding.tsx",
"sha256_LF": "e0445d015b72859e48726959aa52686f79b1cf5c2ade29751efa83257068b878"
},
{
"path": "resources/js/lib/ispc-quarter.ts",
"sha256_LF": "f66bd52e9cdfe1ddaa6b00a931465862b3d890b9be216b7a056740f027f24129"
},
{
"path": "resources/js/lib/ispc-withholding.ts",
"sha256_LF": "6c31b240299edd3262efa28f7f3d5aee21123f94e30ef4ab90e26c35777cb6e4"
},
{
"path": "resources/js/components/simulation-ispc-eligibility.tsx",
"sha256_LF": "f48dd4a8f87a994eda0447f81a463589905e5873b2e1044debac9d10825a880c"
},
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256_LF": "cce283b1d0a07fb383fcb527225f4dd5bec829010a662cbaae1d60e595221977"
},
{
"path": "resources/js/lib/iva-modelo-a.ts",
"sha256_LF": "c641619a05613c1620385baad0e9ffbf810dd970aafb30e12b3a7f9a3bf11846"
},
{
"path": "resources/js/lib/iva-fx-selection.ts",
"sha256_LF": "9aa07ad443bc777b80510a3b5bd6aff9ddb9814d2450f3c690e531e74d71d998"
},
{
"path": "resources/js/components/simulation-fx-selection.tsx",
"sha256_LF": "39bb6d87d404745b0b66349bc11626545a3672ae27321ce9b4658416592059bf"
},
{
"path": "resources/js/lib/business-financial-plan.ts",
"sha256_LF": "c20274722d1ffcd0360f041a6cacb5d868fe0621cb27a1aca6e06826612c3ebb"
},
{
"path": "resources/js/lib/iva-currency-events.ts",
"sha256_LF": "cc9f2045d302d7987310da4006cc250fc5c99a27397918d166d649bfc32fab08"
},
{
"path": "resources/js/lib/irpc-fx.ts",
"sha256_LF": "5c4a7a477429f8d775acf6db3e117008468f5554e5731dec81f60fbb75e948fb"
},
{
"path": "resources/js/lib/irpc-withholdings.ts",
"sha256_LF": "8e5f3c035ce5e4d6c3fc82f933439ab580fa5519492f9c4d32cfb71b77b54803"
},
{
"path": "resources/js/components/simulation-irpc-withholdings.tsx",
"sha256_LF": "751af4fab346659bc5ccb08b8a2169769af7521ea0035050af32b41ea7f5aa76"
},
{
"path": "resources/js/lib/irpc-interest.ts",
"sha256_LF": "f8e6390b3b2c58c296f7e3fd14576e06ae248bc0cabce1a666b7094611f2a7dd"
},
{
"path": "resources/js/lib/irpc-mrfta.ts",
"sha256_LF": "76dcce8954f68b081d500be61de9c5b146a452a3eb578a0b78776ba9e1f8051c"
},
{
"path": "resources/js/lib/irpc-mrfta-cases.ts",
"sha256_LF": "4266746076ab3f70312fd042351e24dd2f136c4f3e8a277b57dd97849a9f1862"
},
{
"path": "resources/js/components/simulation-irpc-mrfta.tsx",
"sha256_LF": "913d1bb4ac0fc59763cf5d27bc637f6a713b2050c4463748db554af4be451538"
},
{
"path": "resources/js/lib/financial-fiscal-bridge.ts",
"sha256_LF": "5a30c501653b16b5fedcb12631ce81fcce4fe473aa542e94374986b3c50f2d33"
},
{
"path": "resources/js/components/simulation-form.tsx",
"sha256_LF": "85b024a7f45ceb52efd6ff1f21d0eab1fd8fcf1ab59e4b5302c08685235c472a"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "a0909bbfcdf7e8542b010faa104fcb918e86ae38ddf096082d4d5be98d31b2b9"
},
{
"path": "resources/js/lib/project-dossier-report.ts",
"sha256_LF": "5207a2ffeb208cd5ace6713038cee85208020ee618194dca7114e94fc3200b6c"
}
],
"originals_preserved": [
{
"path": "docs/investmoz/simulations/source-archive/AT-Comunicado-9-2026-ISPC.pdf",
"sha256": "106f8a9ce9255c03549c70bf07fe999d32e6e55302d009b509862aa74ccb4973"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-30-ISPC.pdf",
"sha256": "6802edd06b6ff638a0b851a3ec7ecf69af8f07840faa47446becad67d35d445c"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-B-Geral.pdf",
"sha256": "bd977c7c59d4d98befd92e2c566b1bf168cb1343bb519f51b41a3807f431fc57"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-MRFTA-19-39.pdf",
"sha256": "8ea62c53066b482f87078a7a7b1ecf15ca98a12a122e8d7abca63acfc993186b"
},
{
"path": "docs/investmoz/simulations/source-archive/BM-Mercado-Monetario-MAIBOR-20261025.html",
"sha256": "00e8a7e0d3a1db4ca3beb56d5361b2084a0f1684f3d40fc1c203702a2190e063"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf",
"sha256": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-89-I-Serie-2017-06-08.pdf",
"sha256": "11f0cab15eb6e51010952203ffa24fdc533a24fd642e19525fe4f46b17a1f5e5"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-95-I-Suplemento-2025-05-21.pdf",
"sha256": "e0e682e2c027c3cd9c1d46a73a3f48bc5f6bdbf05667fd97314d7a3f6a456358"
},
{
"path": "docs/investmoz/simulations/source-archive/BR252-I-Serie-2022-Lei20-PESOE.pdf",
"sha256": "1159fd3ce1ba5581671796d083534da48bd3c5578298819e896f1c2a8026318d"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-22-2021-BR70.pdf",
"sha256": "a8fac38dcfe08f9c7a8e46254cff10e1ec82fc4f7a8d88ad6e4fe7d91ffc21a5"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-27-2026-BR123.pdf",
"sha256": "26249c3fa58f149c81de36e99d1aac2819a4771379d9e8833159660dabf539bb"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-29-1998-BR22-5-suplemento.pdf",
"sha256": "6242cbe675faadf085f43f95ec8c7e8868aafe67c3b2ab2bb010992288f954f8"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-3-2011-BR-11-I-mineiros.pdf",
"sha256": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-37-2023-BR124.pdf",
"sha256": "7e680b191481faa0e2e9057fa5053587eb2a29d1d8c819e0eb9f02814255a04c"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-9-2008-BR16.pdf",
"sha256": "96fccdecbfdc11c9eafb90fbc6c7bc259f88bbd4c7507d1ac3af1fa03f960697"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf",
"sha256": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-14-1992-BR42.pdf",
"sha256": "089fff7423e99a70a230a73ca379e4ea3a91d124703f91016e57ff82794b9e56"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-BR251-exemplar-MCNet5.pdf",
"sha256": "14eb34f0af91a8f5cb1770c7b52d6ff839c6818302d1ed96d79afbfb9fe999d4"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-IPP-BR250-Parlamento.pdf",
"sha256": "978cd22403ffd336a631704ecd7a5bbd814a427c815b9acdaca5515591dd9e2a"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2013-BR76.pdf",
"sha256": "bba96d645cc935ffc3d1a79b9f0f73ac1c693d6459c2ad41f56cd2841accae76"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2017-IRPS-BR-OCAM.pdf",
"sha256": "c3a0186cb9ad090d7a9533006295dc9bb6a62ad0d6150173cbd49dba4ee4b52d"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-2-2011-BR-1-4-suplemento-MCNet.pdf",
"sha256": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-20-2009-BR36-AT-exemplar19.pdf",
"sha256": "fc1c8144db42960cbf73e717e095896f511ece0f907f58f78819b27d6917a7ee"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf",
"sha256": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-34-2007-BR52.pdf",
"sha256": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-1994-BR37-3-suplemento.pdf",
"sha256": "210df9db8980d0a5690cd187a6eeec7e37a900d743e39062c16f4e0d12215c7e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-2012-BR3.pdf",
"sha256": "b8845cef41dcbd9ba50c43dbfa743a56030dd3d348242a107e1ae30279eec121"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-7-1991-Partidos-IFES.pdf",
"sha256": "6b783a0bb3330688ef10660a58060d9724aa2da6a873d234fe902f0eaaeda42d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-CDT-1992.pdf",
"sha256": "d504e1024b28aee5c6acf4592acb96ec9c915a8414f67a61ab6984d6acf9df9d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-Protocolo-2009.pdf",
"sha256": "f353773dcf41f09f4daa6cf5ba5a5f7994f3e02615867c2dcffc61c3d901bf9b"
}
],
"source_evidence": {
"CIRPC": "Lei34/2007 PDF4 art7(4)/(7),PDF12 art41(5);original preserved",
"decree72_reused_sha256": "922ef67cb0c1111405c3c0a092d8c302a74fba8a34d627b6e9e13223612e0659",
"visual_pages": [
"cirpc-page4.png",
"cirpc-page12.png",
"decreto72-page3.png"
]
},
"installed7_fixture_sha256": "d58beac3cf7db665a632f516a736f754a5874f82585291dfbc5fa6bcda654d0d",
"history_versions1_to7": "unchanged;optional8;source plan not rewritten",
"FX_engine": "Existing selectFx/convertIrpcAmount/convertCents/direction/evidence/link unchanged;monthly assumptions explicit;no fiscal annual rule asserted",
"FX_rate64": "synthetic QA assumption,not real BM bulletin",
"schema_API_config_permissions_dependencies_changed": false,
"active_data_changed": false,
"L6_complete": false,
"L7_L8_own_scopes": true,
"remaining_reference": "Same matrix section26/10 períodos curtos e planos noutra moeda;concrete conditions per case",
"proof_sha256": {
"api.txt": "e2c50de5a45a76cdd596d4093974b88c449d23ba8011edf5f8a6325d2cf01d07",
"build-exit.txt": "13bf7b3039c63bf5a50491fa3cfd8eb4e699d1ba1436315aef9cbe5711530354",
"build.txt": "9b167ca7bcd724a65f6a4030a46ce9e81accaad5a2e80160b623ca3807400bc7",
"cirpc-page12.png": "12bb97ef4964b69816c30894bca201cedf2dcbadb29b3be9e867f2325e575abd",
"cirpc-page4.png": "3f6fdfd75d4fef4d07f461969675118f5f000c33ab593fcb6e0ee0fc93f56737",
"cirpc.txt": "c3ba3b845fcb12c25bc28b08485f3e5d70034895ece4ff60cf640fd0be796f9a",
"decreto-72-2013.pdf": "922ef67cb0c1111405c3c0a092d8c302a74fba8a34d627b6e9e13223612e0659",
"decreto72-page3.png": "4a150dd00dc7c7d4602c231bb42ebea5d7505917f1e21781c2d967cf5da8e327",
"dossier-fx.json": "5d1e429a48e8fd6c53a9116b3176641146e2aa6b68c888558ac6c4ff0950138c",
"dossier-loss.json": "862ee41f5b38546255335ab569039e52388d64f7bf30f38c3033f6f583e04d7c",
"dossier-missing.json": "514c2386e8e1cd687545c880fd5e66a0099c851433c0c8f337439a69e56db5b1",
"dossier-short.json": "cdab2ed8019f46f132f600c6b301d99ad44e8027926117abf3e57eb6c6000071",
"dossier.mjs": "cd967cfdba196bf0b7c691fe418f38dd39232030c6e601c22f8e25bd27e93d46",
"download.html": "95f59ff469af21bc2a41225358769bf99f25cf056479ff9a9c3d1dad4cb5f521",
"frontend.txt": "d9c7e51b63e020bf35d2a4a3aa22f29ca71d003e4bcf22b111e90173e442745b",
"fx.html": "5bae85164ca7cec78d76fc4c72c3c33cdaca70c63c42929c8e037ab7e91ba93f",
"fx.json": "e92ed4b718eef390aef573728a459679fdd3130bdf923db4cfd8f7a560958fbf",
"index.html": "09941968500d2910121bdcb0029e326fc6d44bb025b01766654289a28caa62fa",
"loss.html": "b672fd43361efcc81c4da4f83b7eba12dd9bd7799de0b463f248928065a4de97",
"loss.json": "07e56fb88034d377ca9bc2b098b9a4a266058a46aeb7b127a99b3c539bceec1b",
"missing.html": "ed41bf1b5ffab532a59b8e07d8a3700bd62576bc15c9256750c84a371a2cbc8a",
"missing.json": "5022f8eddd7f09b9a10a837f0e407e7db3619e27302e19f367923a956ebe47a6",
"qa.tsx": "c7c06f793e4a5aa3df70f36ec6681a6399b6016f27168d18917be2f22dffdbaf",
"recovered-fx.html": "5bae85164ca7cec78d76fc4c72c3c33cdaca70c63c42929c8e037ab7e91ba93f",
"recovered-fx.json": "2c7d1e8858af254930bff8a420f3369475ebd335ca4251b4ddc691558ed1c9aa",
"recovered-loss.html": "b672fd43361efcc81c4da4f83b7eba12dd9bd7799de0b463f248928065a4de97",
"recovered-loss.json": "2618a36d92005ebf791c938687662789086d351606f95f62f4eb1133f4b029e2",
"recovered-missing.html": "ed41bf1b5ffab532a59b8e07d8a3700bd62576bc15c9256750c84a371a2cbc8a",
"recovered-missing.json": "094b1ee4822bdcee6ac8ce5dc9ea5cfc178bf555b15f31a6cd2a1c6becd759ae",
"recovered-short.html": "955f182b29c160774bacc8997477c2da44cd1fcc401d1ed1955fa62f9f94d743",
"recovered-short.json": "e4399308561d5f412c9bb803c83fd6e045d89d24986a4d6a8279c2977044bb96",
"short.html": "955f182b29c160774bacc8997477c2da44cd1fcc401d1ed1955fa62f9f94d743",
"short.json": "a6b0e4ea322353f84c0ba6ff09d6cf89ee270dbefb850f225c4f8fe4485f68fb",
"types.txt": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"ui-fx.png": "deaede13c0c4eb6cc74ce0a55fc9b7bc2948f52fe7863ffc53ab83ca42456587",
"ui-proof.json": "56b6005ea84dfd370ac55167a5f47d19bffcee8408982c2046cb1ad27ecc9f20",
"ui-short.png": "b716d583fc3ca286c2e19cbeefca018ec08e8b75e0e95499ff7d27ab06a843d6",
"ui.cjs": "1f5506f7865cdbfcfa8aea853be241bab849807e6d641f3c5596534727cb5938",
"ui.txt": "85e77d9f361edf72d68990272040cc9b6edab3cc0873f921b1d5e561dc0553af",
"vite.config.ts": "0351ec239d5a6ba429ee17b9aa68757e31f59902f8f88a522afdd56bd3b44879"
}
}
@@ -0,0 +1,599 @@
{
"status": "installed_joint_L6_through_scoped_simulated_taxable_profit",
"installed": {
"status": "installed",
"commit": "5e02c23af863485f6881e409c8704ec7e7573cc9",
"release": "/var/www/investmoz-homologacao/releases/5e02c23af863485f6881e409c8704ec7e7573cc9-e83fcca2",
"previous_release": "/var/www/investmoz-homologacao/releases/7a11c4ef8f06ef149eb0488be3cd0749dc609bd0-68c76bdc",
"database_migrations": 0,
"content_imports": 0
},
"previous_baseline": "7a11c4ef8f06ef149eb0488be3cd0749dc609bd0",
"backup": {
"stage": "/var/backups/investmoz-irpc-l6-profit-delivery-20261025/backup",
"created_at": "2026-10-25T19:38:10Z",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "5dfb2cd96d7c440e12ec860080660ee1e88f8704075f9814e3225421ab007c71",
"files_sha256": "117c6e457320c08b63cd69599f63c676f48ad8b90cac5d6091e9d748c8b8850c",
"restore_verified": false
},
"restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "irpc_l5_restore_20261025",
"port": 55441,
"source_dump_sha256": "5dfb2cd96d7c440e12ec860080660ee1e88f8704075f9814e3225421ab007c71",
"active_database_writes": 0
},
"preservation": {
"previous_release_preserved": "/var/www/investmoz-homologacao/releases/7a11c4ef8f06ef149eb0488be3cd0749dc609bd0-68c76bdc",
"installed": {
"status": "installed",
"commit": "5e02c23af863485f6881e409c8704ec7e7573cc9",
"release": "/var/www/investmoz-homologacao/releases/5e02c23af863485f6881e409c8704ec7e7573cc9-e83fcca2",
"previous_release": "/var/www/investmoz-homologacao/releases/7a11c4ef8f06ef149eb0488be3cd0749dc609bd0-68c76bdc",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 6,
"preserved_L3_ISPC_FX_runtime_files_verified": 33,
"documentary_files_verified": 31,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "ed89c778b68dc12d870c1e1883be7e90"
},
"after": {
"rows": 106,
"checksum": "767a064eedb1c472eee28f9a0a59c907"
}
},
"sessions": {
"before": {
"rows": 25,
"checksum": "2821ae7c8c768e6f77acf2820265e3db"
},
"after": {
"rows": 26,
"checksum": "179f6c6d10853b16bb62ee44f1b7ca41"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"schema_permissions": {
"schema_sha256": "5045b3e51d2185377aa3d9ac7fa07a44fad3ec620cdfa83ffe31c8884ee1601d",
"roles_grants_sha256": "1530c33cb016e67bfdc64891ddfce7f185b13b56b2cd87c012871a685e118109",
"filesystem_permissions": {
".env": {
"mode": 416,
"uid": 1001,
"gid": 33
},
"storage": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"storage/app": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"bootstrap/cache": {
"mode": 1528,
"uid": 1001,
"gid": 33
}
},
"comparison_identity": "postgres;catalogue read only;no passwords collected",
"unchanged": true
},
"operational_delta": {
"status": "operational_delta_reconciled",
"comparison_identity": "postgres before/after;isolated restored baseline;no RLS visibility inference",
"cache": "queue:restart value/expiry and request-throttle counter/timer pair;no deleted cache rows",
"sessions": "anonymous sessions created by exact delivery verification user-agent",
"delta": {
"cache": {
"before_rows": 106,
"after_rows": 106,
"changes": [
{
"key_sha256": "8d6ea77eb4b34d86d207362d583cfa8bf2880b907becd9b00398964482c6b4bd",
"kind": "updated",
"fields": [
"expiration"
],
"key_pattern": "investemoz-cache-{hash}",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true
},
{
"key_sha256": "2f251473865d14b953236ab95b1521764754d76abd79b58ca7d38c96dfe2fab1",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-{hash}:timer",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true
},
{
"key_sha256": "7f7dd83f47f5bf404d55e6e9f1367948721579970b195680645e356031a070ff",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-illuminate:queue:restart",
"is_queue_restart_key": true,
"expiration_unchanged": false,
"throttle_timer_pair": false
}
]
},
"sessions": {
"before_rows": 25,
"after_rows": 28,
"changes": [
{
"key_sha256": "7ed81a892bf75b5fda7e5071799a98d547242fcc64a5a29c0f169994073eb2ba",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
},
{
"key_sha256": "f72c5658d3a886e194bf35fa62f9c2c94c793790736bf253f9520936c75844f9",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
},
{
"key_sha256": "c28bc1e32e3d9c0eca1c9e1ad610e6b238ea101b609bff46a41a1f7a416bf83b",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
}
]
}
},
"business_tables_to_confirm_separately": 172,
"active_data_writes_by_comparison": 0,
"restore_network": "none"
},
"public_verification": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "5e02c23af863485f6881e409c8704ec7e7573cc9",
"branch": "main",
"built_at": "2026-10-25T19:41:48.731555+00:00",
"manifest_sha256": "316ad1f339fe14d64c8dce10ddf9c2ecc2080ce400fc9e87f9700de6e7333a59"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"Iniciar conferência até ao lucro tributável": [
"assets/services-cKAPGaXt.js"
],
"Suporte da completude do sujeito passivo no exercício": [
"assets/services-cKAPGaXt.js"
],
"Valor conhecido zero com suporte;distinto de ausência declarada.": [
"assets/project-dossier-B6lVijAe.js"
],
"Ausência declarada contradiz o montante conhecido da origem.": [
"assets/project-dossier-B6lVijAe.js"
],
"lucro tributável simulado:": [
"assets/project-dossier-B6lVijAe.js"
],
"Simulação pelos pressupostos introduzidos, sem confirmação fiscal dos juros.": [
"assets/services-cKAPGaXt.js"
],
"Códigos provisórios ou de simulação não são correspondências oficiais.": [
"assets/project-dossier-B6lVijAe.js"
],
"Calcular e guardar apuramento trimestral ISPC": [
"assets/services-cKAPGaXt.js"
],
"Calcular e guardar restituição E": [
"assets/services-cKAPGaXt.js"
],
"Reutilizar selecção cambial": [
"assets/services-cKAPGaXt.js"
]
},
"assets": [
{
"file": "assets/project-dossier-B6lVijAe.js",
"status": 200,
"sha256": "2882700d6723356a13be75f2287d9b71da3ba601ae95dee0e7c4b2cd9d31d690"
},
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
},
{
"file": "assets/services-cKAPGaXt.js",
"status": 200,
"sha256": "a62d8c8859d285db2fcddb89e93b358f6e8ceb2ee076d93c7ff1ea2934c5a8e1"
},
{
"file": "assets/project-dossier-document-bIxweCUO.js",
"status": 200,
"sha256": "88d93dd8177ed4b651b6f0b01ab494df38572bf136869a857581c8ab9b473dab"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-Q-Wi-bGe.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"runtime_delta": [
{
"path": "resources/js/lib/irpc-normal.ts",
"sha256_LF": "387292520216d3d37870e4080880e5ec026702977a2f4c556be6c82dd34a7fce"
},
{
"path": "resources/js/components/simulation-irpc-normal.tsx",
"sha256_LF": "d15a42d6bc295a4794b8427c668780335305d6091363002b570109aa0ac1aef9"
},
{
"path": "resources/js/components/simulation-form.tsx",
"sha256_LF": "85b024a7f45ceb52efd6ff1f21d0eab1fd8fcf1ab59e4b5302c08685235c472a"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "a0909bbfcdf7e8542b010faa104fcb918e86ae38ddf096082d4d5be98d31b2b9"
},
{
"path": "resources/js/lib/project-dossier-report.ts",
"sha256_LF": "5207a2ffeb208cd5ace6713038cee85208020ee618194dca7114e94fc3200b6c"
},
{
"path": "resources/js/lib/irpc-normal-profit.ts",
"sha256_LF": "35dc586d9ab6c77405f3a46ed2ce3d9db74c54f338314d5e3c4959f0b6a55860"
}
],
"protected_runtime": [
{
"path": "resources/js/components/acquisition-beverage-restitution.tsx",
"sha256": "6f44897b8b12569314551df0022c26da57a165634087942a724293e66837558d"
},
{
"path": "resources/js/components/fiscal-calculation-gaps.tsx",
"sha256": "1dab6ceb73756d4e023096b3b2ba767aaa843ff6cc69046ea630ab449a00b0dd"
},
{
"path": "resources/js/components/fiscal-l3-preparation.tsx",
"sha256": "e84a7b1ccadaa1b5bd78d778a3287f96ccaf530855eef404786cd7aa3d321b73"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256": "c206d4cfe575d6ba007aa2b425b5f898efa97e4162b8710e358b6ecfd9458542"
},
{
"path": "resources/js/components/simulation-operations.tsx",
"sha256": "a7e55972fa790063dcf11945055de2af46a77db9e509900af22ede7ec47bb4cf"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256": "b0ef55e0917bdb79f14b53ba9e95d73c08153befeb7d4ce73f81e6fb13992225"
},
{
"path": "resources/js/lib/iva-beverage-allocation.ts",
"sha256": "32968d198c7fe0c53ca89641c22d5749be6636be2c79127b867e4e3afd0dd40d"
},
{
"path": "resources/js/lib/iva-beverage-restitution.ts",
"sha256": "5c650cbd9469d5f99001f56fc4ff99ac973eb368036d4e96c6d171f1b220bd9e"
},
{
"path": "resources/js/lib/iva-calculation-gaps.ts",
"sha256": "2e7d84a0c196bd5b56fd67cc1a389d43d5041894184e675680a4de3cd10b31a2"
},
{
"path": "resources/js/lib/iva-operations.ts",
"sha256": "ec37b949f1233c5f5c14a87450c421ed29fabf1ed5b73fb32564564a2bc31f54"
},
{
"path": "resources/js/lib/l3-form-preparation.ts",
"sha256": "fc47f5fa5ec1420fbd847d0d081f00d99ebbb524164eef785b20877e0562f704"
},
{
"path": "resources/js/lib/ispc-residuals.ts",
"sha256": "40d5751c06c7c155ab4b7a17ee2d1653da2fbbf075807fbb8561cdbe19820955"
},
{
"path": "resources/js/components/simulation-ispc-residuals.tsx",
"sha256": "a9219d6f41ccbd0ce45659d4f6aa0fa1c169a685840f5cb1e18daeca377d5e18"
},
{
"path": "resources/js/lib/ispc-eligibility.ts",
"sha256": "44675c5efacdc1ae19505667611ba3b522d3043cebacc8754597c3a68ca89d25"
},
{
"path": "resources/js/components/simulation-ispc-quarter.tsx",
"sha256": "2c2555309b32d4261f14e7164f39314c9188129c2990357fc54090a2468dd2b4"
},
{
"path": "resources/js/components/simulation-ispc-withholding.tsx",
"sha256": "e0445d015b72859e48726959aa52686f79b1cf5c2ade29751efa83257068b878"
},
{
"path": "resources/js/lib/ispc-quarter.ts",
"sha256": "f66bd52e9cdfe1ddaa6b00a931465862b3d890b9be216b7a056740f027f24129"
},
{
"path": "resources/js/lib/ispc-withholding.ts",
"sha256": "6c31b240299edd3262efa28f7f3d5aee21123f94e30ef4ab90e26c35777cb6e4"
},
{
"path": "resources/js/components/simulation-ispc-eligibility.tsx",
"sha256": "f48dd4a8f87a994eda0447f81a463589905e5873b2e1044debac9d10825a880c"
},
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256": "cce283b1d0a07fb383fcb527225f4dd5bec829010a662cbaae1d60e595221977"
},
{
"path": "resources/js/lib/iva-modelo-a.ts",
"sha256": "c641619a05613c1620385baad0e9ffbf810dd970aafb30e12b3a7f9a3bf11846"
},
{
"path": "resources/js/lib/iva-fx-selection.ts",
"sha256": "9aa07ad443bc777b80510a3b5bd6aff9ddb9814d2450f3c690e531e74d71d998"
},
{
"path": "resources/js/components/simulation-fx-selection.tsx",
"sha256": "39bb6d87d404745b0b66349bc11626545a3672ae27321ce9b4658416592059bf"
},
{
"path": "resources/js/lib/business-financial-plan.ts",
"sha256": "c20274722d1ffcd0360f041a6cacb5d868fe0621cb27a1aca6e06826612c3ebb"
},
{
"path": "resources/js/lib/iva-currency-events.ts",
"sha256": "cc9f2045d302d7987310da4006cc250fc5c99a27397918d166d649bfc32fab08"
},
{
"path": "resources/js/lib/irpc-fx.ts",
"sha256": "5c4a7a477429f8d775acf6db3e117008468f5554e5731dec81f60fbb75e948fb"
},
{
"path": "resources/js/lib/irpc-withholdings.ts",
"sha256": "8e5f3c035ce5e4d6c3fc82f933439ab580fa5519492f9c4d32cfb71b77b54803"
},
{
"path": "resources/js/components/simulation-irpc-withholdings.tsx",
"sha256": "751af4fab346659bc5ccb08b8a2169769af7521ea0035050af32b41ea7f5aa76"
},
{
"path": "resources/js/lib/irpc-interest.ts",
"sha256": "f8e6390b3b2c58c296f7e3fd14576e06ae248bc0cabce1a666b7094611f2a7dd"
},
{
"path": "resources/js/lib/irpc-mrfta.ts",
"sha256": "76dcce8954f68b081d500be61de9c5b146a452a3eb578a0b78776ba9e1f8051c"
},
{
"path": "resources/js/lib/irpc-mrfta-cases.ts",
"sha256": "4266746076ab3f70312fd042351e24dd2f136c4f3e8a277b57dd97849a9f1862"
},
{
"path": "resources/js/components/simulation-irpc-mrfta.tsx",
"sha256": "913d1bb4ac0fc59763cf5d27bc637f6a713b2050c4463748db554af4be451538"
},
{
"path": "resources/js/lib/financial-fiscal-bridge.ts",
"sha256": "5a30c501653b16b5fedcb12631ce81fcce4fe473aa542e94374986b3c50f2d33"
}
],
"originals": [
{
"path": "docs/investmoz/simulations/source-archive/AT-Comunicado-9-2026-ISPC.pdf",
"sha256": "106f8a9ce9255c03549c70bf07fe999d32e6e55302d009b509862aa74ccb4973"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-30-ISPC.pdf",
"sha256": "6802edd06b6ff638a0b851a3ec7ecf69af8f07840faa47446becad67d35d445c"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-B-Geral.pdf",
"sha256": "bd977c7c59d4d98befd92e2c566b1bf168cb1343bb519f51b41a3807f431fc57"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-MRFTA-19-39.pdf",
"sha256": "8ea62c53066b482f87078a7a7b1ecf15ca98a12a122e8d7abca63acfc993186b"
},
{
"path": "docs/investmoz/simulations/source-archive/BM-Mercado-Monetario-MAIBOR-20261025.html",
"sha256": "00e8a7e0d3a1db4ca3beb56d5361b2084a0f1684f3d40fc1c203702a2190e063"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf",
"sha256": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-89-I-Serie-2017-06-08.pdf",
"sha256": "11f0cab15eb6e51010952203ffa24fdc533a24fd642e19525fe4f46b17a1f5e5"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-95-I-Suplemento-2025-05-21.pdf",
"sha256": "e0e682e2c027c3cd9c1d46a73a3f48bc5f6bdbf05667fd97314d7a3f6a456358"
},
{
"path": "docs/investmoz/simulations/source-archive/BR252-I-Serie-2022-Lei20-PESOE.pdf",
"sha256": "1159fd3ce1ba5581671796d083534da48bd3c5578298819e896f1c2a8026318d"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-22-2021-BR70.pdf",
"sha256": "a8fac38dcfe08f9c7a8e46254cff10e1ec82fc4f7a8d88ad6e4fe7d91ffc21a5"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-27-2026-BR123.pdf",
"sha256": "26249c3fa58f149c81de36e99d1aac2819a4771379d9e8833159660dabf539bb"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-29-1998-BR22-5-suplemento.pdf",
"sha256": "6242cbe675faadf085f43f95ec8c7e8868aafe67c3b2ab2bb010992288f954f8"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-3-2011-BR-11-I-mineiros.pdf",
"sha256": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-37-2023-BR124.pdf",
"sha256": "7e680b191481faa0e2e9057fa5053587eb2a29d1d8c819e0eb9f02814255a04c"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-9-2008-BR16.pdf",
"sha256": "96fccdecbfdc11c9eafb90fbc6c7bc259f88bbd4c7507d1ac3af1fa03f960697"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf",
"sha256": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-14-1992-BR42.pdf",
"sha256": "089fff7423e99a70a230a73ca379e4ea3a91d124703f91016e57ff82794b9e56"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-BR251-exemplar-MCNet5.pdf",
"sha256": "14eb34f0af91a8f5cb1770c7b52d6ff839c6818302d1ed96d79afbfb9fe999d4"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-IPP-BR250-Parlamento.pdf",
"sha256": "978cd22403ffd336a631704ecd7a5bbd814a427c815b9acdaca5515591dd9e2a"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2013-BR76.pdf",
"sha256": "bba96d645cc935ffc3d1a79b9f0f73ac1c693d6459c2ad41f56cd2841accae76"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2017-IRPS-BR-OCAM.pdf",
"sha256": "c3a0186cb9ad090d7a9533006295dc9bb6a62ad0d6150173cbd49dba4ee4b52d"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-2-2011-BR-1-4-suplemento-MCNet.pdf",
"sha256": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-20-2009-BR36-AT-exemplar19.pdf",
"sha256": "fc1c8144db42960cbf73e717e095896f511ece0f907f58f78819b27d6917a7ee"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf",
"sha256": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-34-2007-BR52.pdf",
"sha256": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-1994-BR37-3-suplemento.pdf",
"sha256": "210df9db8980d0a5690cd187a6eeec7e37a900d743e39062c16f4e0d12215c7e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-2012-BR3.pdf",
"sha256": "b8845cef41dcbd9ba50c43dbfa743a56030dd3d348242a107e1ae30279eec121"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-7-1991-Partidos-IFES.pdf",
"sha256": "6b783a0bb3330688ef10660a58060d9724aa2da6a873d234fe902f0eaaeda42d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-CDT-1992.pdf",
"sha256": "d504e1024b28aee5c6acf4592acb96ec9c915a8414f67a61ab6984d6acf9df9d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-Protocolo-2009.pdf",
"sha256": "f353773dcf41f09f4daa6cf5ba5a5f7994f3e02615867c2dcffc61c3d901bf9b"
}
],
"pipeline_checks": [
"OK (1 test, 3106 assertions)",
"built in 30.45s",
"OK (59 tests, 317 assertions)",
"# tests 888",
"# pass 888",
"# fail 0"
],
"accepted_proofs_reused": true,
"manually_repeated_accepted_functional_suites": false,
"limitations": "6480+220=6700MZN simulated taxable profit in demonstrated ordinary annual case;not taxable base or tax payable. Known amounts,declared absence and missing information distinct. L6partial. L5questions only limit dependent cases.",
"L6_complete": false,
"next": "QA taxable-base determination:documented ordinary own losses and delineated deductions;no unrestricted subtraction of benefit amounts",
"proof_files": {
"backup.txt": "fa06ec92a10c5918b4273d1f8714d5be4fddf9e18ddfe739e9154b2eb0fb96cf",
"compact-dependencies.txt": "afa3afafaf78314fff511b52a1fbc4a2f25a28fa549f9100400f2bc9a01e3579",
"installed-protected.txt": "8417903e69430856d316dbbc0874e355bbbb8cd8b6a55ab1f5f184c9b872829c",
"installed-public-delta.json": "633c50e0befc472d4504bf714f6bb9f6cd8b133c191040c360a06f30e1710648",
"installed-public.txt": "cec9d549fa288f970b85f7feeb131363b163884a5871dc3274a7e6b954f5fddd",
"integration.txt": "55ad35300fee092fff8bd9ab78e446342dd7735533fd534a5d4cf6bc771193bc",
"manifest-served.json": "316ad1f339fe14d64c8dce10ddf9c2ecc2080ce400fc9e87f9700de6e7333a59",
"operational-delta.txt": "28e02f58f87bb099ca2fddee7be182d736b4b85e9c1140e9a51482813929457d",
"preflight.txt": "484186b67968f20f506127460ebd6d0805a5077d7943f48e4b8cd7c9d2a257f5",
"preparation.json": "88c48f4a53fb1a59c47552b79dbb0c4c5db37cfde3b214f6eced213074d1bdf5",
"restore.txt": "f89d146854467f33fc5fa8643ad2b6155fd5e143c85daa856fdd6f0c7ec7bd72",
"schema-permissions-after.txt": "76b5a4d8af11e4898a205062766cfb7ab6ec0783200e77e60a1927aa1ca18597",
"schema-permissions-before.txt": "0ab7c964792acdd8917bce256c472e55e034b103500a58b49f020b5084823ed7",
"status1.txt": "eeddc365cc723cf3ad4783203517ef713eafcf4db6a70a78bec9960d3084d0eb",
"status2.txt": "da80cda2b3fead23b76868de2f1538dbb30abf5f72487aa12361e744ba7609c8",
"status3.txt": "bba01cbcdacefa72b7c6e8065158a488e8476de911d707cf5a2c1f50a842f2ba"
}
}
@@ -0,0 +1,687 @@
{
"status": "installed_L6_compatible_sets",
"installed": {
"status": "installed",
"commit": "a2de725901c308fb2ac2bc3d72181ab50ef46b7a",
"release": "/var/www/investmoz-homologacao/releases/a2de725901c308fb2ac2bc3d72181ab50ef46b7a-145e8f25",
"previous_release": "/var/www/investmoz-homologacao/releases/2f684e59846187f3fb8a338d9d6f6a08cadb4d0d-b46cd351",
"database_migrations": 0,
"content_imports": 0
},
"previous_baseline": "2f684e59846187f3fb8a338d9d6f6a08cadb4d0d",
"backup": {
"stage": "/var/backups/investmoz-irpc-l6-sets-delivery-20261025/backup",
"created_at": "2026-10-25T20:34:03Z",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "c30f1bb3558988a3e761d04465d0ed594280f10e36b866101b790cdeae60eacd",
"files_sha256": "e2a26a462dc115233aa8d1dd12aacc1511db0035de475f703074f28dc7da948a",
"restore_verified": false
},
"restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "irpc_l5_restore_20261025",
"port": 55441,
"source_dump_sha256": "c30f1bb3558988a3e761d04465d0ed594280f10e36b866101b790cdeae60eacd",
"active_database_writes": 0
},
"preservation": {
"previous_release_preserved": "/var/www/investmoz-homologacao/releases/2f684e59846187f3fb8a338d9d6f6a08cadb4d0d-b46cd351",
"installed": {
"status": "installed",
"commit": "a2de725901c308fb2ac2bc3d72181ab50ef46b7a",
"release": "/var/www/investmoz-homologacao/releases/a2de725901c308fb2ac2bc3d72181ab50ef46b7a-145e8f25",
"previous_release": "/var/www/investmoz-homologacao/releases/2f684e59846187f3fb8a338d9d6f6a08cadb4d0d-b46cd351",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 8,
"preserved_L3_ISPC_FX_runtime_files_verified": 38,
"documentary_files_verified": 31,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "edf84d90ae30f0a6a080a6c4929a4601"
},
"after": {
"rows": 106,
"checksum": "5226f818ead8e964983de752574a1647"
}
},
"sessions": {
"before": {
"rows": 31,
"checksum": "4bf9b80b2351e8896afacca734410295"
},
"after": {
"rows": 34,
"checksum": "79156a787aed15907ef066919ae90801"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"schema_permissions": {
"schema_sha256": "5045b3e51d2185377aa3d9ac7fa07a44fad3ec620cdfa83ffe31c8884ee1601d",
"roles_grants_sha256": "1530c33cb016e67bfdc64891ddfce7f185b13b56b2cd87c012871a685e118109",
"filesystem_permissions": {
".env": {
"mode": 416,
"uid": 1001,
"gid": 33
},
"storage": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"storage/app": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"bootstrap/cache": {
"mode": 1528,
"uid": 1001,
"gid": 33
}
},
"comparison_identity": "postgres;catalogue read only;no passwords collected",
"unchanged": true
},
"operational_delta": {
"status": "operational_delta_reconciled",
"comparison_identity": "postgres before/after;isolated restored baseline;no RLS visibility inference",
"cache": "queue:restart value/expiry and request-throttle counter/timer pair;no deleted cache rows",
"sessions": "anonymous sessions created by exact delivery verification user-agent",
"delta": {
"cache": {
"before_rows": 106,
"after_rows": 106,
"changes": [
{
"key_sha256": "dbb99b7e17f5b4b9bb7a8bdf9350d9b2ae368aaa4bc44593a2522d87617d8461",
"kind": "updated",
"fields": [
"expiration"
],
"key_pattern": "investemoz-cache-{hash}",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true
},
{
"key_sha256": "c1c7bc86ef3255c103a0be6aeb651b824eb07259e993cc5daf3665c1a6afff2d",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-{hash}:timer",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true
},
{
"key_sha256": "7f7dd83f47f5bf404d55e6e9f1367948721579970b195680645e356031a070ff",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-illuminate:queue:restart",
"is_queue_restart_key": true,
"expiration_unchanged": false,
"throttle_timer_pair": false
}
]
},
"sessions": {
"before_rows": 31,
"after_rows": 34,
"changes": [
{
"key_sha256": "8692330c25efe0f42e8cb66da1379be3235a7e91d340a89d49ace9679b19050d",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
},
{
"key_sha256": "5b2c1cf1904c5f25c8058da6406ffb0fcc80f0976903d312f0a1c76206073c73",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
},
{
"key_sha256": "cb0d56ccd4c384f2996530ddd041efda5890973ea90b6946fc383e2a72fcc4cd",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
}
]
}
},
"business_tables_to_confirm_separately": 172,
"active_data_writes_by_comparison": 0,
"restore_network": "none"
},
"public_verification": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "a2de725901c308fb2ac2bc3d72181ab50ef46b7a",
"branch": "main",
"built_at": "2026-10-25T20:38:12.482895+00:00",
"manifest_sha256": "a450ea3ad0d3d13aa3942c90475c6a97eb081079e4de91d1a46cfee8cf28fa32"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"Iniciar mapas complementares L6": [
"assets/services-Bav6HNRP.js"
],
"Acrescentar regra complementar": [
"assets/services-Bav6HNRP.js"
],
"Juros financeiros ordinários — artigo22c": [
"assets/services-Bav6HNRP.js"
],
"Amortizações fiscais — quotas constantes anuais": [
"assets/services-Bav6HNRP.js"
],
"Período anual e correspondência dos meses": [
"assets/services-Bav6HNRP.js"
],
"M20 — correspondência": [
"assets/project-dossier-CDrS2OdS.js"
],
"Saldo final — âmbito L8": [
"assets/project-dossier-CDrS2OdS.js"
],
"Calcular e guardar apuramento trimestral ISPC": [
"assets/services-Bav6HNRP.js"
],
"Calcular e guardar restituição E": [
"assets/services-Bav6HNRP.js"
],
"Reutilizar selecção cambial": [
"assets/services-Bav6HNRP.js"
]
},
"assets": [
{
"file": "assets/project-dossier-CDrS2OdS.js",
"status": 200,
"sha256": "995b6b17abf7a068faaf05f2eccb3a7ef882dff5758520b029251070165e167f"
},
{
"file": "assets/services-Bav6HNRP.js",
"status": 200,
"sha256": "9371a96868c7b2ef0af2332a3774dadb5ff45ad55ca2feb6833f9552605c2f01"
},
{
"file": "assets/project-dossier-document-B3HEGNVE.js",
"status": 200,
"sha256": "3331347876436578071dbb87033c060c0c8fe7eeeac9a0661240c6e6d2f87e71"
},
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-BNz3HFDA.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"runtime_delta": [
{
"path": "resources/js/components/simulation-irpc-normal.tsx",
"sha256_LF": "e33b3839aac53a1b7ca2a76eda0ec4c54015a6d1c75e386aaeb5d342943f5965"
},
{
"path": "resources/js/components/simulation-irpc-schedules.tsx",
"sha256_LF": "eebd6d9e4100920a5ebf91b800537ffe301fd6a994b86a3b080d673f4a9c9a42"
},
{
"path": "resources/js/lib/irpc-normal-assessment.ts",
"sha256_LF": "1dc6adc0835af033ef296d12cdc1e9ef354b2f54cd36e2349b2df66e369c1ee3"
},
{
"path": "resources/js/lib/irpc-normal-base.ts",
"sha256_LF": "85fa1eb78ce2b8a144a9f0dcda93b542083a7ff119cbc43f4334c87284bfd312"
},
{
"path": "resources/js/lib/irpc-normal-forms.ts",
"sha256_LF": "4e986addb9f2d74e7a80345f8f1e4d8e0b2f562c867fa6eee84880d9f72a3649"
},
{
"path": "resources/js/lib/irpc-normal-profit.ts",
"sha256_LF": "d5a2b52f7deb4cf35651188e04f103fcba950a007e3aa4de5ba7017e686614df"
},
{
"path": "resources/js/lib/irpc-normal-schedules.ts",
"sha256_LF": "b0045fd2c072998ebb290c2a8332c26d05a1f5f746b3beb1805508147497cac8"
},
{
"path": "resources/js/lib/irpc-normal.ts",
"sha256_LF": "62d20bbcebb523f77fde950f623933a13f03283238665cf22fec9390f7ba9333"
}
],
"protected_runtime": [
{
"path": "resources/js/components/simulation-irpc-taxable-base.tsx",
"sha256": "e4fe9f66d35d24aa68fd87de6a5a6a0e901706b270c18962fd0c7ab00f9abd93"
},
{
"path": "resources/js/components/simulation-irpc-assessment.tsx",
"sha256": "7174cc0160005a0c332ea40f02ba8a6d57985081b5ab45177ccd6e721bceea54"
},
{
"path": "resources/js/components/acquisition-beverage-restitution.tsx",
"sha256": "6f44897b8b12569314551df0022c26da57a165634087942a724293e66837558d"
},
{
"path": "resources/js/components/fiscal-calculation-gaps.tsx",
"sha256": "1dab6ceb73756d4e023096b3b2ba767aaa843ff6cc69046ea630ab449a00b0dd"
},
{
"path": "resources/js/components/fiscal-l3-preparation.tsx",
"sha256": "e84a7b1ccadaa1b5bd78d778a3287f96ccaf530855eef404786cd7aa3d321b73"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256": "c206d4cfe575d6ba007aa2b425b5f898efa97e4162b8710e358b6ecfd9458542"
},
{
"path": "resources/js/components/simulation-operations.tsx",
"sha256": "a7e55972fa790063dcf11945055de2af46a77db9e509900af22ede7ec47bb4cf"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256": "b0ef55e0917bdb79f14b53ba9e95d73c08153befeb7d4ce73f81e6fb13992225"
},
{
"path": "resources/js/lib/iva-beverage-allocation.ts",
"sha256": "32968d198c7fe0c53ca89641c22d5749be6636be2c79127b867e4e3afd0dd40d"
},
{
"path": "resources/js/lib/iva-beverage-restitution.ts",
"sha256": "5c650cbd9469d5f99001f56fc4ff99ac973eb368036d4e96c6d171f1b220bd9e"
},
{
"path": "resources/js/lib/iva-calculation-gaps.ts",
"sha256": "2e7d84a0c196bd5b56fd67cc1a389d43d5041894184e675680a4de3cd10b31a2"
},
{
"path": "resources/js/lib/iva-operations.ts",
"sha256": "ec37b949f1233c5f5c14a87450c421ed29fabf1ed5b73fb32564564a2bc31f54"
},
{
"path": "resources/js/lib/l3-form-preparation.ts",
"sha256": "fc47f5fa5ec1420fbd847d0d081f00d99ebbb524164eef785b20877e0562f704"
},
{
"path": "resources/js/lib/ispc-residuals.ts",
"sha256": "40d5751c06c7c155ab4b7a17ee2d1653da2fbbf075807fbb8561cdbe19820955"
},
{
"path": "resources/js/components/simulation-ispc-residuals.tsx",
"sha256": "a9219d6f41ccbd0ce45659d4f6aa0fa1c169a685840f5cb1e18daeca377d5e18"
},
{
"path": "resources/js/lib/ispc-eligibility.ts",
"sha256": "44675c5efacdc1ae19505667611ba3b522d3043cebacc8754597c3a68ca89d25"
},
{
"path": "resources/js/components/simulation-ispc-quarter.tsx",
"sha256": "2c2555309b32d4261f14e7164f39314c9188129c2990357fc54090a2468dd2b4"
},
{
"path": "resources/js/components/simulation-ispc-withholding.tsx",
"sha256": "e0445d015b72859e48726959aa52686f79b1cf5c2ade29751efa83257068b878"
},
{
"path": "resources/js/lib/ispc-quarter.ts",
"sha256": "f66bd52e9cdfe1ddaa6b00a931465862b3d890b9be216b7a056740f027f24129"
},
{
"path": "resources/js/lib/ispc-withholding.ts",
"sha256": "6c31b240299edd3262efa28f7f3d5aee21123f94e30ef4ab90e26c35777cb6e4"
},
{
"path": "resources/js/components/simulation-ispc-eligibility.tsx",
"sha256": "f48dd4a8f87a994eda0447f81a463589905e5873b2e1044debac9d10825a880c"
},
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256": "cce283b1d0a07fb383fcb527225f4dd5bec829010a662cbaae1d60e595221977"
},
{
"path": "resources/js/lib/iva-modelo-a.ts",
"sha256": "c641619a05613c1620385baad0e9ffbf810dd970aafb30e12b3a7f9a3bf11846"
},
{
"path": "resources/js/lib/iva-fx-selection.ts",
"sha256": "9aa07ad443bc777b80510a3b5bd6aff9ddb9814d2450f3c690e531e74d71d998"
},
{
"path": "resources/js/components/simulation-fx-selection.tsx",
"sha256": "39bb6d87d404745b0b66349bc11626545a3672ae27321ce9b4658416592059bf"
},
{
"path": "resources/js/lib/business-financial-plan.ts",
"sha256": "c20274722d1ffcd0360f041a6cacb5d868fe0621cb27a1aca6e06826612c3ebb"
},
{
"path": "resources/js/lib/iva-currency-events.ts",
"sha256": "cc9f2045d302d7987310da4006cc250fc5c99a27397918d166d649bfc32fab08"
},
{
"path": "resources/js/lib/irpc-fx.ts",
"sha256": "5c4a7a477429f8d775acf6db3e117008468f5554e5731dec81f60fbb75e948fb"
},
{
"path": "resources/js/lib/irpc-withholdings.ts",
"sha256": "8e5f3c035ce5e4d6c3fc82f933439ab580fa5519492f9c4d32cfb71b77b54803"
},
{
"path": "resources/js/components/simulation-irpc-withholdings.tsx",
"sha256": "751af4fab346659bc5ccb08b8a2169769af7521ea0035050af32b41ea7f5aa76"
},
{
"path": "resources/js/lib/irpc-interest.ts",
"sha256": "f8e6390b3b2c58c296f7e3fd14576e06ae248bc0cabce1a666b7094611f2a7dd"
},
{
"path": "resources/js/lib/irpc-mrfta.ts",
"sha256": "76dcce8954f68b081d500be61de9c5b146a452a3eb578a0b78776ba9e1f8051c"
},
{
"path": "resources/js/lib/irpc-mrfta-cases.ts",
"sha256": "4266746076ab3f70312fd042351e24dd2f136c4f3e8a277b57dd97849a9f1862"
},
{
"path": "resources/js/components/simulation-irpc-mrfta.tsx",
"sha256": "913d1bb4ac0fc59763cf5d27bc637f6a713b2050c4463748db554af4be451538"
},
{
"path": "resources/js/lib/financial-fiscal-bridge.ts",
"sha256": "5a30c501653b16b5fedcb12631ce81fcce4fe473aa542e94374986b3c50f2d33"
},
{
"path": "resources/js/components/simulation-form.tsx",
"sha256": "85b024a7f45ceb52efd6ff1f21d0eab1fd8fcf1ab59e4b5302c08685235c472a"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256": "a0909bbfcdf7e8542b010faa104fcb918e86ae38ddf096082d4d5be98d31b2b9"
},
{
"path": "resources/js/lib/project-dossier-report.ts",
"sha256": "5207a2ffeb208cd5ace6713038cee85208020ee618194dca7114e94fc3200b6c"
}
],
"originals": [
{
"path": "docs/investmoz/simulations/source-archive/AT-Comunicado-9-2026-ISPC.pdf",
"sha256": "106f8a9ce9255c03549c70bf07fe999d32e6e55302d009b509862aa74ccb4973"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-30-ISPC.pdf",
"sha256": "6802edd06b6ff638a0b851a3ec7ecf69af8f07840faa47446becad67d35d445c"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-B-Geral.pdf",
"sha256": "bd977c7c59d4d98befd92e2c566b1bf168cb1343bb519f51b41a3807f431fc57"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-MRFTA-19-39.pdf",
"sha256": "8ea62c53066b482f87078a7a7b1ecf15ca98a12a122e8d7abca63acfc993186b"
},
{
"path": "docs/investmoz/simulations/source-archive/BM-Mercado-Monetario-MAIBOR-20261025.html",
"sha256": "00e8a7e0d3a1db4ca3beb56d5361b2084a0f1684f3d40fc1c203702a2190e063"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf",
"sha256": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-89-I-Serie-2017-06-08.pdf",
"sha256": "11f0cab15eb6e51010952203ffa24fdc533a24fd642e19525fe4f46b17a1f5e5"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-95-I-Suplemento-2025-05-21.pdf",
"sha256": "e0e682e2c027c3cd9c1d46a73a3f48bc5f6bdbf05667fd97314d7a3f6a456358"
},
{
"path": "docs/investmoz/simulations/source-archive/BR252-I-Serie-2022-Lei20-PESOE.pdf",
"sha256": "1159fd3ce1ba5581671796d083534da48bd3c5578298819e896f1c2a8026318d"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-22-2021-BR70.pdf",
"sha256": "a8fac38dcfe08f9c7a8e46254cff10e1ec82fc4f7a8d88ad6e4fe7d91ffc21a5"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-27-2026-BR123.pdf",
"sha256": "26249c3fa58f149c81de36e99d1aac2819a4771379d9e8833159660dabf539bb"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-29-1998-BR22-5-suplemento.pdf",
"sha256": "6242cbe675faadf085f43f95ec8c7e8868aafe67c3b2ab2bb010992288f954f8"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-3-2011-BR-11-I-mineiros.pdf",
"sha256": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-37-2023-BR124.pdf",
"sha256": "7e680b191481faa0e2e9057fa5053587eb2a29d1d8c819e0eb9f02814255a04c"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-9-2008-BR16.pdf",
"sha256": "96fccdecbfdc11c9eafb90fbc6c7bc259f88bbd4c7507d1ac3af1fa03f960697"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf",
"sha256": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-14-1992-BR42.pdf",
"sha256": "089fff7423e99a70a230a73ca379e4ea3a91d124703f91016e57ff82794b9e56"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-BR251-exemplar-MCNet5.pdf",
"sha256": "14eb34f0af91a8f5cb1770c7b52d6ff839c6818302d1ed96d79afbfb9fe999d4"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-IPP-BR250-Parlamento.pdf",
"sha256": "978cd22403ffd336a631704ecd7a5bbd814a427c815b9acdaca5515591dd9e2a"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2013-BR76.pdf",
"sha256": "bba96d645cc935ffc3d1a79b9f0f73ac1c693d6459c2ad41f56cd2841accae76"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2017-IRPS-BR-OCAM.pdf",
"sha256": "c3a0186cb9ad090d7a9533006295dc9bb6a62ad0d6150173cbd49dba4ee4b52d"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-2-2011-BR-1-4-suplemento-MCNet.pdf",
"sha256": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-20-2009-BR36-AT-exemplar19.pdf",
"sha256": "fc1c8144db42960cbf73e717e095896f511ece0f907f58f78819b27d6917a7ee"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf",
"sha256": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-34-2007-BR52.pdf",
"sha256": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-1994-BR37-3-suplemento.pdf",
"sha256": "210df9db8980d0a5690cd187a6eeec7e37a900d743e39062c16f4e0d12215c7e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-2012-BR3.pdf",
"sha256": "b8845cef41dcbd9ba50c43dbfa743a56030dd3d348242a107e1ae30279eec121"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-7-1991-Partidos-IFES.pdf",
"sha256": "6b783a0bb3330688ef10660a58060d9724aa2da6a873d234fe902f0eaaeda42d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-CDT-1992.pdf",
"sha256": "d504e1024b28aee5c6acf4592acb96ec9c915a8414f67a61ab6984d6acf9df9d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-Protocolo-2009.pdf",
"sha256": "f353773dcf41f09f4daa6cf5ba5a5f7994f3e02615867c2dcffc61c3d901bf9b"
}
],
"pipeline_checks": [
"OK (1 test, 3106 assertions)",
"built in 31.41s",
"OK (59 tests, 317 assertions)",
"# tests 920",
"# pass 920",
"# fail 0"
],
"accepted_QA_proofs": {
"frontend_tests": 14,
"private_API_tests": 1,
"private_API_assertions": 78,
"database": "127.0.0.1:55441/simulator_fiscal_delta_20261021_test;DatabaseTransactions rollback",
"routes_actions_generated": true,
"typescript": "passed",
"build": "passed",
"actual_UI": "field editing;unsupported asset rate;missing interest;save/recovery;download;current loss",
"dossier": "from API-recovered calculated/missing/loss/EP JSON"
},
"accepted_proofs_reused": true,
"manually_repeated_accepted_suites": false,
"sequence": {
"taxable_profit": "6980MZN simulated",
"taxable_base": "4680MZN simulated",
"normal_colecta": "1497.60MZN simulated,32%",
"final_payable": null,
"final_recoverable": null,
"final_balance_scope": "L8"
},
"remaining_L6": [
{
"pending_case_or_mapping": "Custos com limites36(1)e/f/h/i/n, provisões28/29, obras plurianuais19 e componentes de exercícios anteriores18(2).",
"resolution_condition": "Implementar a regra de cada categoria a partir do diploma aplicável: parcela contabilizada, limite/base próprios, documentação e exercício de imputação; demonstrar o efeito com sinal nos totais. Nos exercícios anteriores, distinguir o que era imprevisível/manifestamente desconhecido no encerramento.",
"blocking_scope": "Só a categoria ou parcela ainda sem regra; os acréscimos36a/b/c/g, juros ordinários e periodização corrente/seguinte demonstrados permanecem utilizáveis. Eventual tributação autónoma pertence aL7."
},
{
"pending_case_or_mapping": "Amortizações além dos itensII/3/9 e9.1: restantes tabelas, quotas inferiores, duodécimos, quotas decrescentes, bens usados/reavaliados/intangíveis e recuperação de quotas anteriormente tributadas.",
"resolution_condition": "Corresponder categoria/tabela prevalecente, método, entrada em uso, vida útil, base depreciável e quotas contabilizadas/fiscais acumuladas; implementar o cálculo e a reconciliação que impeçam dupla dedução.",
"blocking_scope": "Só os activos/métodos afectados. Computadores25% e servidores20% no recorte anual constante e a perda corrente já demonstrada não são reabertos."
},
{
"pending_case_or_mapping": "Períodos curtos, transição/liquidação e reconciliação fiscal anual de plano noutra moeda.",
"resolution_condition": "Ligar os meses e factos de início/cessação/transição ao período fiscal; implementar os efeitos sobre quotas e contagem das perdas. Para outra moeda, identificar os eventos/datas e a regra de conversão anual aplicável, reutilizando o motor cambial aceite.",
"blocking_scope": "Só o período ou origem cambial sem reconciliação. Os períodos anuais emMZN e oEP com imputação documentada conservam o cálculo demonstrado."
},
{
"pending_case_or_mapping": "Representação fiscal de fracções de unidade/cêntimo.",
"resolution_condition": "Identificar a instrução de representação/arredondamento da edição/campo aplicável ou obter esclarecimento específico daAT; então implementar essa regra conservando o valor racional original. O exemplarM20A.1 pede meticais sem centavos, mas isso não determina sozinho como arredondar uma fracção.",
"blocking_scope": "Só a transcrição do valor não exactamente representável. Os cálculos racionais e os valores exactamente representáveis permanecem disponíveis; não é necessária nova validação genérica das fontes."
},
{
"pending_case_or_mapping": "M20A.1: discriminação de vendas/serviços, fornecimentos/outros gastos, imposto sobre o rendimento e resultado líquido; M22: campo200 e detalhe dos restantes ajustamentos.",
"resolution_condition": "Reutilizar a origem financeira, recolhendo apenas a classificação em falta e o imposto contabilizado; reconciliar resultado antes/depois de imposto e cada ajustamento com a edição aplicável. Não usar a colecta simulada como imposto contabilizado. Completar as correspondências por campo e demonstrar a recuperação/exportação.",
"blocking_scope": "Só os campos sem correspondência. M20A.1/Q4 contas6.1.1/6.2/6.5/6.9 e M22 campos259/260,269/270,276/277/278 e300 conservam a preparação parcial demonstrada."
},
{
"pending_case_or_mapping": "Transporte de resultado entre ediçõesM20/M22: XLSXM20A.1 remete para201/quadro8; PDFM22 inventariado usa200/quadro10.",
"resolution_condition": "Identificar a edição do formulário de destino e corresponder explicitamente o resultado líquido a essa edição; registar a remissão corrigida sem substituir os exemplares ou reutilizar fórmulas antigas por aproximação.",
"blocking_scope": "Só esse transporte entre edições; não bloqueia os cálculos independentes nem os outros campos já correspondidos."
}
],
"matrix_row": "AUD-SIM-INT02",
"L6_complete": false,
"L7_L8_own_scopes": true,
"documentary_divergence": "Only result transfer M20A.1 field201/Q8 versus PDFM22 field200/Q10;independent calculations and mapped fields remain available",
"L5_ten_questions": "unchanged;only dependent cases blocked;no new research",
"documentation_runtime_changed": false,
"proof_files": {
"backup.txt": "a591b64eafc2bfbf4c2581cbf7e622645434cd329ef76350cb93db7cab9a4924",
"compact-dependencies.txt": "d1c1681ce26172f3d54d4f800f928b0bca4fee69b436ed230208f03334194283",
"installed-protected.txt": "9fda494d5f02097704a534a9fad88246d3c2b9d1b195984b622a09fa0b18015c",
"installed-public-delta.json": "060517951fa315913d5848da634b5dd9c9cf4ea41e02c46f6d79cb5226c5e834",
"installed-public.txt": "b165c03e6f5745be112de5ed6e3f09de9bbdd66eee1b110ee6e0271e5a250a8d",
"integration.txt": "1f3bb46c6b39cc527fea30b81a80d815b81e73a776a512516add1c19be01276a",
"manifest-served.json": "a450ea3ad0d3d13aa3942c90475c6a97eb081079e4de91d1a46cfee8cf28fa32",
"operational-delta.txt": "02c8a942e58e243cfc131e08e8237c6e0495c0151330977f6aa738f903b60cc3",
"preflight.txt": "ffb60ef455b33ca6a2167b2c5f792fea591a6d22b37f46b7964c3fe0e20c371b",
"preparation.json": "61facd82de423031b21808a507fb1904fb8dc5f512314a02ea3563f864285d6d",
"progress.txt": "9347cbbd7a9373c97f6f1a53b8228ba4b7fdd6d270de35745ff7faf0861e5c7e",
"progress2.txt": "c3360e6f080fcf40778d997b7382e29f8b5f24013e89ba34c7b5a55fa821e315",
"remaining-section.md": "aceaf87dc9f82c0dbf6792d6d6918c188129369d29e8e9a52c729ce75534c74a",
"restore.txt": "e5cc45d4d6fd35d0424f3febe8c74ef089e88256fa6eb49de224a8e6a167b2fe",
"schema-permissions-after.txt": "76b5a4d8af11e4898a205062766cfb7ab6ec0783200e77e60a1927aa1ca18597",
"schema-permissions-before.txt": "0ab7c964792acdd8917bce256c472e55e034b103500a58b49f020b5084823ed7",
"status-final.txt": "7af3227a73d3d8eac0a8a5f116c48ca91c90d986f21ec96ecd192c7430667f9f",
"status1.txt": "4bd015e1aacfc764253af72a1cfa8e3f3f31614a92daac2c3d94779eb51dddf8",
"status2.txt": "52f274c01858b8570237f434ff86727720cfc7db0baf3a7d0c792abc19f853bd",
"status3.txt": "0c71c139c20da160dd49929a237e38887481a6ce6c24ea921df78023566cc85e",
"status4.txt": "0c71c139c20da160dd49929a237e38887481a6ce6c24ea921df78023566cc85e",
"status5.txt": "7af3227a73d3d8eac0a8a5f116c48ca91c90d986f21ec96ecd192c7430667f9f"
}
}
@@ -0,0 +1,385 @@
{
"status": "scoped_taxable_base_losses_deductions_QA_not_installed",
"installed_baseline": "5e02c23af863485f6881e409c8704ec7e7573cc9",
"branch": "codex/irpc-l6-taxable-base-qa-20261025",
"QA_workspace": "C:\\laragon\\www\\portal-investidor-irpc-l6-base-qa-20261025",
"scope": "2026 resident general regime,declarative method,ordinary annual own fiscal losses,same taxpayer,complete corrected balances. Explicit proposed utilisation within balance/profit;no FIFO or percentage cap assumed. No positive-benefit rule,transferred losses,special/short periods or negative current-result base implemented.",
"implemented": [
"Reuse calculated taxable profit,no re-entry of6700;optional reuse of existing same-opportunity MRFTA NUIT preserves deliberate edits",
"Loss ledger by origin year,NUIT,assessed/corrected fiscal amount,previous use and explicit proposed current use;source/reference and ordinary-period/general-activity/balance facts",
"Five subsequent ordinary fiscal years41(1),activity/object restriction41(7),specific indirect/partial-exempt/transparency/correction/short-period dependencies identified",
"Expired or changed-object exclusions visible;positive request against excluded loss is not silently ignored",
"Cap by available balance and total profit;no implicit allocation order;negative base prevented through explicit reconciliation",
"Known benefits zero,declared absence and missing information kept separate;positive benefit amount recorded but no arbitrary subtraction15(4)",
"No official loss balance consumption on calculation/save/repeat;source uses unchanged",
"Optional calculationversion3 preserves currentversion2 and histories1/2;changed input makes onlynewresult stale",
"PrivateAPI create/update/recovery,UI and HTML/dossier from recovered known/missing payloads"
],
"examples": {
"profit": "6700 MZN simulated taxable profit,not tax",
"loss2021": "assessed1000-prior200=available800;proposed800,lastordinaryyear2026,remaining0",
"loss2024": "assessed3000-prior500=available2500;proposed1500,lastordinaryyear2029,remaining1000",
"base": "6700-2300=4400 MZN simulated taxable base;tax payable indeterminate",
"supported_absence": "Losses and benefits absent with support -> base6700,not assumed before evidence",
"missing_benefit": "profit6700 and proposed eligible losses2300 retained;base/deductions indeterminate",
"known_positive_benefit": "known200 preserved,not subtracted without implemented rule",
"expired2020": "lastordinaryyear2025;explicitzero request -> no deduction2026",
"negative_current_profit": "kept signed;base indeterminate,no automatic zero or current-loss carryforward"
},
"verification": {
"frontend_new_tests": 10,
"private_API": "1test/42assertions,create/update If-Match/recovery,DatabaseTransactions rollback,isolated127.0.0.1:55441/simulator_fiscal_delta_20261021_test",
"typescript": "passed",
"Wayfinder": "existing guarded routes/actions procedure",
"QA_build": "passed exit0",
"UI": {
"profitReused": true,
"baseCalculated": true,
"taxPayableIndeterminate": true,
"localSaveRecovery": true,
"explicitLossAllocation": true,
"sourceBalancesNotConsumed": true,
"overuseRejected": true,
"download": true,
"missingBenefitIndeterminate": true,
"positiveBenefitPreservedNotSubtracted": true,
"privateApi": "IrpcNormalBaseDraftTest separate",
"errors": []
},
"dossier": "known and missing outputs from actual API recovery",
"accepted_proofs": "reused,no manual accepted suite repeats;version2 snapshot only read/roundtripped",
"legacy_fixture_sha256": "105857393035cb5e7c569dc9e6c7b91f51c335b9799fc148b1bfee57057f3138",
"protected_runtime": 37,
"originals": 31
},
"runtime_delta": [
{
"path": "resources/js/lib/irpc-normal-base.ts",
"sha256_LF": "ab7f7389bac23abd990d0d3a8d4c52b81f7b11066586d74b4254c6cc2c15392f"
},
{
"path": "resources/js/components/simulation-irpc-taxable-base.tsx",
"sha256_LF": "e4fe9f66d35d24aa68fd87de6a5a6a0e901706b270c18962fd0c7ab00f9abd93"
},
{
"path": "resources/js/lib/irpc-normal.ts",
"sha256_LF": "df3ac3ba0bd60a9687cc64bfa2d5766cc975d044b51901d96a815cc426255b5c"
},
{
"path": "resources/js/components/simulation-irpc-normal.tsx",
"sha256_LF": "0f9fe320814db4a5329688cedaf9a2e1388812c80bb49ade21601392abce1a28"
}
],
"protected_runtime": [
{
"path": "resources/js/components/acquisition-beverage-restitution.tsx",
"sha256_LF": "6f44897b8b12569314551df0022c26da57a165634087942a724293e66837558d"
},
{
"path": "resources/js/components/fiscal-calculation-gaps.tsx",
"sha256_LF": "1dab6ceb73756d4e023096b3b2ba767aaa843ff6cc69046ea630ab449a00b0dd"
},
{
"path": "resources/js/components/fiscal-l3-preparation.tsx",
"sha256_LF": "e84a7b1ccadaa1b5bd78d778a3287f96ccaf530855eef404786cd7aa3d321b73"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256_LF": "c206d4cfe575d6ba007aa2b425b5f898efa97e4162b8710e358b6ecfd9458542"
},
{
"path": "resources/js/components/simulation-operations.tsx",
"sha256_LF": "a7e55972fa790063dcf11945055de2af46a77db9e509900af22ede7ec47bb4cf"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256_LF": "b0ef55e0917bdb79f14b53ba9e95d73c08153befeb7d4ce73f81e6fb13992225"
},
{
"path": "resources/js/lib/iva-beverage-allocation.ts",
"sha256_LF": "32968d198c7fe0c53ca89641c22d5749be6636be2c79127b867e4e3afd0dd40d"
},
{
"path": "resources/js/lib/iva-beverage-restitution.ts",
"sha256_LF": "5c650cbd9469d5f99001f56fc4ff99ac973eb368036d4e96c6d171f1b220bd9e"
},
{
"path": "resources/js/lib/iva-calculation-gaps.ts",
"sha256_LF": "2e7d84a0c196bd5b56fd67cc1a389d43d5041894184e675680a4de3cd10b31a2"
},
{
"path": "resources/js/lib/iva-operations.ts",
"sha256_LF": "ec37b949f1233c5f5c14a87450c421ed29fabf1ed5b73fb32564564a2bc31f54"
},
{
"path": "resources/js/lib/l3-form-preparation.ts",
"sha256_LF": "fc47f5fa5ec1420fbd847d0d081f00d99ebbb524164eef785b20877e0562f704"
},
{
"path": "resources/js/lib/ispc-residuals.ts",
"sha256_LF": "40d5751c06c7c155ab4b7a17ee2d1653da2fbbf075807fbb8561cdbe19820955"
},
{
"path": "resources/js/components/simulation-ispc-residuals.tsx",
"sha256_LF": "a9219d6f41ccbd0ce45659d4f6aa0fa1c169a685840f5cb1e18daeca377d5e18"
},
{
"path": "resources/js/lib/ispc-eligibility.ts",
"sha256_LF": "44675c5efacdc1ae19505667611ba3b522d3043cebacc8754597c3a68ca89d25"
},
{
"path": "resources/js/components/simulation-ispc-quarter.tsx",
"sha256_LF": "2c2555309b32d4261f14e7164f39314c9188129c2990357fc54090a2468dd2b4"
},
{
"path": "resources/js/components/simulation-ispc-withholding.tsx",
"sha256_LF": "e0445d015b72859e48726959aa52686f79b1cf5c2ade29751efa83257068b878"
},
{
"path": "resources/js/lib/ispc-quarter.ts",
"sha256_LF": "f66bd52e9cdfe1ddaa6b00a931465862b3d890b9be216b7a056740f027f24129"
},
{
"path": "resources/js/lib/ispc-withholding.ts",
"sha256_LF": "6c31b240299edd3262efa28f7f3d5aee21123f94e30ef4ab90e26c35777cb6e4"
},
{
"path": "resources/js/components/simulation-ispc-eligibility.tsx",
"sha256_LF": "f48dd4a8f87a994eda0447f81a463589905e5873b2e1044debac9d10825a880c"
},
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256_LF": "cce283b1d0a07fb383fcb527225f4dd5bec829010a662cbaae1d60e595221977"
},
{
"path": "resources/js/lib/iva-modelo-a.ts",
"sha256_LF": "c641619a05613c1620385baad0e9ffbf810dd970aafb30e12b3a7f9a3bf11846"
},
{
"path": "resources/js/lib/iva-fx-selection.ts",
"sha256_LF": "9aa07ad443bc777b80510a3b5bd6aff9ddb9814d2450f3c690e531e74d71d998"
},
{
"path": "resources/js/components/simulation-fx-selection.tsx",
"sha256_LF": "39bb6d87d404745b0b66349bc11626545a3672ae27321ce9b4658416592059bf"
},
{
"path": "resources/js/lib/business-financial-plan.ts",
"sha256_LF": "c20274722d1ffcd0360f041a6cacb5d868fe0621cb27a1aca6e06826612c3ebb"
},
{
"path": "resources/js/lib/iva-currency-events.ts",
"sha256_LF": "cc9f2045d302d7987310da4006cc250fc5c99a27397918d166d649bfc32fab08"
},
{
"path": "resources/js/lib/irpc-fx.ts",
"sha256_LF": "5c4a7a477429f8d775acf6db3e117008468f5554e5731dec81f60fbb75e948fb"
},
{
"path": "resources/js/lib/irpc-withholdings.ts",
"sha256_LF": "8e5f3c035ce5e4d6c3fc82f933439ab580fa5519492f9c4d32cfb71b77b54803"
},
{
"path": "resources/js/components/simulation-irpc-withholdings.tsx",
"sha256_LF": "751af4fab346659bc5ccb08b8a2169769af7521ea0035050af32b41ea7f5aa76"
},
{
"path": "resources/js/lib/irpc-interest.ts",
"sha256_LF": "f8e6390b3b2c58c296f7e3fd14576e06ae248bc0cabce1a666b7094611f2a7dd"
},
{
"path": "resources/js/lib/irpc-mrfta.ts",
"sha256_LF": "76dcce8954f68b081d500be61de9c5b146a452a3eb578a0b78776ba9e1f8051c"
},
{
"path": "resources/js/lib/irpc-mrfta-cases.ts",
"sha256_LF": "4266746076ab3f70312fd042351e24dd2f136c4f3e8a277b57dd97849a9f1862"
},
{
"path": "resources/js/components/simulation-irpc-mrfta.tsx",
"sha256_LF": "913d1bb4ac0fc59763cf5d27bc637f6a713b2050c4463748db554af4be451538"
},
{
"path": "resources/js/lib/financial-fiscal-bridge.ts",
"sha256_LF": "5a30c501653b16b5fedcb12631ce81fcce4fe473aa542e94374986b3c50f2d33"
},
{
"path": "resources/js/components/simulation-form.tsx",
"sha256_LF": "85b024a7f45ceb52efd6ff1f21d0eab1fd8fcf1ab59e4b5302c08685235c472a"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "a0909bbfcdf7e8542b010faa104fcb918e86ae38ddf096082d4d5be98d31b2b9"
},
{
"path": "resources/js/lib/project-dossier-report.ts",
"sha256_LF": "5207a2ffeb208cd5ace6713038cee85208020ee618194dca7114e94fc3200b6c"
},
{
"path": "resources/js/lib/irpc-normal-profit.ts",
"sha256_LF": "35dc586d9ab6c77405f3a46ed2ce3d9db74c54f338314d5e3c4959f0b6a55860"
}
],
"originals_preserved": [
{
"path": "docs/investmoz/simulations/source-archive/AT-Comunicado-9-2026-ISPC.pdf",
"sha256": "106f8a9ce9255c03549c70bf07fe999d32e6e55302d009b509862aa74ccb4973"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-30-ISPC.pdf",
"sha256": "6802edd06b6ff638a0b851a3ec7ecf69af8f07840faa47446becad67d35d445c"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-B-Geral.pdf",
"sha256": "bd977c7c59d4d98befd92e2c566b1bf168cb1343bb519f51b41a3807f431fc57"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-MRFTA-19-39.pdf",
"sha256": "8ea62c53066b482f87078a7a7b1ecf15ca98a12a122e8d7abca63acfc993186b"
},
{
"path": "docs/investmoz/simulations/source-archive/BM-Mercado-Monetario-MAIBOR-20261025.html",
"sha256": "00e8a7e0d3a1db4ca3beb56d5361b2084a0f1684f3d40fc1c203702a2190e063"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf",
"sha256": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-89-I-Serie-2017-06-08.pdf",
"sha256": "11f0cab15eb6e51010952203ffa24fdc533a24fd642e19525fe4f46b17a1f5e5"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-95-I-Suplemento-2025-05-21.pdf",
"sha256": "e0e682e2c027c3cd9c1d46a73a3f48bc5f6bdbf05667fd97314d7a3f6a456358"
},
{
"path": "docs/investmoz/simulations/source-archive/BR252-I-Serie-2022-Lei20-PESOE.pdf",
"sha256": "1159fd3ce1ba5581671796d083534da48bd3c5578298819e896f1c2a8026318d"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-22-2021-BR70.pdf",
"sha256": "a8fac38dcfe08f9c7a8e46254cff10e1ec82fc4f7a8d88ad6e4fe7d91ffc21a5"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-27-2026-BR123.pdf",
"sha256": "26249c3fa58f149c81de36e99d1aac2819a4771379d9e8833159660dabf539bb"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-29-1998-BR22-5-suplemento.pdf",
"sha256": "6242cbe675faadf085f43f95ec8c7e8868aafe67c3b2ab2bb010992288f954f8"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-3-2011-BR-11-I-mineiros.pdf",
"sha256": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-37-2023-BR124.pdf",
"sha256": "7e680b191481faa0e2e9057fa5053587eb2a29d1d8c819e0eb9f02814255a04c"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-9-2008-BR16.pdf",
"sha256": "96fccdecbfdc11c9eafb90fbc6c7bc259f88bbd4c7507d1ac3af1fa03f960697"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf",
"sha256": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-14-1992-BR42.pdf",
"sha256": "089fff7423e99a70a230a73ca379e4ea3a91d124703f91016e57ff82794b9e56"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-BR251-exemplar-MCNet5.pdf",
"sha256": "14eb34f0af91a8f5cb1770c7b52d6ff839c6818302d1ed96d79afbfb9fe999d4"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-IPP-BR250-Parlamento.pdf",
"sha256": "978cd22403ffd336a631704ecd7a5bbd814a427c815b9acdaca5515591dd9e2a"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2013-BR76.pdf",
"sha256": "bba96d645cc935ffc3d1a79b9f0f73ac1c693d6459c2ad41f56cd2841accae76"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2017-IRPS-BR-OCAM.pdf",
"sha256": "c3a0186cb9ad090d7a9533006295dc9bb6a62ad0d6150173cbd49dba4ee4b52d"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-2-2011-BR-1-4-suplemento-MCNet.pdf",
"sha256": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-20-2009-BR36-AT-exemplar19.pdf",
"sha256": "fc1c8144db42960cbf73e717e095896f511ece0f907f58f78819b27d6917a7ee"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf",
"sha256": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-34-2007-BR52.pdf",
"sha256": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-1994-BR37-3-suplemento.pdf",
"sha256": "210df9db8980d0a5690cd187a6eeec7e37a900d743e39062c16f4e0d12215c7e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-2012-BR3.pdf",
"sha256": "b8845cef41dcbd9ba50c43dbfa743a56030dd3d348242a107e1ae30279eec121"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-7-1991-Partidos-IFES.pdf",
"sha256": "6b783a0bb3330688ef10660a58060d9724aa2da6a873d234fe902f0eaaeda42d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-CDT-1992.pdf",
"sha256": "d504e1024b28aee5c6acf4592acb96ec9c915a8414f67a61ab6984d6acf9df9d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-Protocolo-2009.pdf",
"sha256": "f353773dcf41f09f4daa6cf5ba5a5f7994f3e02615867c2dcffc61c3d901bf9b"
}
],
"new_sources": 0,
"source_review": "Accepted CIRPC Lei34/2007PDF5/p768(59):15(1)a/15(2-4),PDF12/p768(66):41(1-7),visually read. Accepted amendment lists reused:Lei20/2009 adds41-A(transfer,not applied),4/2012,19/2013,20/2022,12/2025 do not change15/41 within this scope. No new L5 research. No indirect method,partial-exempt ringfencing,transparency,transfer41-A,short periods or positive benefit rule inferred.",
"proof_sha256": {
"api.txt": "7e78ac0a8460d463505b54ed510287b70030ddf65c115deeec8ab322de53d37b",
"build-exit.txt": "5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9",
"build.txt": "b0ed7b4b3220a4dd33918c1297c0bda4ee219f205a63758ddd2c03d2e5753c00",
"calculated.json": "ee1b1b49e0686bed3f8171beaacf9f57327850bcd36c96e1cc2ba5f1064ff585",
"CIRPC-page12.png": "ac413f5d39bf353fcaa4adb5bc630f328f34c3cd9ebeef47e73bd08d99d28bb9",
"CIRPC-page5.png": "af1209cfc8c5820ec7d46652bc9a1d30ca30e21e6e7c7e3bf49e52cfb46812a7",
"dossier-calculated.json": "a0f4223464e40e85810ddbd868fd9ff7fc8d5c0b2071380389805ed6b80f5bc3",
"dossier-missing.json": "551a9231f7ab48405ff45117f4667b0ee8431726b5136a96d4bb77e2095a99ee",
"download.html": "db4b0f82ad31825c016d1f3cf70f8b8da3484d26408d0ae043b2b2049949472c",
"frontend.txt": "3be8a5ea29b874a5c3b768c328035ad9c793fdec3d6e51337715ad88f82318bb",
"index.html": "9af7b69c19ca2fb213988ace8eb927008cb0bea73e267f16dee363fcdbcb0f12",
"missing.json": "3607986c3ec80b800effe2a48bd623c94cf2039b84a645007236e5528286290c",
"preparation.html": "1f970ab58e6f71a3ee80e93331496104745a19c570b4273eff5978e7a312f7ac",
"recovered-calculated.html": "1f970ab58e6f71a3ee80e93331496104745a19c570b4273eff5978e7a312f7ac",
"recovered-calculated.json": "9bdd82a0a1b1a8b0a3fd18c0a54ef2ffa7233cf10f012d16c830e795b85129ea",
"recovered-missing.html": "29a11c4e9af4f35f36d032244fbcfaa843cc0d90f1051cd80fdda0b0e4ac7311",
"recovered-missing.json": "994f44a62032acf7c1b2805c312b90f0665176d3438b0cf10da9af06229cd809",
"types.txt": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"ui-base.png": "d53f7e096abedf6dc1361aa9be303c7c2afb5604ab02e9d704d8ffe52f6f3e3d",
"ui-pending.png": "d900c53f829675b5f4ab500ed36c85dd9a71605e6e4f727d5abc9193511d2039",
"ui-proof.json": "85d4bbade8f97b676b7ecade5b283df853b93c74eef4314cb27d39b1f9fad651",
"ui.txt": "13c8982f58552f00e26ef4eda1d83a20489d57ba51dcf368455a74500241e660"
},
"not_claimed": [
"tax collection,tax payable,annual withholding credits,M20/M22/submission",
"Official consumption of loss ledger or complete fiscal regime",
"Positive benefits automatically deductible from typed amount/reference",
"Full L6 completion or resolution of L5 ten questions"
],
"active_changes": false,
"schema_API_config_permissions_dependencies_delta": false,
"L6_complete": false,
"L5_questions": "Only actually dependent cases limited;existing ten questions unchanged"
}
@@ -0,0 +1,384 @@
{
"status": "scoped_financial_result_to_taxable_profit_demonstrated_QA_not_installed",
"installed_baseline": "7a11c4ef8f06ef149eb0488be3cd0749dc609bd0",
"previous_QA": "664c88c8f7381548a2f1d8ecacdf10715e8408f5",
"branch": "codex/irpc-l6-taxable-profit-qa-20261025",
"QA_workspace": "C:\\laragon\\www\\portal-investidor-irpc-l6-profit-qa-20261025",
"scope": "Annual Jan-Dec2026,MZN,resident general regime,complete subject-year projection. Ordinary recognised revenues and indispensable documented ordinary costs,with no other exclusions/limits declared. Fines and compensatory interest36(1)c added back from existing entries. Positive depreciation and remaining financial interest require their own treatment and remain pending.",
"implemented": [
"Optional explicit annual review reuses existing plan and adjustment rows;no repeated financial amounts entered",
"Each financial line classified with support and known amount;declared absence cannot override nonzero source",
"Three persistent evidence states:known amount including zero,declared supported absence,missing information",
"Six existing-effect topics:positive/negative non-accounting patrimonial variations,other income/expense corrections,timing,special operations;known nonzero amount preserved but blocks this limited path until implemented",
"Taxable profit=financial profit before tax+supported addbacks only when subject-year complete and remaining effects expressly absent/known zero",
"No-adjustment and negative-result cases supported without presumed zero or loss carryforward",
"Version2 optional closure;legacyversion1 result remains current without recalculation,newinput changes invalidate only new result;history retained",
"Private API create/update/recovery,UI,HTML and dossier from recovered payload include all evidence states"
],
"examples": {
"known_case": "6480 financial profit +100 noncontractual fine +120 compensatory interest included in financial costs =6700 simulated taxable profit;ordinary remaining costs qualified with support;all other effects expressly absent/known zero",
"known_zero": "Income corrections known0 stored separately from absent patrimonial variations",
"missing_case": "Missing negative-patrimonial evidence -> taxable profit indeterminate;6480 financial profit and220 additions retained",
"unsupported_case": "Known positive variation500 or positive depreciation or financial interest remaining -> amount visible,profit indeterminate",
"no_adjustments": "Financial profit6600 with full review/no additions -> simulated profit6600",
"negative_result": "Financial result-5280 with full review retained signed;no carryforward or tax credit inferred"
},
"not_claimed": [
"Taxable base,tax collection,loss carryforward,annual withholding credits or M20/M22",
"Full normalIRPC or L6 completion",
"Actual accounting statement or tax authority confirmation;origin remains projected",
"General treatment of nonzero patrimonial changes,other corrections,depreciation/financial-interest limits",
"Any conclusion to L5 J1-J5/C1-C5"
],
"verification": {
"frontend_new_tests": 9,
"private_API": "1test/38assertions;create then If-Match update and recovery;DatabaseTransactions rollback;isolated127.0.0.1:55441/simulator_fiscal_delta_20261021_test",
"typescript": "passed",
"Wayfinder": "routes/actions generated using existing guarded procedure",
"QA_build": "passed exit0",
"UI": {
"calculationToTaxableProfit": true,
"localSaveRecovery": true,
"knownZeroDistinct": true,
"declaredAbsenceDistinct": true,
"missingInformationIndeterminate": true,
"absenceContradictionDetected": true,
"independentAdditionsPreserved": true,
"download": true,
"privateApi": "IrpcNormalProfitDraftTest separate",
"errors": []
},
"dossier": "both known and missing outputs generated from actual private API recovery",
"accepted_proofs": "reused;no manual repeat of accepted functional suites;legacy snapshot only read and roundtripped",
"legacy_fixture_sha256": "22968d447a30ad222f83bfb1c142ea1900fc2456945bfc6d517440829dec32cc",
"preserved_runtime": 33,
"preserved_originals_from_664c88c8": 31,
"installed_public_revision": {
"commit": "7a11c4ef8f06ef149eb0488be3cd0749dc609bd0",
"branch": "main",
"built_at": "2026-10-25T19:18:14.226356+00:00",
"manifest_sha256": "d78df5e7caee48690641143c8e8633b850db421468c837ec37992ee9cfa21aaa"
}
},
"runtime_delta_joint_from_7a11c4ef": [
{
"path": "resources/js/lib/irpc-normal.ts",
"sha256_LF": "387292520216d3d37870e4080880e5ec026702977a2f4c556be6c82dd34a7fce"
},
{
"path": "resources/js/components/simulation-irpc-normal.tsx",
"sha256_LF": "d15a42d6bc295a4794b8427c668780335305d6091363002b570109aa0ac1aef9"
},
{
"path": "resources/js/components/simulation-form.tsx",
"sha256_LF": "85b024a7f45ceb52efd6ff1f21d0eab1fd8fcf1ab59e4b5302c08685235c472a"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "a0909bbfcdf7e8542b010faa104fcb918e86ae38ddf096082d4d5be98d31b2b9"
},
{
"path": "resources/js/lib/project-dossier-report.ts",
"sha256_LF": "5207a2ffeb208cd5ace6713038cee85208020ee618194dca7114e94fc3200b6c"
},
{
"path": "resources/js/lib/irpc-normal-profit.ts",
"sha256_LF": "35dc586d9ab6c77405f3a46ed2ce3d9db74c54f338314d5e3c4959f0b6a55860"
}
],
"protected_runtime": [
{
"path": "resources/js/components/acquisition-beverage-restitution.tsx",
"sha256_LF": "6f44897b8b12569314551df0022c26da57a165634087942a724293e66837558d"
},
{
"path": "resources/js/components/fiscal-calculation-gaps.tsx",
"sha256_LF": "1dab6ceb73756d4e023096b3b2ba767aaa843ff6cc69046ea630ab449a00b0dd"
},
{
"path": "resources/js/components/fiscal-l3-preparation.tsx",
"sha256_LF": "e84a7b1ccadaa1b5bd78d778a3287f96ccaf530855eef404786cd7aa3d321b73"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256_LF": "c206d4cfe575d6ba007aa2b425b5f898efa97e4162b8710e358b6ecfd9458542"
},
{
"path": "resources/js/components/simulation-operations.tsx",
"sha256_LF": "a7e55972fa790063dcf11945055de2af46a77db9e509900af22ede7ec47bb4cf"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256_LF": "b0ef55e0917bdb79f14b53ba9e95d73c08153befeb7d4ce73f81e6fb13992225"
},
{
"path": "resources/js/lib/iva-beverage-allocation.ts",
"sha256_LF": "32968d198c7fe0c53ca89641c22d5749be6636be2c79127b867e4e3afd0dd40d"
},
{
"path": "resources/js/lib/iva-beverage-restitution.ts",
"sha256_LF": "5c650cbd9469d5f99001f56fc4ff99ac973eb368036d4e96c6d171f1b220bd9e"
},
{
"path": "resources/js/lib/iva-calculation-gaps.ts",
"sha256_LF": "2e7d84a0c196bd5b56fd67cc1a389d43d5041894184e675680a4de3cd10b31a2"
},
{
"path": "resources/js/lib/iva-operations.ts",
"sha256_LF": "ec37b949f1233c5f5c14a87450c421ed29fabf1ed5b73fb32564564a2bc31f54"
},
{
"path": "resources/js/lib/l3-form-preparation.ts",
"sha256_LF": "fc47f5fa5ec1420fbd847d0d081f00d99ebbb524164eef785b20877e0562f704"
},
{
"path": "resources/js/lib/ispc-residuals.ts",
"sha256_LF": "40d5751c06c7c155ab4b7a17ee2d1653da2fbbf075807fbb8561cdbe19820955"
},
{
"path": "resources/js/components/simulation-ispc-residuals.tsx",
"sha256_LF": "a9219d6f41ccbd0ce45659d4f6aa0fa1c169a685840f5cb1e18daeca377d5e18"
},
{
"path": "resources/js/lib/ispc-eligibility.ts",
"sha256_LF": "44675c5efacdc1ae19505667611ba3b522d3043cebacc8754597c3a68ca89d25"
},
{
"path": "resources/js/components/simulation-ispc-quarter.tsx",
"sha256_LF": "2c2555309b32d4261f14e7164f39314c9188129c2990357fc54090a2468dd2b4"
},
{
"path": "resources/js/components/simulation-ispc-withholding.tsx",
"sha256_LF": "e0445d015b72859e48726959aa52686f79b1cf5c2ade29751efa83257068b878"
},
{
"path": "resources/js/lib/ispc-quarter.ts",
"sha256_LF": "f66bd52e9cdfe1ddaa6b00a931465862b3d890b9be216b7a056740f027f24129"
},
{
"path": "resources/js/lib/ispc-withholding.ts",
"sha256_LF": "6c31b240299edd3262efa28f7f3d5aee21123f94e30ef4ab90e26c35777cb6e4"
},
{
"path": "resources/js/components/simulation-ispc-eligibility.tsx",
"sha256_LF": "f48dd4a8f87a994eda0447f81a463589905e5873b2e1044debac9d10825a880c"
},
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256_LF": "cce283b1d0a07fb383fcb527225f4dd5bec829010a662cbaae1d60e595221977"
},
{
"path": "resources/js/lib/iva-modelo-a.ts",
"sha256_LF": "c641619a05613c1620385baad0e9ffbf810dd970aafb30e12b3a7f9a3bf11846"
},
{
"path": "resources/js/lib/iva-fx-selection.ts",
"sha256_LF": "9aa07ad443bc777b80510a3b5bd6aff9ddb9814d2450f3c690e531e74d71d998"
},
{
"path": "resources/js/components/simulation-fx-selection.tsx",
"sha256_LF": "39bb6d87d404745b0b66349bc11626545a3672ae27321ce9b4658416592059bf"
},
{
"path": "resources/js/lib/business-financial-plan.ts",
"sha256_LF": "c20274722d1ffcd0360f041a6cacb5d868fe0621cb27a1aca6e06826612c3ebb"
},
{
"path": "resources/js/lib/iva-currency-events.ts",
"sha256_LF": "cc9f2045d302d7987310da4006cc250fc5c99a27397918d166d649bfc32fab08"
},
{
"path": "resources/js/lib/irpc-fx.ts",
"sha256_LF": "5c4a7a477429f8d775acf6db3e117008468f5554e5731dec81f60fbb75e948fb"
},
{
"path": "resources/js/lib/irpc-withholdings.ts",
"sha256_LF": "8e5f3c035ce5e4d6c3fc82f933439ab580fa5519492f9c4d32cfb71b77b54803"
},
{
"path": "resources/js/components/simulation-irpc-withholdings.tsx",
"sha256_LF": "751af4fab346659bc5ccb08b8a2169769af7521ea0035050af32b41ea7f5aa76"
},
{
"path": "resources/js/lib/irpc-interest.ts",
"sha256_LF": "f8e6390b3b2c58c296f7e3fd14576e06ae248bc0cabce1a666b7094611f2a7dd"
},
{
"path": "resources/js/lib/irpc-mrfta.ts",
"sha256_LF": "76dcce8954f68b081d500be61de9c5b146a452a3eb578a0b78776ba9e1f8051c"
},
{
"path": "resources/js/lib/irpc-mrfta-cases.ts",
"sha256_LF": "4266746076ab3f70312fd042351e24dd2f136c4f3e8a277b57dd97849a9f1862"
},
{
"path": "resources/js/components/simulation-irpc-mrfta.tsx",
"sha256_LF": "913d1bb4ac0fc59763cf5d27bc637f6a713b2050c4463748db554af4be451538"
},
{
"path": "resources/js/lib/financial-fiscal-bridge.ts",
"sha256_LF": "5a30c501653b16b5fedcb12631ce81fcce4fe473aa542e94374986b3c50f2d33"
}
],
"originals": [
{
"path": "docs/investmoz/simulations/source-archive/AT-Comunicado-9-2026-ISPC.pdf",
"sha256": "106f8a9ce9255c03549c70bf07fe999d32e6e55302d009b509862aa74ccb4973"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-30-ISPC.pdf",
"sha256": "6802edd06b6ff638a0b851a3ec7ecf69af8f07840faa47446becad67d35d445c"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-B-Geral.pdf",
"sha256": "bd977c7c59d4d98befd92e2c566b1bf168cb1343bb519f51b41a3807f431fc57"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-MRFTA-19-39.pdf",
"sha256": "8ea62c53066b482f87078a7a7b1ecf15ca98a12a122e8d7abca63acfc993186b"
},
{
"path": "docs/investmoz/simulations/source-archive/BM-Mercado-Monetario-MAIBOR-20261025.html",
"sha256": "00e8a7e0d3a1db4ca3beb56d5361b2084a0f1684f3d40fc1c203702a2190e063"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf",
"sha256": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-89-I-Serie-2017-06-08.pdf",
"sha256": "11f0cab15eb6e51010952203ffa24fdc533a24fd642e19525fe4f46b17a1f5e5"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-95-I-Suplemento-2025-05-21.pdf",
"sha256": "e0e682e2c027c3cd9c1d46a73a3f48bc5f6bdbf05667fd97314d7a3f6a456358"
},
{
"path": "docs/investmoz/simulations/source-archive/BR252-I-Serie-2022-Lei20-PESOE.pdf",
"sha256": "1159fd3ce1ba5581671796d083534da48bd3c5578298819e896f1c2a8026318d"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-22-2021-BR70.pdf",
"sha256": "a8fac38dcfe08f9c7a8e46254cff10e1ec82fc4f7a8d88ad6e4fe7d91ffc21a5"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-27-2026-BR123.pdf",
"sha256": "26249c3fa58f149c81de36e99d1aac2819a4771379d9e8833159660dabf539bb"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-29-1998-BR22-5-suplemento.pdf",
"sha256": "6242cbe675faadf085f43f95ec8c7e8868aafe67c3b2ab2bb010992288f954f8"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-3-2011-BR-11-I-mineiros.pdf",
"sha256": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-37-2023-BR124.pdf",
"sha256": "7e680b191481faa0e2e9057fa5053587eb2a29d1d8c819e0eb9f02814255a04c"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-9-2008-BR16.pdf",
"sha256": "96fccdecbfdc11c9eafb90fbc6c7bc259f88bbd4c7507d1ac3af1fa03f960697"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf",
"sha256": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-14-1992-BR42.pdf",
"sha256": "089fff7423e99a70a230a73ca379e4ea3a91d124703f91016e57ff82794b9e56"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-BR251-exemplar-MCNet5.pdf",
"sha256": "14eb34f0af91a8f5cb1770c7b52d6ff839c6818302d1ed96d79afbfb9fe999d4"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-IPP-BR250-Parlamento.pdf",
"sha256": "978cd22403ffd336a631704ecd7a5bbd814a427c815b9acdaca5515591dd9e2a"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2013-BR76.pdf",
"sha256": "bba96d645cc935ffc3d1a79b9f0f73ac1c693d6459c2ad41f56cd2841accae76"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2017-IRPS-BR-OCAM.pdf",
"sha256": "c3a0186cb9ad090d7a9533006295dc9bb6a62ad0d6150173cbd49dba4ee4b52d"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-2-2011-BR-1-4-suplemento-MCNet.pdf",
"sha256": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-20-2009-BR36-AT-exemplar19.pdf",
"sha256": "fc1c8144db42960cbf73e717e095896f511ece0f907f58f78819b27d6917a7ee"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf",
"sha256": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-34-2007-BR52.pdf",
"sha256": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-1994-BR37-3-suplemento.pdf",
"sha256": "210df9db8980d0a5690cd187a6eeec7e37a900d743e39062c16f4e0d12215c7e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-2012-BR3.pdf",
"sha256": "b8845cef41dcbd9ba50c43dbfa743a56030dd3d348242a107e1ae30279eec121"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-7-1991-Partidos-IFES.pdf",
"sha256": "6b783a0bb3330688ef10660a58060d9724aa2da6a873d234fe902f0eaaeda42d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-CDT-1992.pdf",
"sha256": "d504e1024b28aee5c6acf4592acb96ec9c915a8414f67a61ab6984d6acf9df9d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-Protocolo-2009.pdf",
"sha256": "f353773dcf41f09f4daa6cf5ba5a5f7994f3e02615867c2dcffc61c3d901bf9b"
}
],
"new_source_files": 0,
"source_review": "Existing accepted sources only. Visually read Lei34/2007 PDF6/p768(60),PDF7/p768(61):17/18/20/22;Lei20/2009 official AT archived exemplar PDF2/3,p272(14/15):18/20/21/22/24;remaining accepted amendment chain reused. New nonzero variations/other corrections not activated. Official webdav page inaccessible via web tool;archived official exact exemplar used,not secondary reconstruction. No L5 rate/CER search.",
"proof_sha256": {
"api.txt": "13961d8421e329123ae99e4202e182ef1089de5c5e7d28b503d3b15797eab1b2",
"build-exit.txt": "5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9",
"build.txt": "8272c7eb2f6058ddf64925103d5cc9ac9e4707c0a518c7073ecf04c690fb58e0",
"calculated.json": "105857393035cb5e7c569dc9e6c7b91f51c335b9799fc148b1bfee57057f3138",
"dossier-calculated.json": "addc82429306cac3ff0d25899f0cad48ec3756e0a8cbfbc0ec8c34507e9ca346",
"dossier-missing.json": "b790abf0a99ef2e13091c5f63d2f697b3424133d676e97570a6b4d2196bf11e8",
"download.html": "14935a24e370cd2378eac64264734591981c40e25c7beffbc15a9d82646c7c32",
"frontend.txt": "ca819072c4ee39ff25d70f1d2ef4c374f7e0e4565ed59d26dd63f08c9e375bfc",
"index.html": "9af7b69c19ca2fb213988ace8eb927008cb0bea73e267f16dee363fcdbcb0f12",
"Lei-20-2009-BR36-AT-exemplar19.pdf-page2.png": "e39eadef731b6c3ae8cb4820238c4db3184111557d982a20dadee139ea2952a2",
"Lei-20-2009-BR36-AT-exemplar19.pdf-page3.png": "a4a39a81849f32e4c596ef7c0726d2054e74bf45531dd8e920d3927cafdb70bd",
"Lei-34-2007-BR52.pdf-page6.png": "de2c1cc9c8bf5b0cefa9671cc8ad776e21a8492b791648be492d1540d78f748f",
"Lei-34-2007-BR52.pdf-page7.png": "7a934a93b77131bac30455309228232dc15c6ccd614893d6a0497f692d7970c4",
"missing.json": "7ca5bf593230bd973b1098d8e82866f5c6e0d534c5aa0f0d794e23ffc77ce7b4",
"preparation.html": "9a07ab3a4e7fbce036f9337c60cb1bafd385395070c38af57a9becffda852df6",
"recovered-calculated.html": "9a07ab3a4e7fbce036f9337c60cb1bafd385395070c38af57a9becffda852df6",
"recovered-calculated.json": "36afb1c036d7470282df6e083456da4c0be1991660a5944e784d6ae24a116e5b",
"recovered-missing.html": "8167c25ec05f66b9a26f53d185ee7bbc64ae6ed4dc4812e4fff010b0e966eacf",
"recovered-missing.json": "e7727a76405c2ac848c90379543e88a36d6be2ee734a2565245c5ad4e4cb6bf3",
"types.txt": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"ui-missing.png": "aa07cc3b77c7a3a12944f1790a492ed96a3796ee3a21ea1d0fd757e7f0832996",
"ui-profit.png": "f4359bd9719bea78587c7024abc1e72d4fbc02ea392ffed92402f7e9649b3ee8",
"ui-proof.json": "015fd14e35d12a27c02640712222beedc00773f6b55e8a9aa94826ff120ed2f6",
"ui.txt": "7bb7fc5145f1226fd948164fadf9f2f6a4e9efb1f070e90530b93aea4fdd13d7"
},
"prepared_joint_delivery": "Includes664c88c8 plus this delta,base7a11c4ef;Git bundle/manifest to be verified after commit. No push or installation;fresh destination/backup/restore remain installation steps.",
"active_changes": false,
"schema_API_config_permissions_dependencies_delta": false,
"L5_operational_demonstrated_scope": true,
"L5_complete": false,
"L6_complete": false,
"L5_AT_questions": "Ten questions J1-J5/C1-C5 unchanged;only dependent cases limited"
}
@@ -0,0 +1,774 @@
{
"status": "installed_L6_exact_values_and_M20_M22_fields",
"installed": {
"status": "installed",
"commit": "5aaf1a56f9d928331364fcc8b0d1528e51dba327",
"release": "/var/www/investmoz-homologacao/releases/5aaf1a56f9d928331364fcc8b0d1528e51dba327-c1543f3e",
"previous_release": "/var/www/investmoz-homologacao/releases/56475acb2f39e58cb51664913f7fb499f58eb7ab-694b3932",
"database_migrations": 0,
"content_imports": 0
},
"previous_baseline": "56475acb2f39e58cb51664913f7fb499f58eb7ab",
"backup": {
"stage": "/var/backups/investmoz-irpc-l6-values-forms-delivery-20261026/backup",
"created_at": "2026-10-26T08:57:09Z",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "97c1594250800531776ee204043a947b2522b3b63f6eb99d0ce8a74fd5af9213",
"files_sha256": "12fd138ae415dbf2361d94987848db49a49580ef8c75cd6f8e4f5cb19d911e6a",
"restore_verified": false
},
"restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "irpc_l5_restore_20261025",
"port": 55441,
"source_dump_sha256": "97c1594250800531776ee204043a947b2522b3b63f6eb99d0ce8a74fd5af9213",
"active_database_writes": 0
},
"preservation": {
"previous_release_preserved": "/var/www/investmoz-homologacao/releases/56475acb2f39e58cb51664913f7fb499f58eb7ab-694b3932",
"installed": {
"status": "installed",
"commit": "5aaf1a56f9d928331364fcc8b0d1528e51dba327",
"release": "/var/www/investmoz-homologacao/releases/5aaf1a56f9d928331364fcc8b0d1528e51dba327-c1543f3e",
"previous_release": "/var/www/investmoz-homologacao/releases/56475acb2f39e58cb51664913f7fb499f58eb7ab-694b3932",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 4,
"preserved_L3_ISPC_FX_runtime_files_verified": 50,
"documentary_files_verified": 31,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "a845f75cfcf49b86ebb8a3816f886a63"
},
"after": {
"rows": 106,
"checksum": "feb9a49bc8109928e6bfd6a7e1964d46"
}
},
"sessions": {
"before": {
"rows": 13,
"checksum": "5e210898e0b9fdf0049492cba9fe097b"
},
"after": {
"rows": 14,
"checksum": "19b40c4ac924c81749e7170841401696"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"schema_permissions": {
"schema_sha256": "5045b3e51d2185377aa3d9ac7fa07a44fad3ec620cdfa83ffe31c8884ee1601d",
"roles_grants_sha256": "1530c33cb016e67bfdc64891ddfce7f185b13b56b2cd87c012871a685e118109",
"filesystem_permissions": {
".env": {
"mode": 416,
"uid": 1001,
"gid": 33
},
"storage": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"storage/app": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"bootstrap/cache": {
"mode": 1528,
"uid": 1001,
"gid": 33
}
},
"comparison_identity": "postgres;catalogue read only;no passwords collected",
"unchanged": true
},
"operational_delta": {
"status": "operational_delta_reconciled",
"comparison_identity": "postgres before/after;isolated restored baseline;no RLS visibility inference",
"cache": "queue:restart;requestthrottle;identical home-sector cached value with refreshed expiry(HomeController remember10min);no deletedcache",
"sessions": "anonymous sessions from delivery user-agent or exactUA/time correlated with nginx public request;deleted sessions individually expired beyond configured lifetime,normal database session garbage collection(config/session lottery2/100)",
"delta": {
"cache": {
"before_rows": 106,
"after_rows": 106,
"changes": [
{
"key_sha256": "8d6ea77eb4b34d86d207362d583cfa8bf2880b907becd9b00398964482c6b4bd",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-{hash}",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true,
"same_value_home_cache_expiry_refresh": false
},
{
"key_sha256": "2f251473865d14b953236ab95b1521764754d76abd79b58ca7d38c96dfe2fab1",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-{hash}:timer",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true,
"same_value_home_cache_expiry_refresh": false
},
{
"key_sha256": "7f7dd83f47f5bf404d55e6e9f1367948721579970b195680645e356031a070ff",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-illuminate:queue:restart",
"is_queue_restart_key": true,
"expiration_unchanged": false,
"throttle_timer_pair": false,
"same_value_home_cache_expiry_refresh": false
}
]
},
"sessions": {
"before_rows": 13,
"after_rows": 16,
"changes": [
{
"key_sha256": "dd5c5235e9b48e28573884145b201d1f92cdabfea21a1602307c2569efe5d56c",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true,
"expired_before_comparison": false,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": true
},
{
"key_sha256": "3da37b843afdc870f2c0b1336344e97218a264ab5a7b44825a194c89a48fab32",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true,
"expired_before_comparison": false,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": true
},
{
"key_sha256": "f8e1fa11cf234c2c9f498402557b4c4aed3b89c83dace57af783ae840e4dc821",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true,
"expired_before_comparison": false,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": true
}
]
}
},
"business_tables_to_confirm_separately": 172,
"active_data_writes_by_comparison": 0,
"restore_network": "none"
},
"public_verification": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "5aaf1a56f9d928331364fcc8b0d1528e51dba327",
"branch": "main",
"built_at": "2026-10-26T09:02:46.728717+00:00",
"manifest_sha256": "e145286fdcb31ffe687568637861f7a630f9b943586d765f8d2e09957780ba14"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"IRPC-normal-adjustments/9": [
"assets/project-dossier-BwFhiBwz.js"
],
"Preparar representação dos valores e campos M20/M22": [
"assets/services-DF985_Sf.js"
],
"Imposto contabilizado e resultado líquido": [
"assets/services-DF985_Sf.js"
],
"Parcela de taxa reduzida para a colecta total302": [
"assets/services-DF985_Sf.js"
],
"Saldo final — âmbito L8": [
"assets/project-dossier-BwFhiBwz.js"
],
"Pressuposto documentado da conversão mensal para simulação": [
"assets/services-DF985_Sf.js"
],
"Reutilizar selecção cambial": [
"assets/services-DF985_Sf.js"
]
},
"assets": [
{
"file": "assets/services-DF985_Sf.js",
"status": 200,
"sha256": "0b96484962fa553514d85d8a13319a46b0aa6ca7e53135100cc2955ec559a713"
},
{
"file": "assets/project-dossier-BwFhiBwz.js",
"status": 200,
"sha256": "0aa305851e99b8825bca18b21d69cf58d335f7499f09c1e4508084653325e88b"
},
{
"file": "assets/project-dossier-document-HOU8u9Tk.js",
"status": 200,
"sha256": "03219fd42f932e0f8cc39e2be721a3a2b7cbb519d7d5378e8fb18567951b686d"
},
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-C9PCQDSl.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"runtime_delta": [
{
"path": "resources/js/components/simulation-irpc-form-preparation.tsx",
"sha256_LF": "9080304461bc55e3add4cfc68d756ab969b0648e6419cfb5f7175eea6861a4ff"
},
{
"path": "resources/js/components/simulation-irpc-normal.tsx",
"sha256_LF": "87178faabee3a6092ff14f74fb120841ca6d88ccc611006e549f49115596ca1f"
},
{
"path": "resources/js/lib/irpc-normal-form-preparation.ts",
"sha256_LF": "61db2e8f6303f82194ff45782e8baf405bded489645cf1b90eae4945a454d649"
},
{
"path": "resources/js/lib/irpc-normal.ts",
"sha256_LF": "aa3e7305edd0957f52163ecd0f67f3d513c65d3f3c5d64fc1af1ff843bc9d729"
}
],
"protected_runtime": [
{
"path": "resources/js/components/simulation-irpc-period-fx.tsx",
"sha256": "4b5f718b5ef415ecf5f96dabb0e3806254558c20905de6478e10dacf67569c49"
},
{
"path": "resources/js/components/simulation-irpc-schedules.tsx",
"sha256": "3768c316d5887d337eb3647671863c9464f961d1df4703403e7d57e5641273ed"
},
{
"path": "resources/js/lib/irpc-normal-assessment.ts",
"sha256": "a9b3ced852e37e3e087ce5dab1add4ec0737145ce19f61857a54d5d3d24a6f8c"
},
{
"path": "resources/js/lib/irpc-normal-base.ts",
"sha256": "22019d678f6eb16fead2207dc3d3fa9fd63413c6254633c1ffd4f1c0320344ac"
},
{
"path": "resources/js/lib/irpc-normal-costs.ts",
"sha256": "471457692a2a2f70a1bd1c7abb38d3ce42f07b62a63e5a4ab985ad1bbd068b46"
},
{
"path": "resources/js/lib/irpc-normal-depreciation.ts",
"sha256": "1dad3053157aeac44f6d3bd58885cfc47a73c19d2808284c16931679dfe4291b"
},
{
"path": "resources/js/lib/irpc-normal-period-fx.ts",
"sha256": "a2e7b066623eae17f0d8185d065d0adf5d3a485f780f8b09118a664dc4ba0531"
},
{
"path": "resources/js/components/simulation-irpc-depreciation.tsx",
"sha256": "1f9918bfb435bb5b7c0ddd2fafd7bace2a02514c6ece04b93f15975e494a5f53"
},
{
"path": "resources/js/lib/irpc-normal-profit.ts",
"sha256": "909e129a0245e6bf098317485b886a2d19e02c64bbfd9c6f718e98ec6b935b8d"
},
{
"path": "resources/js/lib/irpc-normal-schedules.ts",
"sha256": "edfb6fd338411fa8f87a6bdf9a9d4fd5c6dc2fad9d2eb3d32f2640e2951cbbe9"
},
{
"path": "resources/js/components/simulation-irpc-costs.tsx",
"sha256": "c4156916835daf0f33addf89dfedd40c31b8dc3297112cd98beac33422af274d"
},
{
"path": "resources/js/lib/irpc-normal-forms.ts",
"sha256": "4e986addb9f2d74e7a80345f8f1e4d8e0b2f562c867fa6eee84880d9f72a3649"
},
{
"path": "resources/js/components/simulation-irpc-taxable-base.tsx",
"sha256": "e4fe9f66d35d24aa68fd87de6a5a6a0e901706b270c18962fd0c7ab00f9abd93"
},
{
"path": "resources/js/components/simulation-irpc-assessment.tsx",
"sha256": "7174cc0160005a0c332ea40f02ba8a6d57985081b5ab45177ccd6e721bceea54"
},
{
"path": "resources/js/components/acquisition-beverage-restitution.tsx",
"sha256": "6f44897b8b12569314551df0022c26da57a165634087942a724293e66837558d"
},
{
"path": "resources/js/components/fiscal-calculation-gaps.tsx",
"sha256": "1dab6ceb73756d4e023096b3b2ba767aaa843ff6cc69046ea630ab449a00b0dd"
},
{
"path": "resources/js/components/fiscal-l3-preparation.tsx",
"sha256": "e84a7b1ccadaa1b5bd78d778a3287f96ccaf530855eef404786cd7aa3d321b73"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256": "c206d4cfe575d6ba007aa2b425b5f898efa97e4162b8710e358b6ecfd9458542"
},
{
"path": "resources/js/components/simulation-operations.tsx",
"sha256": "a7e55972fa790063dcf11945055de2af46a77db9e509900af22ede7ec47bb4cf"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256": "b0ef55e0917bdb79f14b53ba9e95d73c08153befeb7d4ce73f81e6fb13992225"
},
{
"path": "resources/js/lib/iva-beverage-allocation.ts",
"sha256": "32968d198c7fe0c53ca89641c22d5749be6636be2c79127b867e4e3afd0dd40d"
},
{
"path": "resources/js/lib/iva-beverage-restitution.ts",
"sha256": "5c650cbd9469d5f99001f56fc4ff99ac973eb368036d4e96c6d171f1b220bd9e"
},
{
"path": "resources/js/lib/iva-calculation-gaps.ts",
"sha256": "2e7d84a0c196bd5b56fd67cc1a389d43d5041894184e675680a4de3cd10b31a2"
},
{
"path": "resources/js/lib/iva-operations.ts",
"sha256": "ec37b949f1233c5f5c14a87450c421ed29fabf1ed5b73fb32564564a2bc31f54"
},
{
"path": "resources/js/lib/l3-form-preparation.ts",
"sha256": "fc47f5fa5ec1420fbd847d0d081f00d99ebbb524164eef785b20877e0562f704"
},
{
"path": "resources/js/lib/ispc-residuals.ts",
"sha256": "40d5751c06c7c155ab4b7a17ee2d1653da2fbbf075807fbb8561cdbe19820955"
},
{
"path": "resources/js/components/simulation-ispc-residuals.tsx",
"sha256": "a9219d6f41ccbd0ce45659d4f6aa0fa1c169a685840f5cb1e18daeca377d5e18"
},
{
"path": "resources/js/lib/ispc-eligibility.ts",
"sha256": "44675c5efacdc1ae19505667611ba3b522d3043cebacc8754597c3a68ca89d25"
},
{
"path": "resources/js/components/simulation-ispc-quarter.tsx",
"sha256": "2c2555309b32d4261f14e7164f39314c9188129c2990357fc54090a2468dd2b4"
},
{
"path": "resources/js/components/simulation-ispc-withholding.tsx",
"sha256": "e0445d015b72859e48726959aa52686f79b1cf5c2ade29751efa83257068b878"
},
{
"path": "resources/js/lib/ispc-quarter.ts",
"sha256": "f66bd52e9cdfe1ddaa6b00a931465862b3d890b9be216b7a056740f027f24129"
},
{
"path": "resources/js/lib/ispc-withholding.ts",
"sha256": "6c31b240299edd3262efa28f7f3d5aee21123f94e30ef4ab90e26c35777cb6e4"
},
{
"path": "resources/js/components/simulation-ispc-eligibility.tsx",
"sha256": "f48dd4a8f87a994eda0447f81a463589905e5873b2e1044debac9d10825a880c"
},
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256": "cce283b1d0a07fb383fcb527225f4dd5bec829010a662cbaae1d60e595221977"
},
{
"path": "resources/js/lib/iva-modelo-a.ts",
"sha256": "c641619a05613c1620385baad0e9ffbf810dd970aafb30e12b3a7f9a3bf11846"
},
{
"path": "resources/js/lib/iva-fx-selection.ts",
"sha256": "9aa07ad443bc777b80510a3b5bd6aff9ddb9814d2450f3c690e531e74d71d998"
},
{
"path": "resources/js/components/simulation-fx-selection.tsx",
"sha256": "39bb6d87d404745b0b66349bc11626545a3672ae27321ce9b4658416592059bf"
},
{
"path": "resources/js/lib/business-financial-plan.ts",
"sha256": "c20274722d1ffcd0360f041a6cacb5d868fe0621cb27a1aca6e06826612c3ebb"
},
{
"path": "resources/js/lib/iva-currency-events.ts",
"sha256": "cc9f2045d302d7987310da4006cc250fc5c99a27397918d166d649bfc32fab08"
},
{
"path": "resources/js/lib/irpc-fx.ts",
"sha256": "5c4a7a477429f8d775acf6db3e117008468f5554e5731dec81f60fbb75e948fb"
},
{
"path": "resources/js/lib/irpc-withholdings.ts",
"sha256": "8e5f3c035ce5e4d6c3fc82f933439ab580fa5519492f9c4d32cfb71b77b54803"
},
{
"path": "resources/js/components/simulation-irpc-withholdings.tsx",
"sha256": "751af4fab346659bc5ccb08b8a2169769af7521ea0035050af32b41ea7f5aa76"
},
{
"path": "resources/js/lib/irpc-interest.ts",
"sha256": "f8e6390b3b2c58c296f7e3fd14576e06ae248bc0cabce1a666b7094611f2a7dd"
},
{
"path": "resources/js/lib/irpc-mrfta.ts",
"sha256": "76dcce8954f68b081d500be61de9c5b146a452a3eb578a0b78776ba9e1f8051c"
},
{
"path": "resources/js/lib/irpc-mrfta-cases.ts",
"sha256": "4266746076ab3f70312fd042351e24dd2f136c4f3e8a277b57dd97849a9f1862"
},
{
"path": "resources/js/components/simulation-irpc-mrfta.tsx",
"sha256": "913d1bb4ac0fc59763cf5d27bc637f6a713b2050c4463748db554af4be451538"
},
{
"path": "resources/js/lib/financial-fiscal-bridge.ts",
"sha256": "5a30c501653b16b5fedcb12631ce81fcce4fe473aa542e94374986b3c50f2d33"
},
{
"path": "resources/js/components/simulation-form.tsx",
"sha256": "85b024a7f45ceb52efd6ff1f21d0eab1fd8fcf1ab59e4b5302c08685235c472a"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256": "a0909bbfcdf7e8542b010faa104fcb918e86ae38ddf096082d4d5be98d31b2b9"
},
{
"path": "resources/js/lib/project-dossier-report.ts",
"sha256": "5207a2ffeb208cd5ace6713038cee85208020ee618194dca7114e94fc3200b6c"
}
],
"originals": [
{
"path": "docs/investmoz/simulations/source-archive/AT-Comunicado-9-2026-ISPC.pdf",
"sha256": "106f8a9ce9255c03549c70bf07fe999d32e6e55302d009b509862aa74ccb4973"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-30-ISPC.pdf",
"sha256": "6802edd06b6ff638a0b851a3ec7ecf69af8f07840faa47446becad67d35d445c"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-B-Geral.pdf",
"sha256": "bd977c7c59d4d98befd92e2c566b1bf168cb1343bb519f51b41a3807f431fc57"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-MRFTA-19-39.pdf",
"sha256": "8ea62c53066b482f87078a7a7b1ecf15ca98a12a122e8d7abca63acfc993186b"
},
{
"path": "docs/investmoz/simulations/source-archive/BM-Mercado-Monetario-MAIBOR-20261025.html",
"sha256": "00e8a7e0d3a1db4ca3beb56d5361b2084a0f1684f3d40fc1c203702a2190e063"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf",
"sha256": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-89-I-Serie-2017-06-08.pdf",
"sha256": "11f0cab15eb6e51010952203ffa24fdc533a24fd642e19525fe4f46b17a1f5e5"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-95-I-Suplemento-2025-05-21.pdf",
"sha256": "e0e682e2c027c3cd9c1d46a73a3f48bc5f6bdbf05667fd97314d7a3f6a456358"
},
{
"path": "docs/investmoz/simulations/source-archive/BR252-I-Serie-2022-Lei20-PESOE.pdf",
"sha256": "1159fd3ce1ba5581671796d083534da48bd3c5578298819e896f1c2a8026318d"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-22-2021-BR70.pdf",
"sha256": "a8fac38dcfe08f9c7a8e46254cff10e1ec82fc4f7a8d88ad6e4fe7d91ffc21a5"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-27-2026-BR123.pdf",
"sha256": "26249c3fa58f149c81de36e99d1aac2819a4771379d9e8833159660dabf539bb"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-29-1998-BR22-5-suplemento.pdf",
"sha256": "6242cbe675faadf085f43f95ec8c7e8868aafe67c3b2ab2bb010992288f954f8"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-3-2011-BR-11-I-mineiros.pdf",
"sha256": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-37-2023-BR124.pdf",
"sha256": "7e680b191481faa0e2e9057fa5053587eb2a29d1d8c819e0eb9f02814255a04c"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-9-2008-BR16.pdf",
"sha256": "96fccdecbfdc11c9eafb90fbc6c7bc259f88bbd4c7507d1ac3af1fa03f960697"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf",
"sha256": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-14-1992-BR42.pdf",
"sha256": "089fff7423e99a70a230a73ca379e4ea3a91d124703f91016e57ff82794b9e56"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-BR251-exemplar-MCNet5.pdf",
"sha256": "14eb34f0af91a8f5cb1770c7b52d6ff839c6818302d1ed96d79afbfb9fe999d4"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-IPP-BR250-Parlamento.pdf",
"sha256": "978cd22403ffd336a631704ecd7a5bbd814a427c815b9acdaca5515591dd9e2a"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2013-BR76.pdf",
"sha256": "bba96d645cc935ffc3d1a79b9f0f73ac1c693d6459c2ad41f56cd2841accae76"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2017-IRPS-BR-OCAM.pdf",
"sha256": "c3a0186cb9ad090d7a9533006295dc9bb6a62ad0d6150173cbd49dba4ee4b52d"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-2-2011-BR-1-4-suplemento-MCNet.pdf",
"sha256": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-20-2009-BR36-AT-exemplar19.pdf",
"sha256": "fc1c8144db42960cbf73e717e095896f511ece0f907f58f78819b27d6917a7ee"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf",
"sha256": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-34-2007-BR52.pdf",
"sha256": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-1994-BR37-3-suplemento.pdf",
"sha256": "210df9db8980d0a5690cd187a6eeec7e37a900d743e39062c16f4e0d12215c7e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-2012-BR3.pdf",
"sha256": "b8845cef41dcbd9ba50c43dbfa743a56030dd3d348242a107e1ae30279eec121"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-7-1991-Partidos-IFES.pdf",
"sha256": "6b783a0bb3330688ef10660a58060d9724aa2da6a873d234fe902f0eaaeda42d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-CDT-1992.pdf",
"sha256": "d504e1024b28aee5c6acf4592acb96ec9c915a8414f67a61ab6984d6acf9df9d"
},
{
"path": "docs/investmoz/simulations/source-archive/PT-MZ-Protocolo-2009.pdf",
"sha256": "f353773dcf41f09f4daa6cf5ba5a5f7994f3e02615867c2dcffc61c3d901bf9b"
}
],
"pipeline_checks": [
"OK (1 test, 3106 assertions)",
"built in 31.73s",
"OK (59 tests, 317 assertions)",
"# tests 988",
"# pass 988",
"# fail 0"
],
"accepted_QA_proofs": {
"frontend_tests": 15,
"API_tests": 1,
"API_assertions": 97,
"database": "127.0.0.1:55441/simulator_fiscal_delta_20261021_test;DatabaseTransactions rollback",
"routes_actions": "existing guarded procedure",
"typescript": "passed",
"build": "passed",
"UI": "actual component/classification/taxstate/fractions/recover/export/independentcolecta",
"accepted_proofs": "reused"
},
"accepted_proofs_reused": true,
"manually_repeated_accepted_suites": false,
"sequence": {
"mapped": "net3120+depreciation10→profit/base3130→colecta1001.60MZN unchanged",
"fraction": "M20 amount300.50=601/2 kept exact;no fiscal rounding presumed",
"own_booktax": "net2800 known with booktax320;ownM22code pending,not213 ofothers",
"FX_assumptions": "preserved and explicit;no fiscal annual conversion confirmation",
"final_payable": null,
"final_recoverable": null,
"final_balance_scope": "L8"
},
"remaining_L6": {
"installed_scope_reference": "5aaf1a56",
"implementation_remaining": [
{
"case": "Amortizações e quota de aluguer36h restantes",
"example": "Ar condicionadoII/3/3,12,5%,fora dos10códigos implementados;bem usado com vida esperada e quotas anteriores documentadas.",
"resume": "Acrescentar catálogo e variantes previstas nas fontes aceites:usados/abertura/reparações/reavaliação,uso intensivo/concessões/peças/intangíveis,transição e excepções de método/vida útil,art17 em período curto e quota36h automática. Implementar só o caso escolhido e provar o delta;sem aguardar validação genérica daAT.",
"affected": "Só activo,método ou quota ainda não suportados;amortizações demonstradas preservadas."
},
{
"case": "Custos e periodizações específicos",
"example": "Campanha de lançamento300 com imputação por3exercícios;obra com receita antecipada positiva em vez do zero demonstrado.",
"resume": "Implementar36-A e articulação com36n,reforços financeiros28(3),19(5)/19(6) e18(6–10),com saldos/condições do caso. Autorização de mudança de método apenas quando a disposição aplicável a exigir. Provisões sectoriais dependem primeiro da norma específica indicada abaixo.",
"affected": "Só campanha,obra ou periodização específica;limites/provisões ordinários e casos já demonstrados mantidos."
},
{
"case": "Períodos e sequência de perdas",
"example": "Transição de4meses seguida dos períodos posteriores:aplicar a exclusão de contagem de41(5) ao período7(4)d,sem contar apenas anos civis.",
"resume": "Representar a sequência efectiva de períodos/perdas e acrescentar datas parciais,liquidação/períodos superiores a12meses e outros exercícios com regra/taxa aplicável. Não há nova pesquisa necessária para repetir o recorte de meses completos2026 já entregue.",
"affected": "Só período ou utilização de perda dependente;lucro independente e semestres demonstrados preservados."
},
{
"case": "Desdobramentos contabilísticos e quadros/anexos M20/M22 restantes",
"example": "Imposto próprio200 já incluído no plano e320 exterior:discriminar as duas componentes sem duplicar gasto;contas fora das6linhas financeiras ainda não transportadas.",
"resume": "Acrescentar o desdobramento e as correspondências dos quadros/anexos escolhidos,reutilizando dados existentes. Campos sem correspondência aguardam a referência concreta abaixo;os outros componentes podem ser implementados/provados separadamente.",
"affected": "Só componente/conta/campo ainda não suportado;valores e campos correspondidos preservados."
},
{
"case": "Saldos em moeda estrangeira",
"example": "Crédito final100USD não é soma das receitas convertidas por mês.",
"resume": "Implementar reconciliação de saldo e conversão pela data/regra que vier identificada,usando o motor cambial já entregue. A selecção mensal para simulação continua disponível;esta tarefa não cria outro mecanismo cambial.",
"affected": "Só saldo/conversão fiscal dependente da regra;plano e pressupostos mensais permanecem disponíveis."
}
],
"documentary_clarifications": [
{
"case": "Edição e campos M20/M22",
"example": "M20A.1/D35 remete201/quadro8;PDF M22 usa200/quadro10. Imposto próprio320 não pertence ao213 de outrem;quota recuperada−26 não tem campo de dedução confirmado.",
"resume": "Obter exemplar compatível ou instrução que identifique edição/período,campo e sentido do transporte. Para periodização/obras/reversões ainda sem campo,identificar a correspondência específica. Até informação nova,manter valores/efeitos sem código presumido e não repetir pesquisa.",
"affected": "Só transporte,campo e somas dependentes;resultado líquido próprio,260/278/300 e demais campos conhecidos mantidos."
},
{
"case": "Representação fiscal de fracções",
"example": "M20:300,50=601/2MZN,num exemplar que pede meticais sem centavos;M22:1/300MZN não é um número exacto de cêntimos.",
"resume": "Identificar instrução de representação/arredondamento da edição/campo ou esclarecimento específico. Conservar a fracção até lá;não deduzir regra de arredondamento apenas do rótulo «sem centavos».",
"affected": "Só transcrição não exactamente representável;inteirosM20,cêntimos exactosM22 e cálculo racional preservados."
},
{
"case": "Articulação de limites em combinações não demonstradas",
"example": "Combustível100,comprovado80,viatura de passageiros sem excepção:36h/i com36(4). Provisão de créditos200 num período curto de3meses:limite anual por corresponder.",
"resume": "Esclarecer especificamente a articulação h/i/36(4) e a base/limite dos períodos curtos de publicidade/créditos,se houver proporcionalização aplicável. Não somar exclusões,anualizar ou repartir por presunção. Retomar só perante referência/resposta concreta para o exemplo.",
"affected": "Só combinação ou limite do período;casos independentes com regra já aplicada mantidos."
},
{
"case": "Regra fiscal de conversão anual",
"example": "PlanoUSD com64MZN/USD por mês é pressuposto sintético de simulação,não confirmação da data/taxa fiscal anual ou da cotação do saldo final.",
"resume": "Identificar disposição/âmbito,data,base e taxa/boletim aplicáveis ao resultado e,quando necessário,ao saldo. Reutilizar o motor existente e demonstrar só a correspondência nova;sem taxa actual por defeito ou nova ronda da pesquisa anterior.",
"affected": "Só confirmação fiscal anual e saldo dependente;conversões mensais documentadas de simulação mantidas com os avisos."
},
{
"case": "Norma sectorial de provisões reguladas",
"example": "Provisão200 de uma entidade financeira sujeita ao28d não herda os1,5%/6% do regime ordinário29.",
"resume": "Identificar sector,regulador,norma de supervisão aplicável e saldos/condições necessários,antes da implementação específica. A fonte oficial fornecida é aceite;falta a regra concreta do caso,não certificação genérica da fonte.",
"affected": "Só provisão regulada respectiva;provisões ordinárias demonstradas preservadas."
}
],
"sources_reused": [
{
"path": "docs/investmoz/simulations/irpc-l6-costs-provisions-timing-qa-20261026.json",
"sha256": "b12df09899cbbf53fdb066f24dbe4852400b2d4bff01627e16e64c56f9860780"
},
{
"path": "docs/investmoz/simulations/irpc-l6-depreciation-qa-20261026.json",
"sha256": "167267f23a59cebfa874e46bf0238675fd7f92b4ee4e4c12cd0fda6ff3a99df5"
},
{
"path": "docs/investmoz/simulations/irpc-l6-periods-fx-qa-20261026.json",
"sha256": "a893c0608977a4b2b2a40379b2d54534f3ae96b082c0c64e43b4e2392b9152d9"
},
{
"path": "docs/investmoz/simulations/irpc-l6-values-forms-qa-20261026.json",
"sha256": "2fcf80b2493ab8472f247091ba59a9e6f84d00bab210ab667cefcba241c29a0d"
}
],
"existing_matrix_row": "AUD-SIM-INT02",
"new_research": false,
"new_functional_tests": false,
"L6_integrally_complete": false,
"operational_closure_decision_recorded": false,
"L7_L8_own_scopes": true
},
"L6_complete": false,
"operational_closure_decision_recorded": false,
"L7_L8_own_scopes": true,
"proof_files": {
"backup.txt": "cf1f754f54ef98184562357b55acd12b479beea5e92b2212c75d1d03560b2274",
"balance-section.md": "26907b1ecd068819e8fb6fd9635b103750c7459d614dce28d653d6a96018fcbb",
"balance.json": "ea400110264925daa84380c370c4b5129de4ef7923b3d1af5433a7a7879d8e00",
"installed-protected.txt": "e5d8530e3a6be9ed5f88a326d45b0748eca4faa1b5c64f39591930be329e41ec",
"installed-public-delta.json": "90d2a9a7d9fffb076e2773b4174fc20ce9c577d73c8154140e2b504e683638cf",
"installed-public.txt": "074fc7a1bc4055cd357764670c17a29f678bd1d3351da918813555d53b50a5e5",
"integration.txt": "828ca004ab574a3a687b7dc3a3176b0b4da81797af770a5e81694f5f7cee543f",
"manifest-served.json": "e145286fdcb31ffe687568637861f7a630f9b943586d765f8d2e09957780ba14",
"operational-delta.txt": "15c876ffa750c6b26d7cef368d78df21c101bf82dbb08e1dc7beb533bac2022c",
"preflight.txt": "8e90d1a978640df1dd161c54ab80c0e2b4c8046d3bd484bcc866ca40046081a5",
"preparation.json": "7df19578178f3ad55deb2c6fe8a48cb44233e64859be2e47b51b6f8e56da55e4",
"progress.txt": "dcc4abfd0fded4529ecf58b4a24392d3e3ae5071cad1474421ff3768da8e786d",
"restore.txt": "48c8f2a3b060ce86164273f072978eeffb57d01aa365e4c71a34cab2c1925b44",
"schema-permissions-after.txt": "76b5a4d8af11e4898a205062766cfb7ab6ec0783200e77e60a1927aa1ca18597",
"schema-permissions-before.txt": "0ab7c964792acdd8917bce256c472e55e034b103500a58b49f020b5084823ed7",
"status-final.txt": "7dedabc439b43d2938fa524a275a48b350cb948d6e4bfb1d551eac66d877fff1"
}
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,861 @@
{
"status": "grouped_QA_ready_not_installed",
"date": "2026-10-26",
"branch": "codex/irpc-l7-cessation-prior-qa-20261026",
"installed_baseline_reported": "0bd5d495505d512088887efd3dc5c61f645b1647",
"accepted_QA_included": "ba83afe7d8a90fd016fd0cf424418811279285cd",
"runtime_commit": "992c97ad",
"main_incorporated": "ae0d74bb3a5e0220c886dd72801a6550dd4ccbbe",
"merge_commit": "ff84ab64",
"main_presentation_and_V2_01_preserved": true,
"remote_installation_or_recheck_this_pass": false,
"version": "IRPC-normal-adjustments/13",
"scope": "resident annual2026 or fullmonth cessation2026;new historicalcost assets entering2025/2026;constant maximum normalrate,monthlyfromstart,documented prioraccounting/fiscal/recoverable balances;no cumulation",
"scope_choice": "2025/2026 is demonstrated implementation coverage,not a new legal date restriction",
"optional_input": "acceleration.monthly.continuation version1/period/reference/historyReference/monthlyFromStart;exclusive of startPeriod",
"versions10_11_12_keys_results_histories_preserved": true,
"runtime_delta": {
"resources/js/lib/irpc-special.ts": "5b729a8a330765a4adb5c367a25d050c1c5286249187cbeacd820b0436aa6711",
"resources/js/lib/irpc-normal.ts": "b76ecbda7aff09a12ec9d88cd5f6bf099f4ee1ed22a0ab7fd6113422f0085ea2",
"resources/js/components/simulation-irpc-special.tsx": "10afdc4544405dc59a58efeae190c62a90d4c75e71b53dbc0b528cbb50d30991"
},
"L6_depreciation_period_fx_engines_unchanged": true,
"cases_recovered": {
"cessation": {
"period": {
"from": "2026-01-01",
"to": "2026-06-30",
"pending": []
},
"L6_profit": {
"numerator": "3130",
"denominator": "1"
},
"L6_base": {
"numerator": "3130",
"denominator": "1"
},
"L6_colecta": {
"numerator": "5008",
"denominator": "5"
},
"status": "calculated",
"additional_deduction": {
"numerator": "10",
"denominator": "1"
},
"L7_profit": {
"numerator": "3120",
"denominator": "1"
},
"L7_base": {
"numerator": "3120",
"denominator": "1"
},
"L7_colecta": {
"numerator": "4992",
"denominator": "5"
},
"ledger": [
{
"prior": {
"previousAccounting": "0",
"previousFiscal": "0",
"available": "0",
"reference": "QA ausência declarada de quotas anteriores;activo entrou em2026",
"normalUsed": {
"numerator": "0",
"denominator": "1"
},
"normalRemaining": {
"numerator": "0",
"denominator": "1"
},
"acceleratedUsed": {
"numerator": "0",
"denominator": "1"
},
"acceleratedRemaining": {
"numerator": "0",
"denominator": "1"
},
"normalFiscalRemaining": {
"numerator": "950",
"denominator": "1"
},
"acceleratedFiscalRemaining": {
"numerator": "940",
"denominator": "1"
}
},
"exit": {
"state": "absent",
"date": ""
},
"id": "accelerated1",
"assetId": "server",
"assetKey": "asset-server",
"description": "Máquina industrial existente QA",
"start": "2026-01-15",
"months": 6,
"taxBasis": {
"numerator": "1000",
"denominator": "1"
},
"normalRate": {
"numerator": "10",
"denominator": "1"
},
"acceleratedRate": {
"numerator": "15",
"denominator": "1"
},
"normalQuota": {
"numerator": "50",
"denominator": "1"
},
"acceleratedQuota": {
"numerator": "75",
"denominator": "1"
},
"normalDeduction": {
"numerator": "50",
"denominator": "1"
},
"acceleratedDeduction": {
"numerator": "60",
"denominator": "1"
},
"additionalDeduction": {
"numerator": "10",
"denominator": "1"
},
"applied": true,
"reason": "Activo existente elegível;taxa normal ×1,5,com limite contabilístico e saldo fiscal."
}
],
"L8_final": {
"scope": "L8",
"payable": null,
"recoverable": null
}
},
"prior": {
"period": {
"from": "2026-01-01",
"to": "2026-06-30",
"pending": []
},
"L6_profit": {
"numerator": "3130",
"denominator": "1"
},
"L6_base": {
"numerator": "3130",
"denominator": "1"
},
"L6_colecta": {
"numerator": "5008",
"denominator": "5"
},
"status": "calculated",
"additional_deduction": {
"numerator": "25",
"denominator": "1"
},
"L7_profit": {
"numerator": "3105",
"denominator": "1"
},
"L7_base": {
"numerator": "3105",
"denominator": "1"
},
"L7_colecta": {
"numerator": "4968",
"denominator": "5"
},
"ledger": [
{
"prior": {
"previousAccounting": "150",
"previousFiscal": "100",
"available": "50",
"reference": "QA quotas contabilísticas150,fiscais100,parcela50 temporariamente tributada;sem encargos permanentemente excluídos",
"normalUsed": {
"numerator": "0",
"denominator": "1"
},
"normalRemaining": {
"numerator": "50",
"denominator": "1"
},
"acceleratedUsed": {
"numerator": "15",
"denominator": "1"
},
"acceleratedRemaining": {
"numerator": "35",
"denominator": "1"
},
"normalFiscalRemaining": {
"numerator": "850",
"denominator": "1"
},
"acceleratedFiscalRemaining": {
"numerator": "825",
"denominator": "1"
}
},
"exit": {
"state": "absent",
"date": ""
},
"id": "accelerated1",
"assetId": "server",
"assetKey": "asset-server",
"description": "Máquina industrial existente QA",
"start": "2025-01-01",
"months": 6,
"taxBasis": {
"numerator": "1000",
"denominator": "1"
},
"normalRate": {
"numerator": "10",
"denominator": "1"
},
"acceleratedRate": {
"numerator": "15",
"denominator": "1"
},
"normalQuota": {
"numerator": "50",
"denominator": "1"
},
"acceleratedQuota": {
"numerator": "75",
"denominator": "1"
},
"normalDeduction": {
"numerator": "50",
"denominator": "1"
},
"acceleratedDeduction": {
"numerator": "75",
"denominator": "1"
},
"additionalDeduction": {
"numerator": "25",
"denominator": "1"
},
"applied": true,
"reason": "Activo existente elegível;taxa normal ×1,5,com limite contabilístico e saldo fiscal."
}
],
"L8_final": {
"scope": "L8",
"payable": null,
"recoverable": null
}
},
"annual": {
"period": {
"kind": "calendar",
"from": "2026-01-01",
"to": "2026-12-31",
"reference": "QA doze meses do plano correspondem ao ano civil completo",
"pending": []
},
"L6_profit": {
"numerator": "6260",
"denominator": "1"
},
"L6_base": {
"numerator": "6260",
"denominator": "1"
},
"L6_colecta": {
"numerator": "10016",
"denominator": "5"
},
"status": "calculated",
"additional_deduction": {
"numerator": "50",
"denominator": "1"
},
"L7_profit": {
"numerator": "6210",
"denominator": "1"
},
"L7_base": {
"numerator": "6210",
"denominator": "1"
},
"L7_colecta": {
"numerator": "9936",
"denominator": "5"
},
"ledger": [
{
"prior": {
"previousAccounting": "150",
"previousFiscal": "100",
"available": "50",
"reference": "QA quotas contabilísticas150,fiscais100,parcela50 temporariamente tributada;sem encargos permanentemente excluídos",
"normalUsed": {
"numerator": "0",
"denominator": "1"
},
"normalRemaining": {
"numerator": "50",
"denominator": "1"
},
"acceleratedUsed": {
"numerator": "30",
"denominator": "1"
},
"acceleratedRemaining": {
"numerator": "20",
"denominator": "1"
},
"normalFiscalRemaining": {
"numerator": "800",
"denominator": "1"
},
"acceleratedFiscalRemaining": {
"numerator": "750",
"denominator": "1"
}
},
"exit": {
"state": "absent",
"date": ""
},
"id": "accelerated1",
"assetId": "server",
"assetKey": "asset-server",
"description": "Máquina industrial existente QA",
"start": "2025-01-01",
"months": 12,
"taxBasis": {
"numerator": "1000",
"denominator": "1"
},
"normalRate": {
"numerator": "10",
"denominator": "1"
},
"acceleratedRate": {
"numerator": "15",
"denominator": "1"
},
"normalQuota": {
"numerator": "100",
"denominator": "1"
},
"acceleratedQuota": {
"numerator": "150",
"denominator": "1"
},
"normalDeduction": {
"numerator": "100",
"denominator": "1"
},
"acceleratedDeduction": {
"numerator": "150",
"denominator": "1"
},
"additionalDeduction": {
"numerator": "50",
"denominator": "1"
},
"applied": true,
"reason": "Activo existente elegível;taxa normal ×1,5,com limite contabilístico e saldo fiscal."
}
],
"L8_final": {
"scope": "L8",
"payable": null,
"recoverable": null
}
},
"exit": {
"period": {
"from": "2026-01-01",
"to": "2026-06-30",
"pending": []
},
"L6_profit": {
"numerator": "9415",
"denominator": "3"
},
"L6_base": {
"numerator": "9415",
"denominator": "3"
},
"L6_colecta": {
"numerator": "15064",
"denominator": "15"
},
"status": "calculated",
"additional_deduction": {
"numerator": "125",
"denominator": "6"
},
"L7_profit": {
"numerator": "6235",
"denominator": "2"
},
"L7_base": {
"numerator": "6235",
"denominator": "2"
},
"L7_colecta": {
"numerator": "4988",
"denominator": "5"
},
"ledger": [
{
"prior": {
"previousAccounting": "150",
"previousFiscal": "100",
"available": "50",
"reference": "QA quotas contabilísticas150,fiscais100,parcela50 temporariamente tributada;sem encargos permanentemente excluídos",
"normalUsed": {
"numerator": "0",
"denominator": "1"
},
"normalRemaining": {
"numerator": "50",
"denominator": "1"
},
"acceleratedUsed": {
"numerator": "5",
"denominator": "2"
},
"acceleratedRemaining": {
"numerator": "95",
"denominator": "2"
},
"normalFiscalRemaining": {
"numerator": "2575",
"denominator": "3"
},
"acceleratedFiscalRemaining": {
"numerator": "1675",
"denominator": "2"
}
},
"exit": {
"state": "known",
"date": "2026-06-20"
},
"id": "accelerated1",
"assetId": "server",
"assetKey": "asset-server",
"description": "Máquina industrial existente QA",
"start": "2025-01-01",
"months": 5,
"taxBasis": {
"numerator": "1000",
"denominator": "1"
},
"normalRate": {
"numerator": "10",
"denominator": "1"
},
"acceleratedRate": {
"numerator": "15",
"denominator": "1"
},
"normalQuota": {
"numerator": "125",
"denominator": "3"
},
"acceleratedQuota": {
"numerator": "125",
"denominator": "2"
},
"normalDeduction": {
"numerator": "125",
"denominator": "3"
},
"acceleratedDeduction": {
"numerator": "125",
"denominator": "2"
},
"additionalDeduction": {
"numerator": "125",
"denominator": "6"
},
"applied": true,
"reason": "Activo existente elegível;taxa normal ×1,5,com limite contabilístico e saldo fiscal."
}
],
"L8_final": {
"scope": "L8",
"payable": null,
"recoverable": null
}
},
"missing": {
"period": {
"from": "2026-01-01",
"to": "2026-06-30",
"pending": []
},
"L6_profit": {
"numerator": "3130",
"denominator": "1"
},
"L6_base": {
"numerator": "3130",
"denominator": "1"
},
"L6_colecta": {
"numerator": "5008",
"denominator": "5"
},
"status": "indeterminate",
"additional_deduction": null,
"L7_profit": null,
"L7_base": null,
"L7_colecta": null,
"ledger": [
{
"prior": {
"previousAccounting": "150",
"previousFiscal": "100",
"available": "50",
"reference": "QA quotas contabilísticas150,fiscais100,parcela50 temporariamente tributada;sem encargos permanentemente excluídos",
"normalUsed": {
"numerator": "0",
"denominator": "1"
},
"normalRemaining": {
"numerator": "50",
"denominator": "1"
},
"acceleratedUsed": null,
"acceleratedRemaining": null,
"normalFiscalRemaining": {
"numerator": "850",
"denominator": "1"
},
"acceleratedFiscalRemaining": null
},
"exit": {
"state": "absent",
"date": ""
},
"id": "accelerated1",
"assetId": "server",
"assetKey": "asset-server",
"description": "Máquina industrial existente QA",
"start": "2025-01-01",
"months": 6,
"taxBasis": {
"numerator": "1000",
"denominator": "1"
},
"normalRate": {
"numerator": "10",
"denominator": "1"
},
"acceleratedRate": null,
"normalQuota": {
"numerator": "50",
"denominator": "1"
},
"acceleratedQuota": null,
"normalDeduction": {
"numerator": "50",
"denominator": "1"
},
"acceleratedDeduction": null,
"additionalDeduction": null,
"applied": false,
"reason": "CBF16 cessação/quotas anteriores:identifique período,suporte da vigência/condições e das quotas anteriores ou ausência;duodécimos desde a entrada emuso por documentar. Sem recalcular ou presumir saldos anteriores."
}
],
"L8_final": {
"scope": "L8",
"payable": null,
"recoverable": null
}
},
"negative": {
"period": {
"from": "2026-01-01",
"to": "2026-06-30",
"pending": []
},
"L6_profit": {
"numerator": "3130",
"denominator": "1"
},
"L6_base": {
"numerator": "3130",
"denominator": "1"
},
"L6_colecta": {
"numerator": "5008",
"denominator": "5"
},
"status": "calculated",
"additional_deduction": {
"numerator": "0",
"denominator": "1"
},
"L7_profit": {
"numerator": "3130",
"denominator": "1"
},
"L7_base": {
"numerator": "3130",
"denominator": "1"
},
"L7_colecta": {
"numerator": "5008",
"denominator": "5"
},
"ledger": [
{
"prior": {
"previousAccounting": "150",
"previousFiscal": "100",
"available": "50",
"reference": "QA quotas contabilísticas150,fiscais100,parcela50 temporariamente tributada;sem encargos permanentemente excluídos",
"normalUsed": {
"numerator": "0",
"denominator": "1"
},
"normalRemaining": {
"numerator": "50",
"denominator": "1"
},
"acceleratedUsed": null,
"acceleratedRemaining": null,
"normalFiscalRemaining": {
"numerator": "850",
"denominator": "1"
},
"acceleratedFiscalRemaining": null
},
"exit": {
"state": "absent",
"date": ""
},
"id": "accelerated1",
"assetId": "server",
"assetKey": "asset-server",
"description": "Máquina industrial existente QA",
"start": "2025-01-01",
"months": 6,
"taxBasis": {
"numerator": "1000",
"denominator": "1"
},
"normalRate": {
"numerator": "10",
"denominator": "1"
},
"acceleratedRate": null,
"normalQuota": {
"numerator": "50",
"denominator": "1"
},
"acceleratedQuota": null,
"normalDeduction": {
"numerator": "50",
"denominator": "1"
},
"acceleratedDeduction": null,
"additionalDeduction": {
"numerator": "0",
"denominator": "1"
},
"applied": false,
"reason": "Condição negativa documentada;quota normal mantida."
}
],
"L8_final": {
"scope": "L8",
"payable": null,
"recoverable": null
}
},
"absent": {
"period": {
"from": "2026-01-01",
"to": "2026-06-30",
"pending": []
},
"L6_profit": {
"numerator": "3130",
"denominator": "1"
},
"L6_base": {
"numerator": "3130",
"denominator": "1"
},
"L6_colecta": {
"numerator": "5008",
"denominator": "5"
},
"status": "absent",
"additional_deduction": {
"numerator": "0",
"denominator": "1"
},
"L7_profit": {
"numerator": "3130",
"denominator": "1"
},
"L7_base": {
"numerator": "3130",
"denominator": "1"
},
"L7_colecta": {
"numerator": "5008",
"denominator": "5"
},
"ledger": [],
"L8_final": {
"scope": "L8",
"payable": null,
"recoverable": null
}
}
},
"checks": {
"new_frontend_tests": 11,
"API_tests": 1,
"API_assertions": 123,
"API_database": "simulator_fiscal_delta_20261021_test",
"API_host": "127.0.0.1",
"API_port": 55441,
"transaction_rollback": true,
"wayfinder_with_form": true,
"typescript_after_main": true,
"build_after_main": true,
"HTML_financial_dossier_from_7_API_recoveries": true,
"UI": {
"actualComponent": true,
"explicitPreparationAndCancel": true,
"missingOnlyDependentL7": true,
"assetsAndPeriodNotEdited": true,
"prior15RecoveredWithin75DeductionAdditional25": true,
"prior35RemainingNotConsumed": true,
"annual30RecoveredWithin150DeductionAdditional50": true,
"cessationDoesNotImplyAssetExit": true,
"documentedExit5MonthsExact125over6": true,
"saveRecoverDownload": true,
"negativeAbsenceDistinct": true,
"accepted12DoesNotGainConflictingInput": true,
"L8FinalUnknown": true,
"errors": []
},
"accepted_ba83_proofs_reused_not_rerun": true
},
"preservation": {
"tracked_files_compared_before_documentation": 2816,
"unchanged": 2810,
"changed": [
"docs/investmoz/unification/traceability-and-manual.md",
"docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv",
"resources/js/components/simulation-irpc-special.tsx",
"resources/js/lib/irpc-normal.ts",
"resources/js/lib/irpc-special.ts",
"resources/js/pages/portal/why-invest.tsx"
],
"main_changes_reconciled_separately": [
"docs/investmoz/unification/traceability-and-manual.md",
"docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv",
"resources/js/pages/portal/why-invest.tsx"
],
"original_files": {
"docs/investmoz/simulations/source-archive/AT-Comunicado-9-2026-ISPC.pdf": "106f8a9ce9255c03549c70bf07fe999d32e6e55302d009b509862aa74ccb4973",
"docs/investmoz/simulations/source-archive/AT-MRFTA-19-39.pdf": "8ea62c53066b482f87078a7a7b1ecf15ca98a12a122e8d7abca63acfc993186b",
"docs/investmoz/simulations/source-archive/AT-Modelo-30-ISPC.pdf": "6802edd06b6ff638a0b851a3ec7ecf69af8f07840faa47446becad67d35d445c",
"docs/investmoz/simulations/source-archive/AT-Modelo-B-Geral.pdf": "bd977c7c59d4d98befd92e2c566b1bf168cb1343bb519f51b41a3807f431fc57",
"docs/investmoz/simulations/source-archive/BM-Mercado-Monetario-MAIBOR-20261025.html": "00e8a7e0d3a1db4ca3beb56d5361b2084a0f1684f3d40fc1c203702a2190e063",
"docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee",
"docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251",
"docs/investmoz/simulations/source-archive/BR-89-I-Serie-2017-06-08.pdf": "11f0cab15eb6e51010952203ffa24fdc533a24fd642e19525fe4f46b17a1f5e5",
"docs/investmoz/simulations/source-archive/BR-95-I-Suplemento-2025-05-21.pdf": "e0e682e2c027c3cd9c1d46a73a3f48bc5f6bdbf05667fd97314d7a3f6a456358",
"docs/investmoz/simulations/source-archive/BR252-I-Serie-2022-Lei20-PESOE.pdf": "1159fd3ce1ba5581671796d083534da48bd3c5578298819e896f1c2a8026318d",
"docs/investmoz/simulations/source-archive/Decreto-22-2021-BR70.pdf": "a8fac38dcfe08f9c7a8e46254cff10e1ec82fc4f7a8d88ad6e4fe7d91ffc21a5",
"docs/investmoz/simulations/source-archive/Decreto-27-2026-BR123.pdf": "26249c3fa58f149c81de36e99d1aac2819a4771379d9e8833159660dabf539bb",
"docs/investmoz/simulations/source-archive/Decreto-29-1998-BR22-5-suplemento.pdf": "6242cbe675faadf085f43f95ec8c7e8868aafe67c3b2ab2bb010992288f954f8",
"docs/investmoz/simulations/source-archive/Decreto-3-2011-BR-11-I-mineiros.pdf": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be",
"docs/investmoz/simulations/source-archive/Decreto-37-2023-BR124.pdf": "7e680b191481faa0e2e9057fa5053587eb2a29d1d8c819e0eb9f02814255a04c",
"docs/investmoz/simulations/source-archive/Decreto-9-2008-BR16.pdf": "96fccdecbfdc11c9eafb90fbc6c7bc259f88bbd4c7507d1ac3af1fa03f960697",
"docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b",
"docs/investmoz/simulations/source-archive/Lei-14-1992-BR42.pdf": "089fff7423e99a70a230a73ca379e4ea3a91d124703f91016e57ff82794b9e56",
"docs/investmoz/simulations/source-archive/Lei-17-2022-BR251-exemplar-MCNet5.pdf": "14eb34f0af91a8f5cb1770c7b52d6ff839c6818302d1ed96d79afbfb9fe999d4",
"docs/investmoz/simulations/source-archive/Lei-17-2022-IPP-BR250-Parlamento.pdf": "978cd22403ffd336a631704ecd7a5bbd814a427c815b9acdaca5515591dd9e2a",
"docs/investmoz/simulations/source-archive/Lei-19-2013-BR76.pdf": "bba96d645cc935ffc3d1a79b9f0f73ac1c693d6459c2ad41f56cd2841accae76",
"docs/investmoz/simulations/source-archive/Lei-19-2017-IRPS-BR-OCAM.pdf": "c3a0186cb9ad090d7a9533006295dc9bb6a62ad0d6150173cbd49dba4ee4b52d",
"docs/investmoz/simulations/source-archive/Lei-2-2011-BR-1-4-suplemento-MCNet.pdf": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899",
"docs/investmoz/simulations/source-archive/Lei-20-2009-BR36-AT-exemplar19.pdf": "fc1c8144db42960cbf73e717e095896f511ece0f907f58f78819b27d6917a7ee",
"docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53",
"docs/investmoz/simulations/source-archive/Lei-34-2007-BR52.pdf": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e",
"docs/investmoz/simulations/source-archive/Lei-4-1994-BR37-3-suplemento.pdf": "210df9db8980d0a5690cd187a6eeec7e37a900d743e39062c16f4e0d12215c7e",
"docs/investmoz/simulations/source-archive/Lei-4-2012-BR3.pdf": "b8845cef41dcbd9ba50c43dbfa743a56030dd3d348242a107e1ae30279eec121",
"docs/investmoz/simulations/source-archive/Lei-7-1991-Partidos-IFES.pdf": "6b783a0bb3330688ef10660a58060d9724aa2da6a873d234fe902f0eaaeda42d",
"docs/investmoz/simulations/source-archive/PT-MZ-CDT-1992.pdf": "d504e1024b28aee5c6acf4592acb96ec9c915a8414f67a61ab6984d6acf9df9d",
"docs/investmoz/simulations/source-archive/PT-MZ-Protocolo-2009.pdf": "f353773dcf41f09f4daa6cf5ba5a5f7994f3e02615867c2dcffc61c3d901bf9b"
},
"histories_plan_assets_and_declared_balances_unchanged": true,
"official_balances_not_consumed": true,
"active_migrations": 0,
"active_writes": 0,
"SGF_TEMPO_touched": false
},
"source_reused": {
"decree": "Decreto72/2013",
"articles": [
"3(3)",
"9(1-3)",
"10"
],
"visual_reused_pages": [
2,
3
],
"local_original": "C:\\laragon\\www\\portal-investidor-irpc-l6-depreciation-qa-20261026\\outputs\\irpc-l6-depreciation\\decreto-72-2013.pdf",
"sha256": "922ef67cb0c1111405c3c0a092d8c302a74fba8a34d627b6e9e13223612e0659",
"CBF": "accepted APIEX compilation,articles3/9/10/16",
"CIRPC": "accepted period7(4)",
"inventory_files": 8143,
"no_broad_research_repeated": true
},
"remaining_code": [
"other autonomousexpense origins/parcels",
"mixed/withheld cooperative income and other9-14entities",
"CBF16 pre2025entries,otherperiods/partialmonths/transition,exits outside demonstratedscope,lowerquota,methods/categories/cumulation",
"capitalgains61-A and specialoperations54-56/41-A",
"CBF17-19 and potential15entitlement;annualuseL8",
"sector/territorial/specificregimes",
"official L7 M20/M22 transport"
],
"document_conditions": [
"nature/parcels/period",
"required recognition or exception",
"reconciliation of actual prioraccounting/fiscal/temporaryrecoverable balances",
"specific normativeperiod/cumulationorder/limits",
"form edition/field/fraction representation"
],
"future_delivery_requires": [
"current main compatibility recheck",
"fresh space/inodes/build/backup capacity",
"fresh backup/restore",
"keep active until new ready"
],
"L6_operational_delimited": true,
"L7_partial": true,
"L8_final_balance_separate": true,
"evidence_directory": "outputs/irpc-l7-cessation-prior"
}
@@ -0,0 +1,614 @@
{
"status": "combinations_QA_ready_not_installed",
"date": "2026-10-26",
"branch": "codex/irpc-l7-combinations-qa-20261026",
"installed_baseline": "632dc06930d6b4f1b012feb3b4daa3b1cfc53f39",
"documentation_baseline": "f33d99b4",
"version": "IRPC-normal-adjustments/14",
"optional_input": "special.combinations version1;document presence/absence of specific/other benefits and express exception;reuse existing qualification/period/assets",
"scope": "CIRPC12 qualified pure cooperative + genericCBF16;separate expense61(4);CBF4/13 incompatibility of specific+generic without express exception;unmapped exception/other benefit remain indeterminate",
"calculation_order": [
"CBF16 net difference once",
"existing taxablebase deductions/losses",
"16percent on fullyeligible cooperativebase",
"35percent autonomous expenses separately",
"L8 final remains unknown"
],
"positive_unmapped_L6_benefit_not_reapplied": true,
"runtime_delta": {
"resources/js/lib/irpc-special.ts": "bc72c0c045fa7d7fc2a6b98ca95205479aa448f0c2a9819b930e72f7c93f6ade",
"resources/js/lib/irpc-normal.ts": "4741c2bdecb8570fe786e51f777c633da34dcb0052bb000f9b63ebfde48b1f4a",
"resources/js/components/simulation-irpc-special.tsx": "bb567f06cf2c844419341fa298751752ef94a2f493972d28f68b5f2245b95e00",
"resources/js/lib/irpc-special-combinations.ts": "b638fdf96e33a27c1c73492fb5690c7b170ecbe97dd4ad9881465b2c4eaa6a22"
},
"L6_depreciation_period_fx_engines_unchanged": true,
"cases_recovered": {
"combined": {
"L6_profit": {
"numerator": "3130",
"denominator": "1"
},
"L6_base": {
"numerator": "3130",
"denominator": "1"
},
"L6_colecta": {
"numerator": "5008",
"denominator": "5"
},
"status": "compatible",
"order": [
"Diferença adicionalCBF16 aplicada uma vez ao lucroL6",
"Matéria colectável recalculada com as mesmas deduções/perdasL6",
"Cooperativa12:50% da taxa geral32%=16% apenas na base integralmente elegível",
"Imposto autónomo61(4) separado a35%,sem redução cooperativa",
"Saldo final a pagar/recuperar permaneceL8"
],
"asset_claims": [
{
"assetId": "server",
"document": "QA-activo-servidor",
"line": "1",
"normalDeduction": {
"numerator": "50",
"denominator": "1"
},
"acceleratedDeduction": {
"numerator": "75",
"denominator": "1"
},
"priorRecoveredIncluded": {
"numerator": "15",
"denominator": "1"
},
"additionalDeduction": {
"numerator": "25",
"denominator": "1"
},
"remainingFiscal": {
"numerator": "825",
"denominator": "1"
}
}
],
"L7_profit": {
"numerator": "3105",
"denominator": "1"
},
"L7_base": {
"numerator": "3105",
"denominator": "1"
},
"L7_colecta": {
"numerator": "2484",
"denominator": "5"
},
"autonomous_tax": {
"numerator": "0",
"denominator": "1"
},
"combined_colecta": {
"numerator": "2484",
"denominator": "5"
},
"pending": [],
"L8_final": {
"scope": "L8",
"payable": null,
"recoverable": null
}
},
"autonomous": {
"L6_profit": {
"numerator": "3230",
"denominator": "1"
},
"L6_base": {
"numerator": "3230",
"denominator": "1"
},
"L6_colecta": {
"numerator": "5168",
"denominator": "5"
},
"status": "compatible",
"order": [
"Diferença adicionalCBF16 aplicada uma vez ao lucroL6",
"Matéria colectável recalculada com as mesmas deduções/perdasL6",
"Cooperativa12:50% da taxa geral32%=16% apenas na base integralmente elegível",
"Imposto autónomo61(4) separado a35%,sem redução cooperativa",
"Saldo final a pagar/recuperar permaneceL8"
],
"asset_claims": [
{
"assetId": "server",
"document": "QA-activo-servidor",
"line": "1",
"normalDeduction": {
"numerator": "50",
"denominator": "1"
},
"acceleratedDeduction": {
"numerator": "75",
"denominator": "1"
},
"priorRecoveredIncluded": {
"numerator": "15",
"denominator": "1"
},
"additionalDeduction": {
"numerator": "25",
"denominator": "1"
},
"remainingFiscal": {
"numerator": "825",
"denominator": "1"
}
}
],
"L7_profit": {
"numerator": "3205",
"denominator": "1"
},
"L7_base": {
"numerator": "3205",
"denominator": "1"
},
"L7_colecta": {
"numerator": "2564",
"denominator": "5"
},
"autonomous_tax": {
"numerator": "35",
"denominator": "1"
},
"combined_colecta": {
"numerator": "2739",
"denominator": "5"
},
"pending": [],
"L8_final": {
"scope": "L8",
"payable": null,
"recoverable": null
}
},
"incompatible": {
"L6_profit": {
"numerator": "3130",
"denominator": "1"
},
"L6_base": {
"numerator": "3130",
"denominator": "1"
},
"L6_colecta": {
"numerator": "5008",
"denominator": "5"
},
"status": "incompatible",
"order": [
"Diferença adicionalCBF16 aplicada uma vez ao lucroL6",
"Matéria colectável recalculada com as mesmas deduções/perdasL6",
"Cooperativa12:50% da taxa geral32%=16% apenas na base integralmente elegível",
"Imposto autónomo61(4) separado a35%,sem redução cooperativa",
"Saldo final a pagar/recuperar permaneceL8"
],
"asset_claims": [
{
"assetId": "server",
"document": "QA-activo-servidor",
"line": "1",
"normalDeduction": {
"numerator": "50",
"denominator": "1"
},
"acceleratedDeduction": null,
"priorRecoveredIncluded": null,
"additionalDeduction": null,
"remainingFiscal": null
}
],
"L7_profit": null,
"L7_base": null,
"L7_colecta": null,
"autonomous_tax": {
"numerator": "0",
"denominator": "1"
},
"combined_colecta": null,
"pending": [
"IncompatibilidadeCBF4/13:benefício específico declarado e genéricoCBF16 sem excepção expressa;nenhum benefício é escolhido ou removido automaticamente."
],
"L8_final": {
"scope": "L8",
"payable": null,
"recoverable": null
}
},
"missing": {
"L6_profit": {
"numerator": "3130",
"denominator": "1"
},
"L6_base": {
"numerator": "3130",
"denominator": "1"
},
"L6_colecta": {
"numerator": "5008",
"denominator": "5"
},
"status": "indeterminate",
"order": [
"Diferença adicionalCBF16 aplicada uma vez ao lucroL6",
"Matéria colectável recalculada com as mesmas deduções/perdasL6",
"Cooperativa12:50% da taxa geral32%=16% apenas na base integralmente elegível",
"Imposto autónomo61(4) separado a35%,sem redução cooperativa",
"Saldo final a pagar/recuperar permaneceL8"
],
"asset_claims": [
{
"assetId": "server",
"document": "QA-activo-servidor",
"line": "1",
"normalDeduction": {
"numerator": "50",
"denominator": "1"
},
"acceleratedDeduction": null,
"priorRecoveredIncluded": null,
"additionalDeduction": null,
"remainingFiscal": null
}
],
"L7_profit": null,
"L7_base": null,
"L7_colecta": null,
"autonomous_tax": {
"numerator": "0",
"denominator": "1"
},
"combined_colecta": null,
"pending": [
"Benefícios específicosCBF:identifique presença ou ausência documentada;localização não prova estatuto."
],
"L8_final": {
"scope": "L8",
"payable": null,
"recoverable": null
}
},
"exception": {
"L6_profit": {
"numerator": "3130",
"denominator": "1"
},
"L6_base": {
"numerator": "3130",
"denominator": "1"
},
"L6_colecta": {
"numerator": "5008",
"denominator": "5"
},
"status": "indeterminate",
"order": [
"Diferença adicionalCBF16 aplicada uma vez ao lucroL6",
"Matéria colectável recalculada com as mesmas deduções/perdasL6",
"Cooperativa12:50% da taxa geral32%=16% apenas na base integralmente elegível",
"Imposto autónomo61(4) separado a35%,sem redução cooperativa",
"Saldo final a pagar/recuperar permaneceL8"
],
"asset_claims": [
{
"assetId": "server",
"document": "QA-activo-servidor",
"line": "1",
"normalDeduction": {
"numerator": "50",
"denominator": "1"
},
"acceleratedDeduction": null,
"priorRecoveredIncluded": null,
"additionalDeduction": null,
"remainingFiscal": null
}
],
"L7_profit": null,
"L7_base": null,
"L7_colecta": null,
"autonomous_tax": {
"numerator": "0",
"denominator": "1"
},
"combined_colecta": null,
"pending": [
"Excepção expressa invocada:ligar artigo,âmbito,período e limites à combinação antes de calcular;esta excepção ainda não está correspondida."
],
"L8_final": {
"scope": "L8",
"payable": null,
"recoverable": null
}
},
"negative": {
"L6_profit": {
"numerator": "3130",
"denominator": "1"
},
"L6_base": {
"numerator": "3130",
"denominator": "1"
},
"L6_colecta": {
"numerator": "5008",
"denominator": "5"
},
"status": "compatible",
"order": [
"Diferença adicionalCBF16 aplicada uma vez ao lucroL6",
"Matéria colectável recalculada com as mesmas deduções/perdasL6",
"Cooperativa12:50% da taxa geral32%=16% apenas na base integralmente elegível",
"Imposto autónomo61(4) separado a35%,sem redução cooperativa",
"Saldo final a pagar/recuperar permaneceL8"
],
"asset_claims": [
{
"assetId": "server",
"document": "QA-activo-servidor",
"line": "1",
"normalDeduction": {
"numerator": "50",
"denominator": "1"
},
"acceleratedDeduction": {
"numerator": "75",
"denominator": "1"
},
"priorRecoveredIncluded": {
"numerator": "15",
"denominator": "1"
},
"additionalDeduction": {
"numerator": "25",
"denominator": "1"
},
"remainingFiscal": {
"numerator": "825",
"denominator": "1"
}
}
],
"L7_profit": {
"numerator": "3105",
"denominator": "1"
},
"L7_base": {
"numerator": "3105",
"denominator": "1"
},
"L7_colecta": {
"numerator": "4968",
"denominator": "5"
},
"autonomous_tax": {
"numerator": "0",
"denominator": "1"
},
"combined_colecta": {
"numerator": "4968",
"denominator": "5"
},
"pending": [],
"L8_final": {
"scope": "L8",
"payable": null,
"recoverable": null
}
},
"absent": {
"L6_profit": {
"numerator": "3130",
"denominator": "1"
},
"L6_base": {
"numerator": "3130",
"denominator": "1"
},
"L6_colecta": {
"numerator": "5008",
"denominator": "5"
},
"status": "compatible",
"order": [
"Diferença adicionalCBF16 aplicada uma vez ao lucroL6",
"Matéria colectável recalculada com as mesmas deduções/perdasL6",
"Cooperativa12:50% da taxa geral32%=16% apenas na base integralmente elegível",
"Imposto autónomo61(4) separado a35%,sem redução cooperativa",
"Saldo final a pagar/recuperar permaneceL8"
],
"asset_claims": [],
"L7_profit": {
"numerator": "3130",
"denominator": "1"
},
"L7_base": {
"numerator": "3130",
"denominator": "1"
},
"L7_colecta": {
"numerator": "2504",
"denominator": "5"
},
"autonomous_tax": {
"numerator": "0",
"denominator": "1"
},
"combined_colecta": {
"numerator": "2504",
"denominator": "5"
},
"pending": [],
"L8_final": {
"scope": "L8",
"payable": null,
"recoverable": null
}
}
},
"checks": {
"new_frontend_tests": 12,
"API_tests": 1,
"API_assertions": 133,
"QA_database": "simulator_fiscal_delta_20261021_test",
"QA_host": "127.0.0.1",
"QA_port": 55441,
"QA_transaction_rollback": true,
"wayfinder_with_form": true,
"typescript": true,
"build": true,
"recovered_HTML_and_financial_dossier": 7,
"UI": {
"actualComponent": true,
"explicitPrepareCancel": true,
"assetsPeriodsBenefitsNotEdited": true,
"missingOnlyDependentL7": true,
"CBF16Additional25ThenCooperative16": true,
"prior15AlreadyIncluded": true,
"specificGenericIncompatibilityNoAutomaticChoice": true,
"unmappedExceptionIndeterminate": true,
"autonomous35NotHalved": true,
"saveRecoverDownload": true,
"accepted13InputPreserved": true,
"L8FinalUnknown": true,
"errors": []
},
"accepted13_exact_model_key_history_comparison": true,
"accepted_suites_not_rerun": true,
"typescript_build_after_main": true
},
"preservation": {
"tracked_files_compared_before_docs": 2822,
"unchanged": 2819,
"modified": [
"resources/js/components/simulation-irpc-special.tsx",
"resources/js/lib/irpc-normal.ts",
"resources/js/lib/irpc-special.ts"
],
"new_runtime_module": "resources/js/lib/irpc-special-combinations.ts",
"originals": {
"docs/investmoz/simulations/source-archive/AT-Comunicado-9-2026-ISPC.pdf": "106f8a9ce9255c03549c70bf07fe999d32e6e55302d009b509862aa74ccb4973",
"docs/investmoz/simulations/source-archive/AT-MRFTA-19-39.pdf": "8ea62c53066b482f87078a7a7b1ecf15ca98a12a122e8d7abca63acfc993186b",
"docs/investmoz/simulations/source-archive/AT-Modelo-30-ISPC.pdf": "6802edd06b6ff638a0b851a3ec7ecf69af8f07840faa47446becad67d35d445c",
"docs/investmoz/simulations/source-archive/AT-Modelo-B-Geral.pdf": "bd977c7c59d4d98befd92e2c566b1bf168cb1343bb519f51b41a3807f431fc57",
"docs/investmoz/simulations/source-archive/BM-Mercado-Monetario-MAIBOR-20261025.html": "00e8a7e0d3a1db4ca3beb56d5361b2084a0f1684f3d40fc1c203702a2190e063",
"docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee",
"docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251",
"docs/investmoz/simulations/source-archive/BR-89-I-Serie-2017-06-08.pdf": "11f0cab15eb6e51010952203ffa24fdc533a24fd642e19525fe4f46b17a1f5e5",
"docs/investmoz/simulations/source-archive/BR-95-I-Suplemento-2025-05-21.pdf": "e0e682e2c027c3cd9c1d46a73a3f48bc5f6bdbf05667fd97314d7a3f6a456358",
"docs/investmoz/simulations/source-archive/BR252-I-Serie-2022-Lei20-PESOE.pdf": "1159fd3ce1ba5581671796d083534da48bd3c5578298819e896f1c2a8026318d",
"docs/investmoz/simulations/source-archive/Decreto-22-2021-BR70.pdf": "a8fac38dcfe08f9c7a8e46254cff10e1ec82fc4f7a8d88ad6e4fe7d91ffc21a5",
"docs/investmoz/simulations/source-archive/Decreto-27-2026-BR123.pdf": "26249c3fa58f149c81de36e99d1aac2819a4771379d9e8833159660dabf539bb",
"docs/investmoz/simulations/source-archive/Decreto-29-1998-BR22-5-suplemento.pdf": "6242cbe675faadf085f43f95ec8c7e8868aafe67c3b2ab2bb010992288f954f8",
"docs/investmoz/simulations/source-archive/Decreto-3-2011-BR-11-I-mineiros.pdf": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be",
"docs/investmoz/simulations/source-archive/Decreto-37-2023-BR124.pdf": "7e680b191481faa0e2e9057fa5053587eb2a29d1d8c819e0eb9f02814255a04c",
"docs/investmoz/simulations/source-archive/Decreto-9-2008-BR16.pdf": "96fccdecbfdc11c9eafb90fbc6c7bc259f88bbd4c7507d1ac3af1fa03f960697",
"docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b",
"docs/investmoz/simulations/source-archive/Lei-14-1992-BR42.pdf": "089fff7423e99a70a230a73ca379e4ea3a91d124703f91016e57ff82794b9e56",
"docs/investmoz/simulations/source-archive/Lei-17-2022-BR251-exemplar-MCNet5.pdf": "14eb34f0af91a8f5cb1770c7b52d6ff839c6818302d1ed96d79afbfb9fe999d4",
"docs/investmoz/simulations/source-archive/Lei-17-2022-IPP-BR250-Parlamento.pdf": "978cd22403ffd336a631704ecd7a5bbd814a427c815b9acdaca5515591dd9e2a",
"docs/investmoz/simulations/source-archive/Lei-19-2013-BR76.pdf": "bba96d645cc935ffc3d1a79b9f0f73ac1c693d6459c2ad41f56cd2841accae76",
"docs/investmoz/simulations/source-archive/Lei-19-2017-IRPS-BR-OCAM.pdf": "c3a0186cb9ad090d7a9533006295dc9bb6a62ad0d6150173cbd49dba4ee4b52d",
"docs/investmoz/simulations/source-archive/Lei-2-2011-BR-1-4-suplemento-MCNet.pdf": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899",
"docs/investmoz/simulations/source-archive/Lei-20-2009-BR36-AT-exemplar19.pdf": "fc1c8144db42960cbf73e717e095896f511ece0f907f58f78819b27d6917a7ee",
"docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53",
"docs/investmoz/simulations/source-archive/Lei-34-2007-BR52.pdf": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e",
"docs/investmoz/simulations/source-archive/Lei-4-1994-BR37-3-suplemento.pdf": "210df9db8980d0a5690cd187a6eeec7e37a900d743e39062c16f4e0d12215c7e",
"docs/investmoz/simulations/source-archive/Lei-4-2012-BR3.pdf": "b8845cef41dcbd9ba50c43dbfa743a56030dd3d348242a107e1ae30279eec121",
"docs/investmoz/simulations/source-archive/Lei-7-1991-Partidos-IFES.pdf": "6b783a0bb3330688ef10660a58060d9724aa2da6a873d234fe902f0eaaeda42d",
"docs/investmoz/simulations/source-archive/PT-MZ-CDT-1992.pdf": "d504e1024b28aee5c6acf4592acb96ec9c915a8414f67a61ab6984d6acf9df9d",
"docs/investmoz/simulations/source-archive/PT-MZ-Protocolo-2009.pdf": "f353773dcf41f09f4daa6cf5ba5a5f7994f3e02615867c2dcffc61c3d901bf9b"
},
"histories_assets_balances_plan_otherbooks_preserved": true,
"official_balances_not_consumed": true,
"active_writes": 0,
"migrations": 0,
"SGF_TEMPO_untouched": true
},
"sources_reused": [
{
"path": "C:/laragon/www/portal-investidor-irpc-l7-scope-20261026/outputs/irpc-l7-scope/APIEX-legislacao-investimentos-2025.pdf",
"sha256": "ba1e9eaabfec5d0c4cb2d9f2444a6860f7a90f222034764197829be402d408ed",
"pages": [
66,
70,
72
],
"articles": "CBF4/13/16"
},
{
"path": "C:\\laragon\\www\\portal-investidor-irpc-l7-common-qa-20261026\\docs\\investmoz\\simulations\\source-archive\\Lei-34-2007-BR52.pdf",
"sha256": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e",
"pages": [
5
],
"articles": "CIRPC12/14"
}
],
"inventory_reused": 8143,
"remaining_code": [
"other combinations and express exceptions",
"CBF17-19 and potential15 entitlement",
"specific sector/territorial regimes",
"mixed/withheld cooperativeincome and otherentities",
"other autonome expense origins",
"furtherCBF16 scopes",
"capitalgains/specialoperations",
"officialL7M20M22transport"
],
"resume_conditions": [
"disposition/article/scope/period/order/limit and segregatedparcel for combination",
"implement not-yet-supported treatment before adding its effect",
"specific document only for dependentcase/field"
],
"effort_reference": {
"type": "initial planning figures,not updated remainingestimate",
"L8_to_L14_hours": [
240,
416
],
"eight_hour_days": [
30,
52
],
"excludes": [
"L1-L7residuals",
"L15-L16unestimated",
"documentarywait"
],
"global_completion_percentage_not_established": true
},
"future_delivery_requires_fresh_main_capacity_backup_restore": true,
"L6_operational_delimited": true,
"L7_partial": true,
"L8_final_balance_separate": true,
"evidence_directory": "outputs/irpc-l7-combinations",
"main_incorporated": "a7434cd27c09df3d8e6c586f9676b67abcde798e",
"main_merge_commit": "ea2bceb5ce0c089698603da4cfd268ac1cafbb7a",
"main_source_delta_preserved": [
"app/Http/Controllers/PortalServicesController.php",
"app/Http/Controllers/PublicPortalController.php",
"app/Services/SectorInvestment.php",
"docs/investmoz/unification/traceability-and-manual.md",
"docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv",
"resources/js/components/educational-article-card.tsx",
"resources/js/components/sector-content.tsx",
"resources/js/components/sector-entry.tsx",
"resources/js/pages/portal/services.tsx",
"resources/js/pages/portal/why-invest.tsx",
"tests/Feature/SectorCatalogueContentTest.php"
],
"accepted_QA13_manual_appendix_restored": true,
"served_revision_not_rechecked_this_QA": true
}
@@ -0,0 +1,585 @@
{
"status": "installed_first_grouped_L7_demonstrated_scope",
"installed": {
"status": "installed",
"commit": "e07f89da3d59d06aa1b8c50c22a478b7b167bfdd",
"release": "/var/www/investmoz-homologacao/releases/e07f89da3d59d06aa1b8c50c22a478b7b167bfdd-6b82c3f2",
"previous_release": "/var/www/investmoz-homologacao/releases/5aaf1a56f9d928331364fcc8b0d1528e51dba327-c1543f3e",
"database_migrations": 0,
"content_imports": 0
},
"QA_candidate": "ab2ff2fdbcbe6fb94f03e4bc4cc7ccbd647d94fc",
"integration_candidate": "e07f89da3d59d06aa1b8c50c22a478b7b167bfdd",
"previous_main": "a2122dc34cc9d3e8b64938c3d6b31cc36f336154",
"previous_installed": "5aaf1a56f9d928331364fcc8b0d1528e51dba327",
"authorization": "Tempo:disponibilizar entrega agrupadaL7 peloGit,backup/restauro fresco,conferência do delta,preservarL6/provas aceites e apresentar saldo concreto",
"backup": {
"stage": "/var/backups/investmoz-irpc-l7-common-delivery-20261026/backup",
"created_at": "2026-10-26T10:55:59Z",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "a3d46de6c10b37bd6f211125686da8c489f879ab243f082e7b72a397638901f9",
"files_sha256": "409d378ce59ca3d82e39cbf44f139114a839e1aa56457755316a2fecdd7e5b07",
"restore_verified": false
},
"restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "irpc_l7_restore_20261026",
"port": 55441,
"source_dump_sha256": "a3d46de6c10b37bd6f211125686da8c489f879ab243f082e7b72a397638901f9",
"active_database_writes": 0
},
"preservation": {
"previous_release_preserved": "/var/www/investmoz-homologacao/releases/5aaf1a56f9d928331364fcc8b0d1528e51dba327-c1543f3e",
"installed": {
"status": "installed",
"commit": "e07f89da3d59d06aa1b8c50c22a478b7b167bfdd",
"release": "/var/www/investmoz-homologacao/releases/e07f89da3d59d06aa1b8c50c22a478b7b167bfdd-6b82c3f2",
"previous_release": "/var/www/investmoz-homologacao/releases/5aaf1a56f9d928331364fcc8b0d1528e51dba327-c1543f3e",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 13,
"preserved_L3_ISPC_FX_runtime_files_verified": 50,
"documentary_files_verified": 31,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "63f3ceed97ce2f40106530ef6eb6e083"
},
"after": {
"rows": 106,
"checksum": "38aa09dc08f13ff12ac1e71dbae22d0b"
}
},
"sessions": {
"before": {
"rows": 11,
"checksum": "823228a21cb8173718f6010a9aaa319a"
},
"after": {
"rows": 14,
"checksum": "1529684ad387db4b9aaa40ac775ebe74"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"schema_permissions_before": {
"schema_sha256": "5045b3e51d2185377aa3d9ac7fa07a44fad3ec620cdfa83ffe31c8884ee1601d",
"roles_grants_sha256": "1530c33cb016e67bfdc64891ddfce7f185b13b56b2cd87c012871a685e118109",
"filesystem_permissions": {
".env": {
"mode": 416,
"uid": 1001,
"gid": 33
},
"storage": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"storage/app": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"bootstrap/cache": {
"mode": 1528,
"uid": 1001,
"gid": 33
}
},
"comparison_identity": "postgres;catalogue read only;no passwords collected"
},
"schema_permissions_after": {
"schema_sha256": "5045b3e51d2185377aa3d9ac7fa07a44fad3ec620cdfa83ffe31c8884ee1601d",
"roles_grants_sha256": "1530c33cb016e67bfdc64891ddfce7f185b13b56b2cd87c012871a685e118109",
"filesystem_permissions": {
".env": {
"mode": 416,
"uid": 1001,
"gid": 33
},
"storage": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"storage/app": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"bootstrap/cache": {
"mode": 1528,
"uid": 1001,
"gid": 33
}
},
"comparison_identity": "postgres;catalogue read only;no passwords collected",
"unchanged": true
},
"operational_delta": {
"status": "operational_delta_reconciled",
"comparison_identity": "postgres before/after;isolated restored baseline;no RLS visibility inference",
"cache": "queue:restart;requestthrottle;identical home-sector cached value with refreshed expiry(HomeController remember10min);no deletedcache",
"sessions": "anonymous sessions from delivery user-agent or exactUA/time correlated with nginx public request;deleted sessions individually expired beyond configured lifetime,normal database session garbage collection(config/session lottery2/100)",
"delta": {
"cache": {
"before_rows": 106,
"after_rows": 106,
"changes": [
{
"key_sha256": "8d6ea77eb4b34d86d207362d583cfa8bf2880b907becd9b00398964482c6b4bd",
"kind": "updated",
"fields": [
"expiration"
],
"key_pattern": "investemoz-cache-{hash}",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true,
"same_value_home_cache_expiry_refresh": false
},
{
"key_sha256": "2f251473865d14b953236ab95b1521764754d76abd79b58ca7d38c96dfe2fab1",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-{hash}:timer",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true,
"same_value_home_cache_expiry_refresh": false
},
{
"key_sha256": "7f7dd83f47f5bf404d55e6e9f1367948721579970b195680645e356031a070ff",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-illuminate:queue:restart",
"is_queue_restart_key": true,
"expiration_unchanged": false,
"throttle_timer_pair": false,
"same_value_home_cache_expiry_refresh": false
}
]
},
"sessions": {
"before_rows": 11,
"after_rows": 14,
"changes": [
{
"key_sha256": "cd8c2106a4f4ab7802317e6602c26cfa4cf82a23a86f67a0abbc27fbd82edfb8",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true,
"expired_before_comparison": false,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": true
},
{
"key_sha256": "a89dca10cb8a95f4451ff60eeefe7ac3cd7751b779b0bf97a7e5f5b894f9b115",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true,
"expired_before_comparison": false,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": true
},
{
"key_sha256": "7fb2119013f872a5e4dd70952cc896a4ac8291134e02362bd60805eb77e9587a",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true,
"expired_before_comparison": false,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": true
}
]
}
},
"business_tables_to_confirm_separately": 172,
"active_data_writes_by_comparison": 0,
"restore_network": "none"
},
"public": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "e07f89da3d59d06aa1b8c50c22a478b7b167bfdd",
"branch": "main",
"built_at": "2026-10-26T11:02:32.435267+00:00",
"manifest_sha256": "d78a1bdb503c10849f5ea8d8879753653c2c2fc22f6182f6d68ec9f6adf635b5"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"IRPC-normal-adjustments/10": [
"assets/project-dossier-KEyrPtc6.js"
],
"Preparar qualificação L7": [
"assets/services-BSj1SuMk.js"
],
"Despesas — imposto autónomo": [
"assets/project-dossier-KEyrPtc6.js"
],
"Cooperativa — redução da taxa": [
"assets/project-dossier-KEyrPtc6.js"
],
"Amortizações aceleradas": [
"assets/services-BSj1SuMk.js",
"assets/project-dossier-KEyrPtc6.js"
],
"novo ajustamento ao lucro:": [
"assets/project-dossier-KEyrPtc6.js"
],
"colecta combinada:": [
"assets/project-dossier-KEyrPtc6.js"
],
"Saldo final — âmbito L8": [
"assets/project-dossier-KEyrPtc6.js"
],
"Reutilizar selecção cambial": [
"assets/services-BSj1SuMk.js"
]
},
"assets": [
{
"file": "assets/project-dossier-document-BRdhvWgC.js",
"status": 200,
"sha256": "5b1de561be552259de776a2dbaf4b49909a3edd2647fec7c296a96054c929a9f"
},
{
"file": "assets/services-BSj1SuMk.js",
"status": 200,
"sha256": "ea1a3812cbced72f4df115e8e379ae6d2307e97b2152d288b1c80d357f03f78b"
},
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
},
{
"file": "assets/project-dossier-KEyrPtc6.js",
"status": 200,
"sha256": "b6ae250a30b5030a6e40e7dfb140a3335ce6d5bc16835098d3d7c5828fc526c5"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-ByAQSjfI.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"pipeline": {
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"installed": {
"status": "installed",
"commit": "e07f89da3d59d06aa1b8c50c22a478b7b167bfdd",
"release": "/var/www/investmoz-homologacao/releases/e07f89da3d59d06aa1b8c50c22a478b7b167bfdd-6b82c3f2",
"previous_release": "/var/www/investmoz-homologacao/releases/5aaf1a56f9d928331364fcc8b0d1528e51dba327-c1543f3e",
"database_migrations": 0,
"content_imports": 0
},
"latest_report": {
"status": "installed",
"commit": "e07f89da3d59d06aa1b8c50c22a478b7b167bfdd",
"release": "/var/www/investmoz-homologacao/releases/e07f89da3d59d06aa1b8c50c22a478b7b167bfdd-6b82c3f2",
"previous_release": "/var/www/investmoz-homologacao/releases/5aaf1a56f9d928331364fcc8b0d1528e51dba327-c1543f3e",
"database_migrations": 0,
"content_imports": 0,
"requested_commits": [
"e07f89da3d59d06aa1b8c50c22a478b7b167bfdd"
],
"finished_at": "2026-10-26T11:02:35.885260+00:00"
},
"log_file": "1793012270105316629.log",
"summaries": [
"OK (1 test, 3106 assertions)",
"built in 33.69s",
"OK (59 tests, 317 assertions)",
"# tests 1007",
"# pass 1007",
"# fail 0"
],
"log_bytes": 287128
},
"concurrent_main_reconciliation": {
"QA_candidate": "ab2ff2fdbcbe6fb94f03e4bc4cc7ccbd647d94fc",
"concurrent_main": "a2122dc34cc9d3e8b64938c3d6b31cc36f336154",
"installed_baseline": "5aaf1a56f9d928331364fcc8b0d1528e51dba327",
"runtime_QA_files_exact": [
"resources/js/lib/irpc-special.ts",
"resources/js/components/simulation-irpc-special.tsx",
"resources/js/lib/irpc-normal.ts",
"resources/js/lib/irpc-normal-depreciation.ts",
"resources/js/components/simulation-irpc-normal.tsx",
"resources/js/lib/project-dossier-report.ts"
],
"concurrent_files_preserved": {
"resources/js/components/portal-hero.tsx": "0ebe2c3e2ae2615d966d050864699a90dac2fef36ebfc174aa1059b83db9a514",
"resources/js/components/tempo-brand.tsx": "27c01d317ec59c9a4ddb2a184c0a8a9427fcf92d34a916060287d07226364d02",
"resources/js/layouts/portal-navigation.tsx": "f1f66b645035f56c9bcc7fbc8c2983e84eb29ae3ecb99461e3963a7deefbaaa6",
"resources/js/lib/portal-navigation.ts": "12aad264eeb5cebe7c9bf467391c611f58d1b84cc9d5fd30db983ba640e25951",
"resources/js/pages/PortalInvestidor.tsx": "d418f960f82ae0d054acfe094047bc80a16f7b418506f054e6d7da07edf6ef00",
"resources/js/pages/investment/shared.tsx": "00098334435de3bb5c7b13608c0e53c63a4bdee7d9cdf07f24b3aec54441f05e",
"resources/js/pages/portal/why-invest.tsx": "3917efa7b0d33fe8fe6e4562c3b9e2f53200b9e07807cd29bade328f8e5ae7e2",
"tests/frontend/portal-navigation.test.mjs": "518c7e1de6fb1b385caffe39914e2905bf8f561d938f0527561156602a0e3098"
},
"CSV_concurrent_V2_01_preserved": true,
"removed_manual_history_lines_restored": 586,
"resolution": "main changed only by removing586tail lines from the manual;candidate manual retained in full;CSV auto-merge preserved V2-01 and changed only fiscal rowAUD-SIM-INT02",
"new_functional_round": false,
"accepted_QA_proofs_reused": {
"new_frontend_tests": 19,
"API_tests": 1,
"API_assertions": 108,
"API_database": "simulator_fiscal_delta_20261021_test",
"API_host": "127.0.0.1",
"API_port": 55441,
"API_transaction_rollback": true,
"QA_identity_guard": true,
"Wayfinder_generated_with_form": true,
"typescript_noEmit": true,
"QA_build": true,
"API_recovered_to_HTML_and_financial_dossier_cases": 6,
"UI": {
"actualComponent": true,
"expenseL6Addback100Autonomous35": true,
"missingClassificationDoesNotEraseNormalProfit": true,
"absenceExplicit": true,
"cooperative16MixedCaseBlockedOnly": true,
"acceleratedQuota150LimitedToAccounted120": true,
"netAdditionalDeduction20": true,
"cumulationMissingExplicit": true,
"saveRecoveryDownload": true,
"finalBalanceL8Unknown": true,
"errors": []
},
"old_functional_suites_repeated": false,
"building_and_lower_optional_quota_cases": true
}
},
"dependency_archiving": {
"status": "dependencies_archived_and_verified",
"versions": 8,
"free_before": 4349009920,
"free_after": 6454341632,
"receipt": "/var/backups/investmoz-build-dependencies-irpc-l7-common-20261026/receipt.json",
"protected": [
"/var/www/investmoz-homologacao/releases/5aaf1a56f9d928331364fcc8b0d1528e51dba327-c1543f3e",
"/var/www/investmoz-homologacao/releases/56475acb2f39e58cb51664913f7fb499f58eb7ab-694b3932"
],
"active_or_previous_release_modified": false,
"source_data_backups_deleted": 0
},
"accepted_QA_proofs_reused": {
"new_frontend_tests": 19,
"API_tests": 1,
"API_assertions": 108,
"API_database": "simulator_fiscal_delta_20261021_test",
"API_host": "127.0.0.1",
"API_port": 55441,
"API_transaction_rollback": true,
"QA_identity_guard": true,
"Wayfinder_generated_with_form": true,
"typescript_noEmit": true,
"QA_build": true,
"API_recovered_to_HTML_and_financial_dossier_cases": 6,
"UI": {
"actualComponent": true,
"expenseL6Addback100Autonomous35": true,
"missingClassificationDoesNotEraseNormalProfit": true,
"absenceExplicit": true,
"cooperative16MixedCaseBlockedOnly": true,
"acceleratedQuota150LimitedToAccounted120": true,
"netAdditionalDeduction20": true,
"cumulationMissingExplicit": true,
"saveRecoveryDownload": true,
"finalBalanceL8Unknown": true,
"errors": []
},
"old_functional_suites_repeated": false,
"building_and_lower_optional_quota_cases": true
},
"source_inventory_reused": {
"files_reused": 8143,
"broad_search_repeated": false,
"receipt": "irpc-l7-scope-20261026.json",
"sources": [
{
"id": "CIRPC",
"title": "Lei34/2007",
"exemplar": "C:\\laragon\\www\\portal-investidor-irpc-l7-scope-20261026\\docs\\investmoz\\simulations\\source-archive\\Lei-34-2007-BR52.pdf",
"bytes": 1676884,
"sha256": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e",
"references": "PDF5/p768(59):12,14,15; PDF15–16:54–56; PDF17/p768(71):61",
"official_url": null,
"available_for_consultation": true,
"documentary_status": "official_source_accepted; applicability/version/period_per_treatment",
"new_calculation_activation": false
},
{
"id": "IRPC-2026",
"title": "Lei12/2025",
"exemplar": "C:\\laragon\\www\\portal-investidor-irpc-l7-scope-20261026\\docs\\investmoz\\simulations\\source-archive\\BR-248-I-Suplemento-1-2025.pdf",
"bytes": 440018,
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251",
"references": "PDF18–20; PDF20:art2/61-A,art3,art6; vigência01/01/2026",
"official_url": null,
"available_for_consultation": true,
"documentary_status": "official_source_accepted; applicability/version/period_per_treatment",
"new_calculation_activation": false
},
{
"id": "IRPC-2022",
"title": "Lei20/2022",
"exemplar": "C:\\laragon\\www\\portal-investidor-irpc-l7-scope-20261026\\docs\\investmoz\\simulations\\source-archive\\BR252-I-Serie-2022-Lei20-PESOE.pdf",
"bytes": 17966640,
"sha256": "1159fd3ce1ba5581671796d083534da48bd3c5578298819e896f1c2a8026318d",
"references": "PDF1/p2731:61(2), termo31/12/2025",
"official_url": null,
"available_for_consultation": true,
"documentary_status": "official_source_accepted; applicability/version/period_per_treatment",
"new_calculation_activation": false
},
{
"id": "CBF-local",
"title": "Lei4/2009",
"exemplar": "C:\\laragon\\www\\portal-investidor-irpc-l7-scope-20261026\\outputs\\irpc-l7-scope\\CBF-Lei4-2009-APIEX.pdf",
"bytes": 10998765,
"sha256": "4231a5b6783e603cedb98992f3e93ecaf1c1d5be341b093560cf2fdd0845b0dc",
"references": "Original local disponível; scan sem extracção textual útil; cotejo textual pela compilação oficial",
"official_url": null,
"available_for_consultation": true,
"documentary_status": "official_source_accepted; applicability/version/period_per_treatment",
"new_calculation_activation": false,
"authorised_original": "\\\\Mac\\Home\\Documents\\TEMPO\\Portal Tempo\\Legislacao\\Apiex\\3.-Lei-no4-2009-de-12-de-Janeiro-Codigo-dos-Beneficios-Fiscais.pdf"
},
{
"id": "APIEX",
"title": "Compilação oficial APIEX",
"exemplar": "C:\\laragon\\www\\portal-investidor-irpc-l7-scope-20261026\\outputs\\irpc-l7-scope\\APIEX-legislacao-investimentos-2025.pdf",
"bytes": 6467655,
"sha256": "ba1e9eaabfec5d0c4cb2d9f2444a6860f7a90f222034764197829be402d408ed",
"references": "pp8–32:Lei8/2023; pp36–59:Decreto8/2024; pp64–92:CBF4/2009; p68:9/10;p71–74:15–19",
"official_url": "https://pt.apiex.gov.mz/wp-content/uploads/2025/02/LEGISLACAO-DE-INVESTIMENTOS-EM-MOCAMBIQUE.pdf",
"available_for_consultation": true,
"documentary_status": "official_source_accepted; applicability/version/period_per_treatment",
"new_calculation_activation": false
},
{
"id": "RCBF",
"title": "Decreto56/2009",
"exemplar": "C:\\laragon\\www\\portal-investidor-irpc-l7-scope-20261026\\outputs\\irpc-l7-scope\\Decreto56-2009-BR40.pdf",
"bytes": 422005,
"sha256": "6ea1b8d93daed48c6d590481d874010fa1708211d8f27c319dc9a31328456017",
"references": "Procedimento já cotejado em iva-l1-p084-p085-model-i1-cotejo-20261024.json; não estende isenções IVA a IRPC",
"official_url": null,
"available_for_consultation": true,
"documentary_status": "official_source_accepted; applicability/version/period_per_treatment",
"new_calculation_activation": false
}
],
"document_consultation_activates_calculation": false
},
"L6_operational_demonstrated_scope_preserved": true,
"L6_pending_code_and_documentation_preserved": true,
"L7_integrally_complete": false,
"IRPC_integrally_complete": false,
"new_private_synthetic_writes_on_active": 0,
"location_grants_benefit": false,
"L8_retentions_payments_annual_credit_application_final_balance_separate": true,
"remaining_scope": {
"implementation": [
"61(4) sources/partial segregation outside calculated36g",
"cooperative mixed/withheld income and other entity exemptions9–14",
"CBF16 other assets/methods/optional lower quota/periods/prior quotas and combinations",
"61-A capital gains and special operations54–56/41-A",
"CBF17–19 deductions/magnifications andCBF15 potential credit origin/eligibility",
"sector/territory and specific special regimes",
"L7 M20/M22 official transport"
],
"documentary_case_dependencies": [
"nature/incidence/parcel and correct period",
"individual statute/title/recognition or applicable exception only where required",
"specific norm/validity/compatibility/order/limit not corresponded",
"affected form edition/field/representation"
],
"examples_and_resume_conditions": "same consolidated matrix and manual section:saldo concreto de L7 após a primeira entrega agrupada"
},
"evidence": {
"backup.txt": "dac1a5cddac111160d64f4f34184f999cb40655b210582b9a18dbef20aedd8d0",
"baseline.txt": "6e4bf2e80c29cc3c81d14c3da9f44e1ef3d576b0eb25f9c7ecb85f060c15b196",
"compact-dependencies.txt": "a2385728e917cc20008da8b8144ff57a1bcbe3a1a352848c548b11bdf38fbbf0",
"concurrent-main-reconciliation.json": "8a6aefa957e2b28905f89dca161de53bcffdc9dba2575e9f76efb13ac80a6c16",
"installed-protected.txt": "e2fc267572cf8c29ee15e4efa524679843377766d19456ccba4e9187b7c55a21",
"installed-public-delta.json": "557cbdc9ec7db9b0eb6865d0998c83a9c4a957ee041ba1bce0e54cd2df4ee3cb",
"installed-public.txt": "4efa54256c1de8af63f80f0ff245f529cb581746f165a1299d7389ffd8047ee9",
"integration.txt": "c320a8d33ea33e1f70a291b7da2fa4934658b2f87fc9a26a9521325e23cfac7d",
"manifest-served.json": "d78a1bdb503c10849f5ea8d8879753653c2c2fc22f6182f6d68ec9f6adf635b5",
"operational-delta.txt": "18793b0013b52e87ad088317b49ef3ef31e582dfb073500fa29a5822e237f61c",
"preflight-ready.txt": "ffe2dfba440adebbd45ba72336d56668735f4916d3ae5385a4d750c5775a6a04",
"preflight.txt": "6bf42bb982a7e5807123569ba9a4951bd639132b628965586b7ed60f36b5f0ea",
"preparation.json": "46c078247bb3b68f2aabdb9aa5c0e40bf648dbc07e467933ce82d749b9741a00",
"process-progress.txt": "721a9cf3e8b3892122dabe8b05e8c377b097d94ed0123b7135dcf83c53a40cd6",
"progress-2.txt": "df6ae7b7f2e49c9da3ffbe12c0de6746a191f51dcf30428a93a3db4693c7972b",
"progress-3.txt": "de4fa512b1e124d6c48c34eec14ab50fb66ebb718b49c0fd039e6a148598688d",
"progress-4.txt": "de4fa512b1e124d6c48c34eec14ab50fb66ebb718b49c0fd039e6a148598688d",
"restore.txt": "fcf1cbf5a6de6c0ac9172c3b5acd39c7c0438f950a2297be5f84964268ef4c24",
"schema-permissions-after.txt": "76b5a4d8af11e4898a205062766cfb7ab6ec0783200e77e60a1927aa1ca18597",
"schema-permissions-before.txt": "0ab7c964792acdd8917bce256c472e55e034b103500a58b49f020b5084823ed7",
"status-before.txt": "290e99722a17dabbeb4bb609b2c3df423357dd1e34b3cc6f4e45cd64e758c797",
"status-final.txt": "3814636ae1e3d45f6da832b42b3a9215503598bc20c0c080b3ab5181a074bea0",
"status-progress-1.txt": "b289c9824a293d6b97db770712ce92e65c714fe72f22e0410ef6447b655d47d6"
}
}
@@ -0,0 +1,570 @@
{
"status": "L7_common_qualification_autonomous_expenses_cooperative_acceleration_QA_prepared_not_installed",
"recorded_date": "2026-10-26",
"installed_baseline": "5aaf1a56f9d928331364fcc8b0d1528e51dba327",
"scope_baseline": "d37fffb2d2eacef6300f1c81fc29993178532f35",
"branch": "codex/irpc-l7-common-autonomous-qa-20261026",
"version": "IRPC-normal-adjustments/10",
"installed": false,
"L6_operational_scope_preserved": true,
"IRPC_integrally_complete": false,
"runtime_delta": {
"resources/js/lib/irpc-special.ts": "5d261cdb54506bd892fa49776bb53a20600e62e64a4c180ef26cdcdb8b6a3806",
"resources/js/components/simulation-irpc-special.tsx": "9ccd89e46703f9dd14c1110459b22673623a19bd652d137f40ec83e0f7c223db",
"resources/js/lib/irpc-normal.ts": "7e63e7e5928a90c5305fd1fca49db883fec32666381ee99ae6fa4b06c711d9a7",
"resources/js/lib/irpc-normal-depreciation.ts": "00ba22e449b23e570bfbbf3895bd334029a16f938d5a5ff999ca67b4318f58c3",
"resources/js/components/simulation-irpc-normal.tsx": "e01e54dee4cd2555a8a27ed77512cf220056b5899ea9dacbaaae6d4063ce2d42",
"resources/js/lib/project-dossier-report.ts": "cba66c88391da83b4fdb345a9570eca5ae83979cbbd508eb44b53995d812718d"
},
"cases_recovered": {
"expense": {
"L6_reference": {
"taxableProfit": {
"numerator": "3230",
"denominator": "1"
},
"taxableBase": {
"numerator": "3230",
"denominator": "1"
},
"colecta": {
"numerator": "5168",
"denominator": "5"
}
},
"L7_profit": {
"numerator": "3230",
"denominator": "1"
},
"L7_base": {
"numerator": "3230",
"denominator": "1"
},
"L7_colecta": {
"numerator": "5168",
"denominator": "5"
},
"autonomous_tax": {
"numerator": "35",
"denominator": "1"
},
"combined_colecta": {
"numerator": "5343",
"denominator": "5"
},
"expense_status": "calculated",
"cooperative_status": "absent",
"acceleration_status": "absent",
"additional_depreciation_deduction": {
"numerator": "0",
"denominator": "1"
},
"history_versions": [
"IRPC-normal-adjustments/1",
"IRPC-normal-adjustments/2",
"IRPC-normal-adjustments/3",
"IRPC-normal-adjustments/4",
"IRPC-normal-adjustments/5",
"IRPC-normal-adjustments/6",
"IRPC-normal-adjustments/7",
"IRPC-normal-adjustments/8",
"IRPC-normal-adjustments/9"
],
"final_balance": {
"scope": "L8",
"payable": null,
"recoverable": null
}
},
"missing": {
"L6_reference": {
"taxableProfit": {
"numerator": "3230",
"denominator": "1"
},
"taxableBase": {
"numerator": "3230",
"denominator": "1"
},
"colecta": {
"numerator": "5168",
"denominator": "5"
}
},
"L7_profit": {
"numerator": "3230",
"denominator": "1"
},
"L7_base": {
"numerator": "3230",
"denominator": "1"
},
"L7_colecta": {
"numerator": "5168",
"denominator": "5"
},
"autonomous_tax": null,
"combined_colecta": null,
"expense_status": "indeterminate",
"cooperative_status": "absent",
"acceleration_status": "absent",
"additional_depreciation_deduction": {
"numerator": "0",
"denominator": "1"
},
"history_versions": [
"IRPC-normal-adjustments/1",
"IRPC-normal-adjustments/2",
"IRPC-normal-adjustments/3",
"IRPC-normal-adjustments/4",
"IRPC-normal-adjustments/5",
"IRPC-normal-adjustments/6",
"IRPC-normal-adjustments/7",
"IRPC-normal-adjustments/8",
"IRPC-normal-adjustments/9"
],
"final_balance": {
"scope": "L8",
"payable": null,
"recoverable": null
}
},
"negative": {
"L6_reference": {
"taxableProfit": {
"numerator": "3230",
"denominator": "1"
},
"taxableBase": {
"numerator": "3230",
"denominator": "1"
},
"colecta": {
"numerator": "5168",
"denominator": "5"
}
},
"L7_profit": {
"numerator": "3230",
"denominator": "1"
},
"L7_base": {
"numerator": "3230",
"denominator": "1"
},
"L7_colecta": {
"numerator": "5168",
"denominator": "5"
},
"autonomous_tax": {
"numerator": "0",
"denominator": "1"
},
"combined_colecta": {
"numerator": "5168",
"denominator": "5"
},
"expense_status": "calculated",
"cooperative_status": "absent",
"acceleration_status": "absent",
"additional_depreciation_deduction": {
"numerator": "0",
"denominator": "1"
},
"history_versions": [
"IRPC-normal-adjustments/1",
"IRPC-normal-adjustments/2",
"IRPC-normal-adjustments/3",
"IRPC-normal-adjustments/4",
"IRPC-normal-adjustments/5",
"IRPC-normal-adjustments/6",
"IRPC-normal-adjustments/7",
"IRPC-normal-adjustments/8",
"IRPC-normal-adjustments/9"
],
"final_balance": {
"scope": "L8",
"payable": null,
"recoverable": null
}
},
"absent": {
"L6_reference": {
"taxableProfit": {
"numerator": "3130",
"denominator": "1"
},
"taxableBase": {
"numerator": "3130",
"denominator": "1"
},
"colecta": {
"numerator": "5008",
"denominator": "5"
}
},
"L7_profit": {
"numerator": "3130",
"denominator": "1"
},
"L7_base": {
"numerator": "3130",
"denominator": "1"
},
"L7_colecta": {
"numerator": "5008",
"denominator": "5"
},
"autonomous_tax": {
"numerator": "0",
"denominator": "1"
},
"combined_colecta": {
"numerator": "5008",
"denominator": "5"
},
"expense_status": "absent",
"cooperative_status": "absent",
"acceleration_status": "absent",
"additional_depreciation_deduction": {
"numerator": "0",
"denominator": "1"
},
"history_versions": [
"IRPC-normal-adjustments/1",
"IRPC-normal-adjustments/2",
"IRPC-normal-adjustments/3",
"IRPC-normal-adjustments/4",
"IRPC-normal-adjustments/5",
"IRPC-normal-adjustments/6",
"IRPC-normal-adjustments/7",
"IRPC-normal-adjustments/8",
"IRPC-normal-adjustments/9"
],
"final_balance": {
"scope": "L8",
"payable": null,
"recoverable": null
}
},
"cooperative": {
"L6_reference": {
"taxableProfit": {
"numerator": "3130",
"denominator": "1"
},
"taxableBase": {
"numerator": "3130",
"denominator": "1"
},
"colecta": {
"numerator": "5008",
"denominator": "5"
}
},
"L7_profit": {
"numerator": "3130",
"denominator": "1"
},
"L7_base": {
"numerator": "3130",
"denominator": "1"
},
"L7_colecta": {
"numerator": "2504",
"denominator": "5"
},
"autonomous_tax": {
"numerator": "0",
"denominator": "1"
},
"combined_colecta": {
"numerator": "2504",
"denominator": "5"
},
"expense_status": "absent",
"cooperative_status": "calculated",
"acceleration_status": "absent",
"additional_depreciation_deduction": {
"numerator": "0",
"denominator": "1"
},
"history_versions": [
"IRPC-normal-adjustments/1",
"IRPC-normal-adjustments/2",
"IRPC-normal-adjustments/3",
"IRPC-normal-adjustments/4",
"IRPC-normal-adjustments/5",
"IRPC-normal-adjustments/6",
"IRPC-normal-adjustments/7",
"IRPC-normal-adjustments/8",
"IRPC-normal-adjustments/9"
],
"final_balance": {
"scope": "L8",
"payable": null,
"recoverable": null
}
},
"acceleration": {
"L6_reference": {
"taxableProfit": {
"numerator": "6260",
"denominator": "1"
},
"taxableBase": {
"numerator": "6260",
"denominator": "1"
},
"colecta": {
"numerator": "10016",
"denominator": "5"
}
},
"L7_profit": {
"numerator": "6240",
"denominator": "1"
},
"L7_base": {
"numerator": "6240",
"denominator": "1"
},
"L7_colecta": {
"numerator": "9984",
"denominator": "5"
},
"autonomous_tax": {
"numerator": "0",
"denominator": "1"
},
"combined_colecta": {
"numerator": "9984",
"denominator": "5"
},
"expense_status": "absent",
"cooperative_status": "absent",
"acceleration_status": "calculated",
"additional_depreciation_deduction": {
"numerator": "20",
"denominator": "1"
},
"history_versions": [
"IRPC-normal-adjustments/1",
"IRPC-normal-adjustments/2",
"IRPC-normal-adjustments/3",
"IRPC-normal-adjustments/4",
"IRPC-normal-adjustments/5",
"IRPC-normal-adjustments/6",
"IRPC-normal-adjustments/7",
"IRPC-normal-adjustments/8",
"IRPC-normal-adjustments/9"
],
"final_balance": {
"scope": "L8",
"payable": null,
"recoverable": null
}
}
},
"source_inventory": {
"files_reused": 8143,
"broad_search_repeated": false,
"receipt": "irpc-l7-scope-20261026.json",
"sources": [
{
"id": "CIRPC",
"title": "Lei34/2007",
"exemplar": "C:\\laragon\\www\\portal-investidor-irpc-l7-scope-20261026\\docs\\investmoz\\simulations\\source-archive\\Lei-34-2007-BR52.pdf",
"bytes": 1676884,
"sha256": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e",
"references": "PDF5/p768(59):12,14,15; PDF15–16:54–56; PDF17/p768(71):61",
"official_url": null,
"available_for_consultation": true,
"documentary_status": "official_source_accepted; applicability/version/period_per_treatment",
"new_calculation_activation": false
},
{
"id": "IRPC-2026",
"title": "Lei12/2025",
"exemplar": "C:\\laragon\\www\\portal-investidor-irpc-l7-scope-20261026\\docs\\investmoz\\simulations\\source-archive\\BR-248-I-Suplemento-1-2025.pdf",
"bytes": 440018,
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251",
"references": "PDF18–20; PDF20:art2/61-A,art3,art6; vigência01/01/2026",
"official_url": null,
"available_for_consultation": true,
"documentary_status": "official_source_accepted; applicability/version/period_per_treatment",
"new_calculation_activation": false
},
{
"id": "IRPC-2022",
"title": "Lei20/2022",
"exemplar": "C:\\laragon\\www\\portal-investidor-irpc-l7-scope-20261026\\docs\\investmoz\\simulations\\source-archive\\BR252-I-Serie-2022-Lei20-PESOE.pdf",
"bytes": 17966640,
"sha256": "1159fd3ce1ba5581671796d083534da48bd3c5578298819e896f1c2a8026318d",
"references": "PDF1/p2731:61(2), termo31/12/2025",
"official_url": null,
"available_for_consultation": true,
"documentary_status": "official_source_accepted; applicability/version/period_per_treatment",
"new_calculation_activation": false
},
{
"id": "CBF-local",
"title": "Lei4/2009",
"exemplar": "C:\\laragon\\www\\portal-investidor-irpc-l7-scope-20261026\\outputs\\irpc-l7-scope\\CBF-Lei4-2009-APIEX.pdf",
"bytes": 10998765,
"sha256": "4231a5b6783e603cedb98992f3e93ecaf1c1d5be341b093560cf2fdd0845b0dc",
"references": "Original local disponível; scan sem extracção textual útil; cotejo textual pela compilação oficial",
"official_url": null,
"available_for_consultation": true,
"documentary_status": "official_source_accepted; applicability/version/period_per_treatment",
"new_calculation_activation": false,
"authorised_original": "\\\\Mac\\Home\\Documents\\TEMPO\\Portal Tempo\\Legislacao\\Apiex\\3.-Lei-no4-2009-de-12-de-Janeiro-Codigo-dos-Beneficios-Fiscais.pdf"
},
{
"id": "APIEX",
"title": "Compilação oficial APIEX",
"exemplar": "C:\\laragon\\www\\portal-investidor-irpc-l7-scope-20261026\\outputs\\irpc-l7-scope\\APIEX-legislacao-investimentos-2025.pdf",
"bytes": 6467655,
"sha256": "ba1e9eaabfec5d0c4cb2d9f2444a6860f7a90f222034764197829be402d408ed",
"references": "pp8–32:Lei8/2023; pp36–59:Decreto8/2024; pp64–92:CBF4/2009; p68:9/10;p71–74:15–19",
"official_url": "https://pt.apiex.gov.mz/wp-content/uploads/2025/02/LEGISLACAO-DE-INVESTIMENTOS-EM-MOCAMBIQUE.pdf",
"available_for_consultation": true,
"documentary_status": "official_source_accepted; applicability/version/period_per_treatment",
"new_calculation_activation": false
},
{
"id": "RCBF",
"title": "Decreto56/2009",
"exemplar": "C:\\laragon\\www\\portal-investidor-irpc-l7-scope-20261026\\outputs\\irpc-l7-scope\\Decreto56-2009-BR40.pdf",
"bytes": 422005,
"sha256": "6ea1b8d93daed48c6d590481d874010fa1708211d8f27c319dc9a31328456017",
"references": "Procedimento já cotejado em iva-l1-p084-p085-model-i1-cotejo-20261024.json; não estende isenções IVA a IRPC",
"official_url": null,
"available_for_consultation": true,
"documentary_status": "official_source_accepted; applicability/version/period_per_treatment",
"new_calculation_activation": false
}
],
"document_consultation_activates_calculation": false
},
"coverage": {
"optional_input_backward_compatible": true,
"accepted_version9_current_key_and_result_unchanged_without_L7": true,
"expense_source": "calculated36(1)g schedule ID;full amount reused;no parallel amount",
"expense_rate": "35/100",
"expense_additional_profit_adjustment": "0",
"cooperative_rate": "32/100 × 1/2 =16/100;eligible ordinary base only",
"accelerated_rate": "normal maximum table rate ×3/2;lower optional quota not covered;first full civil2026,new supported asset,prior quotas zero",
"accelerated_deduction": "min calculated quota/accounted eligible amount/fiscal remaining balance;only difference over normal map",
"mixed_cases": "cooperative+autonomous expense demonstrated;cooperative+CBF16 not supported",
"context": "reuses documented sector/territory/provenance;no benefit by location alone;raw snapshots not dumped in report",
"states": [
"information_missing",
"declared_absence",
"not_applicable_or_negative_condition",
"calculated"
],
"report": "same normalReportRows/HTML and financial project dossier;L6 reference separated from L7 effects",
"final_settlement": "not calculated;L8"
},
"pending": {
"code": [
"autonomous expenses outside already-calculated36g parcel",
"mixed cooperative income/withheld parcels",
"CBF16 rehabilitated/other categories/lower optional quota/methods/months/prior quotas/later years",
"specific benefit combinations and cumulation",
"61-A capital gains and other previously delimited treatment families",
"L7 official form transport"
],
"documents_per_case": [
"individual status/title/exception and qualification proof when required by applicable norm",
"parcel/limit/order/cumulation/chronology not evidenced",
"affected form field/edition/representation correspondence"
],
"resume_conditions": "same existing matrix/manual L7 QA section;no blanket validation or repeated transversal research",
"L6_pending_unchanged": true,
"L8_annual_credit_application_retentions_payments_final_balance_separate": true
},
"checks": {
"new_frontend_tests": 19,
"API_tests": 1,
"API_assertions": 108,
"API_database": "simulator_fiscal_delta_20261021_test",
"API_host": "127.0.0.1",
"API_port": 55441,
"API_transaction_rollback": true,
"QA_identity_guard": true,
"Wayfinder_generated_with_form": true,
"typescript_noEmit": true,
"QA_build": true,
"API_recovered_to_HTML_and_financial_dossier_cases": 6,
"UI": {
"actualComponent": true,
"expenseL6Addback100Autonomous35": true,
"missingClassificationDoesNotEraseNormalProfit": true,
"absenceExplicit": true,
"cooperative16MixedCaseBlockedOnly": true,
"acceleratedQuota150LimitedToAccounted120": true,
"netAdditionalDeduction20": true,
"cumulationMissingExplicit": true,
"saveRecoveryDownload": true,
"finalBalanceL8Unknown": true,
"errors": []
},
"old_functional_suites_repeated": false,
"building_and_lower_optional_quota_cases": true
},
"preservation": {
"baseline": "d37fffb2d2eacef6300f1c81fc29993178532f35",
"files_compared": 662,
"only_existing_changed": [
"resources/js/lib/irpc-normal-depreciation.ts",
"resources/js/lib/irpc-normal.ts",
"resources/js/lib/project-dossier-report.ts"
],
"protected_code_schema_config_routes_contract_files": 576,
"originals": {
"docs/investmoz/simulations/source-archive/AT-Comunicado-9-2026-ISPC.pdf": "106f8a9ce9255c03549c70bf07fe999d32e6e55302d009b509862aa74ccb4973",
"docs/investmoz/simulations/source-archive/AT-MRFTA-19-39.pdf": "8ea62c53066b482f87078a7a7b1ecf15ca98a12a122e8d7abca63acfc993186b",
"docs/investmoz/simulations/source-archive/AT-Modelo-30-ISPC.pdf": "6802edd06b6ff638a0b851a3ec7ecf69af8f07840faa47446becad67d35d445c",
"docs/investmoz/simulations/source-archive/AT-Modelo-B-Geral.pdf": "bd977c7c59d4d98befd92e2c566b1bf168cb1343bb519f51b41a3807f431fc57",
"docs/investmoz/simulations/source-archive/BM-Mercado-Monetario-MAIBOR-20261025.html": "00e8a7e0d3a1db4ca3beb56d5361b2084a0f1684f3d40fc1c203702a2190e063",
"docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee",
"docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251",
"docs/investmoz/simulations/source-archive/BR-89-I-Serie-2017-06-08.pdf": "11f0cab15eb6e51010952203ffa24fdc533a24fd642e19525fe4f46b17a1f5e5",
"docs/investmoz/simulations/source-archive/BR-95-I-Suplemento-2025-05-21.pdf": "e0e682e2c027c3cd9c1d46a73a3f48bc5f6bdbf05667fd97314d7a3f6a456358",
"docs/investmoz/simulations/source-archive/BR252-I-Serie-2022-Lei20-PESOE.pdf": "1159fd3ce1ba5581671796d083534da48bd3c5578298819e896f1c2a8026318d",
"docs/investmoz/simulations/source-archive/Decreto-22-2021-BR70.pdf": "a8fac38dcfe08f9c7a8e46254cff10e1ec82fc4f7a8d88ad6e4fe7d91ffc21a5",
"docs/investmoz/simulations/source-archive/Decreto-27-2026-BR123.pdf": "26249c3fa58f149c81de36e99d1aac2819a4771379d9e8833159660dabf539bb",
"docs/investmoz/simulations/source-archive/Decreto-29-1998-BR22-5-suplemento.pdf": "6242cbe675faadf085f43f95ec8c7e8868aafe67c3b2ab2bb010992288f954f8",
"docs/investmoz/simulations/source-archive/Decreto-3-2011-BR-11-I-mineiros.pdf": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be",
"docs/investmoz/simulations/source-archive/Decreto-37-2023-BR124.pdf": "7e680b191481faa0e2e9057fa5053587eb2a29d1d8c819e0eb9f02814255a04c",
"docs/investmoz/simulations/source-archive/Decreto-9-2008-BR16.pdf": "96fccdecbfdc11c9eafb90fbc6c7bc259f88bbd4c7507d1ac3af1fa03f960697",
"docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b",
"docs/investmoz/simulations/source-archive/Lei-14-1992-BR42.pdf": "089fff7423e99a70a230a73ca379e4ea3a91d124703f91016e57ff82794b9e56",
"docs/investmoz/simulations/source-archive/Lei-17-2022-BR251-exemplar-MCNet5.pdf": "14eb34f0af91a8f5cb1770c7b52d6ff839c6818302d1ed96d79afbfb9fe999d4",
"docs/investmoz/simulations/source-archive/Lei-17-2022-IPP-BR250-Parlamento.pdf": "978cd22403ffd336a631704ecd7a5bbd814a427c815b9acdaca5515591dd9e2a",
"docs/investmoz/simulations/source-archive/Lei-19-2013-BR76.pdf": "bba96d645cc935ffc3d1a79b9f0f73ac1c693d6459c2ad41f56cd2841accae76",
"docs/investmoz/simulations/source-archive/Lei-19-2017-IRPS-BR-OCAM.pdf": "c3a0186cb9ad090d7a9533006295dc9bb6a62ad0d6150173cbd49dba4ee4b52d",
"docs/investmoz/simulations/source-archive/Lei-2-2011-BR-1-4-suplemento-MCNet.pdf": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899",
"docs/investmoz/simulations/source-archive/Lei-20-2009-BR36-AT-exemplar19.pdf": "fc1c8144db42960cbf73e717e095896f511ece0f907f58f78819b27d6917a7ee",
"docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53",
"docs/investmoz/simulations/source-archive/Lei-34-2007-BR52.pdf": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e",
"docs/investmoz/simulations/source-archive/Lei-4-1994-BR37-3-suplemento.pdf": "210df9db8980d0a5690cd187a6eeec7e37a900d743e39062c16f4e0d12215c7e",
"docs/investmoz/simulations/source-archive/Lei-4-2012-BR3.pdf": "b8845cef41dcbd9ba50c43dbfa743a56030dd3d348242a107e1ae30279eec121",
"docs/investmoz/simulations/source-archive/Lei-7-1991-Partidos-IFES.pdf": "6b783a0bb3330688ef10660a58060d9724aa2da6a873d234fe902f0eaaeda42d",
"docs/investmoz/simulations/source-archive/PT-MZ-CDT-1992.pdf": "d504e1024b28aee5c6acf4592acb96ec9c915a8414f67a61ab6984d6acf9df9d",
"docs/investmoz/simulations/source-archive/PT-MZ-Protocolo-2009.pdf": "f353773dcf41f09f4daa6cf5ba5a5f7994f3e02615867c2dcffc61c3d901bf9b"
},
"active_writes": 0,
"migrations": 0,
"permission_changes": false
},
"evidence_directory": "outputs/irpc-l7-common",
"delivery": {
"prepared_only": true,
"Git_branch_isolated": true,
"active_installation": false,
"fresh_backup_restore_and_delta_check_required_at_future_installation": true
}
}
@@ -0,0 +1,937 @@
{
"status": "CBF16_start_cessation_prior_group_installed",
"installed": {
"status": "installed",
"commit": "632dc06930d6b4f1b012feb3b4daa3b1cfc53f39",
"release": "/var/www/investmoz-homologacao/releases/632dc06930d6b4f1b012feb3b4daa3b1cfc53f39-4c020686",
"previous_release": "/var/www/investmoz-homologacao/releases/0bd5d495505d512088887efd3dc5c61f645b1647-ad28558b",
"database_migrations": 0,
"content_imports": 0
},
"previous_installed": "0bd5d495505d512088887efd3dc5c61f645b1647",
"included_QA": [
"ba83afe7d8a90fd016fd0cf424418811279285cd",
"632dc06930d6b4f1b012feb3b4daa3b1cfc53f39"
],
"main_preserved_before_integration": "ae0d74bb3a5e0220c886dd72801a6550dd4ccbbe",
"backup": {
"stage": "/var/backups/investmoz-irpc-l7-grouped-delivery-20261026/backup",
"created_at": "2026-10-26T13:29:24Z",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "80e6149d9d1eb001b32893e40ae484bcb6ed618d41bff1489ab7a5bccbdf306e",
"files_sha256": "2f0d1fff3e0b6237b01af52377ea71718e9970550f9b017b58817ec2a560adcf",
"restore_verified": false
},
"restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "irpc_l7_grouped_restore_20261026",
"port": 55441,
"source_dump_sha256": "80e6149d9d1eb001b32893e40ae484bcb6ed618d41bff1489ab7a5bccbdf306e",
"active_database_writes": 0
},
"capacity_block_before": {
"checked_at_UTC": "2026-10-26T13:25:42.513605+00:00",
"installed": {
"status": "installed",
"commit": "0bd5d495505d512088887efd3dc5c61f645b1647",
"release": "/var/www/investmoz-homologacao/releases/0bd5d495505d512088887efd3dc5c61f645b1647-ad28558b",
"previous_release": "/var/www/investmoz-homologacao/releases/e07f89da3d59d06aa1b8c50c22a478b7b167bfdd-6b82c3f2",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/0bd5d495505d512088887efd3dc5c61f645b1647-ad28558b",
"release_revision": {
"commit": "0bd5d495505d512088887efd3dc5c61f645b1647",
"branch": "main",
"built_at": "2026-10-26T12:39:22.332516+00:00",
"manifest_sha256": "ce3110f77afcaefb5943e50fff77cc8feb34b4c1af20aea1fb64602ffa739264"
},
"service": "MainPID=0\nExecMainStatus=1\nActiveState=failed\nSubState=failed\n",
"volumes": [
{
"path": "/var/www/investmoz-homologacao/releases",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 4636987392,
"available_inodes": 21416284,
"total_inodes": 29089792
},
{
"path": "/var/lib/investmoz-deploy",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 4636987392,
"available_inodes": 21416284,
"total_inodes": 29089792
},
{
"path": "/var/backups",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 4636987392,
"available_inodes": 21416284,
"total_inodes": 29089792
},
{
"path": "/tmp",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 4636987392,
"available_inodes": 21416284,
"total_inodes": 29089792
},
{
"path": "/var/lib/docker",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 4636987392,
"available_inodes": 21416284,
"total_inodes": 29089792
}
],
"free_bytes": 4636987392,
"existing_pipeline_minimum_bytes": 5368709120,
"observed_previous_backup_bytes": 175917995,
"same_partition_release_and_backup": true,
"space_guard_satisfied": false,
"current_release_entry_reference": 31197,
"inodes_available_vs_reference": true,
"inode_note": "Observed current release footprint for scale;no new arbitrary inode threshold. Capacity rechecked after fresh backup.",
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604",
"active_writes": 0
},
"regenerable_npm_cache_recovery": {
"at_UTC": "2026-10-26T13:28:45.839223+00:00",
"target": "/root/.npm/_cacache",
"method": "npm cache clean --force with separate new log directory",
"free_before": 4648849408,
"free_after": 7681077248,
"recovered_bytes": 3032227840,
"old_npm_logs_verified": 32,
"npx_bytes_preserved": 109912064,
"installed_record_unchanged": true,
"project_dependencies_releases_backups_untouched": true,
"active_business_writes": 0
},
"capacity_before": {
"checked_at_UTC": "2026-10-26T13:29:08.917728+00:00",
"installed": {
"status": "installed",
"commit": "0bd5d495505d512088887efd3dc5c61f645b1647",
"release": "/var/www/investmoz-homologacao/releases/0bd5d495505d512088887efd3dc5c61f645b1647-ad28558b",
"previous_release": "/var/www/investmoz-homologacao/releases/e07f89da3d59d06aa1b8c50c22a478b7b167bfdd-6b82c3f2",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/0bd5d495505d512088887efd3dc5c61f645b1647-ad28558b",
"release_revision": {
"commit": "0bd5d495505d512088887efd3dc5c61f645b1647",
"branch": "main",
"built_at": "2026-10-26T12:39:22.332516+00:00",
"manifest_sha256": "ce3110f77afcaefb5943e50fff77cc8feb34b4c1af20aea1fb64602ffa739264"
},
"service": "MainPID=0\nExecMainStatus=1\nActiveState=failed\nSubState=failed\n",
"volumes": [
{
"path": "/var/www/investmoz-homologacao/releases",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 7680946176,
"available_inodes": 21431150,
"total_inodes": 29089792
},
{
"path": "/var/lib/investmoz-deploy",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 7680946176,
"available_inodes": 21431150,
"total_inodes": 29089792
},
{
"path": "/var/backups",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 7680946176,
"available_inodes": 21431150,
"total_inodes": 29089792
},
{
"path": "/tmp",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 7680946176,
"available_inodes": 21431150,
"total_inodes": 29089792
},
{
"path": "/var/lib/docker",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 7680946176,
"available_inodes": 21431150,
"total_inodes": 29089792
}
],
"free_bytes": 7680946176,
"existing_pipeline_minimum_bytes": 5368709120,
"observed_previous_backup_bytes": 175917995,
"same_partition_release_and_backup": true,
"space_guard_satisfied": true,
"current_release_entry_reference": 31197,
"inodes_available_vs_reference": true,
"inode_note": "Observed current release footprint for scale;no new arbitrary inode threshold. Capacity rechecked after fresh backup.",
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604",
"active_writes": 0
},
"capacity_after_backup": {
"checked_at_UTC": "2026-10-26T13:30:52.665710+00:00",
"installed": {
"status": "installed",
"commit": "0bd5d495505d512088887efd3dc5c61f645b1647",
"release": "/var/www/investmoz-homologacao/releases/0bd5d495505d512088887efd3dc5c61f645b1647-ad28558b",
"previous_release": "/var/www/investmoz-homologacao/releases/e07f89da3d59d06aa1b8c50c22a478b7b167bfdd-6b82c3f2",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/0bd5d495505d512088887efd3dc5c61f645b1647-ad28558b",
"release_revision": {
"commit": "0bd5d495505d512088887efd3dc5c61f645b1647",
"branch": "main",
"built_at": "2026-10-26T12:39:22.332516+00:00",
"manifest_sha256": "ce3110f77afcaefb5943e50fff77cc8feb34b4c1af20aea1fb64602ffa739264"
},
"service": "MainPID=0\nExecMainStatus=1\nActiveState=failed\nSubState=failed\n",
"volumes": [
{
"path": "/var/www/investmoz-homologacao/releases",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 7501979648,
"available_inodes": 21431137,
"total_inodes": 29089792
},
{
"path": "/var/lib/investmoz-deploy",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 7501979648,
"available_inodes": 21431137,
"total_inodes": 29089792
},
{
"path": "/var/backups",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 7501979648,
"available_inodes": 21431137,
"total_inodes": 29089792
},
{
"path": "/tmp",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 7501979648,
"available_inodes": 21431137,
"total_inodes": 29089792
},
{
"path": "/var/lib/docker",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 7501979648,
"available_inodes": 21431137,
"total_inodes": 29089792
}
],
"free_bytes": 7501979648,
"existing_pipeline_minimum_bytes": 5368709120,
"observed_previous_backup_bytes": 175917995,
"same_partition_release_and_backup": true,
"space_guard_satisfied": true,
"current_release_entry_reference": 31197,
"inodes_available_vs_reference": true,
"inode_note": "Observed current release footprint for scale;no new arbitrary inode threshold. Capacity rechecked after fresh backup.",
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604",
"active_writes": 0
},
"capacity_after_installation": {
"checked_at_UTC": "2026-10-26T13:36:32.849652+00:00",
"installed": {
"status": "installed",
"commit": "632dc06930d6b4f1b012feb3b4daa3b1cfc53f39",
"release": "/var/www/investmoz-homologacao/releases/632dc06930d6b4f1b012feb3b4daa3b1cfc53f39-4c020686",
"previous_release": "/var/www/investmoz-homologacao/releases/0bd5d495505d512088887efd3dc5c61f645b1647-ad28558b",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/632dc06930d6b4f1b012feb3b4daa3b1cfc53f39-4c020686",
"release_revision": {
"commit": "632dc06930d6b4f1b012feb3b4daa3b1cfc53f39",
"branch": "main",
"built_at": "2026-10-26T13:34:38.155848+00:00",
"manifest_sha256": "a19a56e9ecf5e15cdbac92baefa483af70905a530c39927d30f0abfaaebcdf3f"
},
"service": "MainPID=0\nExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"volumes": [
{
"path": "/var/www/investmoz-homologacao/releases",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 6477869056,
"available_inodes": 21399599,
"total_inodes": 29089792
},
{
"path": "/var/lib/investmoz-deploy",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 6477869056,
"available_inodes": 21399599,
"total_inodes": 29089792
},
{
"path": "/var/backups",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 6477869056,
"available_inodes": 21399599,
"total_inodes": 29089792
},
{
"path": "/tmp",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 6477869056,
"available_inodes": 21399599,
"total_inodes": 29089792
},
{
"path": "/var/lib/docker",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 6477869056,
"available_inodes": 21399599,
"total_inodes": 29089792
}
],
"free_bytes": 6477869056,
"existing_pipeline_minimum_bytes": 5368709120,
"observed_previous_backup_bytes": 175917995,
"same_partition_release_and_backup": true,
"space_guard_satisfied": true,
"current_release_entry_reference": 31234,
"inodes_available_vs_reference": true,
"inode_note": "Observed current release footprint for scale;no new arbitrary inode threshold. Capacity rechecked after fresh backup.",
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604",
"active_writes": 0
},
"backup_restore_verified": true,
"fiscal_runtime_delta": [
{
"path": "resources/js/lib/irpc-special.ts",
"sha256_LF": "89f1eafa35111b92ec739d8e36c3279f20224024a1629869b85199566d642c24"
},
{
"path": "resources/js/lib/irpc-normal.ts",
"sha256_LF": "5b182929ed984f41abe17c9b744c2b76a75532aefd00e2d967063e2b03f76322"
},
{
"path": "resources/js/components/simulation-irpc-special.tsx",
"sha256_LF": "5baedb1df299babef8850022a06f88845f747c008d7773bc226ce9fe9210b5b0"
}
],
"concurrent_main_presentation_delta_preserved": [
"resources/js/pages/portal/why-invest.tsx"
],
"preservation": {
"previous_release_preserved": "/var/www/investmoz-homologacao/releases/0bd5d495505d512088887efd3dc5c61f645b1647-ad28558b",
"installed": {
"status": "installed",
"commit": "632dc06930d6b4f1b012feb3b4daa3b1cfc53f39",
"release": "/var/www/investmoz-homologacao/releases/632dc06930d6b4f1b012feb3b4daa3b1cfc53f39-4c020686",
"previous_release": "/var/www/investmoz-homologacao/releases/0bd5d495505d512088887efd3dc5c61f645b1647-ad28558b",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 3,
"preserved_L3_ISPC_FX_runtime_files_verified": 60,
"documentary_files_verified": 31,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "d0ab7ac01e245cd9a1b545db96cbdf2c"
},
"after": {
"rows": 106,
"checksum": "b725d24eab666bda380f94df620c7b1c"
}
},
"sessions": {
"before": {
"rows": 22,
"checksum": "7ad93d9dd3b3b34dee00d256213cf6a2"
},
"after": {
"rows": 10,
"checksum": "3034d8ede70cb5c6aa4cccb181d828b2"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"schema_permissions_after": {
"schema_sha256": "5045b3e51d2185377aa3d9ac7fa07a44fad3ec620cdfa83ffe31c8884ee1601d",
"roles_grants_sha256": "1530c33cb016e67bfdc64891ddfce7f185b13b56b2cd87c012871a685e118109",
"filesystem_permissions": {
".env": {
"mode": 416,
"uid": 1001,
"gid": 33
},
"storage": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"storage/app": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"bootstrap/cache": {
"mode": 1528,
"uid": 1001,
"gid": 33
}
},
"comparison_identity": "postgres;catalogue read only;no passwords collected",
"unchanged": true
},
"operational_delta": {
"status": "operational_delta_reconciled",
"comparison_identity": "postgres before/after;isolated restored baseline;no RLS visibility inference",
"cache": "queue:restart;requestthrottle;identical home-sector cached value with refreshed expiry(HomeController remember10min);no deletedcache",
"sessions": "anonymous sessions from delivery user-agent or exactUA/time correlated with nginx public request;deleted sessions individually expired beyond configured lifetime,normal database session garbage collection(config/session lottery2/100)",
"delta": {
"cache": {
"before_rows": 106,
"after_rows": 106,
"changes": [
{
"key_sha256": "7f7dd83f47f5bf404d55e6e9f1367948721579970b195680645e356031a070ff",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-illuminate:queue:restart",
"is_queue_restart_key": true,
"expiration_unchanged": false,
"throttle_timer_pair": false,
"same_value_home_cache_expiry_refresh": false
}
]
},
"sessions": {
"before_rows": 22,
"after_rows": 11,
"changes": [
{
"key_sha256": "dd5c5235e9b48e28573884145b201d1f92cdabfea21a1602307c2569efe5d56c",
"kind": "deleted",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true,
"expired_before_comparison": true,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": false
},
{
"key_sha256": "d3d49a6f04c09c9852119084de7f840a69a14872847f363523457bcc567f2220",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true,
"expired_before_comparison": false,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": true
},
{
"key_sha256": "d1963bf84cb07dfc540935a88fbeb14f272763938b4db1fb68ffd28e6be9e157",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": false,
"expired_before_comparison": false,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": true
},
{
"key_sha256": "5b744c29cc4e8a7d20f33814b52fa522e2c04dc525e7e82fa1c00e18ba91d528",
"kind": "updated",
"fields": [
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": false,
"expired_before_comparison": false,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": true
},
{
"key_sha256": "7cd11e7b663d5c5b1b6b31703b8b702ccef9a51f5ae9003f6ea177f3bde8c576",
"kind": "deleted",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": false,
"expired_before_comparison": true,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": false
},
{
"key_sha256": "3da37b843afdc870f2c0b1336344e97218a264ab5a7b44825a194c89a48fab32",
"kind": "deleted",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true,
"expired_before_comparison": true,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": false
},
{
"key_sha256": "6e12944bc8f670195d0c6d2638337e2bf922261a158d130ba09f640a5722f0df",
"kind": "deleted",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true,
"expired_before_comparison": true,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": false
},
{
"key_sha256": "cd8c2106a4f4ab7802317e6602c26cfa4cf82a23a86f67a0abbc27fbd82edfb8",
"kind": "deleted",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true,
"expired_before_comparison": true,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": false
},
{
"key_sha256": "8cb63d0938103966b238f3aef867a970f2d3f3f66fe62b663457b3f7f2814b10",
"kind": "deleted",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": false,
"expired_before_comparison": true,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": false
},
{
"key_sha256": "11bbe5f81c536cf605ed71f402fbaa6e9ef551d97c0a76e098078521d9f37f71",
"kind": "deleted",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true,
"expired_before_comparison": true,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": false
},
{
"key_sha256": "0efd8f20e81562999badc07fe5af262be1705f08554208e03d281055cd38e34e",
"kind": "deleted",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": false,
"expired_before_comparison": true,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": false
},
{
"key_sha256": "a89dca10cb8a95f4451ff60eeefe7ac3cd7751b779b0bf97a7e5f5b894f9b115",
"kind": "deleted",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true,
"expired_before_comparison": true,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": false
},
{
"key_sha256": "f8e1fa11cf234c2c9f498402557b4c4aed3b89c83dace57af783ae840e4dc821",
"kind": "deleted",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true,
"expired_before_comparison": true,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": false
},
{
"key_sha256": "6827c4d8b9a804dc85c3ba12ec33f715b5e753ca00ad0f707e7cbd0e48e5e173",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true,
"expired_before_comparison": false,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": true
},
{
"key_sha256": "9bb5ab5f9a5a161579f25f0d029de6a3a5a9b6a8d03868682bf3fc73c9af6720",
"kind": "deleted",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": false,
"expired_before_comparison": true,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": false
},
{
"key_sha256": "d0a4dbafaf19e2eee3af4ea41ce9aabf52cb42d5a61a598c54b37d8863b533d7",
"kind": "deleted",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true,
"expired_before_comparison": true,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": false
},
{
"key_sha256": "7fb2119013f872a5e4dd70952cc896a4ac8291134e02362bd60805eb77e9587a",
"kind": "deleted",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true,
"expired_before_comparison": true,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": false
},
{
"key_sha256": "9bce01e56add682b9d4f3f1829ee83129ab6b18a21c6cf221b04357a8b1232c6",
"kind": "deleted",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": false,
"expired_before_comparison": true,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": false
}
]
}
},
"business_tables_to_confirm_separately": 172,
"active_data_writes_by_comparison": 0,
"restore_network": "none"
},
"public": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "632dc06930d6b4f1b012feb3b4daa3b1cfc53f39",
"branch": "main",
"built_at": "2026-10-26T13:34:38.155848+00:00",
"manifest_sha256": "a19a56e9ecf5e15cdbac92baefa483af70905a530c39927d30f0abfaaebcdf3f"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"IRPC-normal-adjustments/12": [
"assets/project-dossier-MN0piFXE.js"
],
"IRPC-normal-adjustments/13": [
"assets/project-dossier-MN0piFXE.js"
],
"Preparar CBF16 para início de actividade": [
"assets/services-Dwp9X13w.js"
],
"Preparar CBF16 para cessação e quotas anteriores": [
"assets/services-Dwp9X13w.js"
],
"sem consumo de saldos oficiais": [
"assets/project-dossier-MN0piFXE.js"
],
"Preparar CBF16 com duodécimos": [
"assets/services-Dwp9X13w.js"
],
"CBF16 — duodécimos reutilizados de L6": [
"assets/project-dossier-MN0piFXE.js"
],
"Suporte dos duodécimos CBF16": [
"assets/services-Dwp9X13w.js"
],
"Manter preparação anual CBF16": [
"assets/services-Dwp9X13w.js"
],
"CBF16 por duodécimos — ": [
"assets/project-dossier-MN0piFXE.js"
],
"diferença adicional:": [
"assets/project-dossier-MN0piFXE.js"
],
"IRPC-normal-adjustments/10": [
"assets/project-dossier-MN0piFXE.js"
]
},
"assets": [
{
"file": "assets/project-dossier-document-CNhBEvbI.js",
"status": 200,
"sha256": "b9b847d250ac7868f3751371cd49009a3b7d6ad88bdbcb18890b711157508074"
},
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
},
{
"file": "assets/services-Dwp9X13w.js",
"status": 200,
"sha256": "3b102fdc35d71ba203451d784264e949f2fec8ad55de84ecdee44a4920dc35c2"
},
{
"file": "assets/project-dossier-MN0piFXE.js",
"status": 200,
"sha256": "7dc6c894ba3b9cd83dea620c0f6412fdb219d75970e15a5e2e81af479066c3d6"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-BLx8DOj2.js",
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"pipeline": {
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"installed": {
"status": "installed",
"commit": "632dc06930d6b4f1b012feb3b4daa3b1cfc53f39",
"release": "/var/www/investmoz-homologacao/releases/632dc06930d6b4f1b012feb3b4daa3b1cfc53f39-4c020686",
"previous_release": "/var/www/investmoz-homologacao/releases/0bd5d495505d512088887efd3dc5c61f645b1647-ad28558b",
"database_migrations": 0,
"content_imports": 0
},
"latest_report": {
"status": "installed",
"commit": "632dc06930d6b4f1b012feb3b4daa3b1cfc53f39",
"release": "/var/www/investmoz-homologacao/releases/632dc06930d6b4f1b012feb3b4daa3b1cfc53f39-4c020686",
"previous_release": "/var/www/investmoz-homologacao/releases/0bd5d495505d512088887efd3dc5c61f645b1647-ad28558b",
"database_migrations": 0,
"content_imports": 0,
"requested_commits": [
"632dc06930d6b4f1b012feb3b4daa3b1cfc53f39"
],
"finished_at": "2026-10-26T13:34:41.383616+00:00"
},
"log_file": "1793021473834371945.log",
"summaries": [
"OK (1 test, 3106 assertions)",
"built in 32.94s",
"OK (59 tests, 317 assertions)",
"# tests 1042",
"# pass 1042",
"# fail 0"
],
"log_bytes": 296124
},
"accepted_QA_proofs_reused": {
"irpc-l7-start-period-qa-20261026.json": {
"new_frontend_tests": 9,
"API_tests": 1,
"API_assertions": 97,
"API_database": "simulator_fiscal_delta_20261021_test",
"API_host": "127.0.0.1",
"API_port": 55441,
"API_transaction_rollback": true,
"wayfinder_with_form": true,
"typescript": true,
"isolated_build": true,
"HTML_financial_dossier_from_5_API_recoveries": true,
"actual_component": {
"actualComponent": true,
"explicitStartOptionAndCancel": true,
"reuseL6PeriodEvidenceExplicit": true,
"assetsAndPeriodUnchanged": true,
"missingPreservesNormal1001_60": true,
"sixActualMonths50Normal75Accelerated60Cap10Additional": true,
"simulatedColecta998_40": true,
"exactFraction5over3": true,
"saveRecoveryDownload": true,
"negativeAbsenceDistinct": true,
"L8FinalUnknown": true,
"errors": []
}
},
"irpc-l7-cessation-prior-qa-20261026.json": {
"new_frontend_tests": 11,
"API_tests": 1,
"API_assertions": 123,
"API_database": "simulator_fiscal_delta_20261021_test",
"API_host": "127.0.0.1",
"API_port": 55441,
"transaction_rollback": true,
"wayfinder_with_form": true,
"typescript_after_main": true,
"build_after_main": true,
"HTML_financial_dossier_from_7_API_recoveries": true,
"UI": {
"actualComponent": true,
"explicitPreparationAndCancel": true,
"missingOnlyDependentL7": true,
"assetsAndPeriodNotEdited": true,
"prior15RecoveredWithin75DeductionAdditional25": true,
"prior35RemainingNotConsumed": true,
"annual30RecoveredWithin150DeductionAdditional50": true,
"cessationDoesNotImplyAssetExit": true,
"documentedExit5MonthsExact125over6": true,
"saveRecoverDownload": true,
"negativeAbsenceDistinct": true,
"accepted12DoesNotGainConflictingInput": true,
"L8FinalUnknown": true,
"errors": []
},
"accepted_ba83_proofs_reused_not_rerun": true
}
},
"no_custom_QA_suite_repeated": true,
"demonstrated_example": {
"normal_deduction_MZN": "50",
"accelerated_deduction_MZN": "75",
"prior_recovered_included_in_75_MZN": "15",
"additional_deduction_MZN": "25",
"prior_remaining_arithmetic_MZN": "35",
"colecta_simulated_MZN": "993.60",
"declared_prior_balances_unchanged": [
"150",
"100",
"50"
],
"official_balances_consumed": false,
"final_balance": "L8_not_calculated"
},
"remaining_L7": "cumulation and remaining implementation/document dependencies retained in same matrix;no full completion",
"next_scope": "qualify combinations per applicable dispositions and segregated parcels;do not add positive benefits or apply automatic global cumulation",
"L6_operational_delimited": true,
"L7_partial": true,
"L8_final_separate": true,
"SGF_TEMPO_untouched": true
}
@@ -0,0 +1,532 @@
{
"status": "CBF16_monthly_installed",
"installed": {
"status": "installed",
"commit": "0bd5d495505d512088887efd3dc5c61f645b1647",
"release": "/var/www/investmoz-homologacao/releases/0bd5d495505d512088887efd3dc5c61f645b1647-ad28558b",
"previous_release": "/var/www/investmoz-homologacao/releases/e07f89da3d59d06aa1b8c50c22a478b7b167bfdd-6b82c3f2",
"database_migrations": 0,
"content_imports": 0
},
"previous_installed": "e07f89da3d59d06aa1b8c50c22a478b7b167bfdd",
"backup": {
"stage": "/var/backups/investmoz-irpc-l7-months-delivery-20261026/backup",
"created_at": "2026-10-26T12:34:42Z",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "a4e23c6647eeb88ad14b697fafb4728be34118ad0fcfb73f02430fdc8a29135c",
"files_sha256": "11143477968fecb78ddccaba1d36842fa18c1ccf0f2c84ae60704b4cbe4c8274",
"restore_verified": false
},
"restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "irpc_l7_months_restore_20261026",
"port": 55441,
"source_dump_sha256": "a4e23c6647eeb88ad14b697fafb4728be34118ad0fcfb73f02430fdc8a29135c",
"active_database_writes": 0
},
"capacity_before": {
"checked_at_UTC": "2026-10-26T12:33:43.711257+00:00",
"installed": {
"status": "installed",
"commit": "e07f89da3d59d06aa1b8c50c22a478b7b167bfdd",
"release": "/var/www/investmoz-homologacao/releases/e07f89da3d59d06aa1b8c50c22a478b7b167bfdd-6b82c3f2",
"previous_release": "/var/www/investmoz-homologacao/releases/5aaf1a56f9d928331364fcc8b0d1528e51dba327-c1543f3e",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/e07f89da3d59d06aa1b8c50c22a478b7b167bfdd-6b82c3f2",
"release_revision": {
"commit": "e07f89da3d59d06aa1b8c50c22a478b7b167bfdd",
"branch": "main",
"built_at": "2026-10-26T11:02:32.435267+00:00",
"manifest_sha256": "d78a1bdb503c10849f5ea8d8879753653c2c2fc22f6182f6d68ec9f6adf635b5"
},
"service": "MainPID=0\nExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"volumes": [
{
"path": "/var/www/investmoz-homologacao/releases",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 5901660160,
"available_inodes": 21448052,
"total_inodes": 29089792
},
{
"path": "/var/lib/investmoz-deploy",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 5901660160,
"available_inodes": 21448052,
"total_inodes": 29089792
},
{
"path": "/var/backups",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 5901660160,
"available_inodes": 21448052,
"total_inodes": 29089792
},
{
"path": "/tmp",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 5901660160,
"available_inodes": 21448052,
"total_inodes": 29089792
},
{
"path": "/var/lib/docker",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 5901660160,
"available_inodes": 21448052,
"total_inodes": 29089792
}
],
"free_bytes": 5901660160,
"existing_pipeline_minimum_bytes": 5368709120,
"observed_previous_backup_bytes": 175917329,
"same_partition_release_and_backup": true,
"space_guard_satisfied": true,
"current_release_entry_reference": 31179,
"inodes_available_vs_reference": true,
"inode_note": "Observed current release footprint for scale;no new arbitrary inode threshold. Capacity rechecked after fresh backup.",
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604",
"active_writes": 0
},
"capacity_after_backup": {
"checked_at_UTC": "2026-10-26T12:35:49.897136+00:00",
"installed": {
"status": "installed",
"commit": "e07f89da3d59d06aa1b8c50c22a478b7b167bfdd",
"release": "/var/www/investmoz-homologacao/releases/e07f89da3d59d06aa1b8c50c22a478b7b167bfdd-6b82c3f2",
"previous_release": "/var/www/investmoz-homologacao/releases/5aaf1a56f9d928331364fcc8b0d1528e51dba327-c1543f3e",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/e07f89da3d59d06aa1b8c50c22a478b7b167bfdd-6b82c3f2",
"release_revision": {
"commit": "e07f89da3d59d06aa1b8c50c22a478b7b167bfdd",
"branch": "main",
"built_at": "2026-10-26T11:02:32.435267+00:00",
"manifest_sha256": "d78a1bdb503c10849f5ea8d8879753653c2c2fc22f6182f6d68ec9f6adf635b5"
},
"service": "MainPID=0\nExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"volumes": [
{
"path": "/var/www/investmoz-homologacao/releases",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 5723119616,
"available_inodes": 21448040,
"total_inodes": 29089792
},
{
"path": "/var/lib/investmoz-deploy",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 5723119616,
"available_inodes": 21448040,
"total_inodes": 29089792
},
{
"path": "/var/backups",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 5723119616,
"available_inodes": 21448040,
"total_inodes": 29089792
},
{
"path": "/tmp",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 5723119616,
"available_inodes": 21448040,
"total_inodes": 29089792
},
{
"path": "/var/lib/docker",
"mount": "/dev/md2 / ext4",
"device": 2306,
"available_bytes": 5723119616,
"available_inodes": 21448040,
"total_inodes": 29089792
}
],
"free_bytes": 5723119616,
"existing_pipeline_minimum_bytes": 5368709120,
"observed_previous_backup_bytes": 175917329,
"same_partition_release_and_backup": true,
"space_guard_satisfied": true,
"current_release_entry_reference": 31179,
"inodes_available_vs_reference": true,
"inode_note": "Observed current release footprint for scale;no new arbitrary inode threshold. Capacity rechecked after fresh backup.",
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604",
"active_writes": 0
},
"delta": [
{
"path": "resources/js/lib/irpc-special.ts",
"sha256_LF": "a6efbece159a118c5900a6c0d1ebd7b57091b62853c0ad589538546b377aa184"
},
{
"path": "resources/js/lib/irpc-normal.ts",
"sha256_LF": "f21868298d050c72149bcc814858123cb5c7320a93399b30c994b09b5117087c"
},
{
"path": "resources/js/components/simulation-irpc-special.tsx",
"sha256_LF": "da8160778c75935e8b7061ed5722616240189be818e1e04f5711d5b14ec6672d"
}
],
"preservation": {
"previous_release_preserved": "/var/www/investmoz-homologacao/releases/e07f89da3d59d06aa1b8c50c22a478b7b167bfdd-6b82c3f2",
"installed": {
"status": "installed",
"commit": "0bd5d495505d512088887efd3dc5c61f645b1647",
"release": "/var/www/investmoz-homologacao/releases/0bd5d495505d512088887efd3dc5c61f645b1647-ad28558b",
"previous_release": "/var/www/investmoz-homologacao/releases/e07f89da3d59d06aa1b8c50c22a478b7b167bfdd-6b82c3f2",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 3,
"preserved_L3_ISPC_FX_runtime_files_verified": 60,
"documentary_files_verified": 31,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "716daf400150d9b23980e9c93b3e2f69"
},
"after": {
"rows": 106,
"checksum": "512b1ff328aa6bd8c495408be1ab804f"
}
},
"sessions": {
"before": {
"rows": 17,
"checksum": "7fa218eac3ce56d098b61c1dd270c47d"
},
"after": {
"rows": 20,
"checksum": "8f0c8ef146080d0b1bea08aaaddf0446"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"schema_permissions_after": {
"schema_sha256": "5045b3e51d2185377aa3d9ac7fa07a44fad3ec620cdfa83ffe31c8884ee1601d",
"roles_grants_sha256": "1530c33cb016e67bfdc64891ddfce7f185b13b56b2cd87c012871a685e118109",
"filesystem_permissions": {
".env": {
"mode": 416,
"uid": 1001,
"gid": 33
},
"storage": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"storage/app": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"bootstrap/cache": {
"mode": 1528,
"uid": 1001,
"gid": 33
}
},
"comparison_identity": "postgres;catalogue read only;no passwords collected",
"unchanged": true
},
"operational_delta": {
"status": "operational_delta_reconciled",
"comparison_identity": "postgres before/after;isolated restored baseline;no RLS visibility inference",
"cache": "queue:restart;requestthrottle;identical home-sector cached value with refreshed expiry(HomeController remember10min);no deletedcache",
"sessions": "anonymous sessions from delivery user-agent or exactUA/time correlated with nginx public request;deleted sessions individually expired beyond configured lifetime,normal database session garbage collection(config/session lottery2/100)",
"delta": {
"cache": {
"before_rows": 106,
"after_rows": 106,
"changes": [
{
"key_sha256": "dbb99b7e17f5b4b9bb7a8bdf9350d9b2ae368aaa4bc44593a2522d87617d8461",
"kind": "updated",
"fields": [
"expiration"
],
"key_pattern": "investemoz-cache-{hash}",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true,
"same_value_home_cache_expiry_refresh": false
},
{
"key_sha256": "c1c7bc86ef3255c103a0be6aeb651b824eb07259e993cc5daf3665c1a6afff2d",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-{hash}:timer",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true,
"same_value_home_cache_expiry_refresh": false
},
{
"key_sha256": "7f7dd83f47f5bf404d55e6e9f1367948721579970b195680645e356031a070ff",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-illuminate:queue:restart",
"is_queue_restart_key": true,
"expiration_unchanged": false,
"throttle_timer_pair": false,
"same_value_home_cache_expiry_refresh": false
}
]
},
"sessions": {
"before_rows": 17,
"after_rows": 20,
"changes": [
{
"key_sha256": "5b744c29cc4e8a7d20f33814b52fa522e2c04dc525e7e82fa1c00e18ba91d528",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": false,
"expired_before_comparison": false,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": true
},
{
"key_sha256": "26b9b547d6b141fc234b6ea7dac11a679e4bcc54771dfccfcd48a0a5e5abd472",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true,
"expired_before_comparison": false,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": true
},
{
"key_sha256": "db3bcd670b9bafa55a0eb8069cdb3687fd0b7af8640fb4dc464c8adda4aaeccb",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true,
"expired_before_comparison": false,
"session_lifetime_minutes": 120,
"anonymous_public_request_logged": true
}
]
}
},
"business_tables_to_confirm_separately": 172,
"active_data_writes_by_comparison": 0,
"restore_network": "none"
},
"public": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "0bd5d495505d512088887efd3dc5c61f645b1647",
"branch": "main",
"built_at": "2026-10-26T12:39:22.332516+00:00",
"manifest_sha256": "ce3110f77afcaefb5943e50fff77cc8feb34b4c1af20aea1fb64602ffa739264"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"IRPC-normal-adjustments/11": [
"assets/project-dossier-BFw3okex.js"
],
"Preparar CBF16 com duodécimos": [
"assets/services-BDq13GEq.js"
],
"CBF16 — duodécimos reutilizados de L6": [
"assets/project-dossier-BFw3okex.js"
],
"Suporte dos duodécimos CBF16": [
"assets/services-BDq13GEq.js"
],
"Manter preparação anual CBF16": [
"assets/services-BDq13GEq.js"
],
"CBF16 por duodécimos — ": [
"assets/project-dossier-BFw3okex.js"
],
"diferença adicional:": [
"assets/project-dossier-BFw3okex.js"
],
"IRPC-normal-adjustments/10": [
"assets/project-dossier-BFw3okex.js"
]
},
"assets": [
{
"file": "assets/project-dossier-document-BE3GlToo.js",
"status": 200,
"sha256": "ff2cddc6e148022c6358910dc7bc3deb002887fc9851c2a46bb2ce69b9c39aaa"
},
{
"file": "assets/project-dossier-BFw3okex.js",
"status": 200,
"sha256": "7d7263d2fb030111d5ea842eb0ee8b98565e9208b6c8ad7dfd4ff58e4a4b1346"
},
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
},
{
"file": "assets/services-BDq13GEq.js",
"status": 200,
"sha256": "05d13e2e1f454db1f6430de4882468ade75f130b3044f781e68853e4367a1732"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-C9i2PsI1.js",
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"pipeline": {
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"installed": {
"status": "installed",
"commit": "0bd5d495505d512088887efd3dc5c61f645b1647",
"release": "/var/www/investmoz-homologacao/releases/0bd5d495505d512088887efd3dc5c61f645b1647-ad28558b",
"previous_release": "/var/www/investmoz-homologacao/releases/e07f89da3d59d06aa1b8c50c22a478b7b167bfdd-6b82c3f2",
"database_migrations": 0,
"content_imports": 0
},
"latest_report": {
"status": "installed",
"commit": "0bd5d495505d512088887efd3dc5c61f645b1647",
"release": "/var/www/investmoz-homologacao/releases/0bd5d495505d512088887efd3dc5c61f645b1647-ad28558b",
"previous_release": "/var/www/investmoz-homologacao/releases/e07f89da3d59d06aa1b8c50c22a478b7b167bfdd-6b82c3f2",
"database_migrations": 0,
"content_imports": 0,
"requested_commits": [
"0bd5d495505d512088887efd3dc5c61f645b1647"
],
"finished_at": "2026-10-26T12:39:25.297008+00:00"
},
"log_file": "1793018162607468190.log",
"summaries": [
"OK (1 test, 3106 assertions)",
"built in 30.45s",
"OK (59 tests, 317 assertions)",
"# tests 1022",
"# pass 1022",
"# fail 0"
],
"log_bytes": 290854
},
"accepted_QA_proofs_reused": {
"frontend_new_tests": 15,
"API_tests": 1,
"API_assertions": 89,
"API_database": "simulator_fiscal_delta_20261021_test",
"API_port": 55441,
"API_identity_guard": true,
"API_transaction_rollback": true,
"API_to_report_cases": 5,
"UI": {
"actualComponent": true,
"explicitOptionalMonthlyDoesNotEditAssets": true,
"cancelPreservesDeliveredAnnual": true,
"missingSupportPreservesNormalReference": true,
"L6TimingEditedAndReused": true,
"quota75LimitedTo60Additional10": true,
"OctoberUses3MonthsAdditional12_50": true,
"exactFraction25over6": true,
"saveRecoveryDownload": true,
"negativeAbsenceDistinct": true,
"finalL8Unknown": true,
"errors": []
},
"Wayfinder_with_form_generated": true,
"typescript_noEmit": true,
"QA_build": true,
"unaffected_functional_suites_repeated": false
},
"demonstrated_example": {
"normal_quota_MZN": "50",
"CBF16_quota_MZN": "75",
"deduction_after_accounting_cap_MZN": "60",
"additional_deduction_MZN": "10",
"colecta_simulated_MZN": "2016",
"final_balance": "L8_not_calculated"
},
"next_compatible_QA_scope": "CBF16 for a resident beginning activity during2026:documented short period and monthly asset timing reused from L6;explicit scope;no cessation/transition/priorquotas/cumulation",
"L7_partial": true,
"L6_and_first_L7_treatments_preserved": true,
"L8_final_settlement_separate": true,
"SGF_affected": false,
"cleanup_executed": false,
"new_private_synthetic_writes_on_active": 0,
"evidence": {
"backup.txt": "08e14e4dc56973954fdafb3ecca8fb586894e6d50188a0c450f714cc69bd442a",
"baseline.txt": "3838c6d8327fe90ef9f5e19dacaf9c2fcdd61f44d95127520a61da09399bd81c",
"capacity-after-backup.txt": "347647d26d78d4da2c21602f7ca9d58dbfdacf987af1a3dda8d13595790e0f58",
"installed-protected.txt": "d7c47360d40bcf1380ba419dbf55cffb84651bf11b3b073547328bfee0c76cb5",
"installed-public-delta.json": "1a882e238d57af6b7d8b551905011e39e8d5ade96852aeddca7e6c2e76df2df8",
"installed-public.txt": "d79a2ebea5691ed85fb432b3b5ec1e68fc83585431b86caa22b8c07f64e6b852",
"integration.txt": "58473f88aadc2f40d0cb1f6cafc4bad5f19a74fd94fced4007150c8bc4e72033",
"manifest-served.json": "ce3110f77afcaefb5943e50fff77cc8feb34b4c1af20aea1fb64602ffa739264",
"operational-delta.txt": "ec794652c7de2e71ee3126d741c330961cde9b123477185c1f9bdb5b530b9afb",
"preflight.txt": "1bb024b6c1d66fc07ae0a181961729d4af532d3c51570c1aec06ca5b0039033a",
"preparation.json": "22c21051049a495d3aa98c83c3faaddad6ddd0200489647bb137cb5c7fdb5bcc",
"progress-1.txt": "4556381c15abcb5c96d6b675f328b6ee9baa20e9e83495becc58106a224dcaed",
"progress-2.txt": "c882b2b1c75e7e462f59b97fb4b4d570d772fb331c4d4676a660d94619b8c778",
"progress-3.txt": "1e02bd58bf4477f0573cecdcec6ec086820401a2628a02df7518a969d7115dc1",
"restore.txt": "7f987653a5a41b4e586bb88247548a3e4ab1ef94080fbef4d448dc2e249e1baa",
"schema-permissions-after.txt": "76b5a4d8af11e4898a205062766cfb7ab6ec0783200e77e60a1927aa1ca18597",
"schema-permissions-before.txt": "0ab7c964792acdd8917bce256c472e55e034b103500a58b49f020b5084823ed7",
"status-final.txt": "3353b0b2e359627d9987fff4df576b5c466ba903235d60bbc40feac5d8082efa"
}
}
@@ -0,0 +1,527 @@
{
"status": "CBF16_monthly_QA_prepared_not_installed",
"date": "2026-10-26",
"branch": "codex/irpc-l7-months-qa-20261026",
"QA_workspace_reused_without_deleting_old_proofs": "C:\\laragon\\www\\portal-investidor-irpc-l7-common-qa-20261026",
"installed_baseline": "e07f89da3d59d06aa1b8c50c22a478b7b167bfdd",
"documentation_baseline": "aed020d19eff800ac970ac43b7e0b7a157df5486",
"version": "IRPC-normal-adjustments/11",
"optional_input": "special.acceleration.monthly version1 and explicit reference;no automatic date/value changes",
"delivered_version10_keys_models_histories_preserved": true,
"runtime_delta": {
"resources/js/lib/irpc-special.ts": "a6efbece159a118c5900a6c0d1ebd7b57091b62853c0ad589538546b377aa184",
"resources/js/lib/irpc-normal.ts": "f21868298d050c72149bcc814858123cb5c7320a93399b30c994b09b5117087c",
"resources/js/components/simulation-irpc-special.tsx": "da8160778c75935e8b7061ed5722616240189be818e1e04f5711d5b14ec6672d"
},
"L6_depreciation_engine_unchanged": true,
"cases_recovered": {
"monthly": {
"L6_reference": {
"taxableProfit": {
"numerator": "6310",
"denominator": "1"
},
"taxableBase": {
"numerator": "6310",
"denominator": "1"
},
"colecta": {
"numerator": "10096",
"denominator": "5"
}
},
"L7_profit": {
"numerator": "6300",
"denominator": "1"
},
"L7_base": {
"numerator": "6300",
"denominator": "1"
},
"L7_colecta": {
"numerator": "2016",
"denominator": "1"
},
"additional_deduction": {
"numerator": "10",
"denominator": "1"
},
"status": "calculated",
"monthly": {
"input": {
"version": 1,
"reference": "QA opção de duodécimos desde a entrada emuso,datas/meses do mesmo activoL6"
},
"period": {
"kind": "calendar",
"from": "2026-01-01",
"to": "2026-12-31",
"reference": "QA doze meses do plano correspondem ao ano civil completo",
"pending": []
},
"source": "CBF16 com Decreto72/2013 art9:taxa normal máxima ×1,5 ×duodécimos/12,meses reutilizados do mapaL6. Exercício anual civil2026,entrada emuso no ano,método constante,sem saída/quotas anteriores/cumulação. Dedução limitada ao contabilizado elegível e saldo fiscal;apenas diferença adicional,não nova amortização contabilística.",
"assets": [
{
"id": "accelerated1",
"assetId": "server",
"assetKey": "asset-server",
"description": "Máquina industrial existente QA",
"start": "2026-07-15",
"months": 6,
"taxBasis": {
"numerator": "1000",
"denominator": "1"
},
"normalRate": {
"numerator": "10",
"denominator": "1"
},
"acceleratedRate": {
"numerator": "15",
"denominator": "1"
},
"normalQuota": {
"numerator": "50",
"denominator": "1"
},
"acceleratedQuota": {
"numerator": "75",
"denominator": "1"
},
"normalDeduction": {
"numerator": "50",
"denominator": "1"
},
"acceleratedDeduction": {
"numerator": "60",
"denominator": "1"
},
"additionalDeduction": {
"numerator": "10",
"denominator": "1"
},
"applied": true,
"reason": "Activo existente elegível;taxa normal ×1,5,com limite contabilístico e saldo fiscal."
}
]
},
"final_balance": {
"scope": "L8",
"payable": null,
"recoverable": null
}
},
"fraction": {
"L6_reference": {
"taxableProfit": {
"numerator": "19055",
"denominator": "3"
},
"taxableBase": {
"numerator": "19055",
"denominator": "3"
},
"colecta": {
"numerator": "30488",
"denominator": "15"
}
},
"L7_profit": {
"numerator": "12695",
"denominator": "2"
},
"L7_base": {
"numerator": "12695",
"denominator": "2"
},
"L7_colecta": {
"numerator": "10156",
"denominator": "5"
},
"additional_deduction": {
"numerator": "25",
"denominator": "6"
},
"status": "calculated",
"monthly": {
"input": {
"version": 1,
"reference": "QA opção de duodécimos desde a entrada emuso,datas/meses do mesmo activoL6"
},
"period": {
"kind": "calendar",
"from": "2026-01-01",
"to": "2026-12-31",
"reference": "QA doze meses do plano correspondem ao ano civil completo",
"pending": []
},
"source": "CBF16 com Decreto72/2013 art9:taxa normal máxima ×1,5 ×duodécimos/12,meses reutilizados do mapaL6. Exercício anual civil2026,entrada emuso no ano,método constante,sem saída/quotas anteriores/cumulação. Dedução limitada ao contabilizado elegível e saldo fiscal;apenas diferença adicional,não nova amortização contabilística.",
"assets": [
{
"id": "accelerated1",
"assetId": "server",
"assetKey": "asset-server",
"description": "Máquina industrial existente QA",
"start": "2026-12-15",
"months": 1,
"taxBasis": {
"numerator": "1000",
"denominator": "1"
},
"normalRate": {
"numerator": "10",
"denominator": "1"
},
"acceleratedRate": {
"numerator": "15",
"denominator": "1"
},
"normalQuota": {
"numerator": "25",
"denominator": "3"
},
"acceleratedQuota": {
"numerator": "25",
"denominator": "2"
},
"normalDeduction": {
"numerator": "25",
"denominator": "3"
},
"acceleratedDeduction": {
"numerator": "25",
"denominator": "2"
},
"additionalDeduction": {
"numerator": "25",
"denominator": "6"
},
"applied": true,
"reason": "Activo existente elegível;taxa normal ×1,5,com limite contabilístico e saldo fiscal."
}
]
},
"final_balance": {
"scope": "L8",
"payable": null,
"recoverable": null
}
},
"missing": {
"L6_reference": {
"taxableProfit": {
"numerator": "6310",
"denominator": "1"
},
"taxableBase": {
"numerator": "6310",
"denominator": "1"
},
"colecta": {
"numerator": "10096",
"denominator": "5"
}
},
"L7_profit": null,
"L7_base": null,
"L7_colecta": null,
"additional_deduction": null,
"status": "indeterminate",
"monthly": {
"input": {
"version": 1,
"reference": ""
},
"period": {
"kind": "calendar",
"from": "2026-01-01",
"to": "2026-12-31",
"reference": "QA doze meses do plano correspondem ao ano civil completo",
"pending": []
},
"source": "CBF16 com Decreto72/2013 art9:taxa normal máxima ×1,5 ×duodécimos/12,meses reutilizados do mapaL6. Exercício anual civil2026,entrada emuso no ano,método constante,sem saída/quotas anteriores/cumulação. Dedução limitada ao contabilizado elegível e saldo fiscal;apenas diferença adicional,não nova amortização contabilística.",
"assets": [
{
"id": "accelerated1",
"assetId": "server",
"assetKey": "asset-server",
"description": "Máquina industrial existente QA",
"start": "2026-07-15",
"months": 6,
"taxBasis": {
"numerator": "1000",
"denominator": "1"
},
"normalRate": {
"numerator": "10",
"denominator": "1"
},
"acceleratedRate": null,
"normalQuota": {
"numerator": "50",
"denominator": "1"
},
"acceleratedQuota": null,
"normalDeduction": {
"numerator": "50",
"denominator": "1"
},
"acceleratedDeduction": null,
"additionalDeduction": null,
"applied": false,
"reason": "Falta suporte da reutilização dos meses e da opção por duodécimosCBF16 no mapaL6."
}
]
},
"final_balance": {
"scope": "L8",
"payable": null,
"recoverable": null
}
},
"negative": {
"L6_reference": {
"taxableProfit": {
"numerator": "6310",
"denominator": "1"
},
"taxableBase": {
"numerator": "6310",
"denominator": "1"
},
"colecta": {
"numerator": "10096",
"denominator": "5"
}
},
"L7_profit": {
"numerator": "6310",
"denominator": "1"
},
"L7_base": {
"numerator": "6310",
"denominator": "1"
},
"L7_colecta": {
"numerator": "10096",
"denominator": "5"
},
"additional_deduction": {
"numerator": "0",
"denominator": "1"
},
"status": "calculated",
"monthly": {
"input": {
"version": 1,
"reference": "QA opção de duodécimos desde a entrada emuso,datas/meses do mesmo activoL6"
},
"period": {
"kind": "calendar",
"from": "2026-01-01",
"to": "2026-12-31",
"reference": "QA doze meses do plano correspondem ao ano civil completo",
"pending": []
},
"source": "CBF16 com Decreto72/2013 art9:taxa normal máxima ×1,5 ×duodécimos/12,meses reutilizados do mapaL6. Exercício anual civil2026,entrada emuso no ano,método constante,sem saída/quotas anteriores/cumulação. Dedução limitada ao contabilizado elegível e saldo fiscal;apenas diferença adicional,não nova amortização contabilística.",
"assets": [
{
"id": "accelerated1",
"assetId": "server",
"assetKey": "asset-server",
"description": "Máquina industrial existente QA",
"start": "2026-07-15",
"months": 6,
"taxBasis": {
"numerator": "1000",
"denominator": "1"
},
"normalRate": {
"numerator": "10",
"denominator": "1"
},
"acceleratedRate": null,
"normalQuota": {
"numerator": "50",
"denominator": "1"
},
"acceleratedQuota": null,
"normalDeduction": {
"numerator": "50",
"denominator": "1"
},
"acceleratedDeduction": null,
"additionalDeduction": {
"numerator": "0",
"denominator": "1"
},
"applied": false,
"reason": "Condição negativa documentada;quota normal mantida."
}
]
},
"final_balance": {
"scope": "L8",
"payable": null,
"recoverable": null
}
},
"absent": {
"L6_reference": {
"taxableProfit": {
"numerator": "6310",
"denominator": "1"
},
"taxableBase": {
"numerator": "6310",
"denominator": "1"
},
"colecta": {
"numerator": "10096",
"denominator": "5"
}
},
"L7_profit": {
"numerator": "6310",
"denominator": "1"
},
"L7_base": {
"numerator": "6310",
"denominator": "1"
},
"L7_colecta": {
"numerator": "10096",
"denominator": "5"
},
"additional_deduction": {
"numerator": "0",
"denominator": "1"
},
"status": "absent",
"monthly": {
"input": {
"version": 1,
"reference": "QA opção de duodécimos desde a entrada emuso,datas/meses do mesmo activoL6"
},
"period": {
"kind": "calendar",
"from": "2026-01-01",
"to": "2026-12-31",
"reference": "QA doze meses do plano correspondem ao ano civil completo",
"pending": []
},
"source": "CBF16 com Decreto72/2013 art9:taxa normal máxima ×1,5 ×duodécimos/12,meses reutilizados do mapaL6. Exercício anual civil2026,entrada emuso no ano,método constante,sem saída/quotas anteriores/cumulação. Dedução limitada ao contabilizado elegível e saldo fiscal;apenas diferença adicional,não nova amortização contabilística.",
"assets": []
},
"final_balance": {
"scope": "L8",
"payable": null,
"recoverable": null
}
}
},
"checks": {
"frontend_new_tests": 15,
"API_tests": 1,
"API_assertions": 89,
"API_database": "simulator_fiscal_delta_20261021_test",
"API_port": 55441,
"API_identity_guard": true,
"API_transaction_rollback": true,
"API_to_report_cases": 5,
"UI": {
"actualComponent": true,
"explicitOptionalMonthlyDoesNotEditAssets": true,
"cancelPreservesDeliveredAnnual": true,
"missingSupportPreservesNormalReference": true,
"L6TimingEditedAndReused": true,
"quota75LimitedTo60Additional10": true,
"OctoberUses3MonthsAdditional12_50": true,
"exactFraction25over6": true,
"saveRecoveryDownload": true,
"negativeAbsenceDistinct": true,
"finalL8Unknown": true,
"errors": []
},
"Wayfinder_with_form_generated": true,
"typescript_noEmit": true,
"QA_build": true,
"unaffected_functional_suites_repeated": false
},
"preservation": {
"tracked_files_compared": 1006,
"unchanged": 1003,
"protected_code_schema_config_routes_contract_files": 584,
"original_files": {
"docs/investmoz/simulations/source-archive/AT-Comunicado-9-2026-ISPC.pdf": "106f8a9ce9255c03549c70bf07fe999d32e6e55302d009b509862aa74ccb4973",
"docs/investmoz/simulations/source-archive/AT-MRFTA-19-39.pdf": "8ea62c53066b482f87078a7a7b1ecf15ca98a12a122e8d7abca63acfc993186b",
"docs/investmoz/simulations/source-archive/AT-Modelo-30-ISPC.pdf": "6802edd06b6ff638a0b851a3ec7ecf69af8f07840faa47446becad67d35d445c",
"docs/investmoz/simulations/source-archive/AT-Modelo-B-Geral.pdf": "bd977c7c59d4d98befd92e2c566b1bf168cb1343bb519f51b41a3807f431fc57",
"docs/investmoz/simulations/source-archive/BM-Mercado-Monetario-MAIBOR-20261025.html": "00e8a7e0d3a1db4ca3beb56d5361b2084a0f1684f3d40fc1c203702a2190e063",
"docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee",
"docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251",
"docs/investmoz/simulations/source-archive/BR-89-I-Serie-2017-06-08.pdf": "11f0cab15eb6e51010952203ffa24fdc533a24fd642e19525fe4f46b17a1f5e5",
"docs/investmoz/simulations/source-archive/BR-95-I-Suplemento-2025-05-21.pdf": "e0e682e2c027c3cd9c1d46a73a3f48bc5f6bdbf05667fd97314d7a3f6a456358",
"docs/investmoz/simulations/source-archive/BR252-I-Serie-2022-Lei20-PESOE.pdf": "1159fd3ce1ba5581671796d083534da48bd3c5578298819e896f1c2a8026318d",
"docs/investmoz/simulations/source-archive/Decreto-22-2021-BR70.pdf": "a8fac38dcfe08f9c7a8e46254cff10e1ec82fc4f7a8d88ad6e4fe7d91ffc21a5",
"docs/investmoz/simulations/source-archive/Decreto-27-2026-BR123.pdf": "26249c3fa58f149c81de36e99d1aac2819a4771379d9e8833159660dabf539bb",
"docs/investmoz/simulations/source-archive/Decreto-29-1998-BR22-5-suplemento.pdf": "6242cbe675faadf085f43f95ec8c7e8868aafe67c3b2ab2bb010992288f954f8",
"docs/investmoz/simulations/source-archive/Decreto-3-2011-BR-11-I-mineiros.pdf": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be",
"docs/investmoz/simulations/source-archive/Decreto-37-2023-BR124.pdf": "7e680b191481faa0e2e9057fa5053587eb2a29d1d8c819e0eb9f02814255a04c",
"docs/investmoz/simulations/source-archive/Decreto-9-2008-BR16.pdf": "96fccdecbfdc11c9eafb90fbc6c7bc259f88bbd4c7507d1ac3af1fa03f960697",
"docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b",
"docs/investmoz/simulations/source-archive/Lei-14-1992-BR42.pdf": "089fff7423e99a70a230a73ca379e4ea3a91d124703f91016e57ff82794b9e56",
"docs/investmoz/simulations/source-archive/Lei-17-2022-BR251-exemplar-MCNet5.pdf": "14eb34f0af91a8f5cb1770c7b52d6ff839c6818302d1ed96d79afbfb9fe999d4",
"docs/investmoz/simulations/source-archive/Lei-17-2022-IPP-BR250-Parlamento.pdf": "978cd22403ffd336a631704ecd7a5bbd814a427c815b9acdaca5515591dd9e2a",
"docs/investmoz/simulations/source-archive/Lei-19-2013-BR76.pdf": "bba96d645cc935ffc3d1a79b9f0f73ac1c693d6459c2ad41f56cd2841accae76",
"docs/investmoz/simulations/source-archive/Lei-19-2017-IRPS-BR-OCAM.pdf": "c3a0186cb9ad090d7a9533006295dc9bb6a62ad0d6150173cbd49dba4ee4b52d",
"docs/investmoz/simulations/source-archive/Lei-2-2011-BR-1-4-suplemento-MCNet.pdf": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899",
"docs/investmoz/simulations/source-archive/Lei-20-2009-BR36-AT-exemplar19.pdf": "fc1c8144db42960cbf73e717e095896f511ece0f907f58f78819b27d6917a7ee",
"docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53",
"docs/investmoz/simulations/source-archive/Lei-34-2007-BR52.pdf": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e",
"docs/investmoz/simulations/source-archive/Lei-4-1994-BR37-3-suplemento.pdf": "210df9db8980d0a5690cd187a6eeec7e37a900d743e39062c16f4e0d12215c7e",
"docs/investmoz/simulations/source-archive/Lei-4-2012-BR3.pdf": "b8845cef41dcbd9ba50c43dbfa743a56030dd3d348242a107e1ae30279eec121",
"docs/investmoz/simulations/source-archive/Lei-7-1991-Partidos-IFES.pdf": "6b783a0bb3330688ef10660a58060d9724aa2da6a873d234fe902f0eaaeda42d",
"docs/investmoz/simulations/source-archive/PT-MZ-CDT-1992.pdf": "d504e1024b28aee5c6acf4592acb96ec9c915a8414f67a61ab6984d6acf9df9d",
"docs/investmoz/simulations/source-archive/PT-MZ-Protocolo-2009.pdf": "f353773dcf41f09f4daa6cf5ba5a5f7994f3e02615867c2dcffc61c3d901bf9b"
},
"active_writes": 0,
"migrations": 0,
"imports": 0,
"configuration_or_permission_changes": false,
"SGF_affected": false
},
"sources_reused": {
"inventory_files": 8143,
"evidence_receipts": [
"irpc-l6-depreciation-qa-20261026.json",
"irpc-l7-scope-20261026.json",
"irpc-l7-common-qa-20261026.json"
],
"rules": "CBF16 and Decreto72/2013 art3(3)/9;same L6 monthly timing/maximum normal rate/accounting caps",
"broad_research_repeated": false
},
"remaining_scope": [
"short/noncivil fiscal periods and exits",
"lateryears/priorquotas/selected lower rate/decliningmethod",
"rehabilitated/used/revalued/unmappedassets",
"benefitcumulation,cooperative+CBF16 and other L7 families",
"L7 official M20/M22 field transport"
],
"resume_condition": "Case-specific rule/period/accounting/compatibility and existing evidence linked,then only new effects demonstrated;L6 dependency limits its asset only",
"delivery_prepared_only": true,
"remote_capacity_before_next_installation": {
"last_observed": "2026-10-26T13:56:51.412248+02:00",
"historical_available_bytes": 5922545664,
"historical_available_inodes": 21448231,
"existing_pipeline_guard_bytes": 5368709120,
"mandatory_fresh_check_for_build_and_new_backup": true,
"backup_restore_fresh_required": true,
"main_compatibility_recheck_required": true,
"active_release_preserved_until_ready": true,
"no_local_or_SGF_cleanup_dependency": true
},
"L7_partial": true,
"L8_final_balance_separate": true,
"evidence_directory": "outputs/irpc-l7-months"
}
@@ -0,0 +1,225 @@
{
"status": "L6_operational_demonstrated_scope_accepted_L7_delimited_not_implemented",
"recorded_date": "2026-10-26",
"authority": {
"origin": "express_user_instruction",
"decision": "L6 operacional no âmbito demonstrado, com limitações explícitas; delimitar L7; L8 conserva liquidação final",
"new_generic_approval_required": false
},
"baseline": {
"installed_commit": "5aaf1a56f9d928331364fcc8b0d1528e51dba327",
"reused_delivery_receipt": "irpc-l6-values-forms-delivery-20261026.json",
"documentation_parent": "45fd591c7faa765f33de0a0b9000c3ceb4057abe",
"root_documentation_parent": "31651a76b11ed50576c52cd274e3c59cda0f8924"
},
"L6": {
"operational_scope_accepted": true,
"integrally_complete": false,
"existing_code_pending_groups": 5,
"existing_documentary_pending_groups": 5,
"pending_list": "same matrix/manual: saldo consolidado de L6",
"old_pending_decision_records_preserved_as_history": true,
"dependent_cases_only_blocked": true,
"accepted_proofs_reused": true
},
"L7": {
"state": "delimited; no new executable treatment",
"context_reused": [
"opportunity/dossier snapshots",
"sector and territorial IDs/labels/provenance",
"subject/NUIT/residence/EP/period",
"business_plan_snapshot",
"modelo_a_snapshot.irpcNormal versions",
"asset and expense IDs/previous quotas",
"exact rational values and demonstrated form mappings"
],
"location_grants_benefit": false,
"effect_types": [
"profit_adjustment",
"taxable_base_deduction",
"rate_by_eligible_parcel",
"separate_autonomous_tax",
"potential_credit_entitlement_for_L8"
],
"families": [
"61(4) expenses autonomous tax",
"61-A capital gains autonomous tax from2026",
"CIRPC9–14 entity exemptions/cooperative12",
"CBF16 accelerated depreciation",
"CBF17–19 deductions/magnifications",
"CBF15 potential investment credit; annual use L8",
"CBF sector/territory specific provisions",
"special operations54–56/41-A and specifically mapped sector regimes"
],
"first_increment": [
"common qualification, provenance, period and separate effects",
"61(4) expense35% with existing36g addback, no duplicate",
"missing-information and negative-condition cases"
],
"next_compatible_cases": [
"cooperative12 eligible parcel",
"CBF16 supported asset and reconciled prior quotas"
],
"not_implemented_yet": [
"specific qualification/persistence",
"new treatment calculations and per-parcel reconciliation",
"treatment-specific reporting/exports"
],
"documentary_pending_scope": "Only individual status/title where required, parcel/limit/chronology, unmapped specific sector norm or affected form edition/field; examples and resume conditions in same matrix/manual",
"historical_mutation_permitted": false
},
"L8": {
"retentions_payments_annual_credit_application_final_settlement": true,
"final_balance_calculated": false
},
"source_inventory": {
"reused_inventory": "C:\\laragon\\www\\portal-investidor\\outputs\\ispc-l4a-20261025\\preservation-before-tests.json",
"files": 8143,
"fresh_broad_scan": false,
"sources": [
{
"id": "CIRPC",
"title": "Lei34/2007",
"exemplar": "C:\\laragon\\www\\portal-investidor-irpc-l7-scope-20261026\\docs\\investmoz\\simulations\\source-archive\\Lei-34-2007-BR52.pdf",
"bytes": 1676884,
"sha256": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e",
"references": "PDF5/p768(59):12,14,15; PDF15–16:54–56; PDF17/p768(71):61",
"official_url": null,
"available_for_consultation": true,
"documentary_status": "official_source_accepted; applicability/version/period_per_treatment",
"new_calculation_activation": false
},
{
"id": "IRPC-2026",
"title": "Lei12/2025",
"exemplar": "C:\\laragon\\www\\portal-investidor-irpc-l7-scope-20261026\\docs\\investmoz\\simulations\\source-archive\\BR-248-I-Suplemento-1-2025.pdf",
"bytes": 440018,
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251",
"references": "PDF18–20; PDF20:art2/61-A,art3,art6; vigência01/01/2026",
"official_url": null,
"available_for_consultation": true,
"documentary_status": "official_source_accepted; applicability/version/period_per_treatment",
"new_calculation_activation": false
},
{
"id": "IRPC-2022",
"title": "Lei20/2022",
"exemplar": "C:\\laragon\\www\\portal-investidor-irpc-l7-scope-20261026\\docs\\investmoz\\simulations\\source-archive\\BR252-I-Serie-2022-Lei20-PESOE.pdf",
"bytes": 17966640,
"sha256": "1159fd3ce1ba5581671796d083534da48bd3c5578298819e896f1c2a8026318d",
"references": "PDF1/p2731:61(2), termo31/12/2025",
"official_url": null,
"available_for_consultation": true,
"documentary_status": "official_source_accepted; applicability/version/period_per_treatment",
"new_calculation_activation": false
},
{
"id": "CBF-local",
"title": "Lei4/2009",
"exemplar": "C:\\laragon\\www\\portal-investidor-irpc-l7-scope-20261026\\outputs\\irpc-l7-scope\\CBF-Lei4-2009-APIEX.pdf",
"bytes": 10998765,
"sha256": "4231a5b6783e603cedb98992f3e93ecaf1c1d5be341b093560cf2fdd0845b0dc",
"references": "Original local disponível; scan sem extracção textual útil; cotejo textual pela compilação oficial",
"official_url": null,
"available_for_consultation": true,
"documentary_status": "official_source_accepted; applicability/version/period_per_treatment",
"new_calculation_activation": false,
"authorised_original": "\\\\Mac\\Home\\Documents\\TEMPO\\Portal Tempo\\Legislacao\\Apiex\\3.-Lei-no4-2009-de-12-de-Janeiro-Codigo-dos-Beneficios-Fiscais.pdf"
},
{
"id": "APIEX",
"title": "Compilação oficial APIEX",
"exemplar": "C:\\laragon\\www\\portal-investidor-irpc-l7-scope-20261026\\outputs\\irpc-l7-scope\\APIEX-legislacao-investimentos-2025.pdf",
"bytes": 6467655,
"sha256": "ba1e9eaabfec5d0c4cb2d9f2444a6860f7a90f222034764197829be402d408ed",
"references": "pp8–32:Lei8/2023; pp36–59:Decreto8/2024; pp64–92:CBF4/2009; p68:9/10;p71–74:15–19",
"official_url": "https://pt.apiex.gov.mz/wp-content/uploads/2025/02/LEGISLACAO-DE-INVESTIMENTOS-EM-MOCAMBIQUE.pdf",
"available_for_consultation": true,
"documentary_status": "official_source_accepted; applicability/version/period_per_treatment",
"new_calculation_activation": false
},
{
"id": "RCBF",
"title": "Decreto56/2009",
"exemplar": "C:\\laragon\\www\\portal-investidor-irpc-l7-scope-20261026\\outputs\\irpc-l7-scope\\Decreto56-2009-BR40.pdf",
"bytes": 422005,
"sha256": "6ea1b8d93daed48c6d590481d874010fa1708211d8f27c319dc9a31328456017",
"references": "Procedimento já cotejado em iva-l1-p084-p085-model-i1-cotejo-20261024.json; não estende isenções IVA a IRPC",
"official_url": null,
"available_for_consultation": true,
"documentary_status": "official_source_accepted; applicability/version/period_per_treatment",
"new_calculation_activation": false
}
],
"rendered_pages_reviewed": [
"CIRPC PDF5",
"CIRPC PDF17",
"APIEX PDF68",
"APIEX PDF72",
"Lei12/2025 PDF20"
],
"no_period_extension_presumed": "61(2) Law20/2022 ends31/12/2025; no automatic2026 rate",
"availability_is_not_rule_activation": true
},
"preservation": {
"source_archive_files": {
"docs/investmoz/simulations/source-archive/AT-Comunicado-9-2026-ISPC.pdf": "106f8a9ce9255c03549c70bf07fe999d32e6e55302d009b509862aa74ccb4973",
"docs/investmoz/simulations/source-archive/AT-Modelo-30-ISPC.pdf": "6802edd06b6ff638a0b851a3ec7ecf69af8f07840faa47446becad67d35d445c",
"docs/investmoz/simulations/source-archive/AT-Modelo-B-Geral.pdf": "bd977c7c59d4d98befd92e2c566b1bf168cb1343bb519f51b41a3807f431fc57",
"docs/investmoz/simulations/source-archive/AT-MRFTA-19-39.pdf": "8ea62c53066b482f87078a7a7b1ecf15ca98a12a122e8d7abca63acfc993186b",
"docs/investmoz/simulations/source-archive/BM-Mercado-Monetario-MAIBOR-20261025.html": "00e8a7e0d3a1db4ca3beb56d5361b2084a0f1684f3d40fc1c203702a2190e063",
"docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee",
"docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251",
"docs/investmoz/simulations/source-archive/BR-89-I-Serie-2017-06-08.pdf": "11f0cab15eb6e51010952203ffa24fdc533a24fd642e19525fe4f46b17a1f5e5",
"docs/investmoz/simulations/source-archive/BR-95-I-Suplemento-2025-05-21.pdf": "e0e682e2c027c3cd9c1d46a73a3f48bc5f6bdbf05667fd97314d7a3f6a456358",
"docs/investmoz/simulations/source-archive/BR252-I-Serie-2022-Lei20-PESOE.pdf": "1159fd3ce1ba5581671796d083534da48bd3c5578298819e896f1c2a8026318d",
"docs/investmoz/simulations/source-archive/Decreto-22-2021-BR70.pdf": "a8fac38dcfe08f9c7a8e46254cff10e1ec82fc4f7a8d88ad6e4fe7d91ffc21a5",
"docs/investmoz/simulations/source-archive/Decreto-27-2026-BR123.pdf": "26249c3fa58f149c81de36e99d1aac2819a4771379d9e8833159660dabf539bb",
"docs/investmoz/simulations/source-archive/Decreto-29-1998-BR22-5-suplemento.pdf": "6242cbe675faadf085f43f95ec8c7e8868aafe67c3b2ab2bb010992288f954f8",
"docs/investmoz/simulations/source-archive/Decreto-3-2011-BR-11-I-mineiros.pdf": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be",
"docs/investmoz/simulations/source-archive/Decreto-37-2023-BR124.pdf": "7e680b191481faa0e2e9057fa5053587eb2a29d1d8c819e0eb9f02814255a04c",
"docs/investmoz/simulations/source-archive/Decreto-9-2008-BR16.pdf": "96fccdecbfdc11c9eafb90fbc6c7bc259f88bbd4c7507d1ac3af1fa03f960697",
"docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b",
"docs/investmoz/simulations/source-archive/Lei-14-1992-BR42.pdf": "089fff7423e99a70a230a73ca379e4ea3a91d124703f91016e57ff82794b9e56",
"docs/investmoz/simulations/source-archive/Lei-17-2022-BR251-exemplar-MCNet5.pdf": "14eb34f0af91a8f5cb1770c7b52d6ff839c6818302d1ed96d79afbfb9fe999d4",
"docs/investmoz/simulations/source-archive/Lei-17-2022-IPP-BR250-Parlamento.pdf": "978cd22403ffd336a631704ecd7a5bbd814a427c815b9acdaca5515591dd9e2a",
"docs/investmoz/simulations/source-archive/Lei-19-2013-BR76.pdf": "bba96d645cc935ffc3d1a79b9f0f73ac1c693d6459c2ad41f56cd2841accae76",
"docs/investmoz/simulations/source-archive/Lei-19-2017-IRPS-BR-OCAM.pdf": "c3a0186cb9ad090d7a9533006295dc9bb6a62ad0d6150173cbd49dba4ee4b52d",
"docs/investmoz/simulations/source-archive/Lei-2-2011-BR-1-4-suplemento-MCNet.pdf": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899",
"docs/investmoz/simulations/source-archive/Lei-20-2009-BR36-AT-exemplar19.pdf": "fc1c8144db42960cbf73e717e095896f511ece0f907f58f78819b27d6917a7ee",
"docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53",
"docs/investmoz/simulations/source-archive/Lei-34-2007-BR52.pdf": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e",
"docs/investmoz/simulations/source-archive/Lei-4-1994-BR37-3-suplemento.pdf": "210df9db8980d0a5690cd187a6eeec7e37a900d743e39062c16f4e0d12215c7e",
"docs/investmoz/simulations/source-archive/Lei-4-2012-BR3.pdf": "b8845cef41dcbd9ba50c43dbfa743a56030dd3d348242a107e1ae30279eec121",
"docs/investmoz/simulations/source-archive/Lei-7-1991-Partidos-IFES.pdf": "6b783a0bb3330688ef10660a58060d9724aa2da6a873d234fe902f0eaaeda42d",
"docs/investmoz/simulations/source-archive/PT-MZ-CDT-1992.pdf": "d504e1024b28aee5c6acf4592acb96ec9c915a8414f67a61ab6984d6acf9df9d",
"docs/investmoz/simulations/source-archive/PT-MZ-Protocolo-2009.pdf": "f353773dcf41f09f4daa6cf5ba5a5f7994f3e02615867c2dcffc61c3d901bf9b"
},
"source_archive_count": 31,
"root_existing_source_files": 28,
"root_preexisting_branch_absences": [
"docs/investmoz/simulations/source-archive/BM-Mercado-Monetario-MAIBOR-20261025.html",
"docs/investmoz/simulations/source-archive/PT-MZ-CDT-1992.pdf",
"docs/investmoz/simulations/source-archive/PT-MZ-Protocolo-2009.pdf"
],
"root_absences_introduced_by_this_change": false,
"runtime_schema_config_permissions_changed": false,
"active_writes": 0,
"migrations": 0,
"imports": 0,
"deployment": false,
"functional_tests_repeated": false,
"existing_accepted_proofs_reused": true
},
"validation": {
"expected_tracked_delta": [
"docs/investmoz/consolidated-review-matrix-2026-10-03.md",
"docs/investmoz/unification/traceability-and-manual.md",
"docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv",
"docs/investmoz/simulations/irpc-l7-scope-20261026.json"
],
"csv_only_changed_id": "AUD-SIM-INT02",
"scope_present_in_existing_matrix_and_manual": true,
"new_backlog_created": false
}
}
@@ -0,0 +1,270 @@
{
"status": "L7_installed_reconfirmed_not_reinstalled",
"checked_at_UTC": "2026-10-26T11:56:51.412248+00:00",
"checked_at_Africa_Johannesburg": "2026-10-26T13:56:51.412248+02:00",
"main": "e07f89da3d59d06aa1b8c50c22a478b7b167bfdd",
"QA_origin": "ab2ff2fdbcbe6fb94f03e4bc4cc7ccbd647d94fc",
"installed_commit": "e07f89da3d59d06aa1b8c50c22a478b7b167bfdd",
"previous_delivery_receipt": "irpc-l7-common-delivery-20261026.json",
"server_read_only": {
"checked_at_UTC": "2026-10-26T11:56:51.412248+00:00",
"read_only": true,
"installed": {
"status": "installed",
"commit": "e07f89da3d59d06aa1b8c50c22a478b7b167bfdd",
"release": "/var/www/investmoz-homologacao/releases/e07f89da3d59d06aa1b8c50c22a478b7b167bfdd-6b82c3f2",
"previous_release": "/var/www/investmoz-homologacao/releases/5aaf1a56f9d928331364fcc8b0d1528e51dba327-c1543f3e",
"database_migrations": 0,
"content_imports": 0
},
"release_revision": {
"commit": "e07f89da3d59d06aa1b8c50c22a478b7b167bfdd",
"branch": "main",
"built_at": "2026-10-26T11:02:32.435267+00:00",
"manifest_sha256": "d78a1bdb503c10849f5ea8d8879753653c2c2fc22f6182f6d68ec9f6adf635b5"
},
"latest_report": {
"status": "installed",
"commit": "e07f89da3d59d06aa1b8c50c22a478b7b167bfdd",
"release": "/var/www/investmoz-homologacao/releases/e07f89da3d59d06aa1b8c50c22a478b7b167bfdd-6b82c3f2",
"previous_release": "/var/www/investmoz-homologacao/releases/5aaf1a56f9d928331364fcc8b0d1528e51dba327-c1543f3e",
"database_migrations": 0,
"content_imports": 0,
"requested_commits": [
"e07f89da3d59d06aa1b8c50c22a478b7b167bfdd"
],
"finished_at": "2026-10-26T11:02:35.885260+00:00"
},
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"volumes": [
{
"path": "/var/www/investmoz-homologacao/releases",
"mount": "/dev/md2 / ext4",
"device": 2306,
"total_bytes": 467909804032,
"available_bytes": 5922545664,
"total_inodes": 29089792,
"available_inodes": 21448231
},
{
"path": "/var/lib/investmoz-deploy",
"mount": "/dev/md2 / ext4",
"device": 2306,
"total_bytes": 467909804032,
"available_bytes": 5922545664,
"total_inodes": 29089792,
"available_inodes": 21448231
},
{
"path": "/var/backups",
"mount": "/dev/md2 / ext4",
"device": 2306,
"total_bytes": 467909804032,
"available_bytes": 5922545664,
"total_inodes": 29089792,
"available_inodes": 21448231
},
{
"path": "/tmp",
"mount": "/dev/md2 / ext4",
"device": 2306,
"total_bytes": 467909804032,
"available_bytes": 5922545664,
"total_inodes": 29089792,
"available_inodes": 21448231
},
{
"path": "/var/lib/docker",
"mount": "/dev/md2 / ext4",
"device": 2306,
"total_bytes": 467909804032,
"available_bytes": 5922545664,
"total_inodes": 29089792,
"available_inodes": 21448231
}
],
"existing_pipeline_space_guard_excerpt": [
" self.releases.mkdir(parents=True,exist_ok=True)",
" if shutil.disk_usage(self.releases).free < 5 * 1024**3:",
" raise RuntimeError('Insufficient free space for an isolated build; active release preserved')",
" release=self.releases/(target+'-'+uuid.uuid4().hex[:8]);release.mkdir(mode=0o750)"
],
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604",
"L7_delta_hashes_match": {
"resources/js/components/simulation-irpc-normal.tsx": true,
"resources/js/components/simulation-irpc-special.tsx": true,
"resources/js/lib/irpc-normal-depreciation.ts": true,
"resources/js/lib/irpc-normal.ts": true,
"resources/js/lib/irpc-special.ts": true,
"resources/js/lib/project-dossier-report.ts": true
},
"installed_release_nonlinked_files": 28674,
"installed_release_nonlinked_directories": 2503,
"inode_requirement_note": "Current release file/directory counts are an observed reference,not a guarantee for another build;no new inode threshold introduced.",
"prior_installation_backup": {
"created_at": "2026-10-26T10:55:59Z",
"tables": 174,
"files": 369,
"dump_sha256": "a3d46de6c10b37bd6f211125686da8c489f879ab243f082e7b72a397638901f9",
"restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "irpc_l7_restore_20261026",
"port": 55441,
"source_dump_sha256": "a3d46de6c10b37bd6f211125686da8c489f879ab243f082e7b72a397638901f9",
"active_database_writes": 0
},
"files_present": {
"database.dump": {
"present": true,
"bytes": 22880589
},
"files-before.tar.gz": {
"present": true,
"bytes": 153036740
},
"backup-receipt.json": {
"present": true,
"bytes": 94539
},
"restore-receipt.json": {
"present": true,
"bytes": 269
}
}
},
"new_backup_or_restore_executed": false,
"deployment_executed": false,
"cleanup_executed": false,
"active_data_writes": 0
},
"capacity_assessment": {
"mount": "/dev/md2 / ext4",
"existing_pipeline_guard_bytes": 5368709120,
"available_bytes": 5922545664,
"available_inodes": 21448231,
"total_inodes": 29089792,
"same_partition_for_release_state_backup_tmp_docker": true,
"observed_existing_backup_files_bytes": 176012137,
"available_minus_guard_and_one_observed_backup_bytes": 377824407,
"existing_space_guard_plus_observed_backup_satisfied": true,
"inode_reference_files_plus_directories": 31177,
"inode_note": "Available21million vs31thousand entries in current nonlinked release;no new arbitrary threshold or guarantee for changed future payload",
"new_deployment_needed": false
},
"existing_backup_integrity": {
"backup_created_at": "2026-10-26T10:55:59Z",
"existing_dump_hash_matches": true,
"existing_files_archive_hash_matches": true,
"accepted_restore_proof_matches_same_dump": true,
"restored_tables": 174,
"new_backup_or_restore_executed": false,
"active_writes": 0
},
"public_delta": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "e07f89da3d59d06aa1b8c50c22a478b7b167bfdd",
"branch": "main",
"built_at": "2026-10-26T11:02:32.435267+00:00",
"manifest_sha256": "d78a1bdb503c10849f5ea8d8879753653c2c2fc22f6182f6d68ec9f6adf635b5"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"IRPC-normal-adjustments/10": [
"assets/project-dossier-KEyrPtc6.js"
],
"Preparar qualificação L7": [
"assets/services-BSj1SuMk.js"
],
"Despesas — imposto autónomo": [
"assets/project-dossier-KEyrPtc6.js"
],
"Cooperativa — redução da taxa": [
"assets/project-dossier-KEyrPtc6.js"
],
"Amortizações aceleradas": [
"assets/project-dossier-KEyrPtc6.js",
"assets/services-BSj1SuMk.js"
],
"novo ajustamento ao lucro:": [
"assets/project-dossier-KEyrPtc6.js"
],
"colecta combinada:": [
"assets/project-dossier-KEyrPtc6.js"
]
},
"assets": [
{
"file": "assets/project-dossier-KEyrPtc6.js",
"status": 200,
"sha256": "b6ae250a30b5030a6e40e7dfb140a3335ce6d5bc16835098d3d7c5828fc526c5"
},
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
},
{
"file": "assets/services-BSj1SuMk.js",
"status": 200,
"sha256": "ea1a3812cbced72f4df115e8e379ae6d2307e97b2152d288b1c80d357f03f78b"
},
{
"file": "assets/project-dossier-document-BRdhvWgC.js",
"status": 200,
"sha256": "5b1de561be552259de776a2dbaf4b49909a3edd2647fec7c296a96054c929a9f"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-ByAQSjfI.js",
"synthetic_private_writes": 0,
"method": "Read-only L7 revision/manifest/compiled delta/simulator entry;accepted functional proofs reused"
},
"accepted_proofs_reused": {
"QA_frontend_tests": 19,
"QA_API_assertions": 108,
"QA_UI_types_build": true,
"prior_installation_backup_restore_tables": 174,
"prior_installation_files": 369,
"prior_preservation_runtime_files": 50,
"prior_originals": 31,
"new_functional_round": false
},
"next_compatible_QA_scope": {
"status": "delimited_for_next_QA_not_implemented",
"treatment": "CBF16 constant-method depreciation by monthly fractions for supported new assets entering service during2026",
"reuse": [
"existing asset IDs/classification and maximum normal catalogue rates",
"L6 monthly timing/financial source and normal reference result",
"existing qualification/source/title/provenance and versioned book"
],
"first_case": "Civil annual2026,new supported industrial/agroindustrial machine or new project building entering service during the year;documented CBF eligibility,no previous quotas/no other benefits",
"acceptance": [
"normal vs accelerated quota and accounted/fiscal balance caps",
"additional effect only,without second deduction or changes to original asset/history",
"conditions true,false,missing and declared absence",
"calculation-save-recover-report with profit/base/colecta effects and final L8 balance unknown"
],
"out_of_scope": [
"declining method",
"rehabilitated/used/revalued assets",
"recovery of previous quotas",
"cooperative+CBF16 or other benefit combinations",
"unmapped official form fields"
],
"resume_condition": "Link already-demonstrated L6 monthly timing to qualified CBF16 rate increment,retain exact values/caps and prove only new effects in isolated QA;missing project evidence affects that asset only"
},
"remaining_L7_groups_preserved": {
"implementation_groups": 7,
"documentary_case_dependencies": 4,
"section": "saldo concreto de L7 após a primeira entrega agrupada"
},
"L6_operational_scope_and_pending_preserved": true,
"L7_integrally_complete": false,
"L8_final_settlement_separate": true,
"local_cleanup": false,
"SGF_affected": false,
"new_backup_restore_or_installation": false
}
@@ -0,0 +1,309 @@
{
"status": "QA_ready_not_installed",
"date": "2026-10-26",
"branch": "codex/irpc-l7-start-period-qa-20261026",
"installed_baseline": "0bd5d495505d512088887efd3dc5c61f645b1647",
"documentation_baseline": "eccd95f9e79c871b592839aceca5f968440d067d",
"scope": "CBF16:resident start of activity,short complete-month period ending2026-12-31,new supported asset entering inperiod,constant maximum table rate,no priorquotas/exit/cumulation",
"version": "IRPC-normal-adjustments/12",
"explicit_optional_input": "acceleration.monthly.startPeriod version1/reference;without it versions10/11 retain keys/models/history",
"runtime_delta": {
"resources/js/lib/irpc-special.ts": "052bd703cdfd7fbb10ea8089146d5e52ea247d612ce557b1e2c9c20730600261",
"resources/js/lib/irpc-normal.ts": "290d7d66621668d2b684850729c57c0435cce144acf0704f9fd9e1d4a6d491f3",
"resources/js/components/simulation-irpc-special.tsx": "6f6b203062df36fedbdfa341bba8b8aa7796d2f3169f1bd84395ada8f71fd749"
},
"reused_L6_period_fx_and_depreciation_engines_unchanged": true,
"cases_recovered": {
"start": {
"period": {
"from": "2026-07-01",
"to": "2026-12-31",
"pending": []
},
"L6_profit": {
"numerator": "3130",
"denominator": "1"
},
"L6_base": {
"numerator": "3130",
"denominator": "1"
},
"L6_colecta": {
"numerator": "5008",
"denominator": "5"
},
"status": "calculated",
"additional_deduction": {
"numerator": "10",
"denominator": "1"
},
"L7_profit": {
"numerator": "3120",
"denominator": "1"
},
"L7_base": {
"numerator": "3120",
"denominator": "1"
},
"L7_colecta": {
"numerator": "4992",
"denominator": "5"
},
"L8_final": {
"scope": "L8",
"payable": null,
"recoverable": null
}
},
"fraction": {
"period": {
"from": "2026-12-01",
"to": "2026-12-31",
"pending": []
},
"L6_profit": {
"numerator": "1565",
"denominator": "3"
},
"L6_base": {
"numerator": "1565",
"denominator": "3"
},
"L6_colecta": {
"numerator": "2504",
"denominator": "15"
},
"status": "calculated",
"additional_deduction": {
"numerator": "5",
"denominator": "3"
},
"L7_profit": {
"numerator": "520",
"denominator": "1"
},
"L7_base": {
"numerator": "520",
"denominator": "1"
},
"L7_colecta": {
"numerator": "832",
"denominator": "5"
},
"L8_final": {
"scope": "L8",
"payable": null,
"recoverable": null
}
},
"missing": {
"period": {
"from": "2026-07-01",
"to": "2026-12-31",
"pending": []
},
"L6_profit": {
"numerator": "3130",
"denominator": "1"
},
"L6_base": {
"numerator": "3130",
"denominator": "1"
},
"L6_colecta": {
"numerator": "5008",
"denominator": "5"
},
"status": "indeterminate",
"additional_deduction": null,
"L7_profit": null,
"L7_base": null,
"L7_colecta": null,
"L8_final": {
"scope": "L8",
"payable": null,
"recoverable": null
}
},
"negative": {
"period": {
"from": "2026-07-01",
"to": "2026-12-31",
"pending": []
},
"L6_profit": {
"numerator": "3130",
"denominator": "1"
},
"L6_base": {
"numerator": "3130",
"denominator": "1"
},
"L6_colecta": {
"numerator": "5008",
"denominator": "5"
},
"status": "calculated",
"additional_deduction": {
"numerator": "0",
"denominator": "1"
},
"L7_profit": {
"numerator": "3130",
"denominator": "1"
},
"L7_base": {
"numerator": "3130",
"denominator": "1"
},
"L7_colecta": {
"numerator": "5008",
"denominator": "5"
},
"L8_final": {
"scope": "L8",
"payable": null,
"recoverable": null
}
},
"absent": {
"period": {
"from": "2026-07-01",
"to": "2026-12-31",
"pending": []
},
"L6_profit": {
"numerator": "3130",
"denominator": "1"
},
"L6_base": {
"numerator": "3130",
"denominator": "1"
},
"L6_colecta": {
"numerator": "5008",
"denominator": "5"
},
"status": "absent",
"additional_deduction": {
"numerator": "0",
"denominator": "1"
},
"L7_profit": {
"numerator": "3130",
"denominator": "1"
},
"L7_base": {
"numerator": "3130",
"denominator": "1"
},
"L7_colecta": {
"numerator": "5008",
"denominator": "5"
},
"L8_final": {
"scope": "L8",
"payable": null,
"recoverable": null
}
}
},
"checks": {
"new_frontend_tests": 9,
"API_tests": 1,
"API_assertions": 97,
"API_database": "simulator_fiscal_delta_20261021_test",
"API_host": "127.0.0.1",
"API_port": 55441,
"API_transaction_rollback": true,
"wayfinder_with_form": true,
"typescript": true,
"isolated_build": true,
"HTML_financial_dossier_from_5_API_recoveries": true,
"actual_component": {
"actualComponent": true,
"explicitStartOptionAndCancel": true,
"reuseL6PeriodEvidenceExplicit": true,
"assetsAndPeriodUnchanged": true,
"missingPreservesNormal1001_60": true,
"sixActualMonths50Normal75Accelerated60Cap10Additional": true,
"simulatedColecta998_40": true,
"exactFraction5over3": true,
"saveRecoveryDownload": true,
"negativeAbsenceDistinct": true,
"L8FinalUnknown": true,
"errors": []
}
},
"preservation": {
"protected_code_schema_config_routes_contract_files": 584,
"original_files": {
"docs/investmoz/simulations/source-archive/AT-Comunicado-9-2026-ISPC.pdf": "106f8a9ce9255c03549c70bf07fe999d32e6e55302d009b509862aa74ccb4973",
"docs/investmoz/simulations/source-archive/AT-MRFTA-19-39.pdf": "8ea62c53066b482f87078a7a7b1ecf15ca98a12a122e8d7abca63acfc993186b",
"docs/investmoz/simulations/source-archive/AT-Modelo-30-ISPC.pdf": "6802edd06b6ff638a0b851a3ec7ecf69af8f07840faa47446becad67d35d445c",
"docs/investmoz/simulations/source-archive/AT-Modelo-B-Geral.pdf": "bd977c7c59d4d98befd92e2c566b1bf168cb1343bb519f51b41a3807f431fc57",
"docs/investmoz/simulations/source-archive/BM-Mercado-Monetario-MAIBOR-20261025.html": "00e8a7e0d3a1db4ca3beb56d5361b2084a0f1684f3d40fc1c203702a2190e063",
"docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee",
"docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251",
"docs/investmoz/simulations/source-archive/BR-89-I-Serie-2017-06-08.pdf": "11f0cab15eb6e51010952203ffa24fdc533a24fd642e19525fe4f46b17a1f5e5",
"docs/investmoz/simulations/source-archive/BR-95-I-Suplemento-2025-05-21.pdf": "e0e682e2c027c3cd9c1d46a73a3f48bc5f6bdbf05667fd97314d7a3f6a456358",
"docs/investmoz/simulations/source-archive/BR252-I-Serie-2022-Lei20-PESOE.pdf": "1159fd3ce1ba5581671796d083534da48bd3c5578298819e896f1c2a8026318d",
"docs/investmoz/simulations/source-archive/Decreto-22-2021-BR70.pdf": "a8fac38dcfe08f9c7a8e46254cff10e1ec82fc4f7a8d88ad6e4fe7d91ffc21a5",
"docs/investmoz/simulations/source-archive/Decreto-27-2026-BR123.pdf": "26249c3fa58f149c81de36e99d1aac2819a4771379d9e8833159660dabf539bb",
"docs/investmoz/simulations/source-archive/Decreto-29-1998-BR22-5-suplemento.pdf": "6242cbe675faadf085f43f95ec8c7e8868aafe67c3b2ab2bb010992288f954f8",
"docs/investmoz/simulations/source-archive/Decreto-3-2011-BR-11-I-mineiros.pdf": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be",
"docs/investmoz/simulations/source-archive/Decreto-37-2023-BR124.pdf": "7e680b191481faa0e2e9057fa5053587eb2a29d1d8c819e0eb9f02814255a04c",
"docs/investmoz/simulations/source-archive/Decreto-9-2008-BR16.pdf": "96fccdecbfdc11c9eafb90fbc6c7bc259f88bbd4c7507d1ac3af1fa03f960697",
"docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b",
"docs/investmoz/simulations/source-archive/Lei-14-1992-BR42.pdf": "089fff7423e99a70a230a73ca379e4ea3a91d124703f91016e57ff82794b9e56",
"docs/investmoz/simulations/source-archive/Lei-17-2022-BR251-exemplar-MCNet5.pdf": "14eb34f0af91a8f5cb1770c7b52d6ff839c6818302d1ed96d79afbfb9fe999d4",
"docs/investmoz/simulations/source-archive/Lei-17-2022-IPP-BR250-Parlamento.pdf": "978cd22403ffd336a631704ecd7a5bbd814a427c815b9acdaca5515591dd9e2a",
"docs/investmoz/simulations/source-archive/Lei-19-2013-BR76.pdf": "bba96d645cc935ffc3d1a79b9f0f73ac1c693d6459c2ad41f56cd2841accae76",
"docs/investmoz/simulations/source-archive/Lei-19-2017-IRPS-BR-OCAM.pdf": "c3a0186cb9ad090d7a9533006295dc9bb6a62ad0d6150173cbd49dba4ee4b52d",
"docs/investmoz/simulations/source-archive/Lei-2-2011-BR-1-4-suplemento-MCNet.pdf": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899",
"docs/investmoz/simulations/source-archive/Lei-20-2009-BR36-AT-exemplar19.pdf": "fc1c8144db42960cbf73e717e095896f511ece0f907f58f78819b27d6917a7ee",
"docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53",
"docs/investmoz/simulations/source-archive/Lei-34-2007-BR52.pdf": "cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e",
"docs/investmoz/simulations/source-archive/Lei-4-1994-BR37-3-suplemento.pdf": "210df9db8980d0a5690cd187a6eeec7e37a900d743e39062c16f4e0d12215c7e",
"docs/investmoz/simulations/source-archive/Lei-4-2012-BR3.pdf": "b8845cef41dcbd9ba50c43dbfa743a56030dd3d348242a107e1ae30279eec121",
"docs/investmoz/simulations/source-archive/Lei-7-1991-Partidos-IFES.pdf": "6b783a0bb3330688ef10660a58060d9724aa2da6a873d234fe902f0eaaeda42d",
"docs/investmoz/simulations/source-archive/PT-MZ-CDT-1992.pdf": "d504e1024b28aee5c6acf4592acb96ec9c915a8414f67a61ab6984d6acf9df9d",
"docs/investmoz/simulations/source-archive/PT-MZ-Protocolo-2009.pdf": "f353773dcf41f09f4daa6cf5ba5a5f7994f3e02615867c2dcffc61c3d901bf9b"
},
"prior_result_and_entire_history_preserved": true,
"plan_assets_and_other_tax_books_unchanged": true,
"active_migrations": 0,
"active_private_writes": 0,
"SGF_TEMPO_touched": false
},
"sources_reused": [
"CBF3/9/10/16 accepted APIEX compilation pp66-68/72",
"CIRPC7(4) accepted shortperiod implementation",
"Decreto72/2013 art3(3)/9(3),accepted source inventory8143"
],
"remaining_code": [
"other autonomous expense origins/parcels",
"mixed/withheld cooperative income and other CIRPC9-14 entities",
"CBF16 cessation/transition/noncivil/previousquotas/exit/lateryears/lowerquota/othercategories/methods/cumulation",
"capitalgains61-A and specialoperations54-56/41-A",
"CBF17-19 and potential15 entitlement;annualuseL8",
"sector/territorial/specificregimes",
"official L7 M20/M22 transport"
],
"document_conditions": [
"classification/parcels/period evidence",
"statute/recognition required by disposition or exception",
"specific normativeperiod and cumulation order/limits",
"form edition/field/fraction representation"
],
"remote_capacity_before_future_installation": {
"fresh_space_inodes_build_backup_measurement": true,
"main_compatibility_recheck": true,
"fresh_backup_restore": true,
"keep_active_until_ready": true
},
"L6_operational_delimited": true,
"L7_partial": true,
"L8_final_balance_separate": true,
"evidence_directory": "outputs/irpc-l7-start-period"
}
@@ -0,0 +1,535 @@
{
"status": "installed_scoped_MRFTA_documented_interest_delta_verified",
"candidate_installed": "5fa64bc0f4b067e81d8728b344eb8697415ebedf",
"previous_installed": "ce746d889d5711f23f4e0ac8d9802997b5e106f9",
"previous_release_preserved": "/var/www/investmoz-homologacao/releases/ce746d889d5711f23f4e0ac8d9802997b5e106f9-5fdb1b51",
"authorization": "Tempo:concluir entrega5fa64bc0 peloGit,backup/restauro fresco e delta;preservarce746d88,L3,ISPC,câmbio;seguir em QA apenas juros automáticos eCER/rubricas;L5parcial.",
"fresh_backup": {
"stage": "/var/backups/investmoz-irpc-mrfta-delivery-20261025/backup",
"created_at": "2026-10-25T18:28:38Z",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "4721dc593969b542c9cdbd3633e9a71bbd21b2e7a6ecfa2d4c180147a322d841",
"files_sha256": "51ba4c5d214b25bae9123489f9a432289fb41ef118142900e4048b22d5cec9d9",
"restore_verified": false
},
"isolated_restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "irpc_l5_restore_20261025",
"port": 55441,
"source_dump_sha256": "4721dc593969b542c9cdbd3633e9a71bbd21b2e7a6ecfa2d4c180147a322d841",
"active_database_writes": 0
},
"preflight": {
"free_bytes": 5446705152,
"existing_pipeline_minimum_bytes": 5368709120,
"space_guard_satisfied": true,
"installed": {
"status": "installed",
"commit": "ce746d889d5711f23f4e0ac8d9802997b5e106f9",
"release": "/var/www/investmoz-homologacao/releases/ce746d889d5711f23f4e0ac8d9802997b5e106f9-5fdb1b51",
"previous_release": "/var/www/investmoz-homologacao/releases/2b33a1c343d192f80fb24aac2a27b2d375af5601-23fd8416",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/ce746d889d5711f23f4e0ac8d9802997b5e106f9-5fdb1b51",
"release_revision": {
"commit": "ce746d889d5711f23f4e0ac8d9802997b5e106f9",
"branch": "main",
"built_at": "2026-10-25T18:06:03.871601+00:00",
"manifest_sha256": "feb2dce3fc8845c6307c982323b3e3523b333a018189c47488f9fcba25490555"
},
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"configuration_keys": [
"repository",
"branch",
"target_url",
"legacy_root",
"state_root",
"release_root",
"current_link",
"shared_assets",
"php",
"schema_contract",
"ci_environment",
"postgis_image",
"test_database",
"qa_port",
"retention",
"webhook_secret_file"
],
"safe_paths": {
"repository": "nala/Investidor-V2",
"release_root": "/var/www/investmoz-homologacao/releases",
"postgis_image": "postgis/postgis@sha256:01a6a70e41e6c4467c8f55f6063555ed72db2d6662cd0d571040d42eadaeb6f6"
},
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604"
},
"protected_delta": {
"previous_release_preserved": "/var/www/investmoz-homologacao/releases/ce746d889d5711f23f4e0ac8d9802997b5e106f9-5fdb1b51",
"installed": {
"status": "installed",
"commit": "5fa64bc0f4b067e81d8728b344eb8697415ebedf",
"release": "/var/www/investmoz-homologacao/releases/5fa64bc0f4b067e81d8728b344eb8697415ebedf-b08a592f",
"previous_release": "/var/www/investmoz-homologacao/releases/ce746d889d5711f23f4e0ac8d9802997b5e106f9-5fdb1b51",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 4,
"preserved_L3_ISPC_FX_runtime_files_verified": 29,
"documentary_files_verified": 30,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "e0ffe70896abb7ef550be154a6c755c6"
},
"after": {
"rows": 106,
"checksum": "ac75911294e9f6e3aeae2665d0d212b2"
}
},
"sessions": {
"before": {
"rows": 18,
"checksum": "0b7305e61724007da03a5cfd786f14d0"
},
"after": {
"rows": 19,
"checksum": "069206643d7e4e1f788a65e9c9fd3cd3"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"schema_permissions": {
"schema_sha256": "5045b3e51d2185377aa3d9ac7fa07a44fad3ec620cdfa83ffe31c8884ee1601d",
"roles_grants_sha256": "1530c33cb016e67bfdc64891ddfce7f185b13b56b2cd87c012871a685e118109",
"filesystem_permissions": {
".env": {
"mode": 416,
"uid": 1001,
"gid": 33
},
"storage": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"storage/app": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"bootstrap/cache": {
"mode": 1528,
"uid": 1001,
"gid": 33
}
},
"comparison_identity": "postgres;catalogue read only;no passwords collected",
"unchanged": true
},
"operational_delta": {
"status": "operational_delta_reconciled",
"comparison_identity": "postgres before/after;isolated restored baseline;no RLS visibility inference",
"cache": "queue:restart value/expiry and request-throttle counter/timer pair;no deleted cache rows",
"sessions": "anonymous sessions created by exact delivery verification user-agent",
"delta": {
"cache": {
"before_rows": 106,
"after_rows": 106,
"changes": [
{
"key_sha256": "dbb99b7e17f5b4b9bb7a8bdf9350d9b2ae368aaa4bc44593a2522d87617d8461",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-{hash}",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true
},
{
"key_sha256": "c1c7bc86ef3255c103a0be6aeb651b824eb07259e993cc5daf3665c1a6afff2d",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-{hash}:timer",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true
},
{
"key_sha256": "7f7dd83f47f5bf404d55e6e9f1367948721579970b195680645e356031a070ff",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-illuminate:queue:restart",
"is_queue_restart_key": true,
"expiration_unchanged": false,
"throttle_timer_pair": false
}
]
},
"sessions": {
"before_rows": 18,
"after_rows": 21,
"changes": [
{
"key_sha256": "78207abc124e12f093844b879b74b5688a9d83d5816a3dde5ef08a77817039dc",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
},
{
"key_sha256": "163d86a1d136564be2cd032d5f0232442e89cebba612f73b789e0da0fa932290",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
},
{
"key_sha256": "03d1ab44d145b80341139dacf4a8a1f6d9d9b2689880049244ba20926cdab2dd",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
}
]
}
},
"business_tables_to_confirm_separately": 172,
"active_data_writes_by_comparison": 0,
"restore_network": "none"
},
"public_delta": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "5fa64bc0f4b067e81d8728b344eb8697415ebedf",
"branch": "main",
"built_at": "2026-10-25T18:33:01.349237+00:00",
"manifest_sha256": "d1fd6fad9c48cf8c1feedcefbedae5a9b5471f0710894422ff9ae1a1633368a4"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"Preparar e guardar MRFTA": [
"assets/services-Cp_vtFz7.js"
],
"Transcrever liquidação documentada de juros compensatórios": [
"assets/services-Cp_vtFz7.js"
],
"Não são juros calculados pelo portal.": [
"assets/project-dossier-DldGGCX7.js"
],
"CER numérico e referência aplicável por identificar;sem código presumido.": [
"assets/project-dossier-DldGGCX7.js"
],
"Dispensa de retenção": [
"assets/services-Cp_vtFz7.js",
"assets/project-dossier-DldGGCX7.js"
],
"Calcular e guardar apuramento trimestral ISPC": [
"assets/services-Cp_vtFz7.js"
],
"Calcular e guardar restituição E": [
"assets/services-Cp_vtFz7.js"
],
"Reutilizar selecção cambial": [
"assets/services-Cp_vtFz7.js"
]
},
"assets": [
{
"file": "assets/services-Cp_vtFz7.js",
"status": 200,
"sha256": "a7868d6f94fa6ead018f44d0df3900e827bdf2e9ea8cd1ee8db6d55de0db5ca9"
},
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
},
{
"file": "assets/project-dossier-DldGGCX7.js",
"status": 200,
"sha256": "48e31ad3e2de0d0182b5f1abdea98b9db1283a20667e63c7cd910327e923ae4c"
},
{
"file": "assets/project-dossier-document-BUtxzH85.js",
"status": 200,
"sha256": "d3b7d7907a2fdf6bce247ed43a115d9d3c104882331d41e8975a894c49ccfb23"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-CfQbzHq7.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"runtime_delta": [
{
"path": "resources/js/lib/irpc-mrfta.ts",
"sha256_LF": "1ff1725724dbdaaa9a3857941d03e312c6a7da573d369ee86015edc90cd2d0d1"
},
{
"path": "resources/js/lib/irpc-withholdings.ts",
"sha256_LF": "8e5f3c035ce5e4d6c3fc82f933439ab580fa5519492f9c4d32cfb71b77b54803"
},
{
"path": "resources/js/components/simulation-irpc-mrfta.tsx",
"sha256_LF": "9cf7d5e447e1a9ed37d1bd24b4ac5104b1adec3790ff8db4356c3b68b339d89a"
},
{
"path": "resources/js/components/simulation-irpc-withholdings.tsx",
"sha256_LF": "751af4fab346659bc5ccb08b8a2169769af7521ea0035050af32b41ea7f5aa76"
}
],
"preserved_runtime": [
{
"path": "resources/js/components/acquisition-beverage-restitution.tsx",
"sha256": "6f44897b8b12569314551df0022c26da57a165634087942a724293e66837558d"
},
{
"path": "resources/js/components/fiscal-calculation-gaps.tsx",
"sha256": "1dab6ceb73756d4e023096b3b2ba767aaa843ff6cc69046ea630ab449a00b0dd"
},
{
"path": "resources/js/components/fiscal-l3-preparation.tsx",
"sha256": "e84a7b1ccadaa1b5bd78d778a3287f96ccaf530855eef404786cd7aa3d321b73"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256": "c206d4cfe575d6ba007aa2b425b5f898efa97e4162b8710e358b6ecfd9458542"
},
{
"path": "resources/js/components/simulation-operations.tsx",
"sha256": "a7e55972fa790063dcf11945055de2af46a77db9e509900af22ede7ec47bb4cf"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256": "b0ef55e0917bdb79f14b53ba9e95d73c08153befeb7d4ce73f81e6fb13992225"
},
{
"path": "resources/js/lib/iva-beverage-allocation.ts",
"sha256": "32968d198c7fe0c53ca89641c22d5749be6636be2c79127b867e4e3afd0dd40d"
},
{
"path": "resources/js/lib/iva-beverage-restitution.ts",
"sha256": "5c650cbd9469d5f99001f56fc4ff99ac973eb368036d4e96c6d171f1b220bd9e"
},
{
"path": "resources/js/lib/iva-calculation-gaps.ts",
"sha256": "2e7d84a0c196bd5b56fd67cc1a389d43d5041894184e675680a4de3cd10b31a2"
},
{
"path": "resources/js/lib/iva-operations.ts",
"sha256": "ec37b949f1233c5f5c14a87450c421ed29fabf1ed5b73fb32564564a2bc31f54"
},
{
"path": "resources/js/lib/l3-form-preparation.ts",
"sha256": "fc47f5fa5ec1420fbd847d0d081f00d99ebbb524164eef785b20877e0562f704"
},
{
"path": "resources/js/lib/ispc-residuals.ts",
"sha256": "40d5751c06c7c155ab4b7a17ee2d1653da2fbbf075807fbb8561cdbe19820955"
},
{
"path": "resources/js/components/simulation-ispc-residuals.tsx",
"sha256": "a9219d6f41ccbd0ce45659d4f6aa0fa1c169a685840f5cb1e18daeca377d5e18"
},
{
"path": "resources/js/lib/ispc-eligibility.ts",
"sha256": "44675c5efacdc1ae19505667611ba3b522d3043cebacc8754597c3a68ca89d25"
},
{
"path": "resources/js/components/simulation-ispc-quarter.tsx",
"sha256": "2c2555309b32d4261f14e7164f39314c9188129c2990357fc54090a2468dd2b4"
},
{
"path": "resources/js/components/simulation-ispc-withholding.tsx",
"sha256": "e0445d015b72859e48726959aa52686f79b1cf5c2ade29751efa83257068b878"
},
{
"path": "resources/js/lib/ispc-quarter.ts",
"sha256": "f66bd52e9cdfe1ddaa6b00a931465862b3d890b9be216b7a056740f027f24129"
},
{
"path": "resources/js/lib/ispc-withholding.ts",
"sha256": "6c31b240299edd3262efa28f7f3d5aee21123f94e30ef4ab90e26c35777cb6e4"
},
{
"path": "resources/js/components/simulation-ispc-eligibility.tsx",
"sha256": "f48dd4a8f87a994eda0447f81a463589905e5873b2e1044debac9d10825a880c"
},
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256": "cce283b1d0a07fb383fcb527225f4dd5bec829010a662cbaae1d60e595221977"
},
{
"path": "resources/js/lib/iva-modelo-a.ts",
"sha256": "c641619a05613c1620385baad0e9ffbf810dd970aafb30e12b3a7f9a3bf11846"
},
{
"path": "resources/js/lib/iva-fx-selection.ts",
"sha256": "9aa07ad443bc777b80510a3b5bd6aff9ddb9814d2450f3c690e531e74d71d998"
},
{
"path": "resources/js/components/simulation-fx-selection.tsx",
"sha256": "39bb6d87d404745b0b66349bc11626545a3672ae27321ce9b4658416592059bf"
},
{
"path": "resources/js/lib/business-financial-plan.ts",
"sha256": "c20274722d1ffcd0360f041a6cacb5d868fe0621cb27a1aca6e06826612c3ebb"
},
{
"path": "resources/js/lib/iva-currency-events.ts",
"sha256": "cc9f2045d302d7987310da4006cc250fc5c99a27397918d166d649bfc32fab08"
},
{
"path": "resources/js/lib/irpc-fx.ts",
"sha256": "5c4a7a477429f8d775acf6db3e117008468f5554e5731dec81f60fbb75e948fb"
},
{
"path": "resources/js/components/simulation-form.tsx",
"sha256": "01d20f4761933a3e4dd7c776bd4adcf9610ac0435d918a1998ae9f0c3ce3f234"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256": "df8b224b9472449711d0b69a873fa75f9cc9f4d84dce1a314fc576fae9c6eae2"
},
{
"path": "resources/js/lib/project-dossier-report.ts",
"sha256": "4523365e2d4a2fcd014e13393deb33a5ec4b9396ff580d8a237aa8c4f02265e4"
}
],
"accepted_QA_proofs_reused": {
"frontend": "12 new tests+1 directed existing IRPC presentation test passed",
"types": "tsc --noEmit exit0",
"build": "complete QA build exit0",
"private_api": "1test/14assertions;DatabaseTransactions rollback;127.0.0.1:55441/simulator_fiscal_delta_20261021_test",
"dossier": "generated from actual private API recovered model",
"UI": {
"calculation": true,
"localSaveRecovery": true,
"privateApiProof": "IrpcMrftaDraftTest, separate",
"report": true,
"documentedInterest": true,
"insufficientInformation": true,
"download": true,
"errors": []
},
"CER_example": "999 is explicitly fictional QA data,not an official recipe-code mapping",
"unchanged_proofs": "AcceptedL3/ISPC/FX and ce746d88 calculation proofs reused;no manual repeat suites"
},
"installer_report": {
"status": "installed",
"commit": "5fa64bc0f4b067e81d8728b344eb8697415ebedf",
"release": "/var/www/investmoz-homologacao/releases/5fa64bc0f4b067e81d8728b344eb8697415ebedf-b08a592f",
"previous_release": "/var/www/investmoz-homologacao/releases/ce746d889d5711f23f4e0ac8d9802997b5e106f9-5fdb1b51",
"database_migrations": 0,
"content_imports": 0,
"requested_commits": [
"5fa64bc0f4b067e81d8728b344eb8697415ebedf"
],
"finished_at": "2026-10-25T18:33:04.381640+00:00"
},
"remaining_only_two_points": {
"juros": {
"entregue": "Transcrição de liquidação de juros compensatórios, com montante/data/período/documento; ou ausência de atraso demonstrada por entrega integral e prazo documentado. Nenhuma taxa aplicada pelo motor para calcular juros.",
"resta": [
"Corresponder fonte, parâmetro/taxa e versão temporal aplicáveis ao cálculo automático dos juros da retenção; a referência MAIBOR12meses+2p.p. e a descontinuidade documentada não autorizam escolher MIMO/Prime como substituto.",
"Delimitar, na mesma operação, início/fim da contagem, natureza por conta/definitiva, base em dívida após entregas parciais, regra diária e arredondamento; distinguir compensatórios e mora sem cumulação presumida.",
"Implementar apenas os casos com regra completa e provar o novo delta: atraso com entrega integral/parcial, mudança de parâmetro se aplicável e dados/taxa ausentes. Reutilizar transcrição, persistência e relatórios já demonstrados."
],
"condicao_de_fecho": "Cálculo reproduzível do caso suportado com fonte/versão, principal, taxa, dias e juros discriminados; sem parâmetro aplicável, juros continuam indeterminados e o principal mantém-se disponível.",
"nao_reabrir": [
"Registo de juros documentados",
"Conferência de entrega integral no prazo documentado",
"Gravação/recuperação/histórico/relatório já demonstrados"
]
},
"cer_rubricas": {
"entregue": "Rubricas correntes correspondidas pelo rendimento e natureza; CER transcrito com referência. Ausência de CER, rubrica desconhecida e mistura de taxas/CER ficam pendentes. CER999 é exclusivamente fictício de QA.",
"resta": [
"Corresponder códigos CER a rubrica, natureza, rendimento e período com o catálogo/modelo/procedimento oficial aplicável; os números dos campos da guia antiga não são códigos CER por inferência.",
"Resolver apenas as rubricas ainda pendentes: digital/moeda electrónica, categorias especiais e outros rendimentos sem correspondência actual, incluindo casos por conta que não cabem nas rubricas já mapeadas.",
"Corresponder o tratamento de taxas/CER diferentes na mesma rubrica: conservar parcelas e documentos; não fundir taxas, calcular taxa média ou criar declarações/anexos por presunção.",
"Acrescentar casos dirigidos para cada nova correspondência e para código ausente, período incompatível ou rubrica desconhecida, mantendo casos independentes e cálculos anteriores."
],
"condicao_de_fecho": "Cada novo caso liga rendimento/natureza/período ao CER e à rubrica com referência verificável e apresentação correcta; o catálogo parcial nunca implica cobertura integral.",
"nao_reabrir": [
"Preparação de um mês/ano",
"Bases/taxas/imposto/entregas provenientes do cálculo guardado",
"Separação de dispensas, retenções sofridas e outros períodos",
"Exportação HTML e dossier demonstrados"
]
}
},
"database_migrations": 0,
"content_imports": 0,
"L5_integrally_completed": false,
"scope": "Period preparation,documentedinterestrecord andMRFTA reports only;notautomaticinterestnorcompleteCERmapping. Nexttwo-pointincrement staysQA.",
"evidence": {
"backup.txt": "151cbb1c3c4954da4679a9a2e54ba636afbd2e5c4b228f68ad4c236ae30663eb",
"installed-protected.txt": "32cff2aff1e1d7148af22820a8136267364efe3b4ede9cac3f7790f8f29bca5a",
"installed-public.txt": "82a8ae2b9113b83212f2b030abc537e1975d86b5597ed9385c67438f7d636549",
"integration.txt": "130dc00f5fafda21e09bfbfd1f934d630c03732127a60f21df69d075176950ae",
"operational-delta.txt": "e9c29d6e9691fb44f30eccc3041dfa3455905e6d5eb01410b8b898fcdf1f2f25",
"preflight.txt": "c87ceda50c49b392d55fd624bef9cc1f37cec9c1b888e4fded8c64d4b76ab60a",
"restore.txt": "d103daf999311fc6e6fd0a20f0b07162200ce5a14f1ad558f00be2fcb30d5943",
"schema-permissions-after.txt": "76b5a4d8af11e4898a205062766cfb7ab6ec0783200e77e60a1927aa1ca18597",
"schema-permissions-before.txt": "0ab7c964792acdd8917bce256c472e55e034b103500a58b49f020b5084823ed7",
"status1.txt": "f14354ab7188e19bf1188ec9ad9ed7d3834fac3996412cbda1d7436a418804fd",
"status2.txt": "a6fc5285be3f927ee0b1d882ae25f246d2026f0fe3b77d176e402ace6cf39b02",
"status3.txt": "193ef46c35707af20292cca967902aa265f90bfc1336189ea6e61b6dbb6cc9c9"
}
}
@@ -0,0 +1,397 @@
{
"status": "installed_scoped_habitual_quarterly_ISPC_and_delta_verified",
"authorization": "Tempo25/10:concluir instalação6af7092e peloGit combackup/restaurofresco,conferirdelta,preservarL3eprovasaceites;ISPCnãoéintegralmenteconcluído.",
"candidate_installed": "6af7092e83b9b3932712aa7a9f527393fcec4da8",
"previous_installed": "fa32a2b9e127da9c4d764dd99ef58ee43b770aa6",
"prepared_receipt": "ispc-l4-prepared-delivery-20261025.json",
"authenticated_preflight": {
"free_bytes": 7635865600,
"existing_pipeline_minimum_bytes": 5368709120,
"space_guard_satisfied": true,
"installed": {
"status": "installed",
"commit": "fa32a2b9e127da9c4d764dd99ef58ee43b770aa6",
"release": "/var/www/investmoz-homologacao/releases/fa32a2b9e127da9c4d764dd99ef58ee43b770aa6-ad33eeab",
"previous_release": "/var/www/investmoz-homologacao/releases/7ad187f9f0745245268e3ed5317547a96b4700f3-066618f1",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/fa32a2b9e127da9c4d764dd99ef58ee43b770aa6-ad33eeab",
"release_revision": {
"commit": "fa32a2b9e127da9c4d764dd99ef58ee43b770aa6",
"branch": "main",
"built_at": "2026-10-25T15:12:37.806036+00:00",
"manifest_sha256": "cddac25dc66b3e555f2380cf3a9d4b2da6501cd03927c183c832a05b0ee5c993"
},
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"configuration_keys": [
"repository",
"branch",
"target_url",
"legacy_root",
"state_root",
"release_root",
"current_link",
"shared_assets",
"php",
"schema_contract",
"ci_environment",
"postgis_image",
"test_database",
"qa_port",
"retention",
"webhook_secret_file"
],
"safe_paths": {
"repository": "nala/Investidor-V2",
"release_root": "/var/www/investmoz-homologacao/releases",
"postgis_image": "postgis/postgis@sha256:01a6a70e41e6c4467c8f55f6063555ed72db2d6662cd0d571040d42eadaeb6f6"
},
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604"
},
"fresh_backup": {
"stage": "/var/backups/investmoz-ispc-l4-delivery-20261025/backup",
"created_at": "2026-10-25T15:25:16Z",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "77ba24736ff574d9273845359db90d1a032ff0f39d7f9195efaeff842d5b5857",
"files_sha256": "59917d3f0420dc8ede0562da70ae5f67877aa99f77313950f9e1d840b7505e3b",
"restore_verified": false
},
"isolated_restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "ispc_l4_restore_20261025",
"port": 55441,
"source_dump_sha256": "77ba24736ff574d9273845359db90d1a032ff0f39d7f9195efaeff842d5b5857",
"active_database_writes": 0
},
"installed_protected_delta": {
"installed": {
"status": "installed",
"commit": "6af7092e83b9b3932712aa7a9f527393fcec4da8",
"release": "/var/www/investmoz-homologacao/releases/6af7092e83b9b3932712aa7a9f527393fcec4da8-647c8e2e",
"previous_release": "/var/www/investmoz-homologacao/releases/fa32a2b9e127da9c4d764dd99ef58ee43b770aa6-ad33eeab",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 9,
"L3_unchanged_runtime_files_verified": 11,
"documentary_files_verified": 17,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "81ca74112a72e3638ad335678ebfd0ef"
},
"after": {
"rows": 106,
"checksum": "e799b80b260c8c23326c72a5d7c52881"
}
},
"sessions": {
"before": {
"rows": 156,
"checksum": "5b29e80e2877c2e0bf0c81e046230987"
},
"after": {
"rows": 157,
"checksum": "e83a47d5ba184b55f1680f52ff7e0993"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"operational_delta": {
"status": "operational_delta_reconciled",
"comparison_identity": "postgres before/after;isolated restored baseline;no RLS visibility inference",
"cache": "queue:restart value/expiry and request-throttle counter/timer pair;no deleted cache rows",
"sessions": "anonymous sessions created by exact delivery verification user-agent",
"delta": {
"cache": {
"before_rows": 106,
"after_rows": 106,
"changes": [
{
"key_sha256": "8d6ea77eb4b34d86d207362d583cfa8bf2880b907becd9b00398964482c6b4bd",
"kind": "updated",
"fields": [
"expiration"
],
"key_pattern": "investemoz-cache-{hash}",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true
},
{
"key_sha256": "2f251473865d14b953236ab95b1521764754d76abd79b58ca7d38c96dfe2fab1",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-{hash}:timer",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true
},
{
"key_sha256": "7f7dd83f47f5bf404d55e6e9f1367948721579970b195680645e356031a070ff",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-illuminate:queue:restart",
"is_queue_restart_key": true,
"expiration_unchanged": false,
"throttle_timer_pair": false
}
]
},
"sessions": {
"before_rows": 156,
"after_rows": 159,
"changes": [
{
"key_sha256": "5045187d392f685b58ae0ce1749c84eb5a30c5ab441aa0e65cfc6d905d0180fa",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
},
{
"key_sha256": "3d45feddb6a0eafd7d40e3efe516866803e4432d922c6a6b6e839276d8461075",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
},
{
"key_sha256": "712b82ddcfb6f6af6a4ea5937ae2d5195976cf4c808e6202a4b234eef1560210",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
}
]
}
},
"business_tables_to_confirm_separately": 172,
"active_data_writes_by_comparison": 0,
"restore_network": "none"
},
"installed_public": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "6af7092e83b9b3932712aa7a9f527393fcec4da8",
"branch": "main",
"built_at": "2026-10-25T15:29:39.962545+00:00",
"manifest_sha256": "0761702f0aa0f54dd4e7dac14efadf290830c52a5762a97733d82f5332fb44a8"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"ISPC — enquadramento e opção": [
"assets/services-tj9wihZS.js"
],
"ISPC — apuramento trimestral": [
"assets/services-tj9wihZS.js"
],
"ISPC — retenção em aquisições ocasionais": [
"assets/services-tj9wihZS.js"
],
"Calcular e guardar apuramento trimestral ISPC": [
"assets/services-tj9wihZS.js"
],
"Conferir e guardar retenção ISPC": [
"assets/services-tj9wihZS.js"
],
"Repartição do IVA documental em MZN": [
"assets/services-tj9wihZS.js"
],
"Reconciliação da dedução anterior": [
"assets/services-tj9wihZS.js"
],
"Cálculos indeterminados e condições para resolver": [
"assets/services-tj9wihZS.js"
],
"Preparação dos quadros L3 e formalidades": [
"assets/services-tj9wihZS.js"
],
"Calcular e guardar restituição E": [
"assets/services-tj9wihZS.js"
],
"Calcular e guardar acompanhamento D": [
"assets/services-tj9wihZS.js"
],
"Calcular e guardar substituições C": [
"assets/services-tj9wihZS.js"
]
},
"assets": [
{
"file": "assets/project-dossier-document-DlW49dDv.js",
"status": 200,
"sha256": "7002e22485098102c9a49e6f637a8818a4ecb153cf58f9c9cfb377e1b8a3d5a0"
},
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
},
{
"file": "assets/project-dossier-B9kwzlsI.js",
"status": 200,
"sha256": "c2b62654e0a286c0dfb16a44f3aac513064c8db305cccc827388de35cc6c720f"
},
{
"file": "assets/services-tj9wihZS.js",
"status": 200,
"sha256": "9e88d806f7c8e7193dda407ba1efe8bf720e5eeb76ca40798f3e6c4914e57f4b"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-CkfkH6Xv.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"pipeline_status": {
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"installed": {
"status": "installed",
"commit": "6af7092e83b9b3932712aa7a9f527393fcec4da8",
"release": "/var/www/investmoz-homologacao/releases/6af7092e83b9b3932712aa7a9f527393fcec4da8-647c8e2e",
"previous_release": "/var/www/investmoz-homologacao/releases/fa32a2b9e127da9c4d764dd99ef58ee43b770aa6-ad33eeab",
"database_migrations": 0,
"content_imports": 0
},
"latest_report": {
"status": "installed",
"commit": "6af7092e83b9b3932712aa7a9f527393fcec4da8",
"release": "/var/www/investmoz-homologacao/releases/6af7092e83b9b3932712aa7a9f527393fcec4da8-647c8e2e",
"previous_release": "/var/www/investmoz-homologacao/releases/fa32a2b9e127da9c4d764dd99ef58ee43b770aa6-ad33eeab",
"database_migrations": 0,
"content_imports": 0,
"requested_commits": [
"6af7092e83b9b3932712aa7a9f527393fcec4da8"
],
"finished_at": "2026-10-25T15:29:42.957691+00:00"
},
"log_file": "1792941995601985924.log",
"summaries": [
"OK (1 test, 3106 assertions)",
"built in 31.63s",
"OK (59 tests, 317 assertions)",
"# tests 782",
"# pass 782",
"# fail 0"
],
"log_bytes": 227445
},
"archived_old_build_dependencies": {
"status": "dependencies_archived_and_verified",
"versions": 8,
"free_before": 5531414528,
"free_after": 7635984384,
"receipt": "/var/backups/investmoz-build-dependencies-ispc-l4-20261025/receipt.json",
"protected": [
"/var/www/investmoz-homologacao/releases/fa32a2b9e127da9c4d764dd99ef58ee43b770aa6-ad33eeab",
"/var/www/investmoz-homologacao/releases/7ad187f9f0745245268e3ed5317547a96b4700f3-066618f1"
],
"active_or_previous_release_modified": false,
"source_data_backups_deleted": 0
},
"accepted_QA_proofs_reused": {
"prior_proofs": "L4-A12testes eL1/L2/L3/P001não repetidos;inventário eaceitações reutilizados",
"new_frontend": "13distinctpassed:10quarter/3withholding;frontend-final.txt",
"private_API": "1test/21assertions passed;loopback55441/simulator_fiscal_delta_20261021_test,DatabaseTransactions rollback;otheraccount404;api.txt",
"UI": "Componentesreais:avaliar/opçãoguardada→calcular→guardarficheiroQA→recuperar→relatório;persistênciaprivadaconferidaemAPIseparadamente;ui-recovered-report.txt/png",
"report_fix": "GrupoISPCmapeadoàsecçãofinanceira;testeactualdoexportadorincluiimposto/opção;ausênciaidentificadanademonstraçãoecorrigidaantesdeconcluir.",
"types": "exit0;types-final.txt",
"build": "exit0;build-final.txt",
"inventory": "outputs/ispc-l4b-20261025/preservation-before-tests.json;reutiliza8143ficheirosinventariadoseL1fechados"
},
"manual_functional_tests_repeated": false,
"pipeline_checks": "Existing Git process mandatory checks only;no new discretionary functional round.",
"example": {
"context": "opportunity:375;SYNTHETIC QA",
"option": "documentada2026-01-01",
"quarter": "2026/T2",
"prior_turnover_MZN": "100000",
"quarter_base_MZN": "200000",
"rate_percent": 12,
"tax_MZN": "24000",
"payment_MZN": "24000",
"declaration": "mantida",
"other_fiscal_books": "exactamente preservados"
},
"remaining_L4_specific": [
"Operações ocasionais próprias3(3–4)enquanto sujeito passivo,distintas da retenção do adquirente;mantidas indeterminadas no percurso específico.",
"Aquisições acima limiteglobal2.500.000:correspondência do tratamento próprio;nãoliquidar5%porpresunção.",
"Formulário/modelo,instruções eprocedimentos da regulamentação2026;relatório depreparação não édeclaraçãosubmetida. Aviso primário do Governo confirma aprovação de novo regulamento,mas não contém articulado/modelos: https://portaldogoverno.gov.mz/governo-introduz-alteracoes-nos-regulamentos-fiscais-para-reforcar-eficiencia-tributaria/ . Sem impor segunda validação jurídica ou repetir pesquisa sem nova evidência."
],
"L3": "Preserved;11runtimehashes,17originals and additive integrations verified. Specific residuals remain in existing matrix.",
"preserved_L3_amounts": {
"documentary_VAT_MZN": 16,
"deduction_this_route_MZN": 0,
"recognised_MZN": 12,
"received_MZN": 7,
"awaiting_receipt_MZN": 5
},
"residuals": "P001/P058awaitdefinedclarificationswithoutblocking;P084/P085closed;statistics/AIdeferred.",
"schema_migrations": 0,
"content_imports": 0,
"ISPC_integrally_completed": false,
"proof_hashes": {
"outputs/ispc-l4-delivery-20261025/preflight.txt": "985e4cabc9f4f80ee55f89aa9a20580c1bc3b691225241165b01cc66ba4b5d19",
"outputs/ispc-l4-delivery-20261025/backup.txt": "23f72466038eed5153c93408e5acd508b5c6a66fc0e4c3a9bd30a580367fe8ea",
"outputs/ispc-l4-delivery-20261025/restore.txt": "d0100e1378c2e0e8a4be61de640e0e331695721080bae16d8a7a708cf4d4eb83",
"outputs/ispc-l4-delivery-20261025/integration.txt": "d92b419bd0c57c7951d558039e1414acca4ec2abc47e5a9d2f2389b1401adf7c",
"outputs/ispc-l4-delivery-20261025/status-final.txt": "638710d6205b634b8ab8f8cf625ee308fb76c4fe7c21608130d2b79afba60e0c",
"outputs/ispc-l4-delivery-20261025/installed-protected.txt": "83231f0b6619828618188e7abb9337f6b5e92e4192f7e5a8bbf165f7d2b70a44",
"outputs/ispc-l4-delivery-20261025/installed-public-delta.json": "7b944512bd87b5fa99e83e554247f1567c5629481b2dcdf668b411f118849aa2",
"outputs/ispc-l4-delivery-20261025/operational-delta.txt": "e79fc1267ac6f06e0f2fe78a9ed00eb0cfc05b1ec1ab7bec92c61268e4acbd93",
"outputs/ispc-l4-delivery-20261025/compact-dependencies.txt": "236ebb16564acf706dd434186b20013b9c035dd201f5f728ebcaf1e3813e2053"
}
}
@@ -0,0 +1,285 @@
{
"status": "prepared_for_Git_delivery_not_installed",
"authorization": "Tempo25/10:preparar entrega do âmbito L4 trimestral habitual demonstrado em6af7092e;conferir apenas delta,preservarL3;sem declararL4integralmenteconcluído.",
"installed_baseline": "fa32a2b9e127da9c4d764dd99ef58ee43b770aa6",
"candidate": "6af7092e83b9b3932712aa7a9f527393fcec4da8",
"branch": "codex/ispc-l4-quarterly-qa-20261025",
"changes": [
"docs/investmoz/simulations/integrated-review-continuation-20261020-receipt.json",
"docs/investmoz/simulations/ispc-l4-quarterly-qa-20261025.json",
"docs/investmoz/simulations/ispc-l4a-eligibility-qa-20261025.json",
"docs/investmoz/simulations/l3-additional-delivery-20261025.json",
"docs/investmoz/simulations/l3-e-additional-coverage-qa-20261025.json",
"docs/investmoz/unification/traceability-and-manual.md",
"docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv",
"resources/js/components/simulation-form.tsx",
"resources/js/components/simulation-ispc-eligibility.tsx",
"resources/js/components/simulation-ispc-quarter.tsx",
"resources/js/components/simulation-ispc-withholding.tsx",
"resources/js/lib/ispc-eligibility.ts",
"resources/js/lib/ispc-quarter.ts",
"resources/js/lib/ispc-withholding.ts",
"resources/js/lib/project-dossier-report.ts",
"resources/js/lib/project-dossier.ts",
"tests/Feature/IspcQuarterDraftTest.php",
"tests/frontend/fixtures/ispc-quarter-preserved.json",
"tests/frontend/ispc-eligibility.test.mjs",
"tests/frontend/ispc-quarter.test.mjs",
"tests/frontend/ispc-withholding.test.mjs"
],
"runtime_delta": [
{
"path": "resources/js/components/simulation-form.tsx",
"sha256_LF": "606e6e29f92323450433e8411b2064ba5f55b795a3376794ad1eb30729841c3c"
},
{
"path": "resources/js/components/simulation-ispc-eligibility.tsx",
"sha256_LF": "f48dd4a8f87a994eda0447f81a463589905e5873b2e1044debac9d10825a880c"
},
{
"path": "resources/js/components/simulation-ispc-quarter.tsx",
"sha256_LF": "0b950091e9204b2b20823694ea16dc94e4863914080542253966367a5580d62d"
},
{
"path": "resources/js/components/simulation-ispc-withholding.tsx",
"sha256_LF": "e688a8d6a2e1e20c1e10a85d33152d58a5c14867672cf4ffb834980ec1732f08"
},
{
"path": "resources/js/lib/ispc-eligibility.ts",
"sha256_LF": "d8c3ab8b2687af905d3048db192b690fa6d49ab693ff58f2e8f57f76dfb4a1fb"
},
{
"path": "resources/js/lib/ispc-quarter.ts",
"sha256_LF": "f66bd52e9cdfe1ddaa6b00a931465862b3d890b9be216b7a056740f027f24129"
},
{
"path": "resources/js/lib/ispc-withholding.ts",
"sha256_LF": "6c31b240299edd3262efa28f7f3d5aee21123f94e30ef4ab90e26c35777cb6e4"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "a24e0484f558580c14c4a261de66db8d245ffccf9c6fe17b6d639e9e2cbbe3c2"
},
{
"path": "resources/js/lib/project-dossier-report.ts",
"sha256_LF": "0db9f5fcb2929fd8340894bd13b74ee7c400af25e483ddfe5651002fd7160f49"
}
],
"existing_integrations_additions_only": {
"resources/js/components/simulation-form.tsx": 6,
"resources/js/lib/project-dossier.ts": 6,
"resources/js/lib/project-dossier-report.ts": 1
},
"L3_runtime_preserved_unchanged": [
"resources/js/components/acquisition-beverage-restitution.tsx",
"resources/js/components/fiscal-calculation-gaps.tsx",
"resources/js/components/fiscal-l3-preparation.tsx",
"resources/js/components/simulation-acquisitions.tsx",
"resources/js/components/simulation-operations.tsx",
"resources/js/lib/iva-acquisition-bc.ts",
"resources/js/lib/iva-beverage-allocation.ts",
"resources/js/lib/iva-beverage-restitution.ts",
"resources/js/lib/iva-calculation-gaps.ts",
"resources/js/lib/iva-operations.ts",
"resources/js/lib/l3-form-preparation.ts"
],
"L3_documentary_originals_preserved": 17,
"documentary_delta": [
{
"path": "docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf",
"sha256": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-89-I-Serie-2017-06-08.pdf",
"sha256": "11f0cab15eb6e51010952203ffa24fdc533a24fd642e19525fe4f46b17a1f5e5"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-95-I-Suplemento-2025-05-21.pdf",
"sha256": "e0e682e2c027c3cd9c1d46a73a3f48bc5f6bdbf05667fd97314d7a3f6a456358"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-22-2021-BR70.pdf",
"sha256": "a8fac38dcfe08f9c7a8e46254cff10e1ec82fc4f7a8d88ad6e4fe7d91ffc21a5"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-27-2026-BR123.pdf",
"sha256": "26249c3fa58f149c81de36e99d1aac2819a4771379d9e8833159660dabf539bb"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-29-1998-BR22-5-suplemento.pdf",
"sha256": "6242cbe675faadf085f43f95ec8c7e8868aafe67c3b2ab2bb010992288f954f8"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-3-2011-BR-11-I-mineiros.pdf",
"sha256": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-37-2023-BR124.pdf",
"sha256": "7e680b191481faa0e2e9057fa5053587eb2a29d1d8c819e0eb9f02814255a04c"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf",
"sha256": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-14-1992-BR42.pdf",
"sha256": "089fff7423e99a70a230a73ca379e4ea3a91d124703f91016e57ff82794b9e56"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-BR251-exemplar-MCNet5.pdf",
"sha256": "14eb34f0af91a8f5cb1770c7b52d6ff839c6818302d1ed96d79afbfb9fe999d4"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-IPP-BR250-Parlamento.pdf",
"sha256": "978cd22403ffd336a631704ecd7a5bbd814a427c815b9acdaca5515591dd9e2a"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-2-2011-BR-1-4-suplemento-MCNet.pdf",
"sha256": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf",
"sha256": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-1994-BR37-3-suplemento.pdf",
"sha256": "210df9db8980d0a5690cd187a6eeec7e37a900d743e39062c16f4e0d12215c7e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-7-1991-Partidos-IFES.pdf",
"sha256": "6b783a0bb3330688ef10660a58060d9724aa2da6a873d234fe902f0eaaeda42d"
}
],
"schema_runtime_PHP_configuration_dependencies_delta": false,
"P001_experimental_changes_excluded": true,
"accepted_QA_proofs_reused": {
"prior_proofs": "L4-A12testes eL1/L2/L3/P001não repetidos;inventário eaceitações reutilizados",
"new_frontend": "13distinctpassed:10quarter/3withholding;frontend-final.txt",
"private_API": "1test/21assertions passed;loopback55441/simulator_fiscal_delta_20261021_test,DatabaseTransactions rollback;otheraccount404;api.txt",
"UI": "Componentesreais:avaliar/opçãoguardada→calcular→guardarficheiroQA→recuperar→relatório;persistênciaprivadaconferidaemAPIseparadamente;ui-recovered-report.txt/png",
"report_fix": "GrupoISPCmapeadoàsecçãofinanceira;testeactualdoexportadorincluiimposto/opção;ausênciaidentificadanademonstraçãoecorrigidaantesdeconcluir.",
"types": "exit0;types-final.txt",
"build": "exit0;build-final.txt",
"inventory": "outputs/ispc-l4b-20261025/preservation-before-tests.json;reutiliza8143ficheirosinventariadoseL1fechados"
},
"accepted_proof_hashes_verified": {
"outputs/ispc-l4b-20261025/frontend-final.txt": "2b0ec25bb83505ec9ce8ace02e0860faeeac4ce233083859f9a502069944f49f",
"outputs/ispc-l4b-20261025/api.txt": "2a770d07561a1475973795d5bac01ce5d94ee8a91be1d57d9b0702c621b8284d",
"outputs/ispc-l4b-20261025/ui-recovered-report.txt": "234bae0f17ef84dd9928197bfa38ad4a8a05c2dae18051e1ea9bd88852bb84fa",
"outputs/ispc-l4b-20261025/build-final.txt": "9683e783fd6e457c89a747d4a1a6deb10ba00a034f7891cf69e4c1a0cb1f0073",
"outputs/ispc-l4b-20261025/types-final.txt": "5346ac8a6566c1c38cb0bbda6a029579df58cd78af78e2c4845d9c82b5d1d76c",
"tests/frontend/fixtures/ispc-quarter-preserved.json": "30266584de9cacb0e4d771a9cc9c38838b62a3472583792e13effcd094247c39"
},
"compatible_build_and_types": "Already passed on identical runtime hashes;proofs reused,no rerun.",
"compiled_markers": {
"ISPC — enquadramento e opção": [
"assets/services-tj9wihZS.js"
],
"ISPC — apuramento trimestral": [
"assets/services-tj9wihZS.js"
],
"ISPC — retenção em aquisições ocasionais": [
"assets/services-tj9wihZS.js"
],
"Calcular e guardar apuramento trimestral ISPC": [
"assets/services-tj9wihZS.js"
],
"Conferir e guardar retenção ISPC": [
"assets/services-tj9wihZS.js"
],
"Repartição do IVA documental em MZN": [
"assets/services-tj9wihZS.js"
],
"Reconciliação da dedução anterior": [
"assets/services-tj9wihZS.js"
],
"Cálculos indeterminados e condições para resolver": [
"assets/services-tj9wihZS.js"
],
"Preparação dos quadros L3 e formalidades": [
"assets/services-tj9wihZS.js"
],
"Calcular e guardar restituição E": [
"assets/services-tj9wihZS.js"
],
"Calcular e guardar acompanhamento D": [
"assets/services-tj9wihZS.js"
],
"Calcular e guardar substituições C": [
"assets/services-tj9wihZS.js"
]
},
"public_baseline_readonly": {
"commit": "fa32a2b9e127da9c4d764dd99ef58ee43b770aa6",
"branch": "main",
"built_at": "2026-10-25T15:12:37.806036+00:00",
"manifest_sha256": "cddac25dc66b3e555f2380cf3a9d4b2da6501cd03927c183c832a05b0ee5c993"
},
"examples": {
"context": "opportunity:375;SYNTHETIC QA",
"option": "documentada2026-01-01",
"quarter": "2026/T2",
"prior_turnover_MZN": "100000",
"quarter_base_MZN": "200000",
"rate_percent": 12,
"tax_MZN": "24000",
"payment_MZN": "24000",
"declaration": "mantida",
"other_fiscal_books": "exactamente preservados"
},
"remaining_L4_specific": [
"Operações ocasionais próprias3(3–4)enquanto sujeito passivo,distintas da retenção do adquirente;mantidas indeterminadas no percurso específico.",
"Aquisições acima limiteglobal2.500.000:correspondência do tratamento próprio;nãoliquidar5%porpresunção.",
"Formulário/modelo,instruções eprocedimentos da regulamentação2026;relatório depreparação não édeclaraçãosubmetida. Aviso primário do Governo confirma aprovação de novo regulamento,mas não contém articulado/modelos: https://portaldogoverno.gov.mz/governo-introduz-alteracoes-nos-regulamentos-fiscais-para-reforcar-eficiencia-tributaria/ . Sem impor segunda validação jurídica ou repetir pesquisa sem nova evidência."
],
"preserved_amounts_L3": {
"documentary_VAT_MZN": 16,
"deduction_this_route_MZN": 0,
"recognised_MZN": 12,
"received_MZN": 7,
"awaiting_receipt_MZN": 5
},
"residuals": "P001/P058awaitdefinedclarificationswithoutblocking;P084/P085closed;L3residualsremaininexistingmatrix;statistics/AIdeferred.",
"execution_remaining": [
"Fresh authenticated destination/schema/data/configuration/permissions and disk comparison.",
"Fresh backup and verified isolated restore,without modifying active database.",
"Fast-forward integration via existing Git process only after guards pass;verify servedrevision,manifest,compiled L4/L3 markers and protected delta with equivalent identities/context."
],
"backup_restore": "Not executed in preparation;prior L3 receipt preserved,not represented as fresh L4 backup.",
"main_changed": false,
"active_changes": false,
"Git_preparation": {
"feature_ref": "refs/heads/codex/ispc-l4-quarterly-qa-20261025",
"remote_verified": {
"refs/heads/codex/ispc-l4-quarterly-qa-20261025": "6af7092e83b9b3932712aa7a9f527393fcec4da8",
"refs/heads/main": "fa32a2b9e127da9c4d764dd99ef58ee43b770aa6"
},
"bundle": "outputs/ispc-l4-delivery-20261025/candidate.bundle",
"bundle_sha256": "2d1b690ffbca0cdcc2365d2f5c8cf9f4d34a3e64f9cb5bd4fa2ce23835143c4d",
"bundle_verified": true,
"main_pushed": false
},
"execution_scripts": {
"outputs/ispc-l4-delivery-20261025/backup.py": "f82ee71b83527e2e3b431f88aa24deb0433308f4c15a2873779068a21785c99d",
"outputs/ispc-l4-delivery-20261025/bridge.py": "b12bb51e68c0c3270ac9d127d20aaf69c04745837fb06788e9e1d37a623e3487",
"outputs/ispc-l4-delivery-20261025/installer-status.py": "47cf71d02bbbac76bdf8edf87ab9b69b88d6c610d4b1755e1da69060af8b02cf",
"outputs/ispc-l4-delivery-20261025/integrate-after-guards.py": "b2146ae221af4fa5f26f3a16ba7de22eb3d35fed2ff9b606f49065b0a9524171",
"outputs/ispc-l4-delivery-20261025/preflight.py": "d22ae1370f261cce91201830f39833d03019df5110be8aa5a9eccdfd639de55c",
"outputs/ispc-l4-delivery-20261025/reconcile-operational-delta.py": "d2e2ab7093594ab667b03f76ef7620120d7fd580e22edeb335b3c5c208493cd0",
"outputs/ispc-l4-delivery-20261025/restore.py": "51c03e0e590f3ad8d795334e67140f6de7c594fe52fb5ee9098b2da8bc508a3b",
"outputs/ispc-l4-delivery-20261025/verify-protected.py": "5acdb275e6bd5de5237000f8a8a27234f9d00be4bf1cd1cf71ecf24bc0a7f415",
"outputs/ispc-l4-delivery-20261025/verify-public.py": "e31052548421a2095d23435a716c34086542992fda3ede04f6ae3cd1d24f291b"
},
"execution_script_checks": "Python syntax checked;not executed against active target. Authenticated baseline,fresh backup/isolatedrestore andtimestamp guards prepared;disk comparison pending at execution.",
"guard_origins": {
"base_and_scope": "DecisãoTempo:preservarL3fa32 eentregar apenas âmbitoQA6af.",
"disk_5_GiB": "Requisito técnico do processo de entrega já existente;conferido no código emexecuçãoL3,sem criar regra organizacional.",
"backup_freshness_30_minutes": "Escolha técnica do script de integração;expiração exige actualizar preflight/backup-restauro,sem nova aprovação organizacional."
},
"superseded_by": "ispc-l4-delivery-20261025.json",
"installation_followup": "6af7092e83b9b3932712aa7a9f527393fcec4da8"
}
@@ -0,0 +1,102 @@
{
"status": "installed_scoped_habitual_quarterly_ISPC",
"matrix_anchor": "AUD-SIM-INT02",
"scope": "Actividade habitual ISPC2026/MZN, enquadramento/opção, cálculo trimestral e retenção12(3–4) delimitada. Não é encerramento de operações ocasionais próprias ou formalidades sem correspondência de modelo.",
"source": {
"file": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251",
"citation": "Lei9/2025,republicaçãoISPC,arts8–12;PDF11/p2180(11),enquadramento2–5PDF10",
"application": "8(1)a selecciona taxa3/4/5 pelo volume anual2026 declarado e9 aplica-a à base trimestral; não repartir limites anuais por4 nem copiar acesso2025. Serviços12/15; cumulação usa taxa maior8(2).20%somenteparcela acima limite anual4.000.000 com acumulado anterior; cálculos racionais exactos."
},
"new_implementation": [
"Livro trimestral por contexto; receitas de cada trimestre e suporte explícitos,volume global do sujeito passivo confirmado; previsão anual distinta de ano encerrado reconciliado.",
"Elegibilidade actual e opção documentada reutilizadas; preparação apenas simula; opção posterior ao trimestre não retroage automaticamente.",
"Imposto/prestação/obrigação declarativa separados; inferior500 dispensa pagamento, não declaração;igual500 mantém pagamento. Não acumular dispensas nem deduzir custos/IVA.",
"Retenção5%separada para aquisições ocasionais a pessoa singular não inscrita3(3–4),ligadasàactividade,limiteglobalanual2.500.000;acima limiteindeterminado,semtruncar. Sem crédito contraimpostopróprio,mínimo500não aplicadoàretenção.",
"Gravação/recuperação mantém outros livros e históricos;alterações conservam resultado congelado até nova versão;relatório financeiro inclui grupoISPC."
],
"verification": {
"prior_proofs": "L4-A12testes eL1/L2/L3/P001não repetidos;inventário eaceitações reutilizados",
"new_frontend": "13distinctpassed:10quarter/3withholding;frontend-final.txt",
"private_API": "1test/21assertions passed;loopback55441/simulator_fiscal_delta_20261021_test,DatabaseTransactions rollback;otheraccount404;api.txt",
"UI": "Componentesreais:avaliar/opçãoguardada→calcular→guardarficheiroQA→recuperar→relatório;persistênciaprivadaconferidaemAPIseparadamente;ui-recovered-report.txt/png",
"report_fix": "GrupoISPCmapeadoàsecçãofinanceira;testeactualdoexportadorincluiimposto/opção;ausênciaidentificadanademonstraçãoecorrigidaantesdeconcluir.",
"types": "exit0;types-final.txt",
"build": "exit0;build-final.txt",
"inventory": "outputs/ispc-l4b-20261025/preservation-before-tests.json;reutiliza8143ficheirosinventariadoseL1fechados"
},
"example": {
"context": "opportunity:375;SYNTHETIC QA",
"option": "documentada2026-01-01",
"quarter": "2026/T2",
"prior_turnover_MZN": "100000",
"quarter_base_MZN": "200000",
"rate_percent": 12,
"tax_MZN": "24000",
"payment_MZN": "24000",
"declaration": "mantida",
"other_fiscal_books": "exactamente preservados"
},
"remaining_specific": [
"Operações ocasionais próprias3(3–4)enquanto sujeito passivo,distintas da retenção do adquirente;mantidas indeterminadas no percurso específico.",
"Aquisições acima limiteglobal2.500.000:correspondência do tratamento próprio;nãoliquidar5%porpresunção.",
"Formulário/modelo,instruções eprocedimentos da regulamentação2026;relatório depreparação não édeclaraçãosubmetida. Aviso primário do Governo confirma aprovação de novo regulamento,mas não contém articulado/modelos: https://portaldogoverno.gov.mz/governo-introduz-alteracoes-nos-regulamentos-fiscais-para-reforcar-eficiencia-tributaria/ . Sem impor segunda validação jurídica ou repetir pesquisa sem nova evidência."
],
"active_changes": false,
"schema_changes": false,
"rules_published_or_activated": 0,
"residuals": "P001/P058nãointerrompem;P084/P085fechados;L3residuaisapenasbloqueiamcasosdependentes;estatísticas/IAadiadas.",
"runtime_hashes": {
"resources/js/lib/ispc-quarter.ts": "f66bd52e9cdfe1ddaa6b00a931465862b3d890b9be216b7a056740f027f24129",
"resources/js/lib/ispc-withholding.ts": "6c31b240299edd3262efa28f7f3d5aee21123f94e30ef4ab90e26c35777cb6e4",
"resources/js/components/simulation-ispc-quarter.tsx": "0b950091e9204b2b20823694ea16dc94e4863914080542253966367a5580d62d",
"resources/js/components/simulation-ispc-withholding.tsx": "e688a8d6a2e1e20c1e10a85d33152d58a5c14867672cf4ffb834980ec1732f08",
"resources/js/lib/project-dossier-report.ts": "0db9f5fcb2929fd8340894bd13b74ee7c400af25e483ddfe5651002fd7160f49"
},
"proof_hashes": {
"outputs/ispc-l4b-20261025/frontend-final.txt": "2b0ec25bb83505ec9ce8ace02e0860faeeac4ce233083859f9a502069944f49f",
"outputs/ispc-l4b-20261025/api.txt": "2a770d07561a1475973795d5bac01ce5d94ee8a91be1d57d9b0702c621b8284d",
"outputs/ispc-l4b-20261025/ui-recovered-report.txt": "234bae0f17ef84dd9928197bfa38ad4a8a05c2dae18051e1ea9bd88852bb84fa",
"outputs/ispc-l4b-20261025/build-final.txt": "9683e783fd6e457c89a747d4a1a6deb10ba00a034f7891cf69e4c1a0cb1f0073",
"outputs/ispc-l4b-20261025/types-final.txt": "5346ac8a6566c1c38cb0bbda6a029579df58cd78af78e2c4845d9c82b5d1d76c",
"tests/frontend/fixtures/ispc-quarter-preserved.json": "30266584de9cacb0e4d771a9cc9c38838b62a3472583792e13effcd094247c39"
},
"compatible_QA_preparation": {
"branch": "codex/ispc-l4-quarterly-qa-20261025",
"path": "C:\\laragon\\www\\portal-investidor-ispc-qa-20261025",
"base": "fa32a2b9",
"runtime_files": [
"resources/js/components/simulation-form.tsx",
"resources/js/components/simulation-ispc-eligibility.tsx",
"resources/js/components/simulation-ispc-quarter.tsx",
"resources/js/components/simulation-ispc-withholding.tsx",
"resources/js/lib/ispc-eligibility.ts",
"resources/js/lib/ispc-quarter.ts",
"resources/js/lib/ispc-withholding.ts",
"resources/js/lib/project-dossier.ts",
"resources/js/lib/project-dossier-report.ts"
],
"runtime_hashes_match_accepted_QA": true,
"P001_runtime": "fa32a2b9 unchanged; experimental d1551dab runtime excluded",
"compatible_build": "exit0;outputs/ispc-l4b-20261025/compatible-build.txt",
"compatible_types": "exit0;outputs/ispc-l4b-20261025/compatible-types.txt",
"functional_proofs": "13frontend/API1-21/UIreport reused; no new functional round",
"installed": true,
"functional_source_commits": [
"479b6681",
"1b7ccfee"
],
"candidate_commit": "6af7092e83b9b3932712aa7a9f527393fcec4da8",
"functional_candidate_commit": "49b448eb47df9ded3f906996e36c1d5ebd855741",
"installed_at_preparation": false,
"installed_commit": "6af7092e83b9b3932712aa7a9f527393fcec4da8"
},
"QA_status_before_delivery": "QA_demonstrated_eligibility_option_quarter_calculation_private_recovery_and_report_not_installed",
"installation_followup_20261025": {
"status": "installed_scoped_habitual_quarterly",
"commit": "6af7092e83b9b3932712aa7a9f527393fcec4da8",
"receipt": "ispc-l4-delivery-20261025.json",
"QA_proofs": "preserved;no manual repetition",
"ISPC_integrally_completed": false
}
}
@@ -0,0 +1,50 @@
{
"status": "QA_partial_eligibility_and_separate_option_not_installed",
"matrix_anchor": "AUD-SIM-INT02",
"authorization": "Tempo25/10: preparar entrega compatível L3, reconciliar saldo e avançar L4 ISPC; P001 residual não bloqueia trabalho independente.",
"source": {
"path": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251",
"law": "Lei9/2025, republicação ISPC; arts2–5,9-A/13; PDF10–11; vigência2026art6/PDF9",
"acceptance": "Fonte oficial aceite pela Tempo; sem segunda validação de proveniência ou aprovação genérica Fiscalista."
},
"scope": [
"Condições preliminares de acesso habitual em2026/MZN; pessoa,actividade nacional,volume anterior2025 ou previsão de início2026,contabilidade obrigatória e exclusões3(2).",
"Limite4.000.000 inclusivo; desconhecido permanece indeterminado e não vira zero; operação ocasional tem percurso próprio ainda não implementado.",
"Serviços liberais8(1)c:183dias versus184 à mesma entidade; não aplicar esta exclusão aos serviços8(1)b.",
"Opção separada de elegibilidade; seleccionarISPC não adopta regime nem alteraIVA/IRPS/IRPC.",
"Reutilização de perfil com diferenças e confirmação; nenhuma inferência de categoria,volume anual anterior ou opção a partir de vendas correntes.",
"Livro por contexto no snapshot existente; preserva mapas fiscais,histórico e resultados congelados; relatório do dossier inclui enquadramento e opção."
],
"verification": {
"inventory_before_tests": "outputs/ispc-l4a-20261025/preservation-before-tests.json",
"new_frontend_tests": 12,
"frontend_result": "12 passed/0failed; outputs/ispc-l4a-20261025/frontend.txt",
"types": "exit0;outputs/ispc-l4a-20261025/types.txt",
"build": "exit0;outputs/ispc-l4a-20261025/build.txt",
"persistence": "serialização/recuperação e preservação dos livros/históricos cobertas nos novos testes; transporte privado existente reutilizado,sem nova rondaAPI",
"UI": "componente integrado;sem demonstração visual nova nesta passagem",
"synthetic_fixture": "outputs/ispc-l4a-20261025/calculated.json; não importada no activo"
},
"remaining_L4": [
"Apuramento trimestral e aplicação dos escalões3/4/5%,serviços12%,liberal15%,excesso20% e actividades mistas8; identificar correspondência exacta anual/trimestral antes do cálculo.",
"Mínimo trimestral500 e obrigação declarativa; retenção5% nas aquisições ocasionais próprias,limite2.500.000 e modelo; sem reutilizar taxa deIVA.",
"Percurso ocasional3(3–4),formalidades,modelos e prazos do regulamento aplicável; conferir apenas correspondências concretas necessárias,sem nova validação genérica.",
"Demonstração visual integrada e gravação privada deste incremento antes de propor entregaL4."
],
"preserved": {
"L1": "131entregues;P001residual;P058parcial com exclusões",
"P084_P085": "fechados no âmbito operacional Tempo;sem pesquisa",
"L3": "candidata0f4df8a4 preparada,não instalada;saldo próprio não encerraL3",
"E_original": "16MZN documental/zero dedução nesta via/12 reconhecidos/7recebidos/5porreceber",
"statistics_AI": "adiadas"
},
"active_changes": false,
"schema_changes": false,
"runtime_hashes": {
"resources/js/lib/ispc-eligibility.ts": "1828cb2d696a6bd852078fc3f1cf90a6649c1f3a0df5bec0a72ac1d1f175b2eb",
"resources/js/components/simulation-ispc-eligibility.tsx": "38ebe2b2fd340e269ba6fdeec96f0d39d0594892b9cb968ec094b2c165346b42",
"resources/js/components/simulation-form.tsx": "5090175a3fee965795fb47ac7f673c5aafc3641c25d323be0be631178afae775",
"resources/js/lib/project-dossier.ts": "de70672560162ef94f1e5429f70c2466a8347e73b2d800da013c7c50e480091c"
}
}
@@ -0,0 +1,479 @@
{
"schema_permissions_comparison": {
"schema_sha256": "5045b3e51d2185377aa3d9ac7fa07a44fad3ec620cdfa83ffe31c8884ee1601d",
"roles_grants_sha256": "1530c33cb016e67bfdc64891ddfce7f185b13b56b2cd87c012871a685e118109",
"filesystem_permissions": {
".env": {
"mode": 416,
"uid": 1001,
"gid": 33
},
"storage": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"storage/app": {
"mode": 1533,
"uid": 1001,
"gid": 33
},
"bootstrap/cache": {
"mode": 1528,
"uid": 1001,
"gid": 33
}
},
"comparison_identity": "postgres;catalogue read only;no passwords collected",
"unchanged": true
},
"status": "installed_grouped_ISPC_residual_delta_verified",
"authorization": "Tempo: deliver grouped residual delta through Git with fresh backup/restore and delta verification; preserve habitual6af and L3; not full IRPS/ISPC completion.",
"candidate_installed": "5c0cb25cea7826811c389b55a64bcdf5e43b937f",
"previous_installed": "6af7092e83b9b3932712aa7a9f527393fcec4da8",
"fresh_backup": {
"stage": "/var/backups/investmoz-ispc-residual-delivery-20261025/backup",
"created_at": "2026-10-25T16:20:55Z",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "027d5dfdd06b317c9b480b1673b1b55b91cfb222f2720d039d62801733773cfe",
"files_sha256": "1857e41142879c97b0166277546dc01880326dbe832e5520a871cfbf19796d41",
"restore_verified": false
},
"isolated_restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "ispc_residual_restore_20261025",
"port": 55441,
"source_dump_sha256": "027d5dfdd06b317c9b480b1673b1b55b91cfb222f2720d039d62801733773cfe",
"active_database_writes": 0
},
"authenticated_preflight": {
"free_bytes": 6490124288,
"existing_pipeline_minimum_bytes": 5368709120,
"space_guard_satisfied": true,
"installed": {
"status": "installed",
"commit": "6af7092e83b9b3932712aa7a9f527393fcec4da8",
"release": "/var/www/investmoz-homologacao/releases/6af7092e83b9b3932712aa7a9f527393fcec4da8-647c8e2e",
"previous_release": "/var/www/investmoz-homologacao/releases/fa32a2b9e127da9c4d764dd99ef58ee43b770aa6-ad33eeab",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/6af7092e83b9b3932712aa7a9f527393fcec4da8-647c8e2e",
"release_revision": {
"commit": "6af7092e83b9b3932712aa7a9f527393fcec4da8",
"branch": "main",
"built_at": "2026-10-25T15:29:39.962545+00:00",
"manifest_sha256": "0761702f0aa0f54dd4e7dac14efadf290830c52a5762a97733d82f5332fb44a8"
},
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"configuration_keys": [
"repository",
"branch",
"target_url",
"legacy_root",
"state_root",
"release_root",
"current_link",
"shared_assets",
"php",
"schema_contract",
"ci_environment",
"postgis_image",
"test_database",
"qa_port",
"retention",
"webhook_secret_file"
],
"safe_paths": {
"repository": "nala/Investidor-V2",
"release_root": "/var/www/investmoz-homologacao/releases",
"postgis_image": "postgis/postgis@sha256:01a6a70e41e6c4467c8f55f6063555ed72db2d6662cd0d571040d42eadaeb6f6"
},
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604"
},
"installed_protected_delta": {
"installed": {
"status": "installed",
"commit": "5c0cb25cea7826811c389b55a64bcdf5e43b937f",
"release": "/var/www/investmoz-homologacao/releases/5c0cb25cea7826811c389b55a64bcdf5e43b937f-32c4fd00",
"previous_release": "/var/www/investmoz-homologacao/releases/6af7092e83b9b3932712aa7a9f527393fcec4da8-647c8e2e",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 7,
"L3_unchanged_runtime_files_verified": 16,
"documentary_files_verified": 21,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "22eb03056dae006c1c92badee23e6109"
},
"after": {
"rows": 106,
"checksum": "eec58e1179f9023ab578cd1401bca5de"
}
},
"sessions": {
"before": {
"rows": 9,
"checksum": "cc0d72daaa3994d422a41cc7c84a5f60"
},
"after": {
"rows": 10,
"checksum": "98394985102c0779844faa9d537a7b53"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"installed_public": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "5c0cb25cea7826811c389b55a64bcdf5e43b937f",
"branch": "main",
"built_at": "2026-10-25T16:24:27.707113+00:00",
"manifest_sha256": "385a289f9ba26a632aa0164fbba3913cc8dc2fb891641881fc8d2dcda1951626"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"Calcular e guardar operações ocasionais": [
"assets/services-Cvwv29Mo.js"
],
"Calcular e guardar parcela excedente": [
"assets/services-Cvwv29Mo.js"
],
"Preparar e guardar campos B–Geral": [
"assets/services-Cvwv29Mo.js"
],
"Descarregar preparação B–Geral": [
"assets/services-Cvwv29Mo.js"
],
"Calcular e guardar apuramento trimestral ISPC": [
"assets/services-Cvwv29Mo.js"
],
"Calcular e guardar restituição E": [
"assets/services-Cvwv29Mo.js"
],
"Calcular e guardar acompanhamento D": [
"assets/services-Cvwv29Mo.js"
],
"Calcular e guardar substituições C": [
"assets/services-Cvwv29Mo.js"
]
},
"assets": [
{
"file": "assets/services-Cvwv29Mo.js",
"status": 200,
"sha256": "aa51139b6509bd66927a578e88cd115f497f80f9ae6406d6fb84db7df858340c"
},
{
"file": "assets/project-dossier-BJrlh6zA.js",
"status": 200,
"sha256": "e800e5bd5bcbb18cb417db0796c9c3e85600fd65c79b9808577148c4805eb3dc"
},
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
},
{
"file": "assets/project-dossier-document-kUHwyL01.js",
"status": 200,
"sha256": "575c47d1ad13193cabc84b43fe555551fba677fb617f57c0f7445dc2d0409f98"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-DmFRsc4U.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"operational_delta": {
"status": "operational_delta_reconciled",
"comparison_identity": "postgres before/after;isolated restored baseline;no RLS visibility inference",
"cache": "queue:restart value/expiry and request-throttle counter/timer pair;no deleted cache rows",
"sessions": "anonymous sessions created by exact delivery verification user-agent",
"delta": {
"cache": {
"before_rows": 106,
"after_rows": 106,
"changes": [
{
"key_sha256": "8d6ea77eb4b34d86d207362d583cfa8bf2880b907becd9b00398964482c6b4bd",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-{hash}",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true
},
{
"key_sha256": "2f251473865d14b953236ab95b1521764754d76abd79b58ca7d38c96dfe2fab1",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-{hash}:timer",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true
},
{
"key_sha256": "7f7dd83f47f5bf404d55e6e9f1367948721579970b195680645e356031a070ff",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-illuminate:queue:restart",
"is_queue_restart_key": true,
"expiration_unchanged": false,
"throttle_timer_pair": false
}
]
},
"sessions": {
"before_rows": 9,
"after_rows": 12,
"changes": [
{
"key_sha256": "b7fa07a8ea67586994a66f15ffcc4d1a0df81fbe07dc8ade44bfdba20db30651",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
},
{
"key_sha256": "eb22f458a6354ff34d4e80ede2a4c9f3a81c4fa1be35f34fae1dc8d9f20dc294",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
},
{
"key_sha256": "4a0a44f3b0a78e66a5aac0587d8474f21e26cc91018361267b795afcbea203a2",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
}
]
}
},
"business_tables_to_confirm_separately": 172,
"active_data_writes_by_comparison": 0,
"restore_network": "none"
},
"pipeline_status": {
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"installed": {
"status": "installed",
"commit": "5c0cb25cea7826811c389b55a64bcdf5e43b937f",
"release": "/var/www/investmoz-homologacao/releases/5c0cb25cea7826811c389b55a64bcdf5e43b937f-32c4fd00",
"previous_release": "/var/www/investmoz-homologacao/releases/6af7092e83b9b3932712aa7a9f527393fcec4da8-647c8e2e",
"database_migrations": 0,
"content_imports": 0
},
"latest_report": {
"status": "installed",
"commit": "5c0cb25cea7826811c389b55a64bcdf5e43b937f",
"release": "/var/www/investmoz-homologacao/releases/5c0cb25cea7826811c389b55a64bcdf5e43b937f-32c4fd00",
"previous_release": "/var/www/investmoz-homologacao/releases/6af7092e83b9b3932712aa7a9f527393fcec4da8-647c8e2e",
"database_migrations": 0,
"content_imports": 0,
"requested_commits": [
"5c0cb25cea7826811c389b55a64bcdf5e43b937f"
],
"finished_at": "2026-10-25T16:24:30.738299+00:00"
},
"log_file": "1792945281843706519.log",
"summaries": [
"OK (1 test, 3106 assertions)",
"built in 29.13s",
"OK (59 tests, 317 assertions)",
"# tests 801",
"# pass 801",
"# fail 0"
],
"log_bytes": 231911
},
"runtime_delta": [
{
"path": "resources/js/lib/ispc-residuals.ts",
"sha256_LF": "40d5751c06c7c155ab4b7a17ee2d1653da2fbbf075807fbb8561cdbe19820955"
},
{
"path": "resources/js/components/simulation-ispc-residuals.tsx",
"sha256_LF": "a9219d6f41ccbd0ce45659d4f6aa0fa1c169a685840f5cb1e18daeca377d5e18"
},
{
"path": "resources/js/components/simulation-form.tsx",
"sha256_LF": "07f7d0d73993ffc2924f1b9b2d21cbc53fb7c95aab959c0820fd7dbc35a1fffa"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "beca4eebd3959afa520061f231de25d064723537bd98deb541712ab448eba369"
},
{
"path": "resources/js/lib/ispc-eligibility.ts",
"sha256_LF": "44675c5efacdc1ae19505667611ba3b522d3043cebacc8754597c3a68ca89d25"
},
{
"path": "resources/js/components/simulation-ispc-quarter.tsx",
"sha256_LF": "2c2555309b32d4261f14e7164f39314c9188129c2990357fc54090a2468dd2b4"
},
{
"path": "resources/js/components/simulation-ispc-withholding.tsx",
"sha256_LF": "e0445d015b72859e48726959aa52686f79b1cf5c2ade29751efa83257068b878"
}
],
"accepted_QA_proofs_reused": {
"preservation_before_tests": "outputs/ispc-residuals-20261025/preservation-before-tests.json",
"new_frontend_distinct": 19,
"frontend_proofs": [
"frontend-final.txt:14passed",
"directed-final.txt:1additionalpass",
"directed-retention-form.txt:1additionalpass",
"directed-known-exclusions.txt:1additionalpass",
"directed-dispensation-form.txt:1additionalpass",
"directed-liberatory-history.txt:1additionalpass"
],
"API": "1test/22assertionspassed;QAloopback55441/simulator_fiscal_delta_20261021_test;DatabaseTransactionsrollback;APP_BASE_PATHcandidateexplicit",
"UI": "Vendedor376/adquirente375separados;3000/5000/20000/25000;guardar→recuperar→relatório;B–Geralpreparadodescarregado;visibilidadeapenasdascondiçõesafectadasverificada",
"UI_proofs": [
"ui-own-report.txt",
"ui-acquisition-report.txt",
"ui-occasional-applicability.txt",
"ui-regular-applicability.txt",
"preparation.html"
],
"types": "exit0;types-final.txt",
"build": "exit0;build-final.txt",
"habitual_re_evaluation": "not repeated;arithmetic engines unchanged;24000snapshotpreservedexactly;onlyconditionalvisibilitydeltaexamined"
},
"manual_functional_tests_repeated": false,
"pipeline_checks": "Mandatory existing Git pipeline checks only.",
"available": [
"Operações ocasionais próprias no âmbito demonstrado, sem segunda prestação sobre retenção liberatória documentada.",
"Parcela excedente no caso IRPS qualificado demonstrado; sem taxa automática para outros enquadramentos.",
"Preparação/exportação B–Geral com documentos e histórico."
],
"remaining_calculations": [
{
"item": "Juros compensatórios",
"state": "montante documentado pode ser conservado;fórmula ainda não implementada",
"needed": "regra/taxa/base/período/dias efectivamente aplicáveis,no documento/instrução correspondente;sem zero ou taxa presumidos"
},
{
"item": "Outros enquadramentos da parcela excedente",
"state": "sem fórmula genérica;casos diferentes do acto isolado qualificado não recebem taxa automática",
"needed": "natureza,regime do fornecedor,opção aplicável,base e suporte concretos;encaminhar para o cálculo próprio quando for outro regime,não bloquear o caso positivo implementado"
}
],
"remaining_formal_correspondences_instructions": [
{
"item": "Quadro2doB–Geral",
"needed": "correspondência concreta do mês/ano a inscrever para o trimestre;comunicado fornece meses de pagamento,que não são copiados automaticamente para período"
},
{
"item": "Dispensa inferior500MZN noB–Geral",
"needed": "Representação declarativa do imposto apurado com prestação dispensada10-A;sem preencher montanteapurado comozero porpresunção. O cálculo imposto/prestação jáestá implementado."
},
{
"item": "Entrega de retenções",
"needed": "modelo/código/instrução próprios12(3)ISPCe57(2k)IRPS;B–Geraldeapoio nãoéapresentadocomocorrespondênciacompletadestasretenções"
},
{
"item": "Regulamentação2026/instruções de envio de facturas",
"needed": "texto/exemplar/instrução concreta quando disponibilizado;comunicado transitório já implementado,não se mantém pesquisa genérica como aprovação adicional"
},
{
"item": "Submissão e pagamento",
"needed": "actos externos e comprovativos reais;nenhuma operaçãoATfoiexecutadaemQA"
}
],
"external_to_portal": "Actos da AT: exportação não equivale a submissão, recepção, aceitação ou pagamento.",
"ISPC_integrally_completed": false,
"IRPS_integrally_completed": false,
"schema_migrations": 0,
"content_imports": 0,
"preserved_L3_amounts_MZN": {
"documentary": 16,
"deduction_this_route": 0,
"recognised": 12,
"received": 7,
"awaiting": 5
},
"residuals": "L3residuals in existing matrix;P001/P058 nonblocking;P084/P085 closed;statistics/AI deferred.",
"proof_hashes": {
"outputs/ispc-residual-delivery-20261025/backup.txt": "2c5838cda547495dee6ac3acc1971457b4d6a34399766c142e13501ac16fac61",
"outputs/ispc-residual-delivery-20261025/installed-protected.txt": "95a376d4970744f3a0f02757870968f989d87b3549f6aa841676ddf38df4bddf",
"outputs/ispc-residual-delivery-20261025/installed-public-delta.json": "f092efaeb3091d3fc345ab2979a5f3fa3ee8ed644d05175e45f393fb78910ac7",
"outputs/ispc-residual-delivery-20261025/installed-public.txt": "88facda241ab71035c481c9cc2d4a21c0c2fe5eb4d703d88ffa8557c7602dcb3",
"outputs/ispc-residual-delivery-20261025/integration.txt": "52d05eed26351310f897d3b647c605e6fdb0b7d6a570487ff6f7b8a3c11287ed",
"outputs/ispc-residual-delivery-20261025/manifest-served.json": "385a289f9ba26a632aa0164fbba3913cc8dc2fb891641881fc8d2dcda1951626",
"outputs/ispc-residual-delivery-20261025/operational-delta.txt": "7ba0c56bd9395003f7b384683ee106d00dfa500d98ce61e45d5057548e9451dc",
"outputs/ispc-residual-delivery-20261025/preflight.txt": "f05ba4c7c5e636da470a6aeb63332d5a673807d2493213df98ef016acef0770d",
"outputs/ispc-residual-delivery-20261025/preparation.json": "49e3ade28b69afddb94cf3076964c8bf61197ae201d4eecb9b1619962c9f8a2d",
"outputs/ispc-residual-delivery-20261025/progress.txt": "db8b637be9106ed97abbca2ccef38729509a47f2ee006784e2f6f0a0a485bd87",
"outputs/ispc-residual-delivery-20261025/restore.txt": "093b66c345788125f01f02aa93867812a3587107515b5592f7aa999cf3f437cc",
"outputs/ispc-residual-delivery-20261025/schema-permissions-after.txt": "76b5a4d8af11e4898a205062766cfb7ab6ec0783200e77e60a1927aa1ca18597",
"outputs/ispc-residual-delivery-20261025/schema-permissions-before.txt": "0ab7c964792acdd8917bce256c472e55e034b103500a58b49f020b5084823ed7",
"outputs/ispc-residual-delivery-20261025/status-final.txt": "3f0db035a0d53507176ff8af6f9361c813fe0f64975c61f91ea48a6b53ab5ea5",
"outputs/ispc-residual-delivery-20261025/status1.txt": "33f1595c6ab8b9f6e6231e2c54ae78c171dbb560e24dc305180061d8a04a5425",
"outputs/ispc-residual-delivery-20261025/status2.txt": "7d9f4cb894d96915b622734a2b39f70df8ef0832337f92136e010f51a5abda6d",
"outputs/ispc-residual-delivery-20261025/status3.txt": "8414250023b01144b3d2cdabe21e7ad35c89aee6883b938950b50f6642ba0203",
"outputs/ispc-residual-delivery-20261025/status4.txt": "0d8002ce39bc890aade37606652c68c7b10bc05db3372da770aab879cce1742d",
"outputs/ispc-residual-delivery-20261025/status5.txt": "0d8002ce39bc890aade37606652c68c7b10bc05db3372da770aab879cce1742d",
"outputs/ispc-residual-delivery-20261025/status6.txt": "0d8002ce39bc890aade37606652c68c7b10bc05db3372da770aab879cce1742d",
"outputs/ispc-residual-delivery-20261025/status7.txt": "3f0db035a0d53507176ff8af6f9361c813fe0f64975c61f91ea48a6b53ab5ea5"
}
}
@@ -0,0 +1,260 @@
{
"status": "installed_grouped_scoped_residual_delta",
"matrix_anchor": "AUD-SIM-INT02",
"base_installed": "6af7092e83b9b3932712aa7a9f527393fcec4da8",
"branch": "codex/ispc-residuals-qa-20261025",
"scope": "Operações ocasionais próprias3(3–4),aquisições acima do limite12(3)comcorrespondênciapositivaIRPS57(2k),preparação/transporte de camposB–Geral e histórico externo;semfechointegralISPC.",
"sources": [
{
"path": "docs/investmoz/simulations/source-archive/AT-Comunicado-9-2026-ISPC.pdf",
"bytes": 308401,
"sha256": "106f8a9ce9255c03549c70bf07fe999d32e6e55302d009b509862aa74ccb4973",
"availability": "private source archive;not automatically published/imported into active library",
"scan": "not claimed"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-B-Geral.pdf",
"bytes": 319577,
"sha256": "bd977c7c59d4d98befd92e2c566b1bf168cb1343bb519f51b41a3807f431fc57",
"availability": "private source archive;not automatically published/imported into active library",
"scan": "not claimed"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-30-ISPC.pdf",
"bytes": 159748,
"sha256": "6802edd06b6ff638a0b851a3ec7ecf69af8f07840faa47446becad67d35d445c",
"availability": "private source archive;not automatically published/imported into active library",
"scan": "not claimed"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2017-IRPS-BR-OCAM.pdf",
"bytes": 1894997,
"sha256": "c3a0186cb9ad090d7a9533006295dc9bb6a62ad0d6150173cbd49dba4ee4b52d",
"availability": "private source archive;not automatically published/imported into active library",
"scan": "not claimed"
}
],
"official_source_inventory": {
"local_reused": "outputs/ispc-l4a-20261025/preservation-before-tests.json",
"AT_forms": "39documents;at-forms.json",
"AT_legislation": "189documents;at-legislation.json",
"AT_communications": "4documents;at-communications.xml",
"provenance": "AT public document APIs reached through links/configuration of the official website;BR2017 republication hostedOCAM;no generic second authenticity validation",
"AT_comunicado": {
"url": "https://www.at.gov.mz/api/webdav?path=%2FINFORMA%C3%87%C3%95ES%2FCOMUNICADO%20DE%20IMPRENSA%2F07-10-2026%20-%20COMUNICADO%20N%C2%BA9_2026%20-%20CUMPRIMENTO%20DAS%20OBRIGA%C3%87%C3%95ES%20DECLARATIVAS%20E%20DE%20PAGAMENTO%20DO%20ISPC.pdf",
"listing": "https://www.at.gov.mz/informacoes/comunicado-de-imprensa",
"file": "C:\\laragon\\www\\portal-investidor-ispc-residuals-qa-20261025\\docs\\investmoz\\simulations\\source-archive\\AT-Comunicado-9-2026-ISPC.pdf",
"sha256": "106f8a9ce9255c03549c70bf07fe999d32e6e55302d009b509862aa74ccb4973",
"bytes": 308401,
"origin": "AT official website; public document linked from communications page",
"automatic_rule_activation": false
},
"AT_forms_selected": [
{
"id": "ed263a2ecdd81846af4cdc8f75fc76c1",
"title": "Modelo 30 ISPC IMPOSTO SIMPLIFICADO PARA PEQUENOS CONTRIBUINTES",
"description": "Documentação oficial sincronizada em tempo real.",
"size": "156 KB",
"date": "06/01/2026",
"url": "/api/webdav?path=%2FFORMULARIOS%2FIMPOSTOS%20FISCAIS%2FIRPC%2FModelo%2030%20ISPC%20IMPOSTO%20SIMPLIFICADO%20PARA%20PEQUENOS%20CONTRIBUINTES.pdf",
"downloadUrl": "/api/webdav?path=%2FFORMULARIOS%2FIMPOSTOS%20FISCAIS%2FIRPC%2FModelo%2030%20ISPC%20IMPOSTO%20SIMPLIFICADO%20PARA%20PEQUENOS%20CONTRIBUINTES.pdf",
"viewUrl": "/api/webdav?path=%2FFORMULARIOS%2FIMPOSTOS%20FISCAIS%2FIRPC%2FModelo%2030%20ISPC%20IMPOSTO%20SIMPLIFICADO%20PARA%20PEQUENOS%20CONTRIBUINTES.pdf",
"file": "C:\\laragon\\www\\portal-investidor-ispc-residuals-qa-20261025\\docs\\investmoz\\simulations\\source-archive\\AT-Modelo-30-ISPC.pdf",
"origin": "AT official forms directory",
"sha256": "6802edd06b6ff638a0b851a3ec7ecf69af8f07840faa47446becad67d35d445c",
"bytes": 159748
},
{
"id": "c37f0377df612928865f37cfbfc9dabd",
"title": "MODELO B GERAL",
"description": "Documentação oficial sincronizada em tempo real.",
"size": "312 KB",
"date": "28/10/2025",
"url": "/api/webdav?path=%2FFORMULARIOS%2FIMPOSTOS%20FISCAIS%2FIVA%2FMODELO%20B%20GERAL.pdf",
"downloadUrl": "/api/webdav?path=%2FFORMULARIOS%2FIMPOSTOS%20FISCAIS%2FIVA%2FMODELO%20B%20GERAL.pdf",
"viewUrl": "/api/webdav?path=%2FFORMULARIOS%2FIMPOSTOS%20FISCAIS%2FIVA%2FMODELO%20B%20GERAL.pdf",
"file": "C:\\laragon\\www\\portal-investidor-ispc-residuals-qa-20261025\\docs\\investmoz\\simulations\\source-archive\\AT-Modelo-B-Geral.pdf",
"origin": "AT official forms directory",
"sha256": "bd977c7c59d4d98befd92e2c566b1bf168cb1343bb519f51b41a3807f431fc57",
"bytes": 319577
}
],
"IRPS_Bulletin_URL": "https://ocam.org.mz/wp-content/uploads/2024/06/Lei-n-19_2017-de-28-de-Dezembro-IRPS-2-1.pdf"
},
"implemented_calculations": [
{
"case": "Operação ocasional própria",
"positive": "Pessoa singular,semactividadehabitual,actoimprevisível/nãoreiterado,nacional,nasfamílias3(4);IRPS8(3h,4)/9da republicação19/2017;ISPC4/5/8/9/10-A. Cenário100000MZN/3%=3000;opção/factosefectivosdistintosdeprevisão.",
"anti_duplication": "Retenção liberatória5%documentadareconciliadacomabase não gera segunda liquidação própria;divergência ficaindeterminada,nãohácréditopresumido."
},
{
"case": "Aquisição que atravessa2.500.000MZN",
"positive": "Acumulado2400000+aquisição200000:parcela100000atélimite/retencão5000;excedente100000separado. SóactoIRPSqualificado57(2k),semopçãoISPCaplicável,comrendimentoilíquidoidentificado permite20000noexcedente;total25000de retenções,não imposto próprio do adquirente.",
"limits": "Sem enquadramento/base/documentos,parcela excedente e total permanecem indeterminados. Fornecedor com opçãoISPC não recebeIRPS20automaticamente;factura/liquidação própria são âmbito separado. Não se usa20%do excesso de vendasISPC para compras."
}
],
"implemented_formal_preparation": [
"ATcomunicado9/2026visualizado:ModeloB–Geraltransitório,enquanto sistemaéajustado;mesesJaneiro/Abril/Julho/Outubro;nenhumdiadomêsinventado.",
"OriginalB–Geral2pconferido:quadros1/2/3/5/6/8/10;linha1base01/montante05,linha2base02/montante06,subtotal09;numeração própria doquadro10nãosemisturacomquadro8.",
"HTMLdepreparação,relatóriorecuperado efontes/originaispreservados;semrecriarformuláriooficial,assinatura,recibosouacçãodafuncionário. RetençõesISPC5/IRPS20descritas separadamente.",
"Modelo30oficialdisponívelaindaexibe75.000/3%antigos:preservadoparaconsulta,nãotransportadopara2026.",
"Estadosdepreparação/submissão/recepção/pagamentodeclaradoscomreferência/dataehistórico;sem efectuaressasacçõesoucertificarAT."
],
"remaining_calculations": [
{
"item": "Juros compensatórios",
"state": "montante documentado pode ser conservado;fórmula ainda não implementada",
"needed": "regra/taxa/base/período/dias efectivamente aplicáveis,no documento/instrução correspondente;sem zero ou taxa presumidos"
},
{
"item": "Outros enquadramentos da parcela excedente",
"state": "sem fórmula genérica;casos diferentes do acto isolado qualificado não recebem taxa automática",
"needed": "natureza,regime do fornecedor,opção aplicável,base e suporte concretos;encaminhar para o cálculo próprio quando for outro regime,não bloquear o caso positivo implementado"
}
],
"external_formal_dependencies": [
{
"item": "Quadro2doB–Geral",
"needed": "correspondência concreta do mês/ano a inscrever para o trimestre;comunicado fornece meses de pagamento,que não são copiados automaticamente para período"
},
{
"item": "Dispensa inferior500MZN noB–Geral",
"needed": "Representação declarativa do imposto apurado com prestação dispensada10-A;sem preencher montanteapurado comozero porpresunção. O cálculo imposto/prestação jáestá implementado."
},
{
"item": "Entrega de retenções",
"needed": "modelo/código/instrução próprios12(3)ISPCe57(2k)IRPS;B–Geraldeapoio nãoéapresentadocomocorrespondênciacompletadestasretenções"
},
{
"item": "Regulamentação2026/instruções de envio de facturas",
"needed": "texto/exemplar/instrução concreta quando disponibilizado;comunicado transitório já implementado,não se mantém pesquisa genérica como aprovação adicional"
},
{
"item": "Submissão e pagamento",
"needed": "actos externos e comprovativos reais;nenhuma operaçãoATfoiexecutadaemQA"
}
],
"operation_data_missing_in_synthetic_preparation": "Identidade/NUIT/área fiscal/domicílio,referência de período ejuros são dados para formalizar a operação,não nova condição de acesso ao cálculo.",
"verification": {
"preservation_before_tests": "outputs/ispc-residuals-20261025/preservation-before-tests.json",
"new_frontend_distinct": 19,
"frontend_proofs": [
"frontend-final.txt:14passed",
"directed-final.txt:1additionalpass",
"directed-retention-form.txt:1additionalpass",
"directed-known-exclusions.txt:1additionalpass",
"directed-dispensation-form.txt:1additionalpass",
"directed-liberatory-history.txt:1additionalpass"
],
"API": "1test/22assertionspassed;QAloopback55441/simulator_fiscal_delta_20261021_test;DatabaseTransactionsrollback;APP_BASE_PATHcandidateexplicit",
"UI": "Vendedor376/adquirente375separados;3000/5000/20000/25000;guardar→recuperar→relatório;B–Geralpreparadodescarregado;visibilidadeapenasdascondiçõesafectadasverificada",
"UI_proofs": [
"ui-own-report.txt",
"ui-acquisition-report.txt",
"ui-occasional-applicability.txt",
"ui-regular-applicability.txt",
"preparation.html"
],
"types": "exit0;types-final.txt",
"build": "exit0;build-final.txt",
"habitual_re_evaluation": "not repeated;arithmetic engines unchanged;24000snapshotpreservedexactly;onlyconditionalvisibilitydeltaexamined"
},
"runtime_delta": [
{
"path": "resources/js/lib/ispc-residuals.ts",
"sha256_LF": "40d5751c06c7c155ab4b7a17ee2d1653da2fbbf075807fbb8561cdbe19820955"
},
{
"path": "resources/js/components/simulation-ispc-residuals.tsx",
"sha256_LF": "a9219d6f41ccbd0ce45659d4f6aa0fa1c169a685840f5cb1e18daeca377d5e18"
},
{
"path": "resources/js/components/simulation-form.tsx",
"sha256_LF": "07f7d0d73993ffc2924f1b9b2d21cbc53fb7c95aab959c0820fd7dbc35a1fffa"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "beca4eebd3959afa520061f231de25d064723537bd98deb541712ab448eba369"
},
{
"path": "resources/js/lib/ispc-eligibility.ts",
"sha256_LF": "44675c5efacdc1ae19505667611ba3b522d3043cebacc8754597c3a68ca89d25"
},
{
"path": "resources/js/components/simulation-ispc-quarter.tsx",
"sha256_LF": "2c2555309b32d4261f14e7164f39314c9188129c2990357fc54090a2468dd2b4"
},
{
"path": "resources/js/components/simulation-ispc-withholding.tsx",
"sha256_LF": "e0445d015b72859e48726959aa52686f79b1cf5c2ade29751efa83257068b878"
}
],
"compiled_markers": {
"Calcular e guardar operações ocasionais": [
"assets/services-Cvwv29Mo.js"
],
"Calcular e guardar parcela excedente": [
"assets/services-Cvwv29Mo.js"
],
"Preparar e guardar campos B–Geral": [
"assets/services-Cvwv29Mo.js"
],
"Descarregar preparação B–Geral": [
"assets/services-Cvwv29Mo.js"
],
"Calcular e guardar apuramento trimestral ISPC": [
"assets/services-Cvwv29Mo.js"
],
"Calcular e guardar restituição E": [
"assets/services-Cvwv29Mo.js"
],
"Calcular e guardar acompanhamento D": [
"assets/services-Cvwv29Mo.js"
],
"Calcular e guardar substituições C": [
"assets/services-Cvwv29Mo.js"
]
},
"schema_backend_configuration_dependency_changes": false,
"active_changes": false,
"originals_previous_preserved": 17,
"existing_books_preserved": "L3,ISPC habitual andacceptedhistories;no reset or overwrite of deliberateedits",
"P001_P058": "unchanged;notblocking",
"P084_P085": "closed",
"statistics_AI": "deferred",
"proof_hashes": {
"outputs/ispc-residuals-20261025/frontend-final.txt": "bb0db1bde933e5fe08356537df1ba783003629f7fcc21abdcf18e119bcb0ab8d",
"outputs/ispc-residuals-20261025/directed-final.txt": "9a2de706bca568599efd9dbfff7cb2c55ba037d64139e0b7d269271b9d84582b",
"outputs/ispc-residuals-20261025/directed-retention-form.txt": "44061cb0f2661fb27b6c1e0acca437710d6569f482c0ad521bec95aced7216f5",
"outputs/ispc-residuals-20261025/directed-known-exclusions.txt": "9c2e039af72cd3b46624979d1d07cae31ffc7f19572dfec1c279272dfdaee0dc",
"outputs/ispc-residuals-20261025/directed-dispensation-form.txt": "ff6ab503c476af55e950937d99a40eb6591d7d479cfed60dcddc681dcf7421fb",
"outputs/ispc-residuals-20261025/api.txt": "12ac172c5898f91ed9ac1bd0216265c33683e6984e817c5d6cb8759c1448b184",
"outputs/ispc-residuals-20261025/types-package.txt": "5346ac8a6566c1c38cb0bbda6a029579df58cd78af78e2c4845d9c82b5d1d76c",
"outputs/ispc-residuals-20261025/build-package.txt": "d3b9271730c3e0e6dd87f770a7d7badeb7a5e25e76aac44877b4484078e037b4",
"outputs/ispc-residuals-20261025/ui-own-report.txt": "c770078829e65c3830116c192d819c1f8327b8024806b841d88436219bb26571",
"outputs/ispc-residuals-20261025/ui-acquisition-report.txt": "ce976d2042e8ab7f13c42c42b8bd13a32ad67a2eb64ccf408ddf7d20688f1534",
"outputs/ispc-residuals-20261025/ui-occasional-applicability.txt": "72a3eee5b24c5b18faef1ab00076fb9e4d550b84daac41690dfc4488201311b8",
"outputs/ispc-residuals-20261025/ui-regular-applicability.txt": "2fb06f6e9e845022a464c9ffcc1fdee66b3ee2566bfce811c3e63b02cef4ab0a",
"outputs/ispc-residuals-20261025/preparation.html": "bd8dabebcc27b1e27df345648cf6b8fd5ce780f37d422d23f3689ef941f52cf1",
"outputs/ispc-residuals-20261025/active-baseline.json": "ed1e4d9c09215f9695fad1e02e6efec4c5a7097c5c35f0425e3a5142e98f2bc1",
"outputs/ispc-residuals-20261025/directed-liberatory-history.txt": "ec7836ece4ea47a5e5b039958f18ed0d00cd87af219e1ce3cad2316c7f36977d",
"outputs/ispc-residuals-20261025/types-final.txt": "5346ac8a6566c1c38cb0bbda6a029579df58cd78af78e2c4845d9c82b5d1d76c",
"outputs/ispc-residuals-20261025/build-final.txt": "939ba2172a3b5360d909d36199887f34a9a654f2f4e57a19a12b9c763dd9ca92"
},
"preservation_audit": {
"matrix_only_changed": "AUD-SIM-INT02",
"L1_closed_preserved": 131,
"original_PDFs_preserved": 17,
"habitual_arithmetic_engines": "ispc-quarter.ts/ispc-withholding.ts byte-identical to6af7092e",
"eligibility_regular_path": "byte-identical except message for occasional route",
"source_scope_choices": "Separate books,concrete factinputs and exact cap intervals are implementation choices,not new organisational approvals;no generic legal/provenance revalidation."
},
"liberatory_history_guard": "Same operation reference/date/quarter/amount with documented prior liberatory withholding cannot generate another own payment without explicit correction reference; history preserved.",
"QA_status_before_delivery": "QA_grouped_compatible_delta_not_installed",
"installation_followup": {
"commit": "5c0cb25cea7826811c389b55a64bcdf5e43b937f",
"receipt": "ispc-residual-delivery-20261025.json",
"ISPC_integrally_completed": false,
"IRPS_integrally_completed": false
}
}
@@ -1,6 +1,6 @@
{
"status": "prepared_compatible_QA_not_installed_fresh_authenticated_backup_restore_pending",
"authorization": "Tempo25/10:avançarcoberturaL3QA,conferirapenasofaltanteepreparentregacompatível;depoissaldoL3eL4ISPC.",
"status": "installed_and_delta_verified",
"authorization": "Tempo25/10:entregarL3combackup/restaurofrescoeconferênciadodelta;L3mantémresiduaispróprios.",
"base_installed": "7ad187f9f0745245268e3ed5317547a96b4700f3",
"source_QA": "b189d0fa",
"candidate_branch": "codex/l3-additional-delivery-20261025",
@@ -262,5 +262,262 @@
"SemcontacentralATpresumida,novaautoridadeoucondiçãoorganizacional.",
"Preparação não equivale ainstalação;backup antigo nãoéprovafresca."
],
"active_writes": 0
"active_writes": 0,
"candidate_commit": "0f4df8a4d1cfd0d7b788e58d7f6af8d385384d82",
"candidate_build_proof": "outputs/l3-additional-delivery-20261025/candidate-build-final.txt",
"candidate_types_proof": "outputs/l3-additional-delivery-20261025/candidate-types.txt",
"requested_candidate": "0f4df8a4d1cfd0d7b788e58d7f6af8d385384d82",
"installed_commit": "fa32a2b9e127da9c4d764dd99ef58ee43b770aa6",
"compatibility_correction": {
"requested_candidate": "0f4df8a4",
"actual_target": "fa32a2b9e127da9c4d764dd99ef58ee43b770aa6",
"delta": "tests/frontend/iva-l1-delta.test.mjs only; obsolete text assertions updated to accepted P001 residual. No fiscal/runtime/schema/config/data changes.",
"new_evidence": "pipeline756/757;singlefailurelegacywording",
"directed_verification": "1passed;legacy-assertion.txt",
"P001": "remainsresidual;no functional expansion or research"
},
"authenticated_backup": {
"stage": "/var/backups/investmoz-l3-additional-delivery-20261025/backup",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "ef95cc22d9c5c6b924309fa8c7654a42d7afe67e26b0c118903f507dd2693d0e",
"files_sha256": "b60d64adfc99ed51621ace3d8b273bf3c723978cf8dd08b16c61fab5a3dfb0e3",
"restore_verified": false
},
"isolated_restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "l3_additional_restore_20261025",
"port": 55441,
"source_dump_sha256": "ef95cc22d9c5c6b924309fa8c7654a42d7afe67e26b0c118903f507dd2693d0e",
"active_database_writes": 0
},
"installed_preservation": {
"installed": {
"status": "installed",
"commit": "fa32a2b9e127da9c4d764dd99ef58ee43b770aa6",
"release": "/var/www/investmoz-homologacao/releases/fa32a2b9e127da9c4d764dd99ef58ee43b770aa6-ad33eeab",
"previous_release": "/var/www/investmoz-homologacao/releases/7ad187f9f0745245268e3ed5317547a96b4700f3-066618f1",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 12,
"documentary_files_verified": 17,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "8ba41882cd8a7068c45619b3234af395"
},
"after": {
"rows": 106,
"checksum": "e2140cc9610defc5e64743159fb4df57"
}
},
"sessions": {
"before": {
"rows": 153,
"checksum": "66a8c21d1167a5c4ef27e205006736d4"
},
"after": {
"rows": 154,
"checksum": "6bd8d1311dcc20736dacc02873316399"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"installed_public": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "fa32a2b9e127da9c4d764dd99ef58ee43b770aa6",
"branch": "main",
"built_at": "2026-10-25T15:12:37.806036+00:00",
"manifest_sha256": "cddac25dc66b3e555f2380cf3a9d4b2da6501cd03927c183c832a05b0ee5c993"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"Repartição do IVA documental em MZN": [
"assets/services-Yy7oCdim.js"
],
"Reconciliação da dedução anterior": [
"assets/services-Yy7oCdim.js"
],
"Cálculos indeterminados e condições para resolver": [
"assets/services-Yy7oCdim.js"
],
"Preparação dos quadros L3 e formalidades": [
"assets/services-Yy7oCdim.js"
],
"Calcular e guardar restituição E": [
"assets/services-Yy7oCdim.js"
],
"Calcular e guardar acompanhamento D": [
"assets/services-Yy7oCdim.js"
],
"Calcular e guardar substituições C": [
"assets/services-Yy7oCdim.js"
]
},
"assets": [
{
"file": "assets/project-dossier-document-DEYq4rSm.js",
"status": 200,
"sha256": "76e21fbdb32395a7208023b171208a278d966a726ca5da75616eb4895f900085"
},
{
"file": "assets/services-Yy7oCdim.js",
"status": 200,
"sha256": "fcccdac290664ac7ab03656f2b82fc412d558352611f96d356d0fa6b82eabee8"
},
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
},
{
"file": "assets/project-dossier-BFOK3ylo.js",
"status": 200,
"sha256": "ee9695ec2699120f5e9381d3e27384a6e4c969899f12659b75b47e7f8f3fa2ac"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-8LF5gm1q.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"build_dependency_archival": {
"status": "dependencies_archived_and_verified",
"versions": 11,
"free_before": 4627697664,
"free_after": 7521255424,
"receipt": "/var/backups/investmoz-build-dependencies-20261025/receipt.json",
"protected": [
"/var/www/investmoz-homologacao/releases/de36f02880adf2337edf9f08c3eb424424adcca0-b247ef3c",
"/var/www/investmoz-homologacao/releases/7ad187f9f0745245268e3ed5317547a96b4700f3-066618f1"
],
"active_or_previous_release_modified": false,
"source_data_backups_deleted": 0
},
"operational_delta": {
"status": "operational_delta_reconciled",
"comparison_identity": "postgres before/after;isolated restored baseline;no RLS visibility inference",
"cache": "queue:restart value/expiry and request-throttle counter/timer pair;no deleted cache rows",
"sessions": "anonymous sessions created by exact delivery verification user-agent",
"delta": {
"cache": {
"before_rows": 106,
"after_rows": 106,
"changes": [
{
"key_sha256": "8d6ea77eb4b34d86d207362d583cfa8bf2880b907becd9b00398964482c6b4bd",
"kind": "updated",
"fields": [
"expiration"
],
"key_pattern": "investemoz-cache-{hash}",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true
},
{
"key_sha256": "2f251473865d14b953236ab95b1521764754d76abd79b58ca7d38c96dfe2fab1",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-{hash}:timer",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true
},
{
"key_sha256": "7f7dd83f47f5bf404d55e6e9f1367948721579970b195680645e356031a070ff",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-illuminate:queue:restart",
"is_queue_restart_key": true,
"expiration_unchanged": false,
"throttle_timer_pair": false
}
]
},
"sessions": {
"before_rows": 153,
"after_rows": 156,
"changes": [
{
"key_sha256": "9e2b645a40c93a4975977fd394b80496ecabd7a5b8ae17c259b4105f342e5937",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
},
{
"key_sha256": "1fbd25a79d44d1826aa3b95e1bf19c4268a56b0398ec74f3d4e5b7d5bc44c752",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
},
{
"key_sha256": "65497833fad3b62fd5f3982ff4c6c2770ffb0599616e57f917d38762b87cc59a",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
}
]
}
},
"business_tables_unchanged": 172,
"active_data_writes_by_comparison": 0,
"restore_network": "none"
},
"remaining_balance_reference": "l3-e-additional-coverage-qa-20261025.json:current_L3_balance_20261025"
}
@@ -116,14 +116,14 @@
]
},
"current_L3_balance_20261025": {
"base_installed": "7ad187f9",
"base_installed": "fa32a2b9e127da9c4d764dd99ef58ee43b770aa6",
"QA_increment": "b189d0fa",
"items": [
{
"item": "Entrega do incremento b189d0fa",
"tipo": "disponibilização",
"estado": "QA demonstrada;não instalada",
"falta": "Entrega pelo processoGit existente,com comparação fresca do destino,backup/restauro e conferência do delta. Não repetir provas aceites sem alteração relevante."
"estado": "Entregue e conferido no activo em fa32a2b9e127da9c4d764dd99ef58ee43b770aa6",
"falta": "Nenhuma neste delta;backup/restauro fresco e conferência pública/protegida concluídos. Demais itensL3 mantidos com âmbitos próprios."
},
{
"item": "Mudança/anulação de dedução anterior e versões divergentes",
@@ -157,7 +157,9 @@
}
],
"scope_limit": "A prevenção de duplicação cobre os livros/históricos recuperados. Reconciliação central com aAT ou todos os dossiers não foi demonstrada;isto é limite técnico registado,não nova condição organizacional de fecho.",
"outside_L3": "L1:131entregues+P001residual+P058parcial/residual=133;P084/P085fechados. P001retomasócomnovoesclarecimentoconcreto;L2limitespróprios;estatísticas/IAadiadas."
"outside_L3": "L1:131entregues+P001residual+P058parcial/residual=133;P084/P085fechados. P001retomasócomnovoesclarecimentoconcreto;L2limitespróprios;estatísticas/IAadiadas.",
"prepared_candidate": "0f4df8a4d1cfd0d7b788e58d7f6af8d385384d82",
"delivered_increment": "0f4df8a4 + fa32a2b9(test-only)"
},
"P001_followup": {
"status": "residual_preserved_resume_only_on_concrete_clarification",
@@ -106,3 +106,89 @@ A pesquisa read-only no catálogo oficial da INM voltou a localizar o BR n.º 18
Fontes oficiais: [catálogo INM — BR 186/187 e aviso de indisponibilidade gratuita](https://inm.gov.mz/pt-br/bulletin?field_tipo_de_produto_tid_br=43), [ficha BR 186](https://inm.gov.mz/pt-br/content/br-n%C2%BA-186-de-300926-boletim-da-rep%C3%BAblica-i-serie), [ficha BR 187](https://inm.gov.mz/pt-br/content/br-n%C2%BA-187-de-011026-boletim-da-rep%C3%BAblica-i-serie).
Estado: confirmação oficial apenas de existência, datas e modalidade de acesso; textos, diplomas, artigos, vigência, transição e âmbito fiscal continuam por confirmar. Manter IRPC, IRPS, ISPC, IVA regulamentar, pautas/cálculos aduaneiros e regras contributivas sem activação até obtenção, análise e aprovação competente.
## 25/10/2026 — fontes adicionais dos residuais ISPC
Inventários oficiais AT guardados antes da selecção:39formulários,189documentos legislativos e4comunicados. O Comunicado9/2026 e os exemplares B–Geral/Modelo30 foram recuperados pela ligação pública do próprio portalAT. A republicaçãoIRPS19/2017 é exemplar do BR202/7.ºsuplemento,disponibilizado pelaOCAM;arts8/9naPDF4 e57naPDF13 foram conferidos visualmente,com alteração2026confrontada naLei11/2025. O código local mais antigo não foi usado para a numeração dos actos isolados. A aceitação oficial mantém-se,sem segunda validação de proveniência.
- `AT-Comunicado-9-2026-ISPC.pdf` — SHA256 `106f8a9ce9255c03549c70bf07fe999d32e6e55302d009b509862aa74ccb4973`;original preservado emsource-archive,sem publicação/activação automática.
- `AT-Modelo-B-Geral.pdf` — SHA256 `bd977c7c59d4d98befd92e2c566b1bf168cb1343bb519f51b41a3807f431fc57`;original preservado emsource-archive,sem publicação/activação automática.
- `AT-Modelo-30-ISPC.pdf` — SHA256 `6802edd06b6ff638a0b851a3ec7ecf69af8f07840faa47446becad67d35d445c`;original preservado emsource-archive,sem publicação/activação automática.
- `Lei-19-2017-IRPS-BR-OCAM.pdf` — SHA256 `c3a0186cb9ad090d7a9533006295dc9bb6a62ad0d6150173cbd49dba4ee4b52d`;original preservado emsource-archive,sem publicação/activação automática.
Uso:comunicadoATindicaB–Geraltransitório;campos correspondidos por quadro. Modelo30aindacontém75.000/3%antigos epermaneceexcluído dos cálculos2026. IRPS57(2k,4)suporta20%sobre rendimentoilíquido de acto isolado qualificado,nãotaxagenérica de compras excedentes. Citações,URLs ehashes completos no recibo ispc-residuals-qa-20261025.json. Scan/vigência global não foram certificados por esta importação privada.
## 25/10/2026 — L5 IRPC:fontes e limites concretos
Reutilizados os inventários de8143ficheiros locais e39formulários/189documentosAT. Código localIRPColectivas.pdféDecreto21/2002,revogadoLei34/2007,nãoaplicado2026. BR252/2022localé3.ºsuplemento turístico;Lei20/2022,p2731identificadaINM,nãoconstadesseexemplar. Sem repetirpesquisa genérica nemexigiroutraaprovaçãodafonte. Lei12/2025 jáaceite fornece62(5)/67(5),PDF19,p2180(19),conferidos visualmente;remissão67(7)→62(6)preservada,nãocorrigidanooriginal. MRFTA19/39AT,p1–2,conferidovisualmenteincluindoinstruções;fichas/códigos/CERnovosficamdelimitados.
- Lei-34-2007-BR52.pdf;SHA256`cdbef875ad7ccc1517b12faf5de0e893a70ed2ed81e33913cd6dc4a674474e6e`;https://www.dlapiperafrica.com/export/sites/africa/mozambique/insights/legislation-series/tax/downloads/Lei_34_2007.pdf_2063068952.pdf;Art67(3)/68 visually reviewed onPDF19;other text identified.
- Lei-4-2012-BR3.pdf;SHA256`b8845cef41dcbd9ba50c43dbfa743a56030dd3d348242a107e1ae30279eec121`;https://www.dlapiperafrica.com/export/sites/africa/mozambique/insights/legislation-series/tax/downloads/Lei-n-4.2012-de-23-de-Janeiro-de-2012.pdf_2063068952.pdf;Original inventoried/preserved;full article mapping not yet complete,no rate activated from this copy.
- Lei-19-2013-BR76.pdf;SHA256`bba96d645cc935ffc3d1a79b9f0f73ac1c693d6459c2ad41f56cd2841accae76`;https://www.dlapiperafrica.com/export/sites/africa/mozambique/insights/legislation-series/tax/downloads/Lei-n_19.2013.pdf_2063068952.pdf;Original inventoried/preserved;full article mapping not yet complete,no rate activated from this copy.
- Decreto-9-2008-BR16.pdf;SHA256`96fccdecbfdc11c9eafb90fbc6c7bc259f88bbd4c7507d1ac3af1fa03f960697`;https://www.dlapiperafrica.com/export/sites/africa/mozambique/insights/legislation-series/tax/downloads/Decreto_9_2008.pdf_2063068952.pdf;Original inventoried/preserved;full article mapping not yet complete,no rate activated from this copy.
- AT-MRFTA-19-39.pdf;SHA256`8ea62c53066b482f87078a7a7b1ecf15ca98a12a122e8d7abca63acfc993186b`;https://www.at.gov.mz/api/webdav?path=%2FFORMULARIOS%2FIMPOSTOS%20FISCAIS%2FIRPS%2FIRPS-IRPC%20MRFTA%20-%2019-39.pdf;MRFTA p1–2 visually reviewed;consultation/preparation,not submission.
Originaisprivadospreservados;sempublicação/activaçãoautomática,semdeclararscanoucertificaçãoefectuados. Lei4/2012,19/2013eRegulamento9/2008foramrecuperados/inventariados;correspondênciaintegralpendente,nãoforamusadosparaactivartaxasantigas. Recibo:irpc-l5-withholdings-qa-20261025.json.
## 25/10/2026 — L5: Lei 20/2022 recuperada e correspondência das taxas
O novo exemplar integral do BR 252/I, de 30/12/2022, foi recuperado em arquivo público do CIP. A Lei 20/2022 consta da primeira página, impressa 2731, conferida visualmente. O ficheiro anterior continua identificado como 3.º suplemento turístico; não foi substituído nem reinterpretado. As 268 páginas do novo original ficam inventariadas e preservadas; o restante PESOE não é usado para activar retenções.
Origem: https://www.cipmoz.org/wp-content/uploads/2023/financas/17F%29%20Lei%2029_2022%20Plano%20Economico%20Social%20Or%C3%A7amento%20do%20Estado%202023.pdf
SHA256: `1159fd3ce1ba5581671796d083534da48bd3c5578298819e896f1c2a8026318d`. Exemplar: `docs/investmoz/simulations/source-archive/BR252-I-Serie-2022-Lei20-PESOE.pdf`. Lei19/2013 PDF2/p682(22) também conferida visualmente:62(3)liberatória20% e62(4)a–d10% específicos. Lei20/2022 mantém62(1/3/4) e termina medidas agrícolas em31/12/2025;Lei12/2025 estabelece62(5)digital/moeda electrónica. A fonte oficial permanece aceite; a nova leitura resolve uma lacuna de texto, sem revalidação genérica. Sem publicação/importação automática ou scan declarado. Recibo: `irpc-l5-grouped-qa-20261025.json`.
## 25/10/2026 — L5 dispensas e convenção PT–MZ
Inventários anteriores reutilizados; inventário completo dos29 originais fiscais em `irpc-l5-reliefs-qa-20261025.json`, incluindo27 anteriores preservados e2 novos. CIRPC Lei34/2007 art68(d/f), PDF19/p768(73), conferido visualmente; listas de alterações Lei4/2012 PDF1 e Lei19/2013 PDF1 não alteram68. Lei20/2022 e Lei12/2025 já correspondidas no recibo agrupado. Sem reutilizar código revogado2002.
CDT PT–MZ, RAR36/1992: original oficial no arquivo do Ministério Público português, arts1/4/12;PDF13–14 conferidas visualmente. Protocolo/RAR36/2009, original DR,PDF1–2/p2752–2753:IRPC/residência e definição12(3);art15 aplicabilidade temporal confrontado. DR apresenta os diplomas em vigor; vigência do Protocolo07/06/2009 documentada na ficha oficial do Ministério Público, efeitos na fonte a partir do ano seguinte. Recorte2026 não estende automaticamente a outras categorias ou tratados. A condição de aplicação12(2) não é confundida com cumprimento de formalidades externas;21-RFI português não imposto em Moçambique.
Novos originais privados preservados, sem publicação/importação automáticas, sem scan ou certificação declarados:
- docs/investmoz/simulations/source-archive/PT-MZ-CDT-1992.pdf;SHA256`d504e1024b28aee5c6acf4592acb96ec9c915a8414f67a61ab6984d6acf9df9d`;origem:https://dcjri.ministeriopublico.pt/sites/default/files/documentos/instrumentos/rar36-1992.pdf.
- docs/investmoz/simulations/source-archive/PT-MZ-Protocolo-2009.pdf;SHA256`f353773dcf41f09f4daa6cf5ba5a5f7994f3e02615867c2dcffc61c3d901bf9b`;origem:https://files.dre.pt/1s/2009/05/08900/0275202756.pdf.
Referências oficiais adicionais: https://diariodarepublica.pt/dr/detalhe/resolucao-assembleia-republica/36-1992-408879 ; https://diariodarepublica.pt/dr/detalhe/resolucao-assembleia-republica/36-2009-607572 ; https://dcjri.ministeriopublico.pt/instrumento/protocolo-entre-republica-portuguesa-e-republica-de-mocambique-que-reve-convencao-para . A aceitação das fontes oficiais permanece, sem revalidação genérica.
## 25/10/2026 — MRFTA e juros compensatórios: correspondência concreta
Reutilizados os29 originais aceites,sem perdas por hash. MRFTA19/39AT,PDF1–2,semAcroForms:quadros1–7 e instruções conferidos visualmente,8/9 reservados. O incremento preenche um mapaHTML correspondente,sem alterar o original ou alegar submissão. Rubricas normais de capitais/prediais e liberatórias IRPC intelectuais/equipamento/capitais/serviços correspondidas pelo nome e natureza;digital/especiais não presumidos. CER permanece dado transcrito com referência,não número de campo da guia antiga.
Decreto9/2008,PDF6/p121,art25(1–3),ePDF8/p123,art35:juros compensatórios e distinção da natureza da retenção. A página oficial BM do Mercado Monetário explica a descontinuidade da MAIBOR em consequência do acordo de17/05/2017. Snapshot integral preservado em `source-archive/BM-Mercado-Monetario-MAIBOR-20261025.html`,SHA256`00e8a7e0d3a1db4ca3beb56d5361b2084a0f1684f3d40fc1c203702a2190e063`. Origem:https://bancomoc.mz/pt/areas-de-actuacao/mercados/mercado-monetario/ . Não usar MIMO ou Prime como sucessor fiscal por inferência. Nenhuma taxa2026 genérica activada;liquidação documentada pode ser transcrita com período/data/prova. Sem nova validação de credibilidade oficial,sem publicação/importação automáticas,sem scan declarado. Inventário completo e hashes no recibo `irpc-juros-mrfta-qa-20261025.json`.
O snapshot HTML é versionado com `-text -diff` no caminho exacto de `.gitattributes`,conservando bytes e espaços do original em vez de normalizar linhas. Hash conferido também contra o blob Git antes de preparar o bundle final.
## 25/10/2026 — dois pontos restantes: parâmetros e correspondências
Reutilizados30originais aceites,sem alteração por hash. O seguimento não carrega taxa fiscal2026 nem novo CER. A aritmética exige fonte/fundamento,janela temporal,base anual e arredondamento explícitos do caso;ensaios usam parâmetros fictícios. Registo de montante liquidado e cálculo por perfil são vias distintas.
Inventário oficial AT189documentos recuperado em `outputs/irpc-interest-cer/at-legislation-inventory.json`,SHA256`d74e764224d97fdea2e6e6e3496614c9b0f94941e8f8757eed8e7847bda9508c`;escopo desta leitura:metadados/títulos,não revisão integral de novos PDFs. URL:https://www.at.gov.mz/api/documents?root=LEGISLACAO . Referências aoDecreto68/2014/desagregaçãoCER identificadas em pesquisa;sem correspondência detalhada aplicável recuperada para activação. Rascunhos sem diploma/número e agregados de receitas não usados como CER MRFTA. Sem revalidação genérica da credibilidade das fontes aceites,sem publicação/importação automática. As lacunas concretas permanecem no recibo `irpc-interest-cer-qa-20261025.json`.
## 25/10/2026 — L6, cadeia do primeiro acréscimo36(1)c
Reutilizados30originais aceites,sem alteração. Conferidos visualmenteLei34/2007PDF6/p768(60) ePDF10/p768(64);Lei4/2012PDF2/p34(5) ePDF3/p34(6);Lei19/2013PDF1/2,p682(21/22). Novo exemplar oficialAT,catálogo19/2009,conserva5páginas do4.ºsuplementoBR36,10/09/2009,incluindoLei20/2009. PDF4/p272(16)confirma36(1)a–i mantidas eaditamentosj–n;fonte original/hash/URL no reciboirpc-l6-adjustments-qa-20261025.json. Correspondência executável limitada36(1)c;demais artigos não declarados implementados. Lei20/2022altera61/62 eLei12/2025altera3/5/20/62/67/75,adita61-A/revogações próprias,conforme provas aceites. Nova consulta responde só à cadeia do acréscimoL6,não às pendênciasL5. Sem publicação/importação documental,scan ou certificação presumidos.
## 25/10/2026 — L6: conferência do recorte até lucro tributável
Sem novos originais:31exemplares da QA664c88c8 preservados por hash. Reutilizada a fonte oficial aceite Lei34/2007, PDF6/p768(60),17/18, e PDF7/p768(61),20/22; Lei20/2009, exemplar oficialAT já arquivado, PDF2/3,p272(14/15), alterações18/20/21/22/24, conferidas visualmente. A cláusula geral de custos indispensáveis e as receitas ordinárias aplicam-se mediante qualificação expressa do caso; não se presume dedutibilidade de todas as linhas de um plano. As demais alterações aceites são reutilizadas no âmbito já documentado. Variações/correcções conhecidas não zero,amortizações e juros financeiros remanescentes não ganham regra neste incremento. A abertura do webdav pela ferramenta web falhou; foi usado o exemplar oficial arquivado exacto, sem reconstrução secundária ou nova validação genérica. Nenhuma pesquisa das pendênciasL5 foi reaberta.
## 25/10/2026 — L6:deduções/perdas para matéria colectável
Reutilizados31originais sem alteração por hash. Lei34/2007PDF5/p768(59),15(1)a/15(2–4),ePDF12/p768(66),41(1–7),conferidos visualmente. Art15 distingue perdas/benefícios à base de outras fases;41 estabelece cinco exercícios posteriores e restrições concretas. O recorte suporta apenas exercícios anuais ordinários/perdas próprias do regime geral;períodos curtos41(5),restrições especiais41(4/6),métodos indirectos e transferências41-A conservam correspondência específica. Listas de alterações aceites reutilizadas;Lei20/2009adita41-A,não activa transmissão de perdas nesta entrega. Não inferir ordemFIFO,percentagem de dedução ou benefício positivo de valor digitado. Sem pesquisa/revalidação genérica das dúvidasL5 e sem novo original/importação/publicação.
## 25/10/2026 — L6:taxa geral para a colecta normal2026
Sem novos originais:31exemplares preservados por hash. Conferidos visualmenteCIRPC Lei34/2007PDF17/p768(71),61(1),taxa geral32%;Lei20/2022PDF1/p2731,61(1)mantido e61(2)temporário;Lei12/2025PDF18/p2180(18),lista de alterações,ePDF20/p2180(20),61-A/vigência. A alteração61(2)daLei4/2012 já aceite é reutilizada. Índice primárioINM confirmaLei20/2022,artigos61/62,p2731. Não se transportam medidas expiradas,casos autónomos ou taxas de retenção para a colecta normal. Enquadramento do caso/ano é expresso;nenhum aprovador ou revalidação genérica criado. Sem pesquisa das pendênciasL5. Retenções/pagamentos/créditos anuais permanecemL8.
@@ -0,0 +1,246 @@
{
"status": "QA_complete_candidate_not_installed",
"date": "2026-10-27",
"runtime_commit": "3439f35038f15c93224e6cf876bf559135824d13",
"baseline_main": "f8d57bddf96b4610604a013fcc5bdd703c7dc6d5",
"branch": "codex/proactive-investment-first-qa-20261027",
"QA_directory": "C:\\laragon\\www\\portal-investidor-proactive-qa-20261027",
"root_checkout": "C:/laragon/www/portal-investidor",
"unavailable_local_scope_commit": "fa02c70",
"unavailable_commit_is_not_dependency": true,
"L8_candidate_preserved": "14360748194f3658d91a7d7ae5615efd0fcbfbb7",
"L8_not_integrated_or_modified": true,
"server_or_SGF_operations": false,
"scope": "territory/sector,evidence,need,structuredidea,existingencryptedDossier;manualeditorialpreparation beforeAI",
"existing_models_reused": [
"geo_locations",
"sectors",
"value_chains",
"projects",
"economic_clusters",
"development_corridors",
"investment_zones",
"Opportunity.management_draft",
"audit_events",
"portal_resources",
"documents",
"opportunity_documents",
"desk_cases",
"InvestorContext",
"InvestmentConsumerScope",
"InvestorPath"
],
"new_tables_or_migrations": false,
"new_organisational_approvers_or_roles": false,
"auth_delta": "Existing internal assignment may prepare/edit proactive drafts with real promoter unknown;all other role and operational checks retained and tested",
"checks": {
"API_tests": 14,
"API_assertions": 139,
"frontend_report_tests": 7,
"database": "proactive_investment_20261027_test",
"clone_source": "simulator_fiscal_delta_20261021_test",
"host": "127.0.0.1",
"port": 55441,
"guarded": true,
"API_transaction_rollback": true,
"UI_persistent_synthetic_data_only_in_clone": true,
"normal_password_and_MFA_UI": true,
"UI": {
"actualLaravelHTTP": true,
"normalPasswordAndMFA": true,
"createSaveRecoverEdit": true,
"hypothesisAndConfirmedHistory": true,
"onlyApplicableGroupsShown": true,
"selectedRelationshipsAndAssumptionsTransported": true,
"privateRelationshipReferenceNotExposed": true,
"noBudgetPromoterCoordinatesRequired": true,
"existingTerritoryAndSector": true,
"explicitPromotionPreviewConfirm": true,
"anonymousOnlyAuthorisedPublicContent": true,
"authReturnPreservesSource": true,
"existingDossier": true,
"deliberateTitlePreserved": true,
"reloadAndResumeSession": true,
"publicUrl": "http://127.0.0.1:18760/oportunidades/inv-mz-gen-5137141825128895?perspective=ideas&sector=energia-especifica",
"record_id": 383,
"dossier_id": "139e5faf-4979-4e2c-9a92-3e1465431642",
"errors": []
},
"Wayfinder_with_form": "passed",
"TypeScript": "passed",
"isolated_QA_build": "passed",
"build_advisories": [
"Existing chunk-size and plugin-timing diagnostics;no buildfailure"
],
"unaffected_accepted_suites_not_repeated": true
},
"preservation": {
"baseline": "f8d57bddf96b4610604a013fcc5bdd703c7dc6d5",
"tracked_files_before": 2830,
"changed_existing_files": [
"app/Http/Controllers/OpportunityManagementController.php",
"app/Models/Opportunity.php",
"app/Services/InvestmentCatalogue.php",
"app/Services/InvestorContext.php",
"app/Services/OpportunityManagement.php",
"app/Services/OpportunityPromotion.php",
"app/Services/PortalProfileAccess.php",
"docs/investmoz/consolidated-review-matrix-2026-10-03.md",
"docs/investmoz/unification/traceability-and-manual.md",
"docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv",
"resources/js/components/opportunity-search-filters.tsx",
"resources/js/lib/project-dossier.ts",
"resources/js/pages/investment/catalogue.tsx",
"resources/js/pages/investment/detail.tsx",
"resources/js/pages/investment/shared.tsx",
"resources/js/pages/investor-path/show.tsx",
"resources/js/pages/management/opportunity-draft.tsx",
"resources/js/pages/management/opportunity-promotion.tsx"
],
"unchanged_existing_files": 2812,
"fiscal_engines_unchanged": 89,
"fiscal_originals_unchanged": 31,
"Rwanda_originals_unchanged": true,
"L8_candidate_14360748_unchanged": true,
"auth_delta": "Existing internal assignment may prepare/edit proactive drafts with real promoter unknown;all other role and operational checks retained and tested",
"source_Database_and_active_environment_not_written": true,
"QA_database": "proactive_investment_20261027_test",
"clone_source": "simulator_fiscal_delta_20261021_test",
"port": 55441,
"root_runtime_not_changed": true,
"SGF_TEMPO_untouched": true,
"accepted_unaffected_suites_not_repeated": true,
"no_migrations_config_or_active_grant_changes": true,
"QA_synthetic_grants_only_in_isolated_clone": true,
"includes_documentation_delta": true
},
"Rwanda_methodology": {
"status": "user_provided_sources_located_and_relevant_passages_read",
"date": "2026-10-27",
"purpose": "Internal methodology for QA editorial preparation;not local economic evidence",
"originals_unchanged": true,
"no_source_publication_or_import": true,
"no_foreign_tax_or_institutional_rules_imported": true,
"sources": [
{
"path": "c:\\Mac\\Home\\Documents\\Docs pessoais\\Backup\\Documentos – MacBook Pro de Macbook\\Docs\\Rwanda\\20070627_Rwanda_5d0cc43d-c990-4cf1-8ee9-ada71094918f.pdf",
"sha256": "18b07a9379a1ad0baa33697d57d6237f15a6fec346db44bfee7506bf1fa27dee",
"bytes": 335937,
"title": "Creating a Competitive Rwanda",
"author": "Professor Michael E. Porter, Harvard Business School",
"edition": "Kigali,June2007 (cover)",
"pages": 31,
"visual_pages_inspected": [
1,
14,
27
],
"passages": [
{
"page": 14,
"heading": "Improving the Business Environment: The Diamond",
"application_pt": "Inventariar factores de produção, condições de procura e fornecedores/actividades de apoio;cada afirmação local depende de fonte e cobertura próprias."
},
{
"page": 27,
"heading": "Role of the Private Sector in Economic Development",
"application_pt": "Identificar fornecedores, infra-estruturas e competências como relações a investigar;proximidade não cria compromisso ou acesso."
}
],
"extraction": "pypdf;selectedpages rendered withPyMuPDF and visually inspected"
},
{
"path": "c:\\Mac\\Home\\Documents\\Docs pessoais\\Backup\\Documentos – MacBook Pro de Macbook\\Docs\\Rwanda\\Rwanda Competitiveness Briefing_Prof Porter_OTF.ppt",
"sha256": "4a9325ad64278cb0ef3c60367a05ee2ed9262e2cd49a48d579061349914aa830",
"bytes": 1755648,
"title": "How Rwanda Competes Today — Rwanda National Innovation and Competitiveness Program",
"edition": "July20,2008;Executive Briefing for Prof.MichaelPorter,slide1",
"slides": 50,
"native_PowerPoint_read_only": true,
"visual_slides_inspected": [
17
],
"passages": [
{
"slide": 17,
"heading": "Tourism Cluster—What the market is telling us",
"application_pt": "Conservar origem,período,cobertura e amostra das observações de procura;interesse declarado de um inquirido não equivale a contrato ou encomenda em Moçambique.",
"source_note": "OTF Tourism Channel Partner Survey,January2007,n=90,scale1–7 visible in slide;figures not transferred to pilotcases."
},
{
"slide": 20,
"heading": "Tea Cluster—Persistent constraints",
"application_pt": "Estruturar a análise por etapas de produção,recolha,transformação,transporte e comercialização;as limitações do Ruanda não são lacunas comprovadas do Gurué.",
"inspection": "Text extracted in native slide order;not yet visually inspected."
},
{
"slide": 24,
"heading": "Mining Cluster – Situation analysis",
"application_pt": "Perguntar por competências,informação,fornecedores e serviços relacionados;nenhuma necessidade de Montepuez é inferida desta lista estrangeira.",
"inspection": "Native text extracted;not visualproof."
}
],
"extraction": "Legacy OLE exploratoryextraction followed bynativePowerPointreadonly extraction;native50slideorder is authoritative. OldOLE91historicaltextgroups not used as slide count."
}
],
"implementation_mapping": [
"evidence.category+purpose+source+locator+period+scope+coverage+verified_on",
"methodology evidence cannot by itself confirm localneed",
"need.type quantity/quality/logistics/processing/coordination/support",
"idea.chain_id+stage+documentedresources+relations",
"hypothesis vs confirmedneed vs preparation vs actualavailability separated"
],
"limitations": [
"No actualpilot demand,supply,market_size,profitability or investmentcosts validated",
"No direct or indirect disclosure of privatecompanylists or originaldecks",
"Copyright/proprietary notices preserved;excerpts and renders remain ignored QA evidence,not public app assets"
]
},
"public_projection_rules": [
"No automatic private-to-public field copy",
"Only selected public evidence and publictarget relationships",
"Private relationship reference omitted",
"Internal document classification,rights,scan and ownership link retained",
"Literal private evidence reuse blocked;indirect disclosure is explicitly reviewed by existing editor",
"Analytical state and publication state separate",
"No automatic contract,availability,land,power,viability or taxbenefit"
],
"pilots": [
{
"context": "Cahora Bassa",
"sector": "Energia",
"territory": "bcc9e3cb-2359-524c-af4e-0ebc6f141d3d",
"status": "synthetic_QA_only"
},
{
"context": "Montepuez",
"sector": "Mineração",
"territory": "d4fb92cc-d278-5f69-9490-a98e6dfef18d",
"status": "synthetic_QA_only"
},
{
"context": "Gurué",
"sector": "Agronegócio/cadeia do chá",
"territory": "87a8ba3d-b152-560c-a566-7db4531ad536",
"status": "synthetic_QA_only"
}
],
"remaining": {
"implemented_demonstrated": "Editorial technical workflow and scoped continuity listed in manual",
"partial": "Real local economic analysis and availability of actual participations,not claimed",
"documentary_dependencies": "Local evidence,period,coverage,source and specific contract/access/availability claims;onlydependentcase blocked",
"resolved_dependency": "Both Rwanda exemplars available and passages inspected",
"future": "Automaticintelligence/prioritisation/indicators/AI and economic quantification when data exist;not required for firsteditorial increment",
"active_installation": "Out of authorised scope;futurefreshcompatibility/capacity/backuprestore required"
},
"matrix_ids_updated": [
"RF-CLU-003",
"MASTER-471012ab-0010",
"MASTER-9dee08d0-0067",
"MASTER-471012ab-0067"
],
"documentation_append_only": true,
"evidence_directory": "outputs/proactive-investment-20261027/",
"no_economic_validation": true,
"no_actual_publication_or_homologation_installation": true
}
@@ -0,0 +1,196 @@
{
"status": "real_source_preliminary_case_demonstrated_private_QA_not_published",
"date": "2026-10-27",
"case_id": "CB-METROLOGIA-20261027",
"baseline_candidate": "1afab4a2a71f182f260e4d2555d79242261a4d2a",
"runtime_unchanged": "3439f35038f15c93224e6cf876bf559135824d13",
"branch": "codex/proactive-real-pilot-qa-20261027",
"new_application_code": false,
"QA_database": "proactive_investment_20261027_test",
"proof": {
"case_id": "CB-METROLOGIA-20261027",
"record_id": 401,
"dossier_id": "894343c7-c33d-452e-a6a5-b6675f77ee23",
"QA_only": true,
"real_primary_sources": true,
"synthetic_operator_only": true,
"created_saved_recovered_via_existing_UI": true,
"existing_private_dossier": true,
"need_state": "hypothesis",
"past_procurement_dates_explicit": true,
"client_potential_not_committed": true,
"all_five_evidence_entries_retained": true,
"internal_workbook_reference_retained_privately": true,
"territory_preserved": true,
"no_economic_numbers_invented": true,
"no_publication_action": true,
"no_external_messages": true,
"anonymous_dossier_denied": true,
"accepted_technical_suites_not_repeated": true,
"errors": []
},
"private_record": {
"record_id": 401,
"status": "draft",
"not_published": true,
"unknown_amount_preserved": true,
"unknown_real_promoter_preserved": true,
"QA_database": "proactive_investment_20261027_test"
},
"selection": {
"selected": "Cahora Bassa",
"reason": "Acervo empresarial interno com referências locais + relatório primário HCB2024 + plano primário compras2026 com serviço delimitado. É a combinação de fontes mais directamente utilizável nesta leitura dirigida.",
"alternatives": [
{
"pilot": "Montepuez",
"available": "Registos empresariais internos e documentação pública mineira; não se seleccionou um procedimento primário e necessidade tão delimitados nesta ronda.",
"limitation": "Não equivale a falta de actividade ou inexistência de necessidades. Sem ranking económico."
},
{
"pilot": "Gurué",
"available": "Registos internos com actividades ligadas ao chá e referências públicas territoriais; as fontes de constrangimentos localizadas são antigas ou não delimitam uma procura actual específica.",
"limitation": "O piloto continua válido para estudo posterior; não se presume que os constrangimentos antigos persistem."
}
]
},
"idea": "Associação de apoio local no Songo com laboratório qualificado para apoio metrológico à HCB; hipótese comercial.",
"known_vs_unknown": {
"known": "Actividade HCB e necessidade planeada de calibração2026; referências empresariais históricas internas.",
"unknown": "Estado/recorrência da contratação,procura por satisfazer,volume,requisitos,oferta e parceiros actuais,preços,meios e viabilidade.",
"not_inferred": "Concurso aberto,adjudicação,ausência de oferta,disponibilidade comercial,contrato,acesso,terra,energia ou benefício fiscal."
},
"source_manifest": [
{
"alias": "companies.xlsx",
"original": "C:\\Mac\\Home\\Documents\\TEMPO\\Portal Tempo\\Dados de empresas\\EMPRESAS_LIST 2014-2022.xlsx",
"bytes": 26586267,
"sha256": "1ba4c4114b16b407e7746712d00d4f681246bbbc1b42351e96a31f7129acad30",
"use": "private analytical read-only working copy; original unchanged"
},
{
"alias": "licensed.xlsx",
"original": "C:\\Mac\\Home\\Documents\\TEMPO\\Portal Tempo\\Servicos Tempo\\Relatorios\\novos\\docs\\Empresas Licenciadas.xlsx",
"bytes": 34940776,
"sha256": "1b5087b464e39e88c42def39655c2391aaaf684b4c832d6a77ff274b98889f00",
"use": "private analytical read-only working copy; original unchanged"
},
{
"alias": "tourism.xlsx",
"original": "C:\\Mac\\Home\\Documents\\TEMPO\\Portal Tempo\\Servicos Tempo\\Relatorios\\novos\\docs\\CADASTRO DE EMPREENDIMENTOS TURISTICOS 3, 4 E 5 ESTRELAS 30.10.24 18,00h.xlsx",
"bytes": 73955,
"sha256": "f02e086ed4973ef17234aa6cc54b98fbb7a6952ffb16ec4dc4f7d0c72af6400c",
"use": "private analytical read-only working copy; original unchanged"
},
{
"alias": "hcb-concession.pdf",
"original": "C:\\Mac\\Home\\Documents\\TEMPO\\Portal Tempo\\Legislacao\\MIREME\\HCB-TERMOS-DO-CONTRATO-DE-CONCESSAO.pdf",
"bytes": 142063,
"sha256": "f4afc62f140d197cae3bf395674adce2eba37f0436261d52d7eb554f6230a073",
"use": "private analytical read-only working copy; original unchanged"
},
{
"alias": "hcb-plan-2026.pdf",
"url": "https://igepe.org.mz/wp-content/uploads/2026/06/HCB-Plano-Anual-de-Aquisicoes-2026.pdf",
"bytes": 319956,
"sha256": "cbc93102fea61a712c193d1c1815e7ec19e7d570ee2703c1b1390d4c05e5bd8e",
"accessed": "2026-10-27",
"use": "read-only primary source; no portal publication/import"
},
{
"alias": "hcb-report-2024.pdf",
"url": "https://hcbadm.mzbusiness.com/wp-content/uploads/2025/08/Relatorio-e-Contas-2024-Bilingue-VF-1.pdf",
"bytes": 8215895,
"sha256": "d0fed6af0e40fffd6f7f385152fdbfff2a10cae0b66c9d7a59a0a99658758080",
"accessed": "2026-10-27",
"use": "read-only primary source; no portal publication/import"
},
{
"alias": "hcb-hidroelectricidade.html",
"url": "https://www.hcb.co.mz/hidroelectricidade",
"bytes": 52772,
"sha256": "c5de0e6204909c6cdaea7b249c79897f1cc8539c4f58e4704e4d5844f9542a49",
"accessed": "2026-10-27",
"use": "read-only primary source; no portal publication/import"
},
{
"alias": "cae.xlsx",
"original": "C:/Mac/Home/Documents/TEMPO/Portal Tempo/Dados de empresas/CAE eBAU.xlsx",
"bytes": 75018,
"sha256": "83b4f1200988e99834c2ae3915346fbf237d128308554b67b5a080d4956bf506",
"use": "read-only supplied code labels B857/F857 and B859/F859; not current official-version inference"
}
],
"originals_unchanged": [
{
"alias": "companies.xlsx",
"original_unchanged": true,
"sha256": "1ba4c4114b16b407e7746712d00d4f681246bbbc1b42351e96a31f7129acad30"
},
{
"alias": "licensed.xlsx",
"original_unchanged": true,
"sha256": "1b5087b464e39e88c42def39655c2391aaaf684b4c832d6a77ff274b98889f00"
},
{
"alias": "tourism.xlsx",
"original_unchanged": true,
"sha256": "f02e086ed4973ef17234aa6cc54b98fbb7a6952ffb16ec4dc4f7d0c72af6400c"
},
{
"alias": "hcb-concession.pdf",
"original_unchanged": true,
"sha256": "f4afc62f140d197cae3bf395674adce2eba37f0436261d52d7eb554f6230a073"
},
{
"alias": "cae.xlsx",
"original_unchanged": true,
"sha256": "83b4f1200988e99834c2ae3915346fbf237d128308554b67b5a080d4956bf506"
}
],
"old_QA_rows_unchanged": {
"opportunities": {
"old_rows_unchanged": 52,
"new_rows": 1
},
"desk_cases": {
"old_rows_unchanged": 17,
"new_rows": 1
},
"projects": {
"old_rows_unchanged": 19,
"new_rows": 0
},
"geo_locations": {
"old_rows_unchanged": 1921,
"new_rows": 0
},
"sectors": {
"old_rows_unchanged": 12,
"new_rows": 0
},
"documents": {
"old_rows_unchanged": 63,
"new_rows": 0
},
"value_chains": {
"old_rows_unchanged": 0,
"new_rows": 0
}
},
"technical_accepted_tests_not_repeated": true,
"economic_payload_and_recovered_context_private_only": true,
"new_publication": false,
"external_contact": false,
"server_operations": false,
"SGF_changes": false,
"L8_preserved": "14360748194f3658d91a7d7ae5615efd0fcbfbb7",
"matrix_ids": [
"RF-CLU-003",
"MASTER-471012ab-0010",
"MASTER-9dee08d0-0067",
"MASTER-471012ab-0067"
],
"local_proof_directory": "outputs/proactive-real-pilot-20261027",
"private_report": "outputs/proactive-real-pilot-20261027/real-case-private-report.html",
"next_action": "Preparar reunião exploratória com as perguntas de estado/recorrência,âmbito técnico,oferta,associação e vantagem;nenhuma mensagem enviada."
}
@@ -2522,8 +2522,8 @@ As estimativas são **horas de trabalho técnico**, não calendário nem mediç
| L3 — IVA: saldo e fecho do Modelo A | Totais14–18 quando todas as parcelas estão determinadas | Campos19–27 aplicáveis, transporte de crédito, rectificações/substituição, imposto a entregar e pedido de reembolso; estados documentados e relação com tesouraria; via de restituição de bebidas13(2), identificada porG4D e ainda não apurada, conforme procedimento próprio | Execuções mensais, parcelas L1/L2, documentos e histórico | L1/L2 para apuramento integral; saldo anterior identificado e procedimento de reembolso aplicável. Pedido não significa deferimento/recebimento | 48–80 h |
| L4 — ISPC: elegibilidade e apuramento | Campos de enquadramento e motor genérico | Regime/actividade/volume elegível, opções/exclusões, escalões/taxas aplicáveis, mínimo, trimestre e retenções específicas; comparação só entre regimes admissíveis | Vendas por actividade, custos, NUIT, natureza jurídica e residência confirmada | Lei9/2025 e regulamentação/período; distinguir receita anual, trimestre e excesso | 40–64 h |
| L5 — retenções IRPC e guias | Documentos de compras/vendas e guia M/39 como exemplar | Rendimento pago/recebido, entidade que retém, residente/não residente/EP, evento temporal, excepções e casos digitais/e-money; guia e comprovativo ligados à operação | Contrapartes, facturas, pagamentos, período, moeda, oportunidade | Artigos aplicáveis por rendimento, taxa/convenção se invocada; corrigir remissões do exemplar. Sem submissão electrónica AT presumida | 32–56 h |
| L6 — IRPC anual: regime normal | Projecções, resultados financeiros, activos e custos | Ponte resultado contabilístico→matéria colectável, custos admitidos/não admitidos, amortizações, perdas fiscais e colecta; correspondência M/20/M/22 | Plano financeiro e dados comuns; L5 para retenções sofridas | Código IRPC e Lei12/2025; exercício fiscal, residência/EP, saldos/perdas com ano e prova; resolver diferenças PDF/XLSX | 48–80 h |
| L7 — IRPC: tratamentos específicos | Contexto sectorial/territorial e fontes cadastradas | Casos identificados: tributação autónoma de despesas e mais-valias, taxas reduzidas/cooperativas, isenções/benefícios e operações especiais com condições rastreadas | Base L6, despesas, activos, relação territorial documentada | Disposição e período por tratamento; localização por si só não concede benefício. Lista de tratamentos aplicáveis explicitada no lote | 48–80 h |
| L6 — IRPC anual: regime normal | Disponível5aaf1a56:percurso normal demonstrado atécolecta,períodos/moedas e preparação parcialM20/M22 | Operacional no âmbito demonstrado por decisãoTempo26/10;limitações explícitas;5grupos código+5documentais preservados;sem conclusão integral | Plano financeiro,dados comuns,activos/livros e histórico;retenções/pagamentos/créditos anuaisL8 | Pendências bloqueiam só os casos dependentes;L7/L8 próprios | Estimativa inicial48–80h;saldo não reestimado |
| L7 — IRPC: tratamentos específicos | 632dc069 instalado;cumulações14 prontas emQA,sem instalação | CIRPC12+CBF16 qualificados e61(4) separado;incompatibilidadeCBF4/13 e lacunas explícitas;L7parcial | Activos/períodos/saldos/benefícios reutilizados;diferença25 uma vez e15 já nos75;taxa16% só sobre base elegível | Outras combinações/excepções e restantes tratamentos dependem de regra/parcela/ordem/limites;L8 conserva saldo final | Estimativa inicial48–80h;saldo integral não reestimado |
| L8 — IRPC: liquidação e pagamentos | Parcelas L5–L7 e formulários originais | PPC/PEC, deduções/créditos, dupla tributação quando aplicável, saldo anual a pagar/recuperar; calendário e reconciliação com pagamentos | Retenções, colecta, saldos anteriores, pagamentos/comprovativos | Base anterior para PPC/PEC, regras de limitação/transporte; não usar cinco anos ou compensação automática sem cotejo específico | 32–56 h |
| L9 — INSS: contribuição social | Massa salarial agregada e referência TCO3%+4% | Trabalhadores, remuneração/base contributiva, exclusões, empregador/trabalhador, TCO/TCP, declaração e encargos por período | Equipa/custos, entidade e calendário; cadastro de pessoa partilhado com L10 | Regulamento e alterações aplicáveis, natureza do vínculo; confirmar base antes da taxa. Contribuição social, distinta dos impostos | 24–40 h |
| L10 — IRPS: retenção mensal e líquido | Entrada IRPS, custos salariais e escalões anuais documentais | Tabela mensal própria, remunerações/benefícios, situação pessoal relevante, retenção, salário líquido e contribuição ligada a L9 | Mesmo trabalhador/folha salarial, pagamentos e retenções | Tabela mensal do período, residência e condições familiares necessárias; não dividir escalões anuais por12 | 40–64 h |
@@ -5754,3 +5754,938 @@ A identificação do exemplar e o critério deaceitação já foram definidos pe
DecisãoTempo:P001ficaresidual,provaspreservadasesematribuiçãoautomática06;retomaapenascomesclarecimentoconcretonovo.P058mantémâmbitoparcialdisponíveleexclusõesidentificadas.P084/P085mantêmfechooperacional.Avance:coberturaadicionalL3b189d0faQA,conferirapenasofaltanteepreparentregacompatível;reconciliarsaldoL3edepoisL4ISPCconformeplanoexistente.Semrepetirpesquisa/testesdosmesmospontossemnovainformação.Limitaçõesvisíveisnãoimpedempercursosindependentes.
CandidataisoladaemC:/laragon/www/portal-investidor-l3-qa-20261025,ramoscodex/l3-additional-delivery-20261025,baseb189d0fa/7ad187f9;provas43frontend/API1-105reutilizadas,nova conferência apenas dehashes,compatibilidadeecompilação. Preparação nãoéinstalação;execuçãoexigecomparaçãoautenticadaebackup/restauro fresco.
CandidataL3preparada:`0f4df8a4`,ramo`codex/l3-additional-delivery-20261025`. Buildetipos passaram;12ficheirosdedelta(10funcionaisjáaceites+2textosdelimitaçãoP001),7marcadorescompilados,schemas/PHP/configurações/dependênciassemalterações. Main/manifestopúblicoconferidosem7ad187f9;simuladorHTTP200. Scriptsprivadosdepreflight,backup/restauro,conferênciaprotegidaepúblicapreparadoscomguardasdenovoestado. Nenhumteste funcionalrepetido,nenhumaescritaactiva. Próximaexecuçãodaentrega:comparaçãoautenticadafresca,backup/restaurorealeconferênciadodelta. Não declararinstaladopelapreparação.
## 25/10/2026 — inícioL4-AISPCdepoisdapreparaçãoL3
L3candidata0f4df8a4preparada,provasaceitesreutilizadas;entregaefectivaexigepreflightautenticadoebackup/restaurofresco. SaldoL3mantémregularizaçõessequenciais/estornos,apuramentospróprios eformalidadesC/D/E;limitecontacentralATnãoénovacondiçãoorganizacional. NenhumresidualP001/P058bloqueiaL4.131fechosL1eP084/P085preservadosantesdosnovostestes. Acervofiscal/legislação/anexosacessíveisinventariadosemoutputs/ispc-l4a-20261025/preservation-before-tests.json.
L4-Aprimeiroincremento:enquadramentoelegibilidade2026,MZN,territórionacional,tipodepessoa,actividade,referênciaanual/prévisão,incompatibilidadesarts2–5,opçãoseparada.Reutilizarcamposválidosepreservarediçõesdeliberadas. Lei9/2025republicadaéfonteaceite;nenhumaaprovaçãogenéricaFiscalistaécriadacomoetapa. Apuramentotrimestral,escalões/excesso,mínimo/retençõeseformalidadescontinuamtrabalhopróprioL4seguinte;nenhumimpostocalculadoouregimeadoptadopelainventariação.
## 25/10/2026 — L4-A ISPC: primeiro incremento QA
Implementado enquadramento preliminar2026/MZN da actividade habitual pelos arts2–5 da Lei9/2025: referência anterior2025 ou previsão de início2026,limite4.000.000 inclusivo,incompatibilidades e dados concretos em falta. Regra183dias restrita aos serviços8(1)c. Opção permanece separada;seleccionarISPC não adopta regime. Perfil reutilizado com prévia e confirmação das divergências,edições deliberadas e outros livros preservados. Livro por contexto e histórico integrado no relatório existente.
Provas novas:12testesfrontend,tipos/build exit0. Não foram repetidos os testes aceites deL1/L2/L3/P001. Serialização/recuperação cobertas nos novos testes;transporte privado existente reutilizado. Demonstração visual integrada e gravação privada deste incremento continuam antes de propor entregaL4;nenhuma escrita activa. Recibo:ispc-l4a-eligibility-qa-20261025.json.
L4 continua aberto:apuramento trimestral,escalões e actividades mistas/excesso,mínimo500,retenção5%,percurso ocasional e formalidades próprias. As correspondências concretas serão tratadas no incremento seguinte,sem aprovação jurídica genérica ou bloqueio pelos residuaisP001/P058. L3 permanece aberto com candidata0f4df8a4 preparada e execução autenticada/backup-restauro por realizar. P084/P085 fechados;estatísticas/IA adiadas.
## 25/10/2026 — L4 ISPC: apuramento trimestral e percurso demonstrado em QA
O enquadramento e a opção guardados alimentam o apuramento trimestral de 2026 em MZN. O volume anual de acesso anterior, o volume anual do escalão e a base trimestral são distintos. Calculam-se as taxas de 3/4/5%, os serviços a 12/15%, a cumulação pela taxa maior e o excesso a 20%, com valores racionais exactos. O acumulado anterior impede repetir o excesso. O ano encerrado reconcilia os quatro trimestres; uma previsão permanece cenário. A prestação inferior a 500 MZN dispensa pagamento e conserva a declaração; exactamente 500 MZN mantém pagamento. A retenção de 5% nas aquisições ocasionais do artigo 12(3–4) tem livro e limite global de 2.500.000 MZN próprios, sem reduzir o imposto do adquirente.
Percurso demonstrado com componentes reais: elegibilidade/opção → cálculo → gravação → recuperação → relatório financeiro. Exemplo do T2: base de 200.000 MZN, taxa de 12%, imposto/prestação de 24.000 MZN e opção documentada em 01/01/2026. A API privada em QA passou 1 teste com 21 asserções, rollback e recusa de acesso a outra conta (404); os livros anteriores foram preservados exactamente. Passaram 13 testes novos (10 trimestrais e 3 de retenção), tipos e compilação. As fontes, provas aceites de L1/L2/L3/P001 e os 12 testes de L4-A foram reutilizados. Recibo: ispc-l4-quarterly-qa-20261025.json; provas: outputs/ispc-l4b-20261025.
O âmbito habitual trimestral está demonstrado em QA, ainda não instalado. O saldo de L4 fica delimitado às operações ocasionais próprias do artigo 3(3–4), às aquisições acima do limite global e à correspondência de formulários, instruções e regulamentação de 2026. O aviso primário do Governo sobre a aprovação de novo regulamento não fornece o articulado nem o modelo. Não se inventam formulários, prazos ou aprovadores; essas dependências não bloqueiam o cálculo habitual demonstrado. P001/P058 permanecem residuais e não interrompem a sequência; P084/P085 permanecem fechados.
## 25/10/2026 — entrega adicional de L3 com preservação conferida
O incremento de `0f4df8a4` foi instalado em `fa32a2b9`. Este descendente altera apenas a asserção de texto de um teste legado para o estado residual de P001 acordado; os cálculos e os 12 ficheiros runtime preparados mantêm os mesmos hashes. A referência de entrega conserva o candidato original e a correcção de compatibilidade. Backup fresco de 174 tabelas e 369 ficheiros, restauro isolado sem rede e comparação protegida com a mesma identidade confirmados. Nenhuma migração, importação de conteúdo ou alteração das 172 tabelas de negócio foi efectuada. Revisão/manifesto, sete marcadores compilados e simulador HTTP200 conferidos. As diferenças em cache correspondem ao reinício da fila e ao par contador/temporizador de limitação de pedidos; as sessões novas são anónimas e têm o agente das verificações de entrega.
A falta de espaço foi resolvida pela compactação verificada das dependências de construção de 11 versões antigas, conservadas em arquivo com hashes, ficheiros e ligações conferidos. A versão activa e a anterior não foram compactadas. Originais, código, backups, dados e recibos permaneceram disponíveis. O processo Git existente executou os seus controlos obrigatórios; não houve nova ronda manual dos casos funcionais aceites.
L3 continua aberto para regularizações sequenciais/reversões, apuramentos próprios de fornecimento/margem/viagens/eventos e formalidades C/D/E. Apenas esses casos dependentes ficam limitados. Preservam-se 16 MZN de IVA documental, zero de dedução nesta via, 12 reconhecidos, 7 recebidos e 5 por receber. P001 residual, P058 parcial e P084/P085 fechados mantêm os seus estados. L4 habitual trimestral está demonstrado em QA e não foi instalado. Recibo: l3-additional-delivery-20261025.json.
## 25/10/2026 — preparação Git da entrega L4 trimestral habitual
O candidato `6af7092e` foi preparado e publicado apenas no ramo `codex/ispc-l4-quarterly-qa-20261025`, sobre L3 instalado em `fa32a2b9`. O ramo principal e a revisão pública foram conferidos nesta base e não foram alterados. O bundle foi verificado. A comparação identificou nove ficheiros de aplicação: as três integrações existentes receberam apenas adições (6+6+1 linhas); onze ficheiros próprios de L3 e dezassete originais permanecem exactamente iguais. Os cinco marcadores compilados de L4 e os sete de L3 estão presentes. Não há delta de schema, PHP de aplicação, configuração ou dependências; o PHP acrescentado é apenas teste QA. O código experimental de P001 ficou excluído.
As provas QA aceites de cálculo, gravação privada, recuperação e relatório, assim como tipos e compilação da composição compatível, foram reutilizadas pelos respectivos hashes. Não houve nova ronda funcional. Prepararam-se os scripts guardados de comparação autenticada, backup, restauro isolado, integração Git sem force-push e conferência pública/protegida. Backup/restauro fresco e conferência de espaço continuam necessários na execução; o backup de L3 não foi apresentado como backup novo de L4. Esta preparação não instalou L4 nem alterou dados activos. Recibo: `ispc-l4-prepared-delivery-20261025.json`; pacote: `outputs/ispc-l4-delivery-20261025`.
L4 não fica integralmente concluído. Operações ocasionais próprias, aquisições acima do limite e formalidades de 2026 conservam os âmbitos e condições concretas registados. L3 mantém o saldo residual e a separação de 16 MZN documentais, zero de dedução nesta via, 12 reconhecidos, 7 recebidos e 5 por receber. P001/P058 aguardam os esclarecimentos previstos sem bloquear a entrega; P084/P085 permanecem fechados. Estatísticas e IA permanecem adiadas.
## 25/10/2026 — instalação do âmbito ISPC trimestral habitual
O candidato `6af7092e` foi integrado pelo Git e instalado sobre `fa32a2b9`. Foram conferidos backup/restauro fresco e isolado, nove ficheiros de aplicação de L4, onze ficheiros de L3 sem alteração, dezassete originais e os doze marcadores compilados de L4/L3. Os ficheiros persistentes e a configuração conservam os hashes do backup; as tabelas de negócio foram comparadas com a mesma identidade e contexto, sem inferir perda a partir de RLS. Diferenças operacionais de cache/sessões ficam explicitadas no recibo. Não houve migrações ou importações de conteúdo. As provas QA aceites foram reutilizadas; apenas os controlos obrigatórios do processo Git existente voltaram a executar, sem nova ronda manual.
Para assegurar espaço, dependências de construção de versões antigas foram compactadas em arquivo e verificadas antes de libertar a cópia descompactada. Versões activa e anterior, dados, originais, configurações e backups foram preservados. O recibo discrimina o arquivo e os respectivos controlos.
A equipa pode avaliar no portal o percurso habitual: elegibilidade/opção → cálculo trimestral → gravação → recuperação → relatório. O exemplo demonstrado mantém base de 200.000 MZN, taxa de 12% e imposto/prestação de 24.000 MZN. O ISPC não é apresentado como integralmente concluído: operações ocasionais próprias, aquisições acima do limite e formalidades de 2026 permanecem discriminadas. L3 e os seus residuais ficam preservados, incluindo 16 MZN documentais, zero de dedução nesta via, 12 reconhecidos, 7 recebidos e 5 por receber. P001/P058 aguardam os esclarecimentos previstos sem bloquear a sequência; P084/P085 permanecem fechados. Estatísticas e IA continuam adiadas. Recibo: `ispc-l4-delivery-20261025.json`.
## 25/10/2026 — inventário anterior ao delta residual ISPC
Antes dos testes novos, foram recuperadas as provas do percurso habitual instalado em6af7092e, L3 e os131fechos deL1; não há perdas confirmadas. P001/P058 eP084/P085 mantêm estados. O inventário local anterior foi reutilizado e os novos directórios oficiais daAT foram inventariados antes da selecção. O delta QA separa operações ocasionais próprias, cálculo das aquisições acima do limite e formalidades externas. Fontes novas: comunicadoAT9/2026 e exemplares B–Geral/Modelo30; republicaçãoIRPS19/2017 para incidência de actos isolados e taxa57(2)k, sem nova validação genérica. Não há alteração activa.
## 25/10/2026 — residuais ISPC agrupados em QA
Os três pontos foram tratados num delta compatível sobre o instalado `6af7092e`. Nas operações ocasionais próprias, o percurso distingue pessoa singular sem actividade habitual, acto imprevisível/não reiterado, operação nacional e famílias do artigo3(4); a correspondência positiva IRPS8(3h,4)/9 está identificada. A liquidação própria ISPC é separada da retenção liberatória comprovada: esta não gera segunda liquidação nem crédito duplicado. O exemplo próprio de100.000MZN a3%produz3.000MZN, mantendo opção documentada e pressupostos de projecção distintos.
Nas aquisições, acumulado de2.400.000MZN mais aquisição de200.000MZN separa100.000até ao limite e100.000excedentes. A primeira parcela conserva5.000MZN a5%. A parcela excedente não adquire taxa apenas pela ultrapassagem: o caso positivo implementado é acto isoladoIRPS57(2k), sem opçãoISPCaplicável e com rendimento ilíquido identificado, produzindo20.000MZN. As retenções são distintas e não reduzem o imposto próprio do adquirente. Enquadramento desconhecido ou fornecedor com opçãoISPC não recebem automaticamente5%ou20%. Vendedor/contexto376 e adquirente/contexto375 foram demonstrados separadamente.
As formalidades apoiam-se agora no ComunicadoAT9/2026 e no original B–Geral de duas páginas. Foram preparados os quadros1/2/3/5/6/8/10 e exportaçãoHTML, com identificadores de campo próprios de cada quadro; o Modelo30 ainda com75.000/3%antigos foi preservado e excluído do cálculo2026. O mês do período não é copiado do mês de pagamento. Submissão, recepção e pagamento ficam como actos externos declarados, com referências e histórico, sem os executar ou certificar.
O saldo separa cálculos de formalidades: juros compensatórios continuam sem fórmula por falta de regra/taxa/base/período aplicáveis; só montante documentado é conservado. Outros enquadramentos da parcela excedente exigem os seus dados e regra próprios, sem taxa genérica. Externamente faltam a correspondência concreta do período do quadro2, o modelo/código de entrega das retençõesISPC/IRPS e as instruções específicas2026 ainda não fornecidas. Identidade/NUIT/endereço/juros do caso sintético são dados da operação, não condição nova de acesso ao cálculo. Nenhuma dessas pendências bloqueia os casos positivos implementados.
Provas do delta:19testes novos distintos, APIprivadaQA1/22 comrollback, tipos e compilação, componentes reais com gravação/recuperação/relatório e preparaçãoHTML. O percurso habitual não foi recalculado: motores trimestral e de retenção existentes estão inalterados; o resultado de24.000MZN foi preservado exactamente. Conferiu-se apenas a visibilidade afectada: no modo ocasional os controlos habituais/do adquirente ficam ocultos com explicação e histórico; no contexto habitual continuam disponíveis. L3,17originais anteriores e131fechosL1foram preservados;P001/P058nãointerrompem eP084/P085permanecemfechados. QA não é instalação nem fecho integralISPC. Recibo:`ispc-residuals-qa-20261025.json`.
Na representação do B–Geral, a dispensa inferior a500MZN permanece uma correspondência formal específica: imposto calculado e prestação zero são mostrados separadamente, sem preencher o montante apurado como zero. O código não inventa a instrução de preenchimento. Este ponto não altera nem bloqueia o cálculo10-Ajá demonstrado.
Uma retenção liberatória documentada na mesma operação permanece no histórico e impede nova prestação própria sem referência concreta de correcção; mudar apenas a opção de liquidação não apaga o benefício anterior. Caso dirigido adicional aceite.
## 25/10/2026 — entrega conjunta dos residuais ISPC demonstrados
Instalado `5c0cb25c` pelo Git sobre `6af7092e`, com backup/restauro fresco isolado, conferência dos sete ficheiros afectados, dos ficheiros de preservação habitual/L3, de21originais, dos ficheiros persistentes/configuração e das tabelas com identidade equivalente. As provas funcionais aceites foram reutilizadas; apenas o processo Git existente executou os seus controlos obrigatórios. Sem migrações ou importações. Diferenças operacionais de cache/sessões estão delimitadas no recibo `ispc-residual-delivery-20261025.json`.
Disponível: operações ocasionais próprias no âmbito demonstrado, parcela excedente no caso IRPS qualificado e preparação/exportação B–Geral. A retenção liberatória anterior não é apagada ao mudar o percurso. Ainda por concluir: fórmula de juros, outros enquadramentos do excedente e correspondências/instruções de preenchimento2026 identificadas no recibo. Actos da AT permanecem externos: exportar não submete nem obtém aceitação. Este incremento não conclui todo o ISPC nem o IRPS. O habitual e L3 permanecem preservados, incluindo16documentais/0dedução nesta via/12reconhecidos/7recebidos/5por receber. P001/P058não bloqueiam;P084/P085fechados;estatísticas/IAadiadas.
## 25/10/2026 — inventário anterior a L5
Recuperadas as provas aceites de L3, ISPC instalado5c0cb25c e131fechosL1. Sem perdas confirmadas. IRPS continua limitado ao caso demonstrado; residuaisISPC não bloqueiam retençõesIRPC independentes. Acervo anterior inventariado é reutilizado antes da selecção; contrapartes/documentos/pagamentos serão ligados aos livros existentes sem os duplicar ou apagar. Não houve testes novos nem alteração activa neste inventário.
## 25/10/2026 — L5: primeiro incremento executável em QA
Preparado sobre o instalado `5c0cb25c`, com livros de retenções por contexto. Reutiliza fornecedores, documentos e linhas de aquisições e operações de venda existentes. As vendas não têm um cadastro próprio de contraparte: esse dado permanece por completar, sem ser inferido da localização. As edições deliberadas são conservadas; uma alteração na origem mostra os valores divergentes e permite reconciliar o vínculo sem sobrescrever essas edições.
O cálculo implementado corresponde aos 10% da Lei 12/2025 para bens e serviços digitais e comissões de agentes de moeda electrónica, no recorte não residente e não imputável a estabelecimento estável. Exige a qualificação do titular e devedor como sujeitos a IRPC, a incidência moçambicana e os factos ou pressupostos aplicáveis, sem convenção ou dispensa invocada. A data resulta dos eventos aplicáveis do artigo 67(5), incluindo o reconhecimento do custo; um pagamento posterior não desloca o evento anterior para outro período. A base do rendimento fica separada do IVA.
No exemplo sintético de rendimento pago, 100.000 MZN produzem retenção de 10.000 MZN; a entrega associada é de 6.000 MZN e o saldo por reconciliar é de 4.000 MZN. No exemplo de retenção sofrida, o cálculo é de 2.000 MZN, com comprovativo de 1.500 MZN e diferença de 500 MZN, sem crédito anual automático. Um comprovativo pode ser repartido entre operações e contextos, sem exceder o montante disponível. Alterações em contextos sem pagamentos partilhados não desactualizam o resultado. Pagamentos de IVA mantêm os vínculos anteriores.
O MRFTA 19/39 da AT foi conferido nas duas páginas, incluindo as instruções. O quadro 1 identifica retenção, o quadro 2 corresponde a um mês/ano único e o quadro 7 contém base, taxa e imposto. O CER e a correspondência das novas categorias digitais permanecem por esclarecer. A Lei 12/2025 contém uma remissão concreta do artigo 67(7) para 62(6), enquanto a nova taxa aparece em 62(5): essa diferença é preservada, sem renumerar o original ou bloquear o cálculo independente. As instruções do exemplar indicam o prazo nominal de dia 20 do mês seguinte à dedução; não foram presumidos ajustes de calendário, prorrogações ou instruções específicas de 2026. A exportação é um mapa de preparação, sem assinatura, submissão, recepção ou aceitação AT.
**Saldo de L5:** correspondência das taxas normais e especiais dos artigos 62(1–4), dispensas para residentes/EP, convenções invocadas, conversão cambial, juros, rectificações e guia agregada. A Lei 20/2022 está identificada pela INM na página 2731 do BR 252, mas o exemplar local com essa data/número contém apenas o 3.º suplemento turístico. A ausência desse texto específico não é um pedido de revalidação da sua credibilidade. O código local de 2002 foi identificado como revogado e não foi usado em cálculos de 2026. Cada lacuna afecta apenas o ramo dependente, sem taxa ou zero genéricos.
Provas do delta: 17 testes novos distintos; API privada em QA, 1 teste e 23 verificações com rollback; tipos e compilação; componente real com cálculo, gravação, recuperação, relatório, exportação e reutilização de uma aquisição anterior. A demonstração visual local em ficheiro é distinguida da prova da API privada. O controlo adicional de pagamentos partilhados foi conferido por caso dirigido, sem repetir as provas funcionais anteriores.
L3 e ISPC permanecem preservados, assim como os 21 originais anteriores e os 131 fechos de L1. Os residuais ISPC ficam na mesma matriz; o IRPS conserva apenas o caso anteriormente demonstrado. P001/P058 não bloqueiam e P084/P085 permanecem fechados. Estatísticas e IA continuam adiadas. L5, IRPC e IRPS não estão integralmente concluídos. Não houve instalação, migração, importação ou alteração activa. Recibo: `irpc-l5-withholdings-qa-20261025.json`.
## 25/10/2026 — inventário anterior ao agrupamento de L5
Recuperadas as provas aceites de `da0d8abb`, L3, ISPC instalado `5c0cb25c` e 131 fechos de L1. Sem perdas confirmadas. O selector cambial, a conversão e os históricos entregues foram identificados por hash antes do novo delta e serão reutilizados. O novo exemplar integral do BR 252/2022 contém a Lei 20/2022 na primeira página; as 268 páginas ficam preservadas e inventariadas, sem activar outras regras do PESOE. Dispensas, convenções, juros e MRFTA permanecem discriminados. Nenhum teste novo ou alteração activa neste inventário.
## 25/10/2026 — L5: agrupamento de taxas e reutilização do câmbio entregue
O conjunto preparado inclui `da0d8abb` e os novos enquadramentos compatíveis, sem instalar no portal. A Lei 20/2022 foi recuperada no exemplar completo do BR 252/I, página 2731, resolvendo a falta de texto que impedia o cotejo anterior. O original antigo, com o 3.º suplemento turístico, permanece identificado e preservado. Não se repetem pesquisas ou validações genéricas sem nova evidência.
Foram acrescentados os ramos qualificados de 20% para royalties, equipamentos, serviços e capitais não cotados de não residentes; royalties de residentes e rendas comuns conservam a natureza por conta quando aplicável. Os ramos dependentes das dispensas ficam separados. Os juros de bilhetes do Tesouro/dívida cotada e permutas de liquidez qualificadas de entidades com sede e direcção efectiva nacionais têm retenção liberatória de 20% pelo artigo 62(3), sem crédito anual automático.
As taxas especiais de 10% do artigo 62(4) ficam limitadas às condições demonstradas: telecomunicações, transportes internacionais, equipamentos conexos, manutenção/fretamento de aeronaves, infraestruturas eléctricas em projectos públicos de electrificação rural, afretamento marítimo de pesca/cabotagem e outros títulos cotados na Bolsa de Valores de Moçambique, com a exclusão da dívida/bilhetes abrangidos pelo número 3(a). Não se confundem com a taxa digital do número 5. Os benefícios agrícolas com termo em 31/12/2025 não foram transportados para 2026.
O câmbio reutiliza, sem alteração, `SimulationFxSelection`, `selectFx`, `fxSelectionKey` e `convertCents`. O adaptador de retenções liga a selecção existente à base ou ao comprovativo de retenção sofrida. Conserva montante/moeda originais, boletim, coluna, sentido e data; não usa taxa actual nem calcula uma média própria. A data cambial fica distinta do evento do artigo 67(5). Uma confirmação sem alteração conserva o vínculo à origem; uma edição deliberada passa a selecção para o controlo dessa linha, mantendo o histórico anterior. Uma origem alterada torna visível a divergência apenas nos resultados dependentes.
Exemplo de royalty: 1.000 USD, com taxa sintética 64 MZN/USD, produzem base de 64.000 MZN e retenção de 12.800 MZN a 20%; comprovativo AT de 5.000 MZN deixa 7.800 MZN por reconciliar. No exemplo de retenção sofrida, a base de 100 USD converte para 6.400 MZN, o imposto é de 1.280 MZN e o comprovativo de 10 USD corresponde a 640 MZN, com diferença de 640 MZN. A conversão não transforma o pagamento ao beneficiário em entrega à AT; esta conserva o montante MZN efectivamente documentado. Pagamentos e parcelas continuam ligados e não podem ser usados além do montante disponível, incluindo entre contextos.
Passaram 19 testes novos distintos, com casos dirigidos para natureza dos capitais, relatório e vínculo cambial; os 17 testes anteriores de L5 não foram repetidos. A API privada em QA passou 1 teste e 34 verificações com rollback e guardas contra a base activa. Tipos, compilação, conferência do selector existente dentro da retenção, cálculo, gravação, recuperação, relatório e exportação foram demonstrados. A página visual sintética grava apenas um ficheiro local; a prova da API privada é separada. Os resultados aceites de `da0d8abb` permanecem actuais quando não afectados e foram preservados no histórico do conjunto.
Permanecem separados: dispensas e casos residentes/EP que delas dependem, convenções invocadas, categorias/devedores/períodos fora deste recorte, juros, rectificações e correspondências/CER do MRFTA. Cada pendência identifica os dados e a condição de resolução no recibo `irpc-l5-grouped-qa-20261025.json`; não bloqueia casos independentes. Exportar a preparação não submete nem obtém aceitação AT. L5, IRPC e IRPS não estão integralmente concluídos.
O portal mantém `5c0cb25c`, com L3 e ISPC preservados. O saldo ISPC continua na mesma matriz e o IRPS conserva o caso anteriormente demonstrado. P001/P058 não bloqueiam; P084/P085 permanecem fechados; estatísticas e IA continuam adiadas. Foram conservados os 26 originais anteriores e acrescentado um novo original. A instalação futura exige a comparação autenticada do destino, backup/restauro fresco e conferência do delta pelo procedimento Git existente, sem repetir provas aceites.
## 25/10/2026 — L5: dispensas e convenção demonstradas em QA
Base de código `2b33a1c3`, ramo `codex/irpc-l5-reliefs-qa-20261025`. O último relatório de instalação mantém o portal nessa entrega; este candidato não executa instalação. O inventário anterior de L3, ISPC, câmbio, fontes e provas aceites é reutilizado. Comparação do delta: sem alteração nesses módulos, em schema/migrações, configuração ou permissões; sem escrita na base activa. As correcções de codificação que tinham atingido trechos históricos durante a preparação foram retiradas do delta; os registos anteriores são conservados.
**Executável:** dispensa 68(d) para serviços/uso de equipamento 67(1)b/g com natureza por conta, titular sujeito a IRPC relativamente ao rendimento; dispensa 68(f) para rendas de sociedade de gestão de imóveis próprios fora da transparência fiscal 6(1)c; limite convencional de 10% sobre royalties/uso de equipamento qualificados PT–MZ, não digitais, titular residente convencional em Portugal, beneficiário efectivo, sem EP em Moçambique, devedor residente em Moçambique e montante sem excesso por relações especiais. As condições são dados documentados do caso, sem aprovador adicional. A selecção de regra não é substituída por texto livre ou taxa manual. Outros ramos continuam separados.
Reutilizados contraparte, residência/EP, documento, qualificação, montante e conversão da linha. Diploma, artigo, período, documentos e condições ficam no mesmo livro e no histórico. Alterar a prova invalida apenas a correspondência do resultado afectado. A dispensa produz retenção zero justificada, apresentada como dispensa, sem isentar o rendimento nem gerar crédito anual. Informação insuficiente, negativa, período incompatível ou artigo divergente fica indeterminada, sem zero/taxa reduzida presumidos. A existência de prova de entrega numa linha dispensada pede reconciliação sem apagar o pagamento.
**Demonstração:** Wayfinder `wayfinder:generate --with-form`, pelo wrapper QA guardado `tools/irpc-reliefs-qa.php routes`; TypeScript passou; compilação completa QA passou. Nove testes novos e cinco verificações dirigidas de compatibilidade IRPC passaram. API privada: um teste/17 verificações, base `simulator_fiscal_delta_20261021_test`, loopback55441, transacção com rollback. Resultados 68(d),68(f), convenção e informação insuficiente recuperados com documentos/histórico. Relatório de retenções, exportação de preparação e dossier financeiro conferidos a partir da recuperação da API. Corrigida a associação da secção «IRPC — retenções» à secção financeira do dossier: a linha existia, mas era omitida nessa apresentação. UI sintética do componente real demonstra cálculo, gravação/recuperação local e relatório; esta prova local é distinta da API privada.
**Reprodução:** gerar routes/actions com `php tools/irpc-reliefs-qa.php routes`; executar `node --test tests/frontend/irpc-reliefs.test.mjs` (produz a amostra sintética); executar `php tools/irpc-reliefs-qa.php test`. Usar PHP8.5/Node24 e dependências existentes. `tsc --noEmit`; compilação `INVESTMOZ_QA_BUILD=1 vp build` no ramo QA. Os módulos gerados são artefactos locais, sem edição manual ou commit.
**Saldo na mesma matriz:** restantes alíneas68, categorias digitais/residentes não correspondidas, outras convenções/Estados e casos com EP, dividendos/juros ou excesso por relações especiais mantêm correspondência própria. Juros de mora, rectificações, agregação, rubricas/CER e preenchimento do MRFTA permanecem discriminados. O cálculo convencional não declara cumpridas as formalidades de accionamento, recepção ou aceitação AT. Não são transportados formulários portugueses21-RFI para obrigações moçambicanas. Pendências condicionam apenas os casos dependentes. L5, IRPC e IRPS não estão integralmente concluídos. L3/ISPC/câmbio não foram retestados; as suas provas são reutilizadas. Entrega conjunta preparada apenas para os recortes demonstrados. Instalação futura segue o procedimento Git e os controlos de destino/backup/restauro já existentes.
Recibo: `docs/investmoz/simulations/irpc-l5-reliefs-qa-20261025.json`; provas locais em `outputs/irpc-reliefs/`.
## 25/10/2026 — dispensas IRPC e convenção PT–MZ instaladas pelo Git
Instalada `ce746d88`, com `2b33a1c3` preservada como release anterior. Backup fresco2026-10-25T18:00:39Z:174 tabelas e369 ficheiros/configuração;restauro isolado em contentor sem rede/55441 passou. Quatro ficheiros de execução conferidos,28 protegidos L3/ISPC/câmbio e29 originais preservados. Schema,permissões e configuração iguais;zero migrações/importações. As172 tabelas de negócio mantêm checksums;apenas cache operacional e sessões anónimas das verificações foram reconciliadas. O mínimo de espaço do instalador foi reposto pelo arquivo e verificação de dependências de5 releases antigas,sem tocar na actual/anterior nem apagar dados/backups.
Manifesto público/revisão servida,8marcadores compilados e simuladorHTTP200 conferidos. Provas QA aceites reutilizadas;CI habitual do procedimento Git passou. Sem ampliar a cobertura:68(d/f) e royalties/uso de equipamento PT–MZ nos casos efectivamente demonstrados. Juros,MRFTA e restantes casos continuam na mesma matriz;L5 permanece parcial. Seguimento em QA separado,sem instalar novos cálculos. Recibo:`irpc-l5-reliefs-delivery-20261025.json`.
## 25/10/2026 — juros e preenchimento MRFTA: incremento QA após ce746d88
O portal mantém a entrega instalada `ce746d88`, com `2b33a1c3` preservada;recibo de instalação `irpc-l5-reliefs-delivery-20261025.json`. Seguimento isolado em `codex/irpc-juros-mrfta-qa-20261025`,sem nova instalação. Reutilizadas as provas aceites;29 originais e29 ficheiros protegidos conferidos por hash. Sem delta de schema,configuração ou permissões.
**Preenchimento:** quadros1–7 do MRFTA de preparação,um mês/ano;identidade fiscal reutilizável entre livros sem sobrescrever edições nem misturar NUIT distintos. Base,taxa,imposto,documentos e entregas vêm do cálculo IRPC guardado. Agrupamento apenas da mesma rubrica/taxa/CER. Retenções sofridas,dispensas e outros períodos ficam separados. CER requer referência aplicável;os números de campos do M/39 antigo não são convertidos em códigos de receita. Rubricas digitais/especiais desconhecidas e múltiplas taxas na mesma rubrica permanecem discriminadas. Quadros8/9 não são assinados/preenchidos pelo portal. Exportação HTML de preparação,não alteração do PDF oficial nem declaração submetida.
**Juros:** Decreto9/2008,25/35,PDF6/8,p121/123 identifica MAIBOR12meses+2p.p.;BM documenta a descontinuidade da publicação. Não foi obtido parâmetro fiscal sucessor aplicável2026;MIMO/Prime não o substituem. Implementada transcrição de juros compensatórios de liquidação documentada,com período,data,montante e referência;ou ausência de atraso quando entrega integral e datas/prazo documentados coincidem. Informação insuficiente não vira zero. Juros de mora continuam por implementar. O subtotal do principal permanece disponível;total do formulário fica indeterminado enquanto faltarem juros,CER,completude ou situação de outras rubricas (IRPS/autónoma),sem isenções ou créditos presumidos. A completude é um dado da preparação,não novo aprovador organizacional.
**Prova do delta:**12 testes novos+1 de apresentação IRPC;TypeScript e compilação QA passaram. API privada1teste/14verificações com rollback no55441;preparação→gravação→recuperação→relatório/dossier. UI real em exemplo sintético:preparação,gravação/recuperação local,informação insuficiente e download HTML;prova API separada. CER999 é fictício de teste,não taxa/código oficial activado. Exemplo:principal20000MZN,entrega3000,juros documentados500,total17500;alterar provas conserva histórico e desactualiza a preparação. Não foram repetidas manualmente suites L3/ISPC/câmbio.
**Saldo:**cálculo automático dos juros e taxa aplicável2026,juros de mora,catálogo CER integral,rubricas digitais/especiais,mistura de taxas e obrigações IRPS/autónomas fora do recorte. Limita apenas as parcelas dependentes;L5/IRPC/IRPS continuam parciais. Recibo `irpc-juros-mrfta-qa-20261025.json`;provas locais `outputs/irpc-mrfta/`.
Reprodução QA: `php tools/irpc-mrfta-qa.php routes`; `node --test tests/frontend/irpc-mrfta.test.mjs`; `php tools/irpc-mrfta-qa.php test`. PHP8.5,Node24,dependências existentes;alvo e identidadeQA guardados antes de fornecedores/testes.
## 25/10/2026 — entrega5fa64bc0 instalada;seguimento restrito a juros/CER em QA
Instalada pelo Git a revisão exacta `5fa64bc0`,com `ce746d88` preservada como release anterior. Backup fresco2026-10-25T18:28:38Z;174tabelas e369ficheiros/configuração;restauro isolado sem rede/55441 passou. Quatro ficheiros de execução,29protegidos e30originais conferidos. Schema,permissões e configuração iguais;zero migrações/importações. As172tabelas de negócio mantêm checksums;apenas cache operacional e sessões anónimas da instalação/verificação foram reconciliadas. Revisão/manifesto públicos,8marcadores compilados e simuladorHTTP200 passaram. Provas aceites reutilizadas,sem nova ronda manual;CI habitual do instalador passou.
Cobertura instalada:preparação por período,registo de juros documentados e relatório/exportação MRFTA. Registar não significa calcular automaticamente;CER/rubricas desconhecidos continuam identificados sem preenchimento presumido. Não houve submissão ou aceitação AT. Seguimento isolado apenas de juros automáticos eCER/rubricas;L5continua parcial,L3/ISPC/câmbio preservados. Recibo:`irpc-mrfta-delivery-20261025.json`.
## 25/10/2026 — seguimento QA restrito: juros automáticos e casos CER/rubricas
Portal instalado em `5fa64bc0`,com `ce746d88` preservada;recibo `irpc-mrfta-delivery-20261025.json`. Novo ramo `codex/irpc-interest-cer-qa-20261025`,sem instalação. Não foram reabertos outros saldos L5.
**Juros:** nova aritmética racional diária por parâmetros documentados do caso:taxa anual final,fonte/fundamento fiscal,vigência na data de liquidação,base anual,arredondamento do total e ocorrência. Nenhum valor vem pré-definido. Intervalos começam no dia posterior ao prazo documentado;entregas reduzem a base após o seu dia e o pagamento integral pára encargos. Contagem por ano/base365/366 e arredondamento só conforme convenção preenchida com referência. Definitiva e por conta retida cobertas neste recorte;por conta não retida e mora mantêm regra própria. Sem perfil completo,juros indeterminados e principal preservado. A taxa10%,base365 e convenções dos testes são fictícias,sem activação de parâmetro fiscal2026. O registo de liquidação documentada da entrega instalada mantém significado e histórico.
**CER/rubricas:** separação estável por período,rubrica,taxa e CER,com documentos e referências. Fichas de trabalhoHTML independentes conservam as pendências globais;não são declarações autónomas,anexos oficiais nem uma taxa média. Teste integrado distingue retenções20%/10% e CERfictícios999/998;juros por perfil permanecem demonstráveis,mas o total do formulário continua indeterminado pela transposição de rubricas distintas. Ausência de código ou referência continua identificada,sem preenchimento presumido. Nenhum catálogo CER oficial foi acrescentado.
**Compatibilidade/provas:** campos novos adicionais conservam os modos conhecidos pelo leitor5fa64bc0. Prova só de leitura/gravação exacta do novo payload nesse leitor:retenções actuais e nova preparação histórica,sem executar novamente cálculos antigos. Preservados31ficheiros de execução e30originais por hash. TypeScript,buildQA e13testes novos passaram;API1teste/19verificações com rollback em55441. UI:parâmetro fictício explícito,sem taxa→indeterminado,gravação/recuperação,relatório e download de casos20%/999 e10%/998. Relatório do dossier a partir da recuperação API. Provas aceites L3/ISPC/câmbio e5fa64bc0 reutilizadas;sem nova ronda manual das suites antigas.
**Saldo,apenas os mesmos dois pontos:** (1)corresponder fonte/parâmetro fiscal vigente2026 e convenções aplicáveis,além dos ramos mora/por conta não retida fora desta aritmética;(2)corresponder catálogo CER/rubricas ainda pendentes e procedimento oficial para taxas/códigos distintos. O inventário oficial AT189documentos foi consultado por metadados,não relido integralmente;nenhuma taxa/código foi inferido de rascunho,número de campo,agregado orçamental,MIMO ouPrime. L5 continua parcial. Recibo `irpc-interest-cer-qa-20261025.json`;provas em`outputs/irpc-interest-cer/`.
Reprodução do delta em QA: `php tools/irpc-interest-cer-qa.php routes`;`node --test tests/frontend/irpc-interest-cer.test.mjs`;`php tools/irpc-interest-cer-qa.php test`. Dependências existentes,PHP8.5/Node24;alvo QA guardado antes dos fornecedores/testes.
## 25/10/2026 — esclarecimentos concretos para a AT (AUD-SIM-INT02, L5 parcial)
Esta discriminação desenvolve os mesmos dois pontos; não cria outra matriz nem reabre provas aceites. Base instalada: `5fa64bc0`; funcionalidade demonstrada em QA: `acf8ec3c`. Os exemplos abaixo são perguntas de aplicação, não parâmetros ou códigos oficiais. Não foram enviados à AT por este registo.
| Dúvida na mesma matriz | Parâmetro ou correspondência exacta em falta / esclarecimento a obter | Exemplo para acompanhar o esclarecimento | Comportamento enquanto falta |
|---|---|---|---|
| J1 — taxa e vigência | Valor anual final aplicável na data de liquidação em 2026, incluindo eventual acréscimo; série/diploma sucessor da referência MAIBOR 12 meses + 2 p.p., fonte, início e fim de vigência (`annualRate`, `rateSource`, `fiscalBasis`, `validFrom`, `validTo`). | Retenção definitiva de 7 300 MZN, prazo documentado 20/11/2026 e liquidação em 30/11/2026: qual taxa anual final usar? Os 10% do ensaio são fictícios. | Sem taxa predefinida; não substituir por MIMO/Prime. Perfil completo permite apenas simulação pelos dados introduzidos. |
| J2 — contagem diária | Base anual aplicável: 365, 366 ou dias efectivos por ano (`dayBasis`, `dayBasisRef`); incidência do dia da entrega parcial e divisão de períodos entre anos. | Mesmo principal de 7 300 MZN, entrega de 3 650 em 25/11 e liquidação em 30/11: a redução começa em 26/11? Num intervalo 31/12/2027–02/01/2028, qual denominador em cada ano? | Motor demonstra dia posterior ao prazo, dia da entrega incluído e redução no dia seguinte; só usar como pressuposto de simulação até esclarecer a aplicação. |
| J3 — arredondamento | Método e momento oficiais: total ou parcela/dia, cêntimos, metade por excesso ou outra convenção (`rounding`, `roundingRef`). | 7 300 MZN × taxa fictícia 10,0025% × 10/365 = 20,005 MZN: declarar 20,00 ou 20,01? Arredondar só o total ou cada segmento? | As duas opções do motor são convenções explícitas de simulação; outra convenção mantém o caso por implementar. |
| J4 — retenção por conta não efectuada | Regra e datas específicas dependentes da declaração/liquidação anual, base e limite temporal; não equiparar a retenção efectuada ou definitiva (`retention`, `occurrenceRef`). | Retenção por conta de 7 300 MZN não efectuada em Novembro/2026: até que evento anual se contam juros e sobre que montante? | Ramo indeterminado; não herda a fórmula do ramo demonstrado. |
| J5 — mora | Taxa, fundamento, início/fim, base após pagamentos e articulação com juros compensatórios, evitando duplicação. | Liquidação documentada de compensatórios, com saldo de imposto de 3 650 MZN ainda não pago após o prazo: quando começa a mora e sobre que parcelas? | Mora não calculada; registo de liquidação documentada mantém-se independente. |
| C1 — CER de capitais e prediais por conta | Código CER exacto e referência/versão para cada rubrica “Taxa normal — Rendimentos de capitais e mais valias” e “Taxa normal — Rendimentos prediais”. | Dois pagamentos no mesmo mês: juros de financiamento e renda de imóvel, ambos com retenção por conta: quais CER respectivos? São códigos distintos? | CER por identificar; nome da rubrica já correspondido não prova o código. |
| C2 — CER das quatro rubricas liberatórias | Código CER exacto e referência/versão por rubrica: actividade intelectual/industrial e informações; uso de equipamento; aplicação de capitais e rendimentos prediais; comissões/intermediação/prestação de serviços. | No mesmo período, royalties, aluguer de equipamento, juros e comissão a não residentes: indicar o CER de cada natureza e eventual distinção adicional. | Cada natureza permanece separada; não reutilizar números de campos do M/39 como CER. |
| C3 — rendimentos digitais/especiais | Rubrica MRFTA e CER exactos para cada categoria não correspondida, conforme qualificação fiscal documentada; distinguir de serviços comuns. | Pagamento a não residente por serviço digital já qualificado no livro IRPC: em que rubrica/CER deve ser transcrito? Um serviço comum tem a mesma correspondência? | Categoria sem correspondência continua pendente; não copiar para serviços comuns por aproximação. |
| C4 — taxas diferentes na mesma rubrica | Forma oficial de transcrever várias taxas: linhas adicionais, anexo ou outro procedimento, com indicação dos campos; confirmar se o CER varia com regime/convenção. | Royalties de base 10 000 MZN à taxa interna de 20% e outros de 10 000 à taxa convencional demonstrada de 10%, no mesmo mês: como apresentar bases/impostos sem taxa média? | Duas fichas de trabalho; total oficial permanece indeterminado enquanto depender dessa transposição. |
| C5 — códigos diferentes na mesma rubrica | Forma oficial de conservar códigos distintos no mesmo período/rubrica e regra de totalização/entregas; obter os códigos reais antes de preencher. | Duas parcelas agrupáveis por rubrica mas com CER distintos segundo documentos do caso: uma ou várias linhas/guias? Nos ensaios, 999/998 são apenas marcadores fictícios. | Separar período/rubrica/taxa/CER; não inventar declarações autónomas nem reconhecer marcadores como oficiais. |
**Entrega funcional independente:** aritmética pelos pressupostos explicitados, reconciliação de entregas, gravação/recuperação/relatório e fichas separadas podem acompanhar a entrega. Interface e exportações identificam simulação e CER introduzido sem validação por catálogo; referência digitada não equivale a confirmação fiscal. Não activar taxa ou catálogo global por esta entrega. A ausência de dados conserva indeterminação e principal. As respostas da AT poderão completar apenas as células correspondentes, com fonte e vigência, sem outra pesquisa genérica ou nova aprovação inventada.
**Preservação:** L3, ISPC, câmbio, `ce746d88` e `5fa64bc0` conservam provas aceites; nenhum caso aceite foi reaberto. L5 permanece parcial. O presente delta de apresentação/documentação não altera schema, API, permissões, originais ou regras de retenção.
## 25/10/2026 — L5 operacional no âmbito demonstrado; entrega 7a11c4ef
Instalado pelo Git `7a11c4ef8f06ef149eb0488be3cd0749dc609bd0`, sobre `5fa64bc0`, sem força, migrações ou importações. Backup fresco em 25/10/2026 19:14:23 UTC, restaurado em PostgreSQL isolado (rede nenhuma/porta55441):174 tabelas por contagem/checksum. Conferidos4ficheiros do delta,31protegidos,30originais e369ficheiros/configuração persistentes. Schema,roles/grants e permissões conservados.172tabelas de negócio iguais;cache/sessões reconciliadas com reinício da fila,throttle e sessões anónimas da verificação. Versão5fa64bc0 conservada como anterior;L3,ISPC,câmbio e provas aceites preservados. Arquivadas e verificadas dependências de8versões antigas para respeitar espaço mínimo,sem eliminar fontes,dados ou backups nem modificar versões actual/anterior.
Revisão/manifest públicos,8marcadores compilados,4assets e simuladorHTTP200 conferidos. Pipeline normal:1teste/3106asserções,59testes/317asserções,872testesfrontend,tipo/build;sem outra ronda manual das provas aceites. Recibo:`irpc-interest-cer-delivery-20261025.json`.
**L5 fica operacional apenas no âmbito demonstrado**, incluindo preparação por período,registo de juros documentados,simulação por pressupostos explícitos e fichas separadas porCER/rubrica/taxa. Não confirma fiscalmente juros nem converte códigos provisórios em correspondências oficiais. As dez dúvidas J1–J5/C1–C5 da secção anterior acompanham a reunião com a AT;permanecem pendentes e não foram enviadas por esta operação. Sem informação nova,não reabrir a pesquisa desses pontos. Não declararL5 integralmente concluído.
**Sequência autorizada:**L6—IRPC normal,começando pela ponte do resultado financeiro aos ajustamentos documentados. Retenções/créditos anuais,amortizações,perdas e colecta conservam desenvolvimento próprio;nenhuma pendênciaL5 bloqueia o primeiro recorte independenteL6.
## 25/10/2026 — L6 iniciado em QA: primeiros ajustamentos ao resultado financeiro
Base instalada7a11c4ef;L5 operacional apenas no âmbito demonstrado. Primeiro recorteL6 reutiliza a ponte financeira reconciliada por oportunidade,receitas/custos discriminados e resultado antes de imposto. Corresponde explicitamente12meses aJan–Dez2026,MZN,sujeito residente no regime geral fora de transparência/regimes especiais. Projecção com pressupostos,não demonstração contabilística confirmada. Art17(1)é enquadramento da ponte,não equivalência automática do resultado antes de imposto ao lucro tributável.
Implementados acréscimos integrais36(1)c de multas/encargos por infracções sem origem contratual e juros compensatórios já incluídos no custo de origem. Documento/linha,qualificação,montante e inclusão têm suporte/pressuposto expresso. Não classifica juros comerciais nem multas contratuais por aproximação,não importa juros simuladosL5 como despesa efectiva. Limites por custo da origem e duplicação documental previnem dupla contagem. Encargo já excluído não é acrescentado de novo. Lacuna limita a respectiva parcela;acréscimos independentes continuam disponíveis,resultado parcial agregado indeterminado se houver parcela não resolvida.
Exemplo sintético:resultado financeiro6480MZN,multa100 e juros compensatórios20 incluídos;acréscimos120,resultado parcial6600. Sem suporte da multa:apenas20 demonstrados,resultado parcial indeterminado. Lucro tributável,matéria colectável e imposto permanecem indeterminados em todos os casos. Outros ajustamentos,custos/variações patrimoniais,amortizações,perdas,deduções/colecta,créditos anuais eM20/M22 seguem por recortes próprios;EP/regimes especiais,outra moeda/exercício/horizonte não abrangidos.
Prova do delta:7testes novos;APIprivada1teste/19asserções comrollback naQA55441;routes/actions gerados pelo procedimentoWayfinder;TypeScript/buildQA passaram. UI real:cálculo,gravação/recuperação local,relatório,informação insuficiente e download;API demonstrada separadamente,dossier gerado da recuperaçãoAPI. LivroL6 separado mantém payloadL5 e restante histórico;alterar plano/entradas torna resultado histórico sem o apagar.32ficheiros anteriores protegidos e30originais sem alteração;integração mínima emsimulation-form/project-dossier/project-dossier-report. Provas aceites não repetidas. Recibo:`irpc-l6-adjustments-qa-20261025.json`;QA isolada,sem instalaçãoL6.
Fonte adicional necessária apenas paraL6:exemplar oficialAT intitulado19/2009 contém tambémLei20/2009;PDF4/p272(16),36(1)a–i mantidas ealíneasj–n aditadas,conferido visualmente. Lei4/2012PDF2/3 e19/2013PDF1/2 mantêm36(1)c. Não reabre as dez dúvidasL5,que ficam paraAT até informação nova. L5 eL6 não integralmente concluídos.
## 25/10/2026 — L6: percurso delimitado até ao lucro tributável demonstrado em QA
Base instalada `7a11c4ef`; primeiro recorte QA `664c88c8` preservado. A continuação reutiliza o plano reconciliado, o exercício, a oportunidade e os ajustamentos existentes. Não obriga a reintroduzir os montantes financeiros. Âmbito: projecção de Janeiro a Dezembro de 2026, MZN, sujeito residente no regime geral, com referência expressa de que o cenário cobre o sujeito passivo/exercício completo. Uma oportunidade parcial não se transforma automaticamente no total da empresa.
Cada linha do resultado exige qualificação ordinária e suporte: proveitos do exercício (18/20), custos remanescentes indispensáveis e documentados (22), sem outras exclusões/limites declarados. Os acréscimos 36(1)c reutilizam documentos e parcelas já registados. Seis grupos conservam a situação das variações patrimoniais positivas/negativas fora do resultado, outras correcções de rendimentos/custos, diferenças de periodização e operações especiais. **Valor conhecido (incluindo zero), ausência declarada com suporte e informação em falta são estados distintos.** Ausência não pode apagar uma origem financeira positiva ou descartar um montante já preenchido. Um valor conhecido não zero sem tratamento implementado permanece visível e impede apenas o fecho dependente, sem ser aplicado por presunção.
No caso ordinário delimitado, resultado financeiro + acréscimos fundamentados = lucro tributável simulado quando a conferência anual está completa e os outros efeitos são expressamente ausentes ou de valor conhecido zero. Exemplo sintético: 6480 + multa100 + juros compensatórios120 = 6700 MZN. Os 120 são um custo/pressuposto qualificado já incluído na origem; não são juros automaticamente calculados ou fiscalmente confirmados por L5. Falta de prova da variação patrimonial negativa mantém o lucro indeterminado, conservando resultado6480 e acréscimos220. Variação conhecida500, depreciação positiva ou juros financeiros remanescentes mantêm correspondência específica pendente. Sem acréscimos, uma conferência completa pode conservar o resultado financeiro; resultados negativos não são convertidos em zero nem em crédito/perda reportável.
Prova do delta: 9 testes novos; API privada 1 teste/38 verificações, criação → alteração com If-Match → recuperação, com rollback na QA isolada55441. Wayfinder gerou routes/actions; TypeScript e buildQA passaram. UI real: cálculo, gravação/recuperação local, valor conhecido zero, ausência, informação em falta, contradição e exportação HTML. Relatórios/dossiers dos casos conhecido e incompleto gerados a partir da recuperação efectiva da API. Versão2 adicional mantém o snapshot/resultado1 de664c88c8 legível e actual sem o recalcular; mudanças nas entradas desactualizam apenas o novo resultado e conservam histórico. Preservados33ficheiros anteriores de execução e31originais por hash;integrações anteriores de formulário/dossier não alteradas neste delta. Provas aceites L3/ISPC/câmbio/L5 reutilizadas, sem nova ronda manual.
**Preparação conjunta para entrega pelo Git:** primeiro recorte664c88c8 e continuação até lucro tributável, sobre7a11c4ef, com pacote/manifest e delta conferido. Não instalado nem integrado em main por esta preparação. Backup/restauro fresco e conferência do destino fazem parte da instalação posterior; não reutilizar como fresco o backup da entregaL5. Recibo `irpc-l6-taxable-profit-qa-20261025.json`; provas `outputs/irpc-l6-profit/` na QA isolada.
Matéria colectável, perdas reportadas, deduções, colecta, créditos de retenção e M20/M22 continuam fora deste percurso; L6 não está integralmente concluído. L5 permanece operacional no âmbito demonstrado; J1–J5/C1–C5 ficam para a AT e só limitam os casos efectivamente dependentes. Nenhuma nova pesquisa de taxas/CER de L5 foi feita.
## 25/10/2026 — entrega conjunta L6 até lucro tributável instalada:5e02c23a
Instalado pelo Git `5e02c23af863485f6881e409c8704ec7e7573cc9`, sobre `7a11c4ef`, incluindo o primeiro recorte664c88c8. Backup fresco de25/10/2026 19:38:10UTC,restauro isolado sem rede na porta55441:174tabelas conferidas por contagem/checksum. Conferidos6ficheiros do delta,33protegidos,31originais e369ficheiros/configuração persistentes. Schema,roles/grants e permissões iguais.172tabelas de negócio preservadas;cache/sessões reconciliadas com reinício da fila,throttle e sessões anónimas da verificação.7a11c4ef conservado como versão anterior. Arquivadas/verificadas dependências de4versões antigas para margem de espaço,sem eliminar fontes,dados ou backups nem modificar as versões actual/anterior.
Revisão/manifest servidos,10marcadores compilados,4assets e simuladorHTTP200 conferidos. Pipeline normal:1teste/3106asserções,59testes/317asserções,888testesfrontend,tipo/build;sem outra ronda manual das provas aceites. Recibo:`irpc-l6-profit-delivery-20261025.json`.
**Disponível no âmbito demonstrado:**resultado financeiro6480+acréscimos220=lucro tributável simulado6700MZN;estados conhecidos,ausência declarada e informação em falta preservados. **6700MZN não é imposto a pagar.** Matéria colectável,deduções/perdas e colecta não são concluídas por esta instalação. L6 permanece parcial;dúvidasL5J1–J5/C1–C5 só limitam casos efectivamente dependentes. Continuação independente emQA para matéria colectável,sem repetir pesquisa ou provas aceitesL5/L3/ISPC/câmbio.
## 25/10/2026 — L6 matéria colectável: perdas próprias e deduções delimitadas em QA
Base instalada `5e02c23a`, com lucro tributável simulado6700MZN; não é imposto a pagar. A continuação reutiliza esse resultado e a identidade fiscal já disponível na mesma oportunidade, mediante acção expressa que conserva edições. Recorte: sujeito residente no regime geral,2026,método declarativo/directo,perdas fiscais próprias em exercícios anuais ordinários. CIRPC15(1)a/15(2–4) e41(1–7),PDF5/p768(59) ePDF12/p768(66),conferidos nos originais aceites;cadeia de alterações existente reutilizada. Sem novos originais ou pesquisa dos pontosL5.
Livro de perdas por exercício e sujeito:montante fiscal apurado/corrigido,utilizações anteriores,saldo disponível e utilização proposta deste ano,com documentos e completude. Não usa perda contabilística como fiscal. Confere cinco exercícios ordinários posteriores,manutenção/alteração da actividade/objecto no termo do exercício,regime geral e saldo corrigido. Métodos indirectos,períodos especiais/curtos,transparência/isenção parcial,transferências/fusão41-A e correcções pendentes ficam fora do recorte. Expiração/exclusão conhecidas não são apagadas;pedido positivo contra perda excluída exige reconciliação. Utilização proposta é expressa,sem FIFO obrigatório,percentagem inventada ou saldo negativo;excesso sobre saldo/lucro mantém base indeterminada. Simular/gravar não consome o saldo oficial nem actualiza utilizações anteriores.
Exemplo sintético:lucro6700;perda2021apurada1000/utilizada200/saldo800/proposta800;perda2024apurada3000/utilizada500/saldo2500/proposta1500. Dedução2300,**matéria colectável simulada4400MZN**,saldos aritméticos0/1000. **Imposto a pagar permanece indeterminado.** Perda ordinária2020 expira após2025;2021pode ser usada em2026 no recorte demonstrado. Sem perdas/benefícios,ausência expressa e suportada pode conservar base6700;informação em falta não ézero. Benefício conhecido positivo é conservado com referência,mas não subtraído sem regra/condições/limite específicos. Deduções à base15(4) são distintas de efeitos já conferidos no lucro e de créditos à colecta/retenções. Resultado actual negativo permanece conhecido,sem basezero ou reporte automático neste recorte.
Prova do delta:10testes novos;APIprivada1teste/42verificações,criação→alteração comIf-Match→recuperação,rollback naQA55441. Routes/actions peloWayfinder,tipo/buildQA passaram. UI:cálculo4400,gravação/recuperação local,alteração expressa de utilização para700→base4500,repetição sem consumo,sobreutilização recusada,download,informação em falta e benefício positivo conservado sem subtracção. Dossier/HTML gerados da recuperação efectiva daAPI. Versão3 opcional conserva resultado2 actual e históricos1/2;alteração de entradas desactualiza apenas o novo resultado.37ficheiros anteriores de execução e31originais preservados por hash. Provas aceites reutilizadas,sem nova ronda manual. Recibo:`irpc-l6-taxable-base-qa-20261025.json`;QA isolada,sem instalação deste incremento.
L6 continua parcial. Colecta/imposto,créditos anuais,M20/M22,benefícios positivos e casos fora do recorte mantêm desenvolvimento próprio. As dúvidasL5J1–J5/C1–C5 só limitam casos efectivamente dependentes;nenhuma taxa de juros ou CER provisório foi promovido a confirmação fiscal.
## 25/10/2026 — L6 colecta normal demonstrada em QA; entrega conjunta com a matéria colectável
Portal mantém `5e02c23a`. A continuação parte da QA `b8d45796` e reutiliza a matéria colectável actual, sem reintroduzir montantes. No recorte de sujeito residente em regime normal/MZN, exercício anual de01/01/2026 a31/12/2026, o enquadramento explícito do artigo61(1) aplica a taxa geral32%. A fonte/versão, período, classificação e suporte/pressuposto do caso são guardados. Campo por identificar ou caso especial não recebe taxa geral por aproximação; a matéria colectável conhecida permanece disponível.
**Sequência demonstrada:**lucro tributável simulado6700 → matéria colectável simulada4400 → colecta simulada4400×32%=1408MZN → **saldo final a pagar ou recuperar indeterminado, âmbitoL8**. Retenções, pagamentos e créditos do fecho anual não são abatidos nem reconciliados nesta etapa. Colecta não é saldo final. O campo legado `tax` continua nulo e o novo modelo guarda `colecta` separadamente; `finalBalance` mantém pagar/recuperar nulos, não zero.
Taxa32% conferida no CIRPC Lei34/2007,PDF17/p768(71). Lei4/2012 altera61(2); Lei20/2022PDF1/p2731 mantém61(1) e delimita medidas temporárias61(2) até31/12/2025; Lei12/2025PDF18/20 não altera61(1) e distingue61-A. Taxas reduzidas, benefícios, tributação autónoma e mais-valias continuam com tratamento próprio, mesmo se uma percentagem coincidir. Nenhuma extensão temporal/benefício foi inferida. A aritmética é racional exacta; eventual fracção de cêntimo é conservada sem arredondamento fiscal inventado. Não preenche/submeteM20/M22.
Prova do delta:8testes novos;APIprivada1teste/40verificações com criação→alteraçãoIf-Match→recuperação e rollback naQA55441. Wayfinder gerou routes/actions;TypeScript e buildQA passaram. UI real:base reutilizada,colecta1408,taxa/período/enquadramento visíveis,sequência ordenada,gravação/recuperação local,download e casos especiais/informação em falta sem taxa presumida. Dossier/HTML dos casos conhecido e incompleto gerados da recuperação efectiva daAPI. Versão4 opcional conserva versões1/2/3 e o resultado3 actual sem recálculo;mudanças nas entradas desactualizam só o novo resultado e conservam histórico.39ficheiros anteriores daQA e37do portal preservados,31originais sem alteração. Provas aceites reutilizadas,sem outra ronda manual. Recibo:`irpc-l6-colecta-qa-20261025.json`.
**Preparação conjunta compatível:**matéria colectávelb8d45796 e colecta normal neste candidato,base5e02c23a,6ficheiros de execução no delta conjunto. PacoteGit/provas/manifest conferidos apóscommit;sem integração emmain ou instalação nesta preparação. Instalação futura mantém procedimento de destino autenticado,backup/restauro fresco e conferência do delta. L6 continua parcial. Benefícios e casos especiais permanecem explícitos;L8 conserva o fecho anual e as dúvidasL5 só limitam os casos efectivamente dependentes.
## 25/10/2026 — entrega conjunta matéria colectável/colecta instalada:2f684e59
Instalado pelo Git `2f684e59846187f3fb8a338d9d6f6a08cadb4d0d`, incluindo a matéria colectávelb8d45796, sobre `5e02c23a`, sem força, migrações ou importações. Backup fresco de25/10/2026 20:05:19UTC;restauro em base isolada sem rede/porta55441:174tabelas conferidas por contagem/checksum. Conferidos6ficheiros do delta,37protegidos,31originais e369ficheiros/configuração persistentes. Schema,roles/grants e permissões iguais;172tabelas de negócio preservadas. Cache/sessões reconciliadas com reinício da fila,throttle e sessões anónimas da verificação.5e02c23a permanece disponível como versão anterior. Arquivadas/verificadas dependências de4versões antigas para margem de espaço,sem eliminar fontes,dados ou backups nem modificar as versões actual/anterior.
Revisão/manifest públicos,11marcadores compilados,4assets e simuladorHTTP200 conferidos. Pipeline normal:1teste/3106asserções,59testes/317asserções,906testesfrontend,tipo/build. Provas aceites reutilizadas,sem outra ronda manual. Recibo:`irpc-l6-colecta-delivery-20261025.json`.
**Disponível no âmbito demonstrado:**lucro tributável simulado6700→matéria colectável4400→colecta normal32%/2026=1408MZN. **1408MZN não é saldo final a pagar.** A pagar/a recuperar continuam indeterminados emL8. Benefícios/casos especiais anuais sãoL7. O saldo concreto deL6 que justifica «parcial» fica discriminado na secção seguinte;esta actualização substitui,para o estado actual,as pendências genéricas de lucro/base/colecta anteriores já entregues,preservando-as apenas como histórico.
## 25/10/2026 — saldo concreto de L6 após a entrega 2f684e59
Esta discriminação actualiza **AUD-SIM-INT02 na mesma matriz**, com o âmbito L6/L7/L8 já registado no plano consolidado e a leitura do código de `2f684e59`. Não cria outro lote, matriz ou backlog. O estado «L6 parcial» decorre das lacunas funcionais abaixo; **não decorre de faltar o saldo anual de L8 ou os tratamentos de L7**. Os exemplos são casos de fronteira para desenvolvimento, não novos cálculos fiscais confirmados.
**Concluído no âmbito demonstrado e a preservar:** plano financeiro reconciliado → acréscimos36(1)c → lucro tributável6700 → perdas próprias ordinárias2300 → matéria colectável4400 → colecta normal32%/2026=1408MZN. Inclui conhecido/zero/ausência/falta de informação, limites de utilização, gravação/recuperação, histórico, relatório/exportação e indeterminação dos casos dependentes. Não repetir estas provas para fechar os pontos seguintes, excepto se o delta os afectar.
| Saldo que continua em L6 | Evidência concreta no código entregue | Exemplo do caso ainda não coberto | Critério concreto de fecho |
|---|---|---|---|
| Outros ajustamentos ordinários: admissibilidade de custos e correcções aos proveitos | `irpc-normal.ts`, `NormalAdjustment.rule` e `calculateNormal`: apenas multas não contratuais e juros compensatórios36(1)c; `other` fica fora do recorte. `irpc-normal-profit.ts` não aplica `incomeCorrections`/`expenseCorrections` conhecidos não zero. | Encargo de terceiro de250MZN com qualificação36(1)b, ou despesa não documentada36(1)g, incluído no resultado; a correcção não tem regra executável neste livro. A eventual tributação autónoma é outra operação, emL7. | Corresponder a regra geral e condições de cada categoria incluída, calcular acréscimo/dedução/exclusão com sinal e origem, evitar dupla contagem e demonstrar reflexo no lucro, base e colecta. A tributação autónoma que possa coexistir pertence aL7. |
| Dedutibilidade dos juros financeiros ordinários | `irpc-normal-profit.ts`, `closeNormalProfit`: qualquer remanescente não zero de `interest_expense` mantém pendência; só os compensatórios integralmente acrescidos estão cobertos. | Juros de financiamento comercial de120MZN, distintos de juros compensatórios, com finalidade/custo documentados. | Qualificar a parcela ordinária, dedutibilidade e correcção aplicável, conservar os montantes reconhecidos/pagos separados e fechar o lucro sem a equiparar a infracção. Relações especiais/benefícios e regras especiais seguemL7; taxa de juros compensatóriosL5 só é dependência se esse cálculo for efectivamente usado. |
| Reintegrações/amortizações fiscais e diferença face à contabilidade | `irpc-normal-profit.ts`: `depreciation` positivo bloqueia o fecho; não existe mapa fiscal de activos/quotas nesta família de módulos. | Depreciação contabilística120MZN com quota fiscal do activo ainda por corresponder. | Reutilizar activo, base e datas; corresponder método/taxa/limites e afectação ordinários, calcular quota fiscal e diferença para o resultado; manter mapas por activo/exercício e histórico. Incentivos, majorações e regimes especiais de activos seguemL7. |
| Variações patrimoniais e periodização ordinárias de montante não zero | `irpc-normal-profit.ts`, `profitTopics`/`closeNormalProfit`: `positivePatrimonial`, `negativePatrimonial` e `timing` conhecidos não zero conservam valor e impedem o fecho; ausência/zero suportados são o caminho demonstrado. | Variação500MZN fora do resultado, ou diferença temporal300MZN entre reconhecimento contabilístico e exercício fiscal, com natureza concreta documentada. | Corresponder natureza/ano/regra ordinária e decidir inclusão, exclusão ou ajustamento com sinal; impedir reaplicação em dois exercícios; demonstrar cálculo→gravação→recuperação→relatório. Operações especiais/benefícios do tópico `special` não são saldo deL6. |
| Resultado fiscal negativo do próprio exercício | `irpc-normal-base.ts`, `calculateNormalBase`: lucro negativo é conservado, mas a base fica indeterminada; o livro de perdas só admite exercícios anteriores ao de utilização. | Resultado fiscal actual−500MZN conhecido; não é uma perda anterior dedutível a si própria. | Tratar a situação da base/colecta nesse exercício e preparar a perda fiscal própria com origem/ano para utilização futura, conforme regra aplicável, sem confundir ausência de lucro, falta de informação, crédito ou consumo do saldo oficial. Perdas anteriores ordinárias já demonstradas continuam aceites. |
| Extensões do âmbito normal previstas no L6 original | `irpc-normal.ts` fixa12meses/ano civil2026/residente/MZN; `irpc-normal-base.ts` exige exercícios anuais ordinários; a entrada deL6 no plano original inclui exercício fiscal e residência/EP. | Caso de estabelecimento estável sob regime geral, ou período fiscal normal diferente do calendário/horizonte do plano; plano noutra moeda ainda sem reconciliação fiscal anualMZN. | Delimitar os casos normais a admitir, imputação de resultados ao sujeito/EP, datas/períodos e reconciliaçãoMZN usando o câmbio já entregue; demonstrar o percurso dependente. Não reimplementar câmbio, exigir pesquisa de todos os anos históricos ou aplicar automaticamente32% fora do período correspondido. Benefícios/convenções/regimes específicos pertencem aos lotes próprios. |
| Representação fiscal da colecta com fracção de cêntimo | `irpc-normal-assessment.ts` conserva o racional e assinala `centExact:false`; não aplica regra fiscal de arredondamento/transcrição. | Base0,01MZN×32%=0,0032MZN exactos; o caso1408MZN não tem esta ambiguidade e continua válido. | Identificar e executar a convenção aplicável à colecta/representação do formulário, mantendo o exacto e a rastreabilidade do valor transcrito. Não importar por analogia arredondamento de prestações/pagamentosL8 nem criar uma regra por defeito. |
| Correspondência dos dados de L6 aos exemplares M/20/M/22 | A família `irpc-normal*` produz mapaHTML/dossier e exclui expressamente correspondência/transcrição oficial; o âmbito original deL6 inclui M/20/M/22 e diferenças de ediçãoPDF/XLSX. | Resultado, correcções, perdas, base4400 e colecta1408 existem no mapa de trabalho; os respectivos campos/anexos aplicáveis dos exemplares não estão correspondidos no motor. | Cotejar os exemplares já inventariados e mapear apenas os dados deL6 aos campos/versões efectivamente aplicáveis, com prova de preenchimento/recuperação. Os campos de retenções,pagamentos,créditos e saldo final sãoL8. Submissão electrónica/aceitaçãoAT não são presumidas como parte desta correspondência. |
**Encaminhado a L7, sem manter L6 parcial por essa razão:** benefícios/isenções da determinação anual do IRPC, taxas reduzidas/cooperativas, tributação autónoma de despesas e mais-valias61-A, operações especiais, perdas transmitidas/fusão41-A e segregação de regimes especiais. Uma dedução positiva de benefício à base continua sem aplicação no recorte entregue, mas o trabalho substantivo desse benefício éL7, não uma dedução livre nem um novo saldo genérico deL6. A integração posterior usa as interfaces/versionamento já existentes e afecta só os casos dependentes.
**Encaminhado a L8, sem manter L6 parcial por essa razão:** retenções sofridas a imputar ao fecho anual, PPC/PEC e outros pagamentos, créditos/deduções à colecta, dupla tributação quando aplicável, limites/transportes respectivos, reconciliação e saldo final a pagar ou recuperar/calendário. **1408MZN é colecta; pagar e recuperar continuam indeterminados.** Não abater parcelas L5 nem promover os seus códigos/taxas provisórios ao fecho anual nesta entrega.
**Informação do caso, distinta de desenvolvimento em falta:** falta de documento, NUIT, completude anual, montante, prova de saldo ou qualificação dentro de uma regra já implementada mantém o caso indeterminado, mas não constitui por si só outra tarefa deL6. O mesmo vale para a ausência de uma nova prova de uma funcionalidade já aceite. Não exigir nova aprovação genérica das fontes oficiais, novo aprovador ou repetição deL3/ISPC/câmbio/L5. Anos não incluídos no recorte temporal não se tornam automaticamente um projecto de cobertura histórica integral.
**Ordem de continuação delimitada:** ajustamentos ordinários/juros financeiros e amortizações; depois variações/periodização e resultado negativo; ampliar apenas os casos normais concretamente abrangidos e concluir a representação/correspondência dos dados deL6. Cada fecho deve demonstrar o delta e substituir a pendência correspondente nesta mesma linha/nota. Não há estimativa nova nem declaração deL6 integralmente concluído nesta revisão documental.
## 25/10/2026 — L6: três conjuntos compatíveis em QA sobre 2f684e59
Actualização de **AUD-SIM-INT02**, na matriz existente. O percurso instalado em `2f684e59` permanece aceite: lucro6700 → perdas2300 → matéria colectável4400 → colecta1408MZN; saldo anual continua indeterminado emL8. Este incremento é **QA, sem instalação**. Não repete as provas de L3, ISPC, câmbio ou L5; conserva a fotografia4 e o histórico sem recalcular a aceitação anterior.
| Conjunto | Delta executável demonstrado | Efeito e prova nova | Pendência concreta que subsiste |
|---|---|---|---|
| 1 — ajustamentos, juros, variações e periodização | Acréscimos36(1)a/b/g com parcela incluída e origem reconciliada; juros financeiros22c de exploração documentados, sem capitalização/relações/limites especiais; entradas de capital21a e distribuições24c externas ao resultado sem efeito fiscal; variações positivas21 e negativas22/24 ordinárias; especialização18(1) de custo/proveito entre exercício corrente e seguinte. Documento/linha únicos entre mapas, sinal e soma bruta por tema conferidos. | Resultado financeiro6240 + acréscimos anteriores220 + imposto de terceiro250 + variação positiva200 − negativa50 + custo de2027 contabilizado em2026 de100 + diferença de amortização20 = lucro6980. Juros reconhecidos240, compensatórios acrescidos120, remanescente ordinário120; pagamentos continuam separados. Informação insuficiente mantém os efeitos independentes visíveis e impede somente os totais dependentes. | Correcções ordinárias ainda sem regra: encargos e limites36(1)e/f/h/i/n, provisões28/29, operações plurianuais19 e componentes de exercícios anteriores18(2). Juros capitalizáveis/relações especiais e limites exigem o tratamento próprio; não são aceites por simples selecção de juros ordinários. A tributação autónoma que possa coexistir pertence aL7. |
| 2 — amortizações e perda corrente | Decreto72/2013: quotas anuais constantes, custo/residual/acumulado, limite do saldo e vida útil; tabelaII/grupo3/item9 computadores25% e9.1 servidores20%, sem taxa específica da tabelaI prevalecente. Soma da depreciação contabilística por activo reconciliada com o plano; nenhum efeito de mapa incompleto aplicado. Perda corrente separada das perdas anteriores, sem auto-reporte. | Servidor500 ×20%=100 fiscal, depreciação contabilística120 → acréscimo20. Alterar quota/categoria, exceder vida útil ou não reconciliar a origem mantém o lucro dependente indeterminado. Outro exemplo: resultado fiscal−3820 → perda corrente3820 → base0/colecta0 apenas com suporte e conferência completos, sem dedução de perdas anteriores a si própria nem criação de saldo oficial. | Restante catálogo sectorial/genérico de activos, taxas reduzidas dentro dos limites, duodécimos, quotas decrescentes, bens usados/reavaliados, activos intangíveis e recuperação de quotas contabilizadas em anos anteriores. Não declarar toda a amortização fiscal concluída por estes dois itens. |
| 3 — âmbitos, representação e M20/M22 | EP no regime geral, resultado completo exclusivamente imputável ao estabelecimento; ano civil ou período anual diferente autorizado7(2)/comunicado7(3), correspondência dos12 meses e termo em2026/MZN. Valores racionais exactos, sem arredondamento fiscal inventado. M22 campos259/260,269/270,276/277/278 e300 conforme aplicação; M20A.1 quadro4 contas6.1.1/6.2/6.5/6.9 com valores contabilísticos próprios. |6980 − perdas2300 = base4680; ×32%=colecta1497,60MZN, não saldo a pagar. EP com período01/07/2025–30/06/2026 demonstrado; período curto incompatível fica pendente. API privada recupera os quatro casos calculado/falta/perda/EP e os relatórios respectivos. M20 inteiro e M22 ao cêntimo apenas quando a representação é exacta; fracções conservadas e marcadas sem transcrição pronta. | Períodos curtos/transição/liquidação e reconciliação fiscal anual de planos noutra moeda (motor cambial aceite preservado). Representação fiscal de fracções de unidade/cêntimo por corresponder. No M20 faltam discriminação vendas/serviços, fornecimentos/outros gastos, imposto e resultado líquido; no M22 faltam a reconciliação do campo200 e detalhe dos restantes ajustamentos. Divergência delimitada de edições: folha M20A.1 do XLSX remete ao campo201/quadro8 do M22; PDF inventariado utiliza200/quadro10. Bloqueia esse transporte, não os outros campos. |
**Provas apenas do delta:** 14 testes frontend; API privada1 teste/78 asserções com transacção revertida na base QA127.0.0.1:55441; geração de routes/actions pelo procedimento existente, TypeScript e build; interface real com edição, taxa/categoria incompatível, falta de juros, gravação/recuperação, download e perda corrente; relatórios/dossier construídos a partir dos dados recuperados. Recibo `docs/investmoz/simulations/irpc-l6-compatible-sets-qa-20261025.json`; pacote/bundle em `outputs/irpc-l6-sets`. Sem alteração de schema, API, configuração, permissões ou dependências.
**Âmbitos próprios preservados:** L7 conserva benefícios, isenções, taxas reduzidas, tributações autónomas e operações especiais; L8 conserva retenções, pagamentos, créditos e saldo final. M22 campo302 não é preenchido só com a parcela normal300, nem os campos309–316 são preenchidos com zeros presumidos. As dez dúvidas deL5 continuam na mesma matriz, sem nova pesquisa e bloqueando apenas dependências efectivas. L6 continua parcial exclusivamente pelas pendências concretas da tabela; nenhum desses pontos reabre o percurso instalado.
## 25/10/2026 — conjunto L6 a2de7259 entregue pelo Git
Instalado `a2de725901c308fb2ac2bc3d72181ab50ef46b7a` sobre `2f684e59`, pelo procedimento Git existente, sem força, migrações ou importações. Backup fresco `2026-10-25T20:34:03Z` e restauro isolado sem rede/porta55441: **174tabelas** conferidas por contagem/checksum; **369ficheiros/configuração** preservados. Conferidos **8ficheiros do delta,38protegidos e31originais**; schema,roles/grants e permissões iguais. Tabelas de negócio preservadas; cache/sessões reconciliadas com os eventos operacionais da entrega. `2f684e59` permanece como versão anterior. Dependências de5versões antigas arquivadas e verificadas para espaço, sem modificar as versões actual/anterior, fontes, dados ou backups.
Revisão/manifest público,10marcadores compilados e simuladorHTTP200 conferidos. Pipeline normal concluído; as provas QA aceites foram reutilizadas, sem nova ronda manual. **Disponível no âmbito demonstrado: lucro6980 → base4680 → colecta1497,60MZN. O saldo final a pagar/recuperar continua indeterminado emL8.** Também preservados o caso de perda corrente e as distinções conhecido/ausência/falta de informação, os períodos/EP demonstrados e a preparação parcialM20/M22. Recibo:`docs/investmoz/simulations/irpc-l6-sets-delivery-20261025.json`.
O estado «QA sem instalação» da nota anterior é histórico para este conjunto. **L6 continua parcial pelos seis grupos concretos da secção seguinte**, cada um com condição de resolução e bloqueio delimitado. L7 eL8 mantêm os seus âmbitos.
## 25/10/2026 — saldo curto de L6 após o conjunto a2de7259
Actualização de **AUD-SIM-INT02 na mesma matriz**, sem novo lote ou backlog. O percurso financeiro → ajustamentos documentados → lucro tributável → matéria colectável → colecta está demonstrado; no caso novo,6980 →4680 →1497,60MZN. A colecta não é saldo final a pagar. As pendências abaixo substituem a enumeração genérica anterior para o saldo actual deL6; não revogam as provas aceites.
| Caso ou correspondência pendente | Condição concreta de resolução | Limite do bloqueio |
|---|---|---|
| Custos com limites36(1)e/f/h/i/n, provisões28/29, obras plurianuais19 e componentes de exercícios anteriores18(2). | Implementar a regra de cada categoria a partir do diploma aplicável: parcela contabilizada, limite/base próprios, documentação e exercício de imputação; demonstrar o efeito com sinal nos totais. Nos exercícios anteriores, distinguir o que era imprevisível/manifestamente desconhecido no encerramento. | Só a categoria ou parcela ainda sem regra; os acréscimos36a/b/c/g, juros ordinários e periodização corrente/seguinte demonstrados permanecem utilizáveis. Eventual tributação autónoma pertence aL7. |
| Amortizações além dos itensII/3/9 e9.1: restantes tabelas, quotas inferiores, duodécimos, quotas decrescentes, bens usados/reavaliados/intangíveis e recuperação de quotas anteriormente tributadas. | Corresponder categoria/tabela prevalecente, método, entrada em uso, vida útil, base depreciável e quotas contabilizadas/fiscais acumuladas; implementar o cálculo e a reconciliação que impeçam dupla dedução. | Só os activos/métodos afectados. Computadores25% e servidores20% no recorte anual constante e a perda corrente já demonstrada não são reabertos. |
| Períodos curtos, transição/liquidação e reconciliação fiscal anual de plano noutra moeda. | Ligar os meses e factos de início/cessação/transição ao período fiscal; implementar os efeitos sobre quotas e contagem das perdas. Para outra moeda, identificar os eventos/datas e a regra de conversão anual aplicável, reutilizando o motor cambial aceite. | Só o período ou origem cambial sem reconciliação. Os períodos anuais emMZN e oEP com imputação documentada conservam o cálculo demonstrado. |
| Representação fiscal de fracções de unidade/cêntimo. | Identificar a instrução de representação/arredondamento da edição/campo aplicável ou obter esclarecimento específico daAT; então implementar essa regra conservando o valor racional original. O exemplarM20A.1 pede meticais sem centavos, mas isso não determina sozinho como arredondar uma fracção. | Só a transcrição do valor não exactamente representável. Os cálculos racionais e os valores exactamente representáveis permanecem disponíveis; não é necessária nova validação genérica das fontes. |
| M20A.1: discriminação de vendas/serviços, fornecimentos/outros gastos, imposto sobre o rendimento e resultado líquido; M22: campo200 e detalhe dos restantes ajustamentos. | Reutilizar a origem financeira, recolhendo apenas a classificação em falta e o imposto contabilizado; reconciliar resultado antes/depois de imposto e cada ajustamento com a edição aplicável. Não usar a colecta simulada como imposto contabilizado. Completar as correspondências por campo e demonstrar a recuperação/exportação. | Só os campos sem correspondência. M20A.1/Q4 contas6.1.1/6.2/6.5/6.9 e M22 campos259/260,269/270,276/277/278 e300 conservam a preparação parcial demonstrada. |
| Transporte de resultado entre ediçõesM20/M22: XLSXM20A.1 remete para201/quadro8; PDFM22 inventariado usa200/quadro10. | Identificar a edição do formulário de destino e corresponder explicitamente o resultado líquido a essa edição; registar a remissão corrigida sem substituir os exemplares ou reutilizar fórmulas antigas por aproximação. | Só esse transporte entre edições; não bloqueia os cálculos independentes nem os outros campos já correspondidos. |
**L6 continua parcial por estes casos concretos.** Documento ou parâmetro em falta dentro de regra implementada é uma pendência do caso, não outra tarefa genérica deL6. Juros capitalizáveis, relações especiais e tratamentos especiais conservam o enquadramento próprio, sem presumir que satisfazem o recorte de juros ordinários.
**L7** mantém benefícios, isenções, taxas reduzidas, tributações autónomas e operações especiais. **L8** mantém retenções, pagamentos, créditos e saldo final a pagar/recuperar. A ausência desses tratamentos não reabre o percurso normal entregue nem justifica, por si, «L6 parcial». A divergência documental não autoriza preencher M22 campo302 ou309–316 com zeros presumidos. As dez dúvidas deL5 permanecem válidas e bloqueiam apenas os casos efectivamente dependentes; sem nova pesquisa ou repetição das provas aceites.
## 26/10/2026 — L6: custos com limites, provisões e periodização em QA
Actualização de **AUD-SIM-INT02 na mesma matriz**, sobre o conjunto instalado `a2de7259`. **Novo incremento em QA, sem instalação.** O percurso e as provas já aceites deL6/L3/ISPC/câmbio/L5 foram reutilizados; não foram novamente executados os testes funcionais anteriores. A fotografia5 continua actual sem activar os novos campos; a fotografia6 guarda estes mapas e conserva o resultado anterior no histórico.
**Reutilização e resultado demonstrado:** resultado financeiro6240MZN, acréscimos anteriores220 e mapas anteriores520 conservados; novos ajustamentos de custos/provisões/periodização+350 e obra−600 → **lucro tributável6730MZN**. Dedução expressa das perdas anteriores2300 → **matéria colectável4430MZN**; taxa normal32% → **colecta1417,60MZN**. Não é saldo final a pagar. Nenhum saldo oficial de provisões/perdas é consumido, nem é alterada declaração ou história anterior.
| Categoria e condição no exercício anual com termo em2026 | Parcela aceite, limite e ajustamento demonstrados | Informação insuficiente ou caso separado |
|---|---|---|
| Ajudas de custo/deslocação em viatura própria36(1)e: parcelas facturadas e tributadas emIRPS identificadas sem sobreposição. Representação36(1)f/36(3) ordinária documentada. | Ajudas100:facturadas20,tributadas e não facturadas20;remanescente60 →30 acrescido/70 aceite. Representação50 →40 acrescido/10 aceite. Zero conhecido nos parâmetros é distinto de campo vazio. | Parcela facturada/tributada em falta impede a aceitação dependente; não presumir ausência deIRPS. Eventual tributação autónoma continuaL7. |
| Publicidade ordinária36(1)n,Lei20/2009: receita declarada reconciliada com vendas normais e completude anual das parcelas. | Um limite anual partilhado de1% de12000=120. Caso com duas parcelas100+100:aceites60+60,acréscimo80. A repartição proporcional é apenas aritmética de simulação, não uma ordem fiscal obrigatória. | Campanha de lançamento com horizonte superior a um ano não recebe este tratamento por aproximação: periodização36-A e articulação do limite permanecem por implementar. |
| Encargos com viaturas36(4), combustível36i e aluguer sem condutor36h, distinguindo categoria/serviço público/locação na actividade normal. | Outros encargos100 de passageiros sem excepção:aceite50/acréscimo50. Combustível50 não sujeito a36(4),com40 comprovados no activo/locação e consumo normal:aceite40/acréscimo10. Renda100 no caso documentado de excepção36(4),quota não aceite36h de20:aceite80/acréscimo20; a quota é reutilizada do suporte e não apurada automaticamente. | Se há simultaneamente parcela excluída porh/i e aplicação dos50% de36(4), a combinação fica pendente. Exemplo:fuel100,comprovado80,passageiro sem excepção; não somar nem repartir correcções por presunção. Resolver a regra de articulação dos trechos aplicáveis ou esclarecer esse exemplo especificamente comAT. Apuramento automático da quota36h permanece no saldo de amortizações; só bloqueia esse caso. |
| Provisão/perda por imparidade de créditos28a/29: regime ordinário identificado, créditos normais finais e provisão fiscal anterior conhecidos. | Base10000:limite anual1,5%=150,acumulado6%=600. Saldo anterior550 deixa50;provisão contabilística200 →50 aceite/150 acrescido. Duas parcelas100+100 partilham25+25; não repetem os limites nem consomem o saldo oficial. | Saldo anterior vazio não é zero; anterior superior ao tecto pede reconciliação/reversão28(2). Provisões sujeitas a supervisão financeira/seguradora28d ou reforços financeiros28(3) exigem correspondência própria, sem aplicar29 por aproximação. |
| Existências28b:perda efectivamente observada. Processo judicial28c:em curso e obrigação subjacente fiscalmente dedutível. | Existências:parcela60,perda total40,provisão anterior10 →30 aceite/30 acrescido. Judicial:parcela90,obrigação100,anterior20 →80 aceite/10 acrescido. Perda não observada ou processo que não esteja em curso são condições negativas conhecidas:acréscimo integral, sem zero presumido como dedução. | Falta de prova do evento,obrigação,perda ou saldo anterior fica indeterminada. Objecto/saldo repetido entre documentos impede reutilizar a cobertura; agregar/reconciliar as parcelas do mesmo objecto. |
| Reversões28(2) e provisões anteriormente tributadas:mesmo objecto e tratamento fiscal anterior comprovados. | Provisão antes deduzida:reversão50 já incluída no resultado não acrescenta novamente;omitida dos proveitos acrescenta50. Reversão contabilística50 de provisão antes tributada comprovada é excluída por50. | Não inferir o tratamento anterior do saldo contabilístico. Quantia superior à parcela fiscal demonstrada,evento que continua a subsistir ou objecto duplicado ficam pendentes. Sem alteração retrospectiva ou consumo do saldo oficial. |
| Componentes de exercícios anteriores18(2):conhecimento/imprevisibilidade no encerramento anterior documentados. | Custo80 conhecido no fecho2025,incluído no resultado actual →acréscimo80. Se imprevisível/manifestamente desconhecido à data daquele fecho →sem acréscimo por periodização. Proveito50 conhecido no fecho anterior →excluído do actual por50;se imprevisível/desconhecido →considerado no actual. | Conhecimento no fecho em falta impede apenas a imputação da parcela. Nenhuma rectificação de declaração anterior é executada. Periodizações específicas18(6–10) não passam a estar cobertas por este recorte18(2). |
| Obras plurianuais19 e perdas meramente estimadas36m:critério uniforme,preço,custo incorporado/custo total e acumulados fiscais anteriores documentados. | Percentagem:preço2000,custo total1000,incorrido500;proveito fiscal acumulado1000 menos anterior600=400 corrente;custo500 menos anterior300=200 corrente. Proveito contabilizado1000/custo200 →ajustamento−600. Encerramento tem caso separado;facturação parcial com acabamento correspondente/entregas fraccionadas impõem percentagem;95% com preço conhecido ou recepção provisória pública determina conclusão. Perda meramente estimada50 de obra em curso →acréscimo50. | Acumulados incoerentes ou método incompatível bloqueiam essa obra. Receita antecipada19(5) positiva e mudança de critério com autorização19(6) ficam por corresponder; o caso demonstrado declara expressamente zero de receita antecipada e método mantido, sem presumir essas condições. |
**Percurso demonstrado:** cálculo → gravação → recuperação pela API privada → relatório/dossier/exportação em cinco casos:conjunto calculado,informação insuficiente,categorias adicionais,limites partilhados e encerramento de obra. Só os novos casos foram testados: **22 testes frontend,1 testeAPI/83asserções**, transacção revertida na base QA127.0.0.1:55441; routes/actions gerados pelo procedimento existente,TypeScript/build e interface real passaram. Interface permite reutilizar a parcela livre da origem e o saldo financeiro de créditos quando conhecido; alterações às somas dos temas são revistas antes de aplicar e não apagam escolhas ou históricos. Fonte ausente ou saldo não acompanhado nunca cria zero. Valores racionais são conservados, apresentações decimais aproximadas são identificadas e uma perda inferior a um cêntimo não é truncada para zero.
**Preservação:**6ficheiros de runtime no delta,42protegidos e31originais conferidos; sem schema/API/configuração/permissões/dependências alterados, sem escrita no activo. Recibo:`docs/investmoz/simulations/irpc-l6-costs-provisions-timing-qa-20261026.json`;bundle/pacote em `outputs/irpc-l6-costs`. DivergênciaM20/M22 permanece limitada ao transporte201/quadro8 versus200/quadro10; não é uma condição destes cálculos. Não foram criadas correspondências oficiais de campos para estes novos ajustamentos por presunção.
**Saldo deL6 após estes casos QA:**combinação36h/i+36(4);quota36h automática e restantes amortizações;campanhas36-A e sua articulação com1%;provisões reguladas/reforços financeiros e periodizações específicas não cobertas;receita antecipada positiva/mudança autorizada do método de obra;períodos curtos/conversão fiscal anual;representação fiscal de fracções e restantes correspondênciasM20/M22. Cada pendência afecta o caso/campo dependente, não o conjunto independente demonstrado. Benefícios,isenções,taxas reduzidas e operações especiais mantêm âmbitoL7;retenções,pagamentos,créditos e saldo anual mantêm âmbitoL8. **L6 continua parcial.** As dez dúvidas deL5 não foram reabertas.
## 26/10/2026 — conjunto L6 043dd35d entregue pelo Git
Instalado `043dd35d8ee247123b3a32f1fc10fd2ede81e9f4` sobre `a2de7259`, pelo procedimento Git existente, sem força, migrações ou importações. Backup fresco `2026-10-26T06:35:29Z` e restauro isolado sem rede/porta55441: **174tabelas** conferidas por contagem/checksum; **369ficheiros/configuração** preservados. Conferidos **6ficheiros do delta,42protegidos e31originais**; schema,roles/grants e permissões iguais. Tabelas de negócio preservadas; cache/sessões reconciliadas com os eventos operacionais da entrega. `a2de7259` permanece como versão anterior. Dependências de4versões antigas arquivadas e verificadas para espaço, sem modificar as versões actual/anterior, fontes, dados ou backups.
Revisão/manifest público,11marcadores compilados e simuladorHTTP200 conferidos. Pipeline normal concluído; as provas QA aceites foram reutilizadas, sem nova ronda manual. **Disponível no âmbito demonstrado: lucro6730 → base4430 → colecta1417,60MZN. O saldo final a pagar/recuperar continua indeterminado emL8.** Também preservados o caso de perda corrente e as distinções conhecido/ausência/falta de informação, os períodos/EP demonstrados e a preparação parcialM20/M22. Recibo:`docs/investmoz/simulations/irpc-l6-costs-delivery-20261026.json`.
O estado «QA sem instalação» da nota anterior é histórico para este conjunto. **L6 continua parcial pelos seis grupos concretos da secção seguinte**, cada um com condição de resolução e bloqueio delimitado. L7 eL8 mantêm os seus âmbitos.
## 26/10/2026 — saldo de L6 após a entrega043dd35d
Mesma matriz AUD-SIM-INT02. Custos/provisões/periodização demonstrados entregues; trabalho seguinte:amortizações. Provas aceites reutilizadas.
| Caso ou correspondência pendente | Condição concreta de resolução | Limite do bloqueio |
|---|---|---|
| Combinação36h/i com36(4) | Corresponder a regra de articulação dos trechos aplicáveis ou esclarecer comAT o exemplo combustível100/comprovado80/passageiro sem excepção;sem somar ou repartir correcções por presunção. | Apenas o caso/campo dependente; cálculos independentes preservados. |
| Quota36h automática e amortizações restantes | Reconciliar tabela/método/entrada emuso/quotas contabilísticas e fiscais anteriores;prioridade seguinte deL6. A parcela36h documentada continua reutilizável nos casos independentes. | Apenas o caso/campo dependente; cálculos independentes preservados. |
| Campanhas plurianuais36-A e limite1% | Implementar a periodização por três exercícios e a sua articulação com36n; não tratar a campanha como publicidade ordinária. | Apenas o caso/campo dependente; cálculos independentes preservados. |
| Provisões reguladas28d e reforços financeiros28(3) | Corresponder a regra sectorial/supervisão ou o reforço financeiro e os saldos documentados; não usar os limites ordinários29 por aproximação. | Apenas o caso/campo dependente; cálculos independentes preservados. |
| Receita antecipada19(5) positiva e mudança autorizada19(6) | Corresponder os custos futuros/receita antecipada e o transporte entre exercícios ou a autorização da mudança de método;os casos zero conhecido/método mantido permanecem executáveis. | Apenas o caso/campo dependente; cálculos independentes preservados. |
| Outras periodizações,âmbitos eM20/M22 | Tratar apenas os casos específicos18(6–10),períodos curtos/conversão anual,representação fiscal e campos ainda sem correspondência,com os parâmetros da edição/caso;divergência201/Q8 versus200/Q10 só afecta o transporte indicado. | Apenas o caso/campo dependente; cálculos independentes preservados. |
L6 continua parcial. L7 mantém benefícios/casos especiais;L8 mantém retenções/pagamentos/créditos/saldo final. As dez dúvidasL5 não foram reabertas.
## 26/10/2026 — L6: amortizações em QA, sem instalação
O portal mantém `043dd35d` instalado: colecta demonstrada1417,60MZN, sem saldo finalL8. O novo conjunto optativo `IRPC-normal-adjustments/7` reutiliza os activos e o resultado financeiro já declarados. Versões1–6 e históricos permanecem intactos; activar o novo mapa substitui o efeito fiscal anterior das amortizações, sem o somar novamente. Ausência declarada de quotas anteriores é distinta de informação em falta e exige referência.
Cobertura delimitada ao exercício anual2026/MZN e bens novos ao custo histórico: tabelaII/3/9 computadores25%,3/9.1 servidores20%,3/23 segurança20%,3/22 máquinas não especificadas10%,5/7 mobiliário10%,1/2.2 edifícios comerciais/administrativos2%,4/9.2 veículos ligeiros/mistos25%,5/8 software25%; tabelaI/84.2/B decoração hoteleira20% e84.3/A máquinas de lavandaria12,5%. A tabelaI prevalece quando aplicável; não se presume que esta lista cobre todo o catálogo. Fonte: Decreto72/2013, artigos3–10/17 e tabelas, exemplar original anteriormente aceite e hash preservado; CIRPC27e para limite800000MZN de viaturas e exclusão de terrenos.
Método constante com taxa expressamente escolhida no recorte metade–máximo; degressivo apenas para bens elegíveis novos, factores máximos1,5/2/2,5 segundo vida útil. Opção8(2) demonstrada apenas em ano civil/início1Janeiro, com quotas anteriores completas documentadas. Duodécimos incluem mês de entrada e excluem mês de saída, respeitando vida máxima. Software exige direitos onerosos/exclusivos e duração limitada; art17 exige bem individual até20000 e opção documentada. Quotas anteriores recuperáveis têm prova contabilística/fiscal e são limitadas à parte elegível: quotas nunca contabilizadas ou permanentemente excluídas não se tornam dedutíveis. Nenhum saldo oficial é consumido.
| Novo caso | Efeito demonstrado em MZN: lucro → matéria colectável → colecta |
|---|---|
| Computador em uso desdeJulho: quota fiscal50, ajustamento70, substituindo anterior20 | 6780 →4480 →1433,60 |
| Mesmo activo, saída15Outubro:3meses/quota25 | Colecta1441,60; entrada/saída identificadas no relatório |
| Degressivo elegível: quota200, ajustamento40 | 6630 →4330 →1385,60 |
| Quota anterior documentada:20 recuperados,20 restantes; ajustamento−20 | 6730 →4430 →1417,60 |
| Máquina de lavandariaI/84.3/A: quota62,50, ajustamento57,50 | 6767,50 →4467,50 →1429,60 |
| Quota contabilística anterior em falta | Lucro/base/colecta indeterminados; ajustamentos independentes conhecidos continuam discriminados |
Cálculo → gravação → recuperação pela API privada → relatório/dossier demonstrado em cinco casos. **18novos testes frontend;1testeAPI/84asserções**, rollback na baseQA127.0.0.1:55441; routes/actions gerados, TypeScript/build e interface real passaram, incluindo edição, reutilização, ausência declarada, falta de informação, recuperação e exportação. Provas aceites reutilizadas. **7ficheiros de runtime no delta,43protegidos e31originais conferidos**; sem migração/API/configuração/permissões/dependências ou escrita no activo.
| Saldo concreto das amortizações | Condição de retoma |
|---|---|
| Outros códigos/taxas, por exemploII/3/3 ar condicionado12,5% | Acrescentar correspondência verificada, elegibilidade e prova apenas desse delta; sem aprovação genérica adicional |
| Bens usados, abertura de escrita, grandes reparações/benfeitorias7(2)/(4), reavaliações15 e transição anterior2014 | Documentar vida esperada, bases/quotas anteriores e implementar a regra específica aplicável |
| Uso intensivo11, concessões12, peças14, intangíveis específicos16 e eventos de transferência/relocação | Corresponder condições legais e histórico do evento; desenvolvimento/goodwill não herdam taxa do software |
| Mudança de método10, excepções, taxas fora do recorte, vida máxima anual terminada a meio do período e opção8(2) fora do caso demonstrado | Histórico concreto e regra/excepção correspondente; autorização apenas quando a norma a exigir |
| Restantes custos/provisões/periodizações da entrega043dd35d; períodos curtos, conversão anual, representação fiscal e correspondênciasM20/M22 | Mantêm os critérios concretos já registados na matriz; este incremento não os encerra |
A divergência201/quadro8 versus200/quadro10 bloqueia apenas o transporte afectado. Não foram presumidas correspondências oficiais para estes novos campos. **L6 continua parcial;L7 eL8 mantêm os seus âmbitos.** As dez dúvidasL5 não foram reabertas. Recibo: `docs/investmoz/simulations/irpc-l6-depreciation-qa-20261026.json`.
## 26/10/2026 — amortizações e9fe1022 entregues pelo Git
Instalado `e9fe102259c183a9d9bf7e39f246a8c3860839c6` sobre `043dd35d`, preservado como versão anterior. Backup fresco `2026-10-26T07:31:29Z` e restauro isolado sem rede/porta55441: **174tabelas** por contagem/checksum e **369ficheiros/configuração** conferidos. **7ficheiros do delta,43protegidos e31originais** verificados; schema,roles/grants e permissões iguais. As172tabelas de negócio mantêm os valores do backup. Cache:reinício da fila,contadores/timers e renovação da validade do mesmo valor de cache da página inicial. Sessões:expiração individual comprovada pelo prazo configurado120minutos,novas consultas da entrega e acessos anónimos correlacionados por agente/data no nginx;sem perda de dados de negócio. Dependências de5versões antigas arquivadas/verificadas para a margem do pipeline,preservando versões actual/anterior,fontes,dados e backups.
Revisão/manifest público,5marcadores compilados,4assets e simuladorHTTP200 conferidos. Pipeline normal concluído; provas QA18frontend/API1-84/UI/tipos/build reutilizadas,sem nova ronda manual. **Exemplo disponível: lucro6780 → matéria colectável4480 → colecta1433,60MZN. Saldo final a pagar/recuperar indeterminado emL8.** Históricos1–6 preservados; versão7 apenas por activação do novo mapa,substituindo o efeito anterior sem duplicação. Recibo:`docs/investmoz/simulations/irpc-l6-depreciation-delivery-20261026.json`.
O estado anterior «QA sem instalação» de e9fe1022 é histórico. Mantêm-se explícitos os outros códigos de tabela;usados/abertura de escrita/reparações/reavaliação/transição;uso intensivo/concessões/peças/intangíveis específicos/eventos;mudanças/excepções de método e opções fora do recorte. Retoma por correspondência da regra específica,base/vida/quotas e prova do delta,sem autorização genérica adicional. Períodos curtos e planos noutra moeda são o próximo incrementoQA,reutilizando o mecanismo cambial. Restantes custos/períodos/representação/camposM20-M22 conservam critérios próprios;divergência201/Q8 versus200/Q10 restringe apenas o transporte afectado. **L6 parcial;L7/L8 próprios;dez dúvidasL5 não reabertas.**
## 26/10/2026 — L6: períodos curtos e planos noutra moeda em QA
`e9fe1022` está instalado, com o âmbito de amortizações já demonstrado e os restantes casos de tabela/método explícitos acima. Este novo conjunto optativo `IRPC-normal-adjustments/8` está **emQA,sem instalação**. Reutiliza os meses e montantes do plano,os mapas fiscais emMZN e o mecanismo cambial entregue. Os históricos1–7 e o plano original não são reescritos.
Períodos de meses completos com termo em2026: início7(4)a,cessação7(4)b,início/fim de sujeição7(4)c e transição7(4)d,mediante identificação do evento/datas/suporte; plano com6meses ou selecção explícita de6dos12meses,sem anualizar receita,resultado,base ou taxa. Primeiro mês civil do plano é declarado,não inferido do mês orçamental. Anual diferente do ano civil conserva a correspondência do período autorizado/comunicado existente. Duodécimos ordinários do art9(3) do Decreto72/2013 aplicam o número de meses de utilização;art17 integral em período curto e restantes excepções não se tornam suportados por aproximação. Elemento conhecido como não amortizável mantém acréscimo integral,sem exigir método irrelevante.
Planos em outra moeda: cada mês seleccionado reutiliza ou confirma selecção cambial pelo procedimento existente,coluna/data/boletim/sentido e vínculo à origem. Moeda e valores originais permanecem no relatório. Não se adopta taxa actual,única ou de outro mês por defeito. **A conversão mensal para simulação exige pressuposto documentado;não confirma automaticamente uma regra fiscal de conversão anual.** Os mapas/activos/quotas/perdas existentes continuam emMZN e são reconciliados expressamente;nenhuma segunda conversão automática. Saldos patrimoniais de créditos em moeda estrangeira não são apresentados comoMZN pela conversão dos fluxos do plano;correspondência de saldo/data/taxa continua separada.
| Caso novo | Efeito demonstrado emMZN |
|---|---|
| Início1Julho–31Dezembro,meses7–12: resultado3120;quota fiscal50 e ajustamento10 | Lucro3130 → matéria colectável3130 → colecta1001,60,à taxa32%;ausência de perdas/benefícios declarada |
| Mesmo recorte emUSD,pressuposto sintético64MZN/USD identificado em cada mês;mapasMZN reconciliados | Resultado199680;ajustamento640;lucro/base200320 → colecta64102,40. Taxa64 é pressupostoQA,não boletimBM real ou parâmetro fiscal confirmado |
| Anual emUSD;plano de6meses iniciado emJulho;cessação e sujeição no mesmo ano | Novos testes próprios;respectivamente colecta128204,80 e1001,60nos casos correspondidos,sem anualização do semestre |
| Falta de selecção de um mês,moeda incompatível ou taxa editada sem confirmação | Valores originais e conversões independentes visíveis;resultado/lucro/base/colecta dependentes indeterminados |
| Perdas reportadas propostas num período curto | Lucro3130conhecido;dedução/base/colecta pendentes da sequência de períodos. Art41(5) exclui da contagem o período de transição7(4)d inferior a6meses;não autoriza agregar todos os períodos curtos |
Cálculo → gravação → recuperaçãoAPI → relatório/dossier demonstrado em4casos. **13testes novos frontend,API1teste/58asserções**, rollback na baseQA127.0.0.1:55441;routes/actions pelo procedimento existente,TypeScript/build e interface real passaram. Interface demonstrou alteração de datas e taxa,confirmação cambial,recuperação e exportação. Mudança na origem cambial invalida a actualidade do novo resultado,conservando o histórico. Provas aceites reutilizadas,sem repetição manual. Delta:**9ficheiros de runtime,43protegidos e31originais**;sem API/schema/configuração/permissões/dependências ou escrita no activo.
| Pendência concreta | Condição de retoma e bloqueio |
|---|---|
| Datas parciais,períodos superiores a12meses/liquidação e curtos fora do recorte2026 | Corresponder datas/evento,parcelas de dias e regra aplicável;apenas esse período depende da implementação |
| Dedução de perdas em sequência com períodos curtos/transição | Declarar sequência efectiva de períodos posteriores e aplicar41(5) ao caso7(4)d inferior a6meses;sem prazo presumido só por ano civil. Lucro independente continua calculável |
| Limites anuais de publicidade e provisão de créditos em período curto | Corresponder expressamente a base/limite do período e regra de proporcionalização,se aplicável;sem anualização ou rateio presumidos. Outros custos e períodos anuais não bloqueados |
| Quota integral art17 em período curto,opções/métodos/tabelas e casos de amortização ainda não suportados | Implementar combinação específica e provar só o novo efeito;condições restantes do conjuntoe9fe1022 continuam válidas |
| Conversão fiscal anual confirmada,saldos em moeda estrangeira e fracções de cêntimo da conversão | Identificar regra fiscal/data/base,taxa e âmbito;para saldos,conversão própria em vez de somar fluxos;para fracções,regra de representação. Até lá,pressupostos de simulação explícitos e total indeterminado quando não representável neste recorte |
| Restantes custos/periodizações e correspondênciasM20/M22 | Mantêm os critérios já registados. Divergência201/Q8 versus200/Q10 limita só o transporte afectado |
Fontes primárias reutilizadas: CIRPC Lei34/2007 PDF4/p768(58),art7(4)/(7),ePDF12/p768(66),art41(5);Decreto72/2013 PDF3/p1074(7),art9(3). Exemplar e originais/hash preservados;sem importação/publicação documental. **L6 continua parcial. Colecta não é saldo final a pagar;L7 eL8 mantêm âmbitos próprios.** As dez dúvidasL5 não foram reabertas. Recibo:`docs/investmoz/simulations/irpc-l6-periods-fx-qa-20261026.json`.
## 26/10/2026 — períodos curtos e planos noutra moeda56475acb entregues pelo Git
Instalado `56475acb2f39e58cb51664913f7fb499f58eb7ab` sobre `e9fe1022`,preservado como versão anterior. Backup fresco `2026-10-26T08:17:39Z` e restauro isolado sem rede/porta55441: **174tabelas** por contagem/checksum e **369ficheiros/configuração** conferidos. **9ficheiros do delta,43protegidos e31originais** verificados;schema,roles/grants e permissões iguais. As172tabelas de negócio mantêm os valores do backup. Cache/sessões reconciliadas com os eventos operacionais e acessos anónimos registados;expiração,quando aplicável,comprovada individualmente pelo prazo configurado. Dependências de5versões antigas arquivadas/verificadas,preservando versões actual/anterior,fontes,dados e backups.
Revisão/manifest público,6marcadores compilados,4assets e simuladorHTTP200 conferidos. Pipeline normal concluído;provasQA13frontend/API1-58/UI/tipos/build reutilizadas,sem nova ronda manual. **Semestre demonstrado: lucro3130 → matéria colectável3130 → colecta1001,60MZN.** PlanoUSD:pressuposto sintético64MZN/USD por mês identificado,originais conservados e mapasMZN reconciliados;lucro/base200320 → colecta64102,40MZN. **Não confirma regra fiscal de conversão anual nem boletimBM real. Saldo final a pagar/recuperar continua indeterminado emL8.** Históricos1–7 preservados;versão8 optativa,sem anualizar resultados ou usar taxa actual por defeito. Recibo:`docs/investmoz/simulations/irpc-l6-periods-fx-delivery-20261026.json`.
O estado anterior «QA sem instalação» de56475acb é histórico. Permanecem explícitos os casos de datas parciais/liquidação,sequência de perdas41(5),limites anuais em período curto,art17 curto/restantes amortizações,conversão fiscal anual/saldos em outra moeda/fracções e demais custos/periodizações. Condições de retoma continuam na mesma matriz. Próximo incrementoQA:representação de valores e camposM20/M22 por corresponder;divergência201/Q8 versus200/Q10 limitada ao transporte do resultado afectado,sem reabrir cálculos demonstrados. **L6 parcial;L7/L8 próprios;dez dúvidasL5 não reabertas.**
## 26/10/2026 — L6: representação dos valores e campos M20/M22 em QA
`56475acb` está instalado. Este novo conjunto optativo `IRPC-normal-adjustments/9` está **em QA, sem instalação** e acrescenta preparação dos valores/campos, sem alterar fórmulas de lucro tributável, matéria colectável ou colecta. Históricos1–8, plano original, pressupostos cambiais e demais livros preservados. A falta de uma correspondência documental afecta o campo e a sua reconciliação, mantendo os totais fiscais existentes.
**Representação:** valor racional exacto conservado, apresentação aproximada identificada por«≈» e fracção original; zero conhecido, informação em falta e campo sem aplicação distintos. M20A.1/quadro4/M12 pede meticais sem centavos: valores inteiros são representáveis, fracções ficam por corresponder, sem arredondamento/truncagem. Preparação M22 já aceite com valores exactos ao cêntimo preservada; fracções de cêntimo continuam explícitas e pendentes da regra fiscal aplicável. Resultado líquido negativo M20 é apresentado entre parêntesis; M22 separa campo de lucro do de prejuízo, sem colocar perda no lucro ou criar matéria colectável negativa.
**M20:** reutiliza as quatro correspondências directas de custos das vendas,pessoal,depreciação e juros. Discrimina as receitas e despesas operacionais por conta com suporte e reconciliação exacta ao plano do período/moeda. Demonstra prestação de serviços7.2,fornecimentos/serviços6.3,outros gastos6.8 e imposto contabilizado8.5, além das contas directas6.1.1/6.2/6.5/6.9. Rótulos das demais contas são estrutura disponível; não constituem novas regras fiscais nem provam a qualificação de uma parcela. Uma origem incompleta não apaga as contas directas independentes.
O imposto contabilizado tem valor/ausência e suporte próprios, e localização já incluída ou exterior ao plano. Colecta não é despesa contabilística presumida. Valor já incluído não é subtraído novamente; contradição com o mapa de imposto próprio ou coexistência das duas localizações fica identificada. O resultado líquido é apurado para preparação; o transporte automático entre edições continua impedido só no resultado afectado.
**M22 PDF:** correspondências de variações patrimoniais201/202,resultado203,amortizações não aceites206,provisões/imparidade209,impostos de outrem213,multas/juros compensatórios215,ajudas219,representação220,publicidade221,despesas não documentadas223,aluguer224,combustíveis225,viaturas226 e reposição de provisões tributadas239. Reutiliza os ajustamentos demonstrados; não reaplica as percentagens impressas. A representação já calculada usa80%,compatível com220. Campo213 é apenas de outrem: imposto próprio36(1)a continua **sem campo presumido**. Efeitos positivos de amortização vão a206; recuperações negativas de quotas anteriores ficam separadas até correspondência própria, sem compensação no mesmo campo.
Somas238/258 e lucro reconstruído apenas quando todas as parcelas têm correspondência e reconciliam; campos259/260/269/270/276/277/278/300 reutilizam o cálculo existente, mesmo havendo uma parcela sem campo. Colecta total302 só é preparada com ausência de parcela de taxa reduzida declarada com suporte;caso conhecido mantém âmbitoL7 e não apaga300. Campos309–316/saldo final permanecem emL8.
| Caso novo | Resultado e limite de aplicação |
|---|---|
| Correspondência no semestre demonstrado, ausência de imposto contabilizado e taxa reduzida declaradas | Resultado líquido3120;203=3120;206=10;238=3130;258=0;lucro/base3130;colecta normal300 e total302=1001,60MZN. Reconciliação aritmética exacta, sem transporte automático entre edições |
| Fornecimentos300,50 e outros gastos299,50, origem600 | Parcela300,50 conserva601/2;M20 em meticais inteiros pendente só nas parcelas fraccionárias;resultado e colecta1001,60inalterados |
| Imposto contabilizado em falta | Resultado líquido/campo200 e somas dependentes indeterminados;lucro/base3130 e colecta1001,60mantidos |
| Recuperação de quota anterior:ajustamento−26 | Efeito fiscal e colecta1001,60preservados;sem código de dedução inventado,somas238/258 pendentes;260/278/300 conhecidos |
| Imposto próprio320 contabilizado exterior ao plano | Resultado líquido2800 conhecido;campo de acréscimo próprio por corresponder,sem usar213 de outrem;lucro/base3130 e colecta1001,60preservados |
Percurso cálculo → gravação → recuperação privada → relatório/dossier demonstrado em **5casos**. **15testes novos frontend;API1teste/97asserções**, transacção revertida na baseQA127.0.0.1:55441;routes/actions gerados pelo procedimento existente,TypeScript/build e interface real passaram. Interface demonstrou edição de parcelas,imposto em falta sem apagar valor anterior,recuperação/exportação e pendências apenas dependentes. Provas aceites reutilizadas;sem repetir suites anteriores. **4ficheiros de runtime no delta,50protegidos e31originais** conferidos;sem API/schema/configuração/permissões/dependências ou escrita no activo.
Fontes: PDF M22 SHA2564b61bd83d1fbcfd3b7b5c5523cea5923f7d0f65dc4c004eff58e5db38f763c88,3páginas já aceites reutilizadas;M20A.1 SHA2561ceca6f4c6d77853c1b2b445876599b42093175fa89eecf40590180956d83a9e,M12/D13–D35. Inventariados os20ficheiros acessíveis deModelos/Notas,incluindo temporários;originais/hash preservados. Só rótulos genéricos necessários extraídos do XLSX;sem valores privados,fórmulas/cache do exemplar,importação ou publicação documental.
| Saldo concreto da preparação M20/M22 | Condição de retoma e alcance |
|---|---|
| Transporte do resultado M20A.1/D35→M22 | Exemplar compatível ou instrução que resolva201/quadro8 versus200/quadro10. Só esse transporte fica impedido;valor líquido próprio e demais campos continuam visíveis |
| Imposto próprio36(1)a,quota anterior recuperada e restantes efeitos de periodização/obras/reversões sem campo | Corresponder rótulo,edição/período e regra específica do campo. Efeito/valor conservados sem código provisório;apenas somas/campos dependentes aguardam |
| Fracções M20 e subcentavos M22 | Identificar regra de representação do caso;preservar fracção e apresentar aproximação identificada até então. InteirosM20 e cêntimos exactosM22 não bloqueados |
| Imposto contabilizado simultaneamente incluído e exterior ao plano | Discriminar ambas as componentes/referências e conciliar8.5/acréscimo próprio sem repetir gasto;sem inferir o valor da colecta |
| Contas/quadros e anexos restantes fora das seis linhas financeiras demonstradas | Reutilizar dados existentes,classificar componentes com suporte e acrescentar correspondência específica;sem tomar campos preenchidos do exemplar como dados do investidor |
L7 mantém benefícios/casos especiais/taxas reduzidas eL8 mantém retenções,pagamentos,créditos e saldo final. Restantes regras deL6 e as dez dúvidasL5 conservam o saldo e as condições já documentadas. **L6 continua parcial;colecta não é saldo final a pagar.** Recibo:`docs/investmoz/simulations/irpc-l6-values-forms-qa-20261026.json`.
## 26/10/2026 — representação dos valores e campos M20/M22 5aaf1a56 entregues pelo Git
Instalado `5aaf1a56f9d928331364fcc8b0d1528e51dba327` sobre `56475acb`,preservado como versão anterior. Backup fresco `2026-10-26T08:57:09Z` e restauro isolado sem rede/porta55441: **174tabelas** por contagem/checksum e **369ficheiros/configuração** conferidos. **4ficheiros do delta,50protegidos e31originais** verificados;schema,roles/grants e permissões iguais. As172tabelas de negócio mantêm os valores do backup;cache/sessões reconciliadas com eventos operacionais/acessos anónimos,sem alteração de dados de negócio. Revisão/manifest público,7marcadores compilados,4assets e simuladorHTTP200 conferidos. Sem migrações,importações ou escrita privada sintética no activo.
Pipeline normal concluído;provasQA15frontend/API1-97/UI/tipos/build reutilizadas,sem nova ronda manual. **Disponível no âmbito demonstrado: resultado líquido3120 + ajustamento10 → lucro/base3130 → colecta1001,60MZN.** Representação exacta,ausência/informação em falta/campo sem aplicação e valores ainda sem correspondência conservados. M20 mantém fracções sem arredondamento presumido;M22 mantém preparação exacta ao cêntimo já aceite. Imposto próprio320 exterior produz resultado líquido2800,mas campo de acréscimo próprio continua pendente,sem usar213 de outrem. Divergência201/Q8 versus200/Q10 só limita o transporte afectado. Históricos e cálculos anteriores,pressupostos cambiais e âmbitosL3/ISPC/câmbio/L5 preservados. **Colecta não é saldo finalL8.** Recibo:`docs/investmoz/simulations/irpc-l6-values-forms-delivery-20261026.json`.
O estado anterior «QA sem instalação» de5aaf1a56 é histórico. O saldo seguinte separa desenvolvimento de esclarecimento documental,com exemplo e condição de retoma,para decidir o fecho operacional delimitado. **L6 não está integralmente concluído;L7 eL8 mantêm os seus âmbitos.** Não foi executada pesquisa nova nem repetição dos testes aceites para esta consolidação.
## 26/10/2026 — saldo consolidado de L6 para decisão de fecho operacional delimitado
Referência actual após a entrega `5aaf1a56`: percurso normal demonstrado até à **colecta**, com períodos/moedas/ajustamentos e preparação parcialM20/M22 documentados. Colecta não é saldo final a pagar ou recuperar;L8 conserva esse fecho. Esta lista consolida o saldo das notas anteriores,sem reabrir o que já foi demonstrado. Os pormenores e exemplares continuam nas mesmas secções/recibos;nenhuma nova matriz ou backlog é criado.
**Código ainda por implementar.** São extensões não demonstradas;as fontes já aceites permitem iniciar os casos correspondidos. Dados de um investidor em falta dentro de regra já implementada são uma pendência desse caso, não outra tarefa genérica deL6.
| Trabalho | Exemplo | Condição de retoma / alcance |
|---|---|---|
| Amortizações e quota de aluguer36h restantes | Ar condicionadoII/3/3,12,5%,fora dos10códigos implementados;bem usado com vida esperada e quotas anteriores documentadas. | Acrescentar catálogo e variantes previstas nas fontes aceites:usados/abertura/reparações/reavaliação,uso intensivo/concessões/peças/intangíveis,transição e excepções de método/vida útil,art17 em período curto e quota36h automática. Implementar só o caso escolhido e provar o delta;sem aguardar validação genérica daAT. Só activo,método ou quota ainda não suportados;amortizações demonstradas preservadas. |
| Custos e periodizações específicos | Campanha de lançamento300 com imputação por3exercícios;obra com receita antecipada positiva em vez do zero demonstrado. | Implementar36-A e articulação com36n,reforços financeiros28(3),19(5)/19(6) e18(6–10),com saldos/condições do caso. Autorização de mudança de método apenas quando a disposição aplicável a exigir. Provisões sectoriais dependem primeiro da norma específica indicada abaixo. Só campanha,obra ou periodização específica;limites/provisões ordinários e casos já demonstrados mantidos. |
| Períodos e sequência de perdas | Transição de4meses seguida dos períodos posteriores:aplicar a exclusão de contagem de41(5) ao período7(4)d,sem contar apenas anos civis. | Representar a sequência efectiva de períodos/perdas e acrescentar datas parciais,liquidação/períodos superiores a12meses e outros exercícios com regra/taxa aplicável. Não há nova pesquisa necessária para repetir o recorte de meses completos2026 já entregue. Só período ou utilização de perda dependente;lucro independente e semestres demonstrados preservados. |
| Desdobramentos contabilísticos e quadros/anexos M20/M22 restantes | Imposto próprio200 já incluído no plano e320 exterior:discriminar as duas componentes sem duplicar gasto;contas fora das6linhas financeiras ainda não transportadas. | Acrescentar o desdobramento e as correspondências dos quadros/anexos escolhidos,reutilizando dados existentes. Campos sem correspondência aguardam a referência concreta abaixo;os outros componentes podem ser implementados/provados separadamente. Só componente/conta/campo ainda não suportado;valores e campos correspondidos preservados. |
| Saldos em moeda estrangeira | Crédito final100USD não é soma das receitas convertidas por mês. | Implementar reconciliação de saldo e conversão pela data/regra que vier identificada,usando o motor cambial já entregue. A selecção mensal para simulação continua disponível;esta tarefa não cria outro mecanismo cambial. Só saldo/conversão fiscal dependente da regra;plano e pressupostos mensais permanecem disponíveis. |
**Esclarecimentos documentais aguardados.** Cada ponto abaixo exige apenas a referência/resposta específica indicada. A ausência dessa informação não significa revogação das fontes aceites,nem autoriza transformar a dúvida numa validação genérica deL6. Não se presume que um pedido já tenha sido enviado àAT;estes são pontos delimitados para o esclarecimento aplicável.
| Informação em falta | Exemplo da dúvida | Condição de retoma / alcance |
|---|---|---|
| Edição e campos M20/M22 | M20A.1/D35 remete201/quadro8;PDF M22 usa200/quadro10. Imposto próprio320 não pertence ao213 de outrem;quota recuperada−26 não tem campo de dedução confirmado. | Obter exemplar compatível ou instrução que identifique edição/período,campo e sentido do transporte. Para periodização/obras/reversões ainda sem campo,identificar a correspondência específica. Até informação nova,manter valores/efeitos sem código presumido e não repetir pesquisa. Só transporte,campo e somas dependentes;resultado líquido próprio,260/278/300 e demais campos conhecidos mantidos. |
| Representação fiscal de fracções | M20:300,50=601/2MZN,num exemplar que pede meticais sem centavos;M22:1/300MZN não é um número exacto de cêntimos. | Identificar instrução de representação/arredondamento da edição/campo ou esclarecimento específico. Conservar a fracção até lá;não deduzir regra de arredondamento apenas do rótulo «sem centavos». Só transcrição não exactamente representável;inteirosM20,cêntimos exactosM22 e cálculo racional preservados. |
| Articulação de limites em combinações não demonstradas | Combustível100,comprovado80,viatura de passageiros sem excepção:36h/i com36(4). Provisão de créditos200 num período curto de3meses:limite anual por corresponder. | Esclarecer especificamente a articulação h/i/36(4) e a base/limite dos períodos curtos de publicidade/créditos,se houver proporcionalização aplicável. Não somar exclusões,anualizar ou repartir por presunção. Retomar só perante referência/resposta concreta para o exemplo. Só combinação ou limite do período;casos independentes com regra já aplicada mantidos. |
| Regra fiscal de conversão anual | PlanoUSD com64MZN/USD por mês é pressuposto sintético de simulação,não confirmação da data/taxa fiscal anual ou da cotação do saldo final. | Identificar disposição/âmbito,data,base e taxa/boletim aplicáveis ao resultado e,quando necessário,ao saldo. Reutilizar o motor existente e demonstrar só a correspondência nova;sem taxa actual por defeito ou nova ronda da pesquisa anterior. Só confirmação fiscal anual e saldo dependente;conversões mensais documentadas de simulação mantidas com os avisos. |
| Norma sectorial de provisões reguladas | Provisão200 de uma entidade financeira sujeita ao28d não herda os1,5%/6% do regime ordinário29. | Identificar sector,regulador,norma de supervisão aplicável e saldos/condições necessários,antes da implementação específica. A fonte oficial fornecida é aceite;falta a regra concreta do caso,não certificação genérica da fonte. Só provisão regulada respectiva;provisões ordinárias demonstradas preservadas. |
**Base da decisão operacional:** o âmbito demonstrado e as suas limitações permanecem disponíveis na interface e nas exportações;as provas aceites mantêm validade. Um fecho operacional delimitado pode referir esse âmbito,com estas extensões/documentos fora da cobertura e retoma por caso. Esta consolidação **não declara L6 integralmente concluído nem regista uma decisão de fecho ainda não tomada**. Permite preparar o avanço paraL7 sem condicionar os casos independentes à resolução de todo este saldo. Benefícios/isenções/taxas reduzidas/tributações autónomas e operações especiais mantêm âmbitoL7;retenções,pagamentos,créditos e saldo anual mantêm âmbitoL8. As dez dúvidasL5 só afectam dependências efectivas e não foram pesquisadas novamente.
## 26/10/2026 — L6 operacional no âmbito demonstrado e delimitação de L7
**Decisão expressa da Tempo:** L6 fica operacional no âmbito demonstrado disponível em `5aaf1a56`, com limitações explícitas. Não é conclusão integral de L6 ou do IRPC. Os cinco grupos de código e cinco grupos documentais da secção «saldo consolidado de L6» permanecem separados, com exemplos e condições de retoma. As notas anteriores que deixavam a decisão operacional por tomar conservam o seu valor histórico; esta decisão é posterior. As provas aceites são reutilizadas. As pendências de L5/L6 só impedem tratamentos que dependam delas.
**Estado deste incremento:** delimitação documental de L7, sem novo cálculo, instalação, migração, importação ou alteração de dados activos. A colecta normal entregue mantém-se distinta do saldo a pagar/recuperar. Retenções, pagamentos, aplicação anual de créditos e liquidação final permanecem em L8. Recibo: `simulations/irpc-l7-scope-20261026.json` (relativo a `docs/investmoz/`).
### Dados existentes e fronteiras de integração
| Reutilização | Contrato para L7 e limite |
| --- | --- |
| Oportunidade/dossier: `context_opportunity`, `context_opportunity_snapshot`, `context_applicability_snapshot`, `context_reuse` | Conservar origem e data, selecção de campos compatíveis e edições deliberadas; `context-inheritance.ts` e `dossier-prefill.tsx` já sustentam esta reutilização. Associação documental a oportunidade/âncora não confirma implantação ou incentivo. |
| `sector_id`, `province_id`, `district_id`, `admin_post_id`, `locality_id` e respectivas designações | Servem para identificar candidatos e pedir apenas elementos em falta. Confirmar actividade efectivamente exercida, estabelecimento/projecto e parcela abrangida por documentos do caso. Localização, polígono, DUAT ou código sectorial isolados não concedem benefício. |
| Sujeito, NUIT, residência/EP, período, início de actividade/exploração e dados do plano | Reutilizar valores declarados e respectivas provas. Data prevista no dossier não substitui início efectivo quando esse for o termo inicial da norma. Distinguir conhecido, ausência declarada e desconhecido. |
| `business_plan_snapshot`, livro `modelo_a_snapshot.irpcNormal` e versões L6 | Receber lucro/base/colecta e parcelas identificadas, com chave e versão de origem. Só alterar o ponto previsto pela norma: ajustamento ao lucro, dedução à base, taxa por parcela ou tributação autónoma separada. Não alterar nem recalcular silenciosamente históricos. |
| Activos, quotas anteriores e despesas já registadas | Reutilizar os mesmos identificadores e montantes; calcular apenas o efeito adicional permitido. Não repetir o acréscimo de uma despesa nem deduzir duas vezes a amortização do mesmo activo. Um caso dependente de regra L6 não implementada conserva essa dependência específica. |
| Preparação M20/M22 e aritmética racional existentes | Conservar montante exacto, unidade/moeda e parcela. Transporte só com correspondência demonstrada para a edição; campo desconhecido, fracção não representável ou divergência editorial não invalida o cálculo independente. Não arredondar por conveniência. |
O motor actual de matéria colectável não subtrai benefícios positivos livres: exige regra, condições, limite e ordem. A colecta normal cobre a taxa geral no recorte demonstrado; escolher «outro tratamento» não implementa uma taxa especial. A presença de campos ou de fontes no portal não equivale a execução de L7.
### Famílias de tratamentos a implementar por casos compatíveis
As referências seguintes delimitam a regra e o ponto de integração; **não constituem benefícios concedidos nem cobertura executável nova**. O exercício do caso, alterações aplicáveis e duração individual ficam associados à versão da regra. Não se transportam taxas temporárias para outro período.
| Família / fonte identificada | Condições e período a guardar | Efeito e exemplo de dúvida delimitada / condição de retoma |
| --- | --- | --- |
| **Despesas com tributação autónoma** — CIRPC, Lei34/2007, art.61(4), com art.36(1)g; PDF17/p768(71) | Natureza legal documentada da despesa não devidamente documentada, confidencial ou ilícita; valor e exercício; taxa de 35% da disposição e versão aplicável ao período. Não classificar pela simples falta de ficheiro anexado. | Parcela autónoma separada da colecta normal; reutilizar o acréscimo36g já feito, sem duplicação. Ex.: despesa100 já acrescida em L6 → parcela autónoma35 no caso qualificado; não é saldo final. Se só falta anexo, pedir a caracterização/prova da despesa e manter indeterminado apenas este tratamento. |
| **Mais-valias autónomas** — Lei12/2025, art.2, CIRPC61-A; art.3 revoga39/47; art.6 vigora em01/01/2026; PDF20/p2180(20) | Alienação, activo, datas, realização/valor fiscal, origem contabilística, período e parcela identificados; taxa32% do61-A. Separar eventos anteriores a2026. | Apurar parcela autónoma, reconciliando o que já integra o resultado L6, sem dupla incidência ordinária/autónoma nem compensação presumida de perdas. Ex.: ganho100 incluído no resultado exige identificar a sua parcela antes de integrar a colecta autónoma32. Retoma: implementar essa reconciliação e a regra de apuramento aplicável ao activo; não bloqueia despesas autónomas ou benefícios independentes. |
| **Isenções e redução por natureza da entidade** — CIRPC9–14; cooperativas no art.12, PDF5/p768(59), e taxa geral61(1) | Tipo efectivo da entidade, rendimentos elegíveis/excluídos, destino dos rendimentos, constituição e reconhecimento apenas onde exigido pela disposição; exercício e norma aplicável. Art.12 refere cooperativas agrárias, de artesanato e culturais e redução de50% da taxa geral; não todas as cooperativas. Arts.12(2)/14 separam rendimentos sujeitos a retenção. | Isenção ou taxa reduzida apenas na parcela coberta; actividade comercial acessória não se torna isenta por designação da entidade. Ex.: cooperativa com actividade elegível e outra não abrangida exige separar rendimentos e custos. Retoma: classificação documental e segregação da parcela, sem transportar a dispensa para retenções L5 ou liquidar créditos L8. |
| **Amortização acelerada** — CBF, Lei4/2009, art.16; compilaçãoAPIEX p72 | Imóveis novos usados no projecto; imóveis reabilitados e máquinas/equipamentos industriais/agro-industriais nas condições da disposição; enquadramento CBF3/9/10 quando aplicável, entrada em uso, taxa normal, base, quota contabilizada e quotas anteriores. Incremento de50% sobre a taxa normal, não cinquenta pontos percentuais. | Efeito no ajustamento ao lucro e, através da cadeia L6, na base/colecta. Ex.: taxa normal10% → taxa acelerada15%, antes das restantes condições/limites; não autoriza uma segunda dedução integral. Retoma por activo com classificação/documentos e conciliação de quotas/custo disponíveis; tabelas L6 em falta bloqueiam só o activo dependente. |
| **Deduções e majorações de despesas/investimentos** — CBF17–19; compilaçãoAPIEX pp73–74 | Tecnologia de ponta, formação de trabalhadores moçambicanos e despesas elegíveis de utilidade pública: natureza, base, exercício inicial, janela dos primeiros cinco anos/exercícios conforme artigo, limites, exclusões, ordem e não cumulaçãoCBF4. Distinguir dedução à matéria colectável de majoração de custo. | Efeito no ponto exacto previsto pela disposição. Ex.: formação sem prova do tipo não permite escolher entre o limite5% e o ramo10% para novas tecnologias do art.18. Retoma: identificar tipo/base de limite e conciliar a despesa já contabilizada; não converter percentagem em dedução livre. |
| **Crédito fiscal por investimento** — CBF15; compilaçãoAPIEX pp71–72 | Investimento novo elegível, exclusões, início, Maputo/outras províncias como uma das condições, parcela da colecta atribuível ao projecto e prazo de utilização/transporte de cinco exercícios. Taxas5%/10% distinguem os ramos da disposição, sem direito automático por localização. | **L7 identifica origem, elegibilidade e crédito potencial; L8 aplica o crédito anual, limites/saldos e liquidação.** Ex.: projecto situado fora de Maputo, sem discriminação do investimento elegível, não gera automaticamente10% de crédito. Retoma: base elegível e calendário documentados; utilização anual aguarda o mecanismo L8. |
| **Tratamentos sectoriais/territoriais CBF** — infra-estruturas20–22; agricultura/pescas27–29; turismo30–33; parques de ciência34–35; grandes projectos36–38; zonas de rápido desenvolvimento39–44; ZFI45–46; ZEE47–48 | Seleccionar a disposição de IRPC efectivamente pertinente, actividade/projecto, delimitação/estabelecimento e estatuto comprovados, data de autorização/início quando exigidos, escalões, duração, cumulação e cessaçãoCBF49–52. ZFI46 e ZEE48 são os artigos de impostos sobre rendimento. Não tratar benefícios exclusivamente aduaneiros como benefícios IRPC. | Isenção, redução ou dedução por parcela e intervalo próprio, em vez de taxa comum ao sector/localização. Ex.: endereço numa ZEE sem estatuto documentado deixa o ramo ZEE pendente; o cálculo normal independente continua. CIRPC61(2) na Lei20/2022 tem termo31/12/2025: não presumir prorrogação para2026. Retoma de cada ramo: condições e cronologia da disposição específica preenchidas, com regra versionada; não exigir pesquisa repetida de todos os sectores. |
| **Operações e regimes especiais** — CIRPC54–56 (entradas de activos, fusões/cisões e sócios), transferência de perdas41-A; regimes sectoriais específicos do acervo | Tipo de operação, intervenientes, residência, datas, activos/passivos/valores fiscais e continuidade; identificar diploma sectorial/artigo e regra aplicável antes de escolher tratamento. Não inferir neutralidade por chamar «fusão» à operação nem aplicar regime mineiro/petrolífero por rótulo sectorial. | Continuidade/ajustamento/tributação diferida ou parcela própria conforme norma, mantendo bases históricas. Ex.: perda recebida de outra sociedade não é perda própria ordinária41 de L6. Retoma: correspondência específica41-A e operação documentada; regras sectoriais sem artigo correspondido ficam candidatas, sem taxa provisória. Não há bloqueio transversal de L7. |
### Registo por tratamento e demonstração a exigir ao código novo
Cada tratamento terá: identificador estável; sujeito/NUIT; oportunidade/projecto/estabelecimento e parcela; contexto herdado e divergências; fonte/exemplar/hash/artigo/versão; intervalo de vigência e período do caso; facto que inicia/termina a duração; condições individualizadas em «sim/não/desconhecido» com prova ou ausência declarada; título/reconhecimento somente quando a regra o exige; base elegível, taxa, limite, ordem e compatibilidade com outros tratamentos; resultado normal de origem; efeito adicional e ponto da cadeia; moeda/conversão e pressupostos; montante exacto; motivos de exclusão/informação em falta; versão/histórico e dependência concreta.
Os estados «candidato», «não aplicável», «informação em falta» e «calculado por regra implementada» não se confundem. Ausência declarada pode produzir efeito zero justificado; desconhecido não produz benefício zero nem benefício presumido. Uma condição negativa exclui o tratamento e conserva o percurso normal quando os seus dados são suficientes. Com potencial benefício ainda indeterminado, apresentar o cenário normal de referência e a parcela pendente sem declarar total fiscal definitivo. Mudança de sector/localização/documento invalida apenas a correspondência dependente e pede confirmação de reutilização; conserva o original e as edições deliberadas.
**Primeiro incremento delimitado para implementação:** qualificação comum e segregação de efeitos, acompanhadas do caso35% do61(4), com despesa já ajustada36g e caso de informação insuficiente. É independente de transporte M20/M22 não correspondido e de amortizações L6 em falta. **Incremento compatível seguinte:** cooperativa abrangida pelo12 com parcela elegível separada e amortização acelerada16 para activo já suportado em L6; cada caso só acompanha a entrega se demonstrado. Mais-valias61-A, deduções17–19, ramos sectoriais e operações especiais seguem separadamente quando as respectivas parcelas/regras estiverem correspondidas. Crédito15 prepara direito potencial em L7 e contrato de passagem para L8, sem antecipar liquidação anual.
Para cada nova regra: condição satisfeita, negativa, informação em falta, período incompatível/benefício expirado, sobreposição com ajustamento existente e alteração de contexto. Demonstrar apenas o delta: cálculo → gravação → recuperação → relatório, incluindo fonte, período, condições, efeito no lucro/base/colecta ou parcela autónoma e saldo final L8 por determinar. Recuperar históricos anteriores sem os alterar; não duplicar ajustamentos ao voltar a guardar. Reutilizar as provas aceites; não reabrir L3, ISPC, câmbio ou percursos L5/L6 independentes.
### Fontes consultadas e pendências delimitadas
Reutilizado o inventário autorizado de **8143ficheiros**, sem nova varredura de pastas. Para delimitação foram consultados os originais CIRPC/alterações já arquivados, a Lei4/2009 local e a compilação oficial [APIEX — Legislação de Investimentos em Moçambique](https://pt.apiex.gov.mz/wp-content/uploads/2025/02/LEGISLACAO-DE-INVESTIMENTOS-EM-MOCAMBIQUE.pdf), que reúne Lei8/2023, Decreto8/2024 e CBF4/2009. Disponibilidade, situação documental/jurídica e uso no cálculo continuam estados independentes. O acesso actual à cópia CBF supera a indisponibilidade assinalada em notas antigas; não activa regra nem apaga a nota histórica. Artigos, páginas, hashes e limites no recibo. A compilação não dispensa o período/alterações de cada tratamento, nem cria validação jurídica genérica adicional.
**Código por implementar em L7:** qualificação e persistência específicas; efeitos segregados; regras das famílias acima, por parcelas; conciliação sem duplicação; relatório/exportação correspondente. **Documentação por caso:** estatuto/reconhecimento ou enquadramento individual quando a fonte o exige; identificação de parcela/limite/cronologia; norma sectorial ainda sem correspondência; edição/campo de transporte afectado. Cada uma conserva exemplo e condição de retoma na linha correspondente. Não é necessário resolver todos os documentos para começar o primeiro incremento independente. L6 operacional não elimina este desenvolvimento; L7 delimitado não é L7 implementado; L8 conserva a liquidação final.
## 26/10/2026 — L7: qualificação, despesas autónomas e casos compatíveis em QA
**QA, sem instalação.** Base instalada preservada `5aaf1a56`; delimitação `d37fffb2`; ramo `codex/irpc-l7-common-autonomous-qa-20261026`, fotografia opcional `IRPC-normal-adjustments/10`. L6 continua operacional no âmbito demonstrado, com os cinco grupos de código e cinco documentais preservados. A implementação abaixo acrescenta apenas os tratamentos demonstrados; não conclui L7 nem o IRPC. Saldo final, retenções, pagamentos e aplicação anual de créditos permanecem em L8.
**Qualificação comum executável:** reutiliza sujeito/NUIT, âmbito, período, origem da oportunidade/dossier, sector e território; guarda condições, prova, fonte/artigo e período por tratamento. «Informação em falta», «ausência declarada», «não aplicável/condição negativa» e «calculado» têm resultados distintos. Desconhecido não vira zero. Período incompatível, identidade por reconciliar ou contradição afectam só o resultado dependente. A localização não escolhe taxa nem activa benefício. Os snapshots de origem ficam internos; o relatório apresenta contexto legível e as condições documentadas.
**Despesas61(4):** cada parcela aponta para uma linha `undocumented` do mapa36(1)g de L6, com acréscimo integral já calculado. Montante, documento e linha são reutilizados; L7 não introduz outro acréscimo nem outra despesa. A classificação legal e incidência são declaradas com prova própria; falta de anexo não classifica uma despesa. O imposto autónomo usa35% apenas nos casos qualificados. Duplicação da referência, parcela não correspondida, ausência contraditória ou informação insuficiente deixam o imposto reconciliado indeterminado; as parcelas conhecidas permanecem discriminadas. Condição negativa documentada conserva o ajustamentoL6 e não aplica imposto autónomo à parcela.
**Cooperativas12/14:** agrárias, artesanato ou culturais, residentes, com base ordinária integralmente elegível e ausência documentada de rendimentos sujeitos a retenção, aplicam redução de50% à taxa geral32%, ou16%. Não depende de seleccionar um sector semelhante. A qualificação especial pode coexistir com a opção «outro tratamento» da colectaL6: não exige fingir que a taxa reduzida é regime geral. Parcela mista, rendimentos retidos, outra entidade ou ausência contraditória conservam pendência própria; não recebem redução global presumida. O imposto autónomo de despesas não é reduzido por esta taxa.
**CBF16:** reutiliza identificadores e valores dos activosL6 suportados; imóvel novo do projecto ou máquinas industriais/agro-industriais das categorias correspondidas, com enquadramentoCBF3/9 e reconhecimento10 quando exigido (ou excepção identificada). Recorte inicial: primeiro exercício anual civil2026, método constante pela taxa normal máxima da tabela, activo desde01/01/2026, custo histórico novo, sem quotas anteriores/saída e sem cumulação de outros benefícios. Incrementa a taxa normal em50% e reutiliza limites de contabilização/saldo fiscal. Deduz apenas a diferença entre o mapa normal e o acelerado, sem alterar o activo de origem, os documentos ou os saldos oficiais. Quotas constantes gerais e demais cálculosL6 conservam o comportamento anterior quandoL7 está ausente.
| Caso sintético recuperado da API QA | Lucro/base e colecta de referênciaL6 | EfeitoL7 demonstrado | Resultado e limite |
| --- | --- | --- | --- |
| Despesa100 já acrescida36g | Lucro/base3230;colecta1033,60MZN | Novo ajustamento ao lucro0;imposto autónomo35 | Colecta combinada1068,60MZN;saldo finalL8indeterminado |
| Classificação da mesma despesa em falta | Lucro/base3230;colecta1033,60MZN preservados | Imposto autónomo indeterminado | Colecta combinada indeterminada;sem perda dos cálculos independentes |
| Condição negativa documentada na parcela | Ajustamento36g100 preservado | Parcela não aplicável;imposto autónomo0 justificado | Não confunde condição negativa com informação em falta |
| Ausência declarada de despesas autónomas | Lucro/base3130;colecta1001,60MZN | Ausência com suporte;imposto autónomo0 | Ausência contraditória com despesa36g fica pendente |
| Cooperativa integralmente abrangida | Base3130;colecta geral1001,60MZN | Taxa16%;colecta500,80MZN | Base/proveitos não alterados;sem retenções/créditos abatidos |
| Máquina industrial existente:base1000,taxa10%,quota contabilística120 | Quota normal100;lucro/base6260;colecta2003,20MZN | Quota acelerada150,mas dedução limitada120;diferença adicional20 | Lucro/base6240;colecta1996,80MZN;sem deduzir50 nem150 outra vez |
**Cálculo → gravação → recuperação → relatório:** fotografia10 opcional no mesmo livro/snapshot, chave com entradas/contexto e histórico imutável anterior. SemL7, a fotografia9 aceite e a sua chave/totais permanecem iguais. Recalcular não acumula imposto nem duplica o acréscimo. HTML e dossier financeiro mostram referênciaL6, efeitosL7, parcelas autónomas, fonte, condições, período e limitações; recuperação e download demonstrados no componente real. Uma mudança de origem/entradas torna a fotografia anterior histórica; não altera o registo anterior. M20/M22 conservam a preparaçãoL6 de referência: **este incremento não transporta efeitosL7 para campos oficiais por aproximação**, nem resolve as divergências documentais existentes.
**Provas novas:** Wayfinder `--with-form` gerou routes/actions pelo wrapper QA; TypeScript e build QA passaram. Dezanove testes dirigidos novos passaram, incluindo comparação exacta com a fotografia9 aceite, duplicação, período curto, opção especial de cooperativa, ausência contraditória, dados em falta e contexto apresentado sem despejar snapshots internos. API privada:1teste/108asserções, `simulator_fiscal_delta_20261021_test`,127.0.0.1:55441, transacção com rollback e guarda de identidade/base; seis casos recuperados com plano/livro/históricos idênticos. UI do componente real: alteração de classificação, informação em falta, ausência, cooperativa mista, cumulação pendente, gravação/recuperação local e exportação; sem erros de página. A prova local é distinta da API. Não houve testes/escrita no activo nem repetição das suites funcionais aceites de L3, ISPC, câmbio ou L5/L6.
**Entrega agrupada preparada:** qualificação + despesas autónomas, cooperativa integralmente elegível e amortizaçãoCBF16 no recorte acima. Despesa autónoma e cooperativa também foram demonstradas juntas:parcela35 sem redução,colecta sobre a base516,80 e combinada551,80MZN no exemplo de base3230. Isto não autoriza cumulação cooperativa+CBF16: essa combinação mantém resultado dependente indeterminado. A futura instalação segue o procedimento Git existente, com backup/restauro fresco e conferência do delta; não foi executada nesta passagem.
**SaldoL7 na mesma matriz:**
| Natureza | Ainda fora da cobertura / exemplo | Condição concreta de retoma |
| --- | --- | --- |
| Código | Despesa autónoma fora de linha36g calculada ou parcela ainda não segregada | Implementar origem/segregação correspondente e prova da incidência;não copiar montante para uma segunda despesa |
| Código | Cooperativa com actividade abrangida e outra não abrangida,ou rendimento sujeito a retenção | Segregar proveitos/custos/base e aplicar o tratamento apenas à parcela elegível;L5 conserva a retenção |
| Código | CBF16 em imóvel reabilitado,outra categoria,quota inferior à máxima,método degressivo,duodécimos,quotas anteriores ou exercício posterior | Corresponder regra e cronologia respectivas e reutilizar o activo/quotas existentes;pendênciaL6 limita apenas o activo dependente |
| Código/documento por caso | Cooperativa+CBF16 ou outro benefício positivo a cumular | Identificar compatibilidade,ordem e limites específicos;implementar a combinação,sem presumir soma de benefícios |
| Código | Mais-valias61-A,demais isenções/deduçõesCBF17–19,regimes sectoriais/territoriais e operações especiais | Implementar a família/parcelas já delimitadas na secção anterior;período e fonte específicos,sem nova pesquisa transversal |
| Documento por caso | Estatuto/título/excepçãoCBF ou prova das condições em falta;endereçoZEE sem estatuto | Juntar o elemento que a disposição exige ou registar condição negativa;localização isolada permanece insuficiente |
| Transporte/documento | CampoM20/M22 para efeitoL7,edição divergente ou representação não correspondida | Correspondência do campo/edição e regra de representação demonstradas;preservar o cálculo independente exacto |
| ÂmbitoL8 | Direito potencial ao créditoCBF15,aplicação anual de créditos,retenções,pagamentos e saldo final | Executar o mecanismo próprioL8;nenhuma dedução/compensação anual é presumida neste lote |
Fontes reutilizadas: inventário autorizado8143ficheiros; originaisCIRPC/alterações e CBF/compilaçãoAPIEX já identificados na delimitação,com hashes conservados. Sem activação por consulta ou revalidação jurídica genérica. Recibo: `docs/investmoz/simulations/irpc-l7-common-qa-20261026.json`. Provas locais: `outputs/irpc-l7-common/`; reprodução dirigida: `node --test tests/frontend/irpc-special.test.mjs`, `php tools/irpc-special-qa.php routes`, `php tools/irpc-special-qa.php test`, `tsc --noEmit`, build com `INVESTMOZ_QA_BUILD=1`.
## 26/10/2026 — preparação da entrega L7 e preservação do main concorrente
A entrega do âmbito QA `ab2ff2fd` integra o `main` concorrente `a2122dc3`, sem substituir as alterações de apresentação/navegação. Os seis ficheiros de execução L7 conservam exactamente o código QA;os oito ficheiros concorrentes conservam exactamente o código do main. Reutilizadas as provas19testes/API108/UI/tipos/build de L7. O conflito documental foi resolvido recuperando586linhas de histórico do manual que tinham sido removidas no merge concorrente,sem apagar a sua notaV2-01 no CSV. As3555linhas mantêm-se,com o único delta fiscal emAUD-SIM-INT02. O registo de instalação só será actualizado após backup/restauro fresco,conferência do destino e conclusão da entrega Git;esta nota não a antecipa.
## 26/10/2026 — primeira entrega agrupada L7 instalada pelo Git
Instalada `e07f89da3d59d06aa1b8c50c22a478b7b167bfdd` (integração do código QA `ab2ff2fdbcbe6fb94f03e4bc4cc7ccbd647d94fc` com o main concorrente`a2122dc3`),com `5aaf1a56f9d928331364fcc8b0d1528e51dba327` preservado como versão anterior. Os seis ficheiros de execução L7 são exactamente os da prova QA aceite;as sete alterações concorrentes de apresentação/navegação e o respectivo teste foram preservados. Recuperadas586linhas de histórico do manual removidas no merge concorrente;notaV2-01 conservada,sem alterar o seu conteúdo.
Backup fresco `2026-10-26T10:55:59Z`;restauro isolado sem rede/55441 verificou174tabelas por contagem/checksum e369ficheiros/configuração. Conferidos13ficheiros de execução do delta,50protegidos e31originais. Schema,roles/grants e permissões mantêm-se;172tabelas de negócio iguais ao backup. Cache/sessões reconciliadas por eventos operacionais e acessos públicos,sem inferir perda por RLS. A versão activa e a anterior foram preservadas durante o arquivo conferido de dependências antigas para recuperar espaço;nenhum dado,original ou backup foi eliminado.
Revisão/manifest público,marcadoresL7/L6/câmbio,assets e simuladorHTTP200 conferidos. Procedimento Git concluído;provas funcionais aceites19testes/API108/UI/tipos/build reutilizadas. Os controlos automáticos obrigatórios da instalação ficaram registados no recibo,sem nova ronda manual dos casos aceites. Sem migrações,importações,recálculo de históricos ou escrita privada sintética no activo.
Disponíveis apenas qualificação e tratamentos demonstrados:despesas61(4) sobre36g já ajustado,cooperativas12 integralmente abrangidas eCBF16 no recorte documentado. L6 permanece operacional no âmbito aceite;as suas pendências condicionam só dependentes. L7/IRPC não estão integralmente concluídos;localização não concede benefício;saldo final permaneceL8. O estado anterior deQA sem instalação é histórico. Recibo:`docs/investmoz/simulations/irpc-l7-common-delivery-20261026.json`.
## 26/10/2026 — saldo concreto de L7 após a primeira entrega agrupada
O âmbito demonstrado compreende qualificação comum, imposto autónomo61(4) sobre parcelas36g já calculadas emL6, cooperativas12 integralmente abrangidas e amortizaçãoCBF16 nos activos/período/método expressamente suportados. L7 permanece parcial. Este saldo distingue implementação de prova documental por caso; não cria outra matriz nem exige revalidação genérica das fontes aceites. L6 mantém o estado operacional delimitado e as suas pendências; só condiciona tratamentos que efectivamente dependam delas.
### Código ainda por implementar
| Tratamento / caso fora da cobertura | Exemplo | Condição concreta de retoma |
| --- | --- | --- |
| Despesas autónomas fora de parcela36g calculada e segregações adicionais | Despesa100 com apenas60 correspondidos no mapa de origem,ou encargo não incluído no resultado de partida | Implementar origem/parcela e reconciliação próprias,documentar incidência61(4) e impedir nova contabilização/acréscimo da mesma despesa. O ramo já entregue36g não é reaberto. |
| Cooperativas com rendimentos mistos/retidos;demais isenções por natureza da entidade,CIRPC9–14 | Cooperativa com actividade agrária e serviços não abrangidos;associação com rendimentos comerciais acessórios | Segregar proveitos,custos e base elegível e implementar o artigo específico. Não reduzir a base inteira nem estender a redução às retençõesL5. |
| ExtensõesCBF16 e combinações de benefícios | Imóvel reabilitado,método degressivo,quota inferior à máxima,duodécimos,quotas anteriores,ano posterior,cooperativa+CBF16 | Corresponder a regra temporal/método/contabilização e a compatibilidade/ordem/limite da combinação;reutilizar activo e quotas. Tabela ou casoL6 em falta impede apenas o activo dependente. |
| Mais-valias autónomas61-A e operações especiais | Ganho100 já incluído no resultado em2026;entrada de activos/fusão;perda transferida de outra sociedade | Implementar apuramento/parcela e reconciliação com resultadoL6,sem dupla incidência ou compensação de perdas presumida;para operações,aplicar54–56/41-A e preservar valores históricos. |
| Deduções/majoraçõesCBF17–19 e crédito potencialCBF15 | Formação sem ramo/base de limite;investimento novo com activos elegíveis e excluídos | Implementar elegibilidade,base,limite,ordem,janela temporal e não cumulação. CBF15 emL7 delimita direito/origem/crédito potencial;utilização anual,limitação por créditos/saldos e liquidação ficam emL8. |
| Regimes sectoriais/territoriais e disposições especiais | Projecto emZEE sem tratamentoIRPC correspondido;actividade mineira/petrolífera com regime próprio | Implementar a disposição/versão/período aplicáveis ao projecto e à parcela (CBF20–48 ou diploma específico). Endereço/código sectorial só identifica candidato;benefício aduaneiro não se transforma em benefícioIRPC. |
| Transporte de efeitosL7 paraM20/M22 | Imposto autónomo ou redução calculados mas sem campo/edição correspondente | Implementar apenas a correspondência demonstrada e a representação aplicável;conservar os montantes exactos e a preparaçãoL6 de referência,sem campo/taxa provisórios. |
### Dependências documentais que condicionam apenas o caso afectado
| Elemento em falta / dúvida concreta | Exemplo | Condição de retoma |
| --- | --- | --- |
| Classificação/incidência,parcela e período da operação | Há uma despesa36g e falta qualificar61(4);ou há actividade elegível e outra não abrangida | Associar prova/declaração da natureza e parcela ao exercício correcto. Informação em falta continua indeterminada;condição negativa e ausência declarada têm suporte próprio. Não inferir pela falta de anexo. |
| Estatuto e reconhecimento exigidos pela disposição | Endereço numaZEE sem estatuto do projecto;CBF16 sem instrumento10 ou norma de excepção | Juntar o elemento concreto exigido ou documentar a condição negativa/excepção aplicável. Não pedir aprovador ou parecer jurídico genérico adicional. |
| Norma/período/compatibilidade específicos ainda não correspondidos | Redução com termo31/12/2025 pretendida em2026;cumulação cooperativa+CBF16 | Disposição de vigência/prorrogação efectiva ou correspondência da combinação e seus limites. Sem informação nova,não repetir pesquisa transversal;prosseguir com os restantes casos. |
| Edição,campo ou representação do formulário | EfectoL7 com campoM20/M22 não identificado ou fracção sem regra de representação | Identificar exemplar/edição,instrução/campo e forma de representar o valor;limitar a pendência ao transporte afectado. O cálculo independente mantém-se disponível. |
**Limites conservados:** localização não concede benefícios automaticamente;benefício desconhecido não é zero;colecta normal,L7 e imposto autónomo permanecem discriminados. Retenções,pagamentos,aplicação anual de créditos e saldo final a pagar/recuperar continuam emL8. As provas aceites não são invalidadas por esta lista nem por uma dúvida documental num caso independente.
## 26/10/2026 — reconciliação do estado servido L7 e capacidade do instalador
Conferência autenticada por leitura em `2026-10-26T13:56:51.412248+02:00` (Africa/Johannesburg):o portal,o registo do instalador e o main actual coincidem em `e07f89da3d59d06aa1b8c50c22a478b7b167bfdd`. **L7 já está instalado no âmbito demonstrado**,com origemQA`ab2ff2fd`;o estado «ainda emQA,sem instalação» é histórico/desactualizado. A instalação terminou em26/10/2026 às13:02:35 locais;backup anterior às12:55:59 e restauro174tabelas/369ficheiros permanecem comprovados pelo recibo de entrega. Nesta passagem,o dump e o arquivo de ficheiros ainda coincidem com os hashes desse backup e a prova de restauro refere o mesmo dump. Não foi apresentado um novo backup/restauro como executado,nem repetida a instalação da revisão já activa.
**Partição do instalador e backup:**`/dev/md2 / ext4`;release,state,backup,tmp eDocker no mesmo dispositivo. Livres5.52GiB e21448231inodes de29089792. O código do instalador mantém o limiar5GiB;os ficheiros do backup observado ocupam0.164GiB. A leitura satisfaz5GiB+um backup desse tamanho,com margem0.35GiB. A release actual tem28674ficheiros e2503directórios sem seguir links,como referência de escala,não um novo limite arbitrário de inodes. Futuras entregas devem voltar a medir a capacidade imediatamente antes da operação;estes números não garantem uma carga futura diferente. Nenhuma limpeza local/remota foi executada;SGF TEMPO não foi afectado.
**Só o delta L7:**seis hashes de código correspondem à provaQA;revisão/manifest,sete marcadoresL7,quatroassets e entrada do simuladorHTTP200 conferidos. Reutilizadas as provas19testes/API108/UI/tipos/build e as provas anteriores de preservaçãoL6/L3/ISPC/câmbio;sem nova ronda funcional,escrita privada sintética,migração ou importação. A revisão activa e a anterior permanecem preservadas.
**Próximo conjunto delimitado para implementaçãoQA:CBF16 com duodécimos.** Reutilizar activos,tabela/taxa normal máxima,método constante,qualificaçãoCBF e periodizaçãoL6 existentes. Primeiro caso:exercício anual civil2026 com entrada em uso durante o ano;imóvel novo do projecto ou máquina industrial/agro-industrial já suportada;sem quotas anteriores,saída ou cumulação de outros benefícios. Ligar a quota mensalL6 ao incrementoCBF16,limitando ao contabilizado/saldo fiscal e mostrando apenas a diferença adicional. Demonstrar condição satisfeita,negativa,informação em falta e ausência declarada,cálculo→gravação→recuperação→relatório,efeitos no lucro/base/colecta e conservação dos históricos. Este conjunto está apenas delimitado:não é novo cálculo instalado.
Degressivo,reabilitados/usados/reavaliados,quotas anteriores e cumulação cooperativa+CBF16 continuam nos casos próprios. O saldo anterior de sete grupos de código e quatro dependências documentais permanece na mesma matriz,com exemplos/condições de retoma;nenhuma pendência foi apagada. Documento individual em falta limita só o activo/caso dependente. Localização não concede benefício. **L6 operacional delimitado;L7 parcial;retenções,pagamentos,créditos anuais e saldo final emL8.** Recibo:`docs/investmoz/simulations/irpc-l7-server-state-20261026.json`.
## 26/10/2026 — CBF16 com duodécimos demonstrado em QA
**QA preparado, sem instalação.** O portal mantém `e07f89da`, incluindo o primeiro conjuntoL7 `ab2ff2fd`. Este incremento implementa a ligação CBF16–duodécimos delimitada no recibo `irpc-l7-server-state-20261026.json`. L6 permanece operacional no âmbito aceite;L7 continua parcial;L8 conserva retenções,pagamentos,aplicação anual de créditos e saldo final a pagar/recuperar. SGF TEMPO não foi afectado.
**Reutilização e condições:** a opção «Preparar CBF16 com duodécimos» é explícita e conserva os activos,datas,valores e restantes escolhas. O utilizador confirma a reutilização dos meses e da opção mensal do mapaL6. Sem essa opção,os livros/resultados entregues permanecem na fotografia10,com a mesma chave e valores. Com ela,a fotografia11 guarda a preparação,o cálculo e o histórico10 anterior. É possível manter a preparação anual sem alterar automaticamente activos ou apagar resultados anteriores.
Recorte demonstrado:exercício anual civil2026,activo novo já suportado emL6,imóvel novo afecto ao projecto ou máquina industrial/agro-industrial das categorias correspondidas,método constante pela taxa normal máxima,entrada emuso durante2026,sem saída,quotas anteriores ou cumulação de outros benefícios. Mantêm-se prova das condiçõesCBF3/9,reconhecimento10 quando exigido (ou excepção identificada),afectação e período. Localização/sector não activam benefício. Os meses calculados por L6 incluem o mês da entrada emuso;não se introduz cálculo diário nem uma segunda agenda de amortização.
**Cálculo:** usa o motor de amortizaçõesL6 existente,com taxa normal×1,5 e os mesmos duodécimos/12. Mantém base depreciável,terreno/residual,limite contabilístico e saldo fiscal. L7 aplica apenas a diferença entre a dedução fiscal normal e a acelerada;não cria outro activo ou uma segunda depreciação contabilística. Os outros activos do mapa conservam a quota normal. O resultado de referênciaL6 e o resultado apósL7 são apresentados separadamente.
| Caso sintético | Valores demonstrados |
| --- | --- |
| Máquina existente:base1000,taxa normal10%,entrada15/07/2026,6duodécimos,contabilizado60 | Quota normal50;quotaCBF16 75;dedução limitada60;diferença adicional10MZN. Lucro/base de referência6310 e colecta2019,20;apósL7 lucro/base6300 e colecta2016,00MZN. Saldo finalL8indeterminado. |
| Entrada emOutubro,3duodécimos | Quota normal25;quotaCBF16 37,50;diferença12,50 quando o contabilizado a suporta. |
| Entrada emDezembro,1duodécimo | Quota normal25/3,quotaCBF16 25/2;diferença exacta25/6MZN,sem arredondamento fiscal presumido. Aproximação de apresentação e valor exacto permanecem distintos. |
| Imóvel novo já classificado emL6 | Terreno/residual e base são reutilizados;taxa e meses aplicam-se à mesma base. O exemplo confirma quota40→60,limitada50,com diferença10. |
| Falta de suporte da opção/datas/condições | CBF16 fica indeterminado;entradas e referênciaL6 conhecidas conservadas. Não substituir desconhecido por zero. |
| Condição negativa / ausência declarada | Estados distintos e documentados;nenhuma taxaCBF16 aplicada à parcela negativa;ausência produz efeito zero justificado. |
**Demonstração executada:**15testes dirigidos novos,com comparação exacta dos três livros10 aceites (despesa autónoma,cooperativa e amortização anual),sem repetir as suas suites funcionais. API privada:1teste/89asserções,cinco casos mensal/fracção/falta/negativa/ausência,em `simulator_fiscal_delta_20261021_test`,127.0.0.1:55441,guarda de identidade/base e transacção com rollback. Cálculo→gravação→recuperação→HTML e dossier financeiro conferidos a partir dos casos recuperados,com plano/activos/históricos conservados. Recalcular não acumula a diferença adicional. Alterar a data invalida a fotografia corrente sem alterar a anterior.
UI do componente real:opção explícita/cancelamento,alteração das datas e opção mensal no activoL6,informação em falta,6→3duodécimos,limite75→60,diferença10,fracção25/6,gravação/recuperação local e download do relatório;sem erros de página. Esta prova local é distinta da API. Wayfinder`--with-form`,TypeScript e buildQA passaram. Não houve escrita no activo,migração,importação,activação por consulta de fonte ou nova ronda das provas não afectadas deL3/ISPC/câmbio/L5/L6. O motor de amortizaçõesL6 não foi alterado.
**Saldo e condição de retoma:** este recorte cobre duodécimos em exercício anual civil2026;períodos fiscais curtos/autorizados distintos,saídas,anos posteriores,quotas anteriores,quota escolhida inferior à máxima,degressivo,reabilitados/usados/reavaliados e cumulações mantêm correspondência própria. Retomar cada caso quando a respectiva regra/período/contabilização e compatibilidade estiverem ligados ao activo/documentos já existentes,e demonstrar só o seu efeito novo. Uma pendênciaL6 afecta apenas o activo dependente. Os restantes grupos do saldoL7 e os camposM20/M22 ainda sem correspondência mantêm-se;este lote não preenche campos oficiais por aproximação nem conclui o IRPC.
**Entrega agrupada:** os casos compatíveis mensal/fracção/negativa/ausência/informação insuficiente acompanham o mesmo candidato. A capacidade remota de5,52GiB/21448231inodes observada às13:56:51 de26/10 é histórica,não confirmação para nova instalação. Antes da próxima entrega,medir outra vez espaço/inodes na partição de release+backup+temporários,confrontar com o limiar existente5GiB e o backup/carga dessa execução,conferir o main então actual e executar backup/restauro fresco. Manter a versão activa até a nova ficar pronta. Não executar limpeza local ou doSGF para substituir esse controlo remoto.
Fontes e inventário8143 reutilizados dos cotejos aceitesCBF16 eDecreto72/2013art9;originais preservados,sem pesquisa transversal repetida. Recibo:`docs/investmoz/simulations/irpc-l7-months-qa-20261026.json`;provas locais:`outputs/irpc-l7-months/`. Reprodução dirigida: `node --test tests/frontend/irpc-special-months.test.mjs`; `php tools/irpc-special-months-qa.php routes`; `php tools/irpc-special-months-qa.php test`; `tsc --noEmit`; build com `INVESTMOZ_QA_BUILD=1`.
## 26/10/2026 — CBF16 com duodécimos instalado pelo Git
Instalado `0bd5d495505d512088887efd3dc5c61f645b1647`,com `e07f89da3d59d06aa1b8c50c22a478b7b167bfdd` preservado como versão anterior. O main não apresentava divergência;integração por fast-forward sem alterações de código à candidataQA. Backup fresco `2026-10-26T12:34:42Z` e restauro isolado sem rede/55441:174tabelas e369ficheiros/configuração conferidos. Capacidade medida imediatamente antes:5.50GiB e21448052inodes;depois do backup:5.33GiB,acima do limiar existente5GiB,com inodes disponíveis confrontados com a carga observada. Sem limpeza local/remota ou intervençãoSGF.
Conferidos3ficheiros do delta,60ficheiros de execução protegidos e31originais. Schema,roles/grants e permissões iguais;172tabelas de negócio mantêm o backup,cache/sessões reconciliadas com eventos operacionais/acessos públicos. Revisão/manifest,marcadoresCBF16 e suporte10,assets e simuladorHTTP200 conferidos. Sem migrações,importações,recálculo de históricos ou escrita privada sintética no activo. Reutilizadas as provasQA15testes/API89/UI/tipos/build;apenas os controlos automáticos obrigatórios do procedimentoGit e a conferência do delta instalado.
O exemplo mantém quota normal50,quotaCBF16 75 limitada ao contabilizado60:dedução adicional**60−50=10MZN**,não75 nem uma segunda amortização. Lucro/base apósL7 6300 e**colecta simulada2016MZN**;saldo final a pagar/recuperar por determinar emL8. Os tratamentos de despesas autónomas,cooperativas abrangidas e amortizações anuais anteriores permanecem disponíveis,com fotografias/históricos conservados. O estadoQAsem instalação é histórico para este incremento.
**SaldoL7:**CBF16 anual com duodécimos entregue;continuam fora deste recorte períodos curtos/não civis,saídas,anos/quotas anteriores,métodos/categorias não correspondidos,cumulações e restantes famílias/transportesM20M22 já discriminados na mesma matriz. Retoma por regra/período/contabilização e compatibilidade do caso;documentos em falta só limitam o dependente. O próximo conjunto a executar emQA é**CBF16 em período curto por início de actividade de residente em2026**,reutilizando tipo/período e mesesL6,sem anualizar base ou taxa. Cessação,transição e outras extensões conservam âmbito próprio. L6operacional delimitado;L7parcial;localização não concede benefício;L8conserva liquidação final. Recibo:`docs/investmoz/simulations/irpc-l7-months-delivery-20261026.json`.
## 26/10/2026 — CBF16 no início de actividade demonstrado em QA
**QA preparado, sem instalação.** O portal mantém `0bd5d495`, com duodécimos anuais e os tratamentos anteriores preservados. Este incremento cobre apenas CBF16 num período curto por início de actividade de residente em2026,com meses completos até31/12. Reutiliza período,tipo,suporte e activosL6,sem anualizar resultados. Não altera o motor cambial/de amortizaçõesL6 nem volta a pesquisar fontes/provas aceites.
A preparação é explícita dentro dos duodécimosCBF16. Pode reutilizar o suporte já declarado emL6 por acção do utilizador,sem modificar datas,activos ou qualificação. Exige condiçõesCBF3/9,reconhecimento10 quando aplicável ou excepção identificada,afectação do activo e suporte do período. Activo novo já correspondido,entrada emuso no período,método constante pela taxa normal máxima,sem quotas anteriores,saída ou cumulação. A localização não activa benefícios. Sem a nova opção,as fotografias10/11 mantêm chaves e resultados;com ela,a fotografia12 conserva o resultado11 e todo o histórico anterior.
| Caso novo | Efeito demonstrado |
| --- | --- |
| Início1Julho;máquina com entrada15Julho,base1000,taxa10%,contabilizado60 | 6mesesL6;quota normal50,acelerada75,limitada60:dedução adicional10MZN. Lucro/baseL6 3130→L7 3120;colecta simulada1001,60→998,40MZN. Saldo finalL8indeterminado. |
| InícioOutubro / Dezembro | 3 /1meses efectivos;sem anualização. Dedução adicional5 /5/3MZN,com fracção exacta e aproximação de apresentação separadas. |
| Suporte em falta | SóCBF16 fica indeterminado;referênciaL6 conhecida e entradas conservadas. |
| Condição negativa / ausência declarada | Estados distintos e justificados;efeito zero identificado,sem taxa acelerada aplicada à parcela negativa. |
Provas novas dirigidas:9testes;API privada1teste/97asserções emQA isolada127.0.0.1:55441/base `simulator_fiscal_delta_20261021_test`,com guarda e transacção/rollback. Cinco casos passaram cálculo→gravação→recuperação→HTML e dossier financeiro. Comparação exacta do resultado11 aceite e conservação de todo o histórico,plano,activos e outros livros;recalcular não acumula deduções. Interface real demonstrou preparar/cancelar,reutilizar suporteL6,pendência,limites,fracções,guardar/recuperar e exportar,sem erros. Wayfinder`--with-form`,TypeScript e buildQA passaram. Conferidos584ficheiros protegidos e31originais sem alteração;nenhuma migração/importação/escrita privada no activo. SGF TEMPO separado.
**Saldo concretoL7 — código:**(1)outras origens/parcelas de despesas autónomas;(2)cooperativas mistas/retidas e demais entidades9–14;(3)CBF16 cessação/transição/períodos não civis,saídas,quotas/anos anteriores,quota inferior,métodos/categorias e cumulações;(4)mais-valias61-A/operações54–56/41-A;(5)CBF17–19 e direito potencial15;(6)regimes sectoriais/territoriais;(7)transporteL7M20/M22. A extensão de início de actividade sai deste saldo apenas no recorteQA acima;cessação é um próximo candidato compatível,reutilizando o períodoL6,com regra/quotas/saída próprias a demonstrar antes de se declarar suportada.
**Documentos por caso — exemplos/retoma:**despesa36g sem qualificação61(4)→associar natureza/parcela/período;projecto sem reconhecimento10→instrumento ou norma de excepção exigida;cumulação cooperativa+CBF16→disposição aplicável,ordem e limites;efeitoL7 sem campoM20/M22→exemplar/edição/campo e representação das fracções. Não são novos aprovadores ou revalidações genéricas. A dúvida limita o caso/campo dependente;as demais provas permanecem válidas.
Entrega agrupada preparada para os cinco casos compatíveis,sem instalação deste incremento. Na futura entrega:medir novamente espaço/inodes/carga de compilação e backup,conferir o main então actual e executar backup/restauro fresco,mantendo a versão activa até a nova ficar pronta. O controlo de5,50GiB antes/5,33GiB após backup desta entrega0bd5d495 é histórico,não garantia futura. **L6 operacional delimitado;L7 parcial;colecta distinta do saldo final deL8.** Recibo:`docs/investmoz/simulations/irpc-l7-start-period-qa-20261026.json`;provas:`outputs/irpc-l7-start-period/`. Reprodução dirigida:`node --test tests/frontend/irpc-special-start-period.test.mjs`;`php tools/irpc-special-start-period-qa.php routes`;`php tools/irpc-special-start-period-qa.php test`;`tsc --noEmit`;build com `INVESTMOZ_QA_BUILD=1`.
### Porquê investir — fundo azul, 26/10/2026
Pedido expresso da Tempo: ajustar o fundo para azul bebé ou azul IBM. Escolha de apresentação: IBM Blue 20, #D0E2FF, da paleta oficial https://www.carbondesignsystem.com/building-blocks/foundations/color/code. Substitui #BBC0C6 apenas no bloco dos cinco parágrafos; a decisão anterior fica no histórico. Inventário do delta: mantidos texto escuro, geometria compacta, cinco parágrafos editoriais, 12 anteriores, sete cartões, 15 links e a disposição aprovada, sem perda confirmada. Sem alteração de schema, dados, configuração, permissões ou cálculos. Registo em V2-01 na matriz existente. Verificação deste azul concluída: build e diff passaram; prévia isolada em 1440 e 390 px confirmou rgb(208, 226, 255), equivalente a #D0E2FF, sem alteração da geometria, 17 parágrafos ou 15 links e sem transbordo. Captura de computador inspeccionada. Recibo em outputs/why-invest-blue-20261026/layout.json. Sem prova do activo; alteração local sem publicação.
## 26/10/2026 — CBF16 cessação e quotas anteriores: entrega agrupada preparada em QA
**QA, sem instalação.** O conjunto inclui `ba83afe7` (início de actividade) e acrescenta cessação da actividade em2026 e quotas anteriores documentadas de activos que entraram emuso em2025. A versão do portal comunicada permanece `0bd5d495`;não se voltou a instalar ou a conferir remotamente o activo nesta passagem. O main entretanto avançou para `ae0d74bb`;a candidata incorpora a alteração visual de «Porquê investir»,a nota do manual e a linhaV2-01 da matriz,sem perda das notas fiscais. Nenhum ficheiro dessa alteração foi substituído pelo incrementoL7.
**Condições e reutilização.** Preparação opcional13,distinta de início12 e do recorte mensal11,sem alteração das chaves/resultados anteriores. Usa sujeito/período/activos/quotas e saldosL6. CBF3/9/10/16,Decreto72/2013 art3(3),9(1–3) e10 eCIRPC7(4):condições/afectação/reconhecimento ou excepção identificados,ano civil2026 ou cessação de residente desde1Janeiro até ao último mês completo,contabilização/saldos reconciliados,método constante pela taxa normal máxima,duodécimos desde entrada emuso e ausência de cumulação. Localização não concede benefício.
O recorte de implementação admite activos novos a custo histórico com entrada2025/2026. A selecção destes anos é coberturaQA,não um limite legal inventado para os restantes activos. Valores anteriores contabilísticos,fiscais,parcela temporariamente tributada e suporte são reutilizados deL6;não se recalculam taxas/benefícios de exercícios passados. Uma entrada em2026 com quotas anteriores positivas fica por reconciliar. Informação em falta não é zero;condição negativa e ausência declarada permanecem distintas.
**Cessação não é saída do activo.** O termo do período limita os meses efectivos,sem preencher transmissão/inutilização por presunção. Uma saída de activo documentada dentro do período reutiliza a dataL6 e exclui o mês do evento,conformeart9(2);sem ela,reutiliza os meses do período. Este ramo só apura a amortização,não calcula uma mais-valia ou operação de transmissão por aproximação.
| Caso sintético novo | Efeito no cálculo |
| --- | --- |
| Cessação30Junho,activo emuso desdeJaneiro2026,sem quotas anteriores,contabilizado60 | 6meses;quota normal50,acelerada75 limitada60;diferença adicional10MZN. Lucro/base3130→3120;colecta simulada1001,60→998,40MZN. Sem saída do activo presumida. |
| Mesmo período,activo2025;quotas anteriores contabilísticas150,fiscais100,parcela recuperável50 | Dedução normal50;acelerada75,incluindo15 de parcela anterior. Diferença adicional25MZN,sem somar novamente os15. Saldo anterior aritmético50→35;saldo fiscal após dedução850→825. Lucro/base3130→3105;colecta simulada1001,60→993,60MZN. Os saldos declarados150/100/50 permanecem intactos. |
| Ano civil2026,mesmos saldos anteriores,contabilizado120 | Dedução100→150,incluindo30 de parcela anterior;diferença adicional50MZN e saldo anterior aritmético20. Lucro/base6260→6210;colecta simulada2003,20→1987,20MZN. |
| CessaçãoJunho com saída do activo documentada20Junho | 5meses;quota normal125/3 eacelerada125/2;diferença125/6MZN. Fracção exacta preservada,sem arredondamento fiscal presumido. |
| Saldo fiscal remanescente20 ou contabilização/parcela anterior insuficiente | Ambos os cálculos respeitam os mesmos limites;dedução adicional pode ser zero,sem exceder a base nem consumir saldos oficiais. |
| Suporte em falta / condição negativa / ausência declarada | Estados e efeitos separados;uma falta de suporteCBF16 mantém a referênciaL6 conhecida e limita apenas o benefício dependente. Um saldoL6 desconhecido limita também os cálculos que dele dependem. |
**Provas novas:**11testes dirigidos,API privada1teste/123asserções,sete casos cálculo→gravação→recuperação→HTML/dossier financeiro. BaseQA `simulator_fiscal_delta_20261021_test`,127.0.0.1:55441,guarda de identidade e transacção com rollback. Comparação exacta do resultado12 aceite,conservação de todo o histórico,activos,plano e outros livros;recalcular não acumula a dedução nem reduz os saldos declarados. Interface real:preparar/cancelar,preencher apenas os suportes novos,pendência,recuperação15/saldo35,saída5meses/fracção,gravação/recuperação/exportação e ausência/negativa,sem erros. Wayfinder`--with-form`,TypeScript ebuildQA passaram;build/tipos conferidos também após incorporar o main. Reutilizadas,sem repetir,as provas aceites de `ba83afe7` e dos restantes percursos. MotoresL6 de amortizações/periodização/câmbio,schema,configuração,permissões,originais e provas anteriores preservados. SGF TEMPO separado;nenhuma escrita no activo,migração ou importação.
**Saldo concreto — código:**(1)outras origens/segregações de despesas autónomas;(2)cooperativas mistas/retidas e demais entidades9–14;(3)CBF16 com activos anteriores a2025,períodos parciais/não civis/transição,saídas fora do recorte,quota inferior,métodos/categorias e cumulações;(4)mais-valias61-A/operações54–56/41-A;(5)CBF17–19 e direito potencial15;(6)regimes sectoriais/territoriais;(7)transporteL7M20/M22. O recorte agora demonstrado deixa de figurar como integralmente por implementar,mas permanece apenas emQA. Retomar extensõesCBF16 com a regra temporal/método/base ligada aos activos e demonstrar o efeito novo;retomar mistos/cumulações com segregação,ordem e limites,sem pesquisar novamente o que já está aceite.
**Dependências documentais por caso:**natureza/parcela/período da operação→associar os factos e o exercício;reconhecimentoCBF10→instrumento ou excepção exigida;quotas anteriores150/100/50 sem suporte→reconciliar a parcela temporariamente tributada,sem incluir exclusões permanentes;cumulação→disposição/ordem/limites aplicáveis;campoM20/M22→exemplar/edição/campo e representação exacta. A falta limita só o caso/campo dependente,não exige aprovadores ou revalidação genérica de fontes.
**Entrega agrupada preparada:**início12 de `ba83afe7` mais cessação/quotas anteriores13,com as provas aceites e novas separadas no mesmo pacote. Antes de instalar,voltar a conferir main,espaço/inodes/carga de compilação ebackup,executar backup/restauro fresco e manter a versão activa até a nova ficar pronta. **L6 operacional delimitado;L7 parcial;colecta simulada não é saldo final:retenções,pagamentos,créditos anuais e saldo a pagar/recuperar permanecem emL8.** Recibo:`docs/investmoz/simulations/irpc-l7-cessation-prior-qa-20261026.json`;provas:`outputs/irpc-l7-cessation-prior/`. Reprodução só do delta:`node --test tests/frontend/irpc-special-cessation-prior.test.mjs`;`php tools/irpc-special-cessation-prior-qa.php routes`;`php tools/irpc-special-cessation-prior-qa.php test`;`tsc --noEmit`;build com `INVESTMOZ_QA_BUILD=1`.
## 26/10/2026 — CBF16 início, cessação e quotas anteriores instalado pelo Git
**Instalado `632dc06930d6b4f1b012feb3b4daa3b1cfc53f39`,incluindo `ba83afe7`.** Entrega única do início de actividade,cessação e quotas anteriores no âmbitoQA demonstrado. `0bd5d495` permanece como release anterior;históricos e provas aceites conservados. O main `ae0d74bb` e a alteração visual de «Porquê investir» foram incorporados,preservando texto/cor/geometria e a linhaV2-01 da matriz. Sem instalação separada dos dois incrementos.
**Capacidade e recuperação:**a primeira medição confirmou 4.32GiB,abaixo do mínimo existente5GiB,e a falha anteriorae0d74bb por falta de espaço;versão activa preservada. Conferidas ausência de instalaçõesnpm e de ficheiros abertos,só a cache regenerável `/root/.npm/_cacache` foi limpa pelo comando npm próprio. Recuperados 2.82GiB;32logs npm anteriores e `_npx` preservados. Sem apagar releases,backups,dependências dos projectos,provas únicas ou ficheirosSGF. Nova medição:7.15GiB e21431150inodes;após backup:6.99GiB,acima do limiar5GiB,com capacidade de backup/compilação e escala de inodes conferidas. O limiar do instalador não foi reduzido.
Backup fresco `2026-10-26T13:29:24Z`:174tabelas e369ficheiros/configuração conferidos;restauro isolado sem rede/porta55441 com174checksums iguais. Schema,roles/grants e permissões mantidos. Só depois destas guardas,integraçãoGit por fast-forward sem forçar o histórico. A release anterior ficou activa até a nova estar pronta. Revisão/manifest servidos,marcadores12/13 e restantes leitores,assets e simuladorHTTP200 conferidos após instalação. Três ficheiros do delta fiscal,60ficheiros protegidos/enquadrados no main e31originais correspondem ao destino preparado. Dados de negócio comparados com o backup;cache/sessões reconciliadas com eventos operacionais/acessos públicos. Sem migrações,importações ou escrita privada sintética no activo.
**Resultado demonstrado preservado:**dedução normal50MZN→acelerada75MZN;**75−50=25MZN adicionais**. Os15MZN recuperados de quotas anteriores **já estão incluídos nos75**,não são somados novamente. Saldo anterior aritmético35MZN;valores declarados150/100/50 e históricos mantidos,sem consumo de saldos oficiais. Lucro/base3105MZN e**colecta simulada993,60MZN**;saldo final a pagar/recuperar permanece indeterminado emL8. Cessação da actividade não presume transmissão/inutilização dos activos;saída só quando documentada no mapa existente.
Reutilizadas as provas aceites:início12 (9testes/API97) e cessação/quotas13 (11testes/API123),UI real,gravação/recuperação/relatórios,tipos/build. Não se repetiram as respectivas suites por iniciativa desta entrega;apenas os controlos automáticos obrigatórios do procedimentoGit e a conferência do delta instalado. Os motoresL6 de amortizações,periodização e câmbio mantêm-se;L3,ISPC,L5 e demais provas aceites não foram reabertos. Recibo:`docs/investmoz/simulations/irpc-l7-grouped-delivery-20261026.json`;provas locais:`outputs/irpc-l7-grouped-delivery-20261026/`.
**SaldoL7 e próxima retoma:**continuam próprios as cumulações (por exemplo cooperativa+CBF16:identificar disposição,parcela elegível,ordem e limites antes de combinar),outras origens/segregações de despesas autónomas,cooperativas mistas/retidas e demais entidades,extensõesCBF16fora dos anos/períodos/métodos/categorias demonstrados,mais-valias61-A/operações54–56/41-A,CBF17–19/direito potencial15,regimes sectoriais/territoriais e transporteM20/M22. Mantém-se a separação entre código por implementar e documentos por caso:natureza/parcela/período,reconhecimento ou excepção exigida,saldos anteriores temporariamente tributados,norma/ordem/limites de cumulação e edição/campo/fracção. Uma falta limita só o caso/campo dependente;sem pesquisa transversal repetida ou aprovador genérico. **L6 operacional delimitado;L7 parcial;L8 conserva retenções,pagamentos,créditos anuais e saldo final.** Cada futura entrega volta a medir capacidade e executar backup/restauro fresco.
## 26/10/2026 — Cumulações L7 demonstradas em QA e saldo do simulador
**QA pronto,sem instalação.** `632dc069`,incluindo `ba83afe7`,está entregue e deixa de constituir pendência de instalação. A próxima candidata acrescenta apenas a qualificação e o cálculo das combinações abaixo;mantém resultados/entradas/históricos10–13. L6 continua operacional no âmbito demonstrado;L7 parcial;L8 conserva a liquidação final.
**Regra aplicada e fontes reutilizadas:**CBF4,APIEXp66,veda a cumulação dos benefícios específicos entre si ou com os genéricos,salvo previsão expressa. CBF13,APIEXp70,delimita os genéricos a investimentos não destinatários de específicos;CBF16,APIEXp72,é genérico. CIRPC12/14,PDF5/p768(59),reduz50% da taxa geral nas cooperativas abrangidas,excluindo rendimentos sujeitos a retenção. A correspondência agora implementada trata a reduçãoCIRPC12 e o efeitoCBF16 genérico em fases distintas,no mesmo sujeito/projecto/período,quando ambos estão qualificados e não há benefício específico nem outro benefício por corresponder. Não transforma o artigo4 numa proibição genérica de todos os tratamentosCIRPC, nem numa autorização de qualquer outra combinação. Não há novo parecer/aprovador genérico como condição;as condições dos artigos e documentos concretos continuam necessárias.
A opção «Preparar cumulações dos tratamentosL7 registados» reutiliza cooperativa,activos,períodos,despesas e suportes existentes. Discrimina presença/ausência de específicosCBF,excepção expressa invocada e outros benefícios,em lugar da antiga confirmação global de ausência de outros benefícios;esta entrada anterior permanece conservada,sem alteração automática das escolhas. Não selecciona benefício pela localização. Uma incompatibilidade não escolhe o tratamento a manter,não apaga registos e não aplica o benefício específico sem motor próprio. A nova preparação é opcional14;sem ela,as chaves/modelos anteriores permanecem exactos.
| Caso novo | Efeito demonstrado |
| --- | --- |
| Cooperativa agrária abrangida +CBF16 genérico,períodoJan–Jun2026 e activo2025/quotas anteriores já entregues | Lucro/baseL6 3130;CBF16 deduz só25adicionais e obtém3105;depois taxa16% sobre3105:colecta simulada496,80MZN. Os15recuperados já estão nos75deduzidos,sem outra dedução. Não se somam reduções monetárias calculadas sobre bases diferentes. |
| Mesmo caso com despesa36g100 e incidência61(4) qualificada | Acréscimo100 já emL6:lucro3230→3205 após25CBF16;colecta ordinária512,80MZN à taxa16%;imposto autónomo35MZN separado,sem redução cooperativa;colecta combinada547,80MZN. Nenhum novo acréscimo da despesa. |
| EspecíficoCBF22 declarado no mesmo projecto +genérico16,sem excepção expressa | Combinação incompatívelCBF4/13;totalL7indeterminado e entradas conservadas. ReferênciaL6 conhecida mantida. O artigo/taxa do benefício específico não é aplicado por presunção. |
| Excepção invocada/outro benefício/presença de específico ou suporte em falta | Estado indeterminado até corresponder artigo,âmbito,período,ordem e limites. Não tratar desconhecido como ausência. |
| Duplicação de activo ou dedução positiva não correspondida já registada na baseL6 | Impede reaplicar a mesma origem;registo e valor original conservados,sem preencher outro benefício por aproximação. |
| Saldo fiscal20 /base tributável zero | Dedução respeita saldo e contabilização,sem saldo negativo. Numa base zero a colecta ordinária é zero,mas o imposto autónomo35 permanece,sem compensação pelo prejuízo. |
| Condição cooperativa negativa /ausênciaCBF16 declarada | Apenas o tratamento efectivamente aplicável permanece;estados separados,sem forçar acumulação. |
**Ordem e limites:**diferença fiscalCBF16 uma vez→mesmas deduções/perdasL6→matéria colectável→taxa cooperativa16% na base integralmente elegível→imposto autónomo35% separado. Mantêm-se limites de contabilização,parcela anterior recuperável e saldo fiscal do activo,sem alterar os saldos declarados ou consumir saldo oficial. A redução não se estende a rendimentos mistos/retidos nem ao imposto autónomo. O relatório apresenta a origem documental/activo,a dedução normal,a acelerada,a recuperação já incluída e a única diferença adicional.
**Demonstração nova:**12testes dirigidos,API privada1teste/133asserções e sete casos cálculo→gravação→recuperação→HTML/dossier financeiro. BaseQA `simulator_fiscal_delta_20261021_test`,127.0.0.1:55441,guarda de identidade e transacção/rollback. Resultado13 aceite reproduzido exactamente e histórico integral,activos,saldos,plano e outros livros conservados;recalcular não acumula valores. Interface real demonstrou preparar/cancelar,preencher só as declarações novas,combinação permitida,incompatibilidade,excepção não correspondida,falta de informação,imposto autónomo separado,guardar/recuperar e exportar,sem erros. Wayfinder`--with-form`,TypeScript ebuildQA passaram. Sem repetir suites aceites,migração,importação ou escrita no activo;SGF TEMPO separado. MotoresL6 de amortizações/periodização/câmbio e31originais preservados.
**SaldoL7:**este recorte sai do grupo «cumulação ainda não implementada» apenas paraCIRPC12+CBF16 e a coexistência separada61(4),com as condições acima. Permanecem por implementar outras cumulações/excepções expressas,CBF17–19 e direito potencial15,regimes específicos,parcelas cooperativas mistas/retidas e demais entidades,outras origens de despesas,extensõesCBF16,mais-valias/operações especiais e transporteM20/M22. Retoma por disposição/artigo/ordem/limite e parcela identificados,implementando os tratamentos ainda ausentes;documento individual em falta limita só o caso/campo dependente. Não reabrir as provas aceites ou pesquisar outra vez dúvidas sem informação nova.
**Quanto falta no simulador:**a matriz conserva estimativas iniciais,sem uma reestimativa actual do esforço integral restante. SóL8–L14 somavam inicialmente240–416horas (30–52dias de8h);esta referência não é um saldo actualizado nem inclui resíduosL1–L7,L15–L16 ou espera documental. L8 contém liquidação/pagamentos/créditos/saldo final;L9–L14 contêm INSS,IRPS,Selo,direitos aduaneiros eICE;L15–L16,SISA/encargos imobiliários,ainda por dimensionar. L6 mantém5grupos de código e5documentais;L5 mantém as dez dúvidasAT só para os casos dependentes. Os lotes e grupos não são unidades iguais,não sustentam uma percentagem global de conclusão. A cobertura já entregue continua utilizável com limites explícitos;simulador fiscal integral permanece um trabalho de dezenas de dias na referência de planeamento,sem prazo fechado.
Entrega agrupada preparada com os sete casos novos compatíveis;incompatibilidade e informação insuficiente acompanham o mesmo candidato como estados demonstrados. Não houve instalação nesta passagem. A futura entrega requer main compatível,capacidade do servidor medida novamente ebackup/restauro fresco,mantendo a versão activa até a nova ficar pronta. Recibo:`docs/investmoz/simulations/irpc-l7-combinations-qa-20261026.json`;provas:`outputs/irpc-l7-combinations/`. Reprodução só do delta:`node --test tests/frontend/irpc-special-combinations.test.mjs`;`php tools/irpc-special-combinations-qa.php routes`;`php tools/irpc-special-combinations-qa.php test`;`tsc --noEmit`;build com `INVESTMOZ_QA_BUILD=1`. **L7 parcial;colecta simulada distinta do saldo finalL8.**
Conferência de compatibilidade:main `a7434cd2` incorporado na candidata,com apresentação/catálogo e linhas não fiscais da matriz preservados. Recuperada a adenda históricaQA13 que tinha desaparecido do manual no main;isto é perda documental,não perda do cálculo13. Só tipos/build de integração foram conferidos novamente;provas fiscais aceites conservadas. A revisão servida não foi consultada nesta passagemQA.
## 27/10/2026 — identidade proactiva: primeiro incremento demonstrado em QA
**QA concluído em `3439f350`; sem instalação, publicação real ou análise económica validada.** Partida no `main` remoto `f8d57bdd`, conferido novamente antes da entrega. Ramo separado `codex/proactive-investment-first-qa-20261027`, worktree `C:/laragon/www/portal-investidor-proactive-qa-20261027`. A referência local `fa02c70` e o ramo `codex/proactive-investment-scope-20261027` não foram encontrados no repositório consultado; o âmbito expresso da Tempo foi suficiente e não se criou dependência desse commit. **L8 `14360748` mantém-se preparado, sem instalação e sem integração nesta candidata.** A capacidade do servidor continua fora deste trabalho local. Sem SSH, instalação, limpeza do servidor ou intervenção no SGF TEMPO nesta passagem.
### Diagnóstico dirigido e decisões de implementação
| Componente existente | Reutilização e lacuna concreta tratada |
| --- | --- |
| `geo_locations`, `sectors`, `value_chains`, `projects`, `economic_clusters`, `development_corridors`, `investment_zones` | Mesmos identificadores, hierarquia, sectores e referências públicas já disponíveis; selectores e catálogo existentes. Não se criaram mestres territoriais, empresas, projectos ou estruturas para completar campos em falta. |
| `investment_gaps` e `investment_specific_needs` | Mantidos nos seus âmbitos de lacuna de cluster/cadeia e necessidade de manifestação. O schema público exige contexto de cluster/cadeia/capacidade no primeiro e submissão/opções no segundo. Não se inventam esses valores para guardar uma hipótese territorial inicial. A análise editorial é uma parte versionada do rascunho existente, não outro catálogo ou cadastro de lacunas económicas validadas. |
| `Opportunity`, `OpportunityManagement`, `management_draft`, `audit_events` | Acrescentado só o bloco opcional `proactive`: evidências, necessidade, ideia e relações. Reutilizados identidade, chave de criação, etag, rascunho, auditoria cifrada e versões. Criação repetida não duplica a ficha; versão antiga não sobrescreve edição concorrente. |
| Editor de oportunidades e designação interna da equipa | Lacuna confirmada: a preparação inicial exigia organização promotora até quando desconhecida. Permitida a preparação/edição de análise proactiva sem promotor real apenas no âmbito da designação interna existente. Organização real fica nula; operador e responsável continuam identificados. Sem novo papel, aprovador, grant activo ou permissão universal. Os restantes percursos mantêm as condições anteriores; actores não designados e operadores de outro âmbito são recusados. |
| `portal_resources`, `documents`, `opportunity_documents` e gestor documental existente | Referência ao documento já associado, fonte, exemplar, localizador, período, abrangência, cobertura e verificação. Não copia o binário nem altera direitos, classificação ou scan. Documento interno/restrito ou fora do âmbito não passa a público pelo formulário da análise. Listas de empresas, hotéis e restaurantes continuam inicialmente internas. |
| `OpportunityPromotion` e catálogo/ficha existentes | Síntese expressamente pública, prévia e confirmação no fluxo já autorizado, com MFA normal. Nenhum texto interno é preenchido automaticamente. Estado da necessidade e estado da publicação são independentes. Consulta anónima só da versão publicada. |
| `InvestorContext`, escolhas por oportunidade, `desk_cases`, `InvestorPath` e simulador | A origem, versão, território, sector, cadeia/etapa, relações públicas seleccionadas, pressupostos e limites seguem no contexto cifrado do dossier existente. Selecções múltiplas conservam uma fotografia por ideia; o consumidor/simulador recebe só a escolha em tratamento. Título e outras edições deliberadas são preservados. Sem regra fiscal nova ou benefício inferido da localização. |
### Implementado e demonstrado
- **Evidência:** actividades, recursos, infra-estruturas, oferta e procura; facto separado da interpretação. Finalidade local ou metodológica, acesso interno ou público autorizado e documento associado opcionais. Duplicação de evidência ou da mesma referência na análise é recusada. Informação em falta permanece em falta.
- **Necessidade:** problema, oferta/procura observadas, quantidade/qualidade/logística/transformação/coordenação/apoio, clientes/beneficiários, fontes, limites e pendências. Pode guardar como hipótese. Confirmação exige os campos/fundamento e evidências locais seleccionadas com proveniência/cobertura/período/verificação; referência internacional, por si só, não confirma procura local. Histórico mostra hipótese e confirmação anteriores sem recalcular nem apagar os originais.
- **Ideia:** solução, actividade, cadeia existente/etapa, abrangência, recursos, criar/expandir/associar, pressupostos, condições, pendências e próxima acção. Relações com estruturas existentes mantêm a qualificação documentada, hipotética ou proximidade. Nenhuma relação cria contrato, energia acessível, terra disponível, participação ou benefício fiscal.
- **Aplicabilidade:** “O que existe” mostra evidências e contexto; “Necessidade” acrescenta a lacuna; “Ideia” acrescenta a solução. Campos anteriores ficam conservados quando ocultos. Não se exigem montante, promotor, coordenadas ou uma oportunidade previamente publicada para iniciar a preparação da equipa.
- **Divulgação:** grupos “O que existe”, “Necessidades identificadas” e “Ideias de investimento” no catálogo existente; a consulta de oportunidades cadastradas conserva a verificação de disponibilidade na respectiva ficha. Uma ideia não é convertida em oportunidade com participação disponível. Textos públicos são redigidos separadamente, com revisão expressa da exposição directa/indirecta. Evidências internas e cópias literais detectadas são bloqueadas; uma confirmação pública depende do fundamento público seleccionado. Relações divulgadas transportam apenas referência pública, qualificação e base pública, sem copiar a referência privada.
- **Continuidade:** criar → guardar → recuperar → editar → prévia/publicação em QA → consulta anónima → autenticação → dossier → recarregar/retomar sessão. Login e MFA Fortify normais demonstrados com contas sintéticas QA. O mesmo contexto chega ao dossier, sem substituir o título deliberado do investidor. Relatório existente mostra origem, estado, fundamento, evidências, relações, pressupostos, limites e próximo passo por ideia; sem preparação proactiva não acrescenta linhas.
### Referências metodológicas do Ruanda — dependência resolvida
O responsável forneceu os dois caminhos após a procura dirigida inicial. Exemplares acessíveis, originais preservados e hashes conferidos antes/depois. **Não foram importados ou publicados no portal.** Texto integral extraído e imagens de leitura ficam apenas nas provas privadas/ignoradas; o pacote entrega rastreabilidade e paráfrases metodológicas, sem os originais ou a reprodução integral dos diapositivos.
| Exemplar e passagem utilizada | Aplicação delimitada |
| --- | --- |
| `20070627_Rwanda_5d0cc43d-c990-4cf1-8ee9-ada71094918f.pdf`, 31 páginas, capa “Creating a Competitive Rwanda”, Michael E. Porter/HBS, Kigali, Junho2007. SHA256 `18b07a9379a1ad0baa33697d57d6237f15a6fec346db44bfee7506bf1fa27dee`. P14, “Improving the Business Environment: The Diamond”; P27, “Role of the Private Sector in Economic Development”, conferidas visualmente. | Perguntar por factores de produção, procura, fornecedores, actividades e serviços de apoio; distinguir relação documentada de acesso/compromisso. Cada afirmação sobre Moçambique precisa de evidência local própria. |
| `Rwanda Competitiveness Briefing_Prof Porter_OTF.ppt`, 50 diapositivos na leitura nativa PowerPoint, capa “How Rwanda Competes Today”, RNIC, briefing para Prof. Porter, 20Julho2008. SHA256 `4a9325ad64278cb0ef3c60367a05ee2ed9262e2cd49a48d579061349914aa830`. Slide17, procura turística, fonte/amostra/período visíveis; slide20, constrangimentos por etapa da cadeia do chá; slide24, diagnóstico mineiro, texto em ordem nativa. | Conservar fonte, período, abrangência e cobertura/amostra das observações; estruturar etapas e limitações em vez de presumir uma lacuna. Dados, valores, projecções e instituições estrangeiras não são transferidos para os pilotos nem para regras fiscais. Slide17 conferido visualmente;20/24 lidos em texto nativo, sem alegar conferência visual desses dois. |
Os caminhos completos e os trechos/limites estão no recibo. O PDF2007 e o briefing2008 são exemplares distintos. Os 91 grupos de texto históricos encontrados numa exploração OLE não foram usados como número de diapositivos; a ordem nativa de 50 é a referência do PPT. A metodologia internacional orienta perguntas e organização; não demonstra procura em Cahora Bassa, Montepuez ou Gurué.
### Guia curto de utilização em QA
1. Entre na conta da equipa com a designação existente e abra **Minhas oportunidades → Nova oportunidade → Preparar análise e ideia**. Escolha título, sector e nível territorial conhecidos. O promotor real pode ficar por identificar; não são necessários montante ou coordenadas.
2. Acrescente evidências. Separe o facto da interpretação e preencha fonte/exemplar, localizador, período, abrangência, cobertura e data de verificação. Marque referências internacionais como **metodológicas** e listas internas como **internas**. Use o documento já associado quando disponível.
3. Mantenha a necessidade como **hipótese** enquanto faltar fundamento local. Para confirmar, explicite problema, observações, tipo, beneficiários, fundamentação e evidências locais. “Confirmada” não significa viabilidade comercial demonstrada. Guarde com motivo e recupere o rascunho; o histórico conserva o fundamento anterior.
4. Quando aplicável, escolha **Ideia de investimento** e prepare solução/actividade, cadeia/etapa, recursos, relações e próxima acção. A proximidade fica identificada como proximidade. Escolhas existentes e campos ocultos continuam conservados.
5. Abra **Divulgação promocional — Em preparação**. Redija os campos públicos separadamente, seleccione só evidências públicas e relações autorizadas, reveja a exposição directa/indirecta, prepare a prévia e confirme **apenas em QA**. A referência privada da relação e os documentos internos não são copiados. A revisão editorial continua humana no fluxo existente; o controlo literal não é validação semântica de todas as inferências possíveis.
6. Consulte sem sessão em `/oportunidades?perspective=ideas` (ou `exists`/`needs`). **Iniciar ou continuar o roteiro deste investimento** utiliza a autenticação e o dossier existentes. Confirme o contexto na prévia antes de guardar; pode continuar um dossier ou criar um novo. Para várias ideias, escolha a que está em tratamento nos consumidores. O simulador recebe o contexto e conserva os seus dados/regras próprios; não calcula sem dados ou pressupostos explícitos.
**Reprodução técnica só do delta:** `php tools/proactive-investment-qa.php routes` (`--with-form`); `php tools/proactive-investment-qa.php test`; `node --test tests/frontend/proactive-investment.test.mjs`; `tsc --noEmit`; build com `INVESTMOZ_QA_BUILD=1`. Base isolada `proactive_investment_20261027_test`,127.0.0.1:55441, clonada do QA anterior com o mesmo schema/identificadores; guarda de identidade e rollback nos testes. Flags existentes de perfis/contratos especializados/percurso foram configuradas só no bootstrap QA; `.env`, configuração activa e grants activos não mudaram. O servidor HTTP de prova usou127.0.0.1:18760, não a homologação.
### Provas, preservação e saldo concreto
**Passaram:**14 testes da API/139asserções;7testes frontend de relatório/isolamento por ideia;Wayfinder,TypeScript ebuildQA;interface real com login/MFA,criação/edição/recuperação,histórico,perguntas aplicáveis,prévia/publicação QA,consulta anónima,contexto após autenticação,recarregar/retomar sessão,relações/pressupostos e ausência de erros de página. Casos Cahora Bassa/energia,Montepuez/mineração eGurué/chá são **inequivocamente sintéticos**,reutilizando distritos e sectores existentes. Não se publicou uma análise económica real nem se validou um mercado.14testes não são nova ronda de L3/ISPC/câmbio/L5–L8.
**Preservado:**15pontos de integração anteriores e7ficheiros novos de código/testes/guarda;89ficheiros de motores fiscais e31originais fiscais iguais,mais os2originais Ruanda intactos. Sem migrações ou novo catálogo/base territorial/sistema de permissões. Sem escrita na base origem ou activa;fixtures/grants sintéticos apenas no clone QA. A candidataL8 `14360748` conserva exactamente a mesma referência. O checkout raiz recebe somente este registo documental,sem integrar o runtime do ramoQA.
| Estado | Saldo e condição concreta de retoma |
| --- | --- |
| Implementado e demonstrado neste incremento | Percurso editorial técnico completo acima, no recorte QA e com os estados/limites visíveis. Pode preparar novos investimentos sem depender de oportunidades publicadas. |
| Parcial — conteúdo económico real dos três pilotos | Recolher oferta/procura locais,exemplares,períodos,cobertura e informação de clientes/beneficiários;relacionar recursos/serviços com evidência. Só os casos apoiados por esses dados podem mudar de hipótese. Nenhuma falta bloqueia outra análise independente. |
| Dependência documental/comercial | Contrato/encomenda,energia acessível,terra,participação disponível e condições comerciais precisam de prova específica por caso. A qualificação formal da oportunidade continua nos campos/fluxos existentes;este incremento não a presume a partir da localização,lista de empresas ou necessidade. Listas e contactos privados exigem síntese autorizada e revisão editorial no fluxo actual antes de qualquer divulgação. |
| Dependência resolvida | Os dois exemplares Ruanda foram localizados/lidos nos trechos identificados;deixam de constar como ficheiros indisponíveis. A sua existência não substitui a evidência local. |
| Trabalho futuro,fora do primeiro incremento | Automatizar inventário,indicadores,comparação/priorização e eventual IA;quantificar mercado/custos/rentabilidade só com dados/pressupostos explícitos;eventual correspondência a lacunas mestre de cluster quando os seus campos e fundamento forem conhecidos. Não há novo prazo global ou implantação activa reivindicados. |
| Entrega futura no destino | CandidataQA peloGit apenas. Conferir o main vigente e compatibilidade com outros incrementos antes de integrar;capacidade,backup/restauro e instalação são uma execução separada autorizada. A espera de capacidade deL8 não foi contornada. |
Recibo:`docs/investmoz/unification/proactive-investment-first-qa-20261027.json`;provas:`outputs/proactive-investment-20261027/`. Não há novos cálculos fiscais,submissão AT,publicação na homologação ou alteração do SGF TEMPO.
## 27/10/2026 — primeiro caso proactivo com fontes reais: Cahora Bassa / apoio metrológico
**Análise preliminar privada demonstrada em QA, sobre o runtime aceite `3439f350` / candidata `1afab4a2`, sem nova alteração funcional ou instalação.** Caso `CB-METROLOGIA-20261027`, ficha QA `401`, dossier privado QA `894343c7-c33d-452e-a6a5-b6675f77ee23`. O operador é uma conta sintética QA já existente; os factos e referências desta análise são reais e identificados, distintos dos cenários fictícios anteriores. Não se publicou a análise, não se contactou comprador ou prestador e não se transportaram contactos, documentos pessoais ou NUIT das listas. L8 `14360748` conserva a mesma referência e continua separado. Main remoto conferido: `f8d57bdd`; sem SSH, limpeza, instalação ou intervenção no SGF TEMPO.
### Escolha do piloto e fontes reutilizadas
| Piloto | Resultado da triagem dirigida |
| --- | --- |
| **Cahora Bassa — seleccionado** | A lista empresarial fornecida contém referências históricas locais de reparação/manutenção mecânica e eléctrica. O acervo inclui a reprodução histórica da concessão HCB. Foram acrescentados o relatório primário HCB2024, a página institucional de engenharia e, decisivamente, o Plano de Compras HCB2026 publicado pelo IGEPE, que delimita um serviço concreto de calibração. É uma decisão por disponibilidade de fundamento nesta ronda, sem ranking de rentabilidade ou potencial económico. |
| Montepuez | Há referências empresariais internas e fontes mineiras localizadas. Não foi escolhido nesta ronda um âmbito primário de aquisição tão directamente utilizável para esta aplicação. Não se conclui que falte actividade ou procura; continua elegível para outro caso documentado. |
| Gurué | Há referências históricas internas ligadas ao chá e perfis/fontes públicos localizados. Os constrangimentos antigos encontrados não bastam para atribuir automaticamente uma lacuna actual à cadeia do chá. Não foram transpostos para a proposta de Cahora Bassa. |
Inventário anterior de606 fontes preservado e consultado; listagem dirigida dos documentos acessíveis no acervo e triagem dos dois workbooks empresariais/cadastro turístico ficam nas provas privadas. Os workbooks têm grãos/períodos/versões distintos e registos repetidos: não se somaram os totais entre eles nem se contou uma denominação repetida como várias empresas. O cadastro de alojamento de3–5estrelas não demonstrou cobertura distrital comparável neste recorte; não demonstra ausência de hotéis ou serviços e não foi usado para inferir procura metrológica.
| Evidência / exemplar | Âmbito usado e limite |
| --- | --- |
| HCB, **Relatório e Contas2024**, edição bilingue,63páginas PDF; PDFp9/página impressa14. URL `https://hcbadm.mzbusiness.com/wp-content/uploads/2025/08/Relatorio-e-Contas-2024-Bilingue-VF-1.pdf`. SHA256 `d0fed6af0e40fffd6f7f385152fdbfff2a10cae0b66c9d7a59a0a99658758080`. | Actividade e infra-estruturas existentes da HCB. Página conferida visualmente; não é carteira de contratos disponíveis. Matambo não é atribuída ao distrito de Cahora Bassa. |
| HCB, **Plano Anual de Compras2026**,8páginas; PDFp1,2.ª/3.ªlinhas de dados. URL `https://igepe.org.mz/wp-content/uploads/2026/06/HCB-Plano-Anual-de-Aquisicoes-2026.pdf`. SHA256 `cbc93102fea61a712c193d1c1815e7ec19e7d570ee2703c1b1390d4c05e5bd8e`. | Duas entradas de calibração de equipamento de medida e monitorização, concurso limitado, previsões19/02–30/06 e05/05–14/09/2026. Em27/10/2026 os prazos previstos já passaram. Plano não confirma procedimento aberto, adjudicação ou procura ainda insatisfeita. “1” em “Qtde de Itens” não é número de instrumentos; linhas de igual designação não provam dois contratos independentes. Conferência visual da tabela. |
| Lista fornecida **Empresas Licenciadas.xlsx**, `Servicos Tempo/Relatorios/novos/docs`, folha`EMPRESAS`; SHA256 `1b5087b464e39e88c42def39655c2391aaaf684b4c832d6a77ff274b98889f00`. | Pistas internas: L19376,D19376,O19376:P19376,U19376:V19376 e L55640,D55640,O55640:P55640,U55640:V55640. Licenças2018/2021, não capacidade actual. Linhas12243/19376/65567 repetem denominação e não são contadas como três empresas. Nenhuma lista/contacto foi copiada para publicação. |
| **CAE eBAU.xlsx** fornecido, folha`CAE`, B857/F857 e B859/F859. | Etiquetas de33120 — reparação/manutenção de máquinas/equipamentos e33140 — equipamento eléctrico, lidas no exemplar fornecido. Não comprovam calibração, qualificação, acreditação ou vigência actual de licença; não se declarou uma versão oficial actual do catálogo sem identificação. Hash/caminho no recibo. |
| **HCB-TERMOS-DO-CONTRATO-DE-CONCESSAO.pdf** fornecido, página única; BR I Série47,21/11/2007,Decreto57/2007,artigo2. SHA256 `f4afc62f140d197cae3bf395674adce2eba37f0436261d52d7eb554f6230a073`. | Contexto documental histórico da actividade, conferido visualmente. Sem análise da vigência actual ou aplicação de regra ao novo investimento. Direitos de concessão não se tornam direitos do promotor. Original preservado, não importado/publicado. |
| Página institucional HCB`https://www.hcb.co.mz/hidroelectricidade`, consultada27/10/2026. | Contexto do complexo e CAPEX Vital; sem data editorial precisa ou progresso actualizado de cada obra. Não comprova contratação adicional. Captura/hash privados; sem copiar projecções para o orçamento da ideia. |
Os exemplares Ruanda já aceites continuam apenas metodológicos; não se repetiu a sua prova nem se usaram como evidência de procura local. Os cinco originais locais usados permanecem com hashes iguais. Fontes públicas adicionais foram guardadas como cópias privadas de consulta, sem importação, publicação ou alteração de direitos no portal.
### Actividade, necessidade e ideia estruturada
**O que existe:** actividade hidroeléctrica e infra-estruturas HCB documentadas; registos históricos locais de actividades de reparação/manutenção. **Necessidade documental:** o comprador planeou serviços de calibração em2026. **Hipótese por verificar:** existe procura residual/recorrente e uma vantagem concreta de apoio local no Songo. Não há evidência de falta de fornecedores, atrasos, preços elevados ou adjudicação disponível; a necessidade comercial mantém o estado **hipótese**, com esse fundamento guardado.
**Ideia:** estudar associação entre prestador local e laboratório qualificado para apoio metrológico à HCB no Songo: inventário/gestão de instrumentos, preparação, recolha/entrega controlada e acompanhamento documental. Calibração/ensaios só por quem demonstrar competência no âmbito contratado. A associação é uma proposta, não acordo. **Cliente potencial:** HCB, apenas nas unidades e procedimentos em que o serviço se justifique; outros clientes não foram presumidos. Etapa: apoio à manutenção na produção/transporte de electricidade. Sem criar cadeia mestre ou relação canónica para preencher uma correspondência não disponível no clone. Abrangência distrital/proposta no Songo, sem parcela, instalações, energia ou acesso assegurados.
**Condições:** confirmar requisitos efectivos do comprador e do âmbito metrológico, capacidade, rastreabilidade, segurança/acesso, responsabilidades, regras de associação/transporte e eventual acreditação exigida. Não se impôs certificação específica por interpretação do plano. Recursos de operação, equipa, instrumentos, veículo, instalações e laboratório ainda não estão assegurados. Montante, promotor empresarial, coordenadas exactas, preços, volume, mercado, receitas e rentabilidade permanecem por determinar; sem usar zero ou totais do plano como substitutos.
### Demonstração deste caso e continuidade
Criada pela interface existente,guardada,recuperada e conferida na mesma ficha privada. Cinco evidências preservadas;necessidade comercial como hipótese;campos de clientes,oferta,procura,condições e próxima acção recuperados sem alteração. A mesma contaQA preparou um dossier privado pelo percurso existente,confirmou o contexto e recuperou a fotografia da ideia pela API autenticada. O relatório existente produziu as cinco linhas de evidência e os mesmos limites;uma leitura privada de prova reúne essas linhas e as observações do caso. Nenhuma publicação promocional foi preparada ou confirmada. Ficha permanece`draft`,fora da consulta publicada;consulta anónima do dossier recusada.
Reutilizadas as14provas API/139asserções,7provas frontend,tipos ebuild de`1afab4a2`;não se repetiu a ronda técnica ou fiscal. Feita apenas aplicação e conferência do novo caso real. A primeira leitura da página do dossier antecedeu o fim da gravação do contexto;após recuperação concluída,interface eAPI concordaram. Corrigida a espera no script local de prova,sem mudar código da aplicação ou regravar históricos. Preservação por hash das linhas anteriores no mesmo clone:52fichas,17dossiers,19projectos,1921territórios,12sectores,63documentos;uma ficha e um dossier novos. Sem migrações,importação de empresas,novos grants ou alteração do destino activo.
**Para consultar ao retomar QA:**usar a contaQA já designada e abrir`/minhas-oportunidades/401/edit`;comparar os campos/fundamentos;abrir o dossier`/investimentos/894343c7-c33d-452e-a6a5-b6675f77ee23`. É um percurso privado,não um link público nem uma nova instalação. Recibo:`docs/investmoz/unification/proactive-real-pilot-qa-20261027.json`;provas privadas:`outputs/proactive-real-pilot-20261027/`. Cookies,credenciais,extractos integrais de listas,originais e ficheiros de diagnóstico não integram o pacote de entrega.
### Saldo e perguntas concretas de retoma
| Ponto | Exemplo/pergunta e condição de retoma |
| --- | --- |
| Procura actual e estado das compras | As entradas terminavam em30/06 e14/09/2026:foram executadas,adjudicadas,canceladas ou reprogramadas? Existe novo ciclo em2027? Retoma da qualificação comercial apenas com estado e necessidade residual/recorrente identificados pelo comprador. |
| Âmbito técnico e operacional | Que famílias/instrumentos,quantidades,periodicidade,local de execução e prazo de devolução se aplicam? Que qualificação/rastreabilidade/acreditação é exigida neste âmbito? Obter a especificação antes de dimensionar meios ou afirmar elegibilidade. |
| Oferta e associação | Os dois registos internos seleccionados continuam activos,interessados e tecnicamente aptos? Que laboratório pode assumir o âmbito? Verificar capacidade/competência,consentimento e oferta concorrente;cadastro/CAE não basta. Não enviar contactos ou listas automaticamente. |
| Vantagem e viabilidade | O apoio no Songo reduz um problema mensurável do cliente face à solução actual? Comparar transporte,prazos,risco,custos e condições;quantificar só quando houver dados. Não comprar equipamento ou criar orçamento com base apenas no plano. |
| Divulgação ou uso no activo | Preparar eventual síntese pública separada só quando autorizada/revista;instalação do código não publica nem transporta automaticamente a ficha e o dossierQA. Capacidade,compatibilidade e backup/restauro serão tratados na execução futura aplicável. Nenhuma dependência de capacidade impede esta análise privada. |
**Estado:**primeira aplicação real demonstrada,análise económica/comercial preliminar. Preparadas perguntas para reunião exploratória com a HCB,sem as enviar. L8eSGF preservados;limites e pendências anteriores não foram eliminados.
File diff suppressed because one or more lines are too long
@@ -13,9 +13,12 @@ export type EducationalArticle = {
export default function EducationalArticleCard({
article,
headingLevel = 3,
}: {
article: EducationalArticle;
headingLevel?: 3 | 4;
}) {
const Heading = headingLevel === 3 ? 'h3' : 'h4';
const focus =
'focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-emerald-800';
return (
@@ -34,11 +37,11 @@ export default function EducationalArticleCard({
<p className="text-sm font-medium text-emerald-800">
Guia sectorial
</p>
<h3 className="text-2xl leading-tight font-bold">
<Heading className="text-2xl leading-tight font-bold">
<Link href={article.href} className={focus}>
{article.title}
</Link>
</h3>
</Heading>
{article.summary && (
<p className="text-base leading-relaxed text-slate-700">
{article.summary}
@@ -17,6 +17,7 @@ export const modalityLabels: Record<string, string> = {
type Values = Record<string, string | boolean | number[]>;
const labels: Record<string, string> = {
q: 'O que procura',
perspective: 'Consultar por',
sector: 'Sector',
category: 'Modalidade da oportunidade',
preparation: 'Estado de preparação',
@@ -215,6 +216,7 @@ export default function OpportunitySearchFilters({
onChange={(e) => change({ q: e.target.value })}
/>
</Field>
{select('perspective', [{value:'exists',label:'O que existe'},{value:'needs',label:'Necessidades identificadas'},{value:'ideas',label:'Ideias de investimento'},{value:'opportunities',label:'Oportunidades cadastradas — disponibilidade na ficha'}])}
{select('sector', choicesFor('sector'))}
{select('category', choicesFor('category'))}
</div>
+28 -11
View File
@@ -1,3 +1,4 @@
import { Link } from '@inertiajs/react';
import { ArrowRight, Search } from 'lucide-react';
import { useEffect, useState } from 'react';
import type { FormEvent } from 'react';
@@ -127,7 +128,6 @@ type PortalHeroProps = {
query: string;
setQuery: (value: string) => void;
onSearch: (event: FormEvent<HTMLFormElement>) => void;
onNavigate: (view: 'opportunities') => void;
stats?: HomeResponse['data']['stats'];
};
@@ -136,7 +136,6 @@ export default function PortalHero({
query,
setQuery,
onSearch,
onNavigate,
stats,
}: PortalHeroProps) {
const [currentSlide, setCurrentSlide] = useState(0);
@@ -261,20 +260,38 @@ export default function PortalHero({
</div>
</form>
<div className="mt-6 flex flex-wrap items-center justify-center gap-3">
<button
onClick={() => onNavigate('opportunities')}
className="inline-flex min-h-11 items-center gap-2 rounded-xl bg-white px-5 py-3 text-sm font-semibold text-[#101820] transition-colors hover:bg-slate-100 focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-white"
<div className="mt-4 flex flex-wrap items-center justify-center gap-2">
<Link
href="/porque-investir"
className="inline-flex min-h-11 items-center rounded-lg border border-white/50 bg-black/15 px-3 py-1.5 text-sm font-semibold text-white transition-colors hover:bg-white/15 focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-white sm:min-h-9"
>
Consultar oportunidades{' '}
Porquê investir em Moçambique?
</Link>
<Link
href="/investimentos/iniciar"
className="inline-flex min-h-11 items-center rounded-lg border border-white/50 bg-black/15 px-3 py-1.5 text-sm font-semibold text-white transition-colors hover:bg-white/15 focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-white sm:min-h-9"
>
Partir de uma ideia
</Link>
<Link
href="/oportunidades"
className="inline-flex min-h-11 items-center gap-1.5 rounded-lg bg-white px-3 py-1.5 text-sm font-semibold text-[#101820] transition-colors hover:bg-slate-100 focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-white sm:min-h-9"
>
Consultar oportunidades
<ArrowRight size={16} aria-hidden="true" />
</button>
<a
</Link>
<Link
href="/simulador-fiscal"
className="inline-flex min-h-11 items-center rounded-xl border border-white/50 bg-black/15 px-5 py-3 text-sm font-semibold text-white transition-colors hover:bg-white/15 focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-white"
className="inline-flex min-h-11 items-center rounded-lg border border-white/50 bg-black/15 px-3 py-1.5 text-sm font-semibold text-white transition-colors hover:bg-white/15 focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-white sm:min-h-9"
>
Simulador Fiscal
</a>
</Link>
<Link
href="/sectores"
className="inline-flex min-h-11 items-center rounded-lg border border-white/50 bg-black/15 px-3 py-1.5 text-sm font-semibold text-white transition-colors hover:bg-white/15 focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-white sm:min-h-9"
>
Sectores de investimento
</Link>
</div>
<dl
@@ -0,0 +1,90 @@
import { createOperationKey } from '@/lib/operation-key';
import { Field, control, button } from '@/pages/management/shared';
export type ProactiveEvidence = {id:string;category:string;purpose:'local'|'methodology';statement:string;interpretation:string;source:string;locator:string;period:string;scope:string;coverage:string;verified_on:string;access:'internal'|'public';document_id:string};
export type ProactiveAnalysis = {
version:1;kind:'exists'|'needs'|'ideas';evidence:ProactiveEvidence[];
need:{state:'hypothesis'|'confirmed';problem:string;observed_supply:string;observed_demand:string;type:string;clients:string;evidence_ids:string[];limitations:string;missing:string;confirmation:string};
idea:{solution:string;activity:string;chain_id:string;stage:string;coverage:string;mode:string;resources:string;assumptions:string;conditions:string;pending:string;next_action:string};
relations:{id:string;kind:string;target_id:string;relation:string;reference:string;evidence_ids:string[]}[];
};
export type ProactiveOptions = {documents?:{id:string;title:string}[];groups:Record<string,string>;references:Record<string,{id:string;name:string}[]>};
export type ProactivePublic = {version?:number;group:string;state:string;need:string;proposal:string;basis:string;limitations:string;next_action:string;evidence_ids:string[];chain_id?:string|null;stage?:string|null;notice?:string;resources?:string;assumptions?:string;conditions?:string;relation_ids?:string[];relations?:{kind:string;target_id:string;label:string;relationship:string;basis:string}[];evidence?:Partial<ProactiveEvidence>[]};
export const proactiveNotice = 'Ausência de registo não comprova ausência de oferta. Proximidade não comprova contrato, participação, energia acessível, terra disponível ou benefício fiscal. Necessidade confirmada não comprova viabilidade comercial; hipótese de fornecimento não é encomenda.';
export const newProactive = ():ProactiveAnalysis => ({version:1,kind:'ideas',evidence:[],need:{state:'hypothesis',problem:'',observed_supply:'',observed_demand:'',type:'',clients:'',evidence_ids:[],limitations:'',missing:'',confirmation:''},idea:{solution:'',activity:'',chain_id:'',stage:'',coverage:'',mode:'',resources:'',assumptions:'',conditions:'',pending:'',next_action:''},relations:[]});
export const newPublicProactive = ():ProactivePublic => ({group:'ideas',state:'hypothesis',need:'',proposal:'',basis:'',limitations:'',next_action:'',evidence_ids:[],chain_id:'',stage:'',resources:'',assumptions:'',conditions:'',relation_ids:[]});
export function ProactiveInvestmentEditor({value,onChange,options,history=[]}:{value?:ProactiveAnalysis;onChange:(value:ProactiveAnalysis)=>void;options?:ProactiveOptions;history?:{version:number;at:string;state:string;problem:string;confirmation:string}[]}){
if(!value)return <section className="rounded border p-4"><h2 className="font-semibold">Análise territorial e preparação de ideias</h2><p>Comece pelo território e sector existentes, mesmo sem oportunidade publicada, promotor, montante ou coordenadas. O rascunho e a publicação são independentes.</p><button type="button" className={button} onClick={()=>onChange(newProactive())}>Preparar análise e ideia</button></section>;
const patch=(p:Partial<ProactiveAnalysis>)=>onChange({...value,...p});
const text=(label:string,v:string,change:(v:string)=>void)=><Field label={label}><textarea className={control} aria-label={label} value={v??''} onChange={e=>change(e.target.value)}/></Field>;
const select=(label:string,v:string,choices:Record<string,string>,change:(v:string)=>void)=><Field label={label}><select className={control} aria-label={label} value={v??''} onChange={e=>change(e.target.value)}><option value="">Por determinar</option>{Object.entries(choices).map(([key,label])=><option key={key} value={key}>{label}</option>)}</select></Field>;
const evidenceChoice=(selected:string[],change:(v:string[])=>void)=><fieldset><legend>Evidências que fundamentam esta entrada</legend>{value.evidence.map((e,i)=><label key={e.id} className="block"><input type="checkbox" checked={selected.includes(e.id)} onChange={event=>change(event.target.checked?[...selected,e.id]:selected.filter(id=>id!==e.id))}/> Evidência {i+1}: {e.statement||'Por descrever'} ({e.access==='public'?'Pública autorizada':'Interna'})</label>)}</fieldset>;
return <section className="space-y-4 rounded border p-4" aria-label="Análise territorial e ideia">
<h2 className="text-xl font-semibold">Território e sector → evidências → necessidade → ideia</h2><details><summary>Como fundamentar esta análise</summary><p>Inventarie actividades, recursos, infra-estruturas e serviços de apoio. Confronte oferta observada com procura documentada e identifique os clientes ou beneficiários. Registe o período, cobertura e limitações de cada observação. Use referências internacionais para orientar as perguntas; a confirmação do caso depende de evidência local.</p></details><p>Reutiliza o sector e a localização principal escolhidos nesta ficha. Guarde pelo botão de rascunho existente. Nenhum montante, promotor ou ponto exacto é exigido.</p><p>{proactiveNotice}</p>
{select('Tipo de conteúdo em preparação',value.kind,{exists:'O que existe',needs:'Necessidade identificada',ideas:'Ideia de investimento'},v=>patch({kind:v as ProactiveAnalysis['kind']}))}
<fieldset className="space-y-3 rounded border p-3"><legend>Evidências e proveniência</legend><p>Registe factos e interpretações em campos separados. Listas de empresas, hotéis, restaurantes, contactos e documentos internos permanecem internos; não são copiados para a divulgação.</p>
{value.evidence.map((e,i)=>{const change=(p:Partial<ProactiveEvidence>)=>patch({evidence:value.evidence.map(x=>x.id===e.id?{...x,...p}:x)});return <fieldset key={e.id} className="space-y-2 rounded border p-3"><legend>Evidência {i+1}</legend>
{select(`Finalidade da evidência ${i+1}`,e.purpose??'',{local:'Evidência local do caso',methodology:'Referência metodológica — não prova procura local'},v=>change({purpose:v as 'local'|'methodology'}))}
{select(`Categoria da evidência ${i+1}`,e.category,{activity:'Actividade',resource:'Recurso',infrastructure:'Infra-estrutura',supply:'Oferta',demand:'Procura'},v=>change({category:v}))}
{([['statement','Facto documentado'],['interpretation','Interpretação ou hipótese'],['source','Fonte e exemplar'],['locator','Localizador ou trecho'],['period','Período da evidência'],['scope','Abrangência'],['coverage','Cobertura e limitações']]as const).map(([key,label])=><div key={key}>{text(`${label} ${i+1}`,e[key],v=>change({[key]:v}))}</div>)}
<Field label={`Verificação ${i+1}`}><input aria-label={`Verificação ${i+1}`} className={control} type="date" value={e.verified_on??''} onChange={event=>change({verified_on:event.target.value})}/></Field>
<Field label={`Documento existente associado ${i+1}`}><select aria-label={`Documento existente associado ${i+1}`} className={control} value={e.document_id??''} onChange={event=>change({document_id:event.target.value})}><option value="">Sem documento associado — indicar fonte e localizador</option>{options?.documents?.map(d=><option key={d.id} value={d.id}>{d.title}</option>)}</select></Field>
{select(`Divulgação da evidência ${i+1}`,e.access,{internal:'Interna — análise privada',public:'Pública — origem e divulgação autorizadas'},v=>change({access:v as ProactiveEvidence['access']}))}
<button type="button" className="underline" onClick={()=>patch({evidence:value.evidence.filter(x=>x.id!==e.id),need:{...value.need,evidence_ids:value.need.evidence_ids.filter(id=>id!==e.id)},relations:value.relations.map(r=>({...r,evidence_ids:r.evidence_ids.filter(id=>id!==e.id)}))})}>Retirar evidência {i+1} deste rascunho</button>
</fieldset>;})}
<button type="button" className={button} onClick={()=>patch({evidence:[...value.evidence,{id:createOperationKey(),category:'activity',purpose:'local',statement:'',interpretation:'',source:'',locator:'',period:'',scope:'',coverage:'',verified_on:'',access:'internal',document_id:''}]})}>Acrescentar evidência</button>
</fieldset>
{value.kind!=='exists'&&<fieldset className="space-y-3 rounded border p-3"><legend>Necessidade ou lacuna</legend>
{select('Estado da necessidade',value.need.state,{hypothesis:'Hipótese analítica',confirmed:'Necessidade confirmada — fundamento documentado'},v=>patch({need:{...value.need,state:v as 'hypothesis'|'confirmed'}}))}
{select('Tipo de lacuna',value.need.type,{quantity:'Quantidade',quality:'Qualidade',logistics:'Logística',processing:'Transformação',coordination:'Coordenação',support:'Serviços de apoio'},v=>patch({need:{...value.need,type:v}}))}
{([['problem','Problema identificado'],['observed_supply','Oferta observada'],['observed_demand','Procura observada'],['clients','Potenciais clientes ou beneficiários'],['limitations','Limitações da necessidade'],['missing','Informação por confirmar'],['confirmation','Fundamentação do estado da necessidade']]as const).map(([key,label])=><div key={key}>{text(label,value.need[key],v=>patch({need:{...value.need,[key]:v}}))}</div>)}
{evidenceChoice(value.need.evidence_ids,v=>patch({need:{...value.need,evidence_ids:v}}))}
</fieldset>}
{value.kind==='ideas'&&<fieldset className="space-y-3 rounded border p-3"><legend>Ideia em preparação</legend>
{([['solution','Solução proposta'],['activity','Actividade proposta'],['stage','Etapa da cadeia de valor'],['coverage','Localização ou abrangência da ideia'],['resources','Recursos documentados'],['assumptions','Pressupostos explícitos'],['conditions','Condições da ideia'],['pending','Pendências da ideia'],['next_action','Próxima acção']]as const).map(([key,label])=><div key={key}>{text(label,value.idea[key],v=>patch({idea:{...value.idea,[key]:v}}))}</div>)}
{select('Cadeia de valor existente',value.idea.chain_id,Object.fromEntries((options?.references.chain??[]).map(c=>[c.id,c.name])),v=>patch({idea:{...value.idea,chain_id:v}}))}
{select('Possibilidade de investimento',value.idea.mode,{create:'Criar actividade',expand:'Expandir actividade',associate:'Associar actividades existentes'},v=>patch({idea:{...value.idea,mode:v}}))}
</fieldset>}
{value.kind!=='ideas'&&<p>Os campos anteriores da ideia são conservados. Escolha “Ideia de investimento” quando pretender preparar uma solução.</p>}
<fieldset className="space-y-3 rounded border p-3"><legend>Relações com estruturas existentes</legend>
{value.relations.map((r,i)=>{const change=(p:Partial<typeof r>)=>patch({relations:value.relations.map(x=>x.id===r.id?{...x,...p}:x)});return <fieldset key={r.id} className="rounded border p-3"><legend>Relação {i+1}</legend>
{select(`Tipo de referência ${i+1}`,r.kind,{project:'Projecto âncora',cluster:'Cluster',corridor:'Corredor',park:'Parque',chain:'Cadeia de valor'},v=>change({kind:v,target_id:''}))}
{select(`Referência existente ${i+1}`,r.target_id,Object.fromEntries((options?.references[r.kind]??[]).map(c=>[c.id,c.name])),v=>change({target_id:v}))}
{select(`Fundamento da relação ${i+1}`,r.relation,{documented:'Documentada',hypothesis:'Hipótese de relação',proximity:'Proximidade, sem compromisso'},v=>change({relation:v}))}
{text(`Fonte da relação ${i+1}`,r.reference,v=>change({reference:v}))}{evidenceChoice(r.evidence_ids,v=>change({evidence_ids:v}))}
<button type="button" className="underline" onClick={()=>patch({relations:value.relations.filter(x=>x.id!==r.id)})}>Retirar relação {i+1}</button>
</fieldset>;})}
<button type="button" className={button} onClick={()=>patch({relations:[...value.relations,{id:createOperationKey(),kind:'project',target_id:'',relation:'hypothesis',reference:'',evidence_ids:[]}]})}>Relacionar referência existente</button>
</fieldset>
{!!history.length&&<details><summary>Histórico do fundamento da necessidade</summary>{history.map(h=><p key={h.version}>Versão {h.version} · {h.at} · {h.state==='confirmed'?'Necessidade confirmada':'Hipótese'}: {h.problem} — {h.confirmation||'Fundamentação por completar'}</p>)}</details>}
<p>Não calcula mercado, investimento ou rentabilidade. Informação em falta permanece por determinar. Uma nova edição não altera os históricos nem publica a análise.</p>
</section>;
}
export function ProactiveSummary({value}:{value?:ProactivePublic|null}){
if(!value)return null;
return <section className="space-y-2 rounded border p-4" aria-label="Origem proactiva do investimento"><h2 className="text-xl font-semibold">{value.group==='ideas'?'Ideia em preparação':value.group==='needs'?'Necessidade identificada':'O que existe'}</h2><p>{value.group==='exists'?'Registo documental; consultar abrangência, cobertura e limitações das fontes.':value.state==='confirmed'?'Necessidade confirmada no âmbito documentado':'Hipótese analítica; conclusão económica por confirmar'}</p>{([['need','Necessidade'],['proposal','Proposta'],['basis','Fundamento'],['limitations','Limitações'],['next_action','Próximo passo'],['stage','Etapa da cadeia'],['resources','Recursos'],['assumptions','Pressupostos'],['conditions','Condições']]as const).map(([key,label])=>value[key]?<p key={key}><strong>{label}:</strong> {value[key]}</p>:null)}{value.relations?.map(r=><p key={r.kind+r.target_id}>Relação seleccionada: {r.label} · {r.relationship==='documented'?'Documentada':r.relationship==='proximity'?'Proximidade, sem pertença':'Hipótese de relação'}. Fundamento: {r.basis}. Não confirma contrato, acesso ou participação.</p>)}{value.evidence?.map((e,i)=><p key={e.id??i}>Evidência pública: {e.statement}; fonte: {e.source}; localizador: {e.locator}; período: {e.period}; abrangência: {e.scope}; cobertura: {e.coverage}; verificação: {e.verified_on}.</p>)}<p>{value.notice??proactiveNotice}</p><p>Sem disponibilidade de participação, viabilidade comercial ou benefício fiscal presumidos.</p></section>;
}
export function ProactivePublicationFields({value,onChange,evidence,relations=[],options,reviewed,onReview}:{value:ProactivePublic;onChange:(v:ProactivePublic)=>void;evidence:ProactiveEvidence[];relations?:{id:string;label:string;relationship:string}[];options?:ProactiveOptions;reviewed:boolean;onReview:(v:boolean)=>void}){
const text=(key:'need'|'proposal'|'basis'|'limitations'|'next_action'|'stage'|'resources'|'assumptions'|'conditions',label:string)=><Field label={label}><textarea aria-label={label} className={control} value={value[key]??''} onChange={e=>{onChange({...value,[key]:e.target.value});onReview(false);}}/></Field>;
return <fieldset className="space-y-3 rounded border p-4"><legend>Síntese proactiva expressamente pública</legend><p>Redija uma síntese independente. Nenhum facto, interpretação, contacto ou fonte interna é copiado automaticamente. A síntese também não pode revelar informação privada indirectamente.</p>
<Field label="Grupo público"><select className={control} aria-label="Grupo público" value={value.group} onChange={e=>onChange({...value,group:e.target.value})}>{Object.entries(options?.groups??{exists:'O que existe',needs:'Necessidades identificadas',ideas:'Ideias de investimento'}).map(([k,v])=><option key={k} value={k}>{v}</option>)}</select></Field>
{value.group!=='exists'&&<Field label="Estado público da necessidade"><select className={control} aria-label="Estado público da necessidade" value={value.state} onChange={e=>onChange({...value,state:e.target.value})}><option value="hypothesis">Hipótese analítica</option><option value="confirmed">Necessidade confirmada com fundamento público</option></select></Field>}
{value.group!=='exists'&&text('need','Necessidade pública')}{value.group==='ideas'&&text('proposal','Proposta pública')}{text('basis','Fundamento público')}{text('limitations','Limitações públicas da ideia')}{text('next_action','Próximo passo público')}{text('stage','Etapa pública da cadeia')}{text('resources','Recursos públicos documentados')}{text('assumptions','Pressupostos públicos')}{text('conditions','Condições públicas')}
<Field label="Cadeia de valor pública"><select className={control} aria-label="Cadeia de valor pública" value={value.chain_id??''} onChange={e=>onChange({...value,chain_id:e.target.value})}><option value="">Por determinar</option>{options?.references.chain?.map(c=><option key={c.id} value={c.id}>{c.name}</option>)}</select></Field>
<fieldset><legend>Relações públicas seleccionadas</legend>{relations.map(r=><label key={r.id} className="block"><input type="checkbox" checked={(value.relation_ids??[]).includes(r.id)} onChange={event=>onChange({...value,relation_ids:event.target.checked?[...(value.relation_ids??[]),r.id]:(value.relation_ids??[]).filter(id=>id!==r.id)})}/> {r.label} · {r.relationship}</label>)}</fieldset><fieldset><legend>Evidências públicas a divulgar</legend>{evidence.map(e=><label key={e.id} className="block"><input type="checkbox" checked={value.evidence_ids.includes(e.id)} onChange={event=>onChange({...value,evidence_ids:event.target.checked?[...value.evidence_ids,e.id]:value.evidence_ids.filter(id=>id!==e.id)})}/> {e.statement||'Evidência pública por descrever'}</label>)}</fieldset>
<label className="block"><input type="checkbox" checked={reviewed} onChange={e=>onReview(e.target.checked)}/> Confirmei a divulgação deste texto e das evidências públicas seleccionadas, sem exposição directa ou indirecta de informação privada.</label>
</fieldset>;
}
export function proactiveView(raw:unknown):ProactivePublic|null{
if(!raw||typeof raw!=='object')return null;
const p=raw as Partial<ProactivePublic&ProactiveAnalysis>;
if(p.version!==1)return null;
if(typeof p.group==='string'&&typeof p.need==='string')return p as ProactivePublic;
const a=raw as ProactiveAnalysis;
if(!a.need||typeof a.need.problem!=='string'||!a.idea)return null;
return {version:1,group:a.kind,state:a.need.state,need:a.kind==='exists'?'':a.need.problem,proposal:a.kind==='ideas'?a.idea.solution:'',basis:a.need.confirmation||'Fundamento por completar',limitations:[a.need.limitations,a.need.missing,a.idea.assumptions,a.idea.conditions,a.idea.pending].filter(Boolean).join('; '),next_action:a.idea.next_action,evidence_ids:a.need.evidence_ids,chain_id:a.idea.chain_id,stage:a.kind==='ideas'?a.idea.stage:'',notice:'Origem privada autorizada deste dossier. '+proactiveNotice};
}
+112
View File
@@ -0,0 +1,112 @@
import { Link } from '@inertiajs/react';
import SectorEntry, { type SectorEntryData } from '@/components/sector-entry';
export type SectorDetailData = {
sector: {
id: number;
name: string;
slug: string;
description: string | null;
short_description: string | null;
};
sectorEntry?: SectorEntryData | null;
opportunities?: {
title: string;
slug: string;
province: string | null;
summary: string | null;
}[];
};
const button =
'inline-block rounded-lg bg-emerald-800 px-5 py-3 font-semibold text-white disabled:opacity-50';
export default function SectorContent({
sector,
sectorEntry,
opportunities,
headingLevel = 2,
}: SectorDetailData & { headingLevel?: 2 | 3 }) {
const Heading = headingLevel === 2 ? 'h2' : 'h3';
return (
<div className="space-y-5">
<p className="whitespace-pre-line">
{sector.description ||
sector.short_description ||
'Descrição sectorial em preparação.'}
</p>
{!sectorEntry && (
<Link
className={button}
href={'/investimentos/iniciar?source=sector:' + sector.id}
>
Iniciar ou continuar uma ideia neste sector
</Link>
)}
{sectorEntry && (
<SectorEntry
headingLevel={headingLevel}
data={{
...sectorEntry,
start_href: sectorEntry.start_href
? '/investimentos/iniciar?source=sector:' +
sector.id
: null,
}}
/>
)}
<Heading className="text-xl font-bold">
Oportunidades no sector
</Heading>
{opportunities?.map((o) => (
<article key={o.slug} className="rounded border bg-white p-5">
<Link
className="text-lg font-bold underline"
href={`/oportunidades/${o.slug}`}
>
{o.title}
</Link>
<p>{o.province}</p>
<p>{o.summary}</p>
<ul aria-label="Localizações associadas">
{sectorEntry?.locations
.filter(
(l) => l.href === `/oportunidades/${o.slug}`,
)
.filter(
(l, i, rows) =>
rows.findIndex(
(other) =>
JSON.stringify(other.location) ===
JSON.stringify(l.location),
) === i,
)
.map((l, i) => (
<li key={i}>
{typeof l.location.name === 'string'
? l.location.name
: 'Consultar localização e fonte na oportunidade'}
</li>
))}
</ul>
</article>
))}
{!opportunities?.length && (
<p>Sem oportunidades publicadas neste sector.</p>
)}
<Link
className={button}
href={`/oportunidades?sector=${sector.slug}`}
>
Pesquisar todas as oportunidades do sector
</Link>
<p>
<Link href="/como-investir" className="underline">
Preparar o investimento
</Link>{' '}
·{' '}
<Link href="/apoio" className="underline">
Pedir apoio sectorial
</Link>
</p>
</div>
);
}
+18 -5
View File
@@ -24,7 +24,14 @@ export type SectorEntryData = {
specialization_href: string | null;
content_notice: string | null;
};
export default function SectorEntry({ data }: { data: SectorEntryData }) {
export default function SectorEntry({
data,
headingLevel = 2,
}: {
data: SectorEntryData;
headingLevel?: 2 | 3;
}) {
const Heading = headingLevel === 2 ? 'h2' : 'h3';
return (
<section
className="space-y-5"
@@ -64,7 +71,9 @@ export default function SectorEntry({ data }: { data: SectorEntryData }) {
perfil e a modalidade já autorizados; se ainda não tem perfil,
pode preparar a ideia e pedir o perfil de promotor.
</p>
<h2 className="text-xl font-bold">Descubra onde investir</h2>
<Heading className="text-xl font-bold">
Descubra onde investir
</Heading>
{data.content_notice && <p>{data.content_notice}</p>}
{!data.articles.length && (
<p>
@@ -74,7 +83,11 @@ export default function SectorEntry({ data }: { data: SectorEntryData }) {
)}
<div className="grid gap-4 md:grid-cols-2">
{data.articles.map((a) => (
<EducationalArticleCard key={a.href} article={a} />
<EducationalArticleCard
key={a.href}
article={a}
headingLevel={headingLevel === 2 ? 3 : 4}
/>
))}
</div>
{data.specialization_href && (
@@ -87,9 +100,9 @@ export default function SectorEntry({ data }: { data: SectorEntryData }) {
dependências.
</p>
)}
<h2 className="text-xl font-bold">
<Heading className="text-xl font-bold">
Projetos âncora, clusters e território
</h2>
</Heading>
{data.relations.length ? (
<ul>
{data.relations.map((r) => (
@@ -1,3 +1,9 @@
import {SimulationIrpcNormal} from '@/components/simulation-irpc-normal';
import {SimulationIrpcWithholdings} from '@/components/simulation-irpc-withholdings';
import {SimulationIspcResiduals} from '@/components/simulation-ispc-residuals';
import {SimulationIspcWithholding} from '@/components/simulation-ispc-withholding';
import {SimulationIspcQuarter} from '@/components/simulation-ispc-quarter';
import {SimulationIspcEligibility} from './simulation-ispc-eligibility';
import { simulationDraftEtag } from '@/lib/simulation-draft-etag';
import { SimulationPublishedIva, type PublishedIvaInput } from './simulation-published-iva';
import { SimulationMonthlyIva } from './simulation-monthly-iva';
@@ -3501,6 +3507,12 @@ export function SimulationForm() {
onCurrencyChange={(value) => change('currency', value)}
/></details>
)}
{(current.id === 'financial' || current.id === 'tax') && <SimulationIspcEligibility draft={draft} onChange={change} />}
{(current.id === 'financial' || current.id === 'tax') && <SimulationIspcQuarter draft={draft} onChange={change} />}
{(current.id === 'financial' || current.id === 'tax') && <SimulationIspcWithholding draft={draft} onChange={change} />}
{(current.id === 'financial' || current.id === 'tax') && <SimulationIspcResiduals draft={draft} onChange={change} />}
{(current.id === 'financial' || current.id === 'tax') && <SimulationIrpcWithholdings draft={draft} onChange={change} />}
{(current.id === 'financial' || current.id === 'tax') && <SimulationIrpcNormal draft={draft} onChange={change} />}
{(current.id === 'financial' || current.id === 'tax') && <SimulationMonthlyIva draft={draft} busy={isCalculating} onCalculate={runSimulation} onChange={change} />}
{current.id === 'financial' &&
(draft.detail_level === 'advanced' ||
@@ -0,0 +1,13 @@
import {newNormalAssessmentInput,type NormalAssessmentInput} from '@/lib/irpc-normal-assessment';
import type {NormalBook} from '@/lib/irpc-normal';
export function SimulationIrpcAssessment({book,save}:{book:NormalBook;save:(b:NormalBook)=>void}){
if(!book.base)return null;
const a=book.assessment,change=(p:Partial<NormalAssessmentInput>)=>save({...book,assessment:{...(a??newNormalAssessmentInput()),...p}});
if(!a)return<button type="button" onClick={()=>change({})}>Iniciar cálculo da colecta normal</button>;
return<fieldset aria-label="Colecta — regime normal" className="space-y-3 rounded border p-3"><legend>Matéria colectável → colecta</legend><p>Reutiliza a matéria colectável actual. Exercício:{book.year||'por identificar'};período anual correspondente à conferência financeira. A taxa geral identificada para2026 é32%,artigo61(1). Benefícios,taxas reduzidas,tributações autónomas e outros casos especiais permanecem separados.</p>
<label className="block">Enquadramento da colecta<select aria-label="Enquadramento da colecta" value={a.treatment} onChange={e=>change({treatment:e.target.value as NormalAssessmentInput['treatment']})}><option value="">Informação em falta</option><option value="general_61_1">Regime normal — taxa geral32%,artigo61(1)</option><option value="other">Benefício ou caso especial — correspondência própria</option></select></label>
<label className="block">Suporte ou pressuposto da taxa geral neste caso<input value={a.reference} onChange={e=>change({reference:e.target.value})}/></label>
<p>Lucro tributável → matéria colectável → colecta → saldo final a pagar ou recuperar. O saldo final pertence aL8:retenções,pagamentos e créditos anuais não são abatidos aqui. Uma colecta conhecida não significa saldo final conhecido.</p>
</fieldset>;
}
@@ -0,0 +1,43 @@
import {useState} from 'react';
import {costRules,newNormalCosts,newCostRow,reusableCreditBalance,type CostRow,type NormalCostsInput} from '@/lib/irpc-normal-costs';
import {normalFinancialSource,type NormalBook} from '@/lib/irpc-normal';
import {fiscalMoney} from '@/lib/irpc-normal-schedules';
import {addFractions,subtractFractions,fractionPresentation} from '@/lib/fiscal-rational';
import {type ProfitTopic} from '@/lib/irpc-normal-profit';
type Field=[string,string,'money'|'text'|'choice'|'method'|'source'];
const fields:Record<string,Field[]>={
allowance:[['billed','Parcela facturada a clientes','money'],['taxedNotBilled','Parcela tributada emIRPS e não facturada a clientes','money']],
advertising:[['campaign','Campanha de lançamento com horizonte superior a um ano','choice']],
vehicle:[['passenger','Viatura ligeira de passageiros','choice'],['publicOrRental','Afecta a serviço público de transportes ou aluguer na actividade normal','choice']],
fuel:[['supportedNormal','Parcela com activo/locação e consumo normal comprovados','money'],['passenger','Viatura ligeira de passageiros','choice'],['publicOrRental','Afecta a serviço público de transportes ou aluguer na actividade normal','choice']],
rental:[['nonAcceptedQuota','Parcela documentada da quota não aceite (36h)','money'],['quotaReference','Documento e regra da quota não aceite','text'],['passenger','Aplicação36(4) — ligeira de passageiros','choice'],['publicOrRental','Afecta a serviço público de transportes ou aluguer na actividade normal','choice']],
stock:[['balanceKey','Identificação única do inventário/objecto','text'],['lossObserved','Perda de valor efectivamente observada','choice'],['observedLoss','Perda total observada documentada','money'],['previous','Provisão fiscal anterior que subsiste','money']],
litigation:[['balanceKey','Identificação única do processo/objecto','text'],['caseOngoing','Processo judicial em curso','choice'],['chargeDeductible','Obrigação daria lugar a custo fiscal dedutível','choice'],['obligation','Obrigação coberta documentada','money'],['previous','Provisão fiscal anterior que subsiste','money']],
provision_reversal:[['balanceKey','Identificação única da provisão/objecto','text'],['previous','Parcela antes fiscalmente deduzida','money'],['eventEnded','Evento não subsiste ou utilização para fim diferente','choice'],['inResult','Reversão já incluída em proveitos do resultado actual','choice']],
taxed_reversal:[['balanceKey','Identificação única da provisão/objecto','text'],['previous','Parcela antes tributada e não deduzida','money'],['eventEnded','Evento não subsiste ou utilização para fim diferente','choice'],['inResult','Reversão já incluída em proveitos do resultado actual','choice']],
prior_cost:[['originalYear','Exercício de origem','text'],['unknownAtClose','Imprevisível ou manifestamente desconhecido no encerramento anterior','choice'],['closingEvidence','Suporte do conhecimento no encerramento anterior','text']],
prior_income:[['originalYear','Exercício de origem','text'],['unknownAtClose','Imprevisível ou manifestamente desconhecido no encerramento anterior','choice'],['closingEvidence','Suporte do conhecimento no encerramento anterior','text']],
work:[['projectKey','Identificação única da obra','text'],['method','Critério fiscal da obra','method'],['price','Preço contratual estabelecido','money'],['totalCost','Custo total estimado para concluir','money'],['incurred','Custos efectivamente incorporados acumulados','money'],['priorRevenue','Proveitos fiscais reconhecidos em exercícios anteriores','money'],['priorCost','Custos fiscais reconhecidos em exercícios anteriores','money'],['costSource','Linha de custos da obra no resultado actual','source'],['bookCost','Parcela de custos da obra já contabilizada no exercício','money'],['partialBilling','Facturação parcial com grau de acabamento correspondente','choice'],['ownFractionalDelivery','Obra por conta própria vendida e entregue fraccionadamente','choice'],['consistentMethod','Critério uniforme para obras idênticas e mantido até ao final','choice'],['publicReception','Recepção provisória de obra pública','choice'],['deferredReceipt','Receita antecipada19(5) proposta — zero conhecido se não aplicada','money']],
};
export function SimulationIrpcCosts({draft,book,save}:{draft:Record<string,unknown>;book:NormalBook;save:(b:NormalBook)=>void}){
const[review,setReview]=useState(false),[error,setError]=useState(''),i=book.costs,source=normalFinancialSource(draft);
if(!i)return<button type="button" onClick={()=>save({...book,costs:newNormalCosts()})}>Iniciar custos com limites, provisões e periodização</button>;
const patch=(p:Partial<NormalCostsInput>)=>{setReview(false);save({...book,costs:{...i,...p}});};
const row=(id:string,p:Partial<CostRow>)=>patch({rows:i.rows.map(r=>r.id===id?{...r,...p}:r)});
const fact=(r:CostRow,k:string,v:string)=>row(r.id,{facts:{...r.facts,[k]:v}});
const summaries=()=>{const groups=new Map<ProfitTopic,string[]>();for(const r of book.schedules?.rows??[]){if(!r.rule)continue;const k=({tax_own:'expenseCorrections',tax_other:'expenseCorrections',undocumented:'expenseCorrections',capital_in:'positivePatrimonial',patrimonial_gain:'positivePatrimonial',capital_out:'negativePatrimonial',patrimonial_cost:'negativePatrimonial',future_cost:'timing',future_income:'timing',current_cost:'timing',current_income:'timing'}as Record<string,ProfitTopic>)[r.rule];groups.set(k,[...(groups.get(k)??[]),r.amount]);}for(const r of i.rows)if(r.rule){const k=costRules[r.rule][1];groups.set(k,[...(groups.get(k)??[]),r.amount]);}return[...groups].map(([key,values])=>({key,amount:fractionPresentation(addFractions(values.map(fiscalMoney))).decimal}));};
const reuse=(r:CostRow)=>{try{const code=r.sourceCode,l=source?.accountingLines.find(l=>l.code===code);if(!l)throw Error('Seleccione uma origem.');const claims=[...book.rows,...(book.schedules?.rows??[]),...i.rows.filter(q=>q.id!==r.id),...i.rows.filter(q=>q.rule==='work').map(q=>({sourceCode:q.facts.costSource,amount:q.facts.bookCost}))].filter(q=>q.sourceCode===code);const available=subtractFractions(fiscalMoney(l.total),addFractions(claims.map(q=>fiscalMoney(q.amount))));if(BigInt(available.numerator)<=0n)throw Error('Não há parcela livre conhecida nesta origem.');row(r.id,{amount:fractionPresentation(available).decimal});setError('');}catch(e){setError(String(e));}};
return<fieldset aria-label="Custos com limites provisões periodização" className="space-y-3 rounded border p-3"><legend>Custos com limites, provisões e periodização — exercício2026</legend>
<p>Reutiliza o resultado e as linhas já declaradas. Identifique só a parcela de cada categoria e os parâmetros em falta. Os limites anuais de publicidade e créditos são partilhados por todas as parcelas; os saldos de provisões não são consumidos. A divergência M20/M22 não bloqueia estes cálculos. Benefícios/casos especiaisL7 e saldo anualL8 mantêm os seus âmbitos.</p>{error&&<p role="alert">{error}</p>}
<button type="button" onClick={()=>patch({rows:[...i.rows,newCostRow(crypto.randomUUID())]})}>Acrescentar custo, provisão ou periodização</button>
{i.rows.some(r=>r.rule==='advertising')&&<fieldset><legend>Publicidade — limite único anual</legend><p>Volume de vendas da origem: {source?.accountingLines.find(l=>l.code==='revenue')?.total??'Em falta'} MZN. O limite não se repete por factura.</p><label>Correspondência às vendas normais do exercício<select aria-label="Vendas normais para publicidade" value={i.salesOrdinary} onChange={e=>patch({salesOrdinary:e.target.value as ''|'yes'})}><option value="">Informação em falta</option><option value="yes">Toda a receita da origem corresponde a vendas/serviços normais</option></select></label><label className="block">Suporte do volume de vendas e completude da publicidade<input value={i.advertisingReference} onChange={e=>patch({advertisingReference:e.target.value})}/></label><p>Campanhas de lançamento com efeito superior a um ano exigem36-A e articulação própria; permanecem discriminadas, sem dedução ordinária presumida.</p></fieldset>}
{i.rows.some(r=>r.rule==='credit')&&<fieldset><legend>Créditos — limites anual e acumulado</legend><label>Regime da provisão de créditos<select aria-label="Regime da provisão de créditos" value={i.creditRegime} onChange={e=>patch({creditRegime:e.target.value as NormalCostsInput['creditRegime']})}><option value="">Por identificar</option><option value="ordinary">Ordinário — fora de supervisão financeira/seguradora</option><option value="regulated">Provisão sujeita a supervisão — correspondência própria</option></select></label><label className="block">Créditos da actividade normal existentes no fim do exercício<input value={i.creditBase} onChange={e=>patch({creditBase:e.target.value})}/></label>{reusableCreditBalance(source)&&<button type="button" onClick={()=>patch({creditBase:fractionPresentation(reusableCreditBalance(source)!).decimal})}>Reutilizar saldo financeiro de créditos: {fractionPresentation(reusableCreditBalance(source)!).decimal} MZN — conferir âmbito</button>}<label className="block">Provisão fiscal anterior que subsiste no termo do exercício<input value={i.creditPrevious} onChange={e=>patch({creditPrevious:e.target.value})}/></label><label className="block">Suporte do saldo de créditos e provisão anterior<input value={i.creditReference} onChange={e=>patch({creditReference:e.target.value})}/></label><p>1,5% anual e6% acumulado; saldo anterior em falta não significa zero. Não aplica regras bancárias/seguradoras nem percentagens de antiguidade presumidas.</p></fieldset>}
{i.rows.map((r,n)=>{const income=['provision_reversal','taxed_reversal','prior_income','work'].includes(r.rule),omitted=r.rule==='provision_reversal'&&r.facts.inResult==='no';return<fieldset key={r.id} className="rounded border p-3"><legend>Parcela {n+1} — {r.document||'Por identificar'}</legend><label>Categoria<select aria-label={'Categoria custo '+(n+1)} value={r.rule} onChange={e=>row(r.id,{rule:e.target.value as CostRow['rule']})}><option value="">Por identificar</option>{Object.entries(costRules).map(([k,v])=><option key={k} value={k}>{v[0]} — {v[2]}</option>)}</select></label>
{(['document','line','amount','reference']as const).map(k=><label key={k} className="block">{({document:'Documento ou mapa discriminado',line:'Linha distinta',amount:r.rule==='work'?'Proveitos da obra já contabilizados no exercício — zero se conhecido':'Parcela contabilística MZN',reference:'Suporte da classificação, condições e período'})[k]}<input aria-label={'Custo '+(n+1)+' '+k} value={r[k]} onChange={e=>row(r.id,{[k]:e.target.value})}/></label>)}
{!omitted&&<><label>Origem contabilística<select aria-label={'Origem custo '+(n+1)} value={r.sourceCode} onChange={e=>row(r.id,{sourceCode:e.target.value})}><option value="">Por corresponder</option>{source?.accountingLines.filter(l=>l.accountingEffect===(income?'income':'expense')).map(l=><option key={l.code} value={l.code}>{l.origin}: {l.total} MZN</option>)}</select></label><button type="button" onClick={()=>reuse(r)}>Reutilizar parcela livre da origem {n+1}</button></>}
{(fields[r.rule]??[]).filter(([k])=>!(k==='publicOrRental'&&r.facts.passenger!=='yes')&&!(k==='publicReception'&&r.facts.method!=='closing')&&!(r.rule==='stock'&&r.facts.lossObserved==='no'&&['observedLoss','previous'].includes(k))&&!(r.rule==='litigation'&&r.facts.caseOngoing==='no'&&['obligation','previous','chargeDeductible'].includes(k))).map(([k,label,type])=><label key={k} className="block">{label}{type==='choice'?<select aria-label={'Custo '+(n+1)+' '+k} value={r.facts[k]??''} onChange={e=>fact(r,k,e.target.value)}><option value="">Informação em falta</option><option value="yes">Sim — documentado</option><option value="no">Não — documentado</option></select>:type==='method'?<select aria-label={'Custo '+(n+1)+' '+k} value={r.facts[k]??''} onChange={e=>fact(r,k,e.target.value)}><option value="">Por identificar</option><option value="percentage">Percentagem de acabamento</option><option value="closing">Encerramento da obra</option></select>:type==='source'?<select aria-label={'Custo '+(n+1)+' '+k} value={r.facts[k]??''} onChange={e=>fact(r,k,e.target.value)}><option value="">Por corresponder/zero fora de linha</option>{source?.accountingLines.filter(l=>l.accountingEffect==='expense').map(l=><option key={l.code} value={l.code}>{l.origin}: {l.total} MZN</option>)}</select>:<input aria-label={'Custo '+(n+1)+' '+k} value={r.facts[k]??''} onChange={e=>fact(r,k,e.target.value)}/>}</label>)}
<label>Condições ordinárias e inclusão na origem demonstradas<select aria-label={'Condições custo '+(n+1)} value={r.conditions} onChange={e=>row(r.id,{conditions:e.target.value as ''|'yes'})}><option value="">Informação em falta</option><option value="yes">Sim, nos documentos identificados</option></select></label><button type="button" onClick={()=>patch({rows:i.rows.filter(q=>q.id!==r.id)})}>Retirar parcela {n+1} das entradas actuais</button></fieldset>;})}
{book.profit&&<><button type="button" onClick={()=>{try{summaries();setReview(true);setError('');}catch(e){setError(String(e));}}}>Conferir correspondência dos temas com os mapas</button>{review&&<div><p>Reveja as somas brutas antes de aplicar; não alteram os factos, o resultado financeiro ou os históricos.</p>{summaries().map(t=><p key={t.key}>{({expenseCorrections:'Correcções aos custos',incomeCorrections:'Correcções aos proveitos',positivePatrimonial:'Variações positivas',negativePatrimonial:'Variações negativas',timing:'Periodização',special:'Casos especiais'})[t.key]}: actual {book.profit!.topics[t.key].amount||book.profit!.topics[t.key].state||'Em falta'} → mapas {t.amount} MZN</p>)}<button type="button" onClick={()=>{const topics=structuredClone(book.profit!.topics);for(const t of summaries())topics[t.key]={state:'known',amount:t.amount,reference:'Correspondência aritmética aos documentos/linhas dos mapas de ajustamentos e custos do exercício.'};save({...book,profit:{...book.profit!,topics}});setReview(false);}}>Aplicar correspondências conferidas dos mapas</button></div>}</>}
<p>Ao calcular e guardar, os novos resultados entram numa versão própria; o resultado anterior permanece no histórico. Informação em falta impede apenas os totais que dependem dessa parcela.</p>
</fieldset>;
}
@@ -0,0 +1,36 @@
import {useState}from'react';
import{depreciationCatalog,newNormalDepreciation,newDepreciationAsset,reuseNormalAssets,type DepreciationAsset}from'@/lib/irpc-normal-depreciation';
import{normalFinancialSource,type NormalBook}from'@/lib/irpc-normal';
import{fiscalMoney}from'@/lib/irpc-normal-schedules';import{addFractions,subtractFractions,fractionPresentation}from'@/lib/fiscal-rational';
export function SimulationIrpcDepreciation({draft,book,save}:{draft:Record<string,unknown>;book:NormalBook;save:(b:NormalBook)=>void}){
const[error,setError]=useState(''),input=book.depreciation,source=normalFinancialSource(draft);
if(!input)return<div><button type="button" onClick={()=>save({...book,depreciation:newNormalDepreciation()})}>Iniciar amortizações — tabelas, métodos e quotas anteriores</button>{!!book.schedules?.assets.length&&<button type="button" onClick={()=>save({...book,depreciation:{...reuseNormalAssets(book.schedules!.assets),completenessReference:book.schedules!.assetsReference}})}>Reutilizar activos e valores do mapa inicial</button>}</div>;
const patch=(id:string,p:Partial<DepreciationAsset>)=>save({...book,depreciation:{...input,assets:input.assets.map(a=>a.id===id?{...a,...p}:a)}});
const field=(a:DepreciationAsset,n:number,k:keyof DepreciationAsset,label:string)=><label key={k}className="block">{label}<input aria-label={'Activo '+n+' '+k}value={a[k]}onChange={e=>patch(a.id,{[k]:e.target.value})}/></label>;
const choice=(a:DepreciationAsset,n:number,k:'specificRate'|'consistentMethod'|'newTangible'|'switchToStraight'|'priorFullQuotas'|'vehicleException'|'limitedRights'|'individual',label:string)=><label key={k}className="block">{label}<select aria-label={'Activo '+n+' '+k}value={a[k]}onChange={e=>patch(a.id,{[k]:e.target.value})}><option value="">Informação em falta</option><option value="yes">Sim — documentado</option><option value="no">Não — documentado</option></select></label>;
return<fieldset aria-label="Amortizações ampliadas L6"className="space-y-3 rounded border p-3"><legend>Amortizações — tabelas, métodos, duodécimos e quotas anteriores</legend>
<p>Decreto72/2013 eCIRPC26/27. Reutiliza a depreciação financeira e os activos do mapa inicial; os originais/históricos ficam conservados. O novo mapa substitui exclusivamente o cálculo de amortizações, sem somar novamente o mapa inicial. Custo histórico e condições ordinárias documentados; reavaliações, turnos intensivos, concessões e outros casos especiais permanecem separados.</p>
<p>Depreciação contabilística a repartir: {source?.accountingLines.find(l=>l.code==='depreciation')?.total??'Em falta'} {source?.currency}. O catálogo apresenta apenas os códigos correspondidos; outra categoria permanece identificada, sem taxa livre.</p>{error&&<p role="alert">{error}</p>}
<label className="block">Suporte da reconciliação integral dos activos e quotas anteriores<input value={input.completenessReference}onChange={e=>save({...book,depreciation:{...input,completenessReference:e.target.value}})}/></label>
<button type="button"onClick={()=>save({...book,depreciation:{...input,assets:[...input.assets,newDepreciationAsset(crypto.randomUUID())]}})}>Acrescentar activo ao mapa fiscal</button>
{input.assets.map((a,index)=>{const n=index+1,entry=Object.hasOwn(depreciationCatalog,a.category)?depreciationCatalog[a.category as keyof typeof depreciationCatalog]:null;return<fieldset key={a.id}className="rounded border p-3"><legend>Activo fiscal {n} — {a.description||'Por identificar'}</legend>
{field(a,n,'assetKey','Identificação única do activo')}{field(a,n,'description','Descrição')}{field(a,n,'document','Documento, pressuposto ou mapa de origem')}{field(a,n,'line','Linha distinta do documento/mapa')}
<label>Categoria/tabela<select aria-label={'Activo '+n+' category'}value={a.category}onChange={e=>{const category=e.target.value as DepreciationAsset['category'],c=Object.hasOwn(depreciationCatalog,category)?depreciationCatalog[category as keyof typeof depreciationCatalog]:null;patch(a.id,{category,rate:c?.rate??''});}}><option value="">Por identificar</option>{Object.entries(depreciationCatalog).map(([k,c])=><option key={k}value={k}>Tabela{c.table}/{c.code} — {c.label} — {c.rate}%</option>)}<option value="nondepreciable">Elemento comprovadamente não depreciável — exclusão</option><option value="other">Outra categoria — correspondência pendente</option></select></label>
{entry&&<p>Taxa máxima: {entry.rate}%; taxas constantes cobertas: {Number(entry.rate)/2}% a{entry.rate}%; vida útil mínima: {100/Number(entry.rate)}anos, máxima: {200/Number(entry.rate)}anos. Coeficiente degressivo máximo: {100/Number(entry.rate)<5?'1,5':100/Number(entry.rate)<=6?'2':'2,5'}, apenas nos activos elegíveis. Fonte:tabela{entry.table}/{entry.code},PDF{entry.page}.</p>}{field(a,n,'cost','Custo histórico documentado MZN')}{field(a,n,'accounting','Depreciação contabilística do exercício MZN')}
<button type="button"onClick={()=>{try{const total=fiscalMoney(source?.accountingLines.find(l=>l.code==='depreciation')?.total??''),used=addFractions(input.assets.filter(q=>q.id!==a.id).map(q=>fiscalMoney(q.accounting))),left=subtractFractions(total,used);if(BigInt(left.numerator)<0n)throw Error('Valores repartidos excedem a origem.');patch(a.id,{accounting:fractionPresentation(left).decimal});setError('');}catch(e){setError(String(e));}}}>Reutilizar depreciação financeira ainda não repartida — activo {n}</button>
{a.category!=='nondepreciable'&&<>
<label>Tipo de aquisição/base<select aria-label={'Activo '+n+' valuation'} value={a.valuation} onChange={e=>patch(a.id,{valuation:e.target.value as DepreciationAsset['valuation']})}><option value="">Por identificar</option><option value="historical_new">Bem adquirido novo/construído ou produzido — custo histórico</option><option value="used">Bem adquirido usado — regra própria7(2)</option><option value="revalued">Bem reavaliado — regra própria15</option><option value="other">Outra base — por corresponder</option></select></label>{entry&&choice(a,n,'specificRate','Existe taxa específica da tabelaI para o activo/actividade')}{field(a,n,'residual','Valor residual MZN')}{entry?.kind==='building'&&field(a,n,'land','Terreno/parte não depreciável incluídos no custo MZN')}
<label>Método<select aria-label={'Activo '+n+' method'}value={a.method}onChange={e=>patch(a.id,{method:e.target.value as DepreciationAsset['method']})}><option value="">Por identificar</option><option value="constant">Quotas constantes — artigos5/7</option><option value="declining">Quotas degressivas — artigos6/8</option><option value="low_value">Valor reduzido, opção integral — artigo17</option></select></label>
{a.method==='constant'&&field(a,n,'rate','Taxa constante escolhida %')}
{a.method==='declining'&&<>{choice(a,n,'newTangible','Activo tangível novo adquirido a terceiros ou construído/produzido')}{field(a,n,'factor','Coeficiente degressivo escolhido (máximo1,5/2/2,5)')}{choice(a,n,'switchToStraight','Aplicar saldo/vida útil restante8(2) quando mais favorável')}{a.switchToStraight==='yes'&&choice(a,n,'priorFullQuotas','Condição de quotas anteriores do artigo8(2) integralmente documentada')}</>}
{a.method==='low_value'?<>{choice(a,n,'individual','Activo individual, fora de conjunto depreciado como um todo')}<p>Art17:até20000MZN, sem amortização fiscal anterior e entrada emuso neste período; a dedução não excede o contabilizado e o saldo fiscal.</p></>:<label>Período da quota<select aria-label={'Activo '+n+' timing'}value={a.timing}onChange={e=>patch(a.id,{timing:e.target.value as DepreciationAsset['timing']})}><option value="">Por identificar</option><option value="annual">Quota anual</option><option value="months">Duodécimos em vigor desde o início — artigo9</option></select></label>}
{field(a,n,'start','Entrada em funcionamento/utilização AAAA-MM-DD')}
<label>Transmissão, inutilização ou termo da vida útil<select aria-label={'Activo '+n+' exitState'}value={a.exitState}onChange={e=>patch(a.id,{exitState:e.target.value as DepreciationAsset['exitState']})}><option value="">Informação em falta</option><option value="absent">Ausência declarada de evento</option><option value="known">Evento/data conhecidos</option></select></label>{(a.exitState==='known'||a.exitDate)&&field(a,n,'exitDate','Data do evento AAAA-MM-DD')}
{choice(a,n,'consistentMethod','Método uniforme desde o início, sem mudança ou excepção por corresponder')}{entry?.kind==='vehicle'&&choice(a,n,'vehicleException','Afectação a serviço público de transportes/locação na actividade normal')}{entry?.kind==='software'&&choice(a,n,'limitedRights','Aquisição onerosa e utilização exclusiva por tempo limitado')}
{field(a,n,'previousAccounting','Quotas contabilísticas anteriores desde a utilização MZN')}{field(a,n,'previousFiscal','Quotas fiscais anteriormente deduzidas MZN')}{field(a,n,'priorAvailable','Parcela anterior temporariamente tributada, recuperável MZN')}{field(a,n,'previousReference','Suporte das quotas anteriores e da recuperabilidade fiscal')}
{['previousAccounting','previousFiscal','priorAvailable'].every(k=>!a[k as 'previousFiscal']||/^0(?:\.0+)?$/.test(a[k as 'previousFiscal']))&&<button type="button"onClick={()=>{if(!a.reference.trim()){setError('Identifique primeiro o suporte da ausência de quotas anteriores.');return;}patch(a.id,{previousAccounting:'0',previousFiscal:'0',priorAvailable:'0',previousReference:'Ausência de quotas anteriores expressamente declarada; '+a.reference});setError('');}}>Declarar ausência de quotas anteriores — activo {n}</button>}
<p>Quota anterior recuperável exige contabilização e tributação temporária demonstradas. Não inclui encargos permanentemente excluídos ou quota nunca contabilizada. O cálculo apresenta o saldo posterior aritmético; não consome saldos oficiais.</p></>}
{field(a,n,'reference','Suporte do activo, categoria, condições e período')}<label>Condições ordinárias e documentos conferidos<select aria-label={'Activo '+n+' conditions'}value={a.conditions}onChange={e=>patch(a.id,{conditions:e.target.value as ''|'yes'})}><option value="">Informação em falta</option><option value="yes">Sim, no recorte documentado</option></select></label>
<button type="button"onClick={()=>save({...book,depreciation:{...input,assets:input.assets.filter(q=>q.id!==a.id)}})}>Retirar activo {n} das entradas actuais</button></fieldset>;})}
</fieldset>;
}
@@ -0,0 +1,14 @@
import {normalFinancialSource,type NormalBook} from '@/lib/irpc-normal';
import {m20Accounts,newNormalFormPreparation,newFormAllocation,reuseDirectFormAllocations,normalFormAccountsFor,type NormalFormPreparationInput,type FormAllocation} from '@/lib/irpc-normal-form-preparation';
export function SimulationIrpcFormPreparation({draft,book,save}:{draft:Record<string,unknown>;book:NormalBook;save:(b:NormalBook)=>void}){
const i=book.forms,source=normalFinancialSource(draft);if(!i)return<button type="button" onClick={()=>save({...book,forms:newNormalFormPreparation()})}>Preparar representação dos valores e campos M20/M22</button>;
const patch=(p:Partial<NormalFormPreparationInput>)=>save({...book,forms:{...i,...p}}),row=(id:string,p:Partial<FormAllocation>)=>patch({allocations:i.allocations.map(a=>a.id===id?{...a,...p}:a)});
return<fieldset aria-label="Preparação de valores M20 M22" className="space-y-3 rounded border p-3"><legend>Representação dos valores e correspondência M20/M22</legend><p>Reutiliza os valores exactos do cálculo e do período/moeda já documentados. A preparação dos campos não altera lucro tributável,matéria colectável ou colecta. M20A.1 exige meticais sem centavos;fracções conservam o valor exacto e ficam pendentes de regra de representação. O transporte201/quadro8 versus200/quadro10 continua identificado,só no resultado afectado. Não gera declaração oficial nem saldo finalL8.</p>
<label className="block">Exemplares de preparação<select value={i.edition} onChange={e=>patch({edition:e.target.value as NormalFormPreparationInput['edition']})}><option value="">Por identificar</option><option value="accepted_pdf_and_m20a1">PDF M22 quadros10–12 e M20A.1 inventariados — edições distintas</option></select></label>
<label className="block">Suporte da edição e do período<input value={i.reference} onChange={e=>patch({reference:e.target.value})}/></label><label className="block">Completude das contas e discriminação das linhas do plano<input value={i.completenessReference} onChange={e=>patch({completenessReference:e.target.value})}/></label>
<button type="button" onClick={()=>patch({allocations:[...i.allocations,...reuseDirectFormAllocations(source).filter(a=>!i.allocations.some(r=>r.sourceCode===a.sourceCode))]})}>Reutilizar contas directas ainda não discriminadas</button><button type="button" onClick={()=>patch({allocations:[...i.allocations,newFormAllocation(crypto.randomUUID())]})}>Acrescentar parcela contabilística M20</button>
{i.allocations.map((a,n)=><fieldset key={a.id} className="rounded border p-2"><legend>Parcela M20 {n+1}</legend><label className="block">Linha de origem<select aria-label={'Origem M20 '+(n+1)} value={a.sourceCode} onChange={e=>row(a.id,{sourceCode:e.target.value})}><option value="">Seleccione</option>{source?.accountingLines.map(l=><option key={l.code} value={l.code}>{l.origin}: {l.total} MZN</option>)}</select></label><label className="block">Conta M20A.1<select aria-label={'Conta M20 '+(n+1)} value={a.account} onChange={e=>row(a.id,{account:e.target.value as FormAllocation['account']})}><option value="">Por corresponder</option>{Object.entries(m20Accounts).filter(([k])=>normalFormAccountsFor(a.sourceCode).includes(k)||k===a.account).map(([k,v])=><option key={k}value={k}>{k} — {v}</option>)}</select></label><label className="block">Montante MZN<input aria-label={'Montante M20 '+(n+1)}value={a.amount}onChange={e=>row(a.id,{amount:e.target.value})}/></label><label className="block">Suporte da classificação<input aria-label={'Suporte M20 '+(n+1)}value={a.reference}onChange={e=>row(a.id,{reference:e.target.value})}/></label></fieldset>)}
<fieldset className="rounded border p-2"><legend>Imposto contabilizado e resultado líquido</legend><p>Colecta e saldo a pagar não são usados como gasto contabilístico presumido. Indique imposto reconhecido e se já está incluído numa linha do plano,para evitar subtracção duplicada.</p><label className="block">Estado do imposto contabilizado<select aria-label="Estado do imposto contabilizado" value={i.incomeTax.state} onChange={e=>patch({incomeTax:{...i.incomeTax,state:e.target.value as ''|'known'|'absent'}})}><option value="">Informação em falta</option><option value="known">Valor conhecido</option><option value="absent">Ausência declarada com suporte</option></select></label>{(i.incomeTax.state==='known'||i.incomeTax.amount!==''||i.incomeTax.placement!=='')&&<><label className="block">Imposto contabilizado em MZN<input value={i.incomeTax.amount} onChange={e=>patch({incomeTax:{...i.incomeTax,amount:e.target.value}})}/></label><label className="block">Localização do imposto contabilizado<select value={i.incomeTax.placement} onChange={e=>patch({incomeTax:{...i.incomeTax,placement:e.target.value as ''|'included'|'outside'}})}><option value="">Por identificar</option><option value="included">Já incluído no resultado do plano — discriminado na conta8.5</option><option value="outside">Exterior ao resultado antes de imposto do plano</option></select></label></>}<label className="block">Suporte do imposto contabilizado<input value={i.incomeTax.reference}onChange={e=>patch({incomeTax:{...i.incomeTax,reference:e.target.value}})}/></label></fieldset>
<label className="block">Parcela de taxa reduzida para a colecta total302<select aria-label="Parcela de taxa reduzida para a colecta total302" value={i.reducedRate.state} onChange={e=>patch({reducedRate:{...i.reducedRate,state:e.target.value as ''|'known'|'absent'}})}><option value="">Informação em falta</option><option value="absent">Ausência declarada — sem parcela reduzida neste sujeito/período</option><option value="known">Situação conhecida — âmbitoL7 por tratar</option></select></label><label className="block">Suporte da situação da taxa reduzida<input value={i.reducedRate.reference}onChange={e=>patch({reducedRate:{...i.reducedRate,reference:e.target.value}})}/></label>
</fieldset>;
}
@@ -0,0 +1,31 @@
import {newIrpcInterestRule,type IrpcInterestRule} from '@/lib/irpc-interest';
import {mrftaCases,mrftaCaseHtml} from '@/lib/irpc-mrfta-cases';
import {useState} from 'react';
import {irpcCurrent,type IrpcBook} from '@/lib/irpc-withholdings';
import {newMrftaInput,recordMrfta,mrftaHtml,mrftaReportRows,mrftaCurrent,type MrftaInput} from '@/lib/irpc-mrfta';
export function SimulationIrpcMrfta({draft,book,save}:{draft:Record<string,unknown>;book:IrpcBook;save:(book:IrpcBook)=>void}){
const [error,setError]=useState(''),i=book.mrfta??newMrftaInput();
const change=(patch:Partial<MrftaInput>)=>save({...book,mrfta:{...i,...patch}});
const interestMode=i.interest.mode||(i.interest.calculation==='automatic'?'automatic':'');
const interest=(patch:Partial<MrftaInput['interest']>)=>change({interest:{...i.interest,...patch}});
const field=(key:'period'|'nuit'|'name'|'commercialName'|'taxArea'|'address'|'contact'|'completenessRef'|'otherRubricsRef',label:string,type='text')=><label className="block">{label}<input className="block rounded border p-2" type={type} value={i[key]} onChange={e=>change({[key]:e.target.value})}/></label>;
const select=(key:'declaration'|'timing'|'completeness'|'otherRubrics',label:string,options:Array<[string,string]>)=><label className="block">{label}<select value={i[key]} onChange={e=>change({[key]:e.target.value})}>{options.map(([v,l])=><option key={v} value={v}>{l}</option>)}</select></label>;
const periods=[...new Set(book.result?.rows.map(r=>r.period).filter(Boolean)??[])];
const identities=Object.entries((JSON.parse(String(draft.modelo_a_snapshot||'{}')).irpcWithholdings??{}) as Record<string,IrpcBook>).filter(([,b])=>b.mrfta?.nuit&&b.mrfta?.name&&(!i.nuit.trim()||i.nuit===b.mrfta.nuit)&&(!i.name.trim()||i.name===b.mrfta.name)&&(['nuit','name','commercialName','taxArea','address','contact'] as const).some(key=>!i[key].trim()&&b.mrfta![key].trim()));
return <fieldset aria-label="Preparação MRFTA e juros" className="space-y-3 rounded border p-4"><legend>MRFTA — preenchimento e juros compensatórios</legend><p>Reutiliza o cálculo guardado, documentos e entregas IRPC. Um mês/ano por declaração. A retenção sofrida e as dispensas ficam separadas. Quadros 8/9 reservados à assinatura e aos serviços; não há submissão ou aceitação AT.</p>
{identities.map(([scope,b])=><button key={scope} type="button" onClick={()=>{const p:Partial<MrftaInput>={};for(const key of ['nuit','name','commercialName','taxArea','address','contact']as const)if(!i[key].trim())p[key]=b.mrfta![key];change(p);}}>Reutilizar identidade fiscal {b.mrfta!.name} ({scope}) nos campos vazios</button>)}
<div className="grid gap-3 md:grid-cols-2">{field('period','Quadro 2 — mês/ano','month')}<label>Período existente<select value="" onChange={e=>{if(e.target.value)change({period:e.target.value});}}><option value="">Seleccione</option>{periods.map(p=><option key={p} value={p}>{p}</option>)}</select></label>{select('declaration','Quadro 1 — retenção na fonte',[['','Por identificar'],['initial','Inicial'],['replacement','Substituição']])}{select('timing','Quadro 2 — situação do prazo',[['','Por esclarecer'],['within','Dentro do prazo'],['late','Fora do prazo']])}{field('nuit','Quadro 3 — NUIT')}{field('taxArea','Quadro 3 — área fiscal')}{field('name','Quadro 4 — nome do sujeito passivo')}{field('commercialName','Quadro 5 — nome comercial')}{field('address','Quadro 6 — domicílio fiscal')}{field('contact','Quadro 6 — contacto')}{select('completeness','Retenções do sujeito passivo neste período conferidas, incluindo demais livros',[['','Por esclarecer'],['yes','Sim'],['no','Ainda não']])}{field('completenessRef','Referência da reconciliação do período')}{select('otherRubrics','IRPS, tributação autónoma e outras rubricas fora deste recorte',[['','Por esclarecer'],['none','Ausência de outros valores devidos documentada'],['pending','Existem ou estão por apurar']])}{field('otherRubricsRef','Documento da situação das outras rubricas')}</div>
<h5>Quadro 7 — CER das rubricas correspondidas</h5><p>Base, taxa e imposto vêm do cálculo guardado. O CER é transcrito da referência aplicável; os números de campos da guia antiga não são automaticamente códigos de receita. Códigos introduzidos não são validados por catálogo oficial; códigos provisórios ou de simulação não são correspondências oficiais.</p>
{book.result?.inputs.filter(r=>r.direction==='paid'&&book.result?.rows.some(v=>v.id===r.id&&v.period===i.period&&v.status==='calculated'&&v.treatment!=='dispensed')).map(r=>{const code=i.codes.find(c=>c.rowId===r.id)??{rowId:r.id,cer:'',reference:''};const update=(p:Partial<typeof code>)=>change({codes:[...i.codes.filter(c=>c.rowId!==r.id),{...code,...p}]});return <div key={r.id} className="grid gap-2 md:grid-cols-3"><span>{r.documentRef} — {r.counterparty}</span><label>CER<input value={code.cer} onChange={e=>update({cer:e.target.value})}/></label><label>Documento / referência do CER<input value={code.reference} onChange={e=>update({reference:e.target.value})}/></label></div>;})}
<h5>Juros compensatórios — separados do principal</h5><p>Regulamento IRPC, artigos 25/35: a taxa refere MAIBOR de 12 meses + 2 pontos. O Banco de Moçambique documenta a descontinuidade da MAIBOR. O portal não adopta MIMO ou Prime como substituto nem calcula juros de mora.</p>
<label>Tratamento dos juros<select value={interestMode} onChange={e=>interest(e.target.value==='automatic'?{mode:'',calculation:'automatic'}:{mode:e.target.value as MrftaInput['interest']['mode'],calculation:undefined})}><option value="">Informação insuficiente / cálculo automático por resolver</option><option value="assessment">Transcrever liquidação documentada de juros compensatórios</option><option value="automatic">Cálculo com taxa e regra documentadas — sem parâmetro pré-definido</option><option value="timely">Conferir entrega integral dentro do prazo documentado</option></select></label>
{interestMode&&<><label>Período documentado dos juros / entregas<input type="month" value={i.interest.period} onChange={e=>interest({period:e.target.value})}/></label><label>Documento da liquidação / reconciliação<input value={i.interest.reference} onChange={e=>interest({reference:e.target.value})}/></label></>}
{['assessment','automatic'].includes(interestMode)&&<>{i.interest.mode==='assessment'&&<label>Montante dos juros em MZN<input value={i.interest.amount} onChange={e=>interest({amount:e.target.value})}/></label>}<label>Data da liquidação<input type="date" value={i.interest.date} onChange={e=>interest({date:e.target.value})}/></label></>}
{['timely','automatic'].includes(interestMode)&&<><label>Prazo aplicável documentado<input type="date" value={i.interest.dueDate} onChange={e=>interest({dueDate:e.target.value})}/></label><label>Fonte do prazo, incluindo eventual ajuste de calendário<input value={i.interest.dueReference} onChange={e=>interest({dueReference:e.target.value})}/></label></>}
{interestMode==='automatic'&&<fieldset className="space-y-2 rounded border p-2"><legend>Parâmetros documentados do cálculo — sem taxa fiscal de2026 pré-definida</legend><p>Simulação pelos pressupostos introduzidos, sem confirmação fiscal dos juros. Preencha apenas a regra aplicável ao caso. Sem parâmetro completo, os juros continuam indeterminados. A taxa bancária actual não é adoptada por substituição. Imposto por conta não retido e juros de mora mantêm regra própria.</p>{(['annualRate','rateSource','fiscalBasis','validFrom','validTo','dayBasisRef','roundingRef','occurrenceRef']as const).map(k=><label key={k} className="block">{({annualRate:'Taxa anual final (%) documentada, incluindo acréscimos aplicáveis',rateSource:'Documento e citação da taxa',fiscalBasis:'Fundamento da aplicação fiscal ao caso',validFrom:'Parâmetro aplicável desde',validTo:'Parâmetro aplicável até',dayBasisRef:'Documento da base anual e contagem diária',roundingRef:'Documento do arredondamento do total',occurrenceRef:'Documento da retenção e ocorrência'})[k]}<input type={k==='validFrom'||k==='validTo'?'date':'text'} value={i.interest.automatic?.[k]??''} onChange={e=>interest({automatic:{...(i.interest.automatic??newIrpcInterestRule()),[k]:e.target.value}})}/></label>)}{(['dayBasis','rounding','retention']as const).map(k=><label key={k} className="block">{({dayBasis:'Base anual conforme documento',rounding:'Arredondamento do total conforme documento',retention:'Retenção efectuada'})[k]}<select value={i.interest.automatic?.[k]??''} onChange={e=>interest({automatic:{...(i.interest.automatic??newIrpcInterestRule()),[k]:e.target.value} as IrpcInterestRule})}>{(k==='dayBasis'?[['','Por identificar'],['365','365 dias'],['366','366 dias'],['actual_year','Dias efectivos de cada ano']]:k==='rounding'?[['','Por identificar'],['total_cent_half_up','Total aos cêntimos — metade por excesso'],['total_cent_down','Total aos cêntimos — por defeito']]:[['','Por identificar'],['withheld','Sim, documentada'],['not_withheld','Não efectuada, documentado']]).map(([v,l])=><option key={v} value={v}>{l}</option>)}</select></label>)}</fieldset>}
<button type="button" className="rounded border p-2" onClick={()=>{try{save(recordMrfta(book,irpcCurrent(draft,book)));setError('');}catch(e){setError(String(e));}}}>Preparar e guardar MRFTA</button><button type="button" className="rounded border p-2" onClick={()=>{try{const html=mrftaHtml(book,irpcCurrent(draft,book)),u=URL.createObjectURL(new Blob([html],{type:'text/html;charset=utf-8'})),a=document.createElement('a');a.href=u;a.download='MRFTA-'+(i.period||'periodo')+'-preparacao.html';a.click();URL.revokeObjectURL(u);setError('');}catch(e){setError(String(e));}}}>Exportar preenchimento MRFTA</button>
{book.mrftaResult&&<fieldset className="space-y-2 rounded border p-2"><legend>Casos de trabalho separados por período, rubrica, taxa e CER</legend><p>Estas fichas conservam as pendências do período. Não são declarações autónomas, anexos oficiais ou uma autorização para fundir taxas.</p>{mrftaCases(book.mrftaResult.model).map(c=><div key={c.key}><span>{c.period}; {c.rubric}; {c.rate}%; CER:{c.cer||'por corresponder'}; documentos:{c.documents.join('; ')}.</span><button type="button" onClick={()=>{try{if(!irpcCurrent(draft,book)||!mrftaCurrent(book,true))throw Error('Reprepare as entradas actuais antes de exportar o caso.');const html=mrftaCaseHtml(book.mrftaResult!.model,c.key),u=URL.createObjectURL(new Blob([html],{type:'text/html;charset=utf-8'})),a=document.createElement('a');a.href=u;a.download='MRFTA-caso-'+c.key+'.html';a.click();URL.revokeObjectURL(u);setError('');}catch(e){setError(String(e));}}}>Exportar ficha de trabalho {c.rate}% / {c.cer||'CER pendente'}</button></div>)}</fieldset>}
{error&&<p role="alert">{error}</p>}{mrftaReportRows(book,irpcCurrent(draft,book)).map((r,n)=><p key={n}><strong>{r[1]}</strong>: {r[2]}<small>{r[3]}</small></p>)}
</fieldset>;
}
@@ -0,0 +1,50 @@
import {SimulationIrpcSpecial} from '@/components/simulation-irpc-special';
import {SimulationIrpcFormPreparation} from '@/components/simulation-irpc-form-preparation';
import {SimulationIrpcPeriodFx} from '@/components/simulation-irpc-period-fx';
import {SimulationIrpcDepreciation} from '@/components/simulation-irpc-depreciation';
import {SimulationIrpcCosts} from '@/components/simulation-irpc-costs';
import {SimulationIrpcSchedules} from '@/components/simulation-irpc-schedules';
import {SimulationIrpcAssessment} from '@/components/simulation-irpc-assessment';
import {useState} from 'react';
import {SimulationIrpcTaxableBase} from '@/components/simulation-irpc-taxable-base';
import {newNormalProfitInput,profitTopics,type NormalProfitInput,type ProfitEvidence} from '@/lib/irpc-normal-profit';
import {normalBook,saveNormalBook,normalFinancialSource,newNormalAdjustment,recordNormal,normalHtml,normalReportRows,type NormalBook,type NormalAdjustment} from '@/lib/irpc-normal';
export function SimulationIrpcNormal({draft,onChange}:{draft:Record<string,unknown>;onChange:(field:string,value:string)=>void}){
const[error,setError]=useState('');if(draft.fiscal_component!=='irpc')return null;
try{
const b=normalBook(draft),source=normalFinancialSource(draft);
const save=(next:NormalBook)=>{try{onChange('modelo_a_snapshot',saveNormalBook(draft,next));setError('');}catch(e){setError(String(e));}};
const patch=(id:string,p:Partial<NormalAdjustment>)=>save({...b,rows:b.rows.map(r=>r.id===id?{...r,...p}:r)});
const profit=(patch:Partial<NormalProfitInput>)=>save({...b,profit:{...(b.profit??newNormalProfitInput()),...patch}});
const field=(r:NormalAdjustment,k:'document'|'line'|'amount'|'reference',label:string)=><label className="block">{label}<input value={r[k]} onChange={e=>patch(r.id,{[k]:e.target.value})}/></label>;
return<section aria-label="IRPC normal — ajustamentos" className="space-y-3 rounded border p-4"><h4>L6 — IRPC normal: ajustamentos ao resultado financeiro</h4><p>Acréscimos de multas sem origem contratual e juros compensatórios incluídos nos custos do plano, artigo 36(1)c. A conferência anual pode determinar o lucro tributável simulado no recorte ordinário documentado. A matéria colectável exige conferência específica de deduções e perdas; a colecta tem cálculo próprio e o saldo final a pagar ou recuperar pertence aL8. Não reutiliza automaticamente juros simulados de L5.</p>{error&&<p role="alert">{error}</p>}
{source?<p>Origem: plano financeiro desta oportunidade; {source.periods} meses; {source.currency}; resultado antes de imposto: {source.accountingProfitBeforeTax}. Cobranças, pagamentos e reembolso de capital ficam fora do resultado.</p>:<p>{b.periodsFx?'Complete a correspondência do período e moeda abaixo para reutilizar o plano existente emMZN.':'Prepare o plano financeiro para reutilizar o resultado e os custos reconciliados.'}</p>}
<label className="block">Exercício fiscal<input value={b.year} onChange={e=>save({...b,year:e.target.value})}/></label>
<label className="block">{b.periodsFx?'Correspondência do plano ao período documentado':b.schedules?'Correspondência dos12 meses do plano ao período anual documentado':'Correspondência dos 12 meses do plano a Janeiro–Dezembro de 2026'}<input value={b.mappingReference} onChange={e=>save({...b,mappingReference:e.target.value})}/></label>
<label className="block">Âmbito<select value={b.scope} onChange={e=>save({...b,scope:e.target.value as NormalBook['scope']})}><option value="">Por identificar</option><option value="resident_general">Sujeito residente — regime geral, fora de transparência e regimes especiais</option><option value="ep_general">Não residente com estabelecimento estável — regime geral, só resultado imputável ao EP (mapas complementares)</option><option value="other">Outro âmbito — por corresponder</option></select></label>
<label className="block">Suporte do âmbito e da imputação integral do resultado ao sujeito/EP<input value={b.scopeReference} onChange={e=>save({...b,scopeReference:e.target.value})}/></label>
<button type="button" onClick={()=>save({...b,rows:[...b.rows,newNormalAdjustment(crypto.randomUUID())]})}>Acrescentar ajustamento ao resultado</button>
{b.rows.map(r=><fieldset key={r.id} className="space-y-2 rounded border p-3"><legend>{r.document||'Ajustamento por identificar'}</legend><label className="block">Custo de origem na ponte<select value={r.sourceCode} onChange={e=>patch(r.id,{sourceCode:e.target.value})}><option value="">Seleccione</option>{source?.accountingLines.filter(l=>l.accountingEffect==='expense').map(l=><option key={l.code} value={l.code}>{l.origin}: {l.total} {source.currency}</option>)}</select></label>{field(r,'document','Documento ou pressuposto identificado')}{field(r,'line','Linha distinta do documento')}{field(r,'amount','Parcela do custo em MZN')}
<label className="block">Natureza documentada<select value={r.rule} onChange={e=>patch(r.id,{rule:e.target.value as NormalAdjustment['rule']})}><option value="">Por classificar</option><option value="noncontractual_fine">Multa/encargo por infracção sem origem contratual — 36(1)c</option><option value="compensatory_interest">Juros compensatórios — 36(1)c</option><option value="other">Outro ajustamento — por corresponder</option></select></label>
<label className="block">Parcela incluída nos custos do resultado de partida<select value={r.included} onChange={e=>patch(r.id,{included:e.target.value as NormalAdjustment['included']})}><option value="">Por demonstrar</option><option value="yes">Sim, reconciliada com a linha de origem</option><option value="no">Não — não acrescentar novamente</option></select></label>{field(r,'reference','Suporte da qualificação, ocorrência e inclusão contabilística')}<p>Juros bancários e penalidades contratuais não são classificados automaticamente como infracções.</p></fieldset>)}
{!b.profit?<button type="button" onClick={()=>profit({})}>Iniciar conferência até ao lucro tributável</button>:<fieldset aria-label="Conferência do lucro tributável" className="space-y-3 rounded border p-3"><legend>Resultado financeiro → ajustamentos → lucro tributável simulado</legend><p>Conferência do sujeito passivo/exercício completo. Cada receita remanescente deve ser ordinária do exercício;cada custo remanescente deve estar documentado e ser indispensável à fonte produtora,sem outras exclusões ou limites. Outras situações conhecidas permanecem discriminadas. Ausência declarada exige suporte e não é informação em falta.</p>
<label className="block">Suporte da completude do sujeito passivo no exercício<input value={b.profit.completenessReference} onChange={e=>profit({completenessReference:e.target.value})}/></label>
{source?.accountingLines.map(l=>{const review=b.profit!.lines.find(r=>r.code===l.code)??{code:l.code,state:'' as const,reference:''};const change=(p:Partial<typeof review>)=>profit({lines:[...b.profit!.lines.filter(r=>r.code!==l.code),{...review,...p}]});return<fieldset key={l.code} className="rounded border p-2"><legend>{l.origin} — {l.total} {source.currency}</legend><label className="block">Estado fiscal — {l.origin}<select aria-label={'Estado fiscal — '+l.origin} value={review.state} onChange={e=>change({state:e.target.value as ProfitEvidence['state']})}><option value="">Informação em falta</option><option value="known">Valor conhecido e qualificação ordinária documentada</option><option value="absent">Ausência declarada — conferir origem zero</option></select></label><label className="block">Suporte fiscal — {l.origin}<input value={review.reference} onChange={e=>change({reference:e.target.value})}/></label></fieldset>;})}
<p>Depreciação positiva e juros financeiros não integralmente acrescidos exigem correspondência própria;uma declaração de ausência não apaga os valores do plano.</p>
{profitTopics.map(([k,label])=>{const t=b.profit!.topics[k];const change=(p:Partial<ProfitEvidence>)=>profit({topics:{...b.profit!.topics,[k]:{...t,...p}}});return<fieldset key={k} className="rounded border p-2"><legend>{label}</legend><label className="block">Estado — {label}<select aria-label={'Estado — '+label} value={t.state} onChange={e=>change({state:e.target.value as ProfitEvidence['state']})}><option value="">Informação em falta</option><option value="known">Valor conhecido</option><option value="absent">Ausência declarada com suporte</option></select></label>{(t.state==='known'||t.amount!=='')&&<label className="block">Montante conhecido — {label}<input value={t.amount} onChange={e=>change({amount:e.target.value})}/></label>}<label className="block">Suporte — {label}<input value={t.reference} onChange={e=>change({reference:e.target.value})}/></label></fieldset>;})}
</fieldset>}
<SimulationIrpcPeriodFx draft={draft} book={b} save={save}/>
<SimulationIrpcSchedules book={b} save={save}/>
<SimulationIrpcDepreciation draft={draft} book={b} save={save}/>
<SimulationIrpcCosts draft={draft} book={b} save={save}/>
<SimulationIrpcTaxableBase draft={draft} book={b} save={save}/>
<SimulationIrpcAssessment book={b} save={save}/>
<SimulationIrpcSpecial draft={draft} book={b} save={save}/>
<SimulationIrpcFormPreparation draft={draft} book={b} save={save}/>
<button type="button" onClick={()=>{try{save(recordNormal(draft,b));}catch(e){setError(String(e));}}}>Calcular e guardar L6 e tratamentos L7 preparados</button>
<button type="button" onClick={()=>{try{const html=normalHtml(draft),url=URL.createObjectURL(new Blob([html],{type:'text/html;charset=utf-8'})),a=document.createElement('a');a.href=url;a.download='IRPC-normal-ajustamentos.html';a.click();URL.revokeObjectURL(url);setError('');}catch(e){setError(String(e));}}}>Exportar mapa parcial L6</button>
{normalReportRows(draft).map((r,n)=><p key={n}>{r[1]} — {r[2]} — {r[3]}</p>)}
</section>;
}catch(e){return<p role="alert">Preparação L6 não recuperável: {String(e)}. Originais e histórico conservados.</p>;}
}
@@ -0,0 +1,21 @@
import {SimulationFxSelection} from '@/components/simulation-fx-selection';
import {rawNormalFinancialSource,type NormalBook} from '@/lib/irpc-normal';
import {newNormalPeriodFx,mapNormalPeriodFx,type NormalPeriodFxInput} from '@/lib/irpc-normal-period-fx';
import {irpcFxSources,irpcFxRow,updateIrpcFx} from '@/lib/irpc-fx';
export function SimulationIrpcPeriodFx({draft,book,save}:{draft:Record<string,unknown>;book:NormalBook;save:(b:NormalBook)=>void}){
const raw=rawNormalFinancialSource(draft),i=book.periodsFx;
if(!i)return<button type="button" onClick={()=>save({...book,periodsFx:newNormalPeriodFx()})}>Preparar período curto ou plano noutra moeda</button>;
const patch=(p:Partial<NormalPeriodFxInput>)=>save({...book,periodsFx:{...i,...p}}),model=mapNormalPeriodFx(draft,i,raw),sources=irpcFxSources(draft);
const text=(k:'from'|'to'|'planStart'|'reference'|'conversionReference'|'mznMapsReference',label:string)=><label className="block">{label}<input value={i[k]} onChange={e=>patch({[k]:e.target.value})}/></label>;
return<fieldset aria-label="Período e moeda L6" className="space-y-3 rounded border p-3"><legend>Período fiscal e conversão do plano — simulação L6</legend><p>Reutiliza os meses e valores originais do plano. Seleccione apenas os meses do período documentado;sem anualizar o resultado. Os mapas,activos e saldos fiscais permanecem emMZN e exigem reconciliação explícita. A conversão cambial para simulação usa o mecanismo existente; não confirma automaticamente a regra fiscal de conversão anual.</p>
<label className="block">Tipo de período<select value={i.kind} onChange={e=>patch({kind:e.target.value as NormalPeriodFxInput['kind']})}><option value="">Por identificar</option><option value="annual">Anual documentado — 12meses</option><option value="start">Início de actividade — 7(4)a</option><option value="cessation">Cessação de actividade — 7(4)b</option><option value="same_year">Início e fim de sujeição no mesmo exercício — 7(4)c</option><option value="transition">Transição para período autorizado/comunicado — 7(4)d</option></select></label>
{text('from','Início do período fiscal (AAAA-MM-DD)')}{text('to','Fim do período fiscal (AAAA-MM-DD)')}{text('planStart','Primeiro mês civil do plano (AAAA-MM-01)')}{text('reference','Suporte do evento,período e correspondência dos meses')}
{book.schedules&&<button type="button" onClick={()=>patch({from:i.from||book.schedules!.period.from,to:i.to||book.schedules!.period.to,reference:i.reference||book.schedules!.period.reference})}>Reutilizar datas e suporte já declarados nos campos vazios</button>}
{text('mznMapsReference','Reconciliação dos mapas,parcelas,activos e saldos existentes em MZN para este período')}
{raw?.currency!=='MZN'&&<>{text('conversionReference','Pressuposto documentado da conversão mensal para simulação')}
{[...new Set(model.rows.map(r=>r.period))].map(period=>{const date=model.rows.find(r=>r.period===period)?.date,entry=i.months.find(m=>m.period===period)??{period,currency:raw?.currency??''};const change=(p:Partial<typeof entry>)=>patch({months:[...i.months.filter(m=>m.period!==period),{...entry,...p}]});return<fieldset key={period} aria-label={'Câmbio do mês '+period} className="rounded border p-2"><legend>Mês{period} — {date} — {raw?.currency}</legend><label>Reutilizar selecção cambial existente<select value={entry.fxLink?.id??''} onChange={e=>{const s=sources.find(s=>s.id===e.target.value);if(s)change({currency:raw?.currency??'',fxSelection:s.selection,fxLink:{id:s.id,fingerprint:s.fingerprint}});}}><option value="">Seleccione uma origem documentada</option>{sources.map(s=><option value={s.id} key={s.id}>{s.label}</option>)}</select></label><SimulationFxSelection row={irpcFxRow('normal-'+period,entry)} onChange={p=>{if(p.fxSelection)change({...updateIrpcFx(entry,p.fxSelection),currency:raw?.currency??''});}}/></fieldset>;})}
</>}
{i.months.filter(m=>!model.rows.some(r=>r.period===m.period)).map(m=><p key={m.period}>Selecção conservada do mês{m.period},fora do período actual. <button type="button" onClick={()=>patch({months:i.months.filter(x=>x.period!==m.period)})}>Retirar selecção do mês{m.period} deste mapa</button></p>)}
<p>{model.months}meses;resultado convertido:{model.source?.accountingProfitBeforeTax??'Indeterminado'} MZN. {model.pending.join(' | ')}</p><p>Meses parciais,limites anuais por corresponder e contagem de perdas41(5) afectam apenas os respectivos casos. Colecta não equivale ao saldo final a pagar.</p>
</fieldset>;
}
@@ -0,0 +1,29 @@
import {newNormalSchedules,newScheduleRow,newNormalAsset,scheduleRules,type NormalSchedules,type ScheduleRow,type NormalAsset} from '@/lib/irpc-normal-schedules';
import type {NormalBook} from '@/lib/irpc-normal';
export function SimulationIrpcSchedules({book,save}:{book:NormalBook;save:(b:NormalBook)=>void}){
const s=book.schedules;if(!s)return<button type="button" onClick={()=>save({...book,schedules:newNormalSchedules()})}>Iniciar mapas complementares L6</button>;
const patch=(p:Partial<NormalSchedules>)=>save({...book,schedules:{...s,...p}});
const row=(id:string,p:Partial<ScheduleRow>)=>patch({rows:s.rows.map(r=>r.id===id?{...r,...p}:r)});
const asset=(id:string,p:Partial<NormalAsset>)=>patch({assets:s.assets.map(a=>a.id===id?{...a,...p}:a)});
return<fieldset aria-label="Mapas complementares L6" className="space-y-3 rounded border p-3"><legend>Mapas complementares — regras ordinárias documentadas</legend>
<p>Reutiliza o resultado e as linhas do plano. As somas brutas de cada tema devem corresponder à conferência do lucro tributável. Os efeitos com sinal ficam discriminados; uma dúvida não apaga as parcelas independentes. L7 conserva benefícios e casos especiais; L8 conserva o fecho anual.</p>
{book.periodsFx&&book.periodsFx.kind!=='annual'?<p>Período actual no mapa «Período fiscal e conversão do plano». O período anual anterior permanece conservado no histórico.</p>:<fieldset><legend>Período anual e correspondência dos meses</legend><label>Tipo de período<select aria-label="Tipo de período L6" value={s.period.kind} onChange={e=>patch({period:{...s.period,kind:e.target.value as NormalSchedules['period']['kind']}})}><option value="">Por identificar</option><option value="calendar">Ano civil — artigo7(1)</option><option value="authorised_annual">Anual diferente — autorização artigo7(2)</option><option value="ep_annual">Anual diferente de EP — comunicação artigo7(3)</option></select></label>{(['from','to','reference']as const).map(k=><label key={k} className="block">{({from:'Início do período AAAA-MM-DD',to:'Termo do período AAAA-MM-DD',reference:'Suporte do período e da correspondência mensal'})[k]}<input aria-label={'Período L6 '+k} value={s.period[k]} onChange={e=>patch({period:{...s.period,[k]:e.target.value}})}/></label>)}<p>Período anual diferente: documente autorização do artigo7(2) ou comunicação do EP do artigo7(3), início de aplicação e manutenção por cinco exercícios. O plano representa o período completo com termo em2026, emMZN. Períodos curtos e conversão fiscal anual de outra moeda ficam por corresponder.</p></fieldset>}
<button type="button" onClick={()=>patch({rows:[...s.rows,newScheduleRow(crypto.randomUUID())]})}>Acrescentar regra complementar</button>
{s.rows.map((r,n)=><fieldset key={r.id} className="rounded border p-2"><legend>Regra complementar {n+1}</legend>
<label>Tratamento<select aria-label={'Tratamento complementar '+(n+1)} value={r.rule} onChange={e=>row(r.id,{rule:e.target.value as ScheduleRow['rule']})}><option value="">Por identificar</option>{Object.entries(scheduleRules).map(([k,v])=><option key={k} value={k}>{v[0]} — {v[2]}</option>)}</select></label>
{([['amount','Montante MZN'],['sourceCode','Código da linha de origem (custos/proveitos já incluídos)'],['document','Documento'],['line','Linha distinta'],['reference','Suporte da regra e dos factos'],['fiscalYear','Exercício de imputação (periodização)']]as const).map(([k,label])=><label key={k} className="block">{label}<input aria-label={label+' complementar '+(n+1)} value={r[k]} onChange={e=>row(r.id,{[k]:e.target.value})}/></label>)}
<p>Entradas/distribuições de capital e variações patrimoniais são externas ao resultado. Variação negativa ordinária: indispensável à actividade sujeita, sem liberalidade, menos-valia latente ou distribuição; sem gratificações especiais. Periodização: operação ordinária e exercício de realização documentados; sem obra plurianual ou correcção de exercício anterior.</p>
<label>Condições demonstradas<select aria-label={'Condições complementar '+(n+1)} value={r.conditions} onChange={e=>row(r.id,{conditions:e.target.value as ''|'yes'})}><option value="">Informação em falta</option><option value="yes">Sim, nos documentos identificados</option></select></label>
<button type="button" onClick={()=>patch({rows:s.rows.filter(q=>q.id!==r.id)})}>Retirar regra {n+1} das entradas actuais</button></fieldset>)}
<fieldset><legend>Juros financeiros ordinários — artigo22c</legend><p>Somente capitais alheios aplicados na exploração, encargos documentados, não capitalizáveis, sem partes relacionadas, subcapitalização ou outra limitação especial. Identifique o remanescente após os juros compensatórios acrescidos no mapa anterior. Outros juros permanecem pendentes neste caso.</p>
<label className="block">Juros ordinários remanescentes MZN<input value={s.interest.amount} onChange={e=>patch({interest:{...s.interest,amount:e.target.value}})}/></label>
<label className="block">Suporte dos juros e condições<input value={s.interest.reference} onChange={e=>patch({interest:{...s.interest,reference:e.target.value}})}/></label>
<label>Condições dos juros<select aria-label="Condições dos juros ordinários" value={s.interest.conditions} onChange={e=>patch({interest:{...s.interest,conditions:e.target.value as ''|'yes'}})}><option value="">Informação em falta</option><option value="yes">Demonstradas no recorte ordinário</option></select></label></fieldset>
{!book.depreciation?<fieldset><legend>Amortizações fiscais — quotas constantes anuais</legend><p>Decreto72/2013, artigos3–7. Activo próprio sujeito a deperecimento, custo histórico, uso no início de2026, método uniforme, vida útil fiscal não excedida. Documente que não há regra sectorial específica prevalecente ou limitação especial. A categoria exige qualificação documentada; os itens genéricos9/9.1 só se aplicam quando não há taxa específica da tabelaI. Duodécimos, reavaliação, bens usados e recuperação de quotas antes tributadas ficam separados.</p>
<label className="block">Reconciliação de todos os activos com a depreciação do plano<input value={s.assetsReference} onChange={e=>patch({assetsReference:e.target.value})}/></label>
<button type="button" onClick={()=>patch({assets:[...s.assets,newNormalAsset(crypto.randomUUID())]})}>Acrescentar activo fiscal</button>
{s.assets.map((a,n)=><fieldset key={a.id} className="rounded border p-2"><legend>Activo {n+1}</legend><label>Categoria fiscal<select aria-label={'Categoria activo '+(n+1)} value={a.category} onChange={e=>asset(a.id,{category:e.target.value as NormalAsset['category'],rate:e.target.value==='computer'?'25':e.target.value==='server'?'20':'',tableReference:e.target.value==='computer'?'Decreto72/2013 tabelaII grupo3 item9':e.target.value==='server'?'Decreto72/2013 tabelaII grupo3 item9.1':''})}><option value="">Por identificar</option><option value="computer">Computador, impressora, UPS — II/3/9 — 25%</option><option value="server">Servidor — II/3/9.1 — 20%</option><option value="other">Outra categoria — correspondência pendente</option></select></label>{([['description','Descrição'],['cost','Custo fiscal documentado MZN'],['residual','Valor residual MZN'],['rate','Taxa anual documentada %'],['accounting','Depreciação contabilística de2026 MZN'],['previousFiscal','Amortização fiscal acumulada anterior MZN'],['inUseFrom','Data de entrada em uso AAAA-MM-DD'],['tableReference','Diploma, tabela, código e taxa aplicáveis'],['reference','Documentos e condições do activo']]as const).map(([k,label])=><label key={k} className="block">{label}<input aria-label={label+' activo '+(n+1)} value={a[k]} onChange={e=>asset(a.id,{[k]:e.target.value})}/></label>)}
<label>Condições do activo<select aria-label={'Condições activo '+(n+1)} value={a.conditions} onChange={e=>asset(a.id,{conditions:e.target.value as ''|'yes'})}><option value="">Informação em falta</option><option value="yes">Demonstradas no recorte anual constante</option></select></label><button type="button" onClick={()=>patch({assets:s.assets.filter(q=>q.id!==a.id)})}>Retirar activo {n+1} das entradas actuais</button></fieldset>)}</fieldset>:<p>Activos do mapa inicial conservados; a depreciação é agora reconciliada exclusivamente pelo mapa de tabelas, métodos, duodécimos e quotas anteriores abaixo.</p>}
<label className="block">Suporte da perda fiscal do próprio exercício, se apurada<input value={s.currentLossReference} onChange={e=>patch({currentLossReference:e.target.value})}/></label><p>Perda actual conhecida: matéria colectável e colecta zero apenas depois de conferidas as restantes condições. Não é dedução a si própria nem saldo oficial de reporte. Informação insuficiente mantém os totais dependentes indeterminados.</p>
</fieldset>;
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,30 @@
import {irpcBook} from '@/lib/irpc-withholdings';
import {newNormalBaseInput,newNormalLoss,type NormalBaseInput,type NormalLoss} from '@/lib/irpc-normal-base';
import type {NormalBook} from '@/lib/irpc-normal';
export function SimulationIrpcTaxableBase({draft,book,save}:{draft:Record<string,unknown>;book:NormalBook;save:(b:NormalBook)=>void}){
if(!book.profit)return null;
const b=book.base;const change=(p:Partial<NormalBaseInput>)=>save({...book,base:{...(b??newNormalBaseInput()),...p}});
let identity:{nuit:string;name:string}|null=null;try{const m=irpcBook(draft).mrfta;if(m&&/^\d{9}$/.test(m.nuit))identity={nuit:m.nuit,name:m.name};}catch{/* A missing withholding book does not block this independent path. */}
if(!b)return<button type="button" onClick={()=>change({})}>Iniciar determinação da matéria colectável</button>;
const loss=(id:string,p:Partial<NormalLoss>)=>change({losses:b.losses.map(l=>l.id===id?{...l,...p}:l)});
const choices:Array<[string,string]>=[['','Por esclarecer'],['yes','Sim, documentado'],['no','Não, documentado']];
return<fieldset aria-label="Matéria colectável — perdas e deduções" className="space-y-3 rounded border p-3"><legend>Lucro tributável → matéria colectável simulada</legend><p>Reutiliza o lucro tributável do cálculo actual, sem introduzir novamente os montantes. Esse lucro e a matéria colectável não são imposto a pagar. Recorte: regime geral, método declarativo, perdas fiscais próprias em exercícios anuais ordinários, com saldo e utilização propostos expressos. Não aplica benefícios positivos sem regra específica nem créditos de retenção.</p>
{identity&&(!b.subjectNuit||b.subjectNuit===identity.nuit)&&<button type="button" onClick={()=>{if(!b.subjectNuit||b.subjectNuit===identity!.nuit)change({subjectNuit:identity!.nuit,identityReference:b.identityReference||'Identidade reutilizada da preparação MRFTA desta oportunidade: '+identity!.name});}}>Reutilizar NUIT da preparação existente {identity.nuit}</button>}
<label className="block">NUIT do sujeito passivo da matéria colectável<input value={b.subjectNuit} onChange={e=>change({subjectNuit:e.target.value})}/></label>
<label className="block">Suporte da identidade e correspondência com o lucro<input value={b.identityReference} onChange={e=>change({identityReference:e.target.value})}/></label>
<label className="block">Método de determinação<select aria-label="Método de determinação" value={b.method} onChange={e=>change({method:e.target.value as NormalBaseInput['method']})}><option value="">Por esclarecer</option><option value="direct">Declarativo/directo, documentado</option><option value="indirect">Métodos indirectos — fora deste recorte</option></select></label>
<label className="block">Suporte do método de determinação<input value={b.methodReference} onChange={e=>change({methodReference:e.target.value})}/></label>
<label className="block">Situação das perdas fiscais anteriores<select aria-label="Situação das perdas fiscais anteriores" value={b.lossesState} onChange={e=>change({lossesState:e.target.value as NormalBaseInput['lossesState']})}><option value="">Informação em falta</option><option value="known">Perdas/saldos conhecidos — discriminar</option><option value="absent">Ausência declarada com suporte</option></select></label>
<label className="block">Suporte e completude dos saldos de perdas<input value={b.lossesReference} onChange={e=>change({lossesReference:e.target.value})}/></label>
{(b.lossesState==='known'||b.losses.length>0)&&<><button type="button" onClick={()=>change({losses:[...b.losses,{...newNormalLoss(crypto.randomUUID()),subjectNuit:b.subjectNuit}]})}>Acrescentar perda fiscal por exercício</button>
<label className="block">Objecto social e natureza da actividade mantidos no termo do exercício<select aria-label="Objecto social e natureza da actividade mantidos no termo do exercício" value={b.unchangedObject} onChange={e=>change({unchangedObject:e.target.value as NormalBaseInput['unchangedObject']})}>{choices.map(([v,l])=><option key={v} value={v}>{l}</option>)}</select></label><label className="block">Suporte da manutenção ou alteração da actividade<input value={b.objectReference} onChange={e=>change({objectReference:e.target.value})}/></label>
{b.losses.map((l,n)=><fieldset key={l.id} className="space-y-2 rounded border p-2"><legend>Perda {n+1} — {l.year||'exercício por identificar'}</legend>{(['year','subjectNuit','assessed','previouslyUsed','requested','reference']as const).map(k=><label className="block" key={k}>{({year:'Exercício da perda',subjectNuit:'NUIT da perda',assessed:'Perda fiscal apurada ou corrigida em MZN',previouslyUsed:'Utilizações anteriores em MZN, incluindo zero conhecido',requested:'Utilização proposta neste exercício em MZN',reference:'Documento do apuramento fiscal, correcções e saldo'})[k]}<input value={l[k]} onChange={e=>loss(l.id,{[k]:e.target.value})}/></label>)}
<label className="block">Origem da perda<select aria-label={'Origem da perda '+(n+1)} value={l.kind} onChange={e=>loss(l.id,{kind:e.target.value as NormalLoss['kind']})}><option value="">Por esclarecer</option><option value="ordinary">Perda própria ordinária do mesmo sujeito</option><option value="transfer">Transmitida/fusão — tratamento próprio</option><option value="other">Outra origem — por corresponder</option></select></label>
{(['annualPeriods','generalActivity','balanceConfirmed']as const).map(k=><label className="block" key={k}>{({annualPeriods:'Exercícios anuais ordinários, sem períodos curtos especiais',generalActivity:'Perda do regime geral, fora de transparência/isenção parcial/actividade reduzida',balanceConfirmed:'Saldo fiscal, correcções e utilizações anteriores reconciliados'})[k]}<select aria-label={k+' '+(n+1)} value={l[k]} onChange={e=>loss(l.id,{[k]:e.target.value as NormalLoss['annualPeriods']})}>{choices.map(([v,label])=><option key={v} value={v}>{label}</option>)}</select></label>)}
</fieldset>)}<p>A utilização é escolhida explicitamente. O portal não presume ordem FIFO, não ultrapassa saldo ou lucro e não consome o saldo oficial ao simular ou guardar.</p></>}
<label className="block">Benefícios/deduções à matéria colectável<select aria-label="Benefícios/deduções à matéria colectável" value={b.benefits.state} onChange={e=>change({benefits:{...b.benefits,state:e.target.value as NormalBaseInput['benefits']['state']}})}><option value="">Informação em falta</option><option value="known">Valor conhecido — identificar</option><option value="absent">Ausência declarada com suporte</option></select></label>
{(b.benefits.state==='known'||b.benefits.amount!=='')&&<label className="block">Montante conhecido de benefícios/deduções em MZN<input value={b.benefits.amount} onChange={e=>change({benefits:{...b.benefits,amount:e.target.value}})}/></label>}
<label className="block">Suporte dos benefícios/deduções, regra e exercício<input value={b.benefits.reference} onChange={e=>change({benefits:{...b.benefits,reference:e.target.value}})}/></label><p>Um benefício positivo conhecido permanece por corresponder; a referência não autoriza subtracção livre. Créditos à colecta, retenções sofridas e imposto a pagar seguem etapa própria.</p>
</fieldset>;
}
@@ -0,0 +1,34 @@
import {SimulationIrpcMrfta} from '@/components/simulation-irpc-mrfta';
import {irpcReliefRules,newIrpcReliefPreparation,prepareIrpcRelief} from '@/lib/irpc-relief-preparation';
import {SimulationFxSelection} from '@/components/simulation-fx-selection';
import {irpcFxSources,irpcFxRow,updateIrpcFx,type IrpcFxAmount} from '@/lib/irpc-fx';
import {useState} from 'react';
import {irpcBook,saveIrpcBook,reuseIrpcSources,irpcSources,newIrpcRow,recordIrpc,irpcKinds,emptyIrpcOrdinaryFacts,irpcReportRows,irpcPreparationHtml,type IrpcBook,type IrpcRow,type IrpcEvent,type IrpcPayment,type IrpcOrdinaryFacts} from '@/lib/irpc-withholdings';
export function SimulationIrpcWithholdings({draft,onChange}:{draft:Record<string,unknown>;onChange:(field:string,value:string)=>void}){
const[error,setError]=useState('');if(draft.fiscal_component!=='irpc'&&draft.fiscal_component!=='withholding')return null;
try{const book=irpcBook(draft),sources=irpcSources(draft),save=(b:IrpcBook)=>{try{onChange('modelo_a_snapshot',saveIrpcBook(draft,b));setError('');}catch(e){setError(String(e));}},change=(id:string,p:Partial<IrpcRow>)=>save({...book,rows:book.rows.map(r=>r.id===id?{...r,...p}:r)}),uid=()=>crypto.randomUUID();
const field=(r:IrpcRow,k:keyof IrpcRow,label:string,type='text')=><label className="block">{label}<input className="block rounded border p-2" type={type} value={String(r[k]??'')} onChange={e=>change(r.id,{[k]:e.target.value})}/></label>;
const select=(r:IrpcRow,k:keyof IrpcRow,label:string,options:Array<[string,string]>)=><label className="block">{label}<select className="block rounded border p-2" value={String(r[k]??'')} onChange={e=>change(r.id,{[k]:e.target.value})}>{options.map(([v,l])=><option key={v} value={v}>{l}</option>)}</select></label>;
const yn:Array<[string,string]>=[['','Por esclarecer'],['yes','Sim'],['no','Não']];
const eventLabels:Array<[IrpcEvent['kind'],string]>=[['cost','Reconhecimento do custo'],['payment','Pagamento do rendimento'],['maturity','Vencimento, ainda que presumido'],['availability','Colocação à disposição'],['liquidation','Liquidação'],['quantification','Apuramento do quantitativo']];
const fxSources=irpcFxSources(draft);
const renderFx=(id:string,input:IrpcFxAmount,apply:(patch:Partial<IrpcFxAmount>)=>void)=><div className="space-y-2"><p>A base/comprovativo conserva a moeda e o montante originais. A conversão reutiliza o selector e a aritmética entregues; a data cambial fica distinta do evento da retenção.</p>{fxSources.map(src=><div key={src.id}><span>{src.label};data:{src.selection.applied?.date||'por confirmar'};selecção actual:{input.fxSelection?.applied?.rate||'nenhuma'}.</span><button type="button" className="rounded border p-2" onClick={()=>{if(window.confirm(`Substituir a selecção cambial desta linha (${input.fxSelection?.applied?.rate||'vazia'}) pela origem ${src.label},data ${src.selection.applied?.date||'por confirmar'}? O montante e a moeda originais são conservados;resultado anterior permanece no histórico até novo cálculo.`))apply({fxSelection:structuredClone(src.selection),fxLink:{id:src.id,fingerprint:src.fingerprint}});}}>Reutilizar selecção cambial {src.id}</button></div>)}<SimulationFxSelection row={irpcFxRow(id,input)} onChange={patch=>{if(patch.fxSelection)apply(updateIrpcFx(input,patch.fxSelection));}}/></div>;
const ordinarySelect=(r:IrpcRow,k:keyof IrpcOrdinaryFacts,label:string,options:Array<[string,string]>)=><label className="block">{label}<select value={String((r.ordinary??emptyIrpcOrdinaryFacts())[k]??'')} onChange={e=>change(r.id,{ordinary:{...(r.ordinary??emptyIrpcOrdinaryFacts()),[k]:e.target.value}})}>{options.map(([v,l])=><option key={v} value={v}>{l}</option>)}</select></label>;
const paymentChange=(id:string,p:Partial<IrpcPayment>)=>save({...book,payments:book.payments.map(v=>v.id===id?{...v,...p}:v)});
return<section aria-label="Retenções de IRPC" className="space-y-4 rounded border p-4"><h4>IRPC — retenções e preparação documental</h4><p>Reutilize documentos e contrapartes existentes. Classifique o rendimento e o evento aplicável:facturar,pagar e reconhecer o custo são factos distintos. O conjunto calcula os casos digitais de 10%, as taxas normais de 20% e as taxas especiais do artigo 62(4) nos âmbitos identificados. Dispensas dos artigos 68(d/f) e limite convencional de royalties Portugal–Moçambique são calculados nos casos documentados. Informação insuficiente condiciona apenas o respectivo rendimento.</p>{error&&<p role="alert">{error}</p>}
<button type="button" className="rounded border p-2" onClick={()=>{try{save(reuseIrpcSources(draft,book));}catch(e){setError(String(e));}}}>Reutilizar contrapartes e documentos existentes</button><button type="button" className="rounded border p-2" onClick={()=>save({...book,rows:[...book.rows,newIrpcRow(uid())]})}>Acrescentar rendimento IRPC</button>
{book.rows.map(r=><fieldset key={r.id} className="space-y-3 rounded border p-3"><legend>{r.description||r.documentRef||'Rendimento por identificar'}</legend>{r.source&&<p>Origem:{r.source.id}. Entradas deliberadamente editadas são conservadas. {sources.find(s=>s.id===r.source!.id)?.key!==r.source.key&&<><strong>Origem alterada ou indisponível.</strong>{sources.find(s=>s.id===r.source!.id)&&<><span> Base actual:{r.base};base na origem:{sources.find(s=>s.id===r.source!.id)?.amount||'desconhecida'};documento actual:{r.documentRef};origem:{sources.find(s=>s.id===r.source!.id)?.documentRef||'desconhecido'}.</span><button type="button" className="rounded border p-2" onClick={()=>{const s=sources.find(s=>s.id===r.source!.id)!;if(window.confirm('Confirma a reconciliação da origem indicada, conservando as entradas deliberadas e os resultados anteriores no histórico?'))change(r.id,{source:{...r.source!,key:s.key}});}}>Conservar edições e reconciliar origem</button></>}</>}</p>}
<div className="grid gap-3 md:grid-cols-2">{select(r,'direction','Perspectiva',[['paid','Rendimento pago — retenção a entregar'],['received','Rendimento recebido — retenção sofrida']])}{field(r,'counterparty','Contraparte')}{field(r,'documentRef','Documento / operação / linha distinta')}{field(r,'description','Descrição')}{select(r,'origin','Origem',[['projected','Projecção com pressupostos'],['effective','Factos documentados']])}{select(r,'kind','Natureza do rendimento',irpcKinds)}{field(r,'base','Base do rendimento, separada do IVA')}{field(r,'currency','Moeda da base')}{select(r,'recipientIrpc','Titular sujeito a IRPC neste rendimento',yn)}{select(r,'payerIrpc','Devedor sujeito a IRPC',yn)}{select(r,'residence','Residência do titular',[['','Por esclarecer'],['resident','Residente'],['nonresident','Não residente']])}{r.residence==='nonresident'&&<>{select(r,'permanentEstablishment','Existe estabelecimento estável em Moçambique',yn)}{r.permanentEstablishment==='yes'&&select(r,'attributable','Rendimento imputável ao estabelecimento',yn)}</>}{select(r,'mozambique','Rendimento obtido em Moçambique, conforme qualificação legal',yn)}{field(r,'qualificationRef','Suporte / pressuposto da qualificação, residência e incidência')}{select(r,'specialRelief','Convenção, isenção ou dispensa aplicável',[['','Por esclarecer'],['none','Não invocada neste caso qualificado'],['claimed','Invocada — identificar regra e condições']])}{r.specialRelief==='claimed'&&field(r,'reliefRef','Artigo, condições, período e prova invocados')}</div>
{r.specialRelief==='claimed'&&<fieldset className="space-y-2 rounded border p-2"><legend>Preparação de dispensa ou convenção</legend><p>Reutiliza contraparte, residência, estabelecimento estável e documento deste rendimento.</p><label>Enquadramento<select value={r.reliefPreparation?.kind??'dispensation'} onChange={e=>change(r.id,{reliefPreparation:{...(r.reliefPreparation??newIrpcReliefPreparation()),kind:e.target.value as 'dispensation'|'exemption'|'treaty'}})}><option value="dispensation">Dispensa de retenção</option><option value="exemption">Isenção</option><option value="treaty">Convenção</option></select></label>{(['instrument','article','country','residenceDocument','validFrom','validTo','conditions','evidence'] as const).filter(k=>!['country','residenceDocument'].includes(k)||r.reliefPreparation?.kind==='treaty').map(k=><label key={k} className="block">{({instrument:'Diploma / convenção',article:'Artigo',country:'Estado contratante',residenceDocument:'Referência do documento de residência fiscal',validFrom:'Aplicável desde',validTo:'Aplicável até',conditions:'Condições do benefício',evidence:'Referências dos documentos existentes'})[k]}<input type={k==='validFrom'||k==='validTo'?'date':'text'} value={r.reliefPreparation?.[k]??''} onChange={e=>change(r.id,{reliefPreparation:{...(r.reliefPreparation??newIrpcReliefPreparation()),[k]:e.target.value}})}/></label>)}<label>Regra aplicável<select value={r.reliefPreparation?.rule??''} onChange={e=>change(r.id,{reliefPreparation:{...(r.reliefPreparation??newIrpcReliefPreparation()),rule:e.target.value as NonNullable<IrpcRow['reliefPreparation']>['rule']}})}>{irpcReliefRules.map(([v,l])=><option key={v} value={v}>{l}</option>)}</select></label>{(r.reliefPreparation?.rule==='ptMz12'?(['treatyResident','beneficialOwner','payerResidentMz','armLength','royaltyDefinition'] as const):r.reliefPreparation?.rule==='cirpc68f'?(['subjectToIrpc','notTransparent'] as const):r.reliefPreparation?.rule==='cirpc68d'?(['subjectToIrpc'] as const):[]).map(k=><label key={k} className="block">{({subjectToIrpc:'Titular sujeito a IRPC relativamente a este rendimento (ainda que isento)',notTransparent:'Sociedade fora da transparência fiscal — 6(1)c',treatyResident:'Residência em Portugal nos termos do artigo 4 documentada',beneficialOwner:'Titular é beneficiário efectivo das royalties',payerResidentMz:'Devedor residente em Moçambique; origem do rendimento conforme 12(5)',armLength:'Montante sem excesso por relações especiais — 12(6)',royaltyDefinition:'Rendimento corresponde à definição de royalties — 12(3), versão 2009'})[k]}<select value={r.reliefPreparation?.facts?.[k]??''} onChange={e=>change(r.id,{reliefPreparation:{...(r.reliefPreparation??newIrpcReliefPreparation()),facts:{...r.reliefPreparation?.facts,[k]:e.target.value as ''|'yes'|'no'}}})}>{yn.map(([v,l])=><option key={v} value={v}>{l}</option>)}</select></label>)}<p>{prepareIrpcRelief(r,r.reliefPreparation??newIrpcReliefPreparation()).missing.length?'Faltam elementos documentais; confira artigo, período e provas.':'Documentos registados; calcule para conferir as condições da regra seleccionada.'}</p></fieldset>}
{r.currency!=='MZN'&&renderFx(r.id,r,patch=>change(r.id,patch))}
{r.kind&&!['digital_goods','digital_services','emoney_commission','other'].includes(r.kind)&&<fieldset className="space-y-2 rounded border p-2"><legend>Factos específicos do rendimento</legend>{ordinarySelect(r,'nonDigital','Rendimento fora do âmbito digital/moeda electrónica do artigo62(5)',yn)}{r.kind==='capital'&&ordinarySelect(r,'capitalType','Categoria dos capitais',[['','Por esclarecer'],['unlisted_interest','Juros não cotados, fora das permutas de liquidez'],['unlisted_dividend','Dividendos não cotados'],['listed_debt_mz','Juros de bilhetes do Tesouro/títulos de dívida cotados em bolsa —62(3)a'],['listed_other_mz','Outros títulos cotados na Bolsa de Valores de Moçambique —62(4)d'],['liquidity_repo','Juros de permutas de liquidez em bancos,com ou sem garantia —62(3)b'],['other','Outra categoria']])}{r.kind==='capital'&&r.residence==='resident'&&['listed_debt_mz','liquidity_repo'].includes(r.ordinary?.capitalType??'')&&ordinarySelect(r,'capitalSeatAndManagement','Titular com sede e direcção efectiva nacionais —62(3)',yn)}{r.kind==='rent'&&ordinarySelect(r,'rentOwnPropertyManagement','Titular é sociedade com objecto de gestão de imóveis próprios',yn)}{(['telecom','international_transport','connected_installation','aircraft_maintenance_charter','rural_public_electrification','maritime_fishing_cabotage'].includes(r.kind)||r.kind==='capital'&&r.ordinary?.capitalType==='listed_other_mz')&&ordinarySelect(r,'specialFacts','Factos exactos da categoria62(4) identificados no suporte — não apenas actividade semelhante',yn)}<label className="block">Suporte ou pressuposto específico da classificação<input value={r.ordinary?.reference??''} onChange={e=>change(r.id,{ordinary:{...(r.ordinary??emptyIrpcOrdinaryFacts()),reference:e.target.value}})}/></label></fieldset>}
<h5>Eventos aplicáveis — artigo67(5), versão2026</h5>{r.events.map((e,n)=><div key={n} className="grid gap-2 md:grid-cols-3"><label>Evento<select value={e.kind} onChange={ev=>change(r.id,{events:r.events.map((v,j)=>j===n?{...v,kind:ev.target.value as IrpcEvent['kind']}:v)})}>{eventLabels.map(([k,l])=><option key={k} value={k}>{l}</option>)}</select></label><label>Data<input type="date" value={e.date} onChange={ev=>change(r.id,{events:r.events.map((v,j)=>j===n?{...v,date:ev.target.value}:v)})}/></label><label>Suporte / pressuposto<input value={e.reference} onChange={ev=>change(r.id,{events:r.events.map((v,j)=>j===n?{...v,reference:ev.target.value}:v)})}/></label></div>)}<button type="button" onClick={()=>change(r.id,{events:[...r.events,{kind:'cost',date:'',reference:''}]})}>Acrescentar evento aplicável</button>{select(r,'eventsComplete','Todos os eventos aplicáveis identificados, incluindo custo quando aplicável',yn)}
{select(r,'settlement','Reconciliação da entrega / prova de retenção sofrida',[['','Por esclarecer'],['none','Ainda sem entrega / prova'],['complete','Pagamentos / provas associados completos']])}{field(r,'settlementRef','Referência da situação declarada')}
{r.allocations.map((a,n)=><div key={n}><label>Pagamento / prova existente<select value={a.paymentId} onChange={e=>change(r.id,{allocations:r.allocations.map((v,j)=>j===n?{...v,paymentId:e.target.value}:v)})}><option value="">Seleccione</option>{book.payments.map(p=><option key={p.id} value={p.id}>{p.reference} — {p.amount} {p.currency} — {p.kind}</option>)}</select></label><label>Parcela usada em MZN<input value={a.amount} onChange={e=>change(r.id,{allocations:r.allocations.map((v,j)=>j===n?{...v,amount:e.target.value}:v)})}/></label></div>)}{r.settlement==='complete'&&<button type="button" onClick={()=>change(r.id,{allocations:[...r.allocations,{paymentId:'',amount:''}]})}>Associar pagamento/prova existente</button>}
</fieldset>)}
<h5>Pagamentos e comprovativos reutilizáveis neste livro</h5><p>Uma referência é registada uma vez e repartida entre rendimentos sem exceder o montante. Pagamento ao fornecedor não é entrega à AT; pagamentos de IVA conservam o seu vínculo anterior e não são automaticamente usados em IRPC.</p>{book.payments.map(p=><fieldset key={p.id} className="grid gap-2 rounded border p-2 md:grid-cols-3"><label>Natureza<select value={p.kind} onChange={e=>paymentChange(p.id,{kind:e.target.value as IrpcPayment['kind']})}><option value="remittance">Entrega IRPC à AT</option><option value="withholding_proof">Comprovativo de retenção sofrida</option><option value="beneficiary">Pagamento ao beneficiário</option></select></label>{(['reference','date','amount','currency']as const).map(k=><label key={k}>{({reference:'Referência',date:'Data',amount:'Montante',currency:'Moeda'})[k]}<input type={k==='date'?'date':'text'} value={p[k]} onChange={e=>paymentChange(p.id,{[k]:e.target.value})}/></label>)}{p.currency!=='MZN'&&(p.kind==='withholding_proof'?renderFx(p.id,p,patch=>paymentChange(p.id,patch)):<p>A entrega IRPC à AT requer o montante MZN do comprovativo; converter o pagamento ao beneficiário não prova entrega do imposto.</p>)}</fieldset>)}<button type="button" onClick={()=>save({...book,payments:[...book.payments,{id:uid(),kind:'remittance',reference:'',date:'',amount:'',currency:'MZN'}]})}>Registar pagamento/prova para reutilização</button>
<div className="space-x-3"><button type="button" className="rounded border p-2" onClick={()=>{try{save(recordIrpc(draft,book));}catch(e){setError(String(e));}}}>Calcular e guardar retenções IRPC</button><button type="button" className="rounded border p-2" onClick={()=>{try{const html=irpcPreparationHtml(draft),u=URL.createObjectURL(new Blob([html],{type:'text/html;charset=utf-8'})),a=document.createElement('a');a.href=u;a.download='IRPC-L5-preparacao.html';a.click();URL.revokeObjectURL(u);setError('');}catch(e){setError(String(e));}}}>Exportar preparação IRPC</button></div>
<SimulationIrpcMrfta draft={draft} book={book} save={save}/>
{irpcReportRows(draft).slice(0,book.result?.rows.length??0).map((r,n)=><p key={n}><strong>{r[1]}</strong>: {r[2]}<small className="block">{r[3]}</small></p>)}<p>Formalidades externas:MRFTA19/39 e guia M/39 preservados. CER/rubricas digitais e remissão67(7)→62(6) por corresponder. Exportar não submete nem obtém aceitação AT. L5 continua aberto;ISPC e IRPS conservam os seus limites anteriores.</p></section>;
}catch(e){return<p role="alert">{String(e)}</p>;}
}
@@ -0,0 +1,30 @@
import {useState} from 'react';
import {ispcActivities,ispcEligibilityBook,saveIspcEligibilityBook,recordIspcEligibility,ispcEligibilityCurrent,ispcReuseDiff,ispcEligibilityReportRows,type IspcEligibilityInput,type IspcEligibilityBook} from '@/lib/ispc-eligibility';
const factLabels:Partial<Record<keyof IspcEligibilityInput,string>>={territory:'Exerce a actividade em território nacional',organizedRequired:'Está obrigado a possuir contabilidade organizada para os impostos sobre o rendimento',sharesInIspc:'Tem participações noutras sociedades comerciais em ISPC',sharesAnonymous:'Tem participações em sociedades anónimas ou sociedades cujos sócios não são identificáveis',otherActivities:'Exerce outras actividades fora dos âmbitos identificados',unlistedServices:'Presta serviços fora dos previstos na Lei',forecastConfirmed:'Previsão da declaração de início confirmada pela AT (ou pressuposto expresso na simulação)',generalRegimeChosen:'Optou pela aplicação de IVA/IRPS/IRPC com permanência mínima de três anos',generalThreeYearsCompleted:'Já cumpriu o período mínimo de três anos dessa opção'};
export function SimulationIspcEligibility({draft,onChange}:{draft:Record<string,unknown>;onChange:(field:string,value:string)=>void}){
const[error,setError]=useState(''),[reusePreview,setReusePreview]=useState<ReturnType<typeof ispcReuseDiff>|null>(null);if(draft.fiscal_component!=='ispc')return null;
let book:IspcEligibilityBook;try{book=ispcEligibilityBook(draft);}catch(e){return<p role="alert">{String(e)}</p>;}
const i=book.input,save=(next:IspcEligibilityBook)=>{try{onChange('modelo_a_snapshot',saveIspcEligibilityBook(draft,next));setError('');}catch(e){setError(String(e));}},change=(patch:Partial<IspcEligibilityInput>)=>save({...book,input:{...i,...patch}}),diff=ispcReuseDiff(draft,book),service=i.activities.some(a=>['services12','liberal15'].includes(a)),liberal=i.activities.includes('liberal15'),earlyOutside=i.activities.includes('other')||i.territory==='no'||i.mode==='occasional';
const fact=(field:keyof typeof factLabels)=><label className="block" key={field}>{factLabels[field]}<select className="block rounded border p-2" value={String(i[field])} onChange={e=>change({[field]:e.target.value})}><option value="">Por esclarecer</option><option value="yes">Sim</option><option value="no">Não</option></select></label>;
const text=(field:keyof IspcEligibilityInput,label:string,type='text')=><label className="block" key={field}>{label}<input className="block rounded border p-2" type={type} value={String(i[field])} onChange={e=>change({[field]:e.target.value})}/></label>;
return<section aria-label="ISPC — enquadramento e opção" className="space-y-3 rounded border p-4"><h4 className="font-semibold">ISPC — enquadramento e opção</h4>
<p>Avaliação preliminar para 2026, em MZN, segundo a Lei 9/2025. Distingue condições de acesso, opção e cálculo do imposto. Guarde esta avaliação e prossiga no apuramento trimestral abaixo.</p>
{error&&<p role="alert">{error}</p>}
{diff.length>0&&<button type="button" className="underline" onClick={()=>setReusePreview(diff)}>Conferir dados do perfil e da actividade para reutilizar</button>}
{reusePreview&&<aside className="rounded border p-3"><p>A adopção altera as entradas deste cenário. O resultado guardado passa a histórico até novo cálculo; os outros livros e a opção registada são preservados.</p>{reusePreview.map(v=><p key={v.field}>{({personType:'Tipo de pessoa',establishments:'Estabelecimentos',activityDescription:'Actividade',entityRef:'Entidade'} as Record<string,string>)[v.field]??v.field}: {v.before||'Por preencher'} → {v.after}</p>)}<button type="button" onClick={()=>{change(Object.fromEntries(reusePreview.map(v=>[v.field,v.after])));setReusePreview(null);}}>Confirmar adopção destes dados</button><button type="button" onClick={()=>setReusePreview(null)}>Manter as minhas entradas</button></aside>}
<div className="grid gap-3 md:grid-cols-2">{text('entityRef','Entidade de referência (reutilizável; sem NUIT obrigatório para preparar)')}
<label>Tipo de pessoa<select className="block rounded border p-2" value={i.personType} onChange={e=>change({personType:e.target.value as IspcEligibilityInput['personType']})}><option value="">Por identificar</option><option value="singular">Pessoa singular</option><option value="collective">Pessoa colectiva</option></select></label>
{text('assessmentDate','Data de avaliação','date')}
<label>Natureza dos dados<select className="block rounded border p-2" value={i.origin} onChange={e=>change({origin:e.target.value as IspcEligibilityInput['origin']})}><option value="projected">Pressupostos da simulação</option><option value="effective">Dados efectivos declarados</option></select></label>
<label>Moeda dos valores ISPC<select className="block rounded border p-2" value={i.currency} onChange={e=>change({currency:e.target.value})}><option value="">Por identificar</option><option value="MZN">MZN</option>{i.currency&&i.currency!=='MZN'&&<option value={i.currency}>{i.currency} — fora da cobertura deste cálculo</option>}</select></label>
<label>Âmbito da preparação<select className="block rounded border p-2" value={i.mode} onChange={e=>change({mode:e.target.value as IspcEligibilityInput['mode']})}><option value="regular">Actividade habitual</option><option value="occasional">Operação ocasional — percurso próprio</option></select></label>
{fact('territory')}</div>
<fieldset className="space-y-2 rounded border p-3"><legend>Actividades do contribuinte</legend><p>Identifique todas as actividades, incluindo as exercidas fora desta oportunidade. Não inferimos o regime pelo sector ou pela nacionalidade.</p>{ispcActivities.map(([kind,label])=><label className="block" key={kind}><input type="checkbox" checked={i.activities.includes(kind)} onChange={e=>change({activities:e.target.checked?[...i.activities,kind]:i.activities.filter(a=>a!==kind)})}/> {label}</label>)}{text('activityDescription','Descrição da actividade e natureza dos serviços, quando existam')}</fieldset>
{!earlyOutside&&<><fieldset className="grid gap-3 rounded border p-3 md:grid-cols-2"><legend>Volume anual de referência</legend><label>Referência de acesso<select className="block rounded border p-2" value={i.basis} onChange={e=>change({basis:e.target.value as IspcEligibilityInput['basis'],...(!i.referenceYear?{referenceYear:e.target.value==='previous_year'?'2025':e.target.value==='start_forecast'?'2026':''}:{})})}><option value="">Por identificar</option><option value="previous_year">Volume de negócios do ano anterior</option><option value="start_forecast">Previsão da declaração de início de actividade</option></select></label>{text('referenceYear','Ano do valor de referência')}{text('annualReference','Volume anual de referência em MZN')}{text('annualReferenceRef','Origem do valor ou pressuposto (opcional)')}<p className="md:col-span-2">Não copiar receita trimestral ou do ano em curso como receita do ano anterior. Alterar a origem não reinterpreta o valor já editado; reveja o montante e o ano.</p>{i.basis==='start_forecast'&&<>{fact('forecastConfirmed')}{text('forecastConfirmationRef','Referência da confirmação da previsão, se efectiva')}</>}</fieldset>
<fieldset className="space-y-3 rounded border p-3"><legend>Condições aplicáveis ao contribuinte</legend>{text('establishments','Número de estabelecimentos da actividade, incluindo fora deste dossier')}{fact('organizedRequired')}{fact('sharesInIspc')}{fact('sharesAnonymous')}{fact('otherActivities')}{service&&fact('unlistedServices')}{liberal&&<>{text('liberalDaysSameEntity','Maior duração anual dos serviços à mesma entidade, em dias')}{text('liberalClientRef','Referência do cliente/contrato ou pressuposto da duração')}<p>O limite de 183 dias refere-se aos serviços do artigo 8(1)c. A permanência liberal tem limite próprio de cinco anos; a contagem transitória começa em 2026.</p></>}{fact('generalRegimeChosen')}{i.generalRegimeChosen==='yes'&&<>{fact('generalThreeYearsCompleted')}{text('generalRegimeRef','Referência da opção e do cumprimento dos três anos')}</>}</fieldset>
<fieldset className="space-y-2 rounded border p-3"><legend>Opção — separada da compatibilidade</legend><label>Situação da opção<select className="block rounded border p-2" value={i.option} onChange={e=>change({option:e.target.value as IspcEligibilityInput['option']})}><option value="preparation">Em preparação — sem adesão automática</option><option value="opted">Opção registada no documento/cenário</option><option value="not_opted">Não optou pelo ISPC</option></select></label>{i.option==='opted'&&<>{text('optionReference','Referência da opção')}{text('optionDate','Data da opção','date')}</>}</fieldset></>}
<button type="button" className="rounded bg-emerald-800 p-2 text-white" onClick={()=>{try{save(recordIspcEligibility(draft,book));}catch(e){setError(String(e));}}}>Avaliar e guardar enquadramento ISPC</button>
{book.result&&<p role="status">{ispcEligibilityCurrent(draft,book)?'Resultado correspondente às entradas guardadas.':'Entradas alteradas; resultado histórico preservado. Reveja e guarde nova avaliação.'}</p>}
{ispcEligibilityReportRows(draft).map((r,index)=><p key={index}><strong>{r[1]}:</strong> {r[2]}<small className="block">{r[3]}</small></p>)}
</section>;
}
@@ -0,0 +1,18 @@
import {useState} from 'react';
import {ispcEligibilityBook,ispcEligibilityCurrent} from '@/lib/ispc-eligibility';
import {ispcQuarterBook,saveIspcQuarterBook,recordIspcQuarter,ispcQuarterReportRows,type IspcQuarterInput,type IspcQuarterBook} from '@/lib/ispc-quarter';
export function SimulationIspcQuarter({draft,onChange}:{draft:Record<string,unknown>;onChange:(field:string,value:string)=>void}){
const[error,setError]=useState('');if(draft.fiscal_component!=='ispc')return null;
try{if(ispcEligibilityBook(draft).input.mode==='occasional')return<p>Actividade habitual:campos trimestrais conservados no histórico. Use o percurso de operações ocasionais próprias abaixo.</p>;}catch{/* Preserve the existing explicit recovery error below. */}
let book:IspcQuarterBook;try{book=ispcQuarterBook(draft);}catch(e){return<p role="alert">{String(e)}</p>;}
const i=book.input,save=(b:IspcQuarterBook)=>{try{onChange('modelo_a_snapshot',saveIspcQuarterBook(draft,b));setError('');}catch(e){setError(String(e));}},change=(patch:Partial<IspcQuarterInput>)=>save({...book,input:{...i,...patch}});
let service=false,ready=false;try{const e=ispcEligibilityBook(draft);ready=ispcEligibilityCurrent(draft,e)&&e.result?.status==='compatible';service=e.input.activities.some(a=>['services12','liberal15'].includes(a));}catch{/* Show explicit preparation issue below, never fabricate eligibility. */}
return<section aria-label="Apuramento trimestral ISPC" className="space-y-3 rounded border p-4"><h4>ISPC — apuramento trimestral</h4><p>Reutiliza o enquadramento e a opção guardados. Declare o volume de todas as actividades do sujeito passivo em MZN; custos e IVA de aquisições não reduzem esta base. Dados em falta permanecem indeterminados.</p>{!ready&&<p>Reveja e guarde primeiro a avaliação de enquadramento acima. As entradas trimestrais e o histórico ficam conservados.</p>}{error&&<p role="alert">{error}</p>}
<label className="block">Ano<input className="block rounded border p-2" value={i.year} onChange={e=>change({year:e.target.value})}/></label><label className="block">Trimestre<select className="block rounded border p-2" value={i.quarter} onChange={e=>change({quarter:e.target.value})}>{['1','2','3','4'].map(q=><option key={q} value={q}>{q} — {['Janeiro a Março','Abril a Junho','Julho a Setembro','Outubro a Dezembro'][Number(q)-1]}</option>)}</select></label>
<label className="block">Âmbito do volume<select className="block rounded border p-2" value={i.coverage} onChange={e=>change({coverage:e.target.value as IspcQuarterInput['coverage']})}><option value="">Por confirmar</option><option value="all_taxpayer_activity">Todas as actividades do sujeito passivo, sem repetir oportunidades</option></select></label>
<div className="grid gap-3 md:grid-cols-2">{i.sales.map((v,n)=>(n<Number(i.quarter)||i.annualBandOrigin==='closed_year'&&!service)&&<fieldset key={n} className="space-y-2 rounded border p-2"><legend>Trimestre {n+1}{n+1===Number(i.quarter)?' — a apurar':' — acumulado anterior'}</legend><label className="block">Volume T{n+1} em MZN<input className="block rounded border p-2" inputMode="decimal" value={v} onChange={e=>{const a=[...i.sales] as IspcQuarterInput['sales'];a[n]=e.target.value;change({sales:a});}}/></label><label className="block">Suporte ou pressuposto T{n+1}<input className="block rounded border p-2" value={i.salesRefs[n]} onChange={e=>{const a=[...i.salesRefs] as IspcQuarterInput['salesRefs'];a[n]=e.target.value;change({salesRefs:a});}}/></label></fieldset>)}</div>
{!service&&<fieldset className="space-y-2 rounded border p-3"><legend>Escalão anual da actividade — distinto do volume de acesso</legend><p>Os limites de 1.000.000 / 2.500.000 / 4.000.000 MZN são anuais. A taxa do escalão é aplicada à base do trimestre; não dividir os limites por quatro. O excesso anual tem taxa própria de 20%.</p><label className="block">Volume anual 2026 para o escalão<input className="block rounded border p-2" value={i.annualBandVolume} onChange={e=>change({annualBandVolume:e.target.value})}/></label><label className="block">Origem da referência anual<select className="block rounded border p-2" value={i.annualBandOrigin} onChange={e=>change({annualBandOrigin:e.target.value as IspcQuarterInput['annualBandOrigin']})}><option value="">Por identificar</option><option value="forecast">Previsão expressa — simulação</option><option value="closed_year">Ano encerrado — reconciliar quatro trimestres</option></select></label><label className="block">Suporte da referência anual<input className="block rounded border p-2" value={i.annualBandRef} onChange={e=>change({annualBandRef:e.target.value})}/></label></fieldset>}
<button type="button" className="rounded bg-emerald-800 p-2 text-white" onClick={()=>{try{save(recordIspcQuarter(draft,book));}catch(e){setError(String(e));}}}>Calcular e guardar apuramento trimestral ISPC</button>
{ispcQuarterReportRows(draft).map((r,n)=><p key={n}><strong>{r[1]}:</strong> {r[2]}<small className="block">{r[3]}</small></p>)}
<p>Preparação para a declaração periódica dos artigos 10/11. Este cálculo não submete formulários nem efectua pagamentos. Retenção na fonte em aquisições ocasionais tem registo e base próprios.</p></section>;
}
@@ -0,0 +1,28 @@
import {useState} from 'react';
import {ispcEligibilityBook} from '@/lib/ispc-eligibility';
import {ispcWithholdingBook} from '@/lib/ispc-withholding';
import {decimalFraction,addFractions} from '@/lib/fiscal-rational';
import {ispcResidualBook,saveIspcResidualBook,recordIspcResidual,priorOccasionalSettlement,ispcResidualReportRows,ispcFormalPreparationHtml,type ResidualKind} from '@/lib/ispc-residuals';
export function SimulationIspcResiduals({draft,onChange}:{draft:Record<string,unknown>;onChange:(field:string,value:string)=>void}){
const[error,setError]=useState('');if(draft.fiscal_component!=='ispc')return null;
try{
const own=ispcResidualBook(draft,'occasional'),acq=ispcResidualBook(draft,'acquisitions'),formal=ispcResidualBook(draft,'formalities'),e=ispcEligibilityBook(draft),w=ispcWithholdingBook(draft);let above=false;try{const sum=addFractions([decimalFraction(w.input.base),decimalFraction(w.input.priorAnnualPurchases)]);above=BigInt(sum.numerator)>2500000n*BigInt(sum.denominator);}catch{/* Unknown is still handled in existing acquisition panel. */}
const book=(k:ResidualKind)=>k==='occasional'?own:k==='acquisitions'?acq:formal;
const change=(k:ResidualKind,p:Record<string,string>)=>{const b=book(k);onChange('modelo_a_snapshot',saveIspcResidualBook(draft,{...b,input:{...b.input,...p}}));};
const field=(k:ResidualKind,n:string,label:string,type='text')=><label key={n} className="block">{label}<input className="block rounded border p-2" type={type} value={book(k).input[n]??''} onChange={ev=>change(k,{[n]:ev.target.value})}/></label>;
const select=(k:ResidualKind,n:string,label:string,options:Array<[string,string]>)=><label key={n} className="block">{label}<select className="block rounded border p-2" value={book(k).input[n]??''} onChange={ev=>change(k,{[n]:ev.target.value})}>{options.map(([v,l])=><option key={v} value={v}>{l}</option>)}</select></label>;
const yesno=(k:ResidualKind,n:string,label:string)=>select(k,n,label,[['','Por esclarecer'],['yes','Sim'],['no','Não']]);
const save=(k:ResidualKind)=>{try{onChange('modelo_a_snapshot',saveIspcResidualBook(draft,recordIspcResidual(draft,book(k))));setError('');}catch(err){setError(String(err));}};
const activities:Array<[string,string]>=[['','Por identificar'],['forestry','Silvícola'],['fishery','Pesqueira'],['livestock','Pecuária'],['agriculture','Agrícola'],['poultry','Avícola'],['beekeeping','Apícola'],['other','Outra—fora do recorte ocasional']];
return<section aria-label="ISPC — operações ocasionais, limite e formalidades" className="space-y-4">{error&&<p role="alert">{error}</p>}
{e.input.mode==='occasional'&&<section className="space-y-3 rounded border p-4"><h4>Operações ocasionais próprias</h4><p>Percurso do vendedor ocasional, distinto da retenção feita pelo comprador. Uma retenção liberatória comprovada não gera segunda liquidação própria.</p>{select('occasional','personType','Tipo de pessoa destas operações',[['','Por identificar'],['singular','Pessoa singular'],['collective','Pessoa colectiva']])}{select('occasional','origin','Natureza dos dados',[['projected','Pressupostos de simulação'],['effective','Factos efectivos declarados']])}{field('occasional','currency','Moeda—MZN')}{field('occasional','operationDate','Data das operações','date')}{select('occasional','quarter','Trimestre2026',[['','Por identificar'],['1','1'],['2','2'],['3','3'],['4','4']])}{yesno('occasional','territory','Operação realizada em território nacional')}{yesno('occasional','noHabitual','Não exerce actividade habitual')}{yesno('occasional','sporadic','Acto não previsível nem reiterado')}{select('occasional','activity','Natureza da operação',activities)}{field('occasional','reference','Documentos ou pressupostos da operação')}{field('occasional','amount','Volume de todas estas operações do trimestre em MZN')}{select('occasional','settlement','Via aplicável',[['','Por identificar'],['self','Liquidação própria por opção ISPC'],['withheld','Retenção liberatória documentada pelo adquirente']])}
{own.input.settlement==='self'&&<>{yesno('occasional','allQuarterOperations','Inclui todas as operações ocasionais do sujeito passivo no trimestre')}{field('occasional','priorYearTurnover','Volume de referência2025 para acesso, incluindo zero expresso')}{field('occasional','priorYearRef','Suporte da referência2025')}{yesno('occasional','organizedRequired','Obrigado a contabilidade organizada para impostos sobre rendimento')}{select('occasional','option','Opção para estas operações',[['preparation','Em preparação—apenas cenário'],['opted','Opção documentada'],['not_opted','Não optou']])}{own.input.option==='opted'&&<>{field('occasional','optionRef','Referência da opção')}{field('occasional','optionDate','Data da opção','date')}</>}{field('occasional','annual2026','Volume anual2026 para escalão')}{select('occasional','annualOrigin','Origem do volume anual2026',[['','Por identificar'],['forecast','Previsão—cenário'],['closed_year','Volume anual encerrado documentado']])}{field('occasional','annualRef','Suporte ou pressuposto do volume anual2026')}{field('occasional','priorInYear','Volume de operações anteriores no ano2026')}{priorOccasionalSettlement(own)&&<><p>Existe retenção liberatória guardada para esta operação. A mudança de via não a apaga nem gera uma segunda prestação.</p>{yesno('occasional','withholdingCorrected','Retenção anterior corrigida/anulada segundo documento externo')}{field('occasional','withholdingCorrectionRef','Referência externa da correcção da retenção anterior')}</>}</>}
{own.input.settlement==='withheld'&&<>{yesno('occasional','buyerIspc','Adquirente sujeito passivo ISPC')}{yesno('occasional','unregistered','Vendedor não inscrito para tributação')}{field('occasional','buyerAnnualPurchases','Aquisições globais anuais do adquirente, incluindo estas operações')}{field('occasional','withheldActual','Montante efectivamente retido em MZN')}{field('occasional','withheldRef','Documento da retenção liberatória')}</>}
<button type="button" className="rounded border p-2" onClick={()=>save('occasional')}>Calcular e guardar operações ocasionais</button></section>}
{(above||acq.result)&&<section className="space-y-3 rounded border p-4"><h4>Aquisições acima do limite global</h4><p>Reutiliza a aquisição, os seus documentos e o acumulado global guardados acima. A parcela excedente não recebe automaticamente a taxa de 5% nem a taxa de 20% do excesso de vendas ISPC.</p>{select('acquisitions','route','Tratamento próprio da parcela excedente',[['unknown','Por identificar—mostrar parcelas sem total presumido'],['ispc_supplier','Fornecedor com opção ISPC aplicável'],['irps_isolated','Acto isolado sujeito a IRPS57(2)k']])}{acq.input.route==='ispc_supplier'&&field('acquisitions','supplierOptionRef','Referência da opção/registo do fornecedor e operações abrangidas')}{acq.input.route==='irps_isolated'&&<>{yesno('acquisitions','noIspcOnExcess','Sem opção ISPC aplicável a esta parcela, segundo documento indicado')}{yesno('acquisitions','isolatedAct','Acto isolado qualificado pelo artigo8(3h,4)doIRPS')}{yesno('acquisitions','incomeInMoz','Rendimento obtido em Moçambique')}{field('acquisitions','grossExcess','Rendimento ilíquido da parcela excedente em MZN—sem dedução de custos ou IVA')}{field('acquisitions','grossRef','Suporte da base ilíquida')}{field('acquisitions','reference','Suporte da classificação IRPS desta parcela')}</>}<button type="button" className="rounded border p-2" onClick={()=>save('acquisitions')}>Calcular e guardar parcela excedente</button></section>}
<section className="space-y-3 rounded border p-4"><h4>Formalidades de2026—preparação do B–Geral</h4><p>O Comunicado AT9/2026indica o B–Geral durante a adaptação do sistema, com pagamentos em Janeiro, Abril, Julho e Outubro. O Modelo30disponível conserva campos antigos; não os aplicamos a2026. Esta preparação não submete nem paga à AT.</p>{select('formalities','sourceKind','Cálculo a preparar',[['quarter','Trimestral habitual'],['occasional','Operações ocasionais próprias'],['acquisitions','Retenção da parcela excedente qualificada']])}{formal.input.sourceKind==='acquisitions'&&field('formalities','retentionFormRef','Modelo/código e instrução para entrega das retenções ISPC/IRPS, separados do imposto próprio')}{field('formalities','name','Nome/designação social—quadro5')}{field('formalities','nuit','NUIT—quadro3')}{field('formalities','fiscalArea','Área Fiscal/UGC—quadro3')}{field('formalities','address','Domicílio fiscal—quadro6')}{select('formalities','declaration','Tipo de declaração—quadro1',[['initial','Inicial'],['substitution','Substituição']])}{field('formalities','formMonth','Mês a inscrever no quadro2—não presumido pelo mês de pagamento')}{field('formalities','formYear','Ano a inscrever no quadro2')}{field('formalities','formPeriodRef','Instrução/correspondência usada para o período do quadro2')}{select('formalities','interestSituation','Juros compensatórios—quadro10',[['','Por esclarecer'],['none','Sem juros, segundo suporte indicado'],['amount','Montante documentado']])}{formal.input.interestSituation==='amount'&&field('formalities','interestAmount','Montante de juros documentado')}{field('formalities','interestRef','Suporte da situação dos juros')}{select('formalities','externalStatus','Histórico externo declarado',[['preparation','Em preparação'],['submitted','Submetido'],['received','Recebido pela AT'],['paid','Pagamento efectuado']])}{formal.input.externalStatus!=='preparation'&&<>{field('formalities','externalRef','Referência externa')}{field('formalities','externalDate','Data do acto externo','date')}</>}
<button type="button" className="rounded border p-2" onClick={()=>save('formalities')}>Preparar e guardar campos B–Geral</button><button type="button" className="rounded border p-2" onClick={()=>{try{const html=ispcFormalPreparationHtml(draft),url=URL.createObjectURL(new Blob([html],{type:'text/html;charset=utf-8'})),a=document.createElement('a');a.href=url;a.download='ISPC-preparacao-B-Geral.html';a.click();URL.revokeObjectURL(url);setError('');}catch(err){setError(String(err));}}}>Descarregar preparação B–Geral</button></section>
{ispcResidualReportRows(draft).map((r,n)=><p key={n}><strong>{r[1]}:</strong> {r[2]}<small className="block">{r[3]}</small></p>)}
</section>;
}catch(err){return<p role="alert">{String(err)}</p>;}
}
@@ -0,0 +1,7 @@
import {ispcEligibilityBook} from '@/lib/ispc-eligibility';
import {ispcWithholdingBook,saveIspcWithholdingBook,recordIspcWithholding,ispcWithholdingReportRows,type IspcWithholdingInput} from '@/lib/ispc-withholding';
export function SimulationIspcWithholding({draft,onChange}:{draft:Record<string,unknown>;onChange:(field:string,value:string)=>void}){
if(draft.fiscal_component!=='ispc')return null;
try{if(ispcEligibilityBook(draft).input.mode==='occasional')return<p>Retenções do adquirente:entradas preservadas. Neste percurso de vendedor ocasional,registe a retenção recebida no quadro próprio abaixo.</p>;}catch{/* Existing recovery error stays explicit. */}
try{const b=ispcWithholdingBook(draft),i=b.input,change=(p:Partial<IspcWithholdingInput>)=>onChange('modelo_a_snapshot',saveIspcWithholdingBook(draft,{...b,input:{...i,...p}}));return<section aria-label="Retenções ISPC" className="space-y-3 rounded border p-4"><h4>ISPC — retenção em aquisições ocasionais</h4><label className="block">Existem aquisições abrangidas pelo artigo 12(3–4)?<select value={i.applicable} onChange={e=>change({applicable:e.target.value as IspcWithholdingInput['applicable']})}><option value="">Por esclarecer</option><option value="no">Não</option><option value="yes">Sim — conferir condições</option></select></label>{i.applicable==='yes'&&<><p>Registe apenas aquisições do mesmo trimestre. O acumulado anterior cobre todas as aquisições desta via no ano e evita reutilizar o limite por fornecedor ou oportunidade.</p>{(['quarter','base','priorAnnualPurchases','reference'] as const).map(k=><label className="block" key={k}>{{quarter:'Trimestre de 2026',base:'Base de aquisições deste trimestre em MZN',priorAnnualPurchases:'Aquisições globais anteriores de 2026 em MZN',reference:'Suporte das aquisições e condições'}[k]}<input className="block rounded border p-2" value={i[k]} onChange={e=>change({[k]:e.target.value})}/></label>)}{(['naturalOccasional','unregistered','related']as const).map(k=><label className="block" key={k}>{{naturalOccasional:'Fornecedor pessoa singular ocasional abrangido por 3(3–4)',unregistered:'Fornecedor não inscrito para tributação',related:'Bens relacionados com a actividade do adquirente'}[k]}<select value={i[k]} onChange={e=>change({[k]:e.target.value})}><option value="">Por esclarecer</option><option value="yes">Sim</option><option value="no">Não</option></select></label>)}<label className="block">Actividade da operação ocasional<select value={i.activity} onChange={e=>change({activity:e.target.value as IspcWithholdingInput['activity']})}>{[['','Por identificar'],['forestry','Silvícola'],['fishery','Pesqueira'],['livestock','Pecuária'],['agriculture','Agrícola'],['poultry','Avícola'],['beekeeping','Apícola'],['other','Outra']].map(([v,l])=><option key={v} value={v}>{l}</option>)}</select></label></>}<button type="button" className="rounded border p-2" onClick={()=>onChange('modelo_a_snapshot',saveIspcWithholdingBook(draft,recordIspcWithholding(draft,b)))}>Conferir e guardar retenção ISPC</button>{ispcWithholdingReportRows(draft).map((r,n)=><p key={n}><strong>{r[1]}:</strong> {r[2]}<small className="block">{r[3]}</small></p>)}</section>;}catch(e){return<p role="alert">{String(e)}</p>;}
}

Some files were not shown because too many files have changed in this diff Show More