{ "$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", "taskId": "dev-deploy-apply", "commitId": "d312cd0f3f2e", "acceptanceLevel": "dev_deploy_apply", "devOnly": true, "prodDisabled": true, "status": "blocked", "generatedAt": "2026-05-21T16:43:19.846Z", "namespace": "hwlab-dev", "endpoint": "http://74.48.78.17:6667", "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 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": "blocked", "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", "kubectl executor: missing", "live health: blocked" ], "summary": "DEV apply is blocked before mutation." }, "devPreconditions": { "status": "blocked", "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 connectivity", "pods, services, configmaps, and image commit tags must be observable in hwlab-dev" ], "summary": "One or more required DEV deploy preconditions are blocked." }, "devDeployApply": { "mode": "dry-run", "mutationAttempted": false, "applyStep": { "status": "not_run", "summary": "Skipped because preflight blockers are open" }, "artifactEvidence": [ { "serviceId": "hwlab-cloud-api", "deployCommitId": "24eb3bf", "catalogCommitId": "24eb3bf", "image": "ghcr.io/pikastech/hwlab-cloud-api:24eb3bf", "digest": "not_published", "publishState": "skeleton-only" }, { "serviceId": "hwlab-cloud-web", "deployCommitId": "24eb3bf", "catalogCommitId": "24eb3bf", "image": "ghcr.io/pikastech/hwlab-cloud-web:24eb3bf", "digest": "not_published", "publishState": "skeleton-only" }, { "serviceId": "hwlab-agent-mgr", "deployCommitId": "24eb3bf", "catalogCommitId": "24eb3bf", "image": "ghcr.io/pikastech/hwlab-agent-mgr:24eb3bf", "digest": "not_published", "publishState": "skeleton-only" }, { "serviceId": "hwlab-agent-worker", "deployCommitId": "24eb3bf", "catalogCommitId": "24eb3bf", "image": "ghcr.io/pikastech/hwlab-agent-worker:24eb3bf", "digest": "not_published", "publishState": "skeleton-only" }, { "serviceId": "hwlab-gateway", "deployCommitId": "24eb3bf", "catalogCommitId": "24eb3bf", "image": "ghcr.io/pikastech/hwlab-gateway:24eb3bf", "digest": "not_published", "publishState": "skeleton-only" }, { "serviceId": "hwlab-gateway-simu", "deployCommitId": "24eb3bf", "catalogCommitId": "24eb3bf", "image": "ghcr.io/pikastech/hwlab-gateway-simu:24eb3bf", "digest": "not_published", "publishState": "skeleton-only" }, { "serviceId": "hwlab-box-simu", "deployCommitId": "24eb3bf", "catalogCommitId": "24eb3bf", "image": "ghcr.io/pikastech/hwlab-box-simu:24eb3bf", "digest": "not_published", "publishState": "skeleton-only" }, { "serviceId": "hwlab-patch-panel", "deployCommitId": "24eb3bf", "catalogCommitId": "24eb3bf", "image": "ghcr.io/pikastech/hwlab-patch-panel:24eb3bf", "digest": "not_published", "publishState": "skeleton-only" }, { "serviceId": "hwlab-router", "deployCommitId": "24eb3bf", "catalogCommitId": "24eb3bf", "image": "ghcr.io/pikastech/hwlab-router:24eb3bf", "digest": "not_published", "publishState": "skeleton-only" }, { "serviceId": "hwlab-tunnel-client", "deployCommitId": "24eb3bf", "catalogCommitId": "24eb3bf", "image": "ghcr.io/pikastech/hwlab-tunnel-client:24eb3bf", "digest": "not_published", "publishState": "skeleton-only" }, { "serviceId": "hwlab-edge-proxy", "deployCommitId": "24eb3bf", "catalogCommitId": "24eb3bf", "image": "ghcr.io/pikastech/hwlab-edge-proxy:24eb3bf", "digest": "not_published", "publishState": "skeleton-only" }, { "serviceId": "hwlab-cli", "deployCommitId": "24eb3bf", "catalogCommitId": "24eb3bf", "image": "ghcr.io/pikastech/hwlab-cli:24eb3bf", "digest": "not_published", "publishState": "skeleton-only" }, { "serviceId": "hwlab-agent-skills", "deployCommitId": "24eb3bf", "catalogCommitId": "24eb3bf", "image": "ghcr.io/pikastech/hwlab-agent-skills:24eb3bf", "digest": "not_published", "publishState": "skeleton-only" } ], "k8sManifest": { "resourceCounts": { "workloads": 13, "services": 12, "configMaps": 1 }, "images": [ { "serviceId": "hwlab-cloud-api", "image": "ghcr.io/pikastech/hwlab-cloud-api:24eb3bf", "kind": "Deployment", "name": "hwlab-cloud-api" }, { "serviceId": "hwlab-cloud-web", "image": "ghcr.io/pikastech/hwlab-cloud-web:24eb3bf", "kind": "Deployment", "name": "hwlab-cloud-web" }, { "serviceId": "hwlab-agent-mgr", "image": "ghcr.io/pikastech/hwlab-agent-mgr:24eb3bf", "kind": "Deployment", "name": "hwlab-agent-mgr" }, { "serviceId": "hwlab-agent-worker", "image": "ghcr.io/pikastech/hwlab-agent-worker:24eb3bf", "kind": "Job", "name": "hwlab-agent-worker-template" }, { "serviceId": "hwlab-gateway", "image": "ghcr.io/pikastech/hwlab-gateway:24eb3bf", "kind": "Deployment", "name": "hwlab-gateway" }, { "serviceId": "hwlab-gateway-simu", "image": "ghcr.io/pikastech/hwlab-gateway-simu:24eb3bf", "kind": "Deployment", "name": "hwlab-gateway-simu" }, { "serviceId": "hwlab-box-simu", "image": "ghcr.io/pikastech/hwlab-box-simu:24eb3bf", "kind": "Deployment", "name": "hwlab-box-simu" }, { "serviceId": "hwlab-patch-panel", "image": "ghcr.io/pikastech/hwlab-patch-panel:24eb3bf", "kind": "Deployment", "name": "hwlab-patch-panel" }, { "serviceId": "hwlab-router", "image": "ghcr.io/pikastech/hwlab-router:24eb3bf", "kind": "Deployment", "name": "hwlab-router" }, { "serviceId": "hwlab-tunnel-client", "image": "ghcr.io/pikastech/hwlab-tunnel-client:24eb3bf", "kind": "Deployment", "name": "hwlab-tunnel-client" }, { "serviceId": "hwlab-edge-proxy", "image": "ghcr.io/pikastech/hwlab-edge-proxy:24eb3bf", "kind": "Deployment", "name": "hwlab-edge-proxy" }, { "serviceId": "hwlab-cli", "image": "ghcr.io/pikastech/hwlab-cli:24eb3bf", "kind": "Job", "name": "hwlab-cli-template" }, { "serviceId": "hwlab-agent-skills", "image": "ghcr.io/pikastech/hwlab-agent-skills:24eb3bf", "kind": "Deployment", "name": "hwlab-agent-skills" } ] }, "clusterObservation": { "status": "blocked", "executor": "missing", "resources": [] }, "liveProbe": { "status": "blocked", "url": "http://74.48.78.17:6667/health/live", "error": "connect ECONNREFUSED 74.48.78.17:6667" } }, "blockers": [ { "type": "observability_blocker", "scope": "artifact-source-commit", "status": "open", "summary": "deploy/catalog artifact commit 24eb3bf/24eb3bf does not match source d312cd0f3f2e" }, { "type": "observability_blocker", "scope": "artifact-publish", "status": "open", "summary": "DEV artifact catalog has no CI publish, registry verification, or registry digests" }, { "type": "runtime_blocker", "scope": "cloud-api-db-config", "status": "open", "summary": "cloud-api has no DEV DB connection env configured" }, { "type": "runtime_blocker", "scope": "cloud-api-db", "status": "open", "summary": "cloud-api health reports DB not connected in this artifact" }, { "type": "environment_blocker", "scope": "kubectl", "status": "open", "summary": "kubectl is not installed in the runner" }, { "type": "network_blocker", "scope": "dev-health", "status": "open", "summary": "Cannot reach http://74.48.78.17:6667/health/live: connect ECONNREFUSED 74.48.78.17:6667" } ], "notes": "DEV-only result. No PROD resources, secret values, force push, heavy e2e, browser e2e, or UniDesk runtime substitute were used." }