Files
pikasTech-HWLAB/reports/dev-gate/dev-m2-deploy-smoke-active.json
T
2026-05-22 07:26:40 +00:00

265 lines
11 KiB
JSON

{
"$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": "<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <title>HWLAB DEV MVP Gate</title>\n <link rel=\"stylesheet\" href=\"./styles.css\" />\n <script type=\"module\" src=\"./app.mjs\"></script>\n </head>\n <body>\n <main class=\"shell\">\n <header class=\"topbar\">\n <div>\n <p class=\"eyebrow\">HWLAB L6 Frontend / CLI MVP</p>\n <h1>DEV MVP Gate</h1>\n </div>\n <div class=\"status\" id"
}
],
"legacyPublicEndpoint": {
"endpoint": "http://74.48.78.17:6667",
"status": "deprecated",
"activeGreenEligible": false,
"summary": "Legacy public :6667 observations are retained only as historical blockers and are not accepted as active green evidence."
}
},
"notes": "M2 active report uses read-only GET probes only; PROD, service restarts, deployments, and script-driven apply flows were not touched."
}