✔ operational inspection writes accept inspector bearer users (0.273448ms) ✔ PasswordService hashes with Argon2id and verifies safely (460.566293ms) ✔ PasswordService performs dummy verification for unknown users (144.512495ms) ✔ PermissionsGuard leaves handlers without requirements available (2.8908ms) ✔ PermissionsGuard gives explicit public metadata priority (1.252806ms) ✔ PermissionsGuard returns 401 when required permissions have no principal (1.744788ms) ✔ PermissionsGuard returns 403 when any required permission is missing (0.315884ms) ✔ PermissionsGuard requires changing a temporary password first (0.28783ms) ✔ PermissionsGuard authorizes when class and handler permissions are granted (0.106463ms) ✔ PermissionsGuard applies class requirements to every handler (0.081335ms) ✔ D5.3.15/F4 exposes global acts and report emission after an Act is SEALED (1.010505ms) ✔ D5.3.15/F4 freezes the immutable sealed Act snapshot as the INF source (0.232515ms) ✔ D5.3.15 frozen source guarantees survive while F4 expands report workflow states (0.125663ms) ✔ D5.3.16/F4 builds the verification queue from the next control date and unresolved latest result (1.108755ms) ✔ D5.3.16 creates one draft verification visit for one company and area (0.142598ms) ✔ D5.3.16 prevents an open finding from being scheduled into two active verification visits (0.084699ms) ✔ D5.3.16 exposes linked findings in the created visit (0.076337ms) ✔ D5.3.16 migration adds traceable verification links and an office planning permission (0.148007ms) ✔ D5.3.17 records one controlled field result for a linked verification finding (0.927046ms) ✔ D5.3.17 preserves the original target and only reschedules when explicitly requested (0.144661ms) ✔ D5.3.17 links verification photos to the verification visit (0.129058ms) ✔ F4 requires every linked verification result before closing the inspection, not before locking one act (0.385098ms) ✔ D5.3.17 moves verified conforming findings into an office ready-to-close queue (0.083678ms) ✔ D5.3.17 migration adds verification outcome and verification evidence linkage (0.081213ms) ✔ D5.3.18.3 separates finding closure from general follow-up permission (0.960509ms) ✔ D5.3.18.3 keeps the first company response immutable and requires later presentations in history (0.212445ms) ✔ D5.3.18 exposes one server-side office workflow for the finding dossier (0.665627ms) ✔ D5.3.18 preserves administrative and operational dates as independent fields (0.128065ms) ✔ D5.3.19 adds one searchable common name without replacing technical identity (2.994639ms) ✔ D5.3.19 stores the administrative response rule and its immutable base (1.764018ms) ✔ D5.3.19 exposes company area inspector and date filters across operational lists (0.339068ms) ✔ F1.1 supersedes the historical single-act rule while retaining the D5.3.19 filters (0.220296ms) ✔ D5.3.19 does not introduce the contextual finding catalog before its office definition (0.201578ms) ✔ D5.3.20/F4 freezes one report from each sealed act and generates its Word artifact (0.946769ms) ✔ D5.3.20 stores an integrity-checked Word artifact without changing the frozen source snapshot (0.284154ms) ✔ D5.3.20 builds OOXML Word from the frozen act snapshot without external document dependencies (0.233537ms) ✔ F4 keeps report generation act-scoped while findings and inspection lifecycle remain independent (0.121376ms) ✔ D5.3.21/F4 stores configurable recipients without hardcoding addresses and retires Director delivery (1.039068ms) ✔ D5.3.21 creates an immutable act PDF and separates its delivery from the editable INF Word (0.151672ms) ✔ D5.3.21 keeps an auditable retryable outbox with explicit waiting states (0.10505ms) ✔ F4 SMTP can be administered in database while retaining environment fallback (0.11726ms) ✔ D5.3.21/F4 delivery stays act-scoped after multiple acts per inspection (0.266668ms) ✔ D5.3.22 revision ledger is retained as historical INF versioning (0.663816ms) ✔ F4 explicitly retires Director review approval and final-signature state (0.17661ms) ✔ F4 removes active Director endpoints but preserves historical signature evidence (0.197503ms) ✔ F4 replaces Director approval with editable INF then immutable GEDO IF officialization (0.151792ms) ✔ F4 delivery has no Director recipient while preserving company office and inspector copies (0.069306ms) ✔ F4 Director-retirement rollback reconstructs schema and RBAC contract without inventing deleted data (0.067144ms) ✔ F4 document workflow changes do not reopen acts or mutate finding history (0.075566ms) ✔ D5.3.23 records field discoveries as auditable provisional inventory records (0.945605ms) ✔ D5.3.23 only lets a mobile assigned inspector create during an active visit (0.131541ms) ✔ F1.1 preserves D5.3.23 field discovery while linking only to the current draft act (0.160185ms) ✔ D5.3.23 office review can approve match or reject without deleting historical objects (0.141466ms) ✔ D5.3.23 preserves immutable inspection history when matching an existing inventory object (0.109869ms) ✔ D5.3.24 stores parent area and operator as explicit non-overlapping temporal context (0.787695ms) ✔ D5.3.24 reconstructs previous context from immutable asset versions during migration (0.132162ms) ✔ D5.3.24 separates ordinary editing from an audited context transfer (0.162628ms) ✔ D5.3.24 closes the previous interval and appends the replacement without deleting history (0.389956ms) ✔ D5.3.24 temporal reconstruction resolves context by effective validity at the requested instant (0.108887ms) ✔ D5.3.25 creates an append-only verification event ledger and reconstructs prior history (2.925843ms) ✔ D5.3.25 records every office control-date change without replacing historical events (0.238084ms) ✔ D5.3.25 makes one field result immutable and appends its result event (0.253027ms) ✔ D5.3.25 preserves successive verification visits as separate historical attempts (0.117791ms) ✔ D5.3.25 exposes the complete verification history through finding detail and a dedicated endpoint (0.113092ms) ✔ D5.3.3 separates operational state from data quality and adds registry structures (7.286901ms) ✔ D5.3.3 keeps physical hierarchy separate from legal and organizational relations (2.554395ms) ✔ D5.3.3 only accepts OPERATOR relations for exclusive asset assignment (2.323032ms) ✔ D5.4.1 exports controller-visible selection views so Nest declaration build can name them (0.850951ms) ✔ D5.4 models type applicability and concrete Inventory exceptions separately (1.05302ms) ✔ D5.4 exposes only applicable catalog items and enforces the same rule on field creation (0.159584ms) ✔ D5.4 stores suggested and actual severity independently on the 1 to 10 scale (0.134255ms) ✔ D5.4 turns OTHER into an office proposal without rewriting the original finding (0.225374ms) ✔ D5.4 keeps contextual catalog administration in office permissions and audited routes (0.09868ms) ✔ D5.5 stores explicit Area and Operator context plus append-only checklist generations (1.076056ms) ✔ D5.5 exposes Area then active OPERATOR choices and a server-generated planning checklist (0.347161ms) ✔ D5.5 classifies antecedents overdue items and next controls while adding actionable assets automatically (0.196149ms) ✔ D5.5 treats manual additions as preventive and requires an auditable reason for exclusions (0.747463ms) ✔ D5.5/F4 keeps verification visits inside the Area Operator contract and start remains APK-only (0.240347ms) ✔ D5.5/F4 requires a current checklist before planning or start and keeps start under mobile policy (0.182851ms) ✔ D5.6.1 exposes controlled administrative password reset with the existing user-update permission (1.497389ms) ✔ D5.6.1 resets lockout revokes sessions and audits without persisting the password value (0.600429ms) ✔ D5.6.4/F4 generates inspection codes server-side with an annual transactional sequence (0.95461ms) ✔ D5.6.4/F4 creates one inspection from Area Operator, start and lead inspector without legacy title or end date (0.51673ms) ✔ D5.6.4 assigns the lead inspector and generates the checklist in the same creation transaction (0.191092ms) ✔ D5.6.4/F4 uses the same inspection numbering and start-only planning for verification visits (0.35978ms) ✔ D5.6 immutable act closure survives F4 as LOCKED then SEALED (1.018527ms) ✔ D5.6 preserves findings responses evidence and verification history as non destructive follow-up (0.309804ms) ✔ D5.6 keeps Inventory temporal context and contextual finding applicability independent and historical (0.731077ms) ✔ F4 preserves reviewed web planning and APK-only inspection execution (0.341893ms) ✔ D5.6 report generation remains attached to sealing each act (0.198665ms) ✔ F4 replaces Director approval with editable INF then immutable GEDO IF officialization (0.211273ms) ✔ F4 keeps auditable delivery, removes Director recipient and makes SMTP administrable (0.193546ms) ✔ D5.6 remains a historical closure baseline while Phase F introduces explicit migrations (0.4903ms) ✔ F1.1/F4 allows many acts per inspection while keeping only one draft at a time (1.254868ms) ✔ F1.1/F4 preserves exactly one frozen report per act instead of per inspection (0.345329ms) ✔ F4 seals one act without closing its parent inspection (0.271866ms) ✔ F4 closes an inspection only after every non-cancelled act is sealed (0.182751ms) ✔ F4 requires exactly one terminal company outcome before an act can be sealed (0.214418ms) ✔ F1.1/F4 keeps field-created Inventory linked only to the current draft act (0.143879ms) ✔ F1.2 stores one append-only administrative deadline ledger per Act (0.975982ms) ✔ F1.2 preserves ambiguous historical finding deadlines instead of collapsing them (0.133394ms) ✔ F1.2 stores company responses and protected PDF metadata at Act level (0.088035ms) ✔ F1.2 deadline and company response DTOs reject invalid office input (7.300311ms) ✔ F1.2 derives administrative queues from Acts instead of replacing finding history (0.958856ms) ✔ F1.3 agrupa pendientes de campo por Acta y Hallazgo (1.679537ms) ✔ F1.3 expone el briefing para una inspección planificada (0.239677ms) ✔ F1.3 no usa el plazo del Hallazgo como plazo administrativo (0.108887ms) ✔ F4 removes the Survey execution controller from the active API (1.683102ms) ✔ F4 removes Survey execution and review permissions from active authorization (0.221429ms) ✔ F4 removes Survey execution DTOs together with the retired endpoint surface (2.151429ms) ✔ F4 drops Survey report tables without CASCADE so unexpected dependencies stop migration (0.249221ms) ✔ F4 rollback can reconstruct the historical Survey report integrity rules (0.245205ms) ✔ F4 removes Survey planning controllers from the active API (1.307288ms) ✔ F4 removes Survey planning permissions and their role bindings (0.245956ms) ✔ F4 rollback retains the former role-permission map only as a reversible migration path (0.18332ms) ✔ F4 removes Survey planning DTOs from the active code surface (1.247728ms) ✔ F4 drops Survey planning tables after removing their permissions (0.316473ms) ✔ F4 rollback can reconstruct historical Survey planning dates and asset references (0.121276ms) ✔ TokenService issues and verifies access tokens (9.519154ms) ✔ TokenService rotates opaque refresh credentials without storing plaintext (2.098819ms) ℹ tests 443 ℹ suites 0 ℹ pass 443 ℹ fail 0 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 69984.437457 ========== BUILD WEB CANDIDATA ========== #0 building with "default" instance using docker driver #1 [internal] load build definition from Dockerfile #1 transferring dockerfile: 355B 0.0s 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.6s #4 [internal] load .dockerignore #4 transferring context: 75B done #4 DONE 0.0s #5 [builder 1/8] FROM docker.io/library/node:24-alpine@sha256:50c8e8ca1d27439048670df5883f32d57cf81cff6233222c893fd0d9884cbd81 #5 resolve docker.io/library/node:24-alpine@sha256:50c8e8ca1d27439048670df5883f32d57cf81cff6233222c893fd0d9884cbd81 0.0s done #5 DONE 0.0s #6 [stage-1 1/3] FROM docker.io/library/nginx:alpine@sha256:72ba65eb42c10344912a84ff42408db7d34f2feb642204570ab8fc5ffd29f1d3 #6 resolve docker.io/library/nginx:alpine@sha256:72ba65eb42c10344912a84ff42408db7d34f2feb642204570ab8fc5ffd29f1d3 0.0s done #6 DONE 0.0s #7 [internal] load build context #7 transferring context: 1.24MB 0.0s done #7 DONE 0.1s #8 [builder 2/8] WORKDIR /app #8 CACHED #9 [builder 3/8] COPY package*.json ./ #9 CACHED #10 [builder 4/8] RUN npm ci #10 CACHED #11 [builder 5/8] COPY tsconfig*.json vite.config.ts index.html ./ #11 CACHED #12 [builder 6/8] COPY public ./public #12 DONE 0.1s #13 [builder 7/8] COPY src ./src #13 DONE 0.1s #14 [builder 8/8] RUN npm run build #14 0.579 #14 0.579 > dhv2-web@0.23.0-3 build #14 0.579 > tsc -b && vite build #14 0.579 #14 14.52 vite v7.3.6 building client environment for production... #14 14.60 transforming... #14 20.24 ✓ 193 modules transformed. #14 20.70 rendering chunks... #14 21.13 computing gzip size... #14 21.18 dist/index.html 0.54 kB │ gzip: 0.33 kB #14 21.18 dist/assets/index-CYHYQos4.css 223.98 kB │ gzip: 34.19 kB #14 21.18 dist/assets/MapPage-DDfalIY6.js 7.36 kB │ gzip: 2.64 kB #14 21.18 dist/assets/AssetGeometryEditor-DjTD4oTx.js 7.69 kB │ gzip: 3.15 kB #14 21.18 #14 21.18 (!) Some chunks are larger than 500 kB after minification. Consider: #14 21.18 - Using dynamic import() to code-split the application #14 21.18 - Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks #14 21.18 - Adjust chunk size limit for this warning via build.chunkSizeWarningLimit. #14 21.18 dist/assets/DocumentDeliveryPage-CB9IoGxE.js 10.60 kB │ gzip: 3.41 kB #14 21.18 dist/assets/index-BCOqO4fO.js 702.18 kB │ gzip: 182.16 kB #14 21.18 dist/assets/maplibre-gl-D8_spFpn.js 938.81 kB │ gzip: 245.97 kB #14 21.18 ✓ built in 6.63s #14 DONE 21.4s #15 [stage-1 2/3] COPY nginx/default.conf /etc/nginx/conf.d/default.conf #15 CACHED #16 [stage-1 3/3] COPY --from=builder /app/dist /usr/share/nginx/html #16 DONE 0.1s #17 exporting to image #17 exporting layers #17 exporting layers 0.2s done #17 exporting manifest sha256:1704f6185228a186f2b5e5319bb34bd0cf859c159e3944ee94586e269b11a45d 0.0s done #17 exporting config sha256:4546be2b3c45839cd9f696532c385f781e80baadfd9a56162c454935f52b3582 0.0s done #17 exporting attestation manifest sha256:f29617f378d93e98523b44c0ff1eb0d388de4de0885d667336cac979c21100ff 0.0s done #17 exporting manifest list sha256:e14fd1a4ed05d92186398c544746078f85ac16954710f9cbcb7d9affe043b130 0.0s done #17 naming to docker.io/library/dhv2-web:gitea-20260914_193944 #17 naming to docker.io/library/dhv2-web:gitea-20260914_193944 done #17 unpacking to docker.io/library/dhv2-web:gitea-20260914_193944 0.1s done #17 DONE 0.4s ========== 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 ========== 08f164a fix(web): package Mendoza favicon in production image Updating 23450bb..08f164a Fast-forward web-v2/Dockerfile | 1 + 1 file changed, 1 insertion(+) ========== BUILD PRODUCCIÓN ========== Image dhv2-api Building Image dhv2-web Building Image dhv2-migrate 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 [migrate internal] load build definition from Dockerfile #3 transferring dockerfile: 595B done #3 DONE 0.0s #4 [api internal] load metadata for docker.io/library/node:24-alpine #4 DONE 0.2s #5 [web internal] load metadata for docker.io/library/nginx:alpine #5 DONE 0.2s #6 [api internal] load .dockerignore #6 transferring context: 147B done #6 DONE 0.0s #7 [web internal] load .dockerignore #7 transferring context: 148B done #7 DONE 0.0s #8 [api internal] load build context #8 DONE 0.0s #9 [web internal] load build context #9 DONE 0.0s #10 [web builder 1/7] FROM docker.io/library/node:24-alpine@sha256:50c8e8ca1d27439048670df5883f32d57cf81cff6233222c893fd0d9884cbd81 #10 resolve docker.io/library/node:24-alpine@sha256:50c8e8ca1d27439048670df5883f32d57cf81cff6233222c893fd0d9884cbd81 0.0s done #10 DONE 0.0s #11 [web stage-1 1/3] FROM docker.io/library/nginx:alpine@sha256:72ba65eb42c10344912a84ff42408db7d34f2feb642204570ab8fc5ffd29f1d3 #11 resolve docker.io/library/nginx:alpine@sha256:72ba65eb42c10344912a84ff42408db7d34f2feb642204570ab8fc5ffd29f1d3 0.0s done #11 DONE 0.0s #8 [migrate internal] load build context #8 ... #9 [web internal] load build context #9 transferring context: 1.25MB 0.1s done #9 DONE 0.2s #8 [migrate internal] load build context #8 transferring context: 2.63MB 0.4s done #8 DONE 0.5s #12 [web builder 3/8] COPY package*.json ./ #12 CACHED #13 [web builder 4/8] RUN npm ci #13 CACHED #14 [web builder 5/8] COPY tsconfig*.json vite.config.ts index.html ./ #14 CACHED #15 [migrate runner 4/7] COPY package*.json ./ #15 CACHED #16 [migrate builder 5/7] COPY nest-cli.json tsconfig.json ./ #16 CACHED #17 [migrate runner 3/7] WORKDIR /app #17 CACHED #18 [migrate builder 6/7] COPY src ./src #18 CACHED #19 [migrate builder 7/7] RUN npm run build #19 CACHED #20 [migrate builder 3/7] COPY package*.json ./ #20 CACHED #21 [migrate builder 4/7] RUN npm ci #21 CACHED #22 [migrate runner 5/7] RUN npm ci --omit=dev && npm cache clean --force #22 CACHED #23 [migrate runner 2/7] RUN apk add --no-cache unzip #23 CACHED #24 [migrate runner 6/7] COPY --from=builder /app/dist ./dist #24 CACHED #25 [migrate builder 2/7] WORKDIR /app #25 CACHED #26 [api runner 7/7] RUN mkdir -p /app/storage/asset-media/imports && chown -R node:node /app/storage #26 CACHED #27 [migrate] exporting to image #27 exporting layers 0.0s done #27 exporting manifest sha256:6993fd04b489570666bd0e009307ec6c6ef7a3b00c777ff6d08e59c4601d61bc done #27 exporting config sha256:a9cad0808cfca28a88e4c63d1a3120fe445b75d43f6e22736c37104773773432 0.0s done #27 ... #28 [web builder 6/8] COPY public ./public #28 DONE 0.1s #27 [migrate] exporting to image #27 exporting attestation manifest sha256:7c6942bc1c89db32b04b66a55eb218078d471b6f434bbf8bf8901a2ae7e6e6ae 0.1s done #27 exporting manifest list sha256:53fc880c1c7405507c07aaad25699c95f2ee569ada81e49511fb7045a098d4c8 #27 ... #29 [web builder 7/8] COPY src ./src #29 DONE 0.2s #30 [api] exporting to image #30 exporting layers 0.0s done #30 exporting manifest sha256:ad87d1d4b654ca83d3977c3e5c91185ab34fee1b111ee16945cf7cd27822b99d 0.0s done #30 exporting config sha256:edbcbbc95c8ebbba90e2e9844c9d2bdc5b2ec9caa3e782118bebd8c3886e13a7 0.0s done #30 exporting attestation manifest sha256:51df1dd08cdb596c682158b8f365c85a5b5073be538f5ac9077a45b24e81276b 0.1s done #30 exporting manifest list sha256:a279e8ec2b640bac1c8c88dc3b40c1c1547d6ab208e816f812c7629bc7d03bc5 0.0s done #30 naming to docker.io/library/dhv2-api:latest done #30 unpacking to docker.io/library/dhv2-api:latest 0.1s done #30 DONE 0.3s #27 [migrate] exporting to image #27 exporting manifest list sha256:53fc880c1c7405507c07aaad25699c95f2ee569ada81e49511fb7045a098d4c8 0.0s done #27 naming to docker.io/library/dhv2-migrate:latest 0.0s done #27 unpacking to docker.io/library/dhv2-migrate:latest 0.1s done #27 DONE 0.4s #31 [web builder 8/8] RUN npm run build #31 ... #32 [api] resolving provenance for metadata file #32 DONE 0.1s #33 [migrate] resolving provenance for metadata file #33 DONE 0.1s #31 [web builder 8/8] RUN npm run build #31 0.643 #31 0.643 > dhv2-web@0.23.0-3 build #31 0.643 > tsc -b && vite build #31 0.643 #31 13.85 vite v7.3.6 building client environment for production... #31 13.93 transforming... #31 19.79 ✓ 193 modules transformed. #31 20.17 rendering chunks... #31 20.65 computing gzip size... #31 20.78 #31 20.78 (!) Some chunks are larger than 500 kB after minification. Consider: #31 20.78 - Using dynamic import() to code-split the application #31 20.78 - Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks #31 20.78 - Adjust chunk size limit for this warning via build.chunkSizeWarningLimit. #31 20.78 dist/index.html 0.54 kB │ gzip: 0.33 kB #31 20.78 dist/assets/index-CYHYQos4.css 223.98 kB │ gzip: 34.19 kB #31 20.78 dist/assets/MapPage-DDfalIY6.js 7.36 kB │ gzip: 2.64 kB #31 20.78 dist/assets/AssetGeometryEditor-DjTD4oTx.js 7.69 kB │ gzip: 3.15 kB #31 20.78 dist/assets/DocumentDeliveryPage-CB9IoGxE.js 10.60 kB │ gzip: 3.41 kB #31 20.78 dist/assets/index-BCOqO4fO.js 702.18 kB │ gzip: 182.16 kB #31 20.78 dist/assets/maplibre-gl-D8_spFpn.js 938.81 kB │ gzip: 245.97 kB #31 20.78 ✓ built in 6.89s #31 DONE 21.3s #34 [web stage-1 2/3] COPY nginx/default.conf /etc/nginx/conf.d/default.conf #34 CACHED #35 [web stage-1 3/3] COPY --from=builder /app/dist /usr/share/nginx/html #35 DONE 0.1s #36 [web] exporting to image #36 exporting layers #36 exporting layers 0.2s done #36 exporting manifest sha256:f6a73850db7dbd52ba581378c153449299ae41ed0104b817a1249e03f7c4cb5d 0.0s done #36 exporting config sha256:87fc2c8ecaf5028743b53e810dfeea961fb94aafb6966b1fa5fc33f6ab47014a 0.0s done #36 exporting attestation manifest sha256:bfe5f8d1d03b9531119227a3ca906930d0865e7f16d1221c65c30261b2c2e65a 0.0s done #36 exporting manifest list sha256:0501f39e2cbb0811d686f6b74d27f1364aa6a735f4e278081d920797dfd58bc7 0.0s done #36 naming to docker.io/library/dhv2-web:latest #36 naming to docker.io/library/dhv2-web:latest done #36 unpacking to docker.io/library/dhv2-web:latest 0.1s done #36 DONE 0.4s #37 [web] resolving provenance for metadata file #37 DONE 0.1s Image dhv2-api Built Image dhv2-migrate Built Image dhv2-web Built ========== MIGRACIONES ========== Container dhv2-db Running Container dhv2-db Waiting Container dhv2-db Healthy Container dhv2-migrate-run-64e6bb244078 Creating Container dhv2-migrate-run-64e6bb244078 Created > dhv2-api@0.29.0-4 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-a40fd6f324c1 Creating Container dhv2-migrate-run-a40fd6f324c1 Created > dhv2-api@0.29.0-4 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-4","phase":"F6.2","database":"ok","time":"2026-09-14T22:42:15.569Z","latencyMs":3} ========== VERIFICACIÓN FINAL ========== NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS dhv2-api dhv2-api "docker-entrypoint.s…" api 6 seconds ago Up 4 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 5 seconds ago Up 4 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: 08f164a209570928506ea014327eec630a62cfdc API: 0.29.0-4 WEB: 0.23.0-3 Backup: /root/DH_V2_BACKUPS/GITEA_DEPLOY_20260914_193944 ============================================================