✔ D5.3.17 links verification photos to the verification visit (0.186384ms) ✔ F4 requires every linked verification result before closing the inspection, not before locking one act (0.128807ms) ✔ D5.3.17 moves verified conforming findings into an office ready-to-close queue (0.077018ms) ✔ D5.3.17 migration adds verification outcome and verification evidence linkage (0.078991ms) ✔ D5.3.18.3 separates finding closure from general follow-up permission (1.753099ms) ✔ D5.3.18.3 keeps the first company response immutable and requires later presentations in history (0.154255ms) ✔ D5.3.18 exposes one server-side office workflow for the finding dossier (0.791059ms) ✔ D5.3.18 preserves administrative and operational dates as independent fields (0.129097ms) ✔ D5.3.19 adds one searchable common name without replacing technical identity (1.067701ms) ✔ D5.3.19 stores the administrative response rule and its immutable base (0.233017ms) ✔ D5.3.19 exposes company area inspector and date filters across operational lists (0.256132ms) ✔ F1.1 supersedes the historical single-act rule while retaining the D5.3.19 filters (0.10497ms) ✔ D5.3.19 does not introduce the contextual finding catalog before its office definition (0.147514ms) ✔ D5.3.20/F4 freezes one report from each sealed act and generates its Word artifact (0.813973ms) ✔ D5.3.20 stores an integrity-checked Word artifact without changing the frozen source snapshot (0.220287ms) ✔ D5.3.20 builds OOXML Word from the frozen act snapshot without external document dependencies (0.175678ms) ✔ F4 keeps report generation act-scoped while findings and inspection lifecycle remain independent (0.145412ms) ✔ D5.3.21/F4 stores configurable recipients without hardcoding addresses and retires Director delivery (0.835037ms) ✔ D5.3.21 creates an immutable act PDF and separates its delivery from the editable INF Word (0.141446ms) ✔ D5.3.21 keeps an auditable retryable outbox with explicit waiting states (0.095255ms) ✔ F4 SMTP can be administered in database while retaining environment fallback (0.117239ms) ✔ D5.3.21/F4 delivery stays act-scoped after multiple acts per inspection (0.207949ms) ✔ D5.3.22 revision ledger is retained as historical INF versioning (1.145702ms) ✔ F4 explicitly retires Director review approval and final-signature state (0.381583ms) ✔ F4 removes active Director endpoints but preserves historical signature evidence (0.556661ms) ✔ F4 replaces Director approval with editable INF then immutable GEDO IF officialization (0.205724ms) ✔ F4 delivery has no Director recipient while preserving company office and inspector copies (0.103569ms) ✔ F4 Director-retirement rollback reconstructs schema and RBAC contract without inventing deleted data (0.077909ms) ✔ F4 document workflow changes do not reopen acts or mutate finding history (0.165553ms) ✔ D5.3.23 records field discoveries as auditable provisional inventory records (1.023465ms) ✔ D5.3.23 only lets a mobile assigned inspector create during an active visit (0.15026ms) ✔ F1.1 preserves D5.3.23 field discovery while linking only to the current draft act (0.218765ms) ✔ D5.3.23 office review can approve match or reject without deleting historical objects (0.212745ms) ✔ D5.3.23 preserves immutable inspection history when matching an existing inventory object (0.159754ms) ✔ D5.3.24 stores parent area and operator as explicit non-overlapping temporal context (1.200595ms) ✔ D5.3.24 reconstructs previous context from immutable asset versions during migration (0.297845ms) ✔ D5.3.24 separates ordinary editing from an audited context transfer (0.16378ms) ✔ D5.3.24 closes the previous interval and appends the replacement without deleting history (0.285836ms) ✔ D5.3.24 temporal reconstruction resolves context by effective validity at the requested instant (0.113304ms) ✔ D5.3.25 creates an append-only verification event ledger and reconstructs prior history (3.110895ms) ✔ D5.3.25 records every office control-date change without replacing historical events (0.19615ms) ✔ D5.3.25 makes one field result immutable and appends its result event (0.264204ms) ✔ D5.3.25 preserves successive verification visits as separate historical attempts (0.131561ms) ✔ D5.3.25 exposes the complete verification history through finding detail and a dedicated endpoint (0.14329ms) ✔ D5.3.3 separates operational state from data quality and adds registry structures (8.844752ms) ✔ D5.3.3 keeps physical hierarchy separate from legal and organizational relations (6.984496ms) ✔ D5.3.3 only accepts OPERATOR relations for exclusive asset assignment (5.485155ms) ✔ D5.4.1 exports controller-visible selection views so Nest declaration build can name them (0.66722ms) ✔ D5.4 models type applicability and concrete Inventory exceptions separately (0.977385ms) ✔ D5.4 exposes only applicable catalog items and enforces the same rule on field creation (0.238134ms) ✔ D5.4 stores suggested and actual severity independently on the 1 to 10 scale (0.322104ms) ✔ D5.4 turns OTHER into an office proposal without rewriting the original finding (0.13761ms) ✔ D5.4 keeps contextual catalog administration in office permissions and audited routes (0.104139ms) ✔ D5.5 stores explicit Area and Operator context plus append-only checklist generations (1.188746ms) ✔ D5.5 exposes Area then active OPERATOR choices and a server-generated planning checklist (0.349104ms) ✔ D5.5 classifies antecedents overdue items and next controls while adding actionable assets automatically (0.235981ms) ✔ D5.5 treats manual additions as preventive and requires an auditable reason for exclusions (0.618346ms) ✔ D5.5/F4 keeps verification visits inside the Area Operator contract and start remains APK-only (0.250322ms) ✔ D5.5/F4 requires a current checklist before planning or start and keeps start under mobile policy (0.261559ms) ✔ D5.6.1 exposes controlled administrative password reset with the existing user-update permission (1.38029ms) ✔ D5.6.1 resets lockout revokes sessions and audits without persisting the password value (0.272467ms) ✔ D5.6.4/F4 generates inspection codes server-side with an annual transactional sequence (1.220626ms) ✔ D5.6.4/F4 creates one inspection from Area Operator, start and lead inspector without legacy title or end date (0.342003ms) ✔ D5.6.4 assigns the lead inspector and generates the checklist in the same creation transaction (0.165403ms) ✔ D5.6.4/F4 uses the same inspection numbering and start-only planning for verification visits (0.298706ms) ✔ D5.6 immutable act closure survives F4 as LOCKED then SEALED (2.366678ms) ✔ D5.6 preserves findings responses evidence and verification history as non destructive follow-up (0.476599ms) ✔ D5.6 keeps Inventory temporal context and contextual finding applicability independent and historical (0.356185ms) ✔ F4 preserves reviewed web planning and APK-only inspection execution (1.471249ms) ✔ D5.6 report generation remains attached to sealing each act (0.341972ms) ✔ F4 replaces Director approval with editable INF then immutable GEDO IF officialization (1.425099ms) ✔ F4 keeps auditable delivery, removes Director recipient and makes SMTP administrable (0.284435ms) ✔ D5.6 remains a historical closure baseline while Phase F introduces explicit migrations (0.838602ms) ✔ F1.1/F4 allows many acts per inspection while keeping only one draft at a time (1.028463ms) ✔ F1.1/F4 preserves exactly one frozen report per act instead of per inspection (0.26781ms) ✔ F4 seals one act without closing its parent inspection (0.374532ms) ✔ F4 closes an inspection only after every non-cancelled act is sealed (0.199906ms) ✔ F4 requires exactly one terminal company outcome before an act can be sealed (0.191964ms) ✔ F1.1/F4 keeps field-created Inventory linked only to the current draft act (0.187587ms) ✔ F1.2 stores one append-only administrative deadline ledger per Act (1.135927ms) ✔ F1.2 preserves ambiguous historical finding deadlines instead of collapsing them (0.184592ms) ✔ F1.2 stores company responses and protected PDF metadata at Act level (0.098081ms) ✔ F1.2 deadline and company response DTOs reject invalid office input (5.410822ms) ✔ F1.2 derives administrative queues from Acts instead of replacing finding history (0.23575ms) ✔ F1.3 agrupa pendientes de campo por Acta y Hallazgo (0.730757ms) ✔ F1.3 expone el briefing para una inspección planificada (0.245925ms) ✔ F1.3 no usa el plazo del Hallazgo como plazo administrativo (0.171853ms) ✔ F4 removes the Survey execution controller from the active API (2.001739ms) ✔ F4 removes Survey execution and review permissions from active authorization (0.291987ms) ✔ F4 removes Survey execution DTOs together with the retired endpoint surface (1.035854ms) ✔ F4 drops Survey report tables without CASCADE so unexpected dependencies stop migration (0.276623ms) ✔ F4 rollback can reconstruct the historical Survey report integrity rules (0.197923ms) ✔ F4 removes Survey planning controllers from the active API (1.048413ms) ✔ F4 removes Survey planning permissions and their role bindings (0.251394ms) ✔ F4 rollback retains the former role-permission map only as a reversible migration path (0.095396ms) ✔ F4 removes Survey planning DTOs from the active code surface (3.131266ms) ✔ F4 drops Survey planning tables after removing their permissions (0.249933ms) ✔ F4 rollback can reconstruct historical Survey planning dates and asset references (0.175709ms) ✔ TokenService issues and verifies access tokens (15.074774ms) ✔ TokenService rotates opaque refresh credentials without storing plaintext (3.716691ms) ℹ tests 448 ℹ suites 0 ℹ pass 448 ℹ fail 0 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 67661.42495 ========== BUILD WEB CANDIDATA ========== #0 building with "default" instance using docker driver #1 [internal] load build definition from Dockerfile #1 transferring dockerfile: 355B done #1 DONE 0.0s #2 [internal] load metadata for docker.io/library/nginx:alpine #2 ... #3 [internal] load metadata for docker.io/library/node:24-alpine #3 DONE 0.5s #2 [internal] load metadata for docker.io/library/nginx:alpine #2 DONE 0.8s #4 [internal] load .dockerignore #4 transferring context: 75B done #4 DONE 0.0s #5 [internal] load build context #5 DONE 0.0s #6 [builder 1/8] FROM docker.io/library/node:24-alpine@sha256:50c8e8ca1d27439048670df5883f32d57cf81cff6233222c893fd0d9884cbd81 #6 resolve docker.io/library/node:24-alpine@sha256:50c8e8ca1d27439048670df5883f32d57cf81cff6233222c893fd0d9884cbd81 0.0s done #6 DONE 0.0s #7 [stage-1 1/3] FROM docker.io/library/nginx:alpine@sha256:72ba65eb42c10344912a84ff42408db7d34f2feb642204570ab8fc5ffd29f1d3 #7 resolve docker.io/library/nginx:alpine@sha256:72ba65eb42c10344912a84ff42408db7d34f2feb642204570ab8fc5ffd29f1d3 0.0s done #7 DONE 0.0s #5 [internal] load build context #5 transferring context: 1.24MB 0.0s done #5 DONE 0.1s #8 [builder 4/8] RUN npm ci #8 CACHED #9 [builder 5/8] COPY tsconfig*.json vite.config.ts index.html ./ #9 CACHED #10 [builder 7/8] COPY src ./src #10 CACHED #11 [stage-1 2/3] COPY nginx/default.conf /etc/nginx/conf.d/default.conf #11 CACHED #12 [builder 2/8] WORKDIR /app #12 CACHED #13 [builder 6/8] COPY public ./public #13 CACHED #14 [builder 3/8] COPY package*.json ./ #14 CACHED #15 [builder 8/8] RUN npm run build #15 CACHED #16 [stage-1 3/3] COPY --from=builder /app/dist /usr/share/nginx/html #16 CACHED #17 exporting to image #17 exporting layers done #17 exporting manifest sha256:1704f6185228a186f2b5e5319bb34bd0cf859c159e3944ee94586e269b11a45d done #17 exporting config sha256:4546be2b3c45839cd9f696532c385f781e80baadfd9a56162c454935f52b3582 done #17 exporting attestation manifest sha256:6c981554f4adc9ae0d18b2267c7cc68c1140994a1d9c04f3c43cd3956fc57ae7 0.0s done #17 exporting manifest list sha256:08da917f5db55739e7cc59913ac59d1e150ebe160342e2cd4209343abb0d1097 0.0s done #17 naming to docker.io/library/dhv2-web:gitea-20260915_001633 #17 naming to docker.io/library/dhv2-web:gitea-20260915_001633 done #17 unpacking to docker.io/library/dhv2-web:gitea-20260915_001633 0.1s done #17 DONE 0.3s ========== BACKUP PRE ========== database-before.dump: OK source-before.tar.gz: OK .env: OK previous.sha: OK target.sha: OK docker-before.txt: OK ========== FAST-FORWARD ========== a2ec846 fix(mobile): stabilize finding creation and narrow-screen actions Updating 9eef156..a2ec846 Fast-forward android-app/RELEASE.md | 14 +++++--- android-app/app/build.gradle.kts | 4 +-- .../dhinspeccion/ui/FieldFindingScreen.kt | 18 +++++++++-- .../korexlabs/dhinspeccion/ui/MobileHomeScreen.kt | 29 +++++++++++------ .../korexlabs/dhinspeccion/ReleaseMetadataTest.kt | 4 +-- api-v3/package-lock.json | 4 +-- api-v3/package.json | 2 +- .../inspection-findings.service.ts | 11 ++++--- api-v3/src/version.ts | 2 +- api-v3/test/unit/f4-health-metadata.test.ts | 2 +- api-v3/test/unit/f5-android-test-cut.test.ts | 4 +-- .../unit/f6-6-mobile-finding-resilience.test.ts | 37 ++++++++++++++++++++++ 12 files changed, 100 insertions(+), 31 deletions(-) create mode 100644 api-v3/test/unit/f6-6-mobile-finding-resilience.test.ts ========== BUILD PRODUCCIÓN ========== Image dhv2-migrate Building Image dhv2-api Building Image dhv2-web Building #1 [internal] load local bake definitions #1 reading from stdin 1.35kB done #1 DONE 0.0s #2 [web internal] load build definition from Dockerfile #2 transferring dockerfile: 428B done #2 DONE 0.0s #3 [api internal] load build definition from Dockerfile #3 transferring dockerfile: 595B done #3 DONE 0.0s #4 [web internal] load metadata for docker.io/library/node:24-alpine #4 DONE 0.3s #5 [migrate internal] load .dockerignore #5 transferring context: 147B done #5 DONE 0.0s #6 [api internal] load build context #6 DONE 0.0s #7 [web internal] load metadata for docker.io/library/nginx:alpine #7 DONE 0.3s #8 [migrate builder 1/7] FROM docker.io/library/node:24-alpine@sha256:50c8e8ca1d27439048670df5883f32d57cf81cff6233222c893fd0d9884cbd81 #8 resolve docker.io/library/node:24-alpine@sha256:50c8e8ca1d27439048670df5883f32d57cf81cff6233222c893fd0d9884cbd81 0.0s done #8 DONE 0.0s #9 [web internal] load .dockerignore #9 transferring context: 148B done #9 DONE 0.0s #8 [web builder 1/7] FROM docker.io/library/node:24-alpine@sha256:50c8e8ca1d27439048670df5883f32d57cf81cff6233222c893fd0d9884cbd81 #8 resolve docker.io/library/node:24-alpine@sha256:50c8e8ca1d27439048670df5883f32d57cf81cff6233222c893fd0d9884cbd81 0.0s done #8 DONE 0.1s #6 [api internal] load build context #6 ... #10 [web internal] load build context #10 transferring context: 1.25MB 0.1s done #10 DONE 0.1s #11 [web stage-1 1/3] FROM docker.io/library/nginx:alpine@sha256:72ba65eb42c10344912a84ff42408db7d34f2feb642204570ab8fc5ffd29f1d3 #11 resolve docker.io/library/nginx:alpine@sha256:72ba65eb42c10344912a84ff42408db7d34f2feb642204570ab8fc5ffd29f1d3 0.1s done #11 DONE 0.2s #12 [web stage-1 2/3] COPY nginx/default.conf /etc/nginx/conf.d/default.conf #12 CACHED #13 [web builder 2/7] WORKDIR /app #13 CACHED #14 [web builder 3/8] COPY package*.json ./ #14 CACHED #15 [web builder 8/8] RUN npm run build #15 CACHED #16 [web builder 4/8] RUN npm ci #16 CACHED #17 [web builder 5/8] COPY tsconfig*.json vite.config.ts index.html ./ #17 CACHED #18 [web builder 6/8] COPY public ./public #18 CACHED #19 [web builder 7/8] COPY src ./src #19 CACHED #6 [api internal] load build context #6 transferring context: 2.63MB 0.2s done #6 DONE 0.3s #20 [web stage-1 3/3] COPY --from=builder /app/dist /usr/share/nginx/html #20 CACHED #21 [migrate runner 2/7] RUN apk add --no-cache unzip #21 CACHED #13 [web builder 2/7] WORKDIR /app #13 CACHED #22 [migrate runner 3/7] WORKDIR /app #22 CACHED #23 [web] exporting to image #23 exporting layers done #23 exporting manifest sha256:f6a73850db7dbd52ba581378c153449299ae41ed0104b817a1249e03f7c4cb5d done #23 exporting config sha256:87fc2c8ecaf5028743b53e810dfeea961fb94aafb6966b1fa5fc33f6ab47014a done #23 exporting attestation manifest sha256:57037a4f224b2ad671143e831bad3c2f60046b617153849fc825a9ddabd216b3 0.0s done #23 exporting manifest list sha256:96d222fd21060d6f9c4ff25cca367b68d1a758b4c6da087b5df305f1c5f91552 #23 exporting manifest list sha256:96d222fd21060d6f9c4ff25cca367b68d1a758b4c6da087b5df305f1c5f91552 0.1s done #23 naming to docker.io/library/dhv2-web:latest done #23 unpacking to docker.io/library/dhv2-web:latest 0.0s done #23 DONE 0.3s #24 [migrate builder 3/7] COPY package*.json ./ #24 DONE 0.2s #25 [migrate runner 4/7] COPY package*.json ./ #25 DONE 0.2s #26 [migrate runner 5/7] RUN npm ci --omit=dev && npm cache clean --force #26 ... #27 [web] resolving provenance for metadata file #27 DONE 0.2s #28 [migrate builder 4/7] RUN npm ci #28 ... #26 [migrate runner 5/7] RUN npm ci --omit=dev && npm cache clean --force #26 5.958 npm warn deprecated glob@10.5.0: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me #26 10.51 #26 10.51 added 245 packages, and audited 246 packages in 10s #26 10.51 #26 10.52 72 packages are looking for funding #26 10.52 run `npm fund` for details #26 10.52 #26 10.52 found 0 vulnerabilities #26 10.52 npm warn install-scripts 1 package has install scripts not yet covered by allowScripts: #26 10.52 npm warn install-scripts argon2@0.45.1 (install: cross-env ZERO_AR_DATE=1 node-gyp-build) #26 10.52 npm warn install-scripts #26 10.52 npm warn install-scripts Run `npm install-scripts ls` to review, or `npm install-scripts approve ` to allow. #26 10.53 npm notice #26 10.53 npm notice New major version of npm available! 11.19.0 -> 12.0.2 #26 10.53 npm notice Changelog: https://github.com/npm/cli/releases/tag/v12.0.2 #26 10.53 npm notice To update run: npm install -g npm@12.0.2 #26 10.53 npm notice #26 10.83 npm warn using --force Recommended protections disabled. #26 DONE 11.8s #28 [migrate builder 4/7] RUN npm ci #28 8.929 npm warn deprecated glob@10.5.0: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me #28 14.15 #28 14.15 added 440 packages, and audited 441 packages in 13s #28 14.15 #28 14.15 105 packages are looking for funding #28 14.15 run `npm fund` for details #28 14.15 #28 14.15 2 high severity vulnerabilities #28 14.15 #28 14.15 To address all issues, run: #28 14.15 npm audit fix #28 14.15 #28 14.15 Run `npm audit` for details. #28 14.16 npm warn install-scripts 2 packages have install scripts not yet covered by allowScripts: #28 14.16 npm warn install-scripts argon2@0.45.1 (install: cross-env ZERO_AR_DATE=1 node-gyp-build) #28 14.16 npm warn install-scripts esbuild@0.28.2 (postinstall: node install.js) #28 14.16 npm warn install-scripts #28 14.16 npm warn install-scripts Run `npm install-scripts ls` to review, or `npm install-scripts approve ` to allow. #28 14.16 npm notice #28 14.16 npm notice New major version of npm available! 11.19.0 -> 12.0.2 #28 14.16 npm notice Changelog: https://github.com/npm/cli/releases/tag/v12.0.2 #28 14.16 npm notice To update run: npm install -g npm@12.0.2 #28 14.16 npm notice #28 DONE 14.8s #29 [api builder 5/7] COPY nest-cli.json tsconfig.json ./ #29 DONE 0.3s #30 [migrate builder 6/7] COPY src ./src #30 DONE 0.2s #31 [api builder 7/7] RUN npm run build #31 0.478 #31 0.478 > dhv2-api@0.29.0-6 build #31 0.478 > nest build #31 0.478 #31 DONE 13.2s #32 [api runner 6/7] COPY --from=builder /app/dist ./dist #32 DONE 0.4s #33 [migrate runner 7/7] RUN mkdir -p /app/storage/asset-media/imports && chown -R node:node /app/storage #33 DONE 0.4s #34 [migrate] exporting to image #34 exporting layers #34 exporting layers 4.6s done #34 exporting manifest sha256:4ab240b7bfbfb806c2997219053c780169db78ab052bb941fda9a6f2b52c349e 0.0s done #34 exporting config sha256:333faf56c76e3127a28b3cb1ff8da771170d3d7091b2e4f8673ceb01f35a59b5 0.0s done #34 exporting attestation manifest sha256:c421a1116adca0abaa1f29087b94076708690227e5bd0964a4fb93c5144325f5 #34 exporting attestation manifest sha256:c421a1116adca0abaa1f29087b94076708690227e5bd0964a4fb93c5144325f5 0.1s done #34 exporting manifest list sha256:f90def5c9c1cae3513c947694c51ab57fb5abff0b476b0d7ad8f264861f43a27 0.0s done #34 naming to docker.io/library/dhv2-migrate:latest done #34 unpacking to docker.io/library/dhv2-migrate:latest #34 unpacking to docker.io/library/dhv2-migrate:latest 2.8s done #34 DONE 7.6s #35 [api] exporting to image #35 exporting layers 4.6s done #35 exporting manifest sha256:893b86b5775c585ec30f499b88ce6a3645afe73eae836357c89bd47ef1e73f38 0.0s done #35 exporting config sha256:93c2550459c3e26c98acaeb8878dd9b662e24f2dd4cb0658d55709f043de3a4e 0.0s done #35 exporting attestation manifest sha256:c543f871add58495e7044adceb1299242a464f1ca36da56f7ebc837d700951b3 0.1s done #35 exporting manifest list sha256:8e7eb0f81e113e07346ad17496d18947614346f016a1d2da9fd5fcf48fc1f3e1 0.0s done #35 naming to docker.io/library/dhv2-api:latest done #35 unpacking to docker.io/library/dhv2-api:latest 2.8s done #35 DONE 7.6s #36 [api] resolving provenance for metadata file #36 ... #37 [migrate] resolving provenance for metadata file #37 DONE 0.1s #36 [api] resolving provenance for metadata file #36 DONE 0.2s Image dhv2-web Built Image dhv2-api Built Image dhv2-migrate Built ========== MIGRACIONES ========== Container dhv2-db Running Container dhv2-db Waiting Container dhv2-db Healthy Container dhv2-migrate-run-1290971d9cd1 Creating Container dhv2-migrate-run-1290971d9cd1 Created > dhv2-api@0.29.0-6 migration:run > node dist/database/migration-cli.js run Applied migrations: 0 npm notice npm notice New major version of npm available! 11.19.0 -> 12.0.2 npm notice Changelog: https://github.com/npm/cli/releases/tag/v12.0.2 npm notice To update run: npm install -g npm@12.0.2 npm notice Container dhv2-db Running Container dhv2-db Waiting Container dhv2-db Healthy Container dhv2-migrate-run-d5ca2ae6b9e4 Creating Container dhv2-migrate-run-d5ca2ae6b9e4 Created > dhv2-api@0.29.0-6 migration:show > node dist/database/migration-cli.js show Pending migrations: no npm notice npm notice New major version of npm available! 11.19.0 -> 12.0.2 npm notice Changelog: https://github.com/npm/cli/releases/tag/v12.0.2 npm notice To update run: npm install -g npm@12.0.2 npm notice ========== RECREATE API + WEB ========== Container dhv2-api Recreate Container dhv2-api Recreated Container dhv2-web Recreate Container dhv2-web Recreated Container dhv2-api Starting Container dhv2-api Started Container dhv2-web Starting Container dhv2-web Started ========== HEALTH ========== {"status":"ok","service":"dhv2-api","api":"v3","version":"0.29.0-6","phase":"F6.2","database":"ok","time":"2026-09-15T03:18:57.644Z","latencyMs":4} ========== VERIFICACIÓN FINAL ========== NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS dhv2-api dhv2-api "docker-entrypoint.s…" api 4 seconds ago Up 2 seconds 127.0.0.1:3101->3000/tcp dhv2-db postgis/postgis:16-3.5 "docker-entrypoint.s…" db 4 weeks ago Up 4 weeks (healthy) 5432/tcp dhv2-web dhv2-web "/docker-entrypoint.…" web 3 seconds ago Up 2 seconds 127.0.0.1:8182->80/tcp Servicios críticos: OK database-before.dump: OK source-before.tar.gz: OK .env: OK previous.sha: OK target.sha: OK docker-before.txt: OK database-after.dump: OK deployed.sha: OK deployed-versions.txt: OK health.json: OK migrations.txt: OK docker-after.txt: OK ============================================================ DH V2 · DEPLOY OK ============================================================ Commit: a2ec8467218e974c7629fada18edc3abfafd8368 API: 0.29.0-6 WEB: 0.23.0-3 Backup: /root/DH_V2_BACKUPS/GITEA_DEPLOY_20260915_001633 ============================================================