From 63cc336787cade92fb7ee5b2b2d407308a0cf66b Mon Sep 17 00:00:00 2001 From: nala Date: Sun, 25 Oct 2026 00:08:02 +0200 Subject: [PATCH] docs(iva): prepare joint P122-P128 delivery after backup and isolated restore --- .../l1-g10-own-name-delivery-20261025.json | 136 ++++++++++++++++++ ...-own-name-readonly-rollback-20261025.patch | 10 ++ 2 files changed, 146 insertions(+) create mode 100644 docs/investmoz/simulations/l1-g10-own-name-delivery-20261025.json create mode 100644 docs/investmoz/simulations/l1-g10-own-name-readonly-rollback-20261025.patch diff --git a/docs/investmoz/simulations/l1-g10-own-name-delivery-20261025.json b/docs/investmoz/simulations/l1-g10-own-name-delivery-20261025.json new file mode 100644 index 00000000..c82dee02 --- /dev/null +++ b/docs/investmoz/simulations/l1-g10-own-name-delivery-20261025.json @@ -0,0 +1,136 @@ +{ + "status": "ready_after_fresh_authenticated_preflight_and_verified_backup_restore", + "candidate": "af7d2503207c8744cdbb6d96b8cca89fa367384e", + "base_installed": "2fdca86367d8bad524113b4cf6c49a0110130be9", + "coverage_complete_branches": { + "AUD-SIM-L1-P122": [ + "goods_sale_commission", + "goods_purchase_commission" + ], + "AUD-SIM-L1-P128": [ + "service_sale_mandate", + "service_purchase_mandate" + ] + }, + "branch_count_complete": 2, + "treatment_count": 4, + "runtime_delta": [ + { + "path": "resources/js/lib/iva-own-name.ts", + "sha256_LF": "c36509de24d31d747d91630a31ce7d72baa749e9928b718a944556348fc54f85" + }, + { + "path": "resources/js/components/simulation-own-name.tsx", + "sha256_LF": "6e142242aa29ae07e36b4d8d0be7d78f770d701e0a92e1a6e9832fcb794c17cf" + }, + { + "path": "resources/js/components/simulation-monthly-iva.tsx", + "sha256_LF": "9718dc440aa98497011775d8bd03049d7857fa3badf27f4467d6d434f642defd" + }, + { + "path": "resources/js/lib/project-dossier.ts", + "sha256_LF": "099dc307a86c763a9509516f6d59cc5c454b1f81189cc04b919d8d6045baf9dc" + } + ], + "counts_before": { + "delivered": 107, + "QA": 2, + "functional_pending": 23, + "documentary": 1, + "total": 133 + }, + "counts_current": { + "delivered": 107, + "QA": 2, + "functional_pending": 23, + "documentary": 1, + "total": 133 + }, + "counts_after_delivery": { + "delivered": 109, + "QA": 0, + "functional_pending": 23, + "documentary": 1, + "total": 133 + }, + "QA_proofs_reused": [ + "iva-l1-g10-own-name-qa-20261025.json" + ], + "authorization": "Tempo explicitly requests one joint delivery ofaf7d2503,P122/P128,main compatibility/concurrent changes preserved,installeddelta only", + "scope": "2026,circuitos emnome próprio,partes/contratos/objectos econtraprestações originais das duas relações. Sem soma/compensação automática,base tributável nova,localização,isenção,taxa,IVA,dedução/campo11 ou totaisModeloA. Sem conversão cambial;moeda original identificada e coerente com contexto. P091preservado,sem repetir aceitação/cálculo.", + "source": "CIVA3(3)c,Lei13/2016PDF6/p1426(264);4(3),PDF7/p1426(265). Lei22/2022não altera3/4;Lei10/2025PDF12mantém3(3)c e não altera4. Base15(2)e/P091já entregue permanece independente;sem nova aplicação da base neste incremento.", + "meaning": { + "P122": "Transferências de bens em execução de contrato de comissão,incluindo consignação;na venda comissário considerado comprador,na compra comitente considerado comprador. Venda:comitente→comissário→terceiro;compra:terceiro→comissário→comitente. Contraprestações e referências das duas relações separadas.", + "P128": "Serviço efectuado por intervenção de mandatário emnome próprio:mandatário considerado adquirente eprestador sucessivamente4(3). Venda/prestação:mandante→mandatário→terceiro;compra/aquisição:terceiro→mandatário→mandante. Não é mera intermediação emnome de outrem ou base15(2)e de bens." + }, + "formula": "Classifytwo successive relations bykind/direction;keep eachoriginalconsideration separate;no monetaryaggregation or taxcalculation.", + "preservation": "107prior closures and partialP084/P085 preserved;accepted perbranchQA reused;one integration/backup/real isolatedrestore/check for whole set", + "partial_P084_P085": "Preparation/conditional simulation only,benefits pending;no closure", + "limits": "L1open;deductionoutsideincrement;P00105/06;P121digital/P084/P085pending;beveragesL2/L3;Statistics/AIdeferred", + "containment": "l1-g10-own-name-readonly-rollback-20261025.patch,checked only,not applied;blocks newP096–099classifications,preserves readers/history/otherbranches", + "authenticated_preflight": { + "installed": { + "status": "installed", + "commit": "2fdca86367d8bad524113b4cf6c49a0110130be9", + "release": "/var/www/investmoz-homologacao/releases/2fdca86367d8bad524113b4cf6c49a0110130be9-c65ebbad", + "previous_release": "/var/www/investmoz-homologacao/releases/2a7254406db3aa6e8c71bfbaf56bbcda1f139d19-ae306e0a", + "database_migrations": 0, + "content_imports": 0 + }, + "current_link": "/var/www/investmoz-homologacao/releases/2fdca86367d8bad524113b4cf6c49a0110130be9-c65ebbad", + "release_revision": { + "commit": "2fdca86367d8bad524113b4cf6c49a0110130be9", + "branch": "main", + "built_at": "2026-10-24T22:01:48.219730+00:00", + "manifest_sha256": "d45edd81644fa6b659aece95804fd9c5e8e99c599ef82bf078ee2ba39e700f12" + }, + "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" + }, + "backup_restore": { + "backup": { + "stage": "/var/backups/investmoz-l1-g10-own-name-delivery-20261025/backup", + "target": { + "database": "teste_investidor", + "port": 5432 + }, + "tables": 174, + "files_verified": 369, + "dump_sha256": "85e90033b54a7eb7fed1bf0de466b984f5c03cc3b4938b5d8db20b7bf0abf954", + "files_sha256": "291e2c871d94c3b642252f8daa8a9d7557278f13028e68df78b5f6edec5b1234", + "restore_verified": false + }, + "restore": { + "restore_verified": true, + "tables_verified": 174, + "container_network": "none", + "database": "l1_g10_own_name_restore_20261024", + "port": 55441, + "source_dump_sha256": "85e90033b54a7eb7fed1bf0de466b984f5c03cc3b4938b5d8db20b7bf0abf954", + "active_database_writes": 0 + } + } +} diff --git a/docs/investmoz/simulations/l1-g10-own-name-readonly-rollback-20261025.patch b/docs/investmoz/simulations/l1-g10-own-name-readonly-rollback-20261025.patch new file mode 100644 index 00000000..8f9a6715 --- /dev/null +++ b/docs/investmoz/simulations/l1-g10-own-name-readonly-rollback-20261025.patch @@ -0,0 +1,10 @@ +--- a/resources/js/lib/iva-own-name.ts ++++ b/resources/js/lib/iva-own-name.ts +@@ -45,6 +45,7 @@ + function key(draft:Record,book:OwnNameBook):string{return JSON.stringify({version:ownNameVersion,scope:acquisitionScope(draft),location:draft.selection_labels??{},currency:draft.currency,rows:book.rows});} + export function ownNameCurrent(draft:Record,book:OwnNameBook):boolean{return!!book.result&&book.result.sourceKey===key(draft,book);} + export function recordOwnNames(draft:Record,book:OwnNameBook):OwnNameBook{ ++ throw new Error('Novas classificações P122/P128 temporariamente suspensas; dados, histórico, relatórios e restantes ramos preservados.'); + if(!book.rows.length||new Set(book.rows.map(row=>row.id)).size!==book.rows.length)throw new Error('Indique operações com identificadores distintos;originais conservados.'); + const result:OwnNameCalculation={version:ownNameVersion,revision:(book.result?.revision??0)+1,calculatedAt:new Date().toISOString(),opportunity:acquisitionScope(draft),location:JSON.stringify(draft.selection_labels??{}),sourceKey:key(draft,book),source:ownNameSource,inputs:structuredClone(book.rows),rows:book.rows.map(row=>evaluateOwnName(row,draft.currency))}; + const next={...book,result,history:[...(book.history??[]),...(book.result?[book.result]:[])]};saveOwnNameBook(draft,next);return next;