265 lines
11 KiB
JSON
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."
|
|
}
|