{ "$schema": "https://hwlab.pikastech.local/schemas/dev-gate-report.schema.json", "$id": "https://hwlab.pikastech.local/reports/dev-gate/dev-m2-deploy-smoke-active.json", "reportVersion": "v1", "issue": "pikasTech/HWLAB#23", "taskId": "m2-dev-deploy-smoke", "commitId": "8e89409dda5d", "acceptanceLevel": "dev_m2_deploy_smoke", "devOnly": true, "prodDisabled": true, "reportLifecycle": { "version": "v1", "state": "active", "activeEndpoint": "http://74.48.78.17:16667", "activeBrowserEndpoint": "http://74.48.78.17:16666", "deprecatedEndpoint": null, "summary": "Active M2 read-only public endpoint smoke; route reachability is not M5 DEV-LIVE acceptance." }, "status": "pass", "generatedAt": "2026-05-22T07:18:45.192Z", "endpoint": "http://74.48.78.17:16667", "frontendEndpoint": "http://74.48.78.17:16666", "sourceContract": { "status": "pass", "documents": [ "docs/m2-dev-deploy-smoke.md", "docs/dev-acceptance-matrix.md", "fixtures/dev-deploy-smoke/dev-deploy-smoke.json" ], "summary": "M2 DEV deploy smoke is rebaselined to frontend :16666 and API/edge :16667." }, "validationCommands": [ "node --check scripts/m2-dev-deploy-smoke.mjs", "node scripts/m2-dev-deploy-smoke.mjs --dry-run", "node scripts/m2-dev-deploy-smoke.mjs --live --confirm-dev --confirmed-non-production --write-report", "node --check scripts/validate-dev-gate-report.mjs", "node scripts/validate-dev-gate-report.mjs" ], "localSmoke": { "status": "pass", "commands": [ "node scripts/m2-dev-deploy-smoke.mjs --dry-run" ], "evidence": [ "[m2-smoke] validated 11 service contracts", "[m2-smoke] mode=dry-run endpoint=http://74.48.78.17:16667", "[m2-smoke] no real DEV/PROD request was made" ], "summary": "The fixture smoke validates the M2 route and artifact contract without contacting DEV." }, "dryRun": { "status": "pass", "commands": [ "node scripts/m2-dev-deploy-smoke.mjs --dry-run" ], "evidence": [ "fixture endpoint=http://74.48.78.17:16667", "fixture frontendEndpoint=http://74.48.78.17:16666", "legacy :6667 public evidence is marked ineligible for active green" ], "summary": "Dry-run evidence is contract-only and pinned to the current DEV public endpoints." }, "devPreconditions": { "status": "pass", "requirements": [ "GET http://74.48.78.17:16667/health returns HWLAB DEV JSON", "GET http://74.48.78.17:16667/health/live returns HWLAB DEV JSON", "GET http://74.48.78.17:16666/ returns the HWLAB DEV frontend", "No PROD, secret read, runtime restart, deployment, or heavyweight e2e action is performed" ], "commands": [ "curl -fsS --max-time 10 http://74.48.78.17:16667/health", "curl -fsS --max-time 10 http://74.48.78.17:16667/health/live", "curl -fsS --max-time 10 http://74.48.78.17:16666/" ], "evidence": [ "api-health: HTTP 200 accepted=yes identity=hwlab-edge-proxy url=http://74.48.78.17:16667/health", "api-live: HTTP 200 accepted=yes identity=hwlab-cloud-api url=http://74.48.78.17:16667/health/live", "frontend-root: HTTP 200 accepted=yes identity=HWLAB DEV MVP Gate url=http://74.48.78.17:16666/" ], "summary": "Read-only DEV public endpoint probes passed on :16666/:16667." }, "blockers": [], "runtimeSmoke": { "mode": "live-read-only", "status": "pass", "generatedAt": "2026-05-22T07:18:45.192Z", "apiEndpoint": "http://74.48.78.17:16667", "frontendEndpoint": "http://74.48.78.17:16666", "safety": { "environment": "dev", "prodTouched": false, "secretsRead": false, "restarts": false, "deployAttempted": false, "heavyE2E": false, "unideskRuntimeSubstitute": false }, "probes": [ { "id": "api-health", "url": "http://74.48.78.17:16667/health", "ok": true, "status": 200, "statusText": "OK", "durationMs": 3916, "contentType": "application/json; charset=utf-8", "headers": { "content-type": "application/json; charset=utf-8", "content-length": "661", "date": "Fri, 22 May 2026 07:18:43 GMT" }, "json": { "serviceId": "hwlab-edge-proxy", "environment": "dev", "status": "ok", "service": { "id": "hwlab-edge-proxy", "role": "public-dev-ingress", "healthPath": "/health", "livePath": "/health/live" }, "commit": { "id": "cb35ada6860653b27269b0a57991184118cbf4b1", "source": "runtime-env" }, "image": { "reference": "ghcr.io/pikastech/hwlab-edge-proxy:cb35ada", "tag": "cb35ada", "digest": "unknown" }, "endpoint": "http://74.48.78.17:16667", "observedAt": "2026-05-22T07:18:43.527Z", "details": { "upstream": "http://hwlab-cloud-api.hwlab-dev.svc.cluster.local:6667", "mode": "dev-edge-proxy" } }, "title": null, "bodyPreview": "{\n \"serviceId\": \"hwlab-edge-proxy\",\n \"environment\": \"dev\",\n \"status\": \"ok\",\n \"service\": {\n \"id\": \"hwlab-edge-proxy\",\n \"role\": \"public-dev-ingress\",\n \"healthPath\": \"/health\",\n \"livePath\": \"/health/live\"\n },\n \"commit\": {\n \"id\": \"cb35ada6860653b27269b0a57991184118cbf4b1\",\n \"source\": \"runtime-env\"\n },\n \"image\": {\n \"reference\": \"ghcr.io/pikastech/hwlab-edge-proxy:cb35ada\",\n \"tag\": \"cb35ada\",\n \"digest\": \"unknown\"\n },\n \"endpoint\": \"http://74.48.78.17:16667\",\n \"observedAt\": \"20" }, { "id": "api-live", "url": "http://74.48.78.17:16667/health/live", "ok": true, "status": 200, "statusText": "OK", "durationMs": 3510, "contentType": "application/json; charset=utf-8", "headers": { "content-type": "application/json; charset=utf-8", "cache-control": "no-store", "date": "Fri, 22 May 2026 07:18:44 GMT" }, "json": { "serviceId": "hwlab-cloud-api", "environment": "dev", "status": "degraded", "service": { "id": "hwlab-cloud-api", "role": "cloud-api", "healthPath": "/health", "livePath": "/health/live" }, "commit": { "id": "cb35ada", "source": "runtime-env" }, "image": { "reference": "127.0.0.1:5000/hwlab/hwlab-cloud-api:cb35ada", "tag": "cb35ada", "digest": "unknown" }, "endpoint": "http://74.48.78.17:16667", "observedAt": "2026-05-22T07:18:44.622Z", "db": { "contractVersion": "v1", "environment": "dev", "connected": false, "connectionChecked": false, "configReady": true, "ready": false, "status": "degraded", "mode": "configured_without_live_connection", "fields": [ { "name": "HWLAB_CLOUD_DB_URL", "present": true, "redacted": true, "source": "k8s-secret-ref", "required": true }, { "name": "HWLAB_CLOUD_DB_SSL_MODE", "present": true, "redacted": false, "source": "runtime-env", "required": true } ], "missingEnv": [], "secretRefs": [ { "env": "HWLAB_CLOUD_DB_URL", "secretName": "hwlab-cloud-api-dev-db", "secretKey": "database-url", "present": true, "redacted": true } ], "safety": { "devOnly": true, "prodAllowed": false, "secretsRead": false, "valuesRedacted": true, "liveDbEvidence": false }, "evidence": "env_presence_only_no_live_db" }, "runtime": { "adapter": "memory", "durable": false, "status": "degraded", "reason": "live DB persistence is not connected; L1 runtime writes are process-local only", "counts": { "gatewaySessions": 0, "boxResources": 0, "boxCapabilities": 0, "hardwareOperations": 0, "auditEvents": 0, "evidenceRecords": 0 } } }, "title": null, "bodyPreview": "{\"serviceId\":\"hwlab-cloud-api\",\"environment\":\"dev\",\"status\":\"degraded\",\"service\":{\"id\":\"hwlab-cloud-api\",\"role\":\"cloud-api\",\"healthPath\":\"/health\",\"livePath\":\"/health/live\"},\"commit\":{\"id\":\"cb35ada\",\"source\":\"runtime-env\"},\"image\":{\"reference\":\"127.0.0.1:5000/hwlab/hwlab-cloud-api:cb35ada\",\"tag\":\"cb35ada\",\"digest\":\"unknown\"},\"endpoint\":\"http://74.48.78.17:16667\",\"observedAt\":\"2026-05-22T07:18:44.622Z\",\"db\":{\"contractVersion\":\"v1\",\"environment\":\"dev\",\"connected\":false,\"connectionChecked\":false,\"configReady\":" }, { "id": "frontend-root", "url": "http://74.48.78.17:16666/", "ok": true, "status": 200, "statusText": "OK", "durationMs": 1027, "contentType": "text/html; charset=utf-8", "headers": { "content-type": "text/html; charset=utf-8", "content-length": "4230", "date": "Fri, 22 May 2026 07:18:42 GMT" }, "json": null, "title": "HWLAB DEV MVP Gate", "bodyPreview": "\n\n \n \n \n HWLAB DEV MVP Gate\n \n \n \n \n
\n
\n
\n

HWLAB L6 Frontend / CLI MVP

\n

DEV MVP Gate

\n
\n