{ "$schema": "https://hwlab.pikastech.local/schemas/dev-gate-report.schema.json", "$id": "https://hwlab.pikastech.local/reports/dev-gate/dev-deploy-report.json", "reportVersion": "v1", "issue": "pikasTech/HWLAB#33", "supports": [ "pikasTech/HWLAB#50", "pikasTech/HWLAB#7", "pikasTech/HWLAB#33", "pikasTech/HWLAB#17", "pikasTech/HWLAB#32", "pikasTech/HWLAB#30" ], "taskId": "dev-deploy-apply", "commitId": "73b379f4441d", "acceptanceLevel": "dev_deploy_apply", "devOnly": true, "prodDisabled": true, "status": "pass", "generatedAt": "2026-05-22T03:38:26.155Z", "namespace": "hwlab-dev", "endpoint": "http://74.48.78.17:16667", "sourceContract": { "status": "pass", "documents": [ "docs/dev-acceptance-matrix.md", "docs/m0-contract-audit.md", "docs/dev-deploy-apply.md", "docs/artifact-catalog.md", "deploy/README.md" ], "summary": "DEV deploy apply is pinned to hwlab-dev and the frozen HWLAB service IDs" }, "validationCommands": [ "node --check scripts/validate-dev-gate-report.mjs", "node scripts/validate-dev-gate-report.mjs", "node --check scripts/dev-deploy-apply.mjs", "node --check scripts/src/dev-deploy-apply.mjs", "node scripts/dev-deploy-apply.mjs --dry-run --expect-blocked" ], "localSmoke": { "status": "not_run", "commands": [ "node scripts/m1-contract-smoke.mjs" ], "evidence": [ "This deploy apply task did not run local smoke because artifact/executor blockers stop promotion first." ], "summary": "Local smoke remains available but is not a substitute for DEV artifact publish evidence." }, "dryRun": { "status": "pass", "commands": [ "node tools/hwlab-cli/bin/hwlab-cli.mjs test e2e --env dev --mvp --dry-run", "node scripts/dev-deploy-apply.mjs --dry-run --expect-blocked" ], "evidence": [ "artifact services checked: 13", "expected artifact commit: 73b379f", "namespace: hwlab-dev", "workloads planned: 13", "kubectl executor: /usr/local/bin/kubectl", "live health: pass" ], "summary": "DEV dry-run preflight passed." }, "devPreconditions": { "status": "pass", "requirements": [ "DEV artifact catalog must contain CI publish evidence and registry digests", "kubectl must be available for D601 hwlab-dev and must not target PROD", "hwlab-cloud-api /health/live must report serviceId, dev environment, and DB env readiness without exposing secret values", "pods, services, configmaps, and image commit tags must be observable in hwlab-dev" ], "summary": "DEV deploy preconditions are satisfied." }, "devDeployApply": { "mode": "apply", "conclusion": { "status": "ready", "reason": "All DEV-only preconditions passed; human approval is still required before apply.", "blockerCount": 0 }, "applyBoundary": { "currentMode": "apply-requested", "defaultNoWrite": false, "mutationAttempted": true, "mutationAllowed": true, "applyRequiresFlags": [ "--apply", "--confirm-dev", "--confirmed-non-production" ], "writeScope": "kubectl apply -k deploy/k8s/dev, namespace hwlab-dev only", "noWriteScope": "source/catalog/k8s validation, optional DEV health probe, kubectl read, and server-side dry-run only", "forbiddenActions": [ "prod-deploy", "secret-read", "runtime-substitute", "unidesk-restart", "code-queue-restart", "backend-core-restart", "heavy-master-e2e", "force-push" ] }, "mutationAttempted": true, "target": { "environment": "dev", "namespace": "hwlab-dev", "endpoint": "http://74.48.78.17:16667", "prodDisabled": true }, "artifactPlan": { "expectedArtifactCommit": "73b379f", "deployCommitId": "73b379f", "catalogCommitId": "73b379f", "sourceCommitId": "73b379f4441d", "serviceCommitIds": [ "73b379f" ], "matchesSourceCommit": true, "published": true, "registryVerified": true, "imageCount": 13, "requiredServiceCount": 13, "disabledServiceCount": 0, "unpublishedServices": [] }, "workloadPlan": [ { "kind": "Deployment", "name": "hwlab-cloud-api", "namespace": "hwlab-dev", "replicas": 1, "serviceIds": [ "hwlab-cloud-api" ], "containers": [ { "name": "hwlab-cloud-api", "serviceId": "hwlab-cloud-api", "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:73b379f" } ] }, { "kind": "Deployment", "name": "hwlab-cloud-web", "namespace": "hwlab-dev", "replicas": 1, "serviceIds": [ "hwlab-cloud-web" ], "containers": [ { "name": "hwlab-cloud-web", "serviceId": "hwlab-cloud-web", "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:73b379f" } ] }, { "kind": "Deployment", "name": "hwlab-agent-mgr", "namespace": "hwlab-dev", "replicas": 1, "serviceIds": [ "hwlab-agent-mgr" ], "containers": [ { "name": "hwlab-agent-mgr", "serviceId": "hwlab-agent-mgr", "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:73b379f" } ] }, { "kind": "Job", "name": "hwlab-agent-worker-template", "namespace": "hwlab-dev", "replicas": 0, "serviceIds": [ "hwlab-agent-worker" ], "containers": [ { "name": "hwlab-agent-worker", "serviceId": "hwlab-agent-worker", "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:73b379f" } ] }, { "kind": "Deployment", "name": "hwlab-gateway", "namespace": "hwlab-dev", "replicas": 0, "serviceIds": [ "hwlab-gateway" ], "containers": [ { "name": "hwlab-gateway", "serviceId": "hwlab-gateway", "image": "127.0.0.1:5000/hwlab/hwlab-gateway:73b379f" } ] }, { "kind": "Deployment", "name": "hwlab-gateway-simu", "namespace": "hwlab-dev", "replicas": 2, "serviceIds": [ "hwlab-gateway-simu" ], "containers": [ { "name": "hwlab-gateway-simu", "serviceId": "hwlab-gateway-simu", "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:73b379f" } ] }, { "kind": "Deployment", "name": "hwlab-box-simu", "namespace": "hwlab-dev", "replicas": 2, "serviceIds": [ "hwlab-box-simu" ], "containers": [ { "name": "hwlab-box-simu", "serviceId": "hwlab-box-simu", "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:73b379f" } ] }, { "kind": "Deployment", "name": "hwlab-patch-panel", "namespace": "hwlab-dev", "replicas": 1, "serviceIds": [ "hwlab-patch-panel" ], "containers": [ { "name": "hwlab-patch-panel", "serviceId": "hwlab-patch-panel", "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:73b379f" } ] }, { "kind": "Deployment", "name": "hwlab-router", "namespace": "hwlab-dev", "replicas": 1, "serviceIds": [ "hwlab-router" ], "containers": [ { "name": "hwlab-router", "serviceId": "hwlab-router", "image": "127.0.0.1:5000/hwlab/hwlab-router:73b379f" } ] }, { "kind": "Deployment", "name": "hwlab-tunnel-client", "namespace": "hwlab-dev", "replicas": 1, "serviceIds": [ "hwlab-tunnel-client" ], "containers": [ { "name": "hwlab-tunnel-client", "serviceId": "hwlab-tunnel-client", "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:73b379f" } ] }, { "kind": "Deployment", "name": "hwlab-edge-proxy", "namespace": "hwlab-dev", "replicas": 1, "serviceIds": [ "hwlab-edge-proxy" ], "containers": [ { "name": "hwlab-edge-proxy", "serviceId": "hwlab-edge-proxy", "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:73b379f" } ] }, { "kind": "Job", "name": "hwlab-cli-template", "namespace": "hwlab-dev", "replicas": 0, "serviceIds": [ "hwlab-cli" ], "containers": [ { "name": "hwlab-cli", "serviceId": "hwlab-cli", "image": "127.0.0.1:5000/hwlab/hwlab-cli:73b379f" } ] }, { "kind": "Deployment", "name": "hwlab-agent-skills", "namespace": "hwlab-dev", "replicas": 1, "serviceIds": [ "hwlab-agent-skills" ], "containers": [ { "name": "hwlab-agent-skills", "serviceId": "hwlab-agent-skills", "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:73b379f" } ] } ], "servicePlan": [ { "kind": "Service", "name": "hwlab-cloud-api", "namespace": "hwlab-dev", "serviceId": "hwlab-cloud-api", "type": "ClusterIP", "ports": [ { "name": "http", "port": 6667, "targetPort": "http" } ] }, { "kind": "Service", "name": "hwlab-cloud-web", "namespace": "hwlab-dev", "serviceId": "hwlab-cloud-web", "type": "ClusterIP", "ports": [ { "name": "http", "port": 8080, "targetPort": "http" } ] }, { "kind": "Service", "name": "hwlab-gateway", "namespace": "hwlab-dev", "serviceId": "hwlab-gateway", "type": "ClusterIP", "ports": [ { "name": "http", "port": 7001, "targetPort": "http" } ] }, { "kind": "Service", "name": "hwlab-cli", "namespace": "hwlab-dev", "serviceId": "hwlab-cli", "type": "ClusterIP", "ports": [ { "name": "http", "port": 7501, "targetPort": "http" } ] }, { "kind": "Service", "name": "hwlab-agent-skills", "namespace": "hwlab-dev", "serviceId": "hwlab-agent-skills", "type": "ClusterIP", "ports": [ { "name": "http", "port": 7430, "targetPort": "http" } ] }, { "kind": "Service", "name": "hwlab-agent-mgr", "namespace": "hwlab-dev", "serviceId": "hwlab-agent-mgr", "type": "ClusterIP", "ports": [ { "name": "http", "port": 7410, "targetPort": "http" } ] }, { "kind": "Service", "name": "hwlab-gateway-simu", "namespace": "hwlab-dev", "serviceId": "hwlab-gateway-simu", "type": "ClusterIP", "ports": [ { "name": "http", "port": 7101, "targetPort": "http" } ] }, { "kind": "Service", "name": "hwlab-box-simu", "namespace": "hwlab-dev", "serviceId": "hwlab-box-simu", "type": "ClusterIP", "ports": [ { "name": "http", "port": 7201, "targetPort": "http" } ] }, { "kind": "Service", "name": "hwlab-patch-panel", "namespace": "hwlab-dev", "serviceId": "hwlab-patch-panel", "type": "ClusterIP", "ports": [ { "name": "http", "port": 7301, "targetPort": "http" } ] }, { "kind": "Service", "name": "hwlab-router", "namespace": "hwlab-dev", "serviceId": "hwlab-router", "type": "ClusterIP", "ports": [ { "name": "http", "port": 7401, "targetPort": "http" } ] }, { "kind": "Service", "name": "hwlab-tunnel-client", "namespace": "hwlab-dev", "serviceId": "hwlab-tunnel-client", "type": "ClusterIP", "ports": [ { "name": "http", "port": 7402, "targetPort": "http" } ] }, { "kind": "Service", "name": "hwlab-edge-proxy", "namespace": "hwlab-dev", "serviceId": "hwlab-edge-proxy", "type": "ClusterIP", "ports": [ { "name": "http", "port": 6667, "targetPort": "http" } ] } ], "applyStep": { "status": "pass", "command": "kubectl apply -k deploy/k8s/dev", "stdout": "namespace/hwlab-dev unchanged\nconfigmap/hwlab-dev-health-contract unchanged\nservice/hwlab-agent-mgr unchanged\nservice/hwlab-agent-skills unchanged\nservice/hwlab-box-simu unchanged\nservice/hwlab-cli unchanged\nservice/hwlab-cloud-api unchanged\nservice/hwlab-cloud-web unchanged\nservice/hwlab-edge-proxy unchanged\nservice/hwlab-gateway unchanged\nservice/hwlab-gateway-simu unchanged\nservice/hwlab-patch-panel unchanged\nservice/hwlab-router unchanged\nservice/hwlab-tunnel-client unchanged\ndeployment.apps/hwlab-agent-mgr unchanged\ndeployment.apps/hwlab-agent-skills unchanged\ndeployment.apps/hwlab-box-simu unchanged\ndeployment.apps/hwlab-cloud-api unchanged\ndeployment.apps/hwlab-cloud-web unchanged\ndeployment.apps/hwlab-edge-proxy unchanged\ndeployment.apps/hwlab-gateway unchanged\ndeployment.apps/hwlab-gateway-simu unchanged\ndeployment.apps/hwlab-patch-panel unchanged\ndeployment.apps/hwlab-router unchanged\ndeployment.apps/hwlab-tunnel-client unchanged\njob.batch/hwlab-agent-worker-template unchanged\njob.batch/hwlab-cli-template unchanged", "stderr": "# Warning: 'commonLabels' is deprecated. Please use 'labels' instead. Run 'kustomize edit fix' to update your Kustomization automatically.\n# Warning: 'commonLabels' is deprecated. Please use 'labels' instead. Run 'kustomize edit fix' to update your Kustomization automatically." }, "manualCommands": { "status": "ready", "beforeHumanApproval": [ "node scripts/dev-deploy-apply.mjs --dry-run --write-report", "node scripts/validate-dev-gate-report.mjs" ], "afterHumanApproval": [ "node scripts/dev-deploy-apply.mjs --apply --confirm-dev --confirmed-non-production --write-report" ], "summary": "Run the dry-run plan and validator immediately before requesting human approval; live apply still requires the explicit DEV confirmation flags." }, "rollbackHint": { "namespace": "hwlab-dev", "strategy": "DEV-only Kubernetes rollback using deployment revision history; do not touch PROD or UniDesk services.", "captureBeforeApply": [ "kubectl -n hwlab-dev get pods,services,configmaps,deployments,jobs -o wide", "kubectl -n hwlab-dev get deployments -o json" ], "deploymentRollbackCommands": [ "kubectl -n hwlab-dev rollout undo deployment/hwlab-cloud-api", "kubectl -n hwlab-dev rollout undo deployment/hwlab-cloud-web", "kubectl -n hwlab-dev rollout undo deployment/hwlab-agent-mgr", "kubectl -n hwlab-dev rollout undo deployment/hwlab-gateway", "kubectl -n hwlab-dev rollout undo deployment/hwlab-gateway-simu", "kubectl -n hwlab-dev rollout undo deployment/hwlab-box-simu", "kubectl -n hwlab-dev rollout undo deployment/hwlab-patch-panel", "kubectl -n hwlab-dev rollout undo deployment/hwlab-router", "kubectl -n hwlab-dev rollout undo deployment/hwlab-tunnel-client", "kubectl -n hwlab-dev rollout undo deployment/hwlab-edge-proxy", "kubectl -n hwlab-dev rollout undo deployment/hwlab-agent-skills" ], "jobCleanupCommands": [ "kubectl -n hwlab-dev delete job hwlab-agent-worker-template --ignore-not-found", "kubectl -n hwlab-dev delete job hwlab-cli-template --ignore-not-found" ], "postRollbackChecks": [ "kubectl -n hwlab-dev rollout status deployment/hwlab-cloud-api --timeout=120s", "curl -fsS http://74.48.78.17:16667/health/live" ] }, "remainingBlockers": [], "artifactEvidence": [ { "serviceId": "hwlab-cloud-api", "deployCommitId": "73b379f", "catalogCommitId": "73b379f", "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:73b379f", "digest": "sha256:561e50494bf13bf61f83d28b371bc39b860b21333ef9991711853a095bd535bf", "publishState": "published" }, { "serviceId": "hwlab-cloud-web", "deployCommitId": "73b379f", "catalogCommitId": "73b379f", "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:73b379f", "digest": "sha256:c7939658af9f1109e5384619163dd0d11e1a1de14e7d15d4cbde7c4400b495c2", "publishState": "published" }, { "serviceId": "hwlab-agent-mgr", "deployCommitId": "73b379f", "catalogCommitId": "73b379f", "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:73b379f", "digest": "sha256:ae6ca76cd09a7d21e46e0076e12dea1843417a0d59d57b3115915c831e88ebef", "publishState": "published" }, { "serviceId": "hwlab-agent-worker", "deployCommitId": "73b379f", "catalogCommitId": "73b379f", "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:73b379f", "digest": "sha256:4d5f8d8d404fc2826256fb690fdea5570285a34d1bdffbaf1e0c7ca39603ffd8", "publishState": "published" }, { "serviceId": "hwlab-gateway", "deployCommitId": "73b379f", "catalogCommitId": "73b379f", "image": "127.0.0.1:5000/hwlab/hwlab-gateway:73b379f", "digest": "sha256:ff9f3f3dc6332c3d8e4e9825657c296c9664d84a8d40c3ffeab3c1e91a484008", "publishState": "published" }, { "serviceId": "hwlab-gateway-simu", "deployCommitId": "73b379f", "catalogCommitId": "73b379f", "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:73b379f", "digest": "sha256:f5ccff29da331e424a482f92394d071e1be90c0244e7137e07ac33d9a7cc4082", "publishState": "published" }, { "serviceId": "hwlab-box-simu", "deployCommitId": "73b379f", "catalogCommitId": "73b379f", "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:73b379f", "digest": "sha256:2a12c1c462b2c01a9fa15efa75a6e1f17ecc8432dfa88bca53f0d8d4b6355daf", "publishState": "published" }, { "serviceId": "hwlab-patch-panel", "deployCommitId": "73b379f", "catalogCommitId": "73b379f", "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:73b379f", "digest": "sha256:5bc9a1c7ce65026cd7bf6d20a311226b35c796a4d52a914266244bf3c1a17286", "publishState": "published" }, { "serviceId": "hwlab-router", "deployCommitId": "73b379f", "catalogCommitId": "73b379f", "image": "127.0.0.1:5000/hwlab/hwlab-router:73b379f", "digest": "sha256:356f37a7d78cc2f86230c2037f43215ad66979fbe4a949cb9241b5957692d9d8", "publishState": "published" }, { "serviceId": "hwlab-tunnel-client", "deployCommitId": "73b379f", "catalogCommitId": "73b379f", "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:73b379f", "digest": "sha256:8ca553408a633d7f287ca9440f822fb1458dd9a028eb4db178b466b0b5505c49", "publishState": "published" }, { "serviceId": "hwlab-edge-proxy", "deployCommitId": "73b379f", "catalogCommitId": "73b379f", "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:73b379f", "digest": "sha256:480dea831051d45b6d63a489db9c0fa314f88bae35dbf72be4186bf1de356f38", "publishState": "published" }, { "serviceId": "hwlab-cli", "deployCommitId": "73b379f", "catalogCommitId": "73b379f", "image": "127.0.0.1:5000/hwlab/hwlab-cli:73b379f", "digest": "sha256:125154cf59727ec230618c65b07a6235c18c1411f9ad51525ae411040169c9b5", "publishState": "published" }, { "serviceId": "hwlab-agent-skills", "deployCommitId": "73b379f", "catalogCommitId": "73b379f", "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:73b379f", "digest": "sha256:5bdf9a4d17f8f4c7f3ecead99dcbd4de0ac346a2c28fef020b8853cf494df573", "publishState": "published" } ], "cloudApiDb": { "status": "contract-ready", "requiredEnv": [ { "name": "HWLAB_CLOUD_DB_URL", "manifestPresent": true, "k8sPresent": true, "redacted": true, "source": "k8s-secret-ref", "secretRef": { "secretName": "hwlab-cloud-api-dev-db", "secretKey": "database-url", "present": true, "redacted": true } }, { "name": "HWLAB_CLOUD_DB_SSL_MODE", "manifestPresent": true, "k8sPresent": true, "redacted": false, "source": "runtime-env", "secretRef": null } ], "missingManifest": [], "missingK8s": [], "missingSecretRefs": [], "runtimeHealth": { "status": "degraded", "ready": false, "configReady": true, "connected": false, "connectionChecked": false, "requiredEnv": [ { "name": "HWLAB_CLOUD_DB_URL", "present": true, "redacted": true }, { "name": "HWLAB_CLOUD_DB_SSL_MODE", "present": true, "redacted": false } ], "missingEnv": [], "secretRefs": [ { "env": "HWLAB_CLOUD_DB_URL", "secretName": "hwlab-cloud-api-dev-db", "secretKey": "database-url", "present": true, "redacted": true } ], "liveDbEvidence": false, "fixtureEvidence": false }, "secretMaterialRead": false, "valuesRedacted": true, "liveDbEvidence": false, "fixtureEvidence": false, "note": "This check records DB env/Secret reference presence only. It is not live DB evidence." }, "k8sManifest": { "resourceCounts": { "workloads": 13, "services": 12, "configMaps": 1 }, "images": [ { "serviceId": "hwlab-cloud-api", "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:73b379f", "kind": "Deployment", "name": "hwlab-cloud-api" }, { "serviceId": "hwlab-cloud-web", "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:73b379f", "kind": "Deployment", "name": "hwlab-cloud-web" }, { "serviceId": "hwlab-agent-mgr", "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:73b379f", "kind": "Deployment", "name": "hwlab-agent-mgr" }, { "serviceId": "hwlab-agent-worker", "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:73b379f", "kind": "Job", "name": "hwlab-agent-worker-template" }, { "serviceId": "hwlab-gateway", "image": "127.0.0.1:5000/hwlab/hwlab-gateway:73b379f", "kind": "Deployment", "name": "hwlab-gateway" }, { "serviceId": "hwlab-gateway-simu", "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:73b379f", "kind": "Deployment", "name": "hwlab-gateway-simu" }, { "serviceId": "hwlab-box-simu", "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:73b379f", "kind": "Deployment", "name": "hwlab-box-simu" }, { "serviceId": "hwlab-patch-panel", "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:73b379f", "kind": "Deployment", "name": "hwlab-patch-panel" }, { "serviceId": "hwlab-router", "image": "127.0.0.1:5000/hwlab/hwlab-router:73b379f", "kind": "Deployment", "name": "hwlab-router" }, { "serviceId": "hwlab-tunnel-client", "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:73b379f", "kind": "Deployment", "name": "hwlab-tunnel-client" }, { "serviceId": "hwlab-edge-proxy", "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:73b379f", "kind": "Deployment", "name": "hwlab-edge-proxy" }, { "serviceId": "hwlab-cli", "image": "127.0.0.1:5000/hwlab/hwlab-cli:73b379f", "kind": "Job", "name": "hwlab-cli-template" }, { "serviceId": "hwlab-agent-skills", "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:73b379f", "kind": "Deployment", "name": "hwlab-agent-skills" } ] }, "clusterObservation": { "status": "pass", "executor": "/usr/local/bin/kubectl", "version": "clientVersion:\n buildDate: \"2025-09-09T19:44:50Z\"\n compiler: gc\n gitCommit: 93248f9ae092f571eb870b7664c534bfc7d00f03\n gitTreeState: clean\n gitVersion: v1.34.1\n goVersion: go1.24.6\n major: \"1\"\n minor: \"34\"\n platform: linux/amd64\nkustomizeVersion: v5.7.1", "resources": [ { "kind": "Pod", "name": "hwlab-agent-mgr-6b4976cb77-rjc2f", "phase": "Running" }, { "kind": "Pod", "name": "hwlab-agent-skills-76b5d4f4bb-8x55z", "phase": "Running" }, { "kind": "Pod", "name": "hwlab-box-simu-5d574d4675-jb6vb", "phase": "Running" }, { "kind": "Pod", "name": "hwlab-box-simu-5d574d4675-qwp84", "phase": "Running" }, { "kind": "Pod", "name": "hwlab-cloud-api-769848bfd8-k2hdb", "phase": "Running" }, { "kind": "Pod", "name": "hwlab-cloud-web-bc56bc464-l7mdl", "phase": "Running" }, { "kind": "Pod", "name": "hwlab-edge-proxy-544886546-656nq", "phase": "Running" }, { "kind": "Pod", "name": "hwlab-frpc-59f57d479c-wm5l2", "phase": "Running" }, { "kind": "Pod", "name": "hwlab-gateway-simu-744ffffbbd-66q2c", "phase": "Running" }, { "kind": "Pod", "name": "hwlab-gateway-simu-744ffffbbd-rmlzq", "phase": "Running" }, { "kind": "Pod", "name": "hwlab-patch-panel-7d9487bb6c-82qqk", "phase": "Running" }, { "kind": "Pod", "name": "hwlab-router-77465567b6-9qs6t", "phase": "Running" }, { "kind": "Pod", "name": "hwlab-tunnel-client-6449fcb5fb-27sk2", "phase": "Running" }, { "kind": "Service", "name": "hwlab-agent-mgr" }, { "kind": "Service", "name": "hwlab-agent-skills" }, { "kind": "Service", "name": "hwlab-box-simu" }, { "kind": "Service", "name": "hwlab-cli" }, { "kind": "Service", "name": "hwlab-cloud-api" }, { "kind": "Service", "name": "hwlab-cloud-web" }, { "kind": "Service", "name": "hwlab-edge-proxy" }, { "kind": "Service", "name": "hwlab-gateway" }, { "kind": "Service", "name": "hwlab-gateway-simu" }, { "kind": "Service", "name": "hwlab-patch-panel" }, { "kind": "Service", "name": "hwlab-router" }, { "kind": "Service", "name": "hwlab-tunnel-client" }, { "kind": "ConfigMap", "name": "hwlab-dev-health-contract" }, { "kind": "ConfigMap", "name": "hwlab-frpc-config" }, { "kind": "ConfigMap", "name": "kube-root-ca.crt" }, { "kind": "Deployment", "name": "hwlab-agent-mgr", "readyReplicas": 1, "replicas": 1 }, { "kind": "Deployment", "name": "hwlab-agent-skills", "readyReplicas": 1, "replicas": 1 }, { "kind": "Deployment", "name": "hwlab-box-simu", "readyReplicas": 2, "replicas": 2 }, { "kind": "Deployment", "name": "hwlab-cloud-api", "readyReplicas": 1, "replicas": 1 }, { "kind": "Deployment", "name": "hwlab-cloud-web", "readyReplicas": 1, "replicas": 1 }, { "kind": "Deployment", "name": "hwlab-edge-proxy", "readyReplicas": 1, "replicas": 1 }, { "kind": "Deployment", "name": "hwlab-frpc", "readyReplicas": 1, "replicas": 1 }, { "kind": "Deployment", "name": "hwlab-gateway" }, { "kind": "Deployment", "name": "hwlab-gateway-simu", "readyReplicas": 2, "replicas": 2 }, { "kind": "Deployment", "name": "hwlab-patch-panel", "readyReplicas": 1, "replicas": 1 }, { "kind": "Deployment", "name": "hwlab-router", "readyReplicas": 1, "replicas": 1 }, { "kind": "Deployment", "name": "hwlab-tunnel-client", "readyReplicas": 1, "replicas": 1 }, { "kind": "Job", "name": "hwlab-agent-worker-template" }, { "kind": "Job", "name": "hwlab-cli-template" } ] }, "liveProbe": { "status": "pass", "url": "http://74.48.78.17:16667/health/live", "httpStatus": 200, "body": "{\"serviceId\":\"hwlab-cloud-api\",\"environment\":\"dev\",\"status\":\"degraded\",\"service\":{\"id\":\"hwlab-cloud-api\",\"role\":\"cloud-api\",\"healthPath\":\"/health\",\"livePath\":\"/health/live\"},\"commit\":{\"id\":\"73b379f\",\"source\":\"runtime-env\"},\"image\":{\"reference\":\"127.0.0.1:5000/hwlab/hwlab-cloud-api:73b379f\",\"tag\":\"73b379f\",\"digest\":\"unknown\"},\"endpoint\":\"http://74.48.78.17:16667\",\"observedAt\":\"2026-05-22T03:38:25.142Z\",\"db\":{\"contractVersion\":\"v1\",\"environment\":\"dev\",\"connected\":false,\"connectionChecked\":false,\"c" } }, "blockers": [], "notes": "DEV-only result. No PROD resources, secret values, force push, heavy e2e, browser e2e, or UniDesk runtime substitute were used." }