From 98f5698e99c8178d5ed465171aed4d316f9c3b4b Mon Sep 17 00:00:00 2001 From: Code Queue Review Date: Sat, 23 May 2026 21:54:37 +0000 Subject: [PATCH] chore: record dev rollout for codex stdio --- deploy/artifact-catalog.dev.json | 158 +- deploy/deploy.json | 42 +- deploy/k8s/base/workloads.yaml | 40 +- reports/dev-gate/dev-artifacts.json | 594 ++-- reports/dev-gate/dev-cd-apply.json | 3574 +++++++++++++++-------- reports/dev-gate/dev-deploy-report.json | 526 ++-- scripts/validate-dev-gate-report.mjs | 2 +- 7 files changed, 3146 insertions(+), 1790 deletions(-) diff --git a/deploy/artifact-catalog.dev.json b/deploy/artifact-catalog.dev.json index 9533a2db..f5f11958 100644 --- a/deploy/artifact-catalog.dev.json +++ b/deploy/artifact-catalog.dev.json @@ -5,7 +5,7 @@ "profile": "dev", "namespace": "hwlab-dev", "endpoint": "http://74.48.78.17:16667", - "commitId": "b02ac5b", + "commitId": "e6d4bd5", "artifactState": "published", "publish": { "ciPublished": true, @@ -66,10 +66,10 @@ "services": [ { "serviceId": "hwlab-cloud-api", - "commitId": "b02ac5b", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:b02ac5b", - "imageTag": "b02ac5b", - "digest": "sha256:33b2075ed01c5cb77d8b5bbd3cc8e4acaa1dbd8566d091e15e663c43ff63af31", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:8a0677290ce3626d3589d1d22a943b49290e74451d75263cdbda3044a6ba105d", "publishState": "published", "profile": "dev", "namespace": "hwlab-dev", @@ -79,15 +79,15 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2" + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96" }, { "serviceId": "hwlab-cloud-web", - "commitId": "b02ac5b", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:b02ac5b", - "imageTag": "b02ac5b", - "digest": "sha256:a1c95841f6f2bd913c82751f603c164cbb8bfbfd186d14f98d0f2f91c17cd84f", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:f43ac97da69212e3ff74cfed36a04d65f0cd9cc7b8cb48f0eaf6f1f19d7dd6da", "publishState": "published", "profile": "dev", "namespace": "hwlab-dev", @@ -97,15 +97,15 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2" + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96" }, { "serviceId": "hwlab-agent-mgr", - "commitId": "b02ac5b", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:b02ac5b", - "imageTag": "b02ac5b", - "digest": "sha256:1457c7141f0f6ddeee04c4342e87a0cda8d95718ac64d7b009bf76832c5c7bee", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:f37e9b4dd6262ff4c30826fae1a0e01b184d0e57812c7876de73566263ff0c35", "publishState": "published", "profile": "dev", "namespace": "hwlab-dev", @@ -115,15 +115,15 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2" + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96" }, { "serviceId": "hwlab-agent-worker", - "commitId": "b02ac5b", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:b02ac5b", - "imageTag": "b02ac5b", - "digest": "sha256:a6653bba439eb0f53512269c22f41c07cad48a89c5287374c5262ea01f95e77b", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:afdc241c799fe53561b60a37199c73cfb612ea0381ecfba82e66eb08566a8336", "publishState": "published", "profile": "dev", "namespace": "hwlab-dev", @@ -133,15 +133,15 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2" + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96" }, { "serviceId": "hwlab-gateway", - "commitId": "b02ac5b", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway:b02ac5b", - "imageTag": "b02ac5b", - "digest": "sha256:72fff1deee7a999b8806487c52e4bd89a7930605afe0a193588ffcfdea2af3d3", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:27303c093330bddf4c1eb8e3791dce6dbbe97aab28ff17c1faf761b05333cce0", "publishState": "published", "profile": "dev", "namespace": "hwlab-dev", @@ -151,15 +151,15 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2" + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96" }, { "serviceId": "hwlab-gateway-simu", - "commitId": "b02ac5b", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:b02ac5b", - "imageTag": "b02ac5b", - "digest": "sha256:4cfb1315aa93a11ea480ddb0da89994acc344834499d6cf322bbf0ff4b0c3137", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:38c0372ec72e8f17b26f2fcf83d35718023a81c48529e459d83e36f8cc56ec3a", "publishState": "published", "profile": "dev", "namespace": "hwlab-dev", @@ -169,15 +169,15 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2" + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96" }, { "serviceId": "hwlab-box-simu", - "commitId": "b02ac5b", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:b02ac5b", - "imageTag": "b02ac5b", - "digest": "sha256:9fde14a98f0850e139435cf7b473219c3d43231acd2f65b2410e8e3d0f49b858", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:d551c22242fff6016f15672c4b8b06dbfc85da2c00ecfdd4e40486668b58a56f", "publishState": "published", "profile": "dev", "namespace": "hwlab-dev", @@ -187,15 +187,15 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2" + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96" }, { "serviceId": "hwlab-patch-panel", - "commitId": "b02ac5b", - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:b02ac5b", - "imageTag": "b02ac5b", - "digest": "sha256:2abe0cb87c3eef6d080a3d60bdd39037df89269b0b730a704a52e12405dceaea", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:6c7f3600a71131c11b994a625fd6ced65ac3bb7f109f3c7f941513cbd1d2def5", "publishState": "published", "profile": "dev", "namespace": "hwlab-dev", @@ -205,15 +205,15 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2" + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96" }, { "serviceId": "hwlab-router", - "commitId": "b02ac5b", - "image": "127.0.0.1:5000/hwlab/hwlab-router:b02ac5b", - "imageTag": "b02ac5b", - "digest": "sha256:fcfa1c1f5231e48d07113fbbbec525b16cc5431b38d4fbacc263f517ad0b9120", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-router:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:8d9084f3d23e44d3ffe628e9d100ebbad260c857d06b1fbb5791ecd11bfc4d9f", "publishState": "published", "profile": "dev", "namespace": "hwlab-dev", @@ -223,15 +223,15 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2" + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96" }, { "serviceId": "hwlab-tunnel-client", - "commitId": "b02ac5b", - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:b02ac5b", - "imageTag": "b02ac5b", - "digest": "sha256:687826d894137c5c471124f6f3cffdb1165acf23c80dc2cc6fd5bca98434b6e7", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:d6dff1383912ccfed1b1b91dc5ae8323e345f42f57145d7bda788e9941a4ca5a", "publishState": "published", "profile": "dev", "namespace": "hwlab-dev", @@ -241,15 +241,15 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2" + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96" }, { "serviceId": "hwlab-edge-proxy", - "commitId": "b02ac5b", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:b02ac5b", - "imageTag": "b02ac5b", - "digest": "sha256:eb0a165cc57428741a59ef953c8596631f9d85bc51117d16f16d5847803ebfef", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:6ce280c0fd17218dd5719d1118b5e72fd0c4107dc33951e09b35c374f7affacd", "publishState": "published", "profile": "dev", "namespace": "hwlab-dev", @@ -259,15 +259,15 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2" + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96" }, { "serviceId": "hwlab-cli", - "commitId": "b02ac5b", - "image": "127.0.0.1:5000/hwlab/hwlab-cli:b02ac5b", - "imageTag": "b02ac5b", - "digest": "sha256:d36e790701478653a8b2b672bb8fcccf055f6422552c6d7559a2339b0ef3d621", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:09a015e727738cd188853af557ecd8ea4adfa8a2250692e7442549e9c80eae1f", "publishState": "published", "profile": "dev", "namespace": "hwlab-dev", @@ -277,15 +277,15 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2" + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96" }, { "serviceId": "hwlab-agent-skills", - "commitId": "b02ac5b", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:b02ac5b", - "imageTag": "b02ac5b", - "digest": "sha256:22c1ad255a1039ca148444664563ae76209ccbb0d3e7fba27613250c938e3f5b", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:45602b9d09ef22095ab75bd95e2f310626bce61bc4e39a7205009fe9620c2d4f", "publishState": "published", "profile": "dev", "namespace": "hwlab-dev", @@ -295,8 +295,8 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2" + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96" } ], "serviceInventory": { diff --git a/deploy/deploy.json b/deploy/deploy.json index f4505e08..f7224a1a 100644 --- a/deploy/deploy.json +++ b/deploy/deploy.json @@ -1,7 +1,7 @@ { "manifestVersion": "v1", "environment": "dev", - "commitId": "b02ac5b", + "commitId": "e6d4bd5", "namespace": "hwlab-dev", "endpoint": "http://74.48.78.17:16667", "health": { @@ -181,7 +181,7 @@ "services": [ { "serviceId": "hwlab-cloud-api", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -189,9 +189,9 @@ "env": { "HWLAB_ENVIRONMENT": "dev", "HWLAB_PUBLIC_ENDPOINT": "http://74.48.78.17:16667", - "HWLAB_COMMIT_ID": "b02ac5b", - "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-api:b02ac5b", - "HWLAB_IMAGE_TAG": "b02ac5b", + "HWLAB_COMMIT_ID": "e6d4bd5", + "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", + "HWLAB_IMAGE_TAG": "e6d4bd5", "HWLAB_RUNTIME_SUBSTITUTE_FORBIDDEN": "unidesk-backend,provider-gateway,microservice-proxy", "HWLAB_CLOUD_DB_URL": "secretRef:hwlab-cloud-api-dev-db/database-url", "HWLAB_CLOUD_DB_SSL_MODE": "disable", @@ -220,7 +220,7 @@ }, { "serviceId": "hwlab-cloud-web", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -229,14 +229,14 @@ "HWLAB_ENVIRONMENT": "dev", "HWLAB_API_BASE_URL": "http://hwlab-cloud-api.hwlab-dev.svc.cluster.local:6667", "HWLAB_CLOUD_WEB_PROXY_TIMEOUT_MS": "150000", - "HWLAB_COMMIT_ID": "b02ac5b", - "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-web:b02ac5b", - "HWLAB_IMAGE_TAG": "b02ac5b" + "HWLAB_COMMIT_ID": "e6d4bd5", + "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "HWLAB_IMAGE_TAG": "e6d4bd5" } }, { "serviceId": "hwlab-agent-mgr", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -248,7 +248,7 @@ }, { "serviceId": "hwlab-agent-worker", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -260,7 +260,7 @@ }, { "serviceId": "hwlab-gateway", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway:b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -272,7 +272,7 @@ }, { "serviceId": "hwlab-gateway-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -292,7 +292,7 @@ }, { "serviceId": "hwlab-box-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -311,7 +311,7 @@ }, { "serviceId": "hwlab-patch-panel", - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -332,7 +332,7 @@ }, { "serviceId": "hwlab-router", - "image": "127.0.0.1:5000/hwlab/hwlab-router:b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-router:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -344,7 +344,7 @@ }, { "serviceId": "hwlab-tunnel-client", - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -358,7 +358,7 @@ }, { "serviceId": "hwlab-edge-proxy", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -371,7 +371,7 @@ }, { "serviceId": "hwlab-cli", - "image": "127.0.0.1:5000/hwlab/hwlab-cli:b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -382,13 +382,13 @@ }, { "serviceId": "hwlab-agent-skills", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", "replicas": 1, "env": { - "HWLAB_SKILLS_COMMIT_ID": "b02ac5b" + "HWLAB_SKILLS_COMMIT_ID": "e6d4bd5" } } ], diff --git a/deploy/k8s/base/workloads.yaml b/deploy/k8s/base/workloads.yaml index afbc474f..c0d9a11b 100644 --- a/deploy/k8s/base/workloads.yaml +++ b/deploy/k8s/base/workloads.yaml @@ -31,7 +31,7 @@ "containers": [ { "name": "hwlab-cloud-api", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", "ports": [ { "name": "http", @@ -49,15 +49,15 @@ }, { "name": "HWLAB_COMMIT_ID", - "value": "b02ac5b" + "value": "e6d4bd5" }, { "name": "HWLAB_IMAGE", - "value": "127.0.0.1:5000/hwlab/hwlab-cloud-api:b02ac5b" + "value": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5" }, { "name": "HWLAB_IMAGE_TAG", - "value": "b02ac5b" + "value": "e6d4bd5" }, { "name": "HWLAB_RUNTIME_SUBSTITUTE_FORBIDDEN", @@ -235,7 +235,7 @@ "containers": [ { "name": "hwlab-cloud-web", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", "ports": [ { "name": "http", @@ -253,15 +253,15 @@ }, { "name": "HWLAB_COMMIT_ID", - "value": "b02ac5b" + "value": "e6d4bd5" }, { "name": "HWLAB_IMAGE", - "value": "127.0.0.1:5000/hwlab/hwlab-cloud-web:b02ac5b" + "value": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5" }, { "name": "HWLAB_IMAGE_TAG", - "value": "b02ac5b" + "value": "e6d4bd5" } ], "readinessProbe": { @@ -311,7 +311,7 @@ "containers": [ { "name": "hwlab-agent-mgr", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:e6d4bd5", "ports": [ { "name": "http", @@ -367,7 +367,7 @@ "containers": [ { "name": "hwlab-agent-worker", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5", "env": [ { "name": "HWLAB_AGENT_SESSION_MODE", @@ -410,7 +410,7 @@ "containers": [ { "name": "hwlab-gateway", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway:b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway:e6d4bd5", "ports": [ { "name": "http", @@ -471,7 +471,7 @@ "containers": [ { "name": "hwlab-gateway-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5", "ports": [ { "name": "http", @@ -544,7 +544,7 @@ "containers": [ { "name": "hwlab-box-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5", "ports": [ { "name": "http", @@ -612,7 +612,7 @@ "containers": [ { "name": "hwlab-patch-panel", - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:e6d4bd5", "ports": [ { "name": "http", @@ -676,7 +676,7 @@ "containers": [ { "name": "hwlab-router", - "image": "127.0.0.1:5000/hwlab/hwlab-router:b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-router:e6d4bd5", "ports": [ { "name": "http", @@ -736,7 +736,7 @@ "containers": [ { "name": "hwlab-tunnel-client", - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:e6d4bd5", "ports": [ { "name": "http", @@ -808,7 +808,7 @@ "containers": [ { "name": "hwlab-edge-proxy", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5", "ports": [ { "name": "http", @@ -873,7 +873,7 @@ "containers": [ { "name": "hwlab-cli", - "image": "127.0.0.1:5000/hwlab/hwlab-cli:b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5", "env": [ { "name": "HWLAB_CLI_ENDPOINT", @@ -915,7 +915,7 @@ "containers": [ { "name": "hwlab-agent-skills", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5", "ports": [ { "name": "http", @@ -925,7 +925,7 @@ "env": [ { "name": "HWLAB_SKILLS_COMMIT_ID", - "value": "b02ac5b" + "value": "e6d4bd5" } ], "readinessProbe": { diff --git a/reports/dev-gate/dev-artifacts.json b/reports/dev-gate/dev-artifacts.json index 3203640d..8cb59977 100644 --- a/reports/dev-gate/dev-artifacts.json +++ b/reports/dev-gate/dev-artifacts.json @@ -4,7 +4,7 @@ "reportVersion": "v1", "issue": "pikasTech/HWLAB#35", "taskId": "dev-artifact-publish", - "commitId": "b02ac5b", + "commitId": "e6d4bd5", "acceptanceLevel": "dev_artifact_publish", "devOnly": true, "prodDisabled": true, @@ -75,12 +75,12 @@ "status": "published", "mode": "publish", "repo": "pikasTech/HWLAB", - "sourceCommitId": "b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "registryPrefix": "127.0.0.1:5000/hwlab", "registryCapabilities": { "version": "v1", "registryPrefix": "127.0.0.1:5000/hwlab", - "generatedAt": "2026-05-23T20:47:40.658Z", + "generatedAt": "2026-05-23T21:37:56.100Z", "classification": "degraded", "dimensions": { "processHttpAccess": { @@ -128,7 +128,7 @@ "names": "unidesk-artifact-registry", "ports": "127.0.0.1:5000->5000/tcp", "state": "running", - "status": "Up 7 hours" + "status": "Up 8 hours" } ], "pushAttempted": false, @@ -165,46 +165,46 @@ "podCount": 13, "pulledImages": [ { - "pod": "hwlab-agent-mgr-749c489bf9-mcsdp", + "pod": "hwlab-agent-mgr-99d44c747-mfqzj", "container": "hwlab-agent-mgr", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:f09ad05", - "imageID": "127.0.0.1:5000/hwlab/hwlab-agent-mgr@sha256:02424bd81b280535f7877a0febb4ac85b3e8d4009525e70a35e8e3dc37dc5443" + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-agent-mgr@sha256:1457c7141f0f6ddeee04c4342e87a0cda8d95718ac64d7b009bf76832c5c7bee" }, { - "pod": "hwlab-agent-skills-7d5cf68bcd-wkcwv", + "pod": "hwlab-agent-skills-7f99b49598-lqjdd", "container": "hwlab-agent-skills", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:f09ad05", - "imageID": "127.0.0.1:5000/hwlab/hwlab-agent-skills@sha256:26831fd6848abc50a4e8158d97fe5ec0a769a54abd4b9558249baa1691fd2758" + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-agent-skills@sha256:22c1ad255a1039ca148444664563ae76209ccbb0d3e7fba27613250c938e3f5b" }, { "pod": "hwlab-box-simu-0", "container": "hwlab-box-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:f09ad05", - "imageID": "127.0.0.1:5000/hwlab/hwlab-box-simu@sha256:936addebe7d7132198fd025a90d7d2c5b0d1131a98dc9f695abca0a7921fcdca" + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-box-simu@sha256:9fde14a98f0850e139435cf7b473219c3d43231acd2f65b2410e8e3d0f49b858" }, { "pod": "hwlab-box-simu-1", "container": "hwlab-box-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:f09ad05", - "imageID": "127.0.0.1:5000/hwlab/hwlab-box-simu@sha256:936addebe7d7132198fd025a90d7d2c5b0d1131a98dc9f695abca0a7921fcdca" + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-box-simu@sha256:9fde14a98f0850e139435cf7b473219c3d43231acd2f65b2410e8e3d0f49b858" }, { - "pod": "hwlab-cloud-api-6c565c556-nmvbh", + "pod": "hwlab-cloud-api-57cfcfc587-kdvg9", "container": "hwlab-cloud-api", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:f09ad05", - "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-api@sha256:69543a5c537e10593d790dba00e3bdb1e19aaad3790d44e0964d371d0fddab20" + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-api@sha256:33b2075ed01c5cb77d8b5bbd3cc8e4acaa1dbd8566d091e15e663c43ff63af31" }, { - "pod": "hwlab-cloud-web-5f74d5d74-mfzqh", + "pod": "hwlab-cloud-web-67c684947b-lkvtj", "container": "hwlab-cloud-web", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:f09ad05", - "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-web@sha256:28378a2582a9e67b7fabbe64b604e33a3404d619c0b2a21b3100f082ec089385" + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-web@sha256:a1c95841f6f2bd913c82751f603c164cbb8bfbfd186d14f98d0f2f91c17cd84f" }, { - "pod": "hwlab-edge-proxy-5c4c948c68-hwqp7", + "pod": "hwlab-edge-proxy-85db66bcc9-mv8pv", "container": "hwlab-edge-proxy", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:f09ad05", - "imageID": "127.0.0.1:5000/hwlab/hwlab-edge-proxy@sha256:81636f2218282c43a0a107102f61f65f209f52fdfa25f883f418b274c1ca7ad1" + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-edge-proxy@sha256:eb0a165cc57428741a59ef953c8596631f9d85bc51117d16f16d5847803ebfef" }, { "pod": "hwlab-frpc-59f57d479c-tgjhl", @@ -215,32 +215,32 @@ { "pod": "hwlab-gateway-simu-0", "container": "hwlab-gateway-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:f09ad05", - "imageID": "127.0.0.1:5000/hwlab/hwlab-gateway-simu@sha256:18c12a58a6b36cd1d5b2f0dadd166a7fca2c8e472a975797e1a7474f172413bd" + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-gateway-simu@sha256:4cfb1315aa93a11ea480ddb0da89994acc344834499d6cf322bbf0ff4b0c3137" }, { "pod": "hwlab-gateway-simu-1", "container": "hwlab-gateway-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:f09ad05", - "imageID": "127.0.0.1:5000/hwlab/hwlab-gateway-simu@sha256:18c12a58a6b36cd1d5b2f0dadd166a7fca2c8e472a975797e1a7474f172413bd" + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-gateway-simu@sha256:4cfb1315aa93a11ea480ddb0da89994acc344834499d6cf322bbf0ff4b0c3137" }, { - "pod": "hwlab-patch-panel-784bdb49cc-z5jhz", + "pod": "hwlab-patch-panel-7cd9d9d597-kwnm6", "container": "hwlab-patch-panel", - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:f09ad05", - "imageID": "127.0.0.1:5000/hwlab/hwlab-patch-panel@sha256:521baa534c73bbcbb6b6f01f67574061c4c83178a83fd6f2dedf2ad0a62a228c" + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-patch-panel@sha256:2abe0cb87c3eef6d080a3d60bdd39037df89269b0b730a704a52e12405dceaea" }, { - "pod": "hwlab-router-9954c75cb-zkmm2", + "pod": "hwlab-router-65dc5579fb-d2r8l", "container": "hwlab-router", - "image": "127.0.0.1:5000/hwlab/hwlab-router:f09ad05", - "imageID": "127.0.0.1:5000/hwlab/hwlab-router@sha256:e3f26f30d611a9bd63571bef600caeea5ca0770c5bf9b2d921abe74cb1ba1463" + "image": "127.0.0.1:5000/hwlab/hwlab-router:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-router@sha256:fcfa1c1f5231e48d07113fbbbec525b16cc5431b38d4fbacc263f517ad0b9120" }, { - "pod": "hwlab-tunnel-client-86d5dc9b6-svcq4", + "pod": "hwlab-tunnel-client-54d968477d-mf2qk", "container": "hwlab-tunnel-client", - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:f09ad05", - "imageID": "127.0.0.1:5000/hwlab/hwlab-tunnel-client@sha256:f4d88c49f5bb03f3919c8a09f80a55abb63b8dd63bc0dd227b0608e99804d688" + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-tunnel-client@sha256:687826d894137c5c471124f6f3cffdb1165acf23c80dc2cc6fd5bca98434b6e7" } ], "pullFailures": [], @@ -258,8 +258,8 @@ "baseImage": "node:20-bookworm-slim", "baseImagePreflight": { "status": "ready", - "imageSource": "env:HWLAB_DEV_BASE_IMAGE", - "requestedImage": "node:20-bookworm-slim", + "imageSource": "local-docker-node:20-*", + "requestedImage": null, "localTag": "node:20-bookworm-slim", "imageId": "sha256:9da6b4e352d0d5c94963eba1832408f5b7b08839cd8be9b6610c05de5118c704", "repoDigests": [ @@ -267,13 +267,15 @@ ], "candidates": [ { - "source": "env:HWLAB_DEV_BASE_IMAGE", + "source": "local-docker-node:20-*", "approval": { "approved": true, "reason": "local Node 20 builder base image" }, "localTag": "node:20-bookworm-slim", - "imageId": "sha256:9da6b4e352d0d5c94963eba1832408f5b7b08839cd8be9b6610c05de5118c704" + "imageId": "9da6b4e352d0", + "size": "200MB", + "createdSince": "4 weeks ago" } ], "rejectedCandidates": [], @@ -334,7 +336,7 @@ } }, "environment": "dev", - "buildCreatedAt": "2026-05-23T20:47:40.669Z", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", "serviceInventory": { "version": "v2", "serviceCount": 13, @@ -505,13 +507,13 @@ "publishPlan": { "version": "v2", "mode": "publish", - "sourceCommitId": "b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", - "imageTag": "b02ac5b", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "imageTag": "e6d4bd5", "registryTarget": "127.0.0.1:5000/hwlab", "registryCapabilities": { "version": "v1", "registryPrefix": "127.0.0.1:5000/hwlab", - "generatedAt": "2026-05-23T20:47:40.658Z", + "generatedAt": "2026-05-23T21:37:56.100Z", "classification": "degraded", "dimensions": { "processHttpAccess": { @@ -559,7 +561,7 @@ "names": "unidesk-artifact-registry", "ports": "127.0.0.1:5000->5000/tcp", "state": "running", - "status": "Up 7 hours" + "status": "Up 8 hours" } ], "pushAttempted": false, @@ -596,46 +598,46 @@ "podCount": 13, "pulledImages": [ { - "pod": "hwlab-agent-mgr-749c489bf9-mcsdp", + "pod": "hwlab-agent-mgr-99d44c747-mfqzj", "container": "hwlab-agent-mgr", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:f09ad05", - "imageID": "127.0.0.1:5000/hwlab/hwlab-agent-mgr@sha256:02424bd81b280535f7877a0febb4ac85b3e8d4009525e70a35e8e3dc37dc5443" + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-agent-mgr@sha256:1457c7141f0f6ddeee04c4342e87a0cda8d95718ac64d7b009bf76832c5c7bee" }, { - "pod": "hwlab-agent-skills-7d5cf68bcd-wkcwv", + "pod": "hwlab-agent-skills-7f99b49598-lqjdd", "container": "hwlab-agent-skills", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:f09ad05", - "imageID": "127.0.0.1:5000/hwlab/hwlab-agent-skills@sha256:26831fd6848abc50a4e8158d97fe5ec0a769a54abd4b9558249baa1691fd2758" + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-agent-skills@sha256:22c1ad255a1039ca148444664563ae76209ccbb0d3e7fba27613250c938e3f5b" }, { "pod": "hwlab-box-simu-0", "container": "hwlab-box-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:f09ad05", - "imageID": "127.0.0.1:5000/hwlab/hwlab-box-simu@sha256:936addebe7d7132198fd025a90d7d2c5b0d1131a98dc9f695abca0a7921fcdca" + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-box-simu@sha256:9fde14a98f0850e139435cf7b473219c3d43231acd2f65b2410e8e3d0f49b858" }, { "pod": "hwlab-box-simu-1", "container": "hwlab-box-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:f09ad05", - "imageID": "127.0.0.1:5000/hwlab/hwlab-box-simu@sha256:936addebe7d7132198fd025a90d7d2c5b0d1131a98dc9f695abca0a7921fcdca" + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-box-simu@sha256:9fde14a98f0850e139435cf7b473219c3d43231acd2f65b2410e8e3d0f49b858" }, { - "pod": "hwlab-cloud-api-6c565c556-nmvbh", + "pod": "hwlab-cloud-api-57cfcfc587-kdvg9", "container": "hwlab-cloud-api", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:f09ad05", - "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-api@sha256:69543a5c537e10593d790dba00e3bdb1e19aaad3790d44e0964d371d0fddab20" + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-api@sha256:33b2075ed01c5cb77d8b5bbd3cc8e4acaa1dbd8566d091e15e663c43ff63af31" }, { - "pod": "hwlab-cloud-web-5f74d5d74-mfzqh", + "pod": "hwlab-cloud-web-67c684947b-lkvtj", "container": "hwlab-cloud-web", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:f09ad05", - "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-web@sha256:28378a2582a9e67b7fabbe64b604e33a3404d619c0b2a21b3100f082ec089385" + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-web@sha256:a1c95841f6f2bd913c82751f603c164cbb8bfbfd186d14f98d0f2f91c17cd84f" }, { - "pod": "hwlab-edge-proxy-5c4c948c68-hwqp7", + "pod": "hwlab-edge-proxy-85db66bcc9-mv8pv", "container": "hwlab-edge-proxy", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:f09ad05", - "imageID": "127.0.0.1:5000/hwlab/hwlab-edge-proxy@sha256:81636f2218282c43a0a107102f61f65f209f52fdfa25f883f418b274c1ca7ad1" + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-edge-proxy@sha256:eb0a165cc57428741a59ef953c8596631f9d85bc51117d16f16d5847803ebfef" }, { "pod": "hwlab-frpc-59f57d479c-tgjhl", @@ -646,32 +648,32 @@ { "pod": "hwlab-gateway-simu-0", "container": "hwlab-gateway-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:f09ad05", - "imageID": "127.0.0.1:5000/hwlab/hwlab-gateway-simu@sha256:18c12a58a6b36cd1d5b2f0dadd166a7fca2c8e472a975797e1a7474f172413bd" + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-gateway-simu@sha256:4cfb1315aa93a11ea480ddb0da89994acc344834499d6cf322bbf0ff4b0c3137" }, { "pod": "hwlab-gateway-simu-1", "container": "hwlab-gateway-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:f09ad05", - "imageID": "127.0.0.1:5000/hwlab/hwlab-gateway-simu@sha256:18c12a58a6b36cd1d5b2f0dadd166a7fca2c8e472a975797e1a7474f172413bd" + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-gateway-simu@sha256:4cfb1315aa93a11ea480ddb0da89994acc344834499d6cf322bbf0ff4b0c3137" }, { - "pod": "hwlab-patch-panel-784bdb49cc-z5jhz", + "pod": "hwlab-patch-panel-7cd9d9d597-kwnm6", "container": "hwlab-patch-panel", - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:f09ad05", - "imageID": "127.0.0.1:5000/hwlab/hwlab-patch-panel@sha256:521baa534c73bbcbb6b6f01f67574061c4c83178a83fd6f2dedf2ad0a62a228c" + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-patch-panel@sha256:2abe0cb87c3eef6d080a3d60bdd39037df89269b0b730a704a52e12405dceaea" }, { - "pod": "hwlab-router-9954c75cb-zkmm2", + "pod": "hwlab-router-65dc5579fb-d2r8l", "container": "hwlab-router", - "image": "127.0.0.1:5000/hwlab/hwlab-router:f09ad05", - "imageID": "127.0.0.1:5000/hwlab/hwlab-router@sha256:e3f26f30d611a9bd63571bef600caeea5ca0770c5bf9b2d921abe74cb1ba1463" + "image": "127.0.0.1:5000/hwlab/hwlab-router:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-router@sha256:fcfa1c1f5231e48d07113fbbbec525b16cc5431b38d4fbacc263f517ad0b9120" }, { - "pod": "hwlab-tunnel-client-86d5dc9b6-svcq4", + "pod": "hwlab-tunnel-client-54d968477d-mf2qk", "container": "hwlab-tunnel-client", - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:f09ad05", - "imageID": "127.0.0.1:5000/hwlab/hwlab-tunnel-client@sha256:f4d88c49f5bb03f3919c8a09f80a55abb63b8dd63bc0dd227b0608e99804d688" + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-tunnel-client@sha256:687826d894137c5c471124f6f3cffdb1165acf23c80dc2cc6fd5bca98434b6e7" } ], "pullFailures": [], @@ -693,14 +695,14 @@ "enabled": true, "required": true, "artifactScope": "required", - "sourceCommitId": "b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "registryTarget": "127.0.0.1:5000/hwlab/hwlab-cloud-api", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:b02ac5b", - "imageTag": "b02ac5b", - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", - "digest": "sha256:33b2075ed01c5cb77d8b5bbd3cc8e4acaa1dbd8566d091e15e663c43ff63af31", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-cloud-api@sha256:33b2075ed01c5cb77d8b5bbd3cc8e4acaa1dbd8566d091e15e663c43ff63af31", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:8a0677290ce3626d3589d1d22a943b49290e74451d75263cdbda3044a6ba105d", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-cloud-api@sha256:8a0677290ce3626d3589d1d22a943b49290e74451d75263cdbda3044a6ba105d", "digestStatus": "real", "status": "published", "notPublishedReason": null @@ -710,14 +712,14 @@ "enabled": true, "required": true, "artifactScope": "required", - "sourceCommitId": "b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "registryTarget": "127.0.0.1:5000/hwlab/hwlab-cloud-web", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:b02ac5b", - "imageTag": "b02ac5b", - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", - "digest": "sha256:a1c95841f6f2bd913c82751f603c164cbb8bfbfd186d14f98d0f2f91c17cd84f", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-cloud-web@sha256:a1c95841f6f2bd913c82751f603c164cbb8bfbfd186d14f98d0f2f91c17cd84f", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:f43ac97da69212e3ff74cfed36a04d65f0cd9cc7b8cb48f0eaf6f1f19d7dd6da", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-cloud-web@sha256:f43ac97da69212e3ff74cfed36a04d65f0cd9cc7b8cb48f0eaf6f1f19d7dd6da", "digestStatus": "real", "status": "published", "notPublishedReason": null @@ -727,14 +729,14 @@ "enabled": true, "required": true, "artifactScope": "required", - "sourceCommitId": "b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "registryTarget": "127.0.0.1:5000/hwlab/hwlab-agent-mgr", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:b02ac5b", - "imageTag": "b02ac5b", - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", - "digest": "sha256:1457c7141f0f6ddeee04c4342e87a0cda8d95718ac64d7b009bf76832c5c7bee", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-agent-mgr@sha256:1457c7141f0f6ddeee04c4342e87a0cda8d95718ac64d7b009bf76832c5c7bee", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:f37e9b4dd6262ff4c30826fae1a0e01b184d0e57812c7876de73566263ff0c35", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-agent-mgr@sha256:f37e9b4dd6262ff4c30826fae1a0e01b184d0e57812c7876de73566263ff0c35", "digestStatus": "real", "status": "published", "notPublishedReason": null @@ -744,14 +746,14 @@ "enabled": true, "required": true, "artifactScope": "required", - "sourceCommitId": "b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "registryTarget": "127.0.0.1:5000/hwlab/hwlab-agent-worker", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:b02ac5b", - "imageTag": "b02ac5b", - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", - "digest": "sha256:a6653bba439eb0f53512269c22f41c07cad48a89c5287374c5262ea01f95e77b", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-agent-worker@sha256:a6653bba439eb0f53512269c22f41c07cad48a89c5287374c5262ea01f95e77b", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:afdc241c799fe53561b60a37199c73cfb612ea0381ecfba82e66eb08566a8336", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-agent-worker@sha256:afdc241c799fe53561b60a37199c73cfb612ea0381ecfba82e66eb08566a8336", "digestStatus": "real", "status": "published", "notPublishedReason": null @@ -761,14 +763,14 @@ "enabled": true, "required": true, "artifactScope": "required", - "sourceCommitId": "b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "registryTarget": "127.0.0.1:5000/hwlab/hwlab-gateway", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway:b02ac5b", - "imageTag": "b02ac5b", - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", - "digest": "sha256:72fff1deee7a999b8806487c52e4bd89a7930605afe0a193588ffcfdea2af3d3", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-gateway@sha256:72fff1deee7a999b8806487c52e4bd89a7930605afe0a193588ffcfdea2af3d3", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:27303c093330bddf4c1eb8e3791dce6dbbe97aab28ff17c1faf761b05333cce0", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-gateway@sha256:27303c093330bddf4c1eb8e3791dce6dbbe97aab28ff17c1faf761b05333cce0", "digestStatus": "real", "status": "published", "notPublishedReason": null @@ -778,14 +780,14 @@ "enabled": true, "required": true, "artifactScope": "required", - "sourceCommitId": "b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "registryTarget": "127.0.0.1:5000/hwlab/hwlab-gateway-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:b02ac5b", - "imageTag": "b02ac5b", - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", - "digest": "sha256:4cfb1315aa93a11ea480ddb0da89994acc344834499d6cf322bbf0ff4b0c3137", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-gateway-simu@sha256:4cfb1315aa93a11ea480ddb0da89994acc344834499d6cf322bbf0ff4b0c3137", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:38c0372ec72e8f17b26f2fcf83d35718023a81c48529e459d83e36f8cc56ec3a", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-gateway-simu@sha256:38c0372ec72e8f17b26f2fcf83d35718023a81c48529e459d83e36f8cc56ec3a", "digestStatus": "real", "status": "published", "notPublishedReason": null @@ -795,14 +797,14 @@ "enabled": true, "required": true, "artifactScope": "required", - "sourceCommitId": "b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "registryTarget": "127.0.0.1:5000/hwlab/hwlab-box-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:b02ac5b", - "imageTag": "b02ac5b", - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", - "digest": "sha256:9fde14a98f0850e139435cf7b473219c3d43231acd2f65b2410e8e3d0f49b858", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-box-simu@sha256:9fde14a98f0850e139435cf7b473219c3d43231acd2f65b2410e8e3d0f49b858", + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:d551c22242fff6016f15672c4b8b06dbfc85da2c00ecfdd4e40486668b58a56f", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-box-simu@sha256:d551c22242fff6016f15672c4b8b06dbfc85da2c00ecfdd4e40486668b58a56f", "digestStatus": "real", "status": "published", "notPublishedReason": null @@ -812,14 +814,14 @@ "enabled": true, "required": true, "artifactScope": "required", - "sourceCommitId": "b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "registryTarget": "127.0.0.1:5000/hwlab/hwlab-patch-panel", - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:b02ac5b", - "imageTag": "b02ac5b", - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", - "digest": "sha256:2abe0cb87c3eef6d080a3d60bdd39037df89269b0b730a704a52e12405dceaea", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-patch-panel@sha256:2abe0cb87c3eef6d080a3d60bdd39037df89269b0b730a704a52e12405dceaea", + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:6c7f3600a71131c11b994a625fd6ced65ac3bb7f109f3c7f941513cbd1d2def5", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-patch-panel@sha256:6c7f3600a71131c11b994a625fd6ced65ac3bb7f109f3c7f941513cbd1d2def5", "digestStatus": "real", "status": "published", "notPublishedReason": null @@ -829,14 +831,14 @@ "enabled": true, "required": true, "artifactScope": "required", - "sourceCommitId": "b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "registryTarget": "127.0.0.1:5000/hwlab/hwlab-router", - "image": "127.0.0.1:5000/hwlab/hwlab-router:b02ac5b", - "imageTag": "b02ac5b", - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", - "digest": "sha256:fcfa1c1f5231e48d07113fbbbec525b16cc5431b38d4fbacc263f517ad0b9120", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-router@sha256:fcfa1c1f5231e48d07113fbbbec525b16cc5431b38d4fbacc263f517ad0b9120", + "image": "127.0.0.1:5000/hwlab/hwlab-router:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:8d9084f3d23e44d3ffe628e9d100ebbad260c857d06b1fbb5791ecd11bfc4d9f", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-router@sha256:8d9084f3d23e44d3ffe628e9d100ebbad260c857d06b1fbb5791ecd11bfc4d9f", "digestStatus": "real", "status": "published", "notPublishedReason": null @@ -846,14 +848,14 @@ "enabled": true, "required": true, "artifactScope": "required", - "sourceCommitId": "b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "registryTarget": "127.0.0.1:5000/hwlab/hwlab-tunnel-client", - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:b02ac5b", - "imageTag": "b02ac5b", - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", - "digest": "sha256:687826d894137c5c471124f6f3cffdb1165acf23c80dc2cc6fd5bca98434b6e7", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-tunnel-client@sha256:687826d894137c5c471124f6f3cffdb1165acf23c80dc2cc6fd5bca98434b6e7", + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:d6dff1383912ccfed1b1b91dc5ae8323e345f42f57145d7bda788e9941a4ca5a", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-tunnel-client@sha256:d6dff1383912ccfed1b1b91dc5ae8323e345f42f57145d7bda788e9941a4ca5a", "digestStatus": "real", "status": "published", "notPublishedReason": null @@ -863,14 +865,14 @@ "enabled": true, "required": true, "artifactScope": "required", - "sourceCommitId": "b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "registryTarget": "127.0.0.1:5000/hwlab/hwlab-edge-proxy", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:b02ac5b", - "imageTag": "b02ac5b", - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", - "digest": "sha256:eb0a165cc57428741a59ef953c8596631f9d85bc51117d16f16d5847803ebfef", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-edge-proxy@sha256:eb0a165cc57428741a59ef953c8596631f9d85bc51117d16f16d5847803ebfef", + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:6ce280c0fd17218dd5719d1118b5e72fd0c4107dc33951e09b35c374f7affacd", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-edge-proxy@sha256:6ce280c0fd17218dd5719d1118b5e72fd0c4107dc33951e09b35c374f7affacd", "digestStatus": "real", "status": "published", "notPublishedReason": null @@ -880,14 +882,14 @@ "enabled": true, "required": true, "artifactScope": "required", - "sourceCommitId": "b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "registryTarget": "127.0.0.1:5000/hwlab/hwlab-cli", - "image": "127.0.0.1:5000/hwlab/hwlab-cli:b02ac5b", - "imageTag": "b02ac5b", - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", - "digest": "sha256:d36e790701478653a8b2b672bb8fcccf055f6422552c6d7559a2339b0ef3d621", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-cli@sha256:d36e790701478653a8b2b672bb8fcccf055f6422552c6d7559a2339b0ef3d621", + "image": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:09a015e727738cd188853af557ecd8ea4adfa8a2250692e7442549e9c80eae1f", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-cli@sha256:09a015e727738cd188853af557ecd8ea4adfa8a2250692e7442549e9c80eae1f", "digestStatus": "real", "status": "published", "notPublishedReason": null @@ -897,14 +899,14 @@ "enabled": true, "required": true, "artifactScope": "required", - "sourceCommitId": "b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "registryTarget": "127.0.0.1:5000/hwlab/hwlab-agent-skills", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:b02ac5b", - "imageTag": "b02ac5b", - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", - "digest": "sha256:22c1ad255a1039ca148444664563ae76209ccbb0d3e7fba27613250c938e3f5b", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-agent-skills@sha256:22c1ad255a1039ca148444664563ae76209ccbb0d3e7fba27613250c938e3f5b", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:45602b9d09ef22095ab75bd95e2f310626bce61bc4e39a7205009fe9620c2d4f", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-agent-skills@sha256:45602b9d09ef22095ab75bd95e2f310626bce61bc4e39a7205009fe9620c2d4f", "digestStatus": "real", "status": "published", "notPublishedReason": null @@ -916,17 +918,17 @@ "disabledServiceCount": 0, "builtCount": 13, "publishedCount": 13, - "generatedAt": "2026-05-23T20:57:14.570Z", + "generatedAt": "2026-05-23T21:47:57.238Z", "services": [ { "serviceId": "hwlab-cloud-api", "status": "published", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:b02ac5b", - "imageTag": "b02ac5b", - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", - "digest": "sha256:33b2075ed01c5cb77d8b5bbd3cc8e4acaa1dbd8566d091e15e663c43ff63af31", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-cloud-api@sha256:33b2075ed01c5cb77d8b5bbd3cc8e4acaa1dbd8566d091e15e663c43ff63af31", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:8a0677290ce3626d3589d1d22a943b49290e74451d75263cdbda3044a6ba105d", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-cloud-api@sha256:8a0677290ce3626d3589d1d22a943b49290e74451d75263cdbda3044a6ba105d", "runtimeKind": "node-command", "implementationState": "repo-entrypoint", "sourceState": "source-present", @@ -935,17 +937,17 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "localImageId": "sha256:1a81a62dd4127316f8ea7eaa4489895ab8416837b35908db43f4d2941e6bb8e2" + "localImageId": "sha256:8fae5b4de1a7d29f4a87684a0606daab29eb036ae82183dea29d5f88fcefea74" }, { "serviceId": "hwlab-cloud-web", "status": "published", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:b02ac5b", - "imageTag": "b02ac5b", - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", - "digest": "sha256:a1c95841f6f2bd913c82751f603c164cbb8bfbfd186d14f98d0f2f91c17cd84f", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-cloud-web@sha256:a1c95841f6f2bd913c82751f603c164cbb8bfbfd186d14f98d0f2f91c17cd84f", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:f43ac97da69212e3ff74cfed36a04d65f0cd9cc7b8cb48f0eaf6f1f19d7dd6da", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-cloud-web@sha256:f43ac97da69212e3ff74cfed36a04d65f0cd9cc7b8cb48f0eaf6f1f19d7dd6da", "runtimeKind": "cloud-web", "distFreshness": { "status": "pass", @@ -956,127 +958,127 @@ { "kind": "runtime", "path": "index.html", - "sourcePath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/index.html", - "distPath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/dist/index.html", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/index.html", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/index.html", "status": "match" }, { "kind": "runtime", "path": "styles.css", - "sourcePath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/styles.css", - "distPath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/dist/styles.css", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/styles.css", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/styles.css", "status": "match" }, { "kind": "runtime", "path": "auth.mjs", - "sourcePath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/auth.mjs", - "distPath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/dist/auth.mjs", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/auth.mjs", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/auth.mjs", "status": "match" }, { "kind": "runtime", "path": "app.mjs", - "sourcePath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/app.mjs", - "distPath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/dist/app.mjs", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/app.mjs", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/app.mjs", "status": "match" }, { "kind": "runtime", "path": "code-agent-facts.mjs", - "sourcePath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/code-agent-facts.mjs", - "distPath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/dist/code-agent-facts.mjs", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/code-agent-facts.mjs", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/code-agent-facts.mjs", "status": "match" }, { "kind": "runtime", "path": "code-agent-status.mjs", - "sourcePath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/code-agent-status.mjs", - "distPath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/dist/code-agent-status.mjs", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/code-agent-status.mjs", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/code-agent-status.mjs", "status": "match" }, { "kind": "runtime", "path": "code-agent-m3-evidence.mjs", - "sourcePath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/code-agent-m3-evidence.mjs", - "distPath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/dist/code-agent-m3-evidence.mjs", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/code-agent-m3-evidence.mjs", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/code-agent-m3-evidence.mjs", "status": "match" }, { "kind": "runtime", "path": "live-status.mjs", - "sourcePath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/live-status.mjs", - "distPath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/dist/live-status.mjs", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/live-status.mjs", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/live-status.mjs", "status": "match" }, { "kind": "runtime", "path": "gate-summary.mjs", - "sourcePath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/gate-summary.mjs", - "distPath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/dist/gate-summary.mjs", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/gate-summary.mjs", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/gate-summary.mjs", "status": "match" }, { "kind": "runtime", "path": "runtime.mjs", - "sourcePath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/runtime.mjs", - "distPath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/dist/runtime.mjs", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/runtime.mjs", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/runtime.mjs", "status": "match" }, { "kind": "runtime", "path": "wiring-status.mjs", - "sourcePath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/wiring-status.mjs", - "distPath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/dist/wiring-status.mjs", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/wiring-status.mjs", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/wiring-status.mjs", "status": "match" }, { "kind": "runtime", "path": "workbench-hardware-panel.mjs", - "sourcePath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/workbench-hardware-panel.mjs", - "distPath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/dist/workbench-hardware-panel.mjs", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/workbench-hardware-panel.mjs", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/workbench-hardware-panel.mjs", "status": "match" }, { "kind": "runtime", "path": "help.md", - "sourcePath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/help.md", - "distPath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/dist/help.md", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/help.md", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/help.md", "status": "match" }, { "kind": "runtime", "path": "third_party/marked/marked.esm.js", - "sourcePath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/third_party/marked/marked.esm.js", - "distPath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/dist/third_party/marked/marked.esm.js", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/third_party/marked/marked.esm.js", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/third_party/marked/marked.esm.js", "status": "match" }, { "kind": "runtime", "path": "third_party/marked/LICENSE", - "sourcePath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/third_party/marked/LICENSE", - "distPath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/dist/third_party/marked/LICENSE", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/third_party/marked/LICENSE", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/third_party/marked/LICENSE", "status": "match" }, { "kind": "alias", "path": "gate/index.html", - "sourcePath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/index.html", - "distPath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/dist/gate/index.html", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/index.html", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/gate/index.html", "status": "match" }, { "kind": "alias", "path": "diagnostics/gate/index.html", - "sourcePath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/index.html", - "distPath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/dist/diagnostics/gate/index.html", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/index.html", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/diagnostics/gate/index.html", "status": "match" }, { "kind": "alias", "path": "help/index.html", - "sourcePath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/index.html", - "distPath": "/workspace/hwlab-359-postmerge-artifact/web/hwlab-cloud-web/dist/help/index.html", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/index.html", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/help/index.html", "status": "match" } ], @@ -1089,17 +1091,17 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "localImageId": "sha256:b154693dac8404a06e7f1defd0cd3c939280709c0e236ebc2507108b9de6fb96" + "localImageId": "sha256:52c9a5fd1d0ceea99b9f4b4a4f07289d5f136fc5b01f8459359f663e9c4f08f6" }, { "serviceId": "hwlab-agent-mgr", "status": "published", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:b02ac5b", - "imageTag": "b02ac5b", - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", - "digest": "sha256:1457c7141f0f6ddeee04c4342e87a0cda8d95718ac64d7b009bf76832c5c7bee", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-agent-mgr@sha256:1457c7141f0f6ddeee04c4342e87a0cda8d95718ac64d7b009bf76832c5c7bee", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:f37e9b4dd6262ff4c30826fae1a0e01b184d0e57812c7876de73566263ff0c35", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-agent-mgr@sha256:f37e9b4dd6262ff4c30826fae1a0e01b184d0e57812c7876de73566263ff0c35", "runtimeKind": "node-command", "implementationState": "repo-entrypoint", "sourceState": "source-present", @@ -1108,17 +1110,17 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "localImageId": "sha256:4d4dc25dd0bc94c9349d1e9ac833c422a5b623a7e4ed04fb009f543bd67501c2" + "localImageId": "sha256:fcbe3efa1a08e032578e20f0c164702f7bff0adf53c18be1a8c3dd28d04ec145" }, { "serviceId": "hwlab-agent-worker", "status": "published", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:b02ac5b", - "imageTag": "b02ac5b", - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", - "digest": "sha256:a6653bba439eb0f53512269c22f41c07cad48a89c5287374c5262ea01f95e77b", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-agent-worker@sha256:a6653bba439eb0f53512269c22f41c07cad48a89c5287374c5262ea01f95e77b", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:afdc241c799fe53561b60a37199c73cfb612ea0381ecfba82e66eb08566a8336", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-agent-worker@sha256:afdc241c799fe53561b60a37199c73cfb612ea0381ecfba82e66eb08566a8336", "runtimeKind": "node-command", "implementationState": "repo-entrypoint", "sourceState": "source-present", @@ -1127,17 +1129,17 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "localImageId": "sha256:0d1f9f7f6de57a378c3de80692e114eca458992ee080653175021007e676a52e" + "localImageId": "sha256:b1bedde6be876009e8b4f8c3db2ee328dd6f7fc60ad12eb5a8bec803d7a3810f" }, { "serviceId": "hwlab-gateway", "status": "published", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway:b02ac5b", - "imageTag": "b02ac5b", - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", - "digest": "sha256:72fff1deee7a999b8806487c52e4bd89a7930605afe0a193588ffcfdea2af3d3", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-gateway@sha256:72fff1deee7a999b8806487c52e4bd89a7930605afe0a193588ffcfdea2af3d3", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:27303c093330bddf4c1eb8e3791dce6dbbe97aab28ff17c1faf761b05333cce0", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-gateway@sha256:27303c093330bddf4c1eb8e3791dce6dbbe97aab28ff17c1faf761b05333cce0", "runtimeKind": "node-command", "implementationState": "repo-entrypoint", "sourceState": "source-present", @@ -1146,17 +1148,17 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "localImageId": "sha256:92eff3cfd2fa3c25ed5424f0a70790c7657c4ab21ff3be2d7e1b591b10407315" + "localImageId": "sha256:e5c8fb518b9b3d3b6c919a775fb5261f406d174d89ea16fc45343a6deb438cd2" }, { "serviceId": "hwlab-gateway-simu", "status": "published", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:b02ac5b", - "imageTag": "b02ac5b", - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", - "digest": "sha256:4cfb1315aa93a11ea480ddb0da89994acc344834499d6cf322bbf0ff4b0c3137", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-gateway-simu@sha256:4cfb1315aa93a11ea480ddb0da89994acc344834499d6cf322bbf0ff4b0c3137", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:38c0372ec72e8f17b26f2fcf83d35718023a81c48529e459d83e36f8cc56ec3a", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-gateway-simu@sha256:38c0372ec72e8f17b26f2fcf83d35718023a81c48529e459d83e36f8cc56ec3a", "runtimeKind": "node-command", "implementationState": "repo-entrypoint", "sourceState": "source-present", @@ -1165,17 +1167,17 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "localImageId": "sha256:b6c3475c74614145e90ae4513f3fb50e2bfe9be7395334ae56aa8927c178cf46" + "localImageId": "sha256:402df7f795dcac1dce61cce5bbd7561063fb2ccfeec137604a22705b4fb52a89" }, { "serviceId": "hwlab-box-simu", "status": "published", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:b02ac5b", - "imageTag": "b02ac5b", - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", - "digest": "sha256:9fde14a98f0850e139435cf7b473219c3d43231acd2f65b2410e8e3d0f49b858", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-box-simu@sha256:9fde14a98f0850e139435cf7b473219c3d43231acd2f65b2410e8e3d0f49b858", + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:d551c22242fff6016f15672c4b8b06dbfc85da2c00ecfdd4e40486668b58a56f", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-box-simu@sha256:d551c22242fff6016f15672c4b8b06dbfc85da2c00ecfdd4e40486668b58a56f", "runtimeKind": "node-command", "implementationState": "repo-entrypoint", "sourceState": "source-present", @@ -1184,17 +1186,17 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "localImageId": "sha256:207e207424fc5fc51cd1ad8e35cbd47659cee96d2b6b4e534c4721f7595f7bf6" + "localImageId": "sha256:bd930154ef77a99b9f3995c842f1e60e60bf20a95a549d9a37ddd5328daab06f" }, { "serviceId": "hwlab-patch-panel", "status": "published", - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:b02ac5b", - "imageTag": "b02ac5b", - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", - "digest": "sha256:2abe0cb87c3eef6d080a3d60bdd39037df89269b0b730a704a52e12405dceaea", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-patch-panel@sha256:2abe0cb87c3eef6d080a3d60bdd39037df89269b0b730a704a52e12405dceaea", + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:6c7f3600a71131c11b994a625fd6ced65ac3bb7f109f3c7f941513cbd1d2def5", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-patch-panel@sha256:6c7f3600a71131c11b994a625fd6ced65ac3bb7f109f3c7f941513cbd1d2def5", "runtimeKind": "node-command", "implementationState": "repo-entrypoint", "sourceState": "source-present", @@ -1203,17 +1205,17 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "localImageId": "sha256:06f85403e23a5d8c2e13c92c9529ef30c336a3deffb0fd35038a0c7d6099b941" + "localImageId": "sha256:266001d47990842d4e232c2dd4793bc2b3c7f298f7a430278e9a040937035206" }, { "serviceId": "hwlab-router", "status": "published", - "image": "127.0.0.1:5000/hwlab/hwlab-router:b02ac5b", - "imageTag": "b02ac5b", - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", - "digest": "sha256:fcfa1c1f5231e48d07113fbbbec525b16cc5431b38d4fbacc263f517ad0b9120", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-router@sha256:fcfa1c1f5231e48d07113fbbbec525b16cc5431b38d4fbacc263f517ad0b9120", + "image": "127.0.0.1:5000/hwlab/hwlab-router:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:8d9084f3d23e44d3ffe628e9d100ebbad260c857d06b1fbb5791ecd11bfc4d9f", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-router@sha256:8d9084f3d23e44d3ffe628e9d100ebbad260c857d06b1fbb5791ecd11bfc4d9f", "runtimeKind": "node-command", "implementationState": "repo-entrypoint", "sourceState": "source-present", @@ -1222,17 +1224,17 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "localImageId": "sha256:2c79067753c6dd88208a819ffbd5d991ca89c0922cfd1a3d63808ca1ca76ccde" + "localImageId": "sha256:18ff1e8287fdfa1b051e9d4ea64e8ed36c6250c1176f67af82565e5042a11cd2" }, { "serviceId": "hwlab-tunnel-client", "status": "published", - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:b02ac5b", - "imageTag": "b02ac5b", - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", - "digest": "sha256:687826d894137c5c471124f6f3cffdb1165acf23c80dc2cc6fd5bca98434b6e7", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-tunnel-client@sha256:687826d894137c5c471124f6f3cffdb1165acf23c80dc2cc6fd5bca98434b6e7", + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:d6dff1383912ccfed1b1b91dc5ae8323e345f42f57145d7bda788e9941a4ca5a", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-tunnel-client@sha256:d6dff1383912ccfed1b1b91dc5ae8323e345f42f57145d7bda788e9941a4ca5a", "runtimeKind": "node-command", "implementationState": "repo-entrypoint", "sourceState": "source-present", @@ -1241,17 +1243,17 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "localImageId": "sha256:873a3a9a455a2da56c561c1cb7b0dfc5dda1d0dfa435e5410b1ad51aea74e76f" + "localImageId": "sha256:36b894ded2c1d67b65897ff18094cdbb38ca19d2ba320f8750fe61c1e146079a" }, { "serviceId": "hwlab-edge-proxy", "status": "published", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:b02ac5b", - "imageTag": "b02ac5b", - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", - "digest": "sha256:eb0a165cc57428741a59ef953c8596631f9d85bc51117d16f16d5847803ebfef", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-edge-proxy@sha256:eb0a165cc57428741a59ef953c8596631f9d85bc51117d16f16d5847803ebfef", + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:6ce280c0fd17218dd5719d1118b5e72fd0c4107dc33951e09b35c374f7affacd", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-edge-proxy@sha256:6ce280c0fd17218dd5719d1118b5e72fd0c4107dc33951e09b35c374f7affacd", "runtimeKind": "node-command", "implementationState": "repo-entrypoint", "sourceState": "source-present", @@ -1260,17 +1262,17 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "localImageId": "sha256:25691c55e5f408859a2ac2004c3d0aa4a5ab86882567215fadf23ceefe29c40c" + "localImageId": "sha256:187e18a34ef29c0031d9b063583e1cf4d88990dc93e1c1347e2191a08b8daaa8" }, { "serviceId": "hwlab-cli", "status": "published", - "image": "127.0.0.1:5000/hwlab/hwlab-cli:b02ac5b", - "imageTag": "b02ac5b", - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", - "digest": "sha256:d36e790701478653a8b2b672bb8fcccf055f6422552c6d7559a2339b0ef3d621", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-cli@sha256:d36e790701478653a8b2b672bb8fcccf055f6422552c6d7559a2339b0ef3d621", + "image": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:09a015e727738cd188853af557ecd8ea4adfa8a2250692e7442549e9c80eae1f", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-cli@sha256:09a015e727738cd188853af557ecd8ea4adfa8a2250692e7442549e9c80eae1f", "runtimeKind": "cli", "implementationState": "repo-entrypoint", "sourceState": "source-present", @@ -1279,17 +1281,17 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "localImageId": "sha256:87951bc6194c1b98b863313fcc761ec23e8d119dfa0fd1a71c2bfdf362f63225" + "localImageId": "sha256:c7c6323b2cccd57dbf18f7e6ceecd28c990f9a9d2d3aedd09cc680ff23acffbd" }, { "serviceId": "hwlab-agent-skills", "status": "published", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:b02ac5b", - "imageTag": "b02ac5b", - "buildCreatedAt": "2026-05-23T20:47:40.669Z", - "buildSource": "pikasTech/HWLAB@b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", - "digest": "sha256:22c1ad255a1039ca148444664563ae76209ccbb0d3e7fba27613250c938e3f5b", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-agent-skills@sha256:22c1ad255a1039ca148444664563ae76209ccbb0d3e7fba27613250c938e3f5b", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:45602b9d09ef22095ab75bd95e2f310626bce61bc4e39a7205009fe9620c2d4f", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-agent-skills@sha256:45602b9d09ef22095ab75bd95e2f310626bce61bc4e39a7205009fe9620c2d4f", "runtimeKind": "skills-bundle", "implementationState": "repo-bundle", "sourceState": "source-present", @@ -1298,7 +1300,7 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "localImageId": "sha256:b69f33602be152d268337faf27f55ab565127e57e094389a1c5a2d9d1c99df61" + "localImageId": "sha256:a71bb06cfa9a9dc2dd48641bd49e1c36d187d1f4a45326143303ffc64b64c73e" } ], "blockers": [] diff --git a/reports/dev-gate/dev-cd-apply.json b/reports/dev-gate/dev-cd-apply.json index cab87f0e..0d0791af 100644 --- a/reports/dev-gate/dev-cd-apply.json +++ b/reports/dev-gate/dev-cd-apply.json @@ -4,12 +4,12 @@ "reportVersion": "v1", "issue": "pikasTech/HWLAB#274", "taskId": "dev-cd-apply", - "commitId": "63acb59", + "commitId": "e6d4bd5", "acceptanceLevel": "dev_cd_apply", "devOnly": true, "prodDisabled": true, - "status": "pass", - "generatedAt": "2026-05-23T09:40:36.676Z", + "status": "blocked", + "generatedAt": "2026-05-23T21:48:18.309Z", "reportLifecycle": { "version": "v1", "state": "active", @@ -28,7 +28,7 @@ "pikasTech/HWLAB#73" ], "sourceContract": { - "status": "pass", + "status": "blocked", "documents": [ "docs/reference/deployment-publish.md", "docs/reference/dev-runtime-boundary.md", @@ -70,45 +70,50 @@ "summary": "DEV CD mutation requires --apply and the transaction Lease lock." }, "devPreconditions": { - "status": "pass", + "status": "blocked", "requirements": [ + "DEV CD apply must force KUBECONFIG=/etc/rancher/k3s/k3s.yaml and verify native node d601 before any Lease, Job, apply, or rollout side effect.", + "DEV CD apply must reject docker-desktop, desktop-control-plane, 127.0.0.1:11700, bare kubectl ambiguity, and second hwlab-dev control-plane signals before mutation.", + "DEV CD apply must verify required SecretRef existence and key names without reading or printing Secret values.", "HEAD must match the requested target ref before publish.", "Lease/hwlab-dev-cd-lock must be acquired before publish/apply.", "Legacy publish/apply side-effect scripts must run with HWLAB_CD_TRANSACTION_ID.", + "DEV DB role/database provisioning and runtime migration must run through repo-owned commands before workload apply.", "deploy/deploy.json, artifact catalog, and workloads must converge before apply.", - "Public 16666 and 16667 live health must be recorded in this report." + "When deploy/deploy.json already points to a published promotion commit, HEAD may be a later control commit and the transaction must consume that promotion without republishing HEAD.", + "Public 16666 and 16667 live health plus M3 durable postflight must be recorded in this report." ], - "summary": "DEV CD transaction preconditions passed." + "summary": "One or more DEV CD transaction preconditions failed." }, "transaction": { - "transactionId": "fdb50204-3968-48f8-82ee-cd8f172b0c5a", - "ownerTaskId": "DC-DCSN-P0-2026-003", + "transactionId": "35e3d897-c90f-42bf-b41c-c1b042ffbae9", + "ownerTaskId": "DC-DCSN-P0-2026-003-HWLAB-DEV-CD-ROLLOUT-20260523T2138Z", "targetNamespace": "hwlab-dev", "lockName": "hwlab-dev-cd-lock", "lockBackend": "Lease", - "startedAt": "2026-05-23T09:40:07.734Z", - "finishedAt": "2026-05-23T09:40:36.676Z", + "startedAt": "2026-05-23T21:37:52.909Z", + "finishedAt": "2026-05-23T21:48:18.309Z", "ttlSeconds": 3600, "phases": [ { "phase": "publishing", "status": "entered", - "at": "2026-05-23T09:40:11.742Z" + "at": "2026-05-23T21:37:54.541Z" }, { "phase": "applying", "status": "entered", - "at": "2026-05-23T09:40:33.012Z" + "at": "2026-05-23T21:47:57.434Z" }, { "phase": "verifying", "status": "entered", - "at": "2026-05-23T09:40:35.398Z" + "at": "2026-05-23T21:48:14.217Z" }, { "phase": "released", "status": "released", - "at": "2026-05-23T09:40:36.676Z" + "at": "2026-05-23T21:48:18.309Z" } ], "release": { @@ -117,15 +122,15 @@ "lock": { "lockBackend": "Lease", "lockName": "hwlab-dev-cd-lock", - "resourceVersion": "1387022", + "resourceVersion": "1495698", "holderIdentity": "", - "promotionCommit": "63acb59", - "deployJsonHash": "sha256:d1e1c344b8b36913ba39985c0b91531bc377e4ef293b0a28cee44d4f3c025b67", - "ownerTaskId": "DC-DCSN-P0-2026-003", - "transactionId": "fdb50204-3968-48f8-82ee-cd8f172b0c5a", + "promotionCommit": "e6d4bd5", + "deployJsonHash": "sha256:4a0a031deb54812637cc083d2cf1bc3dca9ed16418cd7da52970a6e9b2ace70e", + "ownerTaskId": "DC-DCSN-P0-2026-003-HWLAB-DEV-CD-ROLLOUT-20260523T2138Z", + "transactionId": "35e3d897-c90f-42bf-b41c-c1b042ffbae9", "phase": "released", - "startedAt": "2026-05-23T09:40:07.746000Z", - "updatedAt": "2026-05-23T09:40:36.631000Z", + "startedAt": "2026-05-23T21:37:53.176000Z", + "updatedAt": "2026-05-23T21:48:18.271000Z", "ttlSeconds": 3600, "liveBefore": { "status": "pass", @@ -138,17 +143,17 @@ "httpStatus": 200, "reachable": true, "identityMatches": true, - "startedAt": "2026-05-23T09:40:07.823Z", - "finishedAt": "2026-05-23T09:40:08.574Z", + "startedAt": "2026-05-23T21:37:53.244Z", + "finishedAt": "2026-05-23T21:37:53.799Z", "expectedServiceId": "hwlab-cloud-web", "expectedCommit": null, "serviceId": "hwlab-cloud-web", "environment": "dev", "applicationStatus": "ok", "ready": null, - "observedCommit": "63acb59", - "image": null, - "imageTag": null, + "observedCommit": "b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:b02ac5b", + "imageTag": "b02ac5b", "observedAt": null, "serviceMatches": true, "environmentMatches": true, @@ -162,22 +167,24 @@ "httpStatus": 200, "reachable": true, "identityMatches": true, - "startedAt": "2026-05-23T09:40:07.825Z", - "finishedAt": "2026-05-23T09:40:11.666Z", + "startedAt": "2026-05-23T21:37:53.246Z", + "finishedAt": "2026-05-23T21:37:54.477Z", "expectedServiceId": "hwlab-cloud-api", "expectedCommit": null, "serviceId": "hwlab-cloud-api", "environment": "dev", - "applicationStatus": "ok", - "ready": true, - "observedCommit": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:63acb59", - "imageTag": "63acb59", - "observedAt": "2026-05-23T09:40:09.312Z", + "applicationStatus": "degraded", + "ready": false, + "observedCommit": "b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:b02ac5b", + "imageTag": "b02ac5b", + "observedAt": "2026-05-23T21:37:53.704Z", "serviceMatches": true, "environmentMatches": true, "commitMatches": null, - "blockerCodes": [] + "blockerCodes": [ + "stdio_protocol_not_wired" + ] } ], "summary": { @@ -193,8 +200,8 @@ }, "targetNamespace": "hwlab-dev", "targetRef": "origin/main", - "releasedAt": "2026-05-23T09:40:36.631000Z", - "releaseStatus": "pass", + "releasedAt": "2026-05-23T21:48:18.271000Z", + "releaseStatus": "blocked", "staleLockBrokenAt": null, "staleLockPrevious": null } @@ -204,10 +211,67 @@ "mode": "apply", "target": { "ref": "origin/main", - "promotionCommit": "63acb5989baa9f12266ca3467eb896a454593efc", - "shortCommitId": "63acb59", - "headCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", + "promotionCommit": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "shortCommitId": "e6d4bd5", + "promotionSource": "target-ref", + "publishRequired": true, + "controlRef": { + "ref": "origin/main", + "commitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "shortCommitId": "e6d4bd5" + }, + "headCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "headMatchesTarget": true, + "desiredStateCheck": null, + "artifactBoundary": { + "status": "degraded", + "controlCommit": { + "commitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "shortCommitId": "e6d4bd5" + }, + "artifactMergeCommit": { + "commitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "shortCommitId": "e6d4bd5", + "isMergeCommit": true, + "parents": [ + "cb79b9dac7815dd86d49e9b0c44502064713a37a", + "3c8a146eee8286315d11a60ac1a42de02c24e546" + ], + "promotionParent": "cb79b9dac7815dd86d49e9b0c44502064713a37a", + "artifactParent": "3c8a146eee8286315d11a60ac1a42de02c24e546", + "promotionParentMatches": false, + "changedPaths": [ + "deploy/deploy.json", + "deploy/k8s/base/workloads.yaml" + ] + }, + "artifactCommit": { + "commitId": "3c8a146eee8286315d11a60ac1a42de02c24e546", + "shortCommitId": "3c8a146", + "parents": [ + "cb79b9dac7815dd86d49e9b0c44502064713a37a" + ], + "promotionParentMatches": false + }, + "desiredState": { + "deployCommitId": "e6d4bd5", + "deployJsonHash": "sha256:4a0a031deb54812637cc083d2cf1bc3dca9ed16418cd7da52970a6e9b2ace70e", + "catalogCommitId": "e6d4bd5", + "catalogHash": "sha256:6195e2ed01c7f0fcad407b454b306b07a81270f8b6e79119158af295c6fd744e", + "reportCommitId": "b02ac5b", + "reportSourceCommitId": "b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", + "reportHash": "sha256:2679ba1b2f89d554e99031fd5fa7df6067a6b42ef7b3fdfc2ee04c0f1880b41b", + "deployCommitMatches": true, + "catalogCommitMatches": true, + "reportCommitMatches": false, + "desiredStatePaths": [ + "deploy/artifact-catalog.dev.json", + "deploy/deploy.json", + "deploy/k8s/base/workloads.yaml", + "reports/dev-gate/dev-artifacts.json" + ] + } + }, "namespace": "hwlab-dev", "apiEndpoint": "http://74.48.78.17:16667", "browserEndpoint": "http://74.48.78.17:16666/" @@ -215,15 +279,15 @@ "deployJson": { "before": { "path": "deploy/deploy.json", - "hash": "sha256:d1e1c344b8b36913ba39985c0b91531bc377e4ef293b0a28cee44d4f3c025b67", - "commitId": "6963ed2", + "hash": "sha256:4a0a031deb54812637cc083d2cf1bc3dca9ed16418cd7da52970a6e9b2ace70e", + "commitId": "e6d4bd5", "namespace": "hwlab-dev", "environment": "dev", "endpoint": "http://74.48.78.17:16667", "manifest": { "manifestVersion": "v1", "environment": "dev", - "commitId": "6963ed2", + "commitId": "e6d4bd5", "namespace": "hwlab-dev", "endpoint": "http://74.48.78.17:16667", "health": { @@ -403,7 +467,7 @@ "services": [ { "serviceId": "hwlab-cloud-api", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -411,9 +475,9 @@ "env": { "HWLAB_ENVIRONMENT": "dev", "HWLAB_PUBLIC_ENDPOINT": "http://74.48.78.17:16667", - "HWLAB_COMMIT_ID": "6963ed2", - "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-api:6963ed2", - "HWLAB_IMAGE_TAG": "6963ed2", + "HWLAB_COMMIT_ID": "e6d4bd5", + "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", + "HWLAB_IMAGE_TAG": "e6d4bd5", "HWLAB_RUNTIME_SUBSTITUTE_FORBIDDEN": "unidesk-backend,provider-gateway,microservice-proxy", "HWLAB_CLOUD_DB_URL": "secretRef:hwlab-cloud-api-dev-db/database-url", "HWLAB_CLOUD_DB_SSL_MODE": "disable", @@ -424,15 +488,25 @@ "HWLAB_M3_GATEWAY_SIMU_1_URL": "http://hwlab-gateway-simu-1.hwlab-dev.svc.cluster.local:7101", "HWLAB_M3_GATEWAY_SIMU_2_URL": "http://hwlab-gateway-simu-2.hwlab-dev.svc.cluster.local:7101", "HWLAB_M3_PATCH_PANEL_URL": "http://hwlab-patch-panel.hwlab-dev.svc.cluster.local:7301", - "HWLAB_CODE_AGENT_PROVIDER": "openai", + "HWLAB_CODE_AGENT_PROVIDER": "codex-stdio", "HWLAB_CODE_AGENT_MODEL": "gpt-5.5", + "HWLAB_CODE_AGENT_TIMEOUT_MS": "120000", "HWLAB_CODE_AGENT_OPENAI_BASE_URL": "http://172.26.26.227:17680/v1/responses", - "OPENAI_API_KEY": "secretRef:hwlab-code-agent-provider/openai-api-key" + "HWLAB_CODE_AGENT_HWLAB_API_BASE_URL": "http://hwlab-cloud-api.hwlab-dev.svc.cluster.local:6667", + "HWLAB_CODE_AGENT_CODEX_STDIO_ENABLED": "1", + "HWLAB_CODE_AGENT_CODEX_STDIO_SUPERVISOR": "repo-owned", + "HWLAB_CODE_AGENT_WORKSPACE": "/workspace/hwlab", + "HWLAB_CODE_AGENT_CODEX_WORKSPACE": "/workspace/hwlab", + "HWLAB_CODE_AGENT_CODEX_SANDBOX": "workspace-write", + "HWLAB_CODE_AGENT_CODEX_COMMAND": "/app/node_modules/.bin/codex", + "CODEX_HOME": "/codex-home", + "OPENAI_API_KEY": "secretRef:hwlab-code-agent-provider/openai-api-key", + "HWLAB_CODE_AGENT_SKILLS_DIRS": "/app/skills:/root/.agents/skills:/home/ubuntu/.agents/skills" } }, { "serviceId": "hwlab-cloud-web", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -440,14 +514,15 @@ "env": { "HWLAB_ENVIRONMENT": "dev", "HWLAB_API_BASE_URL": "http://hwlab-cloud-api.hwlab-dev.svc.cluster.local:6667", - "HWLAB_COMMIT_ID": "6963ed2", - "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-web:6963ed2", - "HWLAB_IMAGE_TAG": "6963ed2" + "HWLAB_CLOUD_WEB_PROXY_TIMEOUT_MS": "150000", + "HWLAB_COMMIT_ID": "e6d4bd5", + "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "HWLAB_IMAGE_TAG": "e6d4bd5" } }, { "serviceId": "hwlab-agent-mgr", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -459,7 +534,7 @@ }, { "serviceId": "hwlab-agent-worker", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -471,7 +546,7 @@ }, { "serviceId": "hwlab-gateway", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway:6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -483,7 +558,7 @@ }, { "serviceId": "hwlab-gateway-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -503,7 +578,7 @@ }, { "serviceId": "hwlab-box-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -522,7 +597,7 @@ }, { "serviceId": "hwlab-patch-panel", - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -543,7 +618,7 @@ }, { "serviceId": "hwlab-router", - "image": "127.0.0.1:5000/hwlab/hwlab-router:6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-router:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -555,7 +630,7 @@ }, { "serviceId": "hwlab-tunnel-client", - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -569,19 +644,20 @@ }, { "serviceId": "hwlab-edge-proxy", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", "replicas": 1, "env": { "HWLAB_EDGE_LISTEN": "0.0.0.0:6667", - "HWLAB_EDGE_UPSTREAM": "http://hwlab-cloud-api.hwlab-dev.svc.cluster.local:6667" + "HWLAB_EDGE_UPSTREAM": "http://hwlab-cloud-api.hwlab-dev.svc.cluster.local:6667", + "HWLAB_EDGE_PROXY_TIMEOUT_MS": "150000" } }, { "serviceId": "hwlab-cli", - "image": "127.0.0.1:5000/hwlab/hwlab-cli:6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -592,13 +668,13 @@ }, { "serviceId": "hwlab-agent-skills", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", "replicas": 1, "env": { - "HWLAB_SKILLS_COMMIT_ID": "6963ed2" + "HWLAB_SKILLS_COMMIT_ID": "e6d4bd5" } } ], @@ -607,15 +683,15 @@ }, "after": { "path": "deploy/deploy.json", - "hash": "sha256:a9e8d6019ffc8e40548f70a0d7ea119a37f6384113fc16eea8ea259dcbeea0e8", - "commitId": "63acb59", + "hash": "sha256:4a0a031deb54812637cc083d2cf1bc3dca9ed16418cd7da52970a6e9b2ace70e", + "commitId": "e6d4bd5", "namespace": "hwlab-dev", "environment": "dev", "endpoint": "http://74.48.78.17:16667", "manifest": { "manifestVersion": "v1", "environment": "dev", - "commitId": "63acb59", + "commitId": "e6d4bd5", "namespace": "hwlab-dev", "endpoint": "http://74.48.78.17:16667", "health": { @@ -795,7 +871,7 @@ "services": [ { "serviceId": "hwlab-cloud-api", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -803,9 +879,9 @@ "env": { "HWLAB_ENVIRONMENT": "dev", "HWLAB_PUBLIC_ENDPOINT": "http://74.48.78.17:16667", - "HWLAB_COMMIT_ID": "63acb59", - "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-api:63acb59", - "HWLAB_IMAGE_TAG": "63acb59", + "HWLAB_COMMIT_ID": "e6d4bd5", + "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", + "HWLAB_IMAGE_TAG": "e6d4bd5", "HWLAB_RUNTIME_SUBSTITUTE_FORBIDDEN": "unidesk-backend,provider-gateway,microservice-proxy", "HWLAB_CLOUD_DB_URL": "secretRef:hwlab-cloud-api-dev-db/database-url", "HWLAB_CLOUD_DB_SSL_MODE": "disable", @@ -816,15 +892,25 @@ "HWLAB_M3_GATEWAY_SIMU_1_URL": "http://hwlab-gateway-simu-1.hwlab-dev.svc.cluster.local:7101", "HWLAB_M3_GATEWAY_SIMU_2_URL": "http://hwlab-gateway-simu-2.hwlab-dev.svc.cluster.local:7101", "HWLAB_M3_PATCH_PANEL_URL": "http://hwlab-patch-panel.hwlab-dev.svc.cluster.local:7301", - "HWLAB_CODE_AGENT_PROVIDER": "openai", + "HWLAB_CODE_AGENT_PROVIDER": "codex-stdio", "HWLAB_CODE_AGENT_MODEL": "gpt-5.5", + "HWLAB_CODE_AGENT_TIMEOUT_MS": "120000", "HWLAB_CODE_AGENT_OPENAI_BASE_URL": "http://172.26.26.227:17680/v1/responses", - "OPENAI_API_KEY": "secretRef:hwlab-code-agent-provider/openai-api-key" + "HWLAB_CODE_AGENT_HWLAB_API_BASE_URL": "http://hwlab-cloud-api.hwlab-dev.svc.cluster.local:6667", + "HWLAB_CODE_AGENT_CODEX_STDIO_ENABLED": "1", + "HWLAB_CODE_AGENT_CODEX_STDIO_SUPERVISOR": "repo-owned", + "HWLAB_CODE_AGENT_WORKSPACE": "/workspace/hwlab", + "HWLAB_CODE_AGENT_CODEX_WORKSPACE": "/workspace/hwlab", + "HWLAB_CODE_AGENT_CODEX_SANDBOX": "workspace-write", + "HWLAB_CODE_AGENT_CODEX_COMMAND": "/app/node_modules/.bin/codex", + "CODEX_HOME": "/codex-home", + "OPENAI_API_KEY": "secretRef:hwlab-code-agent-provider/openai-api-key", + "HWLAB_CODE_AGENT_SKILLS_DIRS": "/app/skills:/root/.agents/skills:/home/ubuntu/.agents/skills" } }, { "serviceId": "hwlab-cloud-web", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -832,14 +918,15 @@ "env": { "HWLAB_ENVIRONMENT": "dev", "HWLAB_API_BASE_URL": "http://hwlab-cloud-api.hwlab-dev.svc.cluster.local:6667", - "HWLAB_COMMIT_ID": "63acb59", - "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "HWLAB_IMAGE_TAG": "63acb59" + "HWLAB_CLOUD_WEB_PROXY_TIMEOUT_MS": "150000", + "HWLAB_COMMIT_ID": "e6d4bd5", + "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "HWLAB_IMAGE_TAG": "e6d4bd5" } }, { "serviceId": "hwlab-agent-mgr", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -851,7 +938,7 @@ }, { "serviceId": "hwlab-agent-worker", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -863,7 +950,7 @@ }, { "serviceId": "hwlab-gateway", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -875,7 +962,7 @@ }, { "serviceId": "hwlab-gateway-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -895,7 +982,7 @@ }, { "serviceId": "hwlab-box-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -914,7 +1001,7 @@ }, { "serviceId": "hwlab-patch-panel", - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -935,7 +1022,7 @@ }, { "serviceId": "hwlab-router", - "image": "127.0.0.1:5000/hwlab/hwlab-router:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-router:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -947,7 +1034,7 @@ }, { "serviceId": "hwlab-tunnel-client", - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -961,19 +1048,20 @@ }, { "serviceId": "hwlab-edge-proxy", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", "replicas": 1, "env": { "HWLAB_EDGE_LISTEN": "0.0.0.0:6667", - "HWLAB_EDGE_UPSTREAM": "http://hwlab-cloud-api.hwlab-dev.svc.cluster.local:6667" + "HWLAB_EDGE_UPSTREAM": "http://hwlab-cloud-api.hwlab-dev.svc.cluster.local:6667", + "HWLAB_EDGE_PROXY_TIMEOUT_MS": "150000" } }, { "serviceId": "hwlab-cli", - "image": "127.0.0.1:5000/hwlab/hwlab-cli:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", @@ -984,13 +1072,13 @@ }, { "serviceId": "hwlab-agent-skills", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", "replicas": 1, "env": { - "HWLAB_SKILLS_COMMIT_ID": "63acb59" + "HWLAB_SKILLS_COMMIT_ID": "e6d4bd5" } } ], @@ -1003,15 +1091,15 @@ "current": { "lockBackend": "Lease", "lockName": "hwlab-dev-cd-lock", - "resourceVersion": "1387021", - "holderIdentity": "DC-DCSN-P0-2026-003/fdb50204-3968-48f8-82ee-cd8f172b0c5a", - "promotionCommit": "63acb59", - "deployJsonHash": "sha256:d1e1c344b8b36913ba39985c0b91531bc377e4ef293b0a28cee44d4f3c025b67", - "ownerTaskId": "DC-DCSN-P0-2026-003", - "transactionId": "fdb50204-3968-48f8-82ee-cd8f172b0c5a", + "resourceVersion": "1495618", + "holderIdentity": "DC-DCSN-P0-2026-003-HWLAB-DEV-CD-ROLLOUT-20260523T2138Z/35e3d897-c90f-42bf-b41c-c1b042ffbae9", + "promotionCommit": "e6d4bd5", + "deployJsonHash": "sha256:4a0a031deb54812637cc083d2cf1bc3dca9ed16418cd7da52970a6e9b2ace70e", + "ownerTaskId": "DC-DCSN-P0-2026-003-HWLAB-DEV-CD-ROLLOUT-20260523T2138Z", + "transactionId": "35e3d897-c90f-42bf-b41c-c1b042ffbae9", "phase": "verifying", - "startedAt": "2026-05-23T09:40:07.746000Z", - "updatedAt": "2026-05-23T09:40:35.317000Z", + "startedAt": "2026-05-23T21:37:53.176000Z", + "updatedAt": "2026-05-23T21:48:14.132000Z", "ttlSeconds": 3600, "liveBefore": { "status": "pass", @@ -1024,17 +1112,17 @@ "httpStatus": 200, "reachable": true, "identityMatches": true, - "startedAt": "2026-05-23T09:40:07.823Z", - "finishedAt": "2026-05-23T09:40:08.574Z", + "startedAt": "2026-05-23T21:37:53.244Z", + "finishedAt": "2026-05-23T21:37:53.799Z", "expectedServiceId": "hwlab-cloud-web", "expectedCommit": null, "serviceId": "hwlab-cloud-web", "environment": "dev", "applicationStatus": "ok", "ready": null, - "observedCommit": "63acb59", - "image": null, - "imageTag": null, + "observedCommit": "b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:b02ac5b", + "imageTag": "b02ac5b", "observedAt": null, "serviceMatches": true, "environmentMatches": true, @@ -1048,22 +1136,24 @@ "httpStatus": 200, "reachable": true, "identityMatches": true, - "startedAt": "2026-05-23T09:40:07.825Z", - "finishedAt": "2026-05-23T09:40:11.666Z", + "startedAt": "2026-05-23T21:37:53.246Z", + "finishedAt": "2026-05-23T21:37:54.477Z", "expectedServiceId": "hwlab-cloud-api", "expectedCommit": null, "serviceId": "hwlab-cloud-api", "environment": "dev", - "applicationStatus": "ok", - "ready": true, - "observedCommit": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:63acb59", - "imageTag": "63acb59", - "observedAt": "2026-05-23T09:40:09.312Z", + "applicationStatus": "degraded", + "ready": false, + "observedCommit": "b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:b02ac5b", + "imageTag": "b02ac5b", + "observedAt": "2026-05-23T21:37:53.704Z", "serviceMatches": true, "environmentMatches": true, "commitMatches": null, - "blockerCodes": [] + "blockerCodes": [ + "stdio_protocol_not_wired" + ] } ], "summary": { @@ -1093,8 +1183,8 @@ "status": "pass", "command": "/opt/node-v20.19.2-linux-x64/bin/node scripts/deploy-desired-state-plan.mjs --check --pretty", "code": 0, - "startedAt": "2026-05-23T09:40:11.742Z", - "finishedAt": "2026-05-23T09:40:11.784Z", + "startedAt": "2026-05-23T21:37:54.541Z", + "finishedAt": "2026-05-23T21:37:54.597Z", "stdoutJson": { "kind": "hwlab-deploy-desired-state-plan", "mode": "read-only-plan", @@ -1118,11 +1208,11 @@ }, "checkSemantics": "--check exits non-zero for missing/invalid desired-state sources, internal commit/image mirror drift, invalid target tags, partial target drift, or any mismatch with an explicit --target-ref, --target-tag, or --promotion-commit. When the checked target ref is the current checked-out merge commit, the comparable current-main target is its accepted first parent because a commit cannot embed its own content hash. Without --check, a uniform older desired-state under --target-ref/--target-tag is a read-only promotion plan.", "summary": { - "desiredCommitId": "6963ed2", - "desiredImageTag": "6963ed2", - "artifactState": "published", - "ciPublished": true, - "registryVerified": true, + "desiredCommitId": "e6d4bd5", + "desiredImageTag": "e6d4bd5", + "artifactState": "contract-skeleton", + "ciPublished": false, + "registryVerified": false, "services": 13, "workloadContainers": 13, "presentMirrorCount": 14, @@ -1174,7 +1264,9 @@ "codeAgentProvider": { "contractVersion": "v1", "environment": "dev", - "provider": "openai-responses", + "provider": "codex-stdio", + "runtimeProvider": "openai-responses", + "backend": "hwlab-cloud-api/codex-mcp-stdio", "model": "gpt-5.5", "status": "pass", "ready": true, @@ -1243,12 +1335,12 @@ "present": true, "authoritative": false, "note": "report snapshots are contextual evidence only; deploy desired-state remains authoritative in deploy/, not reports/", - "commitId": "6963ed2", - "matchesDesiredState": true, + "commitId": "b02ac5b", + "matchesDesiredState": false, "artifactPublish": { "status": "published", - "sourceCommitId": "6963ed21342374016fe419fd251d1787b249b5e7", - "sourceMatchesDesiredState": true, + "sourceCommitId": "b02ac5becad13aeeab0d5cb7d8f01300bccb78c2", + "sourceMatchesDesiredState": false, "publishedCount": 13, "serviceCount": 13, "registryVerified": null, @@ -1259,26 +1351,26 @@ { "serviceId": "hwlab-cloud-api", "deploy": { - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:6963ed2", - "imageTag": "6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": { "HWLAB_COMMIT_ID": { "name": "HWLAB_COMMIT_ID", - "value": "6963ed2", - "expected": "6963ed2", + "value": "e6d4bd5", + "expected": "e6d4bd5", "status": "match" }, "HWLAB_IMAGE": { "name": "HWLAB_IMAGE", - "value": "127.0.0.1:5000/hwlab/hwlab-cloud-api:6963ed2", - "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-api:6963ed2", + "value": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", + "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", "status": "match" }, "HWLAB_IMAGE_TAG": { "name": "HWLAB_IMAGE_TAG", - "value": "6963ed2", - "expected": "6963ed2", + "value": "e6d4bd5", + "expected": "e6d4bd5", "status": "match" } }, @@ -1290,11 +1382,11 @@ } }, "catalog": { - "commitId": "6963ed2", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:6963ed2", - "imageTag": "6963ed2", - "digest": "sha256:4bb54a3ac720cabdcf5b0e9f7a0ccb98ba28d6ff9c85d2f01c75b834211d113f", - "publishState": "published", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true }, "workloads": [ @@ -1303,26 +1395,26 @@ "name": "hwlab-cloud-api", "namespace": "hwlab-dev", "container": "hwlab-cloud-api", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:6963ed2", - "imageTag": "6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": { "HWLAB_COMMIT_ID": { "name": "HWLAB_COMMIT_ID", - "value": "6963ed2", - "expected": "6963ed2", + "value": "e6d4bd5", + "expected": "e6d4bd5", "status": "match" }, "HWLAB_IMAGE": { "name": "HWLAB_IMAGE", - "value": "127.0.0.1:5000/hwlab/hwlab-cloud-api:6963ed2", - "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-api:6963ed2", + "value": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", + "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", "status": "match" }, "HWLAB_IMAGE_TAG": { "name": "HWLAB_IMAGE_TAG", - "value": "6963ed2", - "expected": "6963ed2", + "value": "e6d4bd5", + "expected": "e6d4bd5", "status": "match" } }, @@ -1339,26 +1431,26 @@ { "serviceId": "hwlab-cloud-web", "deploy": { - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:6963ed2", - "imageTag": "6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": { "HWLAB_COMMIT_ID": { "name": "HWLAB_COMMIT_ID", - "value": "6963ed2", - "expected": "6963ed2", + "value": "e6d4bd5", + "expected": "e6d4bd5", "status": "match" }, "HWLAB_IMAGE": { "name": "HWLAB_IMAGE", - "value": "127.0.0.1:5000/hwlab/hwlab-cloud-web:6963ed2", - "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:6963ed2", + "value": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", "status": "match" }, "HWLAB_IMAGE_TAG": { "name": "HWLAB_IMAGE_TAG", - "value": "6963ed2", - "expected": "6963ed2", + "value": "e6d4bd5", + "expected": "e6d4bd5", "status": "match" } }, @@ -1370,11 +1462,11 @@ } }, "catalog": { - "commitId": "6963ed2", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:6963ed2", - "imageTag": "6963ed2", - "digest": "sha256:3c3a4ef374bf843ad1c170696c5a122fdbf35a872a17c086ed06ffd50c5a0e06", - "publishState": "published", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true }, "workloads": [ @@ -1383,26 +1475,26 @@ "name": "hwlab-cloud-web", "namespace": "hwlab-dev", "container": "hwlab-cloud-web", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:6963ed2", - "imageTag": "6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": { "HWLAB_COMMIT_ID": { "name": "HWLAB_COMMIT_ID", - "value": "6963ed2", - "expected": "6963ed2", + "value": "e6d4bd5", + "expected": "e6d4bd5", "status": "match" }, "HWLAB_IMAGE": { "name": "HWLAB_IMAGE", - "value": "127.0.0.1:5000/hwlab/hwlab-cloud-web:6963ed2", - "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:6963ed2", + "value": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", "status": "match" }, "HWLAB_IMAGE_TAG": { "name": "HWLAB_IMAGE_TAG", - "value": "6963ed2", - "expected": "6963ed2", + "value": "e6d4bd5", + "expected": "e6d4bd5", "status": "match" } }, @@ -1419,8 +1511,8 @@ { "serviceId": "hwlab-agent-mgr", "deploy": { - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:6963ed2", - "imageTag": "6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -1434,11 +1526,11 @@ } }, "catalog": { - "commitId": "6963ed2", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:6963ed2", - "imageTag": "6963ed2", - "digest": "sha256:42bd66841b857493d78e7be670957fa4238b487a2e546a3d42e78e56a685bc82", - "publishState": "published", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true }, "workloads": [ @@ -1447,8 +1539,8 @@ "name": "hwlab-agent-mgr", "namespace": "hwlab-dev", "container": "hwlab-agent-mgr", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:6963ed2", - "imageTag": "6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -1467,8 +1559,8 @@ { "serviceId": "hwlab-agent-worker", "deploy": { - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:6963ed2", - "imageTag": "6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -1482,11 +1574,11 @@ } }, "catalog": { - "commitId": "6963ed2", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:6963ed2", - "imageTag": "6963ed2", - "digest": "sha256:8131839bd8f08fc654bf96ba7c713ba917e198ebab04cf051b9e384392eb95e9", - "publishState": "published", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true }, "workloads": [ @@ -1495,8 +1587,8 @@ "name": "hwlab-agent-worker-template", "namespace": "hwlab-dev", "container": "hwlab-agent-worker", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:6963ed2", - "imageTag": "6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -1515,8 +1607,8 @@ { "serviceId": "hwlab-gateway", "deploy": { - "image": "127.0.0.1:5000/hwlab/hwlab-gateway:6963ed2", - "imageTag": "6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -1530,11 +1622,11 @@ } }, "catalog": { - "commitId": "6963ed2", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway:6963ed2", - "imageTag": "6963ed2", - "digest": "sha256:808d609ef4873b64faf5eeb13f8eb6bf280bcd9f799d90f00bab44c2c7ad3fd8", - "publishState": "published", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true }, "workloads": [ @@ -1543,8 +1635,8 @@ "name": "hwlab-gateway", "namespace": "hwlab-dev", "container": "hwlab-gateway", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway:6963ed2", - "imageTag": "6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -1563,8 +1655,8 @@ { "serviceId": "hwlab-gateway-simu", "deploy": { - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:6963ed2", - "imageTag": "6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -1578,11 +1670,11 @@ } }, "catalog": { - "commitId": "6963ed2", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:6963ed2", - "imageTag": "6963ed2", - "digest": "sha256:13e1a66ba2dc45bdf04ac4664a4ab9f0589951509895e754ae46df02062c7b44", - "publishState": "published", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true }, "workloads": [ @@ -1591,8 +1683,8 @@ "name": "hwlab-gateway-simu", "namespace": "hwlab-dev", "container": "hwlab-gateway-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:6963ed2", - "imageTag": "6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -1611,8 +1703,8 @@ { "serviceId": "hwlab-box-simu", "deploy": { - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:6963ed2", - "imageTag": "6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -1626,11 +1718,11 @@ } }, "catalog": { - "commitId": "6963ed2", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:6963ed2", - "imageTag": "6963ed2", - "digest": "sha256:1ef041e13d81148dc3a02a28f9b70ae9848554c66c02ec358141bd2ac8cbf91e", - "publishState": "published", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true }, "workloads": [ @@ -1639,8 +1731,8 @@ "name": "hwlab-box-simu", "namespace": "hwlab-dev", "container": "hwlab-box-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:6963ed2", - "imageTag": "6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -1659,8 +1751,8 @@ { "serviceId": "hwlab-patch-panel", "deploy": { - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:6963ed2", - "imageTag": "6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -1674,11 +1766,11 @@ } }, "catalog": { - "commitId": "6963ed2", - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:6963ed2", - "imageTag": "6963ed2", - "digest": "sha256:4346f8753c690fa61c378ee8c8ed32e6c11d1e68f813272919914069044fb4ce", - "publishState": "published", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true }, "workloads": [ @@ -1687,8 +1779,8 @@ "name": "hwlab-patch-panel", "namespace": "hwlab-dev", "container": "hwlab-patch-panel", - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:6963ed2", - "imageTag": "6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -1707,8 +1799,8 @@ { "serviceId": "hwlab-router", "deploy": { - "image": "127.0.0.1:5000/hwlab/hwlab-router:6963ed2", - "imageTag": "6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-router:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -1722,11 +1814,11 @@ } }, "catalog": { - "commitId": "6963ed2", - "image": "127.0.0.1:5000/hwlab/hwlab-router:6963ed2", - "imageTag": "6963ed2", - "digest": "sha256:a4b2befc25988abbeb575d5270e9b942bd6f072478f3e9130b3929588ea15d40", - "publishState": "published", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-router:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true }, "workloads": [ @@ -1735,8 +1827,8 @@ "name": "hwlab-router", "namespace": "hwlab-dev", "container": "hwlab-router", - "image": "127.0.0.1:5000/hwlab/hwlab-router:6963ed2", - "imageTag": "6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-router:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -1755,8 +1847,8 @@ { "serviceId": "hwlab-tunnel-client", "deploy": { - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:6963ed2", - "imageTag": "6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -1770,11 +1862,11 @@ } }, "catalog": { - "commitId": "6963ed2", - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:6963ed2", - "imageTag": "6963ed2", - "digest": "sha256:c7fa485bf3ba71f828b222664c1b80f4894eaa9a451f7034a44f68e9a1cbb707", - "publishState": "published", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true }, "workloads": [ @@ -1783,8 +1875,8 @@ "name": "hwlab-tunnel-client", "namespace": "hwlab-dev", "container": "hwlab-tunnel-client", - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:6963ed2", - "imageTag": "6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -1803,8 +1895,8 @@ { "serviceId": "hwlab-edge-proxy", "deploy": { - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:6963ed2", - "imageTag": "6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -1818,11 +1910,11 @@ } }, "catalog": { - "commitId": "6963ed2", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:6963ed2", - "imageTag": "6963ed2", - "digest": "sha256:14722f8f7ed0ccdcc312ead4d9b93b68ca5187550fc61f29fdca26ed6399c32b", - "publishState": "published", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true }, "workloads": [ @@ -1831,8 +1923,8 @@ "name": "hwlab-edge-proxy", "namespace": "hwlab-dev", "container": "hwlab-edge-proxy", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:6963ed2", - "imageTag": "6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -1851,8 +1943,8 @@ { "serviceId": "hwlab-cli", "deploy": { - "image": "127.0.0.1:5000/hwlab/hwlab-cli:6963ed2", - "imageTag": "6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -1866,11 +1958,11 @@ } }, "catalog": { - "commitId": "6963ed2", - "image": "127.0.0.1:5000/hwlab/hwlab-cli:6963ed2", - "imageTag": "6963ed2", - "digest": "sha256:7e5ac811644c83237542c95f4a6302d607a070a4b4f9f247191ce529577ead99", - "publishState": "published", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true }, "workloads": [ @@ -1879,8 +1971,8 @@ "name": "hwlab-cli-template", "namespace": "hwlab-dev", "container": "hwlab-cli", - "image": "127.0.0.1:5000/hwlab/hwlab-cli:6963ed2", - "imageTag": "6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -1899,14 +1991,14 @@ { "serviceId": "hwlab-agent-skills", "deploy": { - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:6963ed2", - "imageTag": "6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": { "HWLAB_SKILLS_COMMIT_ID": { "name": "HWLAB_SKILLS_COMMIT_ID", - "value": "6963ed2", - "expected": "6963ed2", + "value": "e6d4bd5", + "expected": "e6d4bd5", "status": "match" } }, @@ -1920,11 +2012,11 @@ } }, "catalog": { - "commitId": "6963ed2", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:6963ed2", - "imageTag": "6963ed2", - "digest": "sha256:6881f9d417b91705cca9d134f2df85da3a3ec2af393882f0f24ea113a20d6efd", - "publishState": "published", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true }, "workloads": [ @@ -1933,14 +2025,14 @@ "name": "hwlab-agent-skills", "namespace": "hwlab-dev", "container": "hwlab-agent-skills", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:6963ed2", - "imageTag": "6963ed2", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": { "HWLAB_SKILLS_COMMIT_ID": { "name": "HWLAB_SKILLS_COMMIT_ID", - "value": "6963ed2", - "expected": "6963ed2", + "value": "e6d4bd5", + "expected": "e6d4bd5", "status": "match" } }, @@ -1969,18 +2061,18 @@ "status": "pass", "command": "/opt/node-v20.19.2-linux-x64/bin/node scripts/dev-artifact-publish.mjs --publish", "code": 0, - "startedAt": "2026-05-23T09:40:11.785Z", - "finishedAt": "2026-05-23T09:40:32.799Z", + "startedAt": "2026-05-23T21:37:54.597Z", + "finishedAt": "2026-05-23T21:47:57.243Z", "stdoutJson": { "status": "published", "mode": "publish", "reportPath": "reports/dev-gate/dev-artifacts.json", - "sourceCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "registryPrefix": "127.0.0.1:5000/hwlab", "registryCapabilities": { "version": "v1", "registryPrefix": "127.0.0.1:5000/hwlab", - "generatedAt": "2026-05-23T09:40:15.352Z", + "generatedAt": "2026-05-23T21:37:56.100Z", "classification": "degraded", "dimensions": { "processHttpAccess": { @@ -2028,7 +2120,7 @@ "names": "unidesk-artifact-registry", "ports": "127.0.0.1:5000->5000/tcp", "state": "running", - "status": "Up 2 days" + "status": "Up 8 hours" } ], "pushAttempted": false, @@ -2045,8 +2137,9 @@ "summary": "Read-only kubectl observed hwlab-dev pods with pulled registry images.", "evidence": { "kubectlAvailable": true, + "kubeconfig": "/etc/rancher/k3s/k3s.yaml", "context": { - "command": "kubectl config current-context", + "command": "env KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl config current-context", "ok": true, "exitCode": 0, "stdout": "in-cluster", @@ -2054,89 +2147,59 @@ "error": null }, "canGetPods": { - "command": "kubectl auth can-i get pods -n hwlab-dev", + "command": "env KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl auth can-i get pods -n hwlab-dev", "ok": true, "exitCode": 0, "stdout": "yes", "stderr": "", "error": null }, - "podCount": 21, + "podCount": 13, "pulledImages": [ { - "pod": "hwlab-agent-mgr-57d8bc9f89-5kv4p", + "pod": "hwlab-agent-mgr-99d44c747-mfqzj", "container": "hwlab-agent-mgr", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:63acb59", - "imageID": "127.0.0.1:5000/hwlab/hwlab-agent-mgr@sha256:852b03d9d282e90454d5692dafa30cc34328ff8a097c509075a8bc6d5f1c6d80" + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-agent-mgr@sha256:1457c7141f0f6ddeee04c4342e87a0cda8d95718ac64d7b009bf76832c5c7bee" }, { - "pod": "hwlab-agent-mgr-6c6f64bf5-zjbf7", - "container": "hwlab-agent-mgr", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:6963ed2", - "imageID": "127.0.0.1:5000/hwlab/hwlab-agent-mgr@sha256:42bd66841b857493d78e7be670957fa4238b487a2e546a3d42e78e56a685bc82" - }, - { - "pod": "hwlab-agent-skills-75b55bc498-gjjj2", + "pod": "hwlab-agent-skills-7f99b49598-lqjdd", "container": "hwlab-agent-skills", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:6963ed2", - "imageID": "127.0.0.1:5000/hwlab/hwlab-agent-skills@sha256:cd6003a7e8694a31a5cc116a7af38c8790ef3931edb7ae596455ee4aa8ec5dc1" - }, - { - "pod": "hwlab-agent-skills-8687f446fd-lqtgt", - "container": "hwlab-agent-skills", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:63acb59", - "imageID": "127.0.0.1:5000/hwlab/hwlab-agent-skills@sha256:cf36771fa898fd240b28b093e0070cc16ecc7ee83207ec30413b6abf855d99b7" + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-agent-skills@sha256:22c1ad255a1039ca148444664563ae76209ccbb0d3e7fba27613250c938e3f5b" }, { "pod": "hwlab-box-simu-0", "container": "hwlab-box-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:6963ed2", - "imageID": "127.0.0.1:5000/hwlab/hwlab-box-simu@sha256:1ef041e13d81148dc3a02a28f9b70ae9848554c66c02ec358141bd2ac8cbf91e" + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-box-simu@sha256:9fde14a98f0850e139435cf7b473219c3d43231acd2f65b2410e8e3d0f49b858" }, { "pod": "hwlab-box-simu-1", "container": "hwlab-box-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:6963ed2", - "imageID": "127.0.0.1:5000/hwlab/hwlab-box-simu@sha256:1ef041e13d81148dc3a02a28f9b70ae9848554c66c02ec358141bd2ac8cbf91e" + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-box-simu@sha256:9fde14a98f0850e139435cf7b473219c3d43231acd2f65b2410e8e3d0f49b858" }, { - "pod": "hwlab-cloud-api-668549d448-gnct8", + "pod": "hwlab-cloud-api-57cfcfc587-kdvg9", "container": "hwlab-cloud-api", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:63acb59", - "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-api@sha256:08d9ec3943b6b2530af9a67cfba440460a0357fb6b0ed585cc4537c3ee36f3a9" + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-api@sha256:33b2075ed01c5cb77d8b5bbd3cc8e4acaa1dbd8566d091e15e663c43ff63af31" }, { - "pod": "hwlab-cloud-api-858f6df96d-tcrbg", - "container": "hwlab-cloud-api", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:6963ed2", - "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-api@sha256:4bb54a3ac720cabdcf5b0e9f7a0ccb98ba28d6ff9c85d2f01c75b834211d113f" - }, - { - "pod": "hwlab-cloud-web-576b7bb89d-dxk6w", + "pod": "hwlab-cloud-web-67c684947b-lkvtj", "container": "hwlab-cloud-web", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:58b891a", - "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-web@sha256:820804a6fe2da63d36951dcbbd8753077c923c252648b9e261eaea973908a379" + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-web@sha256:a1c95841f6f2bd913c82751f603c164cbb8bfbfd186d14f98d0f2f91c17cd84f" }, { - "pod": "hwlab-cloud-web-fc896cddb-gwh58", - "container": "hwlab-cloud-web", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-web@sha256:3c6b1efb10644c7f3d44054f364013cb348b1204a1a6ffd33969f213da59227e" - }, - { - "pod": "hwlab-edge-proxy-5889fb8fb8-gblw8", + "pod": "hwlab-edge-proxy-85db66bcc9-mv8pv", "container": "hwlab-edge-proxy", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:6963ed2", - "imageID": "127.0.0.1:5000/hwlab/hwlab-edge-proxy@sha256:14722f8f7ed0ccdcc312ead4d9b93b68ca5187550fc61f29fdca26ed6399c32b" + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-edge-proxy@sha256:eb0a165cc57428741a59ef953c8596631f9d85bc51117d16f16d5847803ebfef" }, { - "pod": "hwlab-edge-proxy-5ff8d747d-rgdjm", - "container": "hwlab-edge-proxy", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:63acb59", - "imageID": "127.0.0.1:5000/hwlab/hwlab-edge-proxy@sha256:beca30d9dfbac596cbf72ef49ef6162a708b1048dcfa1c9d741747ac1b858314" - }, - { - "pod": "hwlab-frpc-59f57d479c-wm5l2", + "pod": "hwlab-frpc-59f57d479c-tgjhl", "container": "frpc", "image": "127.0.0.1:5000/hwlab/frpc:v0.68.1", "imageID": "127.0.0.1:5000/hwlab/frpc@sha256:ce400cda42a260964e40ab1ca68b868f72c569cdce4b243aef36ce40194d287b" @@ -2144,50 +2207,32 @@ { "pod": "hwlab-gateway-simu-0", "container": "hwlab-gateway-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:6963ed2", - "imageID": "127.0.0.1:5000/hwlab/hwlab-gateway-simu@sha256:13e1a66ba2dc45bdf04ac4664a4ab9f0589951509895e754ae46df02062c7b44" + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-gateway-simu@sha256:4cfb1315aa93a11ea480ddb0da89994acc344834499d6cf322bbf0ff4b0c3137" }, { "pod": "hwlab-gateway-simu-1", "container": "hwlab-gateway-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:6963ed2", - "imageID": "127.0.0.1:5000/hwlab/hwlab-gateway-simu@sha256:13e1a66ba2dc45bdf04ac4664a4ab9f0589951509895e754ae46df02062c7b44" + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-gateway-simu@sha256:4cfb1315aa93a11ea480ddb0da89994acc344834499d6cf322bbf0ff4b0c3137" }, { - "pod": "hwlab-patch-panel-5dd8fdf4f7-7cg4w", + "pod": "hwlab-patch-panel-7cd9d9d597-kwnm6", "container": "hwlab-patch-panel", - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:6963ed2", - "imageID": "127.0.0.1:5000/hwlab/hwlab-patch-panel@sha256:4346f8753c690fa61c378ee8c8ed32e6c11d1e68f813272919914069044fb4ce" + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-patch-panel@sha256:2abe0cb87c3eef6d080a3d60bdd39037df89269b0b730a704a52e12405dceaea" }, { - "pod": "hwlab-patch-panel-79c59cd5b7-dl4sz", - "container": "hwlab-patch-panel", - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:63acb59", - "imageID": "127.0.0.1:5000/hwlab/hwlab-patch-panel@sha256:461f3e99f52f55e335b51d6048829c40c299568d0fff02cc4f5934bc8d3c962a" - }, - { - "pod": "hwlab-router-59458f576d-l2j27", + "pod": "hwlab-router-65dc5579fb-d2r8l", "container": "hwlab-router", - "image": "127.0.0.1:5000/hwlab/hwlab-router:6963ed2", - "imageID": "127.0.0.1:5000/hwlab/hwlab-router@sha256:a4b2befc25988abbeb575d5270e9b942bd6f072478f3e9130b3929588ea15d40" + "image": "127.0.0.1:5000/hwlab/hwlab-router:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-router@sha256:fcfa1c1f5231e48d07113fbbbec525b16cc5431b38d4fbacc263f517ad0b9120" }, { - "pod": "hwlab-router-7d47d6dfc4-gzcw9", - "container": "hwlab-router", - "image": "127.0.0.1:5000/hwlab/hwlab-router:63acb59", - "imageID": "127.0.0.1:5000/hwlab/hwlab-router@sha256:560ce04be9a54b82a31c77ab7a214719c998b8b320afc1cd47c1abaa97941024" - }, - { - "pod": "hwlab-tunnel-client-64779fc4bd-pz8lz", + "pod": "hwlab-tunnel-client-54d968477d-mf2qk", "container": "hwlab-tunnel-client", - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:63acb59", - "imageID": "127.0.0.1:5000/hwlab/hwlab-tunnel-client@sha256:657c8efdb35c4dbd0c87d4bbe201321aa857ad89a486ec30a2b8fdd379a41a6e" - }, - { - "pod": "hwlab-tunnel-client-65ff794986-5z2s6", - "container": "hwlab-tunnel-client", - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:6963ed2", - "imageID": "127.0.0.1:5000/hwlab/hwlab-tunnel-client@sha256:c7fa485bf3ba71f828b222664c1b80f4894eaa9a451f7034a44f68e9a1cbb707" + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-tunnel-client@sha256:687826d894137c5c471124f6f3cffdb1165acf23c80dc2cc6fd5bca98434b6e7" } ], "pullFailures": [], @@ -2224,14 +2269,7 @@ "createdSince": "4 weeks ago" } ], - "rejectedCandidates": [ - { - "source": "local-docker-node", - "localTag": "node:22-bookworm-slim", - "imageId": "341b84210b33", - "reason": "local Node image is not Node 20 and is not approved as the HWLAB DEV builder base image" - } - ], + "rejectedCandidates": [], "publishUsable": true, "blockers": [], "nextSteps": [ @@ -2291,13 +2329,13 @@ "publishPlan": { "version": "v2", "mode": "publish", - "sourceCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", - "imageTag": "63acb59", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "imageTag": "e6d4bd5", "registryTarget": "127.0.0.1:5000/hwlab", "registryCapabilities": { "version": "v1", "registryPrefix": "127.0.0.1:5000/hwlab", - "generatedAt": "2026-05-23T09:40:15.352Z", + "generatedAt": "2026-05-23T21:37:56.100Z", "classification": "degraded", "dimensions": { "processHttpAccess": { @@ -2345,7 +2383,7 @@ "names": "unidesk-artifact-registry", "ports": "127.0.0.1:5000->5000/tcp", "state": "running", - "status": "Up 2 days" + "status": "Up 8 hours" } ], "pushAttempted": false, @@ -2362,8 +2400,9 @@ "summary": "Read-only kubectl observed hwlab-dev pods with pulled registry images.", "evidence": { "kubectlAvailable": true, + "kubeconfig": "/etc/rancher/k3s/k3s.yaml", "context": { - "command": "kubectl config current-context", + "command": "env KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl config current-context", "ok": true, "exitCode": 0, "stdout": "in-cluster", @@ -2371,89 +2410,59 @@ "error": null }, "canGetPods": { - "command": "kubectl auth can-i get pods -n hwlab-dev", + "command": "env KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl auth can-i get pods -n hwlab-dev", "ok": true, "exitCode": 0, "stdout": "yes", "stderr": "", "error": null }, - "podCount": 21, + "podCount": 13, "pulledImages": [ { - "pod": "hwlab-agent-mgr-57d8bc9f89-5kv4p", + "pod": "hwlab-agent-mgr-99d44c747-mfqzj", "container": "hwlab-agent-mgr", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:63acb59", - "imageID": "127.0.0.1:5000/hwlab/hwlab-agent-mgr@sha256:852b03d9d282e90454d5692dafa30cc34328ff8a097c509075a8bc6d5f1c6d80" + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-agent-mgr@sha256:1457c7141f0f6ddeee04c4342e87a0cda8d95718ac64d7b009bf76832c5c7bee" }, { - "pod": "hwlab-agent-mgr-6c6f64bf5-zjbf7", - "container": "hwlab-agent-mgr", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:6963ed2", - "imageID": "127.0.0.1:5000/hwlab/hwlab-agent-mgr@sha256:42bd66841b857493d78e7be670957fa4238b487a2e546a3d42e78e56a685bc82" - }, - { - "pod": "hwlab-agent-skills-75b55bc498-gjjj2", + "pod": "hwlab-agent-skills-7f99b49598-lqjdd", "container": "hwlab-agent-skills", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:6963ed2", - "imageID": "127.0.0.1:5000/hwlab/hwlab-agent-skills@sha256:cd6003a7e8694a31a5cc116a7af38c8790ef3931edb7ae596455ee4aa8ec5dc1" - }, - { - "pod": "hwlab-agent-skills-8687f446fd-lqtgt", - "container": "hwlab-agent-skills", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:63acb59", - "imageID": "127.0.0.1:5000/hwlab/hwlab-agent-skills@sha256:cf36771fa898fd240b28b093e0070cc16ecc7ee83207ec30413b6abf855d99b7" + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-agent-skills@sha256:22c1ad255a1039ca148444664563ae76209ccbb0d3e7fba27613250c938e3f5b" }, { "pod": "hwlab-box-simu-0", "container": "hwlab-box-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:6963ed2", - "imageID": "127.0.0.1:5000/hwlab/hwlab-box-simu@sha256:1ef041e13d81148dc3a02a28f9b70ae9848554c66c02ec358141bd2ac8cbf91e" + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-box-simu@sha256:9fde14a98f0850e139435cf7b473219c3d43231acd2f65b2410e8e3d0f49b858" }, { "pod": "hwlab-box-simu-1", "container": "hwlab-box-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:6963ed2", - "imageID": "127.0.0.1:5000/hwlab/hwlab-box-simu@sha256:1ef041e13d81148dc3a02a28f9b70ae9848554c66c02ec358141bd2ac8cbf91e" + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-box-simu@sha256:9fde14a98f0850e139435cf7b473219c3d43231acd2f65b2410e8e3d0f49b858" }, { - "pod": "hwlab-cloud-api-668549d448-gnct8", + "pod": "hwlab-cloud-api-57cfcfc587-kdvg9", "container": "hwlab-cloud-api", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:63acb59", - "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-api@sha256:08d9ec3943b6b2530af9a67cfba440460a0357fb6b0ed585cc4537c3ee36f3a9" + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-api@sha256:33b2075ed01c5cb77d8b5bbd3cc8e4acaa1dbd8566d091e15e663c43ff63af31" }, { - "pod": "hwlab-cloud-api-858f6df96d-tcrbg", - "container": "hwlab-cloud-api", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:6963ed2", - "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-api@sha256:4bb54a3ac720cabdcf5b0e9f7a0ccb98ba28d6ff9c85d2f01c75b834211d113f" - }, - { - "pod": "hwlab-cloud-web-576b7bb89d-dxk6w", + "pod": "hwlab-cloud-web-67c684947b-lkvtj", "container": "hwlab-cloud-web", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:58b891a", - "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-web@sha256:820804a6fe2da63d36951dcbbd8753077c923c252648b9e261eaea973908a379" + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-web@sha256:a1c95841f6f2bd913c82751f603c164cbb8bfbfd186d14f98d0f2f91c17cd84f" }, { - "pod": "hwlab-cloud-web-fc896cddb-gwh58", - "container": "hwlab-cloud-web", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-web@sha256:3c6b1efb10644c7f3d44054f364013cb348b1204a1a6ffd33969f213da59227e" - }, - { - "pod": "hwlab-edge-proxy-5889fb8fb8-gblw8", + "pod": "hwlab-edge-proxy-85db66bcc9-mv8pv", "container": "hwlab-edge-proxy", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:6963ed2", - "imageID": "127.0.0.1:5000/hwlab/hwlab-edge-proxy@sha256:14722f8f7ed0ccdcc312ead4d9b93b68ca5187550fc61f29fdca26ed6399c32b" + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-edge-proxy@sha256:eb0a165cc57428741a59ef953c8596631f9d85bc51117d16f16d5847803ebfef" }, { - "pod": "hwlab-edge-proxy-5ff8d747d-rgdjm", - "container": "hwlab-edge-proxy", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:63acb59", - "imageID": "127.0.0.1:5000/hwlab/hwlab-edge-proxy@sha256:beca30d9dfbac596cbf72ef49ef6162a708b1048dcfa1c9d741747ac1b858314" - }, - { - "pod": "hwlab-frpc-59f57d479c-wm5l2", + "pod": "hwlab-frpc-59f57d479c-tgjhl", "container": "frpc", "image": "127.0.0.1:5000/hwlab/frpc:v0.68.1", "imageID": "127.0.0.1:5000/hwlab/frpc@sha256:ce400cda42a260964e40ab1ca68b868f72c569cdce4b243aef36ce40194d287b" @@ -2461,50 +2470,32 @@ { "pod": "hwlab-gateway-simu-0", "container": "hwlab-gateway-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:6963ed2", - "imageID": "127.0.0.1:5000/hwlab/hwlab-gateway-simu@sha256:13e1a66ba2dc45bdf04ac4664a4ab9f0589951509895e754ae46df02062c7b44" + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-gateway-simu@sha256:4cfb1315aa93a11ea480ddb0da89994acc344834499d6cf322bbf0ff4b0c3137" }, { "pod": "hwlab-gateway-simu-1", "container": "hwlab-gateway-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:6963ed2", - "imageID": "127.0.0.1:5000/hwlab/hwlab-gateway-simu@sha256:13e1a66ba2dc45bdf04ac4664a4ab9f0589951509895e754ae46df02062c7b44" + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-gateway-simu@sha256:4cfb1315aa93a11ea480ddb0da89994acc344834499d6cf322bbf0ff4b0c3137" }, { - "pod": "hwlab-patch-panel-5dd8fdf4f7-7cg4w", + "pod": "hwlab-patch-panel-7cd9d9d597-kwnm6", "container": "hwlab-patch-panel", - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:6963ed2", - "imageID": "127.0.0.1:5000/hwlab/hwlab-patch-panel@sha256:4346f8753c690fa61c378ee8c8ed32e6c11d1e68f813272919914069044fb4ce" + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-patch-panel@sha256:2abe0cb87c3eef6d080a3d60bdd39037df89269b0b730a704a52e12405dceaea" }, { - "pod": "hwlab-patch-panel-79c59cd5b7-dl4sz", - "container": "hwlab-patch-panel", - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:63acb59", - "imageID": "127.0.0.1:5000/hwlab/hwlab-patch-panel@sha256:461f3e99f52f55e335b51d6048829c40c299568d0fff02cc4f5934bc8d3c962a" - }, - { - "pod": "hwlab-router-59458f576d-l2j27", + "pod": "hwlab-router-65dc5579fb-d2r8l", "container": "hwlab-router", - "image": "127.0.0.1:5000/hwlab/hwlab-router:6963ed2", - "imageID": "127.0.0.1:5000/hwlab/hwlab-router@sha256:a4b2befc25988abbeb575d5270e9b942bd6f072478f3e9130b3929588ea15d40" + "image": "127.0.0.1:5000/hwlab/hwlab-router:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-router@sha256:fcfa1c1f5231e48d07113fbbbec525b16cc5431b38d4fbacc263f517ad0b9120" }, { - "pod": "hwlab-router-7d47d6dfc4-gzcw9", - "container": "hwlab-router", - "image": "127.0.0.1:5000/hwlab/hwlab-router:63acb59", - "imageID": "127.0.0.1:5000/hwlab/hwlab-router@sha256:560ce04be9a54b82a31c77ab7a214719c998b8b320afc1cd47c1abaa97941024" - }, - { - "pod": "hwlab-tunnel-client-64779fc4bd-pz8lz", + "pod": "hwlab-tunnel-client-54d968477d-mf2qk", "container": "hwlab-tunnel-client", - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:63acb59", - "imageID": "127.0.0.1:5000/hwlab/hwlab-tunnel-client@sha256:657c8efdb35c4dbd0c87d4bbe201321aa857ad89a486ec30a2b8fdd379a41a6e" - }, - { - "pod": "hwlab-tunnel-client-65ff794986-5z2s6", - "container": "hwlab-tunnel-client", - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:6963ed2", - "imageID": "127.0.0.1:5000/hwlab/hwlab-tunnel-client@sha256:c7fa485bf3ba71f828b222664c1b80f4894eaa9a451f7034a44f68e9a1cbb707" + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:b02ac5b", + "imageID": "127.0.0.1:5000/hwlab/hwlab-tunnel-client@sha256:687826d894137c5c471124f6f3cffdb1165acf23c80dc2cc6fd5bca98434b6e7" } ], "pullFailures": [], @@ -2526,12 +2517,14 @@ "enabled": true, "required": true, "artifactScope": "required", - "sourceCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "registryTarget": "127.0.0.1:5000/hwlab/hwlab-cloud-api", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:63acb59", - "imageTag": "63acb59", - "digest": "sha256:79e9694d2d381ab96028e0705023b4e3c1cd3b7c71357a0ef5aefd66f53ee7f0", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-cloud-api@sha256:79e9694d2d381ab96028e0705023b4e3c1cd3b7c71357a0ef5aefd66f53ee7f0", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:8a0677290ce3626d3589d1d22a943b49290e74451d75263cdbda3044a6ba105d", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-cloud-api@sha256:8a0677290ce3626d3589d1d22a943b49290e74451d75263cdbda3044a6ba105d", "digestStatus": "real", "status": "published", "notPublishedReason": null @@ -2541,12 +2534,14 @@ "enabled": true, "required": true, "artifactScope": "required", - "sourceCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "registryTarget": "127.0.0.1:5000/hwlab/hwlab-cloud-web", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "imageTag": "63acb59", - "digest": "sha256:3c6b1efb10644c7f3d44054f364013cb348b1204a1a6ffd33969f213da59227e", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-cloud-web@sha256:3c6b1efb10644c7f3d44054f364013cb348b1204a1a6ffd33969f213da59227e", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:f43ac97da69212e3ff74cfed36a04d65f0cd9cc7b8cb48f0eaf6f1f19d7dd6da", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-cloud-web@sha256:f43ac97da69212e3ff74cfed36a04d65f0cd9cc7b8cb48f0eaf6f1f19d7dd6da", "digestStatus": "real", "status": "published", "notPublishedReason": null @@ -2556,12 +2551,14 @@ "enabled": true, "required": true, "artifactScope": "required", - "sourceCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "registryTarget": "127.0.0.1:5000/hwlab/hwlab-agent-mgr", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:63acb59", - "imageTag": "63acb59", - "digest": "sha256:852b03d9d282e90454d5692dafa30cc34328ff8a097c509075a8bc6d5f1c6d80", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-agent-mgr@sha256:852b03d9d282e90454d5692dafa30cc34328ff8a097c509075a8bc6d5f1c6d80", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:f37e9b4dd6262ff4c30826fae1a0e01b184d0e57812c7876de73566263ff0c35", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-agent-mgr@sha256:f37e9b4dd6262ff4c30826fae1a0e01b184d0e57812c7876de73566263ff0c35", "digestStatus": "real", "status": "published", "notPublishedReason": null @@ -2571,12 +2568,14 @@ "enabled": true, "required": true, "artifactScope": "required", - "sourceCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "registryTarget": "127.0.0.1:5000/hwlab/hwlab-agent-worker", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:63acb59", - "imageTag": "63acb59", - "digest": "sha256:2f5b8eb8d1a52849d056f412c5dde4bb075456d4fbebdc9169917092011d10e7", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-agent-worker@sha256:2f5b8eb8d1a52849d056f412c5dde4bb075456d4fbebdc9169917092011d10e7", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:afdc241c799fe53561b60a37199c73cfb612ea0381ecfba82e66eb08566a8336", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-agent-worker@sha256:afdc241c799fe53561b60a37199c73cfb612ea0381ecfba82e66eb08566a8336", "digestStatus": "real", "status": "published", "notPublishedReason": null @@ -2586,12 +2585,14 @@ "enabled": true, "required": true, "artifactScope": "required", - "sourceCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "registryTarget": "127.0.0.1:5000/hwlab/hwlab-gateway", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway:63acb59", - "imageTag": "63acb59", - "digest": "sha256:14dea76f86b481a895b0f24b5165ef9fd4c0f790dd558b5b625900b46761ec15", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-gateway@sha256:14dea76f86b481a895b0f24b5165ef9fd4c0f790dd558b5b625900b46761ec15", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:27303c093330bddf4c1eb8e3791dce6dbbe97aab28ff17c1faf761b05333cce0", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-gateway@sha256:27303c093330bddf4c1eb8e3791dce6dbbe97aab28ff17c1faf761b05333cce0", "digestStatus": "real", "status": "published", "notPublishedReason": null @@ -2601,12 +2602,14 @@ "enabled": true, "required": true, "artifactScope": "required", - "sourceCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "registryTarget": "127.0.0.1:5000/hwlab/hwlab-gateway-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:63acb59", - "imageTag": "63acb59", - "digest": "sha256:0964a94db3efef9a697a4dff1692888e8079c7aeb93abe25aabb6e8ba394c9c8", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-gateway-simu@sha256:0964a94db3efef9a697a4dff1692888e8079c7aeb93abe25aabb6e8ba394c9c8", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:38c0372ec72e8f17b26f2fcf83d35718023a81c48529e459d83e36f8cc56ec3a", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-gateway-simu@sha256:38c0372ec72e8f17b26f2fcf83d35718023a81c48529e459d83e36f8cc56ec3a", "digestStatus": "real", "status": "published", "notPublishedReason": null @@ -2616,12 +2619,14 @@ "enabled": true, "required": true, "artifactScope": "required", - "sourceCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "registryTarget": "127.0.0.1:5000/hwlab/hwlab-box-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:63acb59", - "imageTag": "63acb59", - "digest": "sha256:1628a2ebc0ad1638c39fd71e8437ba91d042d9497262001473ecc36a5d7adc96", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-box-simu@sha256:1628a2ebc0ad1638c39fd71e8437ba91d042d9497262001473ecc36a5d7adc96", + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:d551c22242fff6016f15672c4b8b06dbfc85da2c00ecfdd4e40486668b58a56f", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-box-simu@sha256:d551c22242fff6016f15672c4b8b06dbfc85da2c00ecfdd4e40486668b58a56f", "digestStatus": "real", "status": "published", "notPublishedReason": null @@ -2631,12 +2636,14 @@ "enabled": true, "required": true, "artifactScope": "required", - "sourceCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "registryTarget": "127.0.0.1:5000/hwlab/hwlab-patch-panel", - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:63acb59", - "imageTag": "63acb59", - "digest": "sha256:461f3e99f52f55e335b51d6048829c40c299568d0fff02cc4f5934bc8d3c962a", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-patch-panel@sha256:461f3e99f52f55e335b51d6048829c40c299568d0fff02cc4f5934bc8d3c962a", + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:6c7f3600a71131c11b994a625fd6ced65ac3bb7f109f3c7f941513cbd1d2def5", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-patch-panel@sha256:6c7f3600a71131c11b994a625fd6ced65ac3bb7f109f3c7f941513cbd1d2def5", "digestStatus": "real", "status": "published", "notPublishedReason": null @@ -2646,12 +2653,14 @@ "enabled": true, "required": true, "artifactScope": "required", - "sourceCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "registryTarget": "127.0.0.1:5000/hwlab/hwlab-router", - "image": "127.0.0.1:5000/hwlab/hwlab-router:63acb59", - "imageTag": "63acb59", - "digest": "sha256:560ce04be9a54b82a31c77ab7a214719c998b8b320afc1cd47c1abaa97941024", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-router@sha256:560ce04be9a54b82a31c77ab7a214719c998b8b320afc1cd47c1abaa97941024", + "image": "127.0.0.1:5000/hwlab/hwlab-router:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:8d9084f3d23e44d3ffe628e9d100ebbad260c857d06b1fbb5791ecd11bfc4d9f", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-router@sha256:8d9084f3d23e44d3ffe628e9d100ebbad260c857d06b1fbb5791ecd11bfc4d9f", "digestStatus": "real", "status": "published", "notPublishedReason": null @@ -2661,12 +2670,14 @@ "enabled": true, "required": true, "artifactScope": "required", - "sourceCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "registryTarget": "127.0.0.1:5000/hwlab/hwlab-tunnel-client", - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:63acb59", - "imageTag": "63acb59", - "digest": "sha256:657c8efdb35c4dbd0c87d4bbe201321aa857ad89a486ec30a2b8fdd379a41a6e", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-tunnel-client@sha256:657c8efdb35c4dbd0c87d4bbe201321aa857ad89a486ec30a2b8fdd379a41a6e", + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:d6dff1383912ccfed1b1b91dc5ae8323e345f42f57145d7bda788e9941a4ca5a", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-tunnel-client@sha256:d6dff1383912ccfed1b1b91dc5ae8323e345f42f57145d7bda788e9941a4ca5a", "digestStatus": "real", "status": "published", "notPublishedReason": null @@ -2676,12 +2687,14 @@ "enabled": true, "required": true, "artifactScope": "required", - "sourceCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "registryTarget": "127.0.0.1:5000/hwlab/hwlab-edge-proxy", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:63acb59", - "imageTag": "63acb59", - "digest": "sha256:beca30d9dfbac596cbf72ef49ef6162a708b1048dcfa1c9d741747ac1b858314", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-edge-proxy@sha256:beca30d9dfbac596cbf72ef49ef6162a708b1048dcfa1c9d741747ac1b858314", + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:6ce280c0fd17218dd5719d1118b5e72fd0c4107dc33951e09b35c374f7affacd", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-edge-proxy@sha256:6ce280c0fd17218dd5719d1118b5e72fd0c4107dc33951e09b35c374f7affacd", "digestStatus": "real", "status": "published", "notPublishedReason": null @@ -2691,12 +2704,14 @@ "enabled": true, "required": true, "artifactScope": "required", - "sourceCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "registryTarget": "127.0.0.1:5000/hwlab/hwlab-cli", - "image": "127.0.0.1:5000/hwlab/hwlab-cli:63acb59", - "imageTag": "63acb59", - "digest": "sha256:53c5c1dc118c4f698407492b67a59aa1bb1374341907568dd17cf3a0e52ef97b", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-cli@sha256:53c5c1dc118c4f698407492b67a59aa1bb1374341907568dd17cf3a0e52ef97b", + "image": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:09a015e727738cd188853af557ecd8ea4adfa8a2250692e7442549e9c80eae1f", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-cli@sha256:09a015e727738cd188853af557ecd8ea4adfa8a2250692e7442549e9c80eae1f", "digestStatus": "real", "status": "published", "notPublishedReason": null @@ -2706,12 +2721,14 @@ "enabled": true, "required": true, "artifactScope": "required", - "sourceCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "registryTarget": "127.0.0.1:5000/hwlab/hwlab-agent-skills", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:63acb59", - "imageTag": "63acb59", - "digest": "sha256:cf36771fa898fd240b28b093e0070cc16ecc7ee83207ec30413b6abf855d99b7", - "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-agent-skills@sha256:cf36771fa898fd240b28b093e0070cc16ecc7ee83207ec30413b6abf855d99b7", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "buildSource": "pikasTech/HWLAB@e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "digest": "sha256:45602b9d09ef22095ab75bd95e2f310626bce61bc4e39a7205009fe9620c2d4f", + "repositoryDigest": "127.0.0.1:5000/hwlab/hwlab-agent-skills@sha256:45602b9d09ef22095ab75bd95e2f310626bce61bc4e39a7205009fe9620c2d4f", "digestStatus": "real", "status": "published", "notPublishedReason": null @@ -2722,17 +2739,19 @@ { "serviceId": "hwlab-cloud-api", "status": "published", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:63acb59", - "imageTag": "63acb59", - "digest": "sha256:79e9694d2d381ab96028e0705023b4e3c1cd3b7c71357a0ef5aefd66f53ee7f0", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "digest": "sha256:8a0677290ce3626d3589d1d22a943b49290e74451d75263cdbda3044a6ba105d", "notPublishedReason": null }, { "serviceId": "hwlab-cloud-web", "status": "published", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "imageTag": "63acb59", - "digest": "sha256:3c6b1efb10644c7f3d44054f364013cb348b1204a1a6ffd33969f213da59227e", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "digest": "sha256:f43ac97da69212e3ff74cfed36a04d65f0cd9cc7b8cb48f0eaf6f1f19d7dd6da", "distFreshness": { "status": "pass", "distPath": "web/hwlab-cloud-web/dist", @@ -2742,85 +2761,127 @@ { "kind": "runtime", "path": "index.html", - "sourcePath": "/tmp/hwlab-pr309/web/hwlab-cloud-web/index.html", - "distPath": "/tmp/hwlab-pr309/web/hwlab-cloud-web/dist/index.html", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/index.html", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/index.html", "status": "match" }, { "kind": "runtime", "path": "styles.css", - "sourcePath": "/tmp/hwlab-pr309/web/hwlab-cloud-web/styles.css", - "distPath": "/tmp/hwlab-pr309/web/hwlab-cloud-web/dist/styles.css", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/styles.css", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/styles.css", + "status": "match" + }, + { + "kind": "runtime", + "path": "auth.mjs", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/auth.mjs", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/auth.mjs", "status": "match" }, { "kind": "runtime", "path": "app.mjs", - "sourcePath": "/tmp/hwlab-pr309/web/hwlab-cloud-web/app.mjs", - "distPath": "/tmp/hwlab-pr309/web/hwlab-cloud-web/dist/app.mjs", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/app.mjs", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/app.mjs", + "status": "match" + }, + { + "kind": "runtime", + "path": "code-agent-facts.mjs", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/code-agent-facts.mjs", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/code-agent-facts.mjs", + "status": "match" + }, + { + "kind": "runtime", + "path": "code-agent-status.mjs", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/code-agent-status.mjs", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/code-agent-status.mjs", + "status": "match" + }, + { + "kind": "runtime", + "path": "code-agent-m3-evidence.mjs", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/code-agent-m3-evidence.mjs", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/code-agent-m3-evidence.mjs", + "status": "match" + }, + { + "kind": "runtime", + "path": "live-status.mjs", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/live-status.mjs", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/live-status.mjs", "status": "match" }, { "kind": "runtime", "path": "gate-summary.mjs", - "sourcePath": "/tmp/hwlab-pr309/web/hwlab-cloud-web/gate-summary.mjs", - "distPath": "/tmp/hwlab-pr309/web/hwlab-cloud-web/dist/gate-summary.mjs", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/gate-summary.mjs", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/gate-summary.mjs", "status": "match" }, { "kind": "runtime", "path": "runtime.mjs", - "sourcePath": "/tmp/hwlab-pr309/web/hwlab-cloud-web/runtime.mjs", - "distPath": "/tmp/hwlab-pr309/web/hwlab-cloud-web/dist/runtime.mjs", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/runtime.mjs", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/runtime.mjs", + "status": "match" + }, + { + "kind": "runtime", + "path": "wiring-status.mjs", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/wiring-status.mjs", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/wiring-status.mjs", "status": "match" }, { "kind": "runtime", "path": "workbench-hardware-panel.mjs", - "sourcePath": "/tmp/hwlab-pr309/web/hwlab-cloud-web/workbench-hardware-panel.mjs", - "distPath": "/tmp/hwlab-pr309/web/hwlab-cloud-web/dist/workbench-hardware-panel.mjs", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/workbench-hardware-panel.mjs", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/workbench-hardware-panel.mjs", "status": "match" }, { "kind": "runtime", "path": "help.md", - "sourcePath": "/tmp/hwlab-pr309/web/hwlab-cloud-web/help.md", - "distPath": "/tmp/hwlab-pr309/web/hwlab-cloud-web/dist/help.md", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/help.md", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/help.md", "status": "match" }, { "kind": "runtime", "path": "third_party/marked/marked.esm.js", - "sourcePath": "/tmp/hwlab-pr309/web/hwlab-cloud-web/third_party/marked/marked.esm.js", - "distPath": "/tmp/hwlab-pr309/web/hwlab-cloud-web/dist/third_party/marked/marked.esm.js", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/third_party/marked/marked.esm.js", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/third_party/marked/marked.esm.js", "status": "match" }, { "kind": "runtime", "path": "third_party/marked/LICENSE", - "sourcePath": "/tmp/hwlab-pr309/web/hwlab-cloud-web/third_party/marked/LICENSE", - "distPath": "/tmp/hwlab-pr309/web/hwlab-cloud-web/dist/third_party/marked/LICENSE", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/third_party/marked/LICENSE", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/third_party/marked/LICENSE", "status": "match" }, { "kind": "alias", "path": "gate/index.html", - "sourcePath": "/tmp/hwlab-pr309/web/hwlab-cloud-web/index.html", - "distPath": "/tmp/hwlab-pr309/web/hwlab-cloud-web/dist/gate/index.html", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/index.html", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/gate/index.html", "status": "match" }, { "kind": "alias", "path": "diagnostics/gate/index.html", - "sourcePath": "/tmp/hwlab-pr309/web/hwlab-cloud-web/index.html", - "distPath": "/tmp/hwlab-pr309/web/hwlab-cloud-web/dist/diagnostics/gate/index.html", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/index.html", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/diagnostics/gate/index.html", "status": "match" }, { "kind": "alias", "path": "help/index.html", - "sourcePath": "/tmp/hwlab-pr309/web/hwlab-cloud-web/index.html", - "distPath": "/tmp/hwlab-pr309/web/hwlab-cloud-web/dist/help/index.html", + "sourcePath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/index.html", + "distPath": "/home/ubuntu/hwlab-cd-rollout-e6d4-20260523T213016Z/web/hwlab-cloud-web/dist/help/index.html", "status": "match" } ], @@ -2831,111 +2892,122 @@ { "serviceId": "hwlab-agent-mgr", "status": "published", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:63acb59", - "imageTag": "63acb59", - "digest": "sha256:852b03d9d282e90454d5692dafa30cc34328ff8a097c509075a8bc6d5f1c6d80", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "digest": "sha256:f37e9b4dd6262ff4c30826fae1a0e01b184d0e57812c7876de73566263ff0c35", "notPublishedReason": null }, { "serviceId": "hwlab-agent-worker", "status": "published", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:63acb59", - "imageTag": "63acb59", - "digest": "sha256:2f5b8eb8d1a52849d056f412c5dde4bb075456d4fbebdc9169917092011d10e7", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "digest": "sha256:afdc241c799fe53561b60a37199c73cfb612ea0381ecfba82e66eb08566a8336", "notPublishedReason": null }, { "serviceId": "hwlab-gateway", "status": "published", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway:63acb59", - "imageTag": "63acb59", - "digest": "sha256:14dea76f86b481a895b0f24b5165ef9fd4c0f790dd558b5b625900b46761ec15", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "digest": "sha256:27303c093330bddf4c1eb8e3791dce6dbbe97aab28ff17c1faf761b05333cce0", "notPublishedReason": null }, { "serviceId": "hwlab-gateway-simu", "status": "published", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:63acb59", - "imageTag": "63acb59", - "digest": "sha256:0964a94db3efef9a697a4dff1692888e8079c7aeb93abe25aabb6e8ba394c9c8", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "digest": "sha256:38c0372ec72e8f17b26f2fcf83d35718023a81c48529e459d83e36f8cc56ec3a", "notPublishedReason": null }, { "serviceId": "hwlab-box-simu", "status": "published", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:63acb59", - "imageTag": "63acb59", - "digest": "sha256:1628a2ebc0ad1638c39fd71e8437ba91d042d9497262001473ecc36a5d7adc96", + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "digest": "sha256:d551c22242fff6016f15672c4b8b06dbfc85da2c00ecfdd4e40486668b58a56f", "notPublishedReason": null }, { "serviceId": "hwlab-patch-panel", "status": "published", - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:63acb59", - "imageTag": "63acb59", - "digest": "sha256:461f3e99f52f55e335b51d6048829c40c299568d0fff02cc4f5934bc8d3c962a", + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "digest": "sha256:6c7f3600a71131c11b994a625fd6ced65ac3bb7f109f3c7f941513cbd1d2def5", "notPublishedReason": null }, { "serviceId": "hwlab-router", "status": "published", - "image": "127.0.0.1:5000/hwlab/hwlab-router:63acb59", - "imageTag": "63acb59", - "digest": "sha256:560ce04be9a54b82a31c77ab7a214719c998b8b320afc1cd47c1abaa97941024", + "image": "127.0.0.1:5000/hwlab/hwlab-router:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "digest": "sha256:8d9084f3d23e44d3ffe628e9d100ebbad260c857d06b1fbb5791ecd11bfc4d9f", "notPublishedReason": null }, { "serviceId": "hwlab-tunnel-client", "status": "published", - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:63acb59", - "imageTag": "63acb59", - "digest": "sha256:657c8efdb35c4dbd0c87d4bbe201321aa857ad89a486ec30a2b8fdd379a41a6e", + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "digest": "sha256:d6dff1383912ccfed1b1b91dc5ae8323e345f42f57145d7bda788e9941a4ca5a", "notPublishedReason": null }, { "serviceId": "hwlab-edge-proxy", "status": "published", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:63acb59", - "imageTag": "63acb59", - "digest": "sha256:beca30d9dfbac596cbf72ef49ef6162a708b1048dcfa1c9d741747ac1b858314", + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "digest": "sha256:6ce280c0fd17218dd5719d1118b5e72fd0c4107dc33951e09b35c374f7affacd", "notPublishedReason": null }, { "serviceId": "hwlab-cli", "status": "published", - "image": "127.0.0.1:5000/hwlab/hwlab-cli:63acb59", - "imageTag": "63acb59", - "digest": "sha256:53c5c1dc118c4f698407492b67a59aa1bb1374341907568dd17cf3a0e52ef97b", + "image": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "digest": "sha256:09a015e727738cd188853af557ecd8ea4adfa8a2250692e7442549e9c80eae1f", "notPublishedReason": null }, { "serviceId": "hwlab-agent-skills", "status": "published", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:63acb59", - "imageTag": "63acb59", - "digest": "sha256:cf36771fa898fd240b28b093e0070cc16ecc7ee83207ec30413b6abf855d99b7", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "digest": "sha256:45602b9d09ef22095ab75bd95e2f310626bce61bc4e39a7205009fe9620c2d4f", "notPublishedReason": null } ], "blockers": [] }, "stdoutTail": null, - "stderrTail": "\"event\":\"publish_start\",\"serviceId\":\"hwlab-tunnel-client\",\"image\":\"127.0.0.1:5000/hwlab/hwlab-tunnel-client:63acb59\"}\n{\"event\":\"publish_done\",\"serviceId\":\"hwlab-tunnel-client\",\"status\":\"published\",\"image\":\"127.0.0.1:5000/hwlab/hwlab-tunnel-client:63acb59\",\"digest\":\"sha256:657c8efdb35c4dbd0c87d4bbe201321aa857ad89a486ec30a2b8fdd379a41a6e\"}\n{\"event\":\"build_start\",\"serviceId\":\"hwlab-edge-proxy\",\"image\":\"127.0.0.1:5000/hwlab/hwlab-edge-proxy:63acb59\"}\n{\"event\":\"build_done\",\"serviceId\":\"hwlab-edge-proxy\",\"status\":\"built\",\"image\":\"127.0.0.1:5000/hwlab/hwlab-edge-proxy:63acb59\"}\n{\"event\":\"publish_start\",\"serviceId\":\"hwlab-edge-proxy\",\"image\":\"127.0.0.1:5000/hwlab/hwlab-edge-proxy:63acb59\"}\n{\"event\":\"publish_done\",\"serviceId\":\"hwlab-edge-proxy\",\"status\":\"published\",\"image\":\"127.0.0.1:5000/hwlab/hwlab-edge-proxy:63acb59\",\"digest\":\"sha256:beca30d9dfbac596cbf72ef49ef6162a708b1048dcfa1c9d741747ac1b858314\"}\n{\"event\":\"build_start\",\"serviceId\":\"hwlab-cli\",\"image\":\"127.0.0.1:5000/hwlab/hwlab-cli:63acb59\"}\n{\"event\":\"build_done\",\"serviceId\":\"hwlab-cli\",\"status\":\"built\",\"image\":\"127.0.0.1:5000/hwlab/hwlab-cli:63acb59\"}\n{\"event\":\"publish_start\",\"serviceId\":\"hwlab-cli\",\"image\":\"127.0.0.1:5000/hwlab/hwlab-cli:63acb59\"}\n{\"event\":\"publish_done\",\"serviceId\":\"hwlab-cli\",\"status\":\"published\",\"image\":\"127.0.0.1:5000/hwlab/hwlab-cli:63acb59\",\"digest\":\"sha256:53c5c1dc118c4f698407492b67a59aa1bb1374341907568dd17cf3a0e52ef97b\"}\n{\"event\":\"build_start\",\"serviceId\":\"hwlab-agent-skills\",\"image\":\"127.0.0.1:5000/hwlab/hwlab-agent-skills:63acb59\"}\n{\"event\":\"build_done\",\"serviceId\":\"hwlab-agent-skills\",\"status\":\"built\",\"image\":\"127.0.0.1:5000/hwlab/hwlab-agent-skills:63acb59\"}\n{\"event\":\"publish_start\",\"serviceId\":\"hwlab-agent-skills\",\"image\":\"127.0.0.1:5000/hwlab/hwlab-agent-skills:63acb59\"}\n{\"event\":\"publish_done\",\"serviceId\":\"hwlab-agent-skills\",\"status\":\"published\",\"image\":\"127.0.0.1:5000/hwlab/hwlab-agent-skills:63acb59\",\"digest\":\"sha256:cf36771fa898fd240b28b093e0070cc16ecc7ee83207ec30413b6abf855d99b7\"}", + "stderrTail": "\"event\":\"publish_start\",\"serviceId\":\"hwlab-tunnel-client\",\"image\":\"127.0.0.1:5000/hwlab/hwlab-tunnel-client:e6d4bd5\"}\n{\"event\":\"publish_done\",\"serviceId\":\"hwlab-tunnel-client\",\"status\":\"published\",\"image\":\"127.0.0.1:5000/hwlab/hwlab-tunnel-client:e6d4bd5\",\"digest\":\"sha256:d6dff1383912ccfed1b1b91dc5ae8323e345f42f57145d7bda788e9941a4ca5a\"}\n{\"event\":\"build_start\",\"serviceId\":\"hwlab-edge-proxy\",\"image\":\"127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5\"}\n{\"event\":\"build_done\",\"serviceId\":\"hwlab-edge-proxy\",\"status\":\"built\",\"image\":\"127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5\"}\n{\"event\":\"publish_start\",\"serviceId\":\"hwlab-edge-proxy\",\"image\":\"127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5\"}\n{\"event\":\"publish_done\",\"serviceId\":\"hwlab-edge-proxy\",\"status\":\"published\",\"image\":\"127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5\",\"digest\":\"sha256:6ce280c0fd17218dd5719d1118b5e72fd0c4107dc33951e09b35c374f7affacd\"}\n{\"event\":\"build_start\",\"serviceId\":\"hwlab-cli\",\"image\":\"127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5\"}\n{\"event\":\"build_done\",\"serviceId\":\"hwlab-cli\",\"status\":\"built\",\"image\":\"127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5\"}\n{\"event\":\"publish_start\",\"serviceId\":\"hwlab-cli\",\"image\":\"127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5\"}\n{\"event\":\"publish_done\",\"serviceId\":\"hwlab-cli\",\"status\":\"published\",\"image\":\"127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5\",\"digest\":\"sha256:09a015e727738cd188853af557ecd8ea4adfa8a2250692e7442549e9c80eae1f\"}\n{\"event\":\"build_start\",\"serviceId\":\"hwlab-agent-skills\",\"image\":\"127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5\"}\n{\"event\":\"build_done\",\"serviceId\":\"hwlab-agent-skills\",\"status\":\"built\",\"image\":\"127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5\"}\n{\"event\":\"publish_start\",\"serviceId\":\"hwlab-agent-skills\",\"image\":\"127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5\"}\n{\"event\":\"publish_done\",\"serviceId\":\"hwlab-agent-skills\",\"status\":\"published\",\"image\":\"127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5\",\"digest\":\"sha256:45602b9d09ef22095ab75bd95e2f310626bce61bc4e39a7205009fe9620c2d4f\"}", "reportPath": "reports/dev-gate/dev-artifacts.json" }, { "id": "artifact-catalog-refresh", "phase": "publishing", "status": "pass", - "command": "/opt/node-v20.19.2-linux-x64/bin/node scripts/refresh-artifact-catalog.mjs --target-ref 63acb5989baa9f12266ca3467eb896a454593efc --publish-report reports/dev-gate/dev-artifacts.json", + "command": "/opt/node-v20.19.2-linux-x64/bin/node scripts/refresh-artifact-catalog.mjs --target-ref e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96 --publish-report reports/dev-gate/dev-artifacts.json", "code": 0, - "startedAt": "2026-05-23T09:40:32.800Z", - "finishedAt": "2026-05-23T09:40:32.853Z", + "startedAt": "2026-05-23T21:47:57.244Z", + "finishedAt": "2026-05-23T21:47:57.286Z", "stdoutJson": { "status": "published", - "targetRef": "63acb5989baa9f12266ca3467eb896a454593efc", - "sourceCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", - "artifactCommitId": "63acb59", + "targetRef": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "artifactCommitId": "e6d4bd5", "wrote": [ "deploy/deploy.json", "deploy/artifact-catalog.dev.json", @@ -2951,117 +3023,130 @@ "services": [ { "serviceId": "hwlab-cloud-api", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:63acb59", - "imageTag": "63acb59", - "digest": "sha256:79e9694d2d381ab96028e0705023b4e3c1cd3b7c71357a0ef5aefd66f53ee7f0", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "digest": "sha256:8a0677290ce3626d3589d1d22a943b49290e74451d75263cdbda3044a6ba105d", "publishState": "published", "artifactRequired": true, "notPublishedReason": null }, { "serviceId": "hwlab-cloud-web", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "imageTag": "63acb59", - "digest": "sha256:3c6b1efb10644c7f3d44054f364013cb348b1204a1a6ffd33969f213da59227e", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "digest": "sha256:f43ac97da69212e3ff74cfed36a04d65f0cd9cc7b8cb48f0eaf6f1f19d7dd6da", "publishState": "published", "artifactRequired": true, "notPublishedReason": null }, { "serviceId": "hwlab-agent-mgr", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:63acb59", - "imageTag": "63acb59", - "digest": "sha256:852b03d9d282e90454d5692dafa30cc34328ff8a097c509075a8bc6d5f1c6d80", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "digest": "sha256:f37e9b4dd6262ff4c30826fae1a0e01b184d0e57812c7876de73566263ff0c35", "publishState": "published", "artifactRequired": true, "notPublishedReason": null }, { "serviceId": "hwlab-agent-worker", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:63acb59", - "imageTag": "63acb59", - "digest": "sha256:2f5b8eb8d1a52849d056f412c5dde4bb075456d4fbebdc9169917092011d10e7", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "digest": "sha256:afdc241c799fe53561b60a37199c73cfb612ea0381ecfba82e66eb08566a8336", "publishState": "published", "artifactRequired": true, "notPublishedReason": null }, { "serviceId": "hwlab-gateway", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway:63acb59", - "imageTag": "63acb59", - "digest": "sha256:14dea76f86b481a895b0f24b5165ef9fd4c0f790dd558b5b625900b46761ec15", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "digest": "sha256:27303c093330bddf4c1eb8e3791dce6dbbe97aab28ff17c1faf761b05333cce0", "publishState": "published", "artifactRequired": true, "notPublishedReason": null }, { "serviceId": "hwlab-gateway-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:63acb59", - "imageTag": "63acb59", - "digest": "sha256:0964a94db3efef9a697a4dff1692888e8079c7aeb93abe25aabb6e8ba394c9c8", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "digest": "sha256:38c0372ec72e8f17b26f2fcf83d35718023a81c48529e459d83e36f8cc56ec3a", "publishState": "published", "artifactRequired": true, "notPublishedReason": null }, { "serviceId": "hwlab-box-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:63acb59", - "imageTag": "63acb59", - "digest": "sha256:1628a2ebc0ad1638c39fd71e8437ba91d042d9497262001473ecc36a5d7adc96", + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "digest": "sha256:d551c22242fff6016f15672c4b8b06dbfc85da2c00ecfdd4e40486668b58a56f", "publishState": "published", "artifactRequired": true, "notPublishedReason": null }, { "serviceId": "hwlab-patch-panel", - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:63acb59", - "imageTag": "63acb59", - "digest": "sha256:461f3e99f52f55e335b51d6048829c40c299568d0fff02cc4f5934bc8d3c962a", + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "digest": "sha256:6c7f3600a71131c11b994a625fd6ced65ac3bb7f109f3c7f941513cbd1d2def5", "publishState": "published", "artifactRequired": true, "notPublishedReason": null }, { "serviceId": "hwlab-router", - "image": "127.0.0.1:5000/hwlab/hwlab-router:63acb59", - "imageTag": "63acb59", - "digest": "sha256:560ce04be9a54b82a31c77ab7a214719c998b8b320afc1cd47c1abaa97941024", + "image": "127.0.0.1:5000/hwlab/hwlab-router:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "digest": "sha256:8d9084f3d23e44d3ffe628e9d100ebbad260c857d06b1fbb5791ecd11bfc4d9f", "publishState": "published", "artifactRequired": true, "notPublishedReason": null }, { "serviceId": "hwlab-tunnel-client", - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:63acb59", - "imageTag": "63acb59", - "digest": "sha256:657c8efdb35c4dbd0c87d4bbe201321aa857ad89a486ec30a2b8fdd379a41a6e", + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "digest": "sha256:d6dff1383912ccfed1b1b91dc5ae8323e345f42f57145d7bda788e9941a4ca5a", "publishState": "published", "artifactRequired": true, "notPublishedReason": null }, { "serviceId": "hwlab-edge-proxy", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:63acb59", - "imageTag": "63acb59", - "digest": "sha256:beca30d9dfbac596cbf72ef49ef6162a708b1048dcfa1c9d741747ac1b858314", + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "digest": "sha256:6ce280c0fd17218dd5719d1118b5e72fd0c4107dc33951e09b35c374f7affacd", "publishState": "published", "artifactRequired": true, "notPublishedReason": null }, { "serviceId": "hwlab-cli", - "image": "127.0.0.1:5000/hwlab/hwlab-cli:63acb59", - "imageTag": "63acb59", - "digest": "sha256:53c5c1dc118c4f698407492b67a59aa1bb1374341907568dd17cf3a0e52ef97b", + "image": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "digest": "sha256:09a015e727738cd188853af557ecd8ea4adfa8a2250692e7442549e9c80eae1f", "publishState": "published", "artifactRequired": true, "notPublishedReason": null }, { "serviceId": "hwlab-agent-skills", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:63acb59", - "imageTag": "63acb59", - "digest": "sha256:cf36771fa898fd240b28b093e0070cc16ecc7ee83207ec30413b6abf855d99b7", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5", + "imageTag": "e6d4bd5", + "buildCreatedAt": "2026-05-23T21:37:56.106Z", + "digest": "sha256:45602b9d09ef22095ab75bd95e2f310626bce61bc4e39a7205009fe9620c2d4f", "publishState": "published", "artifactRequired": true, "notPublishedReason": null @@ -3078,10 +3163,10 @@ "status": "pass", "command": "/opt/node-v20.19.2-linux-x64/bin/node scripts/validate-artifact-catalog.mjs", "code": 0, - "startedAt": "2026-05-23T09:40:32.853Z", - "finishedAt": "2026-05-23T09:40:32.885Z", + "startedAt": "2026-05-23T21:47:57.286Z", + "finishedAt": "2026-05-23T21:47:57.319Z", "stdoutJson": null, - "stdoutTail": "validated 13 DEV artifact catalog services at 63acb59 (published)", + "stdoutTail": "validated 13 DEV artifact catalog services at e6d4bd5 (published)", "stderrTail": "", "reportPath": null }, @@ -3089,10 +3174,10 @@ "id": "desired-state-check-after-refresh", "phase": "publishing", "status": "pass", - "command": "/opt/node-v20.19.2-linux-x64/bin/node scripts/deploy-desired-state-plan.mjs --promotion-commit 63acb5989baa9f12266ca3467eb896a454593efc --check --pretty", + "command": "/opt/node-v20.19.2-linux-x64/bin/node scripts/deploy-desired-state-plan.mjs --promotion-commit e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96 --check --pretty", "code": 0, - "startedAt": "2026-05-23T09:40:32.886Z", - "finishedAt": "2026-05-23T09:40:32.936Z", + "startedAt": "2026-05-23T21:47:57.319Z", + "finishedAt": "2026-05-23T21:47:57.365Z", "stdoutJson": { "kind": "hwlab-deploy-desired-state-plan", "mode": "read-only-plan", @@ -3116,8 +3201,8 @@ }, "checkSemantics": "--check exits non-zero for missing/invalid desired-state sources, internal commit/image mirror drift, invalid target tags, partial target drift, or any mismatch with an explicit --target-ref, --target-tag, or --promotion-commit. When the checked target ref is the current checked-out merge commit, the comparable current-main target is its accepted first parent because a commit cannot embed its own content hash. Without --check, a uniform older desired-state under --target-ref/--target-tag is a read-only promotion plan.", "summary": { - "desiredCommitId": "63acb59", - "desiredImageTag": "63acb59", + "desiredCommitId": "e6d4bd5", + "desiredImageTag": "e6d4bd5", "artifactState": "published", "ciPublished": true, "registryVerified": true, @@ -3130,14 +3215,14 @@ }, "target": { "targetRef": null, - "promotionCommit": "63acb5989baa9f12266ca3467eb896a454593efc", - "commitId": "63acb5989baa9f12266ca3467eb896a454593efc", - "shortCommitId": "63acb59", - "tag": "63acb59", + "promotionCommit": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "commitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "shortCommitId": "e6d4bd5", + "tag": "e6d4bd5", "tagSource": "promotion-commit-short", "acceptedCurrentMain": null, - "comparisonCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", - "comparisonTag": "63acb59", + "comparisonCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "comparisonTag": "e6d4bd5", "requireConvergence": true, "convergenceRequirement": "promotion-commit", "convergence": { @@ -3231,7 +3316,7 @@ "pendingPaths": [] }, "commands": [ - "node scripts/deploy-desired-state-plan.mjs --promotion-commit 63acb5989baa9f12266ca3467eb896a454593efc --check --pretty" + "node scripts/deploy-desired-state-plan.mjs --promotion-commit e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96 --check --pretty" ] }, "promotionBoundary": { @@ -3277,7 +3362,9 @@ "codeAgentProvider": { "contractVersion": "v1", "environment": "dev", - "provider": "openai-responses", + "provider": "codex-stdio", + "runtimeProvider": "openai-responses", + "backend": "hwlab-cloud-api/codex-mcp-stdio", "model": "gpt-5.5", "status": "pass", "ready": true, @@ -3346,11 +3433,11 @@ "present": true, "authoritative": false, "note": "report snapshots are contextual evidence only; deploy desired-state remains authoritative in deploy/, not reports/", - "commitId": "63acb59", + "commitId": "e6d4bd5", "matchesDesiredState": true, "artifactPublish": { "status": "published", - "sourceCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", + "sourceCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", "sourceMatchesDesiredState": true, "publishedCount": 13, "serviceCount": 13, @@ -3362,26 +3449,26 @@ { "serviceId": "hwlab-cloud-api", "deploy": { - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:63acb59", - "imageTag": "63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": { "HWLAB_COMMIT_ID": { "name": "HWLAB_COMMIT_ID", - "value": "63acb59", - "expected": "63acb59", + "value": "e6d4bd5", + "expected": "e6d4bd5", "status": "match" }, "HWLAB_IMAGE": { "name": "HWLAB_IMAGE", - "value": "127.0.0.1:5000/hwlab/hwlab-cloud-api:63acb59", - "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-api:63acb59", + "value": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", + "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", "status": "match" }, "HWLAB_IMAGE_TAG": { "name": "HWLAB_IMAGE_TAG", - "value": "63acb59", - "expected": "63acb59", + "value": "e6d4bd5", + "expected": "e6d4bd5", "status": "match" } }, @@ -3393,10 +3480,10 @@ } }, "catalog": { - "commitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:63acb59", - "imageTag": "63acb59", - "digest": "sha256:79e9694d2d381ab96028e0705023b4e3c1cd3b7c71357a0ef5aefd66f53ee7f0", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:8a0677290ce3626d3589d1d22a943b49290e74451d75263cdbda3044a6ba105d", "publishState": "published", "artifactRequired": true }, @@ -3406,26 +3493,26 @@ "name": "hwlab-cloud-api", "namespace": "hwlab-dev", "container": "hwlab-cloud-api", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:63acb59", - "imageTag": "63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": { "HWLAB_COMMIT_ID": { "name": "HWLAB_COMMIT_ID", - "value": "63acb59", - "expected": "63acb59", + "value": "e6d4bd5", + "expected": "e6d4bd5", "status": "match" }, "HWLAB_IMAGE": { "name": "HWLAB_IMAGE", - "value": "127.0.0.1:5000/hwlab/hwlab-cloud-api:63acb59", - "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-api:63acb59", + "value": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", + "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", "status": "match" }, "HWLAB_IMAGE_TAG": { "name": "HWLAB_IMAGE_TAG", - "value": "63acb59", - "expected": "63acb59", + "value": "e6d4bd5", + "expected": "e6d4bd5", "status": "match" } }, @@ -3438,15 +3525,15 @@ } ], "promotion": { - "targetCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", - "targetImageTag": "63acb59", - "deployImage": "127.0.0.1:5000/hwlab/hwlab-cloud-api:63acb59", - "catalogImage": "127.0.0.1:5000/hwlab/hwlab-cloud-api:63acb59", + "targetCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "targetImageTag": "e6d4bd5", + "deployImage": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", + "catalogImage": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", "workloadImages": [ { "workload": "hwlab-cloud-api", "container": "hwlab-cloud-api", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5" } ] } @@ -3454,26 +3541,26 @@ { "serviceId": "hwlab-cloud-web", "deploy": { - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "imageTag": "63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": { "HWLAB_COMMIT_ID": { "name": "HWLAB_COMMIT_ID", - "value": "63acb59", - "expected": "63acb59", + "value": "e6d4bd5", + "expected": "e6d4bd5", "status": "match" }, "HWLAB_IMAGE": { "name": "HWLAB_IMAGE", - "value": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", + "value": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", "status": "match" }, "HWLAB_IMAGE_TAG": { "name": "HWLAB_IMAGE_TAG", - "value": "63acb59", - "expected": "63acb59", + "value": "e6d4bd5", + "expected": "e6d4bd5", "status": "match" } }, @@ -3485,10 +3572,10 @@ } }, "catalog": { - "commitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "imageTag": "63acb59", - "digest": "sha256:3c6b1efb10644c7f3d44054f364013cb348b1204a1a6ffd33969f213da59227e", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:f43ac97da69212e3ff74cfed36a04d65f0cd9cc7b8cb48f0eaf6f1f19d7dd6da", "publishState": "published", "artifactRequired": true }, @@ -3498,26 +3585,26 @@ "name": "hwlab-cloud-web", "namespace": "hwlab-dev", "container": "hwlab-cloud-web", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "imageTag": "63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": { "HWLAB_COMMIT_ID": { "name": "HWLAB_COMMIT_ID", - "value": "63acb59", - "expected": "63acb59", + "value": "e6d4bd5", + "expected": "e6d4bd5", "status": "match" }, "HWLAB_IMAGE": { "name": "HWLAB_IMAGE", - "value": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", + "value": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", "status": "match" }, "HWLAB_IMAGE_TAG": { "name": "HWLAB_IMAGE_TAG", - "value": "63acb59", - "expected": "63acb59", + "value": "e6d4bd5", + "expected": "e6d4bd5", "status": "match" } }, @@ -3530,15 +3617,15 @@ } ], "promotion": { - "targetCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", - "targetImageTag": "63acb59", - "deployImage": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "catalogImage": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", + "targetCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "targetImageTag": "e6d4bd5", + "deployImage": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "catalogImage": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", "workloadImages": [ { "workload": "hwlab-cloud-web", "container": "hwlab-cloud-web", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5" } ] } @@ -3546,8 +3633,8 @@ { "serviceId": "hwlab-agent-mgr", "deploy": { - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:63acb59", - "imageTag": "63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -3561,10 +3648,10 @@ } }, "catalog": { - "commitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:63acb59", - "imageTag": "63acb59", - "digest": "sha256:852b03d9d282e90454d5692dafa30cc34328ff8a097c509075a8bc6d5f1c6d80", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:f37e9b4dd6262ff4c30826fae1a0e01b184d0e57812c7876de73566263ff0c35", "publishState": "published", "artifactRequired": true }, @@ -3574,8 +3661,8 @@ "name": "hwlab-agent-mgr", "namespace": "hwlab-dev", "container": "hwlab-agent-mgr", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:63acb59", - "imageTag": "63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -3590,15 +3677,15 @@ } ], "promotion": { - "targetCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", - "targetImageTag": "63acb59", - "deployImage": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:63acb59", - "catalogImage": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:63acb59", + "targetCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "targetImageTag": "e6d4bd5", + "deployImage": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:e6d4bd5", + "catalogImage": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:e6d4bd5", "workloadImages": [ { "workload": "hwlab-agent-mgr", "container": "hwlab-agent-mgr", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:e6d4bd5" } ] } @@ -3606,8 +3693,8 @@ { "serviceId": "hwlab-agent-worker", "deploy": { - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:63acb59", - "imageTag": "63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -3621,10 +3708,10 @@ } }, "catalog": { - "commitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:63acb59", - "imageTag": "63acb59", - "digest": "sha256:2f5b8eb8d1a52849d056f412c5dde4bb075456d4fbebdc9169917092011d10e7", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:afdc241c799fe53561b60a37199c73cfb612ea0381ecfba82e66eb08566a8336", "publishState": "published", "artifactRequired": true }, @@ -3634,8 +3721,8 @@ "name": "hwlab-agent-worker-template", "namespace": "hwlab-dev", "container": "hwlab-agent-worker", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:63acb59", - "imageTag": "63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -3650,15 +3737,15 @@ } ], "promotion": { - "targetCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", - "targetImageTag": "63acb59", - "deployImage": "127.0.0.1:5000/hwlab/hwlab-agent-worker:63acb59", - "catalogImage": "127.0.0.1:5000/hwlab/hwlab-agent-worker:63acb59", + "targetCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "targetImageTag": "e6d4bd5", + "deployImage": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5", + "catalogImage": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5", "workloadImages": [ { "workload": "hwlab-agent-worker-template", "container": "hwlab-agent-worker", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5" } ] } @@ -3666,8 +3753,8 @@ { "serviceId": "hwlab-gateway", "deploy": { - "image": "127.0.0.1:5000/hwlab/hwlab-gateway:63acb59", - "imageTag": "63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -3681,10 +3768,10 @@ } }, "catalog": { - "commitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway:63acb59", - "imageTag": "63acb59", - "digest": "sha256:14dea76f86b481a895b0f24b5165ef9fd4c0f790dd558b5b625900b46761ec15", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:27303c093330bddf4c1eb8e3791dce6dbbe97aab28ff17c1faf761b05333cce0", "publishState": "published", "artifactRequired": true }, @@ -3694,8 +3781,8 @@ "name": "hwlab-gateway", "namespace": "hwlab-dev", "container": "hwlab-gateway", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway:63acb59", - "imageTag": "63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -3710,15 +3797,15 @@ } ], "promotion": { - "targetCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", - "targetImageTag": "63acb59", - "deployImage": "127.0.0.1:5000/hwlab/hwlab-gateway:63acb59", - "catalogImage": "127.0.0.1:5000/hwlab/hwlab-gateway:63acb59", + "targetCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "targetImageTag": "e6d4bd5", + "deployImage": "127.0.0.1:5000/hwlab/hwlab-gateway:e6d4bd5", + "catalogImage": "127.0.0.1:5000/hwlab/hwlab-gateway:e6d4bd5", "workloadImages": [ { "workload": "hwlab-gateway", "container": "hwlab-gateway", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-gateway:e6d4bd5" } ] } @@ -3726,8 +3813,8 @@ { "serviceId": "hwlab-gateway-simu", "deploy": { - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:63acb59", - "imageTag": "63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -3741,10 +3828,10 @@ } }, "catalog": { - "commitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:63acb59", - "imageTag": "63acb59", - "digest": "sha256:0964a94db3efef9a697a4dff1692888e8079c7aeb93abe25aabb6e8ba394c9c8", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:38c0372ec72e8f17b26f2fcf83d35718023a81c48529e459d83e36f8cc56ec3a", "publishState": "published", "artifactRequired": true }, @@ -3754,8 +3841,8 @@ "name": "hwlab-gateway-simu", "namespace": "hwlab-dev", "container": "hwlab-gateway-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:63acb59", - "imageTag": "63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -3770,15 +3857,15 @@ } ], "promotion": { - "targetCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", - "targetImageTag": "63acb59", - "deployImage": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:63acb59", - "catalogImage": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:63acb59", + "targetCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "targetImageTag": "e6d4bd5", + "deployImage": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5", + "catalogImage": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5", "workloadImages": [ { "workload": "hwlab-gateway-simu", "container": "hwlab-gateway-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5" } ] } @@ -3786,8 +3873,8 @@ { "serviceId": "hwlab-box-simu", "deploy": { - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:63acb59", - "imageTag": "63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -3801,10 +3888,10 @@ } }, "catalog": { - "commitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:63acb59", - "imageTag": "63acb59", - "digest": "sha256:1628a2ebc0ad1638c39fd71e8437ba91d042d9497262001473ecc36a5d7adc96", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:d551c22242fff6016f15672c4b8b06dbfc85da2c00ecfdd4e40486668b58a56f", "publishState": "published", "artifactRequired": true }, @@ -3814,8 +3901,8 @@ "name": "hwlab-box-simu", "namespace": "hwlab-dev", "container": "hwlab-box-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:63acb59", - "imageTag": "63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -3830,15 +3917,15 @@ } ], "promotion": { - "targetCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", - "targetImageTag": "63acb59", - "deployImage": "127.0.0.1:5000/hwlab/hwlab-box-simu:63acb59", - "catalogImage": "127.0.0.1:5000/hwlab/hwlab-box-simu:63acb59", + "targetCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "targetImageTag": "e6d4bd5", + "deployImage": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5", + "catalogImage": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5", "workloadImages": [ { "workload": "hwlab-box-simu", "container": "hwlab-box-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5" } ] } @@ -3846,8 +3933,8 @@ { "serviceId": "hwlab-patch-panel", "deploy": { - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:63acb59", - "imageTag": "63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -3861,10 +3948,10 @@ } }, "catalog": { - "commitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:63acb59", - "imageTag": "63acb59", - "digest": "sha256:461f3e99f52f55e335b51d6048829c40c299568d0fff02cc4f5934bc8d3c962a", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:6c7f3600a71131c11b994a625fd6ced65ac3bb7f109f3c7f941513cbd1d2def5", "publishState": "published", "artifactRequired": true }, @@ -3874,8 +3961,8 @@ "name": "hwlab-patch-panel", "namespace": "hwlab-dev", "container": "hwlab-patch-panel", - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:63acb59", - "imageTag": "63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -3890,15 +3977,15 @@ } ], "promotion": { - "targetCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", - "targetImageTag": "63acb59", - "deployImage": "127.0.0.1:5000/hwlab/hwlab-patch-panel:63acb59", - "catalogImage": "127.0.0.1:5000/hwlab/hwlab-patch-panel:63acb59", + "targetCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "targetImageTag": "e6d4bd5", + "deployImage": "127.0.0.1:5000/hwlab/hwlab-patch-panel:e6d4bd5", + "catalogImage": "127.0.0.1:5000/hwlab/hwlab-patch-panel:e6d4bd5", "workloadImages": [ { "workload": "hwlab-patch-panel", "container": "hwlab-patch-panel", - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:e6d4bd5" } ] } @@ -3906,8 +3993,8 @@ { "serviceId": "hwlab-router", "deploy": { - "image": "127.0.0.1:5000/hwlab/hwlab-router:63acb59", - "imageTag": "63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-router:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -3921,10 +4008,10 @@ } }, "catalog": { - "commitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-router:63acb59", - "imageTag": "63acb59", - "digest": "sha256:560ce04be9a54b82a31c77ab7a214719c998b8b320afc1cd47c1abaa97941024", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-router:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:8d9084f3d23e44d3ffe628e9d100ebbad260c857d06b1fbb5791ecd11bfc4d9f", "publishState": "published", "artifactRequired": true }, @@ -3934,8 +4021,8 @@ "name": "hwlab-router", "namespace": "hwlab-dev", "container": "hwlab-router", - "image": "127.0.0.1:5000/hwlab/hwlab-router:63acb59", - "imageTag": "63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-router:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -3950,15 +4037,15 @@ } ], "promotion": { - "targetCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", - "targetImageTag": "63acb59", - "deployImage": "127.0.0.1:5000/hwlab/hwlab-router:63acb59", - "catalogImage": "127.0.0.1:5000/hwlab/hwlab-router:63acb59", + "targetCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "targetImageTag": "e6d4bd5", + "deployImage": "127.0.0.1:5000/hwlab/hwlab-router:e6d4bd5", + "catalogImage": "127.0.0.1:5000/hwlab/hwlab-router:e6d4bd5", "workloadImages": [ { "workload": "hwlab-router", "container": "hwlab-router", - "image": "127.0.0.1:5000/hwlab/hwlab-router:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-router:e6d4bd5" } ] } @@ -3966,8 +4053,8 @@ { "serviceId": "hwlab-tunnel-client", "deploy": { - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:63acb59", - "imageTag": "63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -3981,10 +4068,10 @@ } }, "catalog": { - "commitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:63acb59", - "imageTag": "63acb59", - "digest": "sha256:657c8efdb35c4dbd0c87d4bbe201321aa857ad89a486ec30a2b8fdd379a41a6e", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:d6dff1383912ccfed1b1b91dc5ae8323e345f42f57145d7bda788e9941a4ca5a", "publishState": "published", "artifactRequired": true }, @@ -3994,8 +4081,8 @@ "name": "hwlab-tunnel-client", "namespace": "hwlab-dev", "container": "hwlab-tunnel-client", - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:63acb59", - "imageTag": "63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -4010,15 +4097,15 @@ } ], "promotion": { - "targetCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", - "targetImageTag": "63acb59", - "deployImage": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:63acb59", - "catalogImage": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:63acb59", + "targetCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "targetImageTag": "e6d4bd5", + "deployImage": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:e6d4bd5", + "catalogImage": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:e6d4bd5", "workloadImages": [ { "workload": "hwlab-tunnel-client", "container": "hwlab-tunnel-client", - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:e6d4bd5" } ] } @@ -4026,8 +4113,8 @@ { "serviceId": "hwlab-edge-proxy", "deploy": { - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:63acb59", - "imageTag": "63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -4041,10 +4128,10 @@ } }, "catalog": { - "commitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:63acb59", - "imageTag": "63acb59", - "digest": "sha256:beca30d9dfbac596cbf72ef49ef6162a708b1048dcfa1c9d741747ac1b858314", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:6ce280c0fd17218dd5719d1118b5e72fd0c4107dc33951e09b35c374f7affacd", "publishState": "published", "artifactRequired": true }, @@ -4054,8 +4141,8 @@ "name": "hwlab-edge-proxy", "namespace": "hwlab-dev", "container": "hwlab-edge-proxy", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:63acb59", - "imageTag": "63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -4070,15 +4157,15 @@ } ], "promotion": { - "targetCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", - "targetImageTag": "63acb59", - "deployImage": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:63acb59", - "catalogImage": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:63acb59", + "targetCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "targetImageTag": "e6d4bd5", + "deployImage": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5", + "catalogImage": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5", "workloadImages": [ { "workload": "hwlab-edge-proxy", "container": "hwlab-edge-proxy", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5" } ] } @@ -4086,8 +4173,8 @@ { "serviceId": "hwlab-cli", "deploy": { - "image": "127.0.0.1:5000/hwlab/hwlab-cli:63acb59", - "imageTag": "63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -4101,10 +4188,10 @@ } }, "catalog": { - "commitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-cli:63acb59", - "imageTag": "63acb59", - "digest": "sha256:53c5c1dc118c4f698407492b67a59aa1bb1374341907568dd17cf3a0e52ef97b", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:09a015e727738cd188853af557ecd8ea4adfa8a2250692e7442549e9c80eae1f", "publishState": "published", "artifactRequired": true }, @@ -4114,8 +4201,8 @@ "name": "hwlab-cli-template", "namespace": "hwlab-dev", "container": "hwlab-cli", - "image": "127.0.0.1:5000/hwlab/hwlab-cli:63acb59", - "imageTag": "63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": {}, "missing": [ @@ -4130,15 +4217,15 @@ } ], "promotion": { - "targetCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", - "targetImageTag": "63acb59", - "deployImage": "127.0.0.1:5000/hwlab/hwlab-cli:63acb59", - "catalogImage": "127.0.0.1:5000/hwlab/hwlab-cli:63acb59", + "targetCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "targetImageTag": "e6d4bd5", + "deployImage": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5", + "catalogImage": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5", "workloadImages": [ { "workload": "hwlab-cli-template", "container": "hwlab-cli", - "image": "127.0.0.1:5000/hwlab/hwlab-cli:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5" } ] } @@ -4146,14 +4233,14 @@ { "serviceId": "hwlab-agent-skills", "deploy": { - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:63acb59", - "imageTag": "63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": { "HWLAB_SKILLS_COMMIT_ID": { "name": "HWLAB_SKILLS_COMMIT_ID", - "value": "63acb59", - "expected": "63acb59", + "value": "e6d4bd5", + "expected": "e6d4bd5", "status": "match" } }, @@ -4167,10 +4254,10 @@ } }, "catalog": { - "commitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:63acb59", - "imageTag": "63acb59", - "digest": "sha256:cf36771fa898fd240b28b093e0070cc16ecc7ee83207ec30413b6abf855d99b7", + "commitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:45602b9d09ef22095ab75bd95e2f310626bce61bc4e39a7205009fe9620c2d4f", "publishState": "published", "artifactRequired": true }, @@ -4180,14 +4267,14 @@ "name": "hwlab-agent-skills", "namespace": "hwlab-dev", "container": "hwlab-agent-skills", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:63acb59", - "imageTag": "63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5", + "imageTag": "e6d4bd5", "envMirrors": { "present": { "HWLAB_SKILLS_COMMIT_ID": { "name": "HWLAB_SKILLS_COMMIT_ID", - "value": "63acb59", - "expected": "63acb59", + "value": "e6d4bd5", + "expected": "e6d4bd5", "status": "match" } }, @@ -4202,15 +4289,15 @@ } ], "promotion": { - "targetCommitId": "63acb5989baa9f12266ca3467eb896a454593efc", - "targetImageTag": "63acb59", - "deployImage": "127.0.0.1:5000/hwlab/hwlab-agent-skills:63acb59", - "catalogImage": "127.0.0.1:5000/hwlab/hwlab-agent-skills:63acb59", + "targetCommitId": "e6d4bd5c72192ce7416849e93a93b1ffa0ebeb96", + "targetImageTag": "e6d4bd5", + "deployImage": "127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5", + "catalogImage": "127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5", "workloadImages": [ { "workload": "hwlab-agent-skills", "container": "hwlab-agent-skills", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5" } ] } @@ -4222,14 +4309,551 @@ "stderrTail": "", "reportPath": null }, + { + "id": "runtime-db-provisioning", + "phase": "applying", + "status": "pass", + "command": "kubectl -n hwlab-dev apply/wait/logs job/hwlab-runtime-provision-35e3d897", + "code": 0, + "startedAt": "2026-05-23T21:47:57.434Z", + "finishedAt": "2026-05-23T21:48:04.828Z", + "stdoutJson": { + "issue": "pikasTech/HWLAB#311", + "mode": "apply", + "generatedAt": "2026-05-23T21:48:01.780Z", + "target": { + "environment": "dev", + "namespace": "hwlab-dev", + "prodAllowed": false, + "dbUrlEnv": "HWLAB_CLOUD_DB_URL", + "dbUrlSecretRef": { + "env": "HWLAB_CLOUD_DB_URL", + "secretName": "hwlab-cloud-api-dev-db", + "secretKey": "database-url" + }, + "adminUrlEnv": "HWLAB_CLOUD_DB_ADMIN_URL", + "adminUrlSecretRef": { + "env": "HWLAB_CLOUD_DB_ADMIN_URL", + "secretName": "hwlab-cloud-api-dev-db-admin", + "secretKey": "admin-url" + }, + "dbEndpointAuthority": "secret-url-host" + }, + "db": { + "targetUrlPresent": true, + "targetUrlValueRedacted": true, + "targetEndpointRedacted": true, + "targetEndpointClass": "secret-url-host", + "targetParseStatus": "ready", + "targetErrorCode": null, + "targetRoleNamePresent": true, + "targetDatabaseNamePresent": true, + "targetDatabaseAllowed": true, + "targetPasswordPresent": true, + "sslMode": "disable", + "sslModeSecret": false, + "adminUrlPresent": true, + "adminUrlValueRedacted": true, + "adminEndpointRedacted": true, + "dbUrlSecretRef": { + "env": "HWLAB_CLOUD_DB_URL", + "secretName": "hwlab-cloud-api-dev-db", + "secretKey": "database-url" + }, + "adminUrlSecretRef": { + "env": "HWLAB_CLOUD_DB_ADMIN_URL", + "secretName": "hwlab-cloud-api-dev-db-admin", + "secretKey": "admin-url" + }, + "endpointAuthority": "secret-url-host" + }, + "applyBoundary": { + "defaultMode": "check", + "mode": "apply", + "liveDbReads": true, + "liveDbWrites": true, + "requiresForLiveDbRead": [ + "--confirm-dev", + "HWLAB_CLOUD_DB_URL from hwlab-cloud-api-dev-db/database-url", + "HWLAB_CLOUD_DB_ADMIN_URL from hwlab-cloud-api-dev-db-admin/admin-url unless runtime readiness already proves auth" + ], + "requiresForApply": [ + "--apply", + "--confirm-dev", + "--confirmed-non-production", + "HWLAB_CLOUD_DB_URL from hwlab-cloud-api-dev-db/database-url", + "HWLAB_CLOUD_DB_ADMIN_URL from hwlab-cloud-api-dev-db-admin/admin-url" + ], + "writeScope": [ + "DEV Postgres target role named by the redacted cloud-api DB URL", + "DEV Postgres target database named by the redacted cloud-api DB URL", + "DEV target DB CONNECT and public schema CREATE/USAGE grants for that role" + ], + "noWriteScope": [ + "Kubernetes Secret resources", + "PROD", + "service restarts", + "schema migrations", + "M3/M4/M5 acceptance" + ], + "forbidden": [ + "printing DB URLs, passwords, tokens, Secret values, or kubeconfig material", + "manual psql or node stdin database writes", + "mutating PROD" + ] + }, + "safety": { + "devOnly": true, + "environment": "dev", + "targetNamespace": "hwlab-dev", + "prodAllowed": false, + "sourceStoresSecretValues": false, + "printsSecretValues": false, + "secretValuesPrinted": false, + "dbUrlValueRedacted": true, + "adminUrlValueRedacted": true, + "endpointRedacted": true, + "readsKubernetesSecrets": false, + "writesKubernetesSecrets": false, + "liveDbWrites": true, + "fixtureEvidenceAllowed": false + }, + "actions": { + "liveDbReadAttempted": true, + "liveDbWriteAttempted": true, + "adminInspectionAttempted": false, + "adminWriteAttempted": true, + "appRuntimeReadinessAttempted": true, + "roleCreated": false, + "roleExisted": true, + "rolePasswordSynchronized": true, + "databaseCreated": false, + "databaseExisted": true, + "databaseConnectGranted": true, + "schemaPrivilegesGranted": true, + "readinessVerified": true + }, + "provisioning": { + "targetRole": { + "checked": true, + "exists": true, + "created": false, + "ready": true, + "targetNamePresent": true, + "inferredFromRuntime": true + }, + "targetDatabase": { + "checked": true, + "exists": true, + "created": false, + "ready": true, + "targetNamePresent": true, + "inferredFromRuntime": true + }, + "privileges": { + "checked": true, + "ready": true, + "databaseConnectGranted": true, + "schemaPrivilegesGranted": true + }, + "ready": true + }, + "runtime": { + "adapter": "postgres", + "durable": true, + "durableRequested": true, + "ready": true, + "status": "ready", + "blocker": null, + "liveRuntimeEvidence": true, + "fixtureEvidence": false, + "connection": { + "queryAttempted": true, + "queryResult": "durable_readiness_ready", + "endpointRedacted": true, + "valueRedacted": true, + "errorCode": null + }, + "schema": { + "checked": true, + "ready": true, + "missingTables": [], + "missingColumns": [] + }, + "migration": { + "checked": true, + "ready": true, + "requiredMigrationId": "0001_cloud_core_skeleton", + "appliedMigrationId": "0001_cloud_core_skeleton", + "missing": false + }, + "gates": { + "ssl": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + }, + "auth": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + }, + "schema": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + }, + "migration": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + }, + "durability": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + } + } + }, + "gates": { + "ssl": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null, + "summary": "ready" + }, + "auth": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null, + "summary": "ready" + }, + "role": { + "checked": false, + "ready": false, + "status": "not_checked", + "blocker": null, + "summary": "role existence requires DEV admin catalog inspection" + }, + "database": { + "checked": false, + "ready": false, + "status": "not_checked", + "blocker": null, + "summary": "database existence requires DEV admin catalog inspection" + }, + "schema": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null, + "summary": "ready" + }, + "migration": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null, + "summary": "ready" + }, + "durability": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null, + "summary": "ready" + } + }, + "downstreamRuntimeGates": { + "ssl": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + }, + "auth": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + }, + "schema": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + }, + "migration": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + }, + "durability": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + } + }, + "blockers": [], + "safetyRefusal": false, + "conclusion": { + "status": "ready", + "summary": "DEV DB role/database provisioning completed without printing secret values.", + "blockerCount": 0 + } + }, + "stdoutTail": null, + "stderrTail": "", + "reportPath": "reports/dev-gate/dev-runtime-provisioning-report.json", + "k8sJob": { + "jobName": "hwlab-runtime-provision-35e3d897", + "phase": "complete", + "serviceId": "hwlab-cloud-api", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", + "secretRefsOnly": true, + "secretValuesRead": false, + "secretValuesPrinted": false + } + }, + { + "id": "runtime-db-migration", + "phase": "applying", + "status": "pass", + "command": "kubectl -n hwlab-dev apply/wait/logs job/hwlab-runtime-migrate-35e3d897", + "code": 0, + "startedAt": "2026-05-23T21:48:04.828Z", + "finishedAt": "2026-05-23T21:48:11.243Z", + "stdoutJson": { + "issue": "pikasTech/HWLAB#164", + "mode": "apply", + "generatedAt": "2026-05-23T21:48:05.450Z", + "target": { + "environment": "dev", + "namespace": "hwlab-dev", + "prodAllowed": false, + "dbUrlEnv": "HWLAB_CLOUD_DB_URL", + "dbUrlSecretRef": { + "env": "HWLAB_CLOUD_DB_URL", + "secretName": "hwlab-cloud-api-dev-db", + "secretKey": "database-url" + }, + "dbEndpointAuthority": "secret-url-host" + }, + "migration": { + "id": "0001_cloud_core_skeleton", + "path": "internal/db/migrations/0001_cloud_core_skeleton.sql", + "sha256": "814c654ba17a4f515b0179940ee248462648d17c814ec76c034f398bd92c7a97", + "schemaVersion": "runtime-durable-postgres-v1", + "ledgerTable": "hwlab_schema_migrations", + "runtimeAdapter": "postgres" + }, + "db": { + "requiredEnv": [ + { + "name": "HWLAB_CLOUD_DB_URL", + "present": true, + "redacted": true, + "source": "k8s-secret-ref" + }, + { + "name": "HWLAB_CLOUD_DB_SSL_MODE", + "present": true, + "redacted": false, + "source": "runtime-env" + } + ], + "urlPresent": true, + "urlValueRedacted": true, + "sslMode": "disable", + "sslModeSecret": false, + "secretRef": { + "env": "HWLAB_CLOUD_DB_URL", + "secretName": "hwlab-cloud-api-dev-db", + "secretKey": "database-url" + }, + "endpointAuthority": "secret-url-host", + "optionalPublicDnsAliasRequired": false + }, + "sourceCheck": { + "ready": true, + "checked": true, + "migrationPath": "internal/db/migrations/0001_cloud_core_skeleton.sql", + "requiredMigrationId": "0001_cloud_core_skeleton", + "requiredSchemaVersion": "runtime-durable-postgres-v1", + "requiredTables": [ + "gateway_sessions", + "box_resources", + "box_capabilities", + "hardware_operations", + "audit_events", + "evidence_records" + ], + "requiredLedgerTable": "hwlab_schema_migrations", + "missing": [], + "connectsToDatabase": false, + "fixtureEvidence": false + }, + "applyBoundary": { + "defaultMode": "check", + "mode": "apply", + "liveDbReads": true, + "liveDbWrites": true, + "requiresForLiveDbRead": [ + "--confirm-dev", + "HWLAB_CLOUD_DB_URL from hwlab-cloud-api-dev-db/database-url" + ], + "requiresForApply": [ + "--apply", + "--confirm-dev", + "--confirmed-non-production", + "HWLAB_CLOUD_DB_URL from hwlab-cloud-api-dev-db/database-url" + ], + "writeScope": [ + "DEV Postgres schema objects declared by internal/db/migrations/0001_cloud_core_skeleton.sql", + "DEV hwlab_schema_migrations ledger row 0001_cloud_core_skeleton" + ], + "noWriteScope": [ + "Kubernetes Secret resources", + "PROD", + "service restarts", + "M3/M4/M5 acceptance" + ], + "forbidden": [ + "printing DB URLs, passwords, tokens, Secret values, or kubeconfig material", + "using fixture output as DEV-LIVE runtime evidence", + "mutating PROD" + ] + }, + "safety": { + "devOnly": true, + "environment": "dev", + "targetNamespace": "hwlab-dev", + "prodAllowed": false, + "sourceStoresSecretValues": false, + "printsSecretValues": false, + "dbUrlValueRedacted": true, + "endpointRedacted": true, + "readsKubernetesSecrets": false, + "writesKubernetesSecrets": false, + "liveDbWrites": true, + "fixtureEvidenceAllowed": false + }, + "actions": { + "sourceValidated": true, + "liveDbReadAttempted": true, + "liveDbWriteAttempted": true, + "migrationApplied": true, + "readinessVerified": true + }, + "gates": { + "auth": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null, + "summary": "ready" + }, + "schema": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null, + "summary": "ready" + }, + "migration": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null, + "summary": "ready" + }, + "readiness": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null, + "summary": "ready" + } + }, + "blockers": [], + "safetyRefusal": false, + "runtime": { + "adapter": "postgres", + "durable": true, + "durableRequested": true, + "ready": true, + "status": "ready", + "blocker": null, + "liveRuntimeEvidence": true, + "fixtureEvidence": false, + "connection": { + "queryAttempted": true, + "queryResult": "durable_readiness_ready", + "endpointRedacted": true, + "valueRedacted": true, + "errorCode": null + }, + "schema": { + "checked": true, + "ready": true, + "requiredTables": [ + "gateway_sessions", + "box_resources", + "box_capabilities", + "hardware_operations", + "audit_events", + "evidence_records" + ], + "missingTables": [], + "missingColumns": [] + }, + "migration": { + "checked": true, + "ready": true, + "table": "hwlab_schema_migrations", + "requiredMigrationId": "0001_cloud_core_skeleton", + "requiredSchemaVersion": "runtime-durable-postgres-v1", + "appliedMigrationId": "0001_cloud_core_skeleton", + "appliedSchemaVersion": "runtime-durable-postgres-v1", + "missing": false + } + }, + "conclusion": { + "status": "ready", + "summary": "DEV runtime migration applied and durable runtime readiness was verified without printing secret values.", + "blockerCount": 0 + } + }, + "stdoutTail": null, + "stderrTail": "", + "reportPath": "reports/dev-gate/dev-runtime-migration-report.json", + "k8sJob": { + "jobName": "hwlab-runtime-migrate-35e3d897", + "phase": "complete", + "serviceId": "hwlab-cloud-api", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", + "secretRefsOnly": true, + "secretValuesRead": false, + "secretValuesPrinted": false + } + }, { "id": "dev-deploy-apply", "phase": "applying", "status": "pass", - "command": "/opt/node-v20.19.2-linux-x64/bin/node scripts/dev-deploy-apply.mjs --apply --confirm-dev --confirmed-non-production --write-report", + "command": "/opt/node-v20.19.2-linux-x64/bin/node scripts/dev-deploy-apply.mjs --apply --confirm-dev --confirmed-non-production --write-report --kubeconfig /etc/rancher/k3s/k3s.yaml", "code": 0, - "startedAt": "2026-05-23T09:40:33.012Z", - "finishedAt": "2026-05-23T09:40:35.316Z", + "startedAt": "2026-05-23T21:48:11.243Z", + "finishedAt": "2026-05-23T21:48:14.131Z", "stdoutJson": { "$schema": "https://hwlab.pikastech.local/schemas/dev-gate-report.schema.json", "$id": "https://hwlab.pikastech.local/reports/dev-gate/dev-deploy-report.json", @@ -4248,7 +4872,7 @@ "pikasTech/HWLAB#30" ], "taskId": "dev-deploy-apply", - "commitId": "63acb59", + "commitId": "e6d4bd5", "acceptanceLevel": "dev_deploy_apply", "devOnly": true, "prodDisabled": true, @@ -4261,7 +4885,7 @@ "summary": "Current DEV deploy apply report; active public API/health endpoint is 16667 and browser endpoint is 16666." }, "status": "pass", - "generatedAt": "2026-05-23T09:40:35.311Z", + "generatedAt": "2026-05-23T21:48:14.125Z", "namespace": "hwlab-dev", "endpoint": "http://74.48.78.17:16667", "sourceContract": { @@ -4300,16 +4924,16 @@ ], "evidence": [ "artifact services checked: 13", - "expected artifact commit: 63acb59", + "expected artifact commit: e6d4bd5", "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", + "kubectl kubeconfig source: flag:--kubeconfig", + "kubectl kubeconfig: /etc/rancher/k3s/k3s.yaml", "live health: pass", "code agent provider desired-state: pass", - "code agent provider live env before apply: pass", - "template job replacements: 0", + "code agent provider live env before apply: blocked", + "template job replacements: 2", "legacy simulator deployment cleanups: 0" ], "summary": "DEV dry-run preflight passed." @@ -4342,9 +4966,9 @@ "--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", + "kubeconfigSource": "flag:--kubeconfig", + "writeScope": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml 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=/etc/rancher/k3s/k3s.yaml kubectl read, replacement planning, and server-side dry-run only", "forbiddenActions": [ "prod-deploy", "secret-read", @@ -4364,12 +4988,12 @@ "prodDisabled": true }, "artifactPlan": { - "expectedArtifactCommit": "63acb59", - "deployCommitId": "63acb59", - "catalogCommitId": "63acb59", - "sourceCommitId": "63acb59", + "expectedArtifactCommit": "e6d4bd5", + "deployCommitId": "e6d4bd5", + "catalogCommitId": "e6d4bd5", + "sourceCommitId": "e6d4bd5", "serviceCommitIds": [ - "63acb59" + "e6d4bd5" ], "matchesSourceCommit": true, "published": true, @@ -4392,7 +5016,7 @@ { "name": "hwlab-cloud-api", "serviceId": "hwlab-cloud-api", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5" } ] }, @@ -4408,7 +5032,7 @@ { "name": "hwlab-cloud-web", "serviceId": "hwlab-cloud-web", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5" } ] }, @@ -4424,7 +5048,7 @@ { "name": "hwlab-agent-mgr", "serviceId": "hwlab-agent-mgr", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:e6d4bd5" } ] }, @@ -4440,7 +5064,7 @@ { "name": "hwlab-agent-worker", "serviceId": "hwlab-agent-worker", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5" } ] }, @@ -4456,7 +5080,7 @@ { "name": "hwlab-gateway", "serviceId": "hwlab-gateway", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-gateway:e6d4bd5" } ] }, @@ -4472,7 +5096,7 @@ { "name": "hwlab-gateway-simu", "serviceId": "hwlab-gateway-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5" } ] }, @@ -4488,7 +5112,7 @@ { "name": "hwlab-box-simu", "serviceId": "hwlab-box-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5" } ] }, @@ -4504,7 +5128,7 @@ { "name": "hwlab-patch-panel", "serviceId": "hwlab-patch-panel", - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:e6d4bd5" } ] }, @@ -4520,7 +5144,7 @@ { "name": "hwlab-router", "serviceId": "hwlab-router", - "image": "127.0.0.1:5000/hwlab/hwlab-router:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-router:e6d4bd5" } ] }, @@ -4536,7 +5160,7 @@ { "name": "hwlab-tunnel-client", "serviceId": "hwlab-tunnel-client", - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:e6d4bd5" } ] }, @@ -4552,7 +5176,7 @@ { "name": "hwlab-edge-proxy", "serviceId": "hwlab-edge-proxy", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5" } ] }, @@ -4568,7 +5192,7 @@ { "name": "hwlab-cli", "serviceId": "hwlab-cli", - "image": "127.0.0.1:5000/hwlab/hwlab-cli:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5" } ] }, @@ -4584,7 +5208,7 @@ { "name": "hwlab-agent-skills", "serviceId": "hwlab-agent-skills", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5" } ] } @@ -4840,25 +5464,28 @@ "desiredSuspended": true, "liveExists": true, "liveSuspended": true, - "oldImage": "127.0.0.1:5000/hwlab/hwlab-agent-worker:63acb59", - "newImage": "127.0.0.1:5000/hwlab/hwlab-agent-worker:63acb59", + "oldImage": "127.0.0.1:5000/hwlab/hwlab-agent-worker:b02ac5b", + "newImage": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5", "oldImages": [ { "name": "hwlab-agent-worker", "serviceId": "hwlab-agent-worker", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:b02ac5b" } ], "newImages": [ { "name": "hwlab-agent-worker", "serviceId": "hwlab-agent-worker", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5" } ], - "replace": false, - "result": "not_needed", - "reason": "Live suspended template Job already matches the desired image." + "replace": true, + "result": "replaced", + "reason": "Live suspended template Job was deleted and recreated by kubectl apply.", + "deleteCommand": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml 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", @@ -4867,25 +5494,28 @@ "desiredSuspended": true, "liveExists": true, "liveSuspended": true, - "oldImage": "127.0.0.1:5000/hwlab/hwlab-cli:63acb59", - "newImage": "127.0.0.1:5000/hwlab/hwlab-cli:63acb59", + "oldImage": "127.0.0.1:5000/hwlab/hwlab-cli:b02ac5b", + "newImage": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5", "oldImages": [ { "name": "hwlab-cli", "serviceId": "hwlab-cli", - "image": "127.0.0.1:5000/hwlab/hwlab-cli:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-cli:b02ac5b" } ], "newImages": [ { "name": "hwlab-cli", "serviceId": "hwlab-cli", - "image": "127.0.0.1:5000/hwlab/hwlab-cli:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5" } ], - "replace": false, - "result": "not_needed", - "reason": "Live suspended template Job already matches the desired image." + "replace": true, + "result": "replaced", + "reason": "Live suspended template Job was deleted and recreated by kubectl apply.", + "deleteCommand": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml 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": { @@ -4917,13 +5547,13 @@ "desiredReplacementKind": "StatefulSet", "liveExists": false, "oldImage": null, - "newImage": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:63acb59", + "newImage": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5", "oldImages": [], "newImages": [ { "name": "hwlab-gateway-simu", "serviceId": "hwlab-gateway-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5" } ], "cleanup": false, @@ -4939,13 +5569,13 @@ "desiredReplacementKind": "StatefulSet", "liveExists": false, "oldImage": null, - "newImage": "127.0.0.1:5000/hwlab/hwlab-box-simu:63acb59", + "newImage": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5", "oldImages": [], "newImages": [ { "name": "hwlab-box-simu", "serviceId": "hwlab-box-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5" } ], "cleanup": false, @@ -4958,19 +5588,19 @@ "namespace": "hwlab-dev", "status": "observed", "observationPhase": "after_apply", - "sourceCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "imageTag": "63acb59", - "digest": "sha256:3c6b1efb10644c7f3d44054f364013cb348b1204a1a6ffd33969f213da59227e", + "sourceCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:f43ac97da69212e3ff74cfed36a04d65f0cd9cc7b8cb48f0eaf6f1f19d7dd6da", "repositoryDigest": null, "publishState": "published", - "rolloutRevision": "34", - "liveImage": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", + "rolloutRevision": "41", + "liveImage": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", "imageMatchesDesired": true, "expectedRuntimeEnv": { - "HWLAB_COMMIT_ID": "63acb59", - "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "HWLAB_IMAGE_TAG": "63acb59" + "HWLAB_COMMIT_ID": "e6d4bd5", + "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "HWLAB_IMAGE_TAG": "e6d4bd5" }, "liveRuntimeEnv": { "status": "match", @@ -4978,20 +5608,20 @@ "fields": [ { "name": "HWLAB_COMMIT_ID", - "expected": "63acb59", - "actual": "63acb59", + "expected": "e6d4bd5", + "actual": "e6d4bd5", "status": "match" }, { "name": "HWLAB_IMAGE", - "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "actual": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", + "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "actual": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", "status": "match" }, { "name": "HWLAB_IMAGE_TAG", - "expected": "63acb59", - "actual": "63acb59", + "expected": "e6d4bd5", + "actual": "e6d4bd5", "status": "match" } ], @@ -4999,80 +5629,118 @@ }, "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" + "verificationCommand": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev rollout status deployment/hwlab-cloud-web --timeout=180s", + "readCommand": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev get deployment hwlab-cloud-web -o json", + "kubeconfig": "/etc/rancher/k3s/k3s.yaml", + "kubeconfigSource": "flag:--kubeconfig" }, "cloudWebRolloutBeforeApply": { "serviceId": "hwlab-cloud-web", "namespace": "hwlab-dev", "status": "observed", "observationPhase": "before_apply", - "sourceCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "imageTag": "63acb59", - "digest": "sha256:3c6b1efb10644c7f3d44054f364013cb348b1204a1a6ffd33969f213da59227e", + "sourceCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:f43ac97da69212e3ff74cfed36a04d65f0cd9cc7b8cb48f0eaf6f1f19d7dd6da", "repositoryDigest": null, "publishState": "published", - "rolloutRevision": "34", - "liveImage": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "imageMatchesDesired": true, + "rolloutRevision": "40", + "liveImage": "127.0.0.1:5000/hwlab/hwlab-cloud-web:b02ac5b", + "imageMatchesDesired": false, "expectedRuntimeEnv": { - "HWLAB_COMMIT_ID": "63acb59", - "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "HWLAB_IMAGE_TAG": "63acb59" + "HWLAB_COMMIT_ID": "e6d4bd5", + "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "HWLAB_IMAGE_TAG": "e6d4bd5" }, "liveRuntimeEnv": { - "status": "match", - "matchesDesired": true, + "status": "drift", + "matchesDesired": false, "fields": [ { "name": "HWLAB_COMMIT_ID", - "expected": "63acb59", - "actual": "63acb59", - "status": "match" + "expected": "e6d4bd5", + "actual": "b02ac5b", + "status": "drift" }, { "name": "HWLAB_IMAGE", - "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "actual": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "status": "match" + "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "actual": "127.0.0.1:5000/hwlab/hwlab-cloud-web:b02ac5b", + "status": "drift" }, { "name": "HWLAB_IMAGE_TAG", - "expected": "63acb59", - "actual": "63acb59", - "status": "match" + "expected": "e6d4bd5", + "actual": "b02ac5b", + "status": "drift" } ], - "drift": [] + "drift": [ + { + "name": "HWLAB_COMMIT_ID", + "expected": "e6d4bd5", + "actual": "b02ac5b", + "status": "drift" + }, + { + "name": "HWLAB_IMAGE", + "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "actual": "127.0.0.1:5000/hwlab/hwlab-cloud-web:b02ac5b", + "status": "drift" + }, + { + "name": "HWLAB_IMAGE_TAG", + "expected": "e6d4bd5", + "actual": "b02ac5b", + "status": "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" + "runtimeEnvMatchesDesired": false, + "runtimeEnvDrift": [ + { + "name": "HWLAB_COMMIT_ID", + "expected": "e6d4bd5", + "actual": "b02ac5b", + "status": "drift" + }, + { + "name": "HWLAB_IMAGE", + "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "actual": "127.0.0.1:5000/hwlab/hwlab-cloud-web:b02ac5b", + "status": "drift" + }, + { + "name": "HWLAB_IMAGE_TAG", + "expected": "e6d4bd5", + "actual": "b02ac5b", + "status": "drift" + } + ], + "verificationCommand": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev rollout status deployment/hwlab-cloud-web --timeout=180s", + "readCommand": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev get deployment hwlab-cloud-web -o json", + "kubeconfig": "/etc/rancher/k3s/k3s.yaml", + "kubeconfigSource": "flag:--kubeconfig" }, "cloudWebRolloutAfterApply": { "serviceId": "hwlab-cloud-web", "namespace": "hwlab-dev", "status": "observed", "observationPhase": "after_apply", - "sourceCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "imageTag": "63acb59", - "digest": "sha256:3c6b1efb10644c7f3d44054f364013cb348b1204a1a6ffd33969f213da59227e", + "sourceCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:f43ac97da69212e3ff74cfed36a04d65f0cd9cc7b8cb48f0eaf6f1f19d7dd6da", "repositoryDigest": null, "publishState": "published", - "rolloutRevision": "34", - "liveImage": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", + "rolloutRevision": "41", + "liveImage": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", "imageMatchesDesired": true, "expectedRuntimeEnv": { - "HWLAB_COMMIT_ID": "63acb59", - "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "HWLAB_IMAGE_TAG": "63acb59" + "HWLAB_COMMIT_ID": "e6d4bd5", + "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "HWLAB_IMAGE_TAG": "e6d4bd5" }, "liveRuntimeEnv": { "status": "match", @@ -5080,20 +5748,20 @@ "fields": [ { "name": "HWLAB_COMMIT_ID", - "expected": "63acb59", - "actual": "63acb59", + "expected": "e6d4bd5", + "actual": "e6d4bd5", "status": "match" }, { "name": "HWLAB_IMAGE", - "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "actual": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", + "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "actual": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", "status": "match" }, { "name": "HWLAB_IMAGE_TAG", - "expected": "63acb59", - "actual": "63acb59", + "expected": "e6d4bd5", + "actual": "e6d4bd5", "status": "match" } ], @@ -5101,16 +5769,18 @@ }, "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" + "verificationCommand": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev rollout status deployment/hwlab-cloud-web --timeout=180s", + "readCommand": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev get deployment hwlab-cloud-web -o json", + "kubeconfig": "/etc/rancher/k3s/k3s.yaml", + "kubeconfigSource": "flag:--kubeconfig" }, "codeAgentProvider": { "desiredState": { "contractVersion": "v1", "environment": "dev", - "provider": "openai-responses", + "provider": "codex-stdio", + "runtimeProvider": "openai-responses", + "backend": "hwlab-cloud-api/codex-mcp-stdio", "model": "gpt-5.5", "status": "pass", "ready": true, @@ -5178,9 +5848,9 @@ "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", + "status": "blocked", + "readCommand": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev get deployment hwlab-cloud-api -o json", + "kubeconfig": "/etc/rancher/k3s/k3s.yaml", "expectedSecretRef": "hwlab-code-agent-provider/openai-api-key", "expectedEgressTarget": "dev-egress-proxy", "secretValuesRead": false, @@ -5188,9 +5858,11 @@ "valuesRedacted": true, "contractVersion": "v1", "environment": "dev", - "provider": "openai-responses", + "provider": "codex-stdio", + "runtimeProvider": "openai-responses", + "backend": "hwlab-cloud-api/codex-mcp-stdio", "model": "gpt-5.5", - "ready": true, + "ready": false, "requiredEnv": [ { "name": "HWLAB_CODE_AGENT_PROVIDER", @@ -5218,7 +5890,13 @@ } ], "missingEnv": [], - "mismatchedEnv": [], + "mismatchedEnv": [ + { + "name": "HWLAB_CODE_AGENT_PROVIDER", + "expected": "codex-stdio", + "redacted": false + } + ], "secretRef": { "env": "OPENAI_API_KEY", "secretName": "hwlab-code-agent-provider", @@ -5245,8 +5923,8 @@ "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", + "readCommand": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev get deployment hwlab-cloud-api -o json", + "kubeconfig": "/etc/rancher/k3s/k3s.yaml", "expectedSecretRef": "hwlab-code-agent-provider/openai-api-key", "expectedEgressTarget": "dev-egress-proxy", "secretValuesRead": false, @@ -5254,7 +5932,9 @@ "valuesRedacted": true, "contractVersion": "v1", "environment": "dev", - "provider": "openai-responses", + "provider": "codex-stdio", + "runtimeProvider": "openai-responses", + "backend": "hwlab-cloud-api/codex-mcp-stdio", "model": "gpt-5.5", "ready": true, "requiredEnv": [ @@ -5314,8 +5994,8 @@ }, "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 unchanged\ndeployment.apps/hwlab-agent-skills 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-patch-panel unchanged\ndeployment.apps/hwlab-router unchanged\ndeployment.apps/hwlab-tunnel-client unchanged\nstatefulset.apps/hwlab-box-simu unchanged\nstatefulset.apps/hwlab-gateway-simu unchanged\njob.batch/hwlab-agent-worker-template unchanged\njob.batch/hwlab-cli-template unchanged", + "command": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml 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, @@ -5336,26 +6016,26 @@ "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" + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev get pods,services,configmaps,deployments,jobs -o wide", + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml 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" + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev rollout undo deployment/hwlab-cloud-api", + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev rollout undo deployment/hwlab-cloud-web", + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev rollout undo deployment/hwlab-agent-mgr", + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev rollout undo deployment/hwlab-gateway", + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev rollout undo deployment/hwlab-patch-panel", + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev rollout undo deployment/hwlab-router", + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev rollout undo deployment/hwlab-tunnel-client", + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev rollout undo deployment/hwlab-edge-proxy", + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml 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" + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev delete job hwlab-agent-worker-template --ignore-not-found", + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml 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", + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev rollout status deployment/hwlab-cloud-api --timeout=120s", "curl -fsS http://74.48.78.17:16667/health/live" ] }, @@ -5363,106 +6043,106 @@ "artifactEvidence": [ { "serviceId": "hwlab-cloud-api", - "deployCommitId": "63acb59", - "catalogCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:63acb59", - "digest": "sha256:79e9694d2d381ab96028e0705023b4e3c1cd3b7c71357a0ef5aefd66f53ee7f0", + "deployCommitId": "e6d4bd5", + "catalogCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", + "digest": "sha256:8a0677290ce3626d3589d1d22a943b49290e74451d75263cdbda3044a6ba105d", "publishState": "published" }, { "serviceId": "hwlab-cloud-web", - "deployCommitId": "63acb59", - "catalogCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "digest": "sha256:3c6b1efb10644c7f3d44054f364013cb348b1204a1a6ffd33969f213da59227e", + "deployCommitId": "e6d4bd5", + "catalogCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "digest": "sha256:f43ac97da69212e3ff74cfed36a04d65f0cd9cc7b8cb48f0eaf6f1f19d7dd6da", "publishState": "published" }, { "serviceId": "hwlab-agent-mgr", - "deployCommitId": "63acb59", - "catalogCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:63acb59", - "digest": "sha256:852b03d9d282e90454d5692dafa30cc34328ff8a097c509075a8bc6d5f1c6d80", + "deployCommitId": "e6d4bd5", + "catalogCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:e6d4bd5", + "digest": "sha256:f37e9b4dd6262ff4c30826fae1a0e01b184d0e57812c7876de73566263ff0c35", "publishState": "published" }, { "serviceId": "hwlab-agent-worker", - "deployCommitId": "63acb59", - "catalogCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:63acb59", - "digest": "sha256:2f5b8eb8d1a52849d056f412c5dde4bb075456d4fbebdc9169917092011d10e7", + "deployCommitId": "e6d4bd5", + "catalogCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5", + "digest": "sha256:afdc241c799fe53561b60a37199c73cfb612ea0381ecfba82e66eb08566a8336", "publishState": "published" }, { "serviceId": "hwlab-gateway", - "deployCommitId": "63acb59", - "catalogCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway:63acb59", - "digest": "sha256:14dea76f86b481a895b0f24b5165ef9fd4c0f790dd558b5b625900b46761ec15", + "deployCommitId": "e6d4bd5", + "catalogCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway:e6d4bd5", + "digest": "sha256:27303c093330bddf4c1eb8e3791dce6dbbe97aab28ff17c1faf761b05333cce0", "publishState": "published" }, { "serviceId": "hwlab-gateway-simu", - "deployCommitId": "63acb59", - "catalogCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:63acb59", - "digest": "sha256:0964a94db3efef9a697a4dff1692888e8079c7aeb93abe25aabb6e8ba394c9c8", + "deployCommitId": "e6d4bd5", + "catalogCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5", + "digest": "sha256:38c0372ec72e8f17b26f2fcf83d35718023a81c48529e459d83e36f8cc56ec3a", "publishState": "published" }, { "serviceId": "hwlab-box-simu", - "deployCommitId": "63acb59", - "catalogCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:63acb59", - "digest": "sha256:1628a2ebc0ad1638c39fd71e8437ba91d042d9497262001473ecc36a5d7adc96", + "deployCommitId": "e6d4bd5", + "catalogCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5", + "digest": "sha256:d551c22242fff6016f15672c4b8b06dbfc85da2c00ecfdd4e40486668b58a56f", "publishState": "published" }, { "serviceId": "hwlab-patch-panel", - "deployCommitId": "63acb59", - "catalogCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:63acb59", - "digest": "sha256:461f3e99f52f55e335b51d6048829c40c299568d0fff02cc4f5934bc8d3c962a", + "deployCommitId": "e6d4bd5", + "catalogCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:e6d4bd5", + "digest": "sha256:6c7f3600a71131c11b994a625fd6ced65ac3bb7f109f3c7f941513cbd1d2def5", "publishState": "published" }, { "serviceId": "hwlab-router", - "deployCommitId": "63acb59", - "catalogCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-router:63acb59", - "digest": "sha256:560ce04be9a54b82a31c77ab7a214719c998b8b320afc1cd47c1abaa97941024", + "deployCommitId": "e6d4bd5", + "catalogCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-router:e6d4bd5", + "digest": "sha256:8d9084f3d23e44d3ffe628e9d100ebbad260c857d06b1fbb5791ecd11bfc4d9f", "publishState": "published" }, { "serviceId": "hwlab-tunnel-client", - "deployCommitId": "63acb59", - "catalogCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:63acb59", - "digest": "sha256:657c8efdb35c4dbd0c87d4bbe201321aa857ad89a486ec30a2b8fdd379a41a6e", + "deployCommitId": "e6d4bd5", + "catalogCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:e6d4bd5", + "digest": "sha256:d6dff1383912ccfed1b1b91dc5ae8323e345f42f57145d7bda788e9941a4ca5a", "publishState": "published" }, { "serviceId": "hwlab-edge-proxy", - "deployCommitId": "63acb59", - "catalogCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:63acb59", - "digest": "sha256:beca30d9dfbac596cbf72ef49ef6162a708b1048dcfa1c9d741747ac1b858314", + "deployCommitId": "e6d4bd5", + "catalogCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5", + "digest": "sha256:6ce280c0fd17218dd5719d1118b5e72fd0c4107dc33951e09b35c374f7affacd", "publishState": "published" }, { "serviceId": "hwlab-cli", - "deployCommitId": "63acb59", - "catalogCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-cli:63acb59", - "digest": "sha256:53c5c1dc118c4f698407492b67a59aa1bb1374341907568dd17cf3a0e52ef97b", + "deployCommitId": "e6d4bd5", + "catalogCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5", + "digest": "sha256:09a015e727738cd188853af557ecd8ea4adfa8a2250692e7442549e9c80eae1f", "publishState": "published" }, { "serviceId": "hwlab-agent-skills", - "deployCommitId": "63acb59", - "catalogCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:63acb59", - "digest": "sha256:cf36771fa898fd240b28b093e0070cc16ecc7ee83207ec30413b6abf855d99b7", + "deployCommitId": "e6d4bd5", + "catalogCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5", + "digest": "sha256:45602b9d09ef22095ab75bd95e2f310626bce61bc4e39a7205009fe9620c2d4f", "publishState": "published" } ], @@ -5619,79 +6299,79 @@ "images": [ { "serviceId": "hwlab-cloud-api", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", "kind": "Deployment", "name": "hwlab-cloud-api" }, { "serviceId": "hwlab-cloud-web", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", "kind": "Deployment", "name": "hwlab-cloud-web" }, { "serviceId": "hwlab-agent-mgr", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:e6d4bd5", "kind": "Deployment", "name": "hwlab-agent-mgr" }, { "serviceId": "hwlab-agent-worker", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5", "kind": "Job", "name": "hwlab-agent-worker-template" }, { "serviceId": "hwlab-gateway", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway:e6d4bd5", "kind": "Deployment", "name": "hwlab-gateway" }, { "serviceId": "hwlab-gateway-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5", "kind": "StatefulSet", "name": "hwlab-gateway-simu" }, { "serviceId": "hwlab-box-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5", "kind": "StatefulSet", "name": "hwlab-box-simu" }, { "serviceId": "hwlab-patch-panel", - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:e6d4bd5", "kind": "Deployment", "name": "hwlab-patch-panel" }, { "serviceId": "hwlab-router", - "image": "127.0.0.1:5000/hwlab/hwlab-router:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-router:e6d4bd5", "kind": "Deployment", "name": "hwlab-router" }, { "serviceId": "hwlab-tunnel-client", - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:e6d4bd5", "kind": "Deployment", "name": "hwlab-tunnel-client" }, { "serviceId": "hwlab-edge-proxy", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5", "kind": "Deployment", "name": "hwlab-edge-proxy" }, { "serviceId": "hwlab-cli", - "image": "127.0.0.1:5000/hwlab/hwlab-cli:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5", "kind": "Job", "name": "hwlab-cli-template" }, { "serviceId": "hwlab-agent-skills", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5", "kind": "Deployment", "name": "hwlab-agent-skills" } @@ -5703,29 +6383,29 @@ "name": "hwlab-cloud-web", "container": "hwlab-cloud-web", "expected": { - "HWLAB_COMMIT_ID": "63acb59", - "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "HWLAB_IMAGE_TAG": "63acb59" + "HWLAB_COMMIT_ID": "e6d4bd5", + "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "HWLAB_IMAGE_TAG": "e6d4bd5" }, "status": "match", "matchesDesired": true, "fields": [ { "name": "HWLAB_COMMIT_ID", - "expected": "63acb59", - "actual": "63acb59", + "expected": "e6d4bd5", + "actual": "e6d4bd5", "status": "match" }, { "name": "HWLAB_IMAGE", - "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "actual": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", + "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "actual": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", "status": "match" }, { "name": "HWLAB_IMAGE_TAG", - "expected": "63acb59", - "actual": "63acb59", + "expected": "e6d4bd5", + "actual": "e6d4bd5", "status": "match" } ], @@ -5736,20 +6416,20 @@ "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", + "kubeconfig": "/etc/rancher/k3s/k3s.yaml", + "kubeconfigSource": "flag:--kubeconfig", + "commandPrefix": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl", + "readCommand": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml 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-57d8bc9f89-5kv4p", + "name": "hwlab-agent-mgr-99d44c747-mfqzj", "phase": "Running" }, { "kind": "Pod", - "name": "hwlab-agent-skills-8687f446fd-lqtgt", + "name": "hwlab-agent-skills-7f99b49598-lqjdd", "phase": "Running" }, { @@ -5764,22 +6444,22 @@ }, { "kind": "Pod", - "name": "hwlab-cloud-api-668549d448-gnct8", + "name": "hwlab-cloud-api-57cfcfc587-kdvg9", "phase": "Running" }, { "kind": "Pod", - "name": "hwlab-cloud-web-fc896cddb-gwh58", + "name": "hwlab-cloud-web-67c684947b-lkvtj", "phase": "Running" }, { "kind": "Pod", - "name": "hwlab-edge-proxy-5ff8d747d-rgdjm", + "name": "hwlab-edge-proxy-85db66bcc9-mv8pv", "phase": "Running" }, { "kind": "Pod", - "name": "hwlab-frpc-59f57d479c-wm5l2", + "name": "hwlab-frpc-59f57d479c-tgjhl", "phase": "Running" }, { @@ -5794,17 +6474,27 @@ }, { "kind": "Pod", - "name": "hwlab-patch-panel-79c59cd5b7-dl4sz", + "name": "hwlab-patch-panel-7cd9d9d597-kwnm6", "phase": "Running" }, { "kind": "Pod", - "name": "hwlab-router-7d47d6dfc4-gzcw9", + "name": "hwlab-router-65dc5579fb-d2r8l", "phase": "Running" }, { "kind": "Pod", - "name": "hwlab-tunnel-client-64779fc4bd-pz8lz", + "name": "hwlab-runtime-migrate-35e3d897-kfr4m", + "phase": "Succeeded" + }, + { + "kind": "Pod", + "name": "hwlab-runtime-provision-35e3d897-jk2rc", + "phase": "Succeeded" + }, + { + "kind": "Pod", + "name": "hwlab-tunnel-client-54d968477d-mf2qk", "phase": "Running" }, { @@ -5948,6 +6638,14 @@ { "kind": "Job", "name": "hwlab-cli-template" + }, + { + "kind": "Job", + "name": "hwlab-runtime-migrate-35e3d897" + }, + { + "kind": "Job", + "name": "hwlab-runtime-provision-35e3d897" } ] }, @@ -5955,7 +6653,7 @@ "status": "pass", "url": "http://74.48.78.17:16667/health/live", "httpStatus": 200, - "body": "{\"serviceId\":\"hwlab-cloud-api\",\"environment\":\"dev\",\"status\":\"ok\",\"ready\":true,\"readiness\":{\"contractVersion\":\"v3\",\"ready\":true,\"status\":\"ok\",\"blockerCodes\":[],\"blockers\":[],\"components\":{\"db\":\"ready\",\"codeAgent\":\"ready\",\"runtime\":\"ready\"},\"durability\":{\"status\":\"ready\",\"ready\":true,\"adapter\":\"postgres\",\"durable\":true,\"durableRequested\":true,\"durableCapable\":true,\"runtimeStatus\":\"ready\",\"runtimeReady\":true,\"liveRuntimeEvidence\":true,\"dbLiveEvidenceObserved\":true,\"dbLiveEvidenceIsDurabilityEvidenc" + "body": "{\"serviceId\":\"hwlab-cloud-api\",\"environment\":\"dev\",\"status\":\"degraded\",\"ready\":false,\"revision\":\"b02ac5becad13aeeab0d5cb7d8f01300bccb78c2\",\"readiness\":{\"contractVersion\":\"v3\",\"ready\":false,\"status\":\"degraded\",\"blockerCodes\":[\"stdio_protocol_not_wired\"],\"blockers\":[{\"code\":\"stdio_protocol_not_wired\",\"type\":\"agent_blocker\",\"scope\":\"code-agent-long-lived-session\",\"status\":\"open\",\"sourceIssue\":\"pikasTech/HWLAB#275\",\"summary\":\"普通聊天可走 OpenAI Responses fallback,pwd/skills 走受控只读 runner,M3 IO 走 Skill CLI" } }, "blockers": [], @@ -5964,6 +6662,489 @@ "stdoutTail": null, "stderrTail": "", "reportPath": "reports/dev-gate/dev-deploy-report.json" + }, + { + "id": "runtime-durable-postflight", + "phase": "verifying", + "status": "blocked", + "command": "/opt/node-v20.19.2-linux-x64/bin/node scripts/dev-runtime-postflight.mjs --live --confirm-dev --confirmed-non-production --target api --write-report --fail-on-blocked", + "code": 1, + "startedAt": "2026-05-23T21:48:14.217Z", + "finishedAt": "2026-05-23T21:48:18.238Z", + "stdoutJson": { + "issue": "pikasTech/HWLAB#311", + "mode": "dev-live", + "generatedAt": "2026-05-23T21:48:14.250Z", + "target": { + "environment": "dev", + "namespace": "hwlab-dev", + "prodAllowed": false, + "apiHealthUrl": "http://74.48.78.17:16667/health/live", + "apiV1Url": "http://74.48.78.17:16667/v1", + "m3Target": "api" + }, + "actions": { + "healthLiveReadAttempted": true, + "v1ReadAttempted": true, + "m3MutationAttempted": true, + "m3MutationAllowed": true + }, + "apiHealth": { + "check": "GET /health/live", + "httpStatus": 200, + "reachable": true, + "serviceId": "hwlab-cloud-api", + "environment": "dev", + "status": "degraded", + "ready": false, + "runtime": { + "adapter": "postgres", + "durable": true, + "durableRequested": true, + "ready": true, + "status": "ready", + "blocker": null, + "liveRuntimeEvidence": true, + "requiredEvidence": "runtime_adapter_schema_migration_read_query", + "blockedLayer": null, + "gates": { + "ssl": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + }, + "auth": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + }, + "schema": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + }, + "migration": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + }, + "durability": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + } + } + }, + "runtimeDurableReadiness": { + "status": "ready", + "ready": true, + "classification": "runtime_durable_ready", + "reasonCode": "runtime_durable_ready", + "reason": "runtime durable ready; adapter=postgres; queryResult=durable_readiness_ready", + "impact": "M3 durable postflight may run because runtime persistence readiness is green.", + "safeNextAction": "Continue with repo-owned DEV CD postflight; do not read or print Secret values.", + "retryable": true, + "readonly": false, + "evidence": { + "adapter": "postgres", + "durable": true, + "runtimeReady": true, + "durabilityReady": true, + "liveRuntimeEvidence": true, + "blocker": null, + "blockedLayer": null, + "queryResult": "durable_readiness_ready", + "readyQueryResult": true, + "rawStatus": "degraded", + "postgresRequired": true, + "gates": { + "ssl": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + }, + "auth": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + }, + "schema": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + }, + "migration": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + }, + "durability": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + } + }, + "secretMaterialRead": false + } + }, + "db": { + "ready": true, + "connected": true, + "liveDbEvidence": true, + "endpointSource": "secret-url-host", + "connectionResult": "connected", + "endpointRedacted": true, + "valueRedacted": true, + "runtimeReadiness": { + "ready": true, + "status": "ready", + "blocker": null, + "queryResult": "durable_readiness_ready", + "requiredEvidence": "runtime_adapter_schema_migration_read_query" + } + }, + "readiness": { + "ready": false, + "status": "degraded", + "durabilityReady": true, + "durabilityBlockedLayer": null + }, + "blockerCodes": [ + "stdio_protocol_not_wired" + ], + "m3IoControl": null, + "error": null + }, + "apiV1": { + "check": "GET /v1", + "httpStatus": 200, + "reachable": true, + "serviceId": "hwlab-cloud-api", + "environment": null, + "status": "degraded", + "ready": false, + "runtime": { + "adapter": "postgres", + "durable": true, + "durableRequested": true, + "ready": true, + "status": "ready", + "blocker": null, + "liveRuntimeEvidence": true, + "requiredEvidence": "runtime_adapter_schema_migration_read_query", + "blockedLayer": null, + "gates": { + "ssl": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + }, + "auth": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + }, + "schema": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + }, + "migration": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + }, + "durability": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + } + } + }, + "runtimeDurableReadiness": { + "status": "ready", + "ready": true, + "classification": "runtime_durable_ready", + "reasonCode": "runtime_durable_ready", + "reason": "runtime durable ready; adapter=postgres; queryResult=durable_readiness_ready", + "impact": "M3 durable postflight may run because runtime persistence readiness is green.", + "safeNextAction": "Continue with repo-owned DEV CD postflight; do not read or print Secret values.", + "retryable": true, + "readonly": false, + "evidence": { + "adapter": "postgres", + "durable": true, + "runtimeReady": true, + "durabilityReady": true, + "liveRuntimeEvidence": true, + "blocker": null, + "blockedLayer": null, + "queryResult": "durable_readiness_ready", + "readyQueryResult": true, + "rawStatus": "degraded", + "postgresRequired": true, + "gates": { + "ssl": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + }, + "auth": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + }, + "schema": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + }, + "migration": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + }, + "durability": { + "checked": true, + "ready": true, + "status": "ready", + "blocker": null + } + }, + "secretMaterialRead": false + } + }, + "db": { + "ready": true, + "connected": true, + "liveDbEvidence": true, + "endpointSource": "secret-url-host", + "connectionResult": "connected", + "endpointRedacted": true, + "valueRedacted": true, + "runtimeReadiness": { + "ready": true, + "status": "ready", + "blocker": null, + "queryResult": "durable_readiness_ready", + "requiredEvidence": "runtime_adapter_schema_migration_read_query" + } + }, + "readiness": { + "ready": false, + "status": "degraded", + "durabilityReady": true, + "durabilityBlockedLayer": null + }, + "blockerCodes": [ + "stdio_protocol_not_wired" + ], + "m3IoControl": { + "route": "/v1/m3/io", + "status": "available", + "enabled": true, + "contractVersion": "m3-io-control-v1", + "directFrontendGatewayOrBoxAccess": false, + "genericHardwareRpcExposedToFrontend": false + }, + "error": null + }, + "m3": { + "mode": "dev-live", + "status": "blocked", + "classification": "source_contract_failed", + "trustedGreen": false, + "result": "SOURCE/static contract failed.", + "operationCount": 4, + "persisted": true, + "persistenceContract": { + "contractVersion": "m3-do1-true-false-persisted-v1", + "requiredRoute": "res_boxsimu_1:DO1 -> hwlab-patch-panel -> res_boxsimu_2:DI1", + "requiredValues": [ + true, + true, + false, + false + ], + "ready": true, + "sequence": [ + { + "id": "write-do1-true", + "action": "do.write", + "expectedValue": true, + "observedValue": true, + "status": "succeeded", + "idsPresent": true, + "valueMatches": true, + "evidenceGreen": true, + "persisted": true + }, + { + "id": "read-di1-true", + "action": "di.read", + "expectedValue": true, + "observedValue": true, + "status": "succeeded", + "idsPresent": true, + "valueMatches": true, + "evidenceGreen": true, + "persisted": true + }, + { + "id": "write-do1-false", + "action": "do.write", + "expectedValue": false, + "observedValue": false, + "status": "succeeded", + "idsPresent": true, + "valueMatches": true, + "evidenceGreen": true, + "persisted": true + }, + { + "id": "read-di1-false", + "action": "di.read", + "expectedValue": false, + "observedValue": false, + "status": "succeeded", + "idsPresent": true, + "valueMatches": true, + "evidenceGreen": true, + "persisted": true + } + ] + }, + "operations": [ + { + "id": "write-do1-true", + "action": "do.write", + "status": "succeeded", + "operationId": "op_m3_do_write_04f30c71-8cfd-46f9-8d91-aa506ae20f0b", + "traceId": "trc_m3_io_e2e_write_do1_true_338f3beb-810b-447b-9612-071ba131fe16", + "auditId": "aud_m3_do_write_04f30c71-8cfd-46f9-8d91-aa506ae20f0b_succeeded", + "evidenceId": "evd_m3_do_write_04f30c71-8cfd-46f9-8d91-aa506ae20f0b_succeeded", + "resultValue": true, + "evidenceState": { + "status": "green", + "durable": true, + "sourceKind": "DEV-LIVE", + "writeStatus": "persisted" + }, + "blocker": null + }, + { + "id": "read-di1-true", + "action": "di.read", + "status": "succeeded", + "operationId": "op_m3_di_read_a40696ff-1581-4789-a1ad-7778bb4b2da7", + "traceId": "trc_m3_io_e2e_read_di1_true_e4587f6a-2ab4-492f-a924-f160c9cfdc2d", + "auditId": "aud_m3_di_read_a40696ff-1581-4789-a1ad-7778bb4b2da7_succeeded", + "evidenceId": "evd_m3_di_read_a40696ff-1581-4789-a1ad-7778bb4b2da7_succeeded", + "resultValue": true, + "evidenceState": { + "status": "green", + "durable": true, + "sourceKind": "DEV-LIVE", + "writeStatus": "persisted" + }, + "blocker": null + }, + { + "id": "write-do1-false", + "action": "do.write", + "status": "succeeded", + "operationId": "op_m3_do_write_eb8b7b21-c8c5-45f4-8c08-a1e87b62b2aa", + "traceId": "trc_m3_io_e2e_write_do1_false_e5f378b1-38d0-4307-8aef-dc94b633b0e8", + "auditId": "aud_m3_do_write_eb8b7b21-c8c5-45f4-8c08-a1e87b62b2aa_succeeded", + "evidenceId": "evd_m3_do_write_eb8b7b21-c8c5-45f4-8c08-a1e87b62b2aa_succeeded", + "resultValue": false, + "evidenceState": { + "status": "green", + "durable": true, + "sourceKind": "DEV-LIVE", + "writeStatus": "persisted" + }, + "blocker": null + }, + { + "id": "read-di1-false", + "action": "di.read", + "status": "succeeded", + "operationId": "op_m3_di_read_c92ea3cf-c3e0-4a0f-80e8-cf719d215aae", + "traceId": "trc_m3_io_e2e_read_di1_false_c06468ba-3ae4-4436-a4a4-64b0e6754dfa", + "auditId": "aud_m3_di_read_c92ea3cf-c3e0-4a0f-80e8-cf719d215aae_succeeded", + "evidenceId": "evd_m3_di_read_c92ea3cf-c3e0-4a0f-80e8-cf719d215aae_succeeded", + "resultValue": false, + "evidenceState": { + "status": "green", + "durable": true, + "sourceKind": "DEV-LIVE", + "writeStatus": "persisted" + }, + "blocker": null + } + ] + }, + "blockers": [ + { + "type": "runtime_blocker", + "scope": "m3-durable-postflight", + "status": "open", + "reason": "M3 true/false durable postflight did not produce trusted green persisted evidence.", + "impact": "M3 durable readiness cannot be accepted because trusted evidence is not green.", + "safeNextAction": "Fix the M3 control path or trusted-record persistence and rerun DEV runtime postflight.", + "retryable": true, + "summary": "M3 true/false durable postflight did not produce trusted green persisted evidence. Impact: M3 durable readiness cannot be accepted because trusted evidence is not green. Safe next action: Fix the M3 control path or trusted-record persistence and rerun DEV runtime postflight.", + "sourceIssue": "pikasTech/HWLAB#311", + "evidence": { + "classification": "source_contract_failed", + "trustedGreen": false, + "operationCount": 4 + } + } + ], + "safety": { + "devOnly": true, + "environment": "dev", + "prodAllowed": false, + "liveHttpReads": true, + "liveM3Writes": true, + "liveM3WritesRequireDurableRuntimeReady": true, + "readsKubernetesSecrets": false, + "writesKubernetesSecrets": false, + "secretValuesPrinted": false, + "dbUrlValueRedacted": true, + "endpointRedacted": true + }, + "safetyRefusal": false, + "conclusion": { + "status": "blocked", + "summary": "DEV runtime postflight is blocked; M3 is skipped unless durable runtime readiness is proven first.", + "blockerCount": 1 + } + }, + "stdoutTail": null, + "stderrTail": "", + "reportPath": "reports/dev-gate/dev-runtime-postflight-report.json" } ], "liveBefore": { @@ -5977,17 +7158,17 @@ "httpStatus": 200, "reachable": true, "identityMatches": true, - "startedAt": "2026-05-23T09:40:07.823Z", - "finishedAt": "2026-05-23T09:40:08.574Z", + "startedAt": "2026-05-23T21:37:53.244Z", + "finishedAt": "2026-05-23T21:37:53.799Z", "expectedServiceId": "hwlab-cloud-web", "expectedCommit": null, "serviceId": "hwlab-cloud-web", "environment": "dev", "applicationStatus": "ok", "ready": null, - "observedCommit": "63acb59", - "image": null, - "imageTag": null, + "observedCommit": "b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:b02ac5b", + "imageTag": "b02ac5b", "observedAt": null, "serviceMatches": true, "environmentMatches": true, @@ -6001,22 +7182,24 @@ "httpStatus": 200, "reachable": true, "identityMatches": true, - "startedAt": "2026-05-23T09:40:07.825Z", - "finishedAt": "2026-05-23T09:40:11.666Z", + "startedAt": "2026-05-23T21:37:53.246Z", + "finishedAt": "2026-05-23T21:37:54.477Z", "expectedServiceId": "hwlab-cloud-api", "expectedCommit": null, "serviceId": "hwlab-cloud-api", "environment": "dev", - "applicationStatus": "ok", - "ready": true, - "observedCommit": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:63acb59", - "imageTag": "63acb59", - "observedAt": "2026-05-23T09:40:09.312Z", + "applicationStatus": "degraded", + "ready": false, + "observedCommit": "b02ac5b", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:b02ac5b", + "imageTag": "b02ac5b", + "observedAt": "2026-05-23T21:37:53.704Z", "serviceMatches": true, "environmentMatches": true, "commitMatches": null, - "blockerCodes": [] + "blockerCodes": [ + "stdio_protocol_not_wired" + ] } ], "summary": { @@ -6031,73 +7214,152 @@ } }, "liveVerify": { + "status": "not_run", + "reason": "transaction blocked before live verify", + "endpoints": [], + "summary": { + "checked": 0 + } + }, + "preflight": { "status": "pass", - "expectedCommit": "63acb59", - "endpoints": [ + "scope": "pre-lock-pre-side-effect", + "generatedAt": "2026-05-23T21:37:52.937Z", + "namespace": "hwlab-dev", + "kubeconfig": { + "required": "/etc/rancher/k3s/k3s.yaml", + "selected": "/etc/rancher/k3s/k3s.yaml", + "source": "flag:--kubeconfig", + "enforcedEnv": true + }, + "kubectl": { + "executor": "/usr/local/bin/kubectl", + "commandPrefix": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl" + }, + "controlPlane": { + "forced": { + "label": "forced-d601-k3s", + "contextCommand": { + "command": "kubectl config current-context", + "code": 0, + "ok": true, + "summary": "in-cluster" + }, + "serverCommand": { + "command": "kubectl config view --minify -o jsonpath={.clusters[0].cluster.server}", + "code": 0, + "ok": true, + "summary": "https://10.43.0.1:443" + }, + "nodesCommand": { + "command": "kubectl get nodes -o jsonpath={.items[*].metadata.name}", + "code": 0, + "ok": true, + "summary": "d601" + }, + "contextName": "in-cluster", + "serverUrl": "https://10.43.0.1:443", + "nodeNames": [ + "d601" + ], + "status": "observed" + }, + "bare": { + "label": "bare-kubectl", + "contextCommand": { + "command": "kubectl config current-context", + "code": 1, + "ok": false, + "summary": "error: current-context is not set" + }, + "serverCommand": { + "command": "kubectl config view --minify -o jsonpath={.clusters[0].cluster.server}", + "code": 1, + "ok": false, + "summary": "error: current-context must exist in order to minify" + }, + "nodesCommand": { + "command": "kubectl get nodes -o jsonpath={.items[*].metadata.name}", + "code": 0, + "ok": true, + "summary": "d601" + }, + "contextName": null, + "serverUrl": null, + "nodeNames": [ + "d601" + ], + "status": "unavailable", + "namespace": { + "command": "kubectl get namespace hwlab-dev -o name", + "code": 0, + "ok": true, + "summary": "namespace/hwlab-dev" + }, + "hwlabDevNamespaceObserved": true, + "secondControlPlaneCandidate": null + } + }, + "secretRefs": [ { - "id": "cloud-web-16666", - "url": "http://74.48.78.17:16666/health/live", - "status": "pass", - "httpStatus": 200, - "reachable": true, - "identityMatches": true, - "startedAt": "2026-05-23T09:40:35.398Z", - "finishedAt": "2026-05-23T09:40:36.584Z", - "expectedServiceId": "hwlab-cloud-web", - "expectedCommit": "63acb59", - "serviceId": "hwlab-cloud-web", - "environment": "dev", - "applicationStatus": "ok", - "ready": null, - "observedCommit": "63acb59", - "image": null, - "imageTag": null, - "observedAt": null, - "serviceMatches": true, - "environmentMatches": true, - "commitMatches": true, - "blockerCodes": [] + "secretName": "hwlab-cloud-api-dev-db", + "secretKey": "database-url", + "status": "present", + "exists": true, + "keyPresent": true, + "keysObserved": [ + "database-url" + ], + "existenceCommand": "kubectl -n hwlab-dev get secret hwlab-cloud-api-dev-db -o name", + "keyCommand": "kubectl -n hwlab-dev describe secret hwlab-cloud-api-dev-db", + "secretValueRead": false, + "secretValuePrinted": false }, { - "id": "cloud-api-16667", - "url": "http://74.48.78.17:16667/health/live", - "status": "pass", - "httpStatus": 200, - "reachable": true, - "identityMatches": true, - "startedAt": "2026-05-23T09:40:35.399Z", - "finishedAt": "2026-05-23T09:40:36.592Z", - "expectedServiceId": "hwlab-cloud-api", - "expectedCommit": "63acb59", - "serviceId": "hwlab-cloud-api", - "environment": "dev", - "applicationStatus": "ok", - "ready": true, - "observedCommit": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:63acb59", - "imageTag": "63acb59", - "observedAt": "2026-05-23T09:40:36.263Z", - "serviceMatches": true, - "environmentMatches": true, - "commitMatches": true, - "blockerCodes": [] + "secretName": "hwlab-cloud-api-dev-db-admin", + "secretKey": "admin-url", + "status": "present", + "exists": true, + "keyPresent": true, + "keysObserved": [ + "admin-url" + ], + "existenceCommand": "kubectl -n hwlab-dev get secret hwlab-cloud-api-dev-db-admin -o name", + "keyCommand": "kubectl -n hwlab-dev describe secret hwlab-cloud-api-dev-db-admin", + "secretValueRead": false, + "secretValuePrinted": false + }, + { + "secretName": "hwlab-code-agent-provider", + "secretKey": "openai-api-key", + "status": "present", + "exists": true, + "keyPresent": true, + "keysObserved": [ + "openai-api-key" + ], + "existenceCommand": "kubectl -n hwlab-dev get secret hwlab-code-agent-provider -o name", + "keyCommand": "kubectl -n hwlab-dev describe secret hwlab-code-agent-provider", + "secretValueRead": false, + "secretValuePrinted": false } ], - "summary": { - "checked": 2, - "reachable": 2, - "identityMatches": 2, - "commitMatches": 2, - "ports": [ - 16666, - 16667 - ] - } + "safety": { + "writeSideEffectsAttempted": false, + "prodTouched": false, + "secretValuesRead": false, + "secretValuesPrinted": false, + "secretKeyNamesOnly": true + }, + "blockers": [] }, "reportPaths": { "transaction": "reports/dev-gate/dev-cd-apply.json", "artifacts": "reports/dev-gate/dev-artifacts.json", - "deployApply": "reports/dev-gate/dev-deploy-report.json" + "deployApply": "reports/dev-gate/dev-deploy-report.json", + "runtimeProvisioning": "reports/dev-gate/dev-runtime-provisioning-report.json", + "runtimeMigration": "reports/dev-gate/dev-runtime-migration-report.json", + "runtimePostflight": "reports/dev-gate/dev-runtime-postflight-report.json" }, "safety": { "prodTouched": false, @@ -6109,6 +7371,24 @@ "singleLock": "Lease/hwlab-dev/hwlab-dev-cd-lock" } }, - "blockers": [], + "blockers": [ + { + "type": "runtime_blocker", + "scope": "runtime-durable-postflight", + "status": "open", + "reason": "M3 true/false durable postflight did not produce trusted green persisted evidence.", + "impact": "M3 durable readiness cannot be accepted because trusted evidence is not green.", + "safeNextAction": "Fix the M3 control path or trusted-record persistence and rerun DEV runtime postflight.", + "retryable": true, + "summary": "M3 true/false durable postflight did not produce trusted green persisted evidence. Impact: M3 durable readiness cannot be accepted because trusted evidence is not green. Safe next action: Fix the M3 control path or trusted-record persistence and rerun DEV runtime postflight.", + "evidence": { + "command": "/opt/node-v20.19.2-linux-x64/bin/node scripts/dev-runtime-postflight.mjs --live --confirm-dev --confirmed-non-production --target api --write-report --fail-on-blocked", + "code": 1, + "reportPath": "reports/dev-gate/dev-runtime-postflight-report.json", + "blockerScope": "m3-durable-postflight", + "k8sJob": null + } + } + ], "notes": "DEV-only CD transaction evidence. This does not claim M3 PASS or runtime durability." } diff --git a/reports/dev-gate/dev-deploy-report.json b/reports/dev-gate/dev-deploy-report.json index b504d578..3034d2fa 100644 --- a/reports/dev-gate/dev-deploy-report.json +++ b/reports/dev-gate/dev-deploy-report.json @@ -16,7 +16,7 @@ "pikasTech/HWLAB#30" ], "taskId": "dev-deploy-apply", - "commitId": "63acb59", + "commitId": "e6d4bd5", "acceptanceLevel": "dev_deploy_apply", "devOnly": true, "prodDisabled": true, @@ -29,7 +29,7 @@ "summary": "Current DEV deploy apply report; active public API/health endpoint is 16667 and browser endpoint is 16666." }, "status": "pass", - "generatedAt": "2026-05-23T09:40:35.311Z", + "generatedAt": "2026-05-23T21:48:14.125Z", "namespace": "hwlab-dev", "endpoint": "http://74.48.78.17:16667", "sourceContract": { @@ -68,16 +68,16 @@ ], "evidence": [ "artifact services checked: 13", - "expected artifact commit: 63acb59", + "expected artifact commit: e6d4bd5", "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", + "kubectl kubeconfig source: flag:--kubeconfig", + "kubectl kubeconfig: /etc/rancher/k3s/k3s.yaml", "live health: pass", "code agent provider desired-state: pass", - "code agent provider live env before apply: pass", - "template job replacements: 0", + "code agent provider live env before apply: blocked", + "template job replacements: 2", "legacy simulator deployment cleanups: 0" ], "summary": "DEV dry-run preflight passed." @@ -110,9 +110,9 @@ "--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", + "kubeconfigSource": "flag:--kubeconfig", + "writeScope": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml 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=/etc/rancher/k3s/k3s.yaml kubectl read, replacement planning, and server-side dry-run only", "forbiddenActions": [ "prod-deploy", "secret-read", @@ -132,12 +132,12 @@ "prodDisabled": true }, "artifactPlan": { - "expectedArtifactCommit": "63acb59", - "deployCommitId": "63acb59", - "catalogCommitId": "63acb59", - "sourceCommitId": "63acb59", + "expectedArtifactCommit": "e6d4bd5", + "deployCommitId": "e6d4bd5", + "catalogCommitId": "e6d4bd5", + "sourceCommitId": "e6d4bd5", "serviceCommitIds": [ - "63acb59" + "e6d4bd5" ], "matchesSourceCommit": true, "published": true, @@ -160,7 +160,7 @@ { "name": "hwlab-cloud-api", "serviceId": "hwlab-cloud-api", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5" } ] }, @@ -176,7 +176,7 @@ { "name": "hwlab-cloud-web", "serviceId": "hwlab-cloud-web", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5" } ] }, @@ -192,7 +192,7 @@ { "name": "hwlab-agent-mgr", "serviceId": "hwlab-agent-mgr", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:e6d4bd5" } ] }, @@ -208,7 +208,7 @@ { "name": "hwlab-agent-worker", "serviceId": "hwlab-agent-worker", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5" } ] }, @@ -224,7 +224,7 @@ { "name": "hwlab-gateway", "serviceId": "hwlab-gateway", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-gateway:e6d4bd5" } ] }, @@ -240,7 +240,7 @@ { "name": "hwlab-gateway-simu", "serviceId": "hwlab-gateway-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5" } ] }, @@ -256,7 +256,7 @@ { "name": "hwlab-box-simu", "serviceId": "hwlab-box-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5" } ] }, @@ -272,7 +272,7 @@ { "name": "hwlab-patch-panel", "serviceId": "hwlab-patch-panel", - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:e6d4bd5" } ] }, @@ -288,7 +288,7 @@ { "name": "hwlab-router", "serviceId": "hwlab-router", - "image": "127.0.0.1:5000/hwlab/hwlab-router:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-router:e6d4bd5" } ] }, @@ -304,7 +304,7 @@ { "name": "hwlab-tunnel-client", "serviceId": "hwlab-tunnel-client", - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:e6d4bd5" } ] }, @@ -320,7 +320,7 @@ { "name": "hwlab-edge-proxy", "serviceId": "hwlab-edge-proxy", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5" } ] }, @@ -336,7 +336,7 @@ { "name": "hwlab-cli", "serviceId": "hwlab-cli", - "image": "127.0.0.1:5000/hwlab/hwlab-cli:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5" } ] }, @@ -352,7 +352,7 @@ { "name": "hwlab-agent-skills", "serviceId": "hwlab-agent-skills", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5" } ] } @@ -608,25 +608,28 @@ "desiredSuspended": true, "liveExists": true, "liveSuspended": true, - "oldImage": "127.0.0.1:5000/hwlab/hwlab-agent-worker:63acb59", - "newImage": "127.0.0.1:5000/hwlab/hwlab-agent-worker:63acb59", + "oldImage": "127.0.0.1:5000/hwlab/hwlab-agent-worker:b02ac5b", + "newImage": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5", "oldImages": [ { "name": "hwlab-agent-worker", "serviceId": "hwlab-agent-worker", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:b02ac5b" } ], "newImages": [ { "name": "hwlab-agent-worker", "serviceId": "hwlab-agent-worker", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5" } ], - "replace": false, - "result": "not_needed", - "reason": "Live suspended template Job already matches the desired image." + "replace": true, + "result": "replaced", + "reason": "Live suspended template Job was deleted and recreated by kubectl apply.", + "deleteCommand": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml 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", @@ -635,25 +638,28 @@ "desiredSuspended": true, "liveExists": true, "liveSuspended": true, - "oldImage": "127.0.0.1:5000/hwlab/hwlab-cli:63acb59", - "newImage": "127.0.0.1:5000/hwlab/hwlab-cli:63acb59", + "oldImage": "127.0.0.1:5000/hwlab/hwlab-cli:b02ac5b", + "newImage": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5", "oldImages": [ { "name": "hwlab-cli", "serviceId": "hwlab-cli", - "image": "127.0.0.1:5000/hwlab/hwlab-cli:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-cli:b02ac5b" } ], "newImages": [ { "name": "hwlab-cli", "serviceId": "hwlab-cli", - "image": "127.0.0.1:5000/hwlab/hwlab-cli:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5" } ], - "replace": false, - "result": "not_needed", - "reason": "Live suspended template Job already matches the desired image." + "replace": true, + "result": "replaced", + "reason": "Live suspended template Job was deleted and recreated by kubectl apply.", + "deleteCommand": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml 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": { @@ -685,13 +691,13 @@ "desiredReplacementKind": "StatefulSet", "liveExists": false, "oldImage": null, - "newImage": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:63acb59", + "newImage": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5", "oldImages": [], "newImages": [ { "name": "hwlab-gateway-simu", "serviceId": "hwlab-gateway-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5" } ], "cleanup": false, @@ -707,13 +713,13 @@ "desiredReplacementKind": "StatefulSet", "liveExists": false, "oldImage": null, - "newImage": "127.0.0.1:5000/hwlab/hwlab-box-simu:63acb59", + "newImage": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5", "oldImages": [], "newImages": [ { "name": "hwlab-box-simu", "serviceId": "hwlab-box-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:63acb59" + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5" } ], "cleanup": false, @@ -726,19 +732,19 @@ "namespace": "hwlab-dev", "status": "observed", "observationPhase": "after_apply", - "sourceCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "imageTag": "63acb59", - "digest": "sha256:3c6b1efb10644c7f3d44054f364013cb348b1204a1a6ffd33969f213da59227e", + "sourceCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:f43ac97da69212e3ff74cfed36a04d65f0cd9cc7b8cb48f0eaf6f1f19d7dd6da", "repositoryDigest": null, "publishState": "published", - "rolloutRevision": "34", - "liveImage": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", + "rolloutRevision": "41", + "liveImage": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", "imageMatchesDesired": true, "expectedRuntimeEnv": { - "HWLAB_COMMIT_ID": "63acb59", - "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "HWLAB_IMAGE_TAG": "63acb59" + "HWLAB_COMMIT_ID": "e6d4bd5", + "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "HWLAB_IMAGE_TAG": "e6d4bd5" }, "liveRuntimeEnv": { "status": "match", @@ -746,20 +752,20 @@ "fields": [ { "name": "HWLAB_COMMIT_ID", - "expected": "63acb59", - "actual": "63acb59", + "expected": "e6d4bd5", + "actual": "e6d4bd5", "status": "match" }, { "name": "HWLAB_IMAGE", - "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "actual": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", + "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "actual": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", "status": "match" }, { "name": "HWLAB_IMAGE_TAG", - "expected": "63acb59", - "actual": "63acb59", + "expected": "e6d4bd5", + "actual": "e6d4bd5", "status": "match" } ], @@ -767,80 +773,118 @@ }, "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" + "verificationCommand": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev rollout status deployment/hwlab-cloud-web --timeout=180s", + "readCommand": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev get deployment hwlab-cloud-web -o json", + "kubeconfig": "/etc/rancher/k3s/k3s.yaml", + "kubeconfigSource": "flag:--kubeconfig" }, "cloudWebRolloutBeforeApply": { "serviceId": "hwlab-cloud-web", "namespace": "hwlab-dev", "status": "observed", "observationPhase": "before_apply", - "sourceCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "imageTag": "63acb59", - "digest": "sha256:3c6b1efb10644c7f3d44054f364013cb348b1204a1a6ffd33969f213da59227e", + "sourceCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:f43ac97da69212e3ff74cfed36a04d65f0cd9cc7b8cb48f0eaf6f1f19d7dd6da", "repositoryDigest": null, "publishState": "published", - "rolloutRevision": "34", - "liveImage": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "imageMatchesDesired": true, + "rolloutRevision": "40", + "liveImage": "127.0.0.1:5000/hwlab/hwlab-cloud-web:b02ac5b", + "imageMatchesDesired": false, "expectedRuntimeEnv": { - "HWLAB_COMMIT_ID": "63acb59", - "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "HWLAB_IMAGE_TAG": "63acb59" + "HWLAB_COMMIT_ID": "e6d4bd5", + "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "HWLAB_IMAGE_TAG": "e6d4bd5" }, "liveRuntimeEnv": { - "status": "match", - "matchesDesired": true, + "status": "drift", + "matchesDesired": false, "fields": [ { "name": "HWLAB_COMMIT_ID", - "expected": "63acb59", - "actual": "63acb59", - "status": "match" + "expected": "e6d4bd5", + "actual": "b02ac5b", + "status": "drift" }, { "name": "HWLAB_IMAGE", - "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "actual": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "status": "match" + "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "actual": "127.0.0.1:5000/hwlab/hwlab-cloud-web:b02ac5b", + "status": "drift" }, { "name": "HWLAB_IMAGE_TAG", - "expected": "63acb59", - "actual": "63acb59", - "status": "match" + "expected": "e6d4bd5", + "actual": "b02ac5b", + "status": "drift" } ], - "drift": [] + "drift": [ + { + "name": "HWLAB_COMMIT_ID", + "expected": "e6d4bd5", + "actual": "b02ac5b", + "status": "drift" + }, + { + "name": "HWLAB_IMAGE", + "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "actual": "127.0.0.1:5000/hwlab/hwlab-cloud-web:b02ac5b", + "status": "drift" + }, + { + "name": "HWLAB_IMAGE_TAG", + "expected": "e6d4bd5", + "actual": "b02ac5b", + "status": "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" + "runtimeEnvMatchesDesired": false, + "runtimeEnvDrift": [ + { + "name": "HWLAB_COMMIT_ID", + "expected": "e6d4bd5", + "actual": "b02ac5b", + "status": "drift" + }, + { + "name": "HWLAB_IMAGE", + "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "actual": "127.0.0.1:5000/hwlab/hwlab-cloud-web:b02ac5b", + "status": "drift" + }, + { + "name": "HWLAB_IMAGE_TAG", + "expected": "e6d4bd5", + "actual": "b02ac5b", + "status": "drift" + } + ], + "verificationCommand": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev rollout status deployment/hwlab-cloud-web --timeout=180s", + "readCommand": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev get deployment hwlab-cloud-web -o json", + "kubeconfig": "/etc/rancher/k3s/k3s.yaml", + "kubeconfigSource": "flag:--kubeconfig" }, "cloudWebRolloutAfterApply": { "serviceId": "hwlab-cloud-web", "namespace": "hwlab-dev", "status": "observed", "observationPhase": "after_apply", - "sourceCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "imageTag": "63acb59", - "digest": "sha256:3c6b1efb10644c7f3d44054f364013cb348b1204a1a6ffd33969f213da59227e", + "sourceCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "imageTag": "e6d4bd5", + "digest": "sha256:f43ac97da69212e3ff74cfed36a04d65f0cd9cc7b8cb48f0eaf6f1f19d7dd6da", "repositoryDigest": null, "publishState": "published", - "rolloutRevision": "34", - "liveImage": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", + "rolloutRevision": "41", + "liveImage": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", "imageMatchesDesired": true, "expectedRuntimeEnv": { - "HWLAB_COMMIT_ID": "63acb59", - "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "HWLAB_IMAGE_TAG": "63acb59" + "HWLAB_COMMIT_ID": "e6d4bd5", + "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "HWLAB_IMAGE_TAG": "e6d4bd5" }, "liveRuntimeEnv": { "status": "match", @@ -848,20 +892,20 @@ "fields": [ { "name": "HWLAB_COMMIT_ID", - "expected": "63acb59", - "actual": "63acb59", + "expected": "e6d4bd5", + "actual": "e6d4bd5", "status": "match" }, { "name": "HWLAB_IMAGE", - "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "actual": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", + "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "actual": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", "status": "match" }, { "name": "HWLAB_IMAGE_TAG", - "expected": "63acb59", - "actual": "63acb59", + "expected": "e6d4bd5", + "actual": "e6d4bd5", "status": "match" } ], @@ -869,16 +913,18 @@ }, "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" + "verificationCommand": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev rollout status deployment/hwlab-cloud-web --timeout=180s", + "readCommand": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev get deployment hwlab-cloud-web -o json", + "kubeconfig": "/etc/rancher/k3s/k3s.yaml", + "kubeconfigSource": "flag:--kubeconfig" }, "codeAgentProvider": { "desiredState": { "contractVersion": "v1", "environment": "dev", - "provider": "openai-responses", + "provider": "codex-stdio", + "runtimeProvider": "openai-responses", + "backend": "hwlab-cloud-api/codex-mcp-stdio", "model": "gpt-5.5", "status": "pass", "ready": true, @@ -946,9 +992,9 @@ "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", + "status": "blocked", + "readCommand": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev get deployment hwlab-cloud-api -o json", + "kubeconfig": "/etc/rancher/k3s/k3s.yaml", "expectedSecretRef": "hwlab-code-agent-provider/openai-api-key", "expectedEgressTarget": "dev-egress-proxy", "secretValuesRead": false, @@ -956,9 +1002,11 @@ "valuesRedacted": true, "contractVersion": "v1", "environment": "dev", - "provider": "openai-responses", + "provider": "codex-stdio", + "runtimeProvider": "openai-responses", + "backend": "hwlab-cloud-api/codex-mcp-stdio", "model": "gpt-5.5", - "ready": true, + "ready": false, "requiredEnv": [ { "name": "HWLAB_CODE_AGENT_PROVIDER", @@ -986,7 +1034,13 @@ } ], "missingEnv": [], - "mismatchedEnv": [], + "mismatchedEnv": [ + { + "name": "HWLAB_CODE_AGENT_PROVIDER", + "expected": "codex-stdio", + "redacted": false + } + ], "secretRef": { "env": "OPENAI_API_KEY", "secretName": "hwlab-code-agent-provider", @@ -1013,8 +1067,8 @@ "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", + "readCommand": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev get deployment hwlab-cloud-api -o json", + "kubeconfig": "/etc/rancher/k3s/k3s.yaml", "expectedSecretRef": "hwlab-code-agent-provider/openai-api-key", "expectedEgressTarget": "dev-egress-proxy", "secretValuesRead": false, @@ -1022,7 +1076,9 @@ "valuesRedacted": true, "contractVersion": "v1", "environment": "dev", - "provider": "openai-responses", + "provider": "codex-stdio", + "runtimeProvider": "openai-responses", + "backend": "hwlab-cloud-api/codex-mcp-stdio", "model": "gpt-5.5", "ready": true, "requiredEnv": [ @@ -1082,8 +1138,8 @@ }, "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 unchanged\ndeployment.apps/hwlab-agent-skills 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-patch-panel unchanged\ndeployment.apps/hwlab-router unchanged\ndeployment.apps/hwlab-tunnel-client unchanged\nstatefulset.apps/hwlab-box-simu unchanged\nstatefulset.apps/hwlab-gateway-simu unchanged\njob.batch/hwlab-agent-worker-template unchanged\njob.batch/hwlab-cli-template unchanged", + "command": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml 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, @@ -1104,26 +1160,26 @@ "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" + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev get pods,services,configmaps,deployments,jobs -o wide", + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml 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" + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev rollout undo deployment/hwlab-cloud-api", + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev rollout undo deployment/hwlab-cloud-web", + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev rollout undo deployment/hwlab-agent-mgr", + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev rollout undo deployment/hwlab-gateway", + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev rollout undo deployment/hwlab-patch-panel", + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev rollout undo deployment/hwlab-router", + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev rollout undo deployment/hwlab-tunnel-client", + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev rollout undo deployment/hwlab-edge-proxy", + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml 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" + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev delete job hwlab-agent-worker-template --ignore-not-found", + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml 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", + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev rollout status deployment/hwlab-cloud-api --timeout=120s", "curl -fsS http://74.48.78.17:16667/health/live" ] }, @@ -1131,106 +1187,106 @@ "artifactEvidence": [ { "serviceId": "hwlab-cloud-api", - "deployCommitId": "63acb59", - "catalogCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:63acb59", - "digest": "sha256:79e9694d2d381ab96028e0705023b4e3c1cd3b7c71357a0ef5aefd66f53ee7f0", + "deployCommitId": "e6d4bd5", + "catalogCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", + "digest": "sha256:8a0677290ce3626d3589d1d22a943b49290e74451d75263cdbda3044a6ba105d", "publishState": "published" }, { "serviceId": "hwlab-cloud-web", - "deployCommitId": "63acb59", - "catalogCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "digest": "sha256:3c6b1efb10644c7f3d44054f364013cb348b1204a1a6ffd33969f213da59227e", + "deployCommitId": "e6d4bd5", + "catalogCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "digest": "sha256:f43ac97da69212e3ff74cfed36a04d65f0cd9cc7b8cb48f0eaf6f1f19d7dd6da", "publishState": "published" }, { "serviceId": "hwlab-agent-mgr", - "deployCommitId": "63acb59", - "catalogCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:63acb59", - "digest": "sha256:852b03d9d282e90454d5692dafa30cc34328ff8a097c509075a8bc6d5f1c6d80", + "deployCommitId": "e6d4bd5", + "catalogCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:e6d4bd5", + "digest": "sha256:f37e9b4dd6262ff4c30826fae1a0e01b184d0e57812c7876de73566263ff0c35", "publishState": "published" }, { "serviceId": "hwlab-agent-worker", - "deployCommitId": "63acb59", - "catalogCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:63acb59", - "digest": "sha256:2f5b8eb8d1a52849d056f412c5dde4bb075456d4fbebdc9169917092011d10e7", + "deployCommitId": "e6d4bd5", + "catalogCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5", + "digest": "sha256:afdc241c799fe53561b60a37199c73cfb612ea0381ecfba82e66eb08566a8336", "publishState": "published" }, { "serviceId": "hwlab-gateway", - "deployCommitId": "63acb59", - "catalogCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway:63acb59", - "digest": "sha256:14dea76f86b481a895b0f24b5165ef9fd4c0f790dd558b5b625900b46761ec15", + "deployCommitId": "e6d4bd5", + "catalogCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway:e6d4bd5", + "digest": "sha256:27303c093330bddf4c1eb8e3791dce6dbbe97aab28ff17c1faf761b05333cce0", "publishState": "published" }, { "serviceId": "hwlab-gateway-simu", - "deployCommitId": "63acb59", - "catalogCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:63acb59", - "digest": "sha256:0964a94db3efef9a697a4dff1692888e8079c7aeb93abe25aabb6e8ba394c9c8", + "deployCommitId": "e6d4bd5", + "catalogCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5", + "digest": "sha256:38c0372ec72e8f17b26f2fcf83d35718023a81c48529e459d83e36f8cc56ec3a", "publishState": "published" }, { "serviceId": "hwlab-box-simu", - "deployCommitId": "63acb59", - "catalogCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:63acb59", - "digest": "sha256:1628a2ebc0ad1638c39fd71e8437ba91d042d9497262001473ecc36a5d7adc96", + "deployCommitId": "e6d4bd5", + "catalogCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5", + "digest": "sha256:d551c22242fff6016f15672c4b8b06dbfc85da2c00ecfdd4e40486668b58a56f", "publishState": "published" }, { "serviceId": "hwlab-patch-panel", - "deployCommitId": "63acb59", - "catalogCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:63acb59", - "digest": "sha256:461f3e99f52f55e335b51d6048829c40c299568d0fff02cc4f5934bc8d3c962a", + "deployCommitId": "e6d4bd5", + "catalogCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:e6d4bd5", + "digest": "sha256:6c7f3600a71131c11b994a625fd6ced65ac3bb7f109f3c7f941513cbd1d2def5", "publishState": "published" }, { "serviceId": "hwlab-router", - "deployCommitId": "63acb59", - "catalogCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-router:63acb59", - "digest": "sha256:560ce04be9a54b82a31c77ab7a214719c998b8b320afc1cd47c1abaa97941024", + "deployCommitId": "e6d4bd5", + "catalogCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-router:e6d4bd5", + "digest": "sha256:8d9084f3d23e44d3ffe628e9d100ebbad260c857d06b1fbb5791ecd11bfc4d9f", "publishState": "published" }, { "serviceId": "hwlab-tunnel-client", - "deployCommitId": "63acb59", - "catalogCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:63acb59", - "digest": "sha256:657c8efdb35c4dbd0c87d4bbe201321aa857ad89a486ec30a2b8fdd379a41a6e", + "deployCommitId": "e6d4bd5", + "catalogCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:e6d4bd5", + "digest": "sha256:d6dff1383912ccfed1b1b91dc5ae8323e345f42f57145d7bda788e9941a4ca5a", "publishState": "published" }, { "serviceId": "hwlab-edge-proxy", - "deployCommitId": "63acb59", - "catalogCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:63acb59", - "digest": "sha256:beca30d9dfbac596cbf72ef49ef6162a708b1048dcfa1c9d741747ac1b858314", + "deployCommitId": "e6d4bd5", + "catalogCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5", + "digest": "sha256:6ce280c0fd17218dd5719d1118b5e72fd0c4107dc33951e09b35c374f7affacd", "publishState": "published" }, { "serviceId": "hwlab-cli", - "deployCommitId": "63acb59", - "catalogCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-cli:63acb59", - "digest": "sha256:53c5c1dc118c4f698407492b67a59aa1bb1374341907568dd17cf3a0e52ef97b", + "deployCommitId": "e6d4bd5", + "catalogCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5", + "digest": "sha256:09a015e727738cd188853af557ecd8ea4adfa8a2250692e7442549e9c80eae1f", "publishState": "published" }, { "serviceId": "hwlab-agent-skills", - "deployCommitId": "63acb59", - "catalogCommitId": "63acb59", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:63acb59", - "digest": "sha256:cf36771fa898fd240b28b093e0070cc16ecc7ee83207ec30413b6abf855d99b7", + "deployCommitId": "e6d4bd5", + "catalogCommitId": "e6d4bd5", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5", + "digest": "sha256:45602b9d09ef22095ab75bd95e2f310626bce61bc4e39a7205009fe9620c2d4f", "publishState": "published" } ], @@ -1387,79 +1443,79 @@ "images": [ { "serviceId": "hwlab-cloud-api", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:e6d4bd5", "kind": "Deployment", "name": "hwlab-cloud-api" }, { "serviceId": "hwlab-cloud-web", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", "kind": "Deployment", "name": "hwlab-cloud-web" }, { "serviceId": "hwlab-agent-mgr", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:e6d4bd5", "kind": "Deployment", "name": "hwlab-agent-mgr" }, { "serviceId": "hwlab-agent-worker", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:e6d4bd5", "kind": "Job", "name": "hwlab-agent-worker-template" }, { "serviceId": "hwlab-gateway", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway:e6d4bd5", "kind": "Deployment", "name": "hwlab-gateway" }, { "serviceId": "hwlab-gateway-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:e6d4bd5", "kind": "StatefulSet", "name": "hwlab-gateway-simu" }, { "serviceId": "hwlab-box-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:e6d4bd5", "kind": "StatefulSet", "name": "hwlab-box-simu" }, { "serviceId": "hwlab-patch-panel", - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:e6d4bd5", "kind": "Deployment", "name": "hwlab-patch-panel" }, { "serviceId": "hwlab-router", - "image": "127.0.0.1:5000/hwlab/hwlab-router:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-router:e6d4bd5", "kind": "Deployment", "name": "hwlab-router" }, { "serviceId": "hwlab-tunnel-client", - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:e6d4bd5", "kind": "Deployment", "name": "hwlab-tunnel-client" }, { "serviceId": "hwlab-edge-proxy", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:e6d4bd5", "kind": "Deployment", "name": "hwlab-edge-proxy" }, { "serviceId": "hwlab-cli", - "image": "127.0.0.1:5000/hwlab/hwlab-cli:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-cli:e6d4bd5", "kind": "Job", "name": "hwlab-cli-template" }, { "serviceId": "hwlab-agent-skills", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:63acb59", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:e6d4bd5", "kind": "Deployment", "name": "hwlab-agent-skills" } @@ -1471,29 +1527,29 @@ "name": "hwlab-cloud-web", "container": "hwlab-cloud-web", "expected": { - "HWLAB_COMMIT_ID": "63acb59", - "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "HWLAB_IMAGE_TAG": "63acb59" + "HWLAB_COMMIT_ID": "e6d4bd5", + "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "HWLAB_IMAGE_TAG": "e6d4bd5" }, "status": "match", "matchesDesired": true, "fields": [ { "name": "HWLAB_COMMIT_ID", - "expected": "63acb59", - "actual": "63acb59", + "expected": "e6d4bd5", + "actual": "e6d4bd5", "status": "match" }, { "name": "HWLAB_IMAGE", - "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", - "actual": "127.0.0.1:5000/hwlab/hwlab-cloud-web:63acb59", + "expected": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", + "actual": "127.0.0.1:5000/hwlab/hwlab-cloud-web:e6d4bd5", "status": "match" }, { "name": "HWLAB_IMAGE_TAG", - "expected": "63acb59", - "actual": "63acb59", + "expected": "e6d4bd5", + "actual": "e6d4bd5", "status": "match" } ], @@ -1504,20 +1560,20 @@ "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", + "kubeconfig": "/etc/rancher/k3s/k3s.yaml", + "kubeconfigSource": "flag:--kubeconfig", + "commandPrefix": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl", + "readCommand": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml 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-57d8bc9f89-5kv4p", + "name": "hwlab-agent-mgr-99d44c747-mfqzj", "phase": "Running" }, { "kind": "Pod", - "name": "hwlab-agent-skills-8687f446fd-lqtgt", + "name": "hwlab-agent-skills-7f99b49598-lqjdd", "phase": "Running" }, { @@ -1532,22 +1588,22 @@ }, { "kind": "Pod", - "name": "hwlab-cloud-api-668549d448-gnct8", + "name": "hwlab-cloud-api-57cfcfc587-kdvg9", "phase": "Running" }, { "kind": "Pod", - "name": "hwlab-cloud-web-fc896cddb-gwh58", + "name": "hwlab-cloud-web-67c684947b-lkvtj", "phase": "Running" }, { "kind": "Pod", - "name": "hwlab-edge-proxy-5ff8d747d-rgdjm", + "name": "hwlab-edge-proxy-85db66bcc9-mv8pv", "phase": "Running" }, { "kind": "Pod", - "name": "hwlab-frpc-59f57d479c-wm5l2", + "name": "hwlab-frpc-59f57d479c-tgjhl", "phase": "Running" }, { @@ -1562,17 +1618,27 @@ }, { "kind": "Pod", - "name": "hwlab-patch-panel-79c59cd5b7-dl4sz", + "name": "hwlab-patch-panel-7cd9d9d597-kwnm6", "phase": "Running" }, { "kind": "Pod", - "name": "hwlab-router-7d47d6dfc4-gzcw9", + "name": "hwlab-router-65dc5579fb-d2r8l", "phase": "Running" }, { "kind": "Pod", - "name": "hwlab-tunnel-client-64779fc4bd-pz8lz", + "name": "hwlab-runtime-migrate-35e3d897-kfr4m", + "phase": "Succeeded" + }, + { + "kind": "Pod", + "name": "hwlab-runtime-provision-35e3d897-jk2rc", + "phase": "Succeeded" + }, + { + "kind": "Pod", + "name": "hwlab-tunnel-client-54d968477d-mf2qk", "phase": "Running" }, { @@ -1716,6 +1782,14 @@ { "kind": "Job", "name": "hwlab-cli-template" + }, + { + "kind": "Job", + "name": "hwlab-runtime-migrate-35e3d897" + }, + { + "kind": "Job", + "name": "hwlab-runtime-provision-35e3d897" } ] }, @@ -1723,7 +1797,7 @@ "status": "pass", "url": "http://74.48.78.17:16667/health/live", "httpStatus": 200, - "body": "{\"serviceId\":\"hwlab-cloud-api\",\"environment\":\"dev\",\"status\":\"ok\",\"ready\":true,\"readiness\":{\"contractVersion\":\"v3\",\"ready\":true,\"status\":\"ok\",\"blockerCodes\":[],\"blockers\":[],\"components\":{\"db\":\"ready\",\"codeAgent\":\"ready\",\"runtime\":\"ready\"},\"durability\":{\"status\":\"ready\",\"ready\":true,\"adapter\":\"postgres\",\"durable\":true,\"durableRequested\":true,\"durableCapable\":true,\"runtimeStatus\":\"ready\",\"runtimeReady\":true,\"liveRuntimeEvidence\":true,\"dbLiveEvidenceObserved\":true,\"dbLiveEvidenceIsDurabilityEvidenc" + "body": "{\"serviceId\":\"hwlab-cloud-api\",\"environment\":\"dev\",\"status\":\"degraded\",\"ready\":false,\"revision\":\"b02ac5becad13aeeab0d5cb7d8f01300bccb78c2\",\"readiness\":{\"contractVersion\":\"v3\",\"ready\":false,\"status\":\"degraded\",\"blockerCodes\":[\"stdio_protocol_not_wired\"],\"blockers\":[{\"code\":\"stdio_protocol_not_wired\",\"type\":\"agent_blocker\",\"scope\":\"code-agent-long-lived-session\",\"status\":\"open\",\"sourceIssue\":\"pikasTech/HWLAB#275\",\"summary\":\"普通聊天可走 OpenAI Responses fallback,pwd/skills 走受控只读 runner,M3 IO 走 Skill CLI" } }, "blockers": [], diff --git a/scripts/validate-dev-gate-report.mjs b/scripts/validate-dev-gate-report.mjs index bade1f85..b2bc2be9 100644 --- a/scripts/validate-dev-gate-report.mjs +++ b/scripts/validate-dev-gate-report.mjs @@ -1228,7 +1228,7 @@ function assertDevCdApplyReport(report, label) { for (const field of ["id", "phase", "status", "command", "code", "startedAt", "finishedAt"]) { assert.ok(Object.hasOwn(step, field), `${stepLabel} missing ${field}`); } - assert.ok(["publishing", "applying"].includes(step.phase), `${stepLabel}.phase`); + assert.ok(["publishing", "applying", "verifying"].includes(step.phase), `${stepLabel}.phase`); assert.ok(["pass", "blocked"].includes(step.status), `${stepLabel}.status`); assertString(step.command, `${stepLabel}.command`); }