{ "$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#164", "pikasTech/HWLAB#143", "pikasTech/HWLAB#99", "pikasTech/HWLAB#63", "pikasTech/HWLAB#50", "pikasTech/HWLAB#7", "pikasTech/HWLAB#33", "pikasTech/HWLAB#17", "pikasTech/HWLAB#32", "pikasTech/HWLAB#30" ], "taskId": "dev-deploy-apply", "commitId": "4d2a0ba", "acceptanceLevel": "dev_deploy_apply", "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": "Current DEV deploy apply report; active public API/health endpoint is 16667 and browser endpoint is 16666." }, "status": "pass", "generatedAt": "2026-05-23T08:34:34.256Z", "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: 4d2a0ba", "namespace: hwlab-dev", "workloads planned: 13", "kubectl executor: /usr/local/bin/kubectl", "kubectl kubeconfig source: env:KUBECONFIG", "kubectl kubeconfig: /var/lib/unidesk/code-queue/kubeconfig", "live health: pass", "code agent provider desired-state: pass", "code agent provider live env before apply: pass", "template job replacements: 2", "legacy simulator deployment cleanups: 0" ], "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", "hwlab-cloud-api must declare and preserve OPENAI_API_KEY from hwlab-code-agent-provider/openai-api-key plus the DEV Code Agent egress proxy env without reading 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" ], "kubeconfigSource": "env:KUBECONFIG", "writeScope": "KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig kubectl apply -k deploy/k8s/dev, namespace hwlab-dev only; delete/recreate is allowed only for explicitly allowlisted suspended DEV template Jobs and stale legacy simulator Deployments", "noWriteScope": "source/catalog/k8s validation, optional DEV health probe, KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig kubectl read, replacement planning, 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": "4d2a0ba", "deployCommitId": "4d2a0ba", "catalogCommitId": "4d2a0ba", "sourceCommitId": "4d2a0ba", "serviceCommitIds": [ "4d2a0ba" ], "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:4d2a0ba" } ] }, { "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:4d2a0ba" } ] }, { "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:4d2a0ba" } ] }, { "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:4d2a0ba" } ] }, { "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:4d2a0ba" } ] }, { "kind": "StatefulSet", "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:4d2a0ba" } ] }, { "kind": "StatefulSet", "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:4d2a0ba" } ] }, { "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:4d2a0ba" } ] }, { "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:4d2a0ba" } ] }, { "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:4d2a0ba" } ] }, { "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:4d2a0ba" } ] }, { "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:4d2a0ba" } ] }, { "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:4d2a0ba" } ] } ], "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-gateway-simu-1", "namespace": "hwlab-dev", "serviceId": "hwlab-gateway-simu", "type": "ClusterIP", "ports": [ { "name": "http", "port": 7101, "targetPort": "http" } ] }, { "kind": "Service", "name": "hwlab-gateway-simu-2", "namespace": "hwlab-dev", "serviceId": "hwlab-gateway-simu", "type": "ClusterIP", "ports": [ { "name": "http", "port": 7101, "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-box-simu-1", "namespace": "hwlab-dev", "serviceId": "hwlab-box-simu", "type": "ClusterIP", "ports": [ { "name": "http", "port": 7201, "targetPort": "http" } ] }, { "kind": "Service", "name": "hwlab-box-simu-2", "namespace": "hwlab-dev", "serviceId": "hwlab-box-simu", "type": "ClusterIP", "ports": [ { "name": "http", "port": 7201, "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" } ] } ], "templateJobReplacementPolicy": { "status": "active", "namespace": "hwlab-dev", "scope": "DEV-only suspended template Jobs", "allowedJobs": [ { "name": "hwlab-agent-worker-template", "serviceId": "hwlab-agent-worker", "reason": "suspended session worker template Job has immutable spec.template" }, { "name": "hwlab-cli-template", "serviceId": "hwlab-cli", "reason": "suspended CLI template Job has immutable spec.template" } ] }, "templateJobReplacements": [ { "namespace": "hwlab-dev", "jobName": "hwlab-agent-worker-template", "allowed": true, "desiredSuspended": true, "liveExists": true, "liveSuspended": true, "oldImage": "127.0.0.1:5000/hwlab/hwlab-agent-worker:2343328", "newImage": "127.0.0.1:5000/hwlab/hwlab-agent-worker:4d2a0ba", "oldImages": [ { "name": "hwlab-agent-worker", "serviceId": "hwlab-agent-worker", "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:2343328" } ], "newImages": [ { "name": "hwlab-agent-worker", "serviceId": "hwlab-agent-worker", "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:4d2a0ba" } ], "replace": true, "result": "replaced", "reason": "Live suspended template Job was deleted and recreated by kubectl apply.", "deleteCommand": "KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig kubectl -n hwlab-dev delete job hwlab-agent-worker-template --ignore-not-found=true", "deleteStdout": "job.batch \"hwlab-agent-worker-template\" deleted from hwlab-dev namespace", "deleteStderr": "" }, { "namespace": "hwlab-dev", "jobName": "hwlab-cli-template", "allowed": true, "desiredSuspended": true, "liveExists": true, "liveSuspended": true, "oldImage": "127.0.0.1:5000/hwlab/hwlab-cli:2343328", "newImage": "127.0.0.1:5000/hwlab/hwlab-cli:4d2a0ba", "oldImages": [ { "name": "hwlab-cli", "serviceId": "hwlab-cli", "image": "127.0.0.1:5000/hwlab/hwlab-cli:2343328" } ], "newImages": [ { "name": "hwlab-cli", "serviceId": "hwlab-cli", "image": "127.0.0.1:5000/hwlab/hwlab-cli:4d2a0ba" } ], "replace": true, "result": "replaced", "reason": "Live suspended template Job was deleted and recreated by kubectl apply.", "deleteCommand": "KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig kubectl -n hwlab-dev delete job hwlab-cli-template --ignore-not-found=true", "deleteStdout": "job.batch \"hwlab-cli-template\" deleted from hwlab-dev namespace", "deleteStderr": "" } ], "legacySimulatorDeploymentCleanupPolicy": { "status": "active", "namespace": "hwlab-dev", "scope": "DEV-only stale simulator Deployments replaced by indexed StatefulSets", "allowedDeployments": [ { "name": "hwlab-gateway-simu", "serviceId": "hwlab-gateway-simu", "replacementKind": "StatefulSet", "reason": "M3 DEV requires exactly two indexed gateway-simu identities/sessions" }, { "name": "hwlab-box-simu", "serviceId": "hwlab-box-simu", "replacementKind": "StatefulSet", "reason": "M3 DEV requires exactly two indexed box-simu resource identities" } ] }, "legacySimulatorDeploymentCleanups": [ { "namespace": "hwlab-dev", "deploymentName": "hwlab-gateway-simu", "serviceId": "hwlab-gateway-simu", "allowed": true, "desiredReplacementExists": true, "desiredReplacementKind": "StatefulSet", "liveExists": false, "oldImage": null, "newImage": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:4d2a0ba", "oldImages": [], "newImages": [ { "name": "hwlab-gateway-simu", "serviceId": "hwlab-gateway-simu", "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:4d2a0ba" } ], "cleanup": false, "result": "not_found", "reason": "Live legacy Deployment is absent; no cleanup is needed." }, { "namespace": "hwlab-dev", "deploymentName": "hwlab-box-simu", "serviceId": "hwlab-box-simu", "allowed": true, "desiredReplacementExists": true, "desiredReplacementKind": "StatefulSet", "liveExists": false, "oldImage": null, "newImage": "127.0.0.1:5000/hwlab/hwlab-box-simu:4d2a0ba", "oldImages": [], "newImages": [ { "name": "hwlab-box-simu", "serviceId": "hwlab-box-simu", "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:4d2a0ba" } ], "cleanup": false, "result": "not_found", "reason": "Live legacy Deployment is absent; no cleanup is needed." } ], "cloudWebRollout": { "serviceId": "hwlab-cloud-web", "namespace": "hwlab-dev", "status": "observed", "observationPhase": "after_apply", "sourceCommitId": "4d2a0ba", "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:4d2a0ba", "imageTag": "4d2a0ba", "digest": "sha256:fe834adbfd8cf0ca7e514af6c71dfe7243540084f81e6ef124549e4071e1d200", "repositoryDigest": null, "publishState": "published", "rolloutRevision": "30", "liveImage": "127.0.0.1:5000/hwlab/hwlab-cloud-web:4d2a0ba", "imageMatchesDesired": true, "expectedRuntimeEnv": { "HWLAB_COMMIT_ID": "4d2a0ba", "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-web:4d2a0ba", "HWLAB_IMAGE_TAG": "4d2a0ba" }, "liveRuntimeEnv": { "status": "match", "matchesDesired": true, "fields": [ { "name": "HWLAB_COMMIT_ID", "expected": "4d2a0ba", "actual": "4d2a0ba", "status": "match" }, { "name": "HWLAB_IMAGE", "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:4d2a0ba", "actual": "127.0.0.1:5000/hwlab/hwlab-cloud-web:4d2a0ba", "status": "match" }, { "name": "HWLAB_IMAGE_TAG", "expected": "4d2a0ba", "actual": "4d2a0ba", "status": "match" } ], "drift": [] }, "runtimeEnvMatchesDesired": true, "runtimeEnvDrift": [], "verificationCommand": "KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig kubectl -n hwlab-dev rollout status deployment/hwlab-cloud-web --timeout=180s", "readCommand": "KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig kubectl -n hwlab-dev get deployment hwlab-cloud-web -o json", "kubeconfig": "/var/lib/unidesk/code-queue/kubeconfig", "kubeconfigSource": "env:KUBECONFIG" }, "cloudWebRolloutBeforeApply": { "serviceId": "hwlab-cloud-web", "namespace": "hwlab-dev", "status": "observed", "observationPhase": "before_apply", "sourceCommitId": "4d2a0ba", "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:4d2a0ba", "imageTag": "4d2a0ba", "digest": "sha256:fe834adbfd8cf0ca7e514af6c71dfe7243540084f81e6ef124549e4071e1d200", "repositoryDigest": null, "publishState": "published", "rolloutRevision": "29", "liveImage": "127.0.0.1:5000/hwlab/hwlab-cloud-web:2343328", "imageMatchesDesired": false, "expectedRuntimeEnv": { "HWLAB_COMMIT_ID": "4d2a0ba", "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-web:4d2a0ba", "HWLAB_IMAGE_TAG": "4d2a0ba" }, "liveRuntimeEnv": { "status": "drift", "matchesDesired": false, "fields": [ { "name": "HWLAB_COMMIT_ID", "expected": "4d2a0ba", "actual": "2343328", "status": "drift" }, { "name": "HWLAB_IMAGE", "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:4d2a0ba", "actual": "127.0.0.1:5000/hwlab/hwlab-cloud-web:2343328", "status": "drift" }, { "name": "HWLAB_IMAGE_TAG", "expected": "4d2a0ba", "actual": "2343328", "status": "drift" } ], "drift": [ { "name": "HWLAB_COMMIT_ID", "expected": "4d2a0ba", "actual": "2343328", "status": "drift" }, { "name": "HWLAB_IMAGE", "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:4d2a0ba", "actual": "127.0.0.1:5000/hwlab/hwlab-cloud-web:2343328", "status": "drift" }, { "name": "HWLAB_IMAGE_TAG", "expected": "4d2a0ba", "actual": "2343328", "status": "drift" } ] }, "runtimeEnvMatchesDesired": false, "runtimeEnvDrift": [ { "name": "HWLAB_COMMIT_ID", "expected": "4d2a0ba", "actual": "2343328", "status": "drift" }, { "name": "HWLAB_IMAGE", "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:4d2a0ba", "actual": "127.0.0.1:5000/hwlab/hwlab-cloud-web:2343328", "status": "drift" }, { "name": "HWLAB_IMAGE_TAG", "expected": "4d2a0ba", "actual": "2343328", "status": "drift" } ], "verificationCommand": "KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig kubectl -n hwlab-dev rollout status deployment/hwlab-cloud-web --timeout=180s", "readCommand": "KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig kubectl -n hwlab-dev get deployment hwlab-cloud-web -o json", "kubeconfig": "/var/lib/unidesk/code-queue/kubeconfig", "kubeconfigSource": "env:KUBECONFIG" }, "cloudWebRolloutAfterApply": { "serviceId": "hwlab-cloud-web", "namespace": "hwlab-dev", "status": "observed", "observationPhase": "after_apply", "sourceCommitId": "4d2a0ba", "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:4d2a0ba", "imageTag": "4d2a0ba", "digest": "sha256:fe834adbfd8cf0ca7e514af6c71dfe7243540084f81e6ef124549e4071e1d200", "repositoryDigest": null, "publishState": "published", "rolloutRevision": "30", "liveImage": "127.0.0.1:5000/hwlab/hwlab-cloud-web:4d2a0ba", "imageMatchesDesired": true, "expectedRuntimeEnv": { "HWLAB_COMMIT_ID": "4d2a0ba", "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-web:4d2a0ba", "HWLAB_IMAGE_TAG": "4d2a0ba" }, "liveRuntimeEnv": { "status": "match", "matchesDesired": true, "fields": [ { "name": "HWLAB_COMMIT_ID", "expected": "4d2a0ba", "actual": "4d2a0ba", "status": "match" }, { "name": "HWLAB_IMAGE", "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:4d2a0ba", "actual": "127.0.0.1:5000/hwlab/hwlab-cloud-web:4d2a0ba", "status": "match" }, { "name": "HWLAB_IMAGE_TAG", "expected": "4d2a0ba", "actual": "4d2a0ba", "status": "match" } ], "drift": [] }, "runtimeEnvMatchesDesired": true, "runtimeEnvDrift": [], "verificationCommand": "KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig kubectl -n hwlab-dev rollout status deployment/hwlab-cloud-web --timeout=180s", "readCommand": "KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig kubectl -n hwlab-dev get deployment hwlab-cloud-web -o json", "kubeconfig": "/var/lib/unidesk/code-queue/kubeconfig", "kubeconfigSource": "env:KUBECONFIG" }, "codeAgentProvider": { "desiredState": { "contractVersion": "v1", "environment": "dev", "provider": "openai-responses", "model": "gpt-5.5", "status": "pass", "ready": true, "requiredEnv": [ { "name": "HWLAB_CODE_AGENT_PROVIDER", "deployPresent": true, "workloadPresent": true, "redacted": false, "source": "runtime-env" }, { "name": "HWLAB_CODE_AGENT_MODEL", "deployPresent": true, "workloadPresent": true, "redacted": false, "source": "runtime-env" }, { "name": "OPENAI_API_KEY", "deployPresent": true, "workloadPresent": true, "redacted": true, "source": "k8s-secret-ref" }, { "name": "HWLAB_CODE_AGENT_OPENAI_BASE_URL", "deployPresent": true, "workloadPresent": true, "redacted": true, "source": "runtime-env" } ], "secretRef": { "env": "OPENAI_API_KEY", "secretName": "hwlab-code-agent-provider", "secretKey": "openai-api-key", "deployPlaceholderPresent": true, "workloadSecretRefPresent": true, "present": true, "redacted": true }, "egress": { "env": "HWLAB_CODE_AGENT_OPENAI_BASE_URL", "target": "dev-egress-proxy", "deployPresent": true, "workloadPresent": true, "deployMatchesDevProxy": true, "workloadMatchesDevProxy": true, "directPublicOpenAi": false, "valueRedacted": true }, "missingDeployEnv": [], "missingWorkloadEnv": [], "deployMismatches": [], "workloadMismatches": [], "missingSecretRefs": [], "missingEgressContract": [], "secretMaterialRead": false, "valuesRedacted": true, "providerConnected": false, "fixtureEvidence": false }, "liveBeforeApply": { "phase": "before_apply", "namespace": "hwlab-dev", "serviceId": "hwlab-cloud-api", "status": "pass", "readCommand": "KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig kubectl -n hwlab-dev get deployment hwlab-cloud-api -o json", "kubeconfig": "/var/lib/unidesk/code-queue/kubeconfig", "expectedSecretRef": "hwlab-code-agent-provider/openai-api-key", "expectedEgressTarget": "dev-egress-proxy", "secretValuesRead": false, "kubernetesSecretDataRead": false, "valuesRedacted": true, "contractVersion": "v1", "environment": "dev", "provider": "openai-responses", "model": "gpt-5.5", "ready": true, "requiredEnv": [ { "name": "HWLAB_CODE_AGENT_PROVIDER", "present": true, "redacted": false, "source": "runtime-env" }, { "name": "HWLAB_CODE_AGENT_MODEL", "present": true, "redacted": false, "source": "runtime-env" }, { "name": "OPENAI_API_KEY", "present": true, "redacted": true, "source": "k8s-secret-ref" }, { "name": "HWLAB_CODE_AGENT_OPENAI_BASE_URL", "present": true, "redacted": true, "source": "runtime-env" } ], "missingEnv": [], "mismatchedEnv": [], "secretRef": { "env": "OPENAI_API_KEY", "secretName": "hwlab-code-agent-provider", "secretKey": "openai-api-key", "present": true, "redacted": true }, "egress": { "env": "HWLAB_CODE_AGENT_OPENAI_BASE_URL", "target": "dev-egress-proxy", "present": true, "matchesDevProxy": true, "directPublicOpenAi": false, "valueRedacted": true }, "secretMaterialRead": false, "providerConnected": false, "deployment": "hwlab-cloud-api", "container": "hwlab-cloud-api", "validationScope": "deployment-env-and-secretKeyRef-metadata-only" }, "liveAfterApply": { "phase": "after_apply", "namespace": "hwlab-dev", "serviceId": "hwlab-cloud-api", "status": "pass", "readCommand": "KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig kubectl -n hwlab-dev get deployment hwlab-cloud-api -o json", "kubeconfig": "/var/lib/unidesk/code-queue/kubeconfig", "expectedSecretRef": "hwlab-code-agent-provider/openai-api-key", "expectedEgressTarget": "dev-egress-proxy", "secretValuesRead": false, "kubernetesSecretDataRead": false, "valuesRedacted": true, "contractVersion": "v1", "environment": "dev", "provider": "openai-responses", "model": "gpt-5.5", "ready": true, "requiredEnv": [ { "name": "HWLAB_CODE_AGENT_PROVIDER", "present": true, "redacted": false, "source": "runtime-env" }, { "name": "HWLAB_CODE_AGENT_MODEL", "present": true, "redacted": false, "source": "runtime-env" }, { "name": "OPENAI_API_KEY", "present": true, "redacted": true, "source": "k8s-secret-ref" }, { "name": "HWLAB_CODE_AGENT_OPENAI_BASE_URL", "present": true, "redacted": true, "source": "runtime-env" } ], "missingEnv": [], "mismatchedEnv": [], "secretRef": { "env": "OPENAI_API_KEY", "secretName": "hwlab-code-agent-provider", "secretKey": "openai-api-key", "present": true, "redacted": true }, "egress": { "env": "HWLAB_CODE_AGENT_OPENAI_BASE_URL", "target": "dev-egress-proxy", "present": true, "matchesDevProxy": true, "directPublicOpenAi": false, "valueRedacted": true }, "secretMaterialRead": false, "providerConnected": false, "deployment": "hwlab-cloud-api", "container": "hwlab-cloud-api", "validationScope": "deployment-env-and-secretKeyRef-metadata-only" }, "validationGate": "no-secret provider env/secretKeyRef preservation", "providerCallAttempted": false, "secretValuesRead": false, "kubernetesSecretDataRead": false, "valuesRedacted": true }, "applyStep": { "status": "pass", "command": "KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig 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-box-simu-1 unchanged\nservice/hwlab-box-simu-2 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-gateway-simu-1 unchanged\nservice/hwlab-gateway-simu-2 unchanged\nservice/hwlab-patch-panel unchanged\nservice/hwlab-router unchanged\nservice/hwlab-tunnel-client unchanged\ndeployment.apps/hwlab-agent-mgr configured\ndeployment.apps/hwlab-agent-skills configured\ndeployment.apps/hwlab-cloud-api configured\ndeployment.apps/hwlab-cloud-web configured\ndeployment.apps/hwlab-edge-proxy configured\ndeployment.apps/hwlab-gateway configured\ndeployment.apps/hwlab-patch-panel configured\ndeployment.apps/hwlab-router configured\ndeployment.apps/hwlab-tunnel-client configured\nstatefulset.apps/hwlab-box-simu configured\nstatefulset.apps/hwlab-gateway-simu configured\njob.batch/hwlab-agent-worker-template created\njob.batch/hwlab-cli-template created", "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.", "mutationAttempted": true, "expectedImmutableTemplateJobDryRun": false, "expectedImmutableTemplateJobs": [] }, "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": [ "KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig kubectl -n hwlab-dev get pods,services,configmaps,deployments,jobs -o wide", "KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig kubectl -n hwlab-dev get deployments -o json" ], "deploymentRollbackCommands": [ "KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig kubectl -n hwlab-dev rollout undo deployment/hwlab-cloud-api", "KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig kubectl -n hwlab-dev rollout undo deployment/hwlab-cloud-web", "KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig kubectl -n hwlab-dev rollout undo deployment/hwlab-agent-mgr", "KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig kubectl -n hwlab-dev rollout undo deployment/hwlab-gateway", "KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig kubectl -n hwlab-dev rollout undo deployment/hwlab-patch-panel", "KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig kubectl -n hwlab-dev rollout undo deployment/hwlab-router", "KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig kubectl -n hwlab-dev rollout undo deployment/hwlab-tunnel-client", "KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig kubectl -n hwlab-dev rollout undo deployment/hwlab-edge-proxy", "KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig kubectl -n hwlab-dev rollout undo deployment/hwlab-agent-skills" ], "jobCleanupCommands": [ "KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig kubectl -n hwlab-dev delete job hwlab-agent-worker-template --ignore-not-found", "KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig kubectl -n hwlab-dev delete job hwlab-cli-template --ignore-not-found" ], "postRollbackChecks": [ "KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig 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": "4d2a0ba", "catalogCommitId": "4d2a0ba", "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:4d2a0ba", "digest": "sha256:a295d92e3e11c4a7f04d80b90c5a0f4e59ffd6a83c3aa3ed8f86e14db1a88b14", "publishState": "published" }, { "serviceId": "hwlab-cloud-web", "deployCommitId": "4d2a0ba", "catalogCommitId": "4d2a0ba", "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:4d2a0ba", "digest": "sha256:fe834adbfd8cf0ca7e514af6c71dfe7243540084f81e6ef124549e4071e1d200", "publishState": "published" }, { "serviceId": "hwlab-agent-mgr", "deployCommitId": "4d2a0ba", "catalogCommitId": "4d2a0ba", "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:4d2a0ba", "digest": "sha256:7df780347df148f1303c498f35aba19d9c10f2f86899e9729afda978e7a27b2d", "publishState": "published" }, { "serviceId": "hwlab-agent-worker", "deployCommitId": "4d2a0ba", "catalogCommitId": "4d2a0ba", "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:4d2a0ba", "digest": "sha256:21ff26ae035b97a181b3986f46d27305879502fb4aab30a94924ce9f8ab6bcd6", "publishState": "published" }, { "serviceId": "hwlab-gateway", "deployCommitId": "4d2a0ba", "catalogCommitId": "4d2a0ba", "image": "127.0.0.1:5000/hwlab/hwlab-gateway:4d2a0ba", "digest": "sha256:cdb8c86de03d9c1ab2c224b5d50d4048a8336942e507793f9fd450020f91b028", "publishState": "published" }, { "serviceId": "hwlab-gateway-simu", "deployCommitId": "4d2a0ba", "catalogCommitId": "4d2a0ba", "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:4d2a0ba", "digest": "sha256:daae618cdc7fb176d7dc769956e3d5948d1abade09e35dd29daf9c86a37f8fd1", "publishState": "published" }, { "serviceId": "hwlab-box-simu", "deployCommitId": "4d2a0ba", "catalogCommitId": "4d2a0ba", "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:4d2a0ba", "digest": "sha256:5ba916ed43a8e35e5052f16fd380a3e6004aea10b2e99b8375cc5ba6439702e7", "publishState": "published" }, { "serviceId": "hwlab-patch-panel", "deployCommitId": "4d2a0ba", "catalogCommitId": "4d2a0ba", "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:4d2a0ba", "digest": "sha256:7df24c38a83ccf743a155f8b913541a4d9224e0436c646206a9e5e4a9d43192f", "publishState": "published" }, { "serviceId": "hwlab-router", "deployCommitId": "4d2a0ba", "catalogCommitId": "4d2a0ba", "image": "127.0.0.1:5000/hwlab/hwlab-router:4d2a0ba", "digest": "sha256:c918d15ebee2175e720ecb0c854701bed51a1e7753a996f9e69b99e8d530c77b", "publishState": "published" }, { "serviceId": "hwlab-tunnel-client", "deployCommitId": "4d2a0ba", "catalogCommitId": "4d2a0ba", "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:4d2a0ba", "digest": "sha256:ba8e496adf33ba7478c563291b84df0d30958f70576b23a8083972a5e5884e23", "publishState": "published" }, { "serviceId": "hwlab-edge-proxy", "deployCommitId": "4d2a0ba", "catalogCommitId": "4d2a0ba", "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:4d2a0ba", "digest": "sha256:e07c05b6b06aef750d02d9f82a34f3b43a1a9df3a668fe60d348abe5931a6650", "publishState": "published" }, { "serviceId": "hwlab-cli", "deployCommitId": "4d2a0ba", "catalogCommitId": "4d2a0ba", "image": "127.0.0.1:5000/hwlab/hwlab-cli:4d2a0ba", "digest": "sha256:3d5baeb3343b81f62f20c3ffd143e55a899a697ebb5f1ac294bf89ace550a367", "publishState": "published" }, { "serviceId": "hwlab-agent-skills", "deployCommitId": "4d2a0ba", "catalogCommitId": "4d2a0ba", "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:4d2a0ba", "digest": "sha256:fd88f8f2d2d43d4420c5f70306f5810cb756bea9c0b206410cb7fa694cb67ce1", "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": [], "mismatchedNonSecretEnv": [], "missingDnsContract": [], "dns": { "ready": true, "source": "optional-public-dns-alias", "serviceName": "cloud-api-db", "namespace": "hwlab-dev", "port": 5432, "portName": "postgres", "requiredForReadiness": false, "usedForProbe": false, "servicePresent": false, "secretMaterialRead": false, "liveDbEvidence": false, "missing": [], "actual": {} }, "runtimeHealth": { "status": "degraded", "ready": false, "configReady": true, "connected": false, "liveConnected": false, "connectionChecked": false, "connectionAttempted": false, "connectionResult": "unknown", "liveDbEvidence": 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, "envInjected": true, "secretPresent": "not_observed", "secretKeyPresent": "not_observed", "redacted": true } ], "endpointSource": "secret-url-host", "optionalPublicDnsAlias": { "source": "optional-public-dns-alias", "serviceName": "cloud-api-db", "namespace": "hwlab-dev", "port": 5432, "portName": "postgres", "requiredForReadiness": false, "usedForProbe": false, "envPresent": false, "readyGate": "not_readiness_authority" }, "connection": { "attempted": false, "result": "unknown", "endpointRedacted": true, "valueRedacted": true }, "redaction": { "valuesRedacted": true, "endpointRedacted": true, "valueRedacted": true, "secretMaterialRead": false, "secretRefsOnly": true }, "readinessLayers": { "dns": { "status": "not_proven", "result": "unknown" }, "tcp": { "status": "not_proven", "result": "unknown" }, "ssl": { "status": "not_proven", "result": "unknown" }, "auth": { "status": "not_proven", "result": "unknown" }, "schema": { "status": "not_proven", "result": "unknown" }, "migration": { "status": "not_proven", "result": "unknown" }, "durability": { "status": "not_proven", "result": "unknown" } }, "blocker": null, "fixtureEvidence": false }, "secretMaterialRead": false, "valuesRedacted": true, "liveDbEvidence": false, "fixtureEvidence": false, "note": "This check records DB env, Secret reference, and Secret URL host authority only. Optional cloud-api-db alias presence is diagnostic and is not live DB evidence." }, "k8sManifest": { "resourceCounts": { "workloads": 13, "services": 16, "configMaps": 1 }, "images": [ { "serviceId": "hwlab-cloud-api", "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:4d2a0ba", "kind": "Deployment", "name": "hwlab-cloud-api" }, { "serviceId": "hwlab-cloud-web", "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:4d2a0ba", "kind": "Deployment", "name": "hwlab-cloud-web" }, { "serviceId": "hwlab-agent-mgr", "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:4d2a0ba", "kind": "Deployment", "name": "hwlab-agent-mgr" }, { "serviceId": "hwlab-agent-worker", "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:4d2a0ba", "kind": "Job", "name": "hwlab-agent-worker-template" }, { "serviceId": "hwlab-gateway", "image": "127.0.0.1:5000/hwlab/hwlab-gateway:4d2a0ba", "kind": "Deployment", "name": "hwlab-gateway" }, { "serviceId": "hwlab-gateway-simu", "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:4d2a0ba", "kind": "StatefulSet", "name": "hwlab-gateway-simu" }, { "serviceId": "hwlab-box-simu", "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:4d2a0ba", "kind": "StatefulSet", "name": "hwlab-box-simu" }, { "serviceId": "hwlab-patch-panel", "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:4d2a0ba", "kind": "Deployment", "name": "hwlab-patch-panel" }, { "serviceId": "hwlab-router", "image": "127.0.0.1:5000/hwlab/hwlab-router:4d2a0ba", "kind": "Deployment", "name": "hwlab-router" }, { "serviceId": "hwlab-tunnel-client", "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:4d2a0ba", "kind": "Deployment", "name": "hwlab-tunnel-client" }, { "serviceId": "hwlab-edge-proxy", "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:4d2a0ba", "kind": "Deployment", "name": "hwlab-edge-proxy" }, { "serviceId": "hwlab-cli", "image": "127.0.0.1:5000/hwlab/hwlab-cli:4d2a0ba", "kind": "Job", "name": "hwlab-cli-template" }, { "serviceId": "hwlab-agent-skills", "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:4d2a0ba", "kind": "Deployment", "name": "hwlab-agent-skills" } ], "runtimeIdentityEnv": [ { "serviceId": "hwlab-cloud-web", "kind": "Deployment", "name": "hwlab-cloud-web", "container": "hwlab-cloud-web", "expected": { "HWLAB_COMMIT_ID": "4d2a0ba", "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-web:4d2a0ba", "HWLAB_IMAGE_TAG": "4d2a0ba" }, "status": "match", "matchesDesired": true, "fields": [ { "name": "HWLAB_COMMIT_ID", "expected": "4d2a0ba", "actual": "4d2a0ba", "status": "match" }, { "name": "HWLAB_IMAGE", "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:4d2a0ba", "actual": "127.0.0.1:5000/hwlab/hwlab-cloud-web:4d2a0ba", "status": "match" }, { "name": "HWLAB_IMAGE_TAG", "expected": "4d2a0ba", "actual": "4d2a0ba", "status": "match" } ], "drift": [] } ] }, "clusterObservation": { "status": "pass", "executor": "/usr/local/bin/kubectl", "kubeconfig": "/var/lib/unidesk/code-queue/kubeconfig", "kubeconfigSource": "env:KUBECONFIG", "commandPrefix": "KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig kubectl", "readCommand": "KUBECONFIG=/var/lib/unidesk/code-queue/kubeconfig kubectl get pods,services,configmaps,deployments,jobs -n hwlab-dev -o json", "version": "clientVersion:\n buildDate: \"2026-05-12T09:54:35Z\"\n compiler: gc\n gitCommit: 756939600b9a7180fc2df6550a4585b638875e67\n gitTreeState: clean\n gitVersion: v1.36.1\n goVersion: go1.26.2\n major: \"1\"\n minor: \"36\"\n platform: linux/amd64\nkustomizeVersion: v5.8.1", "resources": [ { "kind": "Pod", "name": "hwlab-agent-mgr-6487c6d6c7-5xhdx", "phase": "Running" }, { "kind": "Pod", "name": "hwlab-agent-skills-56488f6b58-h8jkx", "phase": "Running" }, { "kind": "Pod", "name": "hwlab-box-simu-0", "phase": "Running" }, { "kind": "Pod", "name": "hwlab-box-simu-1", "phase": "Running" }, { "kind": "Pod", "name": "hwlab-cloud-api-794868f84d-q8mr7", "phase": "Running" }, { "kind": "Pod", "name": "hwlab-cloud-web-5c746559b6-p9ktp", "phase": "Running" }, { "kind": "Pod", "name": "hwlab-edge-proxy-5fbb997574-njgwz", "phase": "Running" }, { "kind": "Pod", "name": "hwlab-frpc-59f57d479c-wm5l2", "phase": "Running" }, { "kind": "Pod", "name": "hwlab-gateway-simu-0", "phase": "Running" }, { "kind": "Pod", "name": "hwlab-gateway-simu-1", "phase": "Running" }, { "kind": "Pod", "name": "hwlab-patch-panel-5d75c58559-w7dq7", "phase": "Running" }, { "kind": "Pod", "name": "hwlab-router-5777cb4d7d-kn8tz", "phase": "Running" }, { "kind": "Pod", "name": "hwlab-tunnel-client-65f85d7c8d-rpqrb", "phase": "Running" }, { "kind": "Service", "name": "hwlab-agent-mgr" }, { "kind": "Service", "name": "hwlab-agent-skills" }, { "kind": "Service", "name": "hwlab-box-simu" }, { "kind": "Service", "name": "hwlab-box-simu-1" }, { "kind": "Service", "name": "hwlab-box-simu-2" }, { "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-gateway-simu-1" }, { "kind": "Service", "name": "hwlab-gateway-simu-2" }, { "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-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-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\",\"ready\":false,\"readiness\":{\"contractVersion\":\"v3\",\"ready\":false,\"status\":\"degraded\",\"blockerCodes\":[\"runtime_durable_adapter_auth_blocked\"],\"blockers\":[{\"code\":\"runtime_durable_adapter_auth_blocked\",\"type\":\"runtime_blocker\",\"scope\":\"runtime-durable-adapter\",\"status\":\"open\",\"sourceIssue\":\"pikasTech/HWLAB#164\",\"summary\":\"Postgres runtime adapter reached the DB driver but authentication or authorization blocked the schema query\"" } }, "blockers": [], "notes": "DEV-only result. No PROD resources, secret values, force push, heavy e2e, browser e2e, or UniDesk runtime substitute were used." }