{ "catalogVersion": "v1", "kind": "hwlab-artifact-catalog", "environment": "dev", "profile": "dev", "namespace": "hwlab-dev", "endpoint": "http://74.48.78.17:16667", "commitId": "390dcfb", "artifactState": "published", "publish": { "ciPublished": true, "registryVerified": true, "provenance": "ci-artifact:ci-publish-20260524T140312-3dec25", "note": "Digest fields were copied from a successful DEV artifact publish report for this source commit." }, "healthContract": { "method": "GET", "path": "/health/live", "responseFormat": "json", "requiredFields": [ "serviceId", "environment", "status" ] }, "allowedProfiles": [ "dev" ], "forbiddenProfiles": [ "prod" ], "forbiddenItems": [ { "id": "prod-deploy", "reason": "MVP acceptance is DEV-only." }, { "id": "prod-profile-enabled", "reason": "PROD profile may only exist as a disabled placeholder." }, { "id": "prod-namespace", "reason": "The catalog must not target hwlab-prod." }, { "id": "real-ci-publish-claim", "reason": "The skeleton catalog must not claim real image publish or registry verification." }, { "id": "real-dev-deploy", "reason": "This contract does not authorize a real DEV deployment." }, { "id": "secret-material", "reason": "Validation must not read or require secrets or tokens." }, { "id": "unidesk-runtime-substitute", "reason": "UniDesk backend, provider-gateway, and microservice proxy are not HWLAB runtime substitutes." }, { "id": "force-push", "reason": "Mainline updates must not use force push." } ], "services": [ { "serviceId": "hwlab-cloud-api", "commitId": "390dcfb", "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:390dcfb", "imageTag": "390dcfb", "digest": "sha256:276d9849e7212e7f2b0f6334cbaf14a8356809549e5ff59dc9a48b0b8946ef0a", "publishState": "published", "profile": "dev", "namespace": "hwlab-dev", "healthPath": "/health/live", "sourceState": "source-present", "publishEnabled": true, "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, "buildCreatedAt": "2026-05-24T14:03:14.969Z", "buildSource": "pikasTech/HWLAB@390dcfb250655052ccedde529fc6e282667482af" }, { "serviceId": "hwlab-cloud-web", "commitId": "390dcfb", "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:390dcfb", "imageTag": "390dcfb", "digest": "sha256:936c07674b08ae0f97c00464354c615808727821cf8b7233915e6ca54ecab625", "publishState": "published", "profile": "dev", "namespace": "hwlab-dev", "healthPath": "/health/live", "sourceState": "source-present", "publishEnabled": true, "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, "buildCreatedAt": "2026-05-24T14:03:14.969Z", "buildSource": "pikasTech/HWLAB@390dcfb250655052ccedde529fc6e282667482af" }, { "serviceId": "hwlab-agent-mgr", "commitId": "390dcfb", "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:390dcfb", "imageTag": "390dcfb", "digest": "sha256:de68f09850ed88f843c01028812c9c4312de5bdbaab31d501418eae73086cfe4", "publishState": "published", "profile": "dev", "namespace": "hwlab-dev", "healthPath": "/health/live", "sourceState": "source-present", "publishEnabled": true, "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, "buildCreatedAt": "2026-05-24T14:03:14.969Z", "buildSource": "pikasTech/HWLAB@390dcfb250655052ccedde529fc6e282667482af" }, { "serviceId": "hwlab-agent-worker", "commitId": "390dcfb", "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:390dcfb", "imageTag": "390dcfb", "digest": "sha256:e44d16540547a69e8df699d518a27aaf8a57779546102f4985f0106203350126", "publishState": "published", "profile": "dev", "namespace": "hwlab-dev", "healthPath": "/health/live", "sourceState": "source-present", "publishEnabled": true, "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, "buildCreatedAt": "2026-05-24T14:03:14.969Z", "buildSource": "pikasTech/HWLAB@390dcfb250655052ccedde529fc6e282667482af" }, { "serviceId": "hwlab-gateway", "commitId": "390dcfb", "image": "127.0.0.1:5000/hwlab/hwlab-gateway:390dcfb", "imageTag": "390dcfb", "digest": "sha256:06c29890a2fd8430e91f67f4485767c67c3a6ffe2bd4e496384e1bb9a47f4398", "publishState": "published", "profile": "dev", "namespace": "hwlab-dev", "healthPath": "/health/live", "sourceState": "source-present", "publishEnabled": true, "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, "buildCreatedAt": "2026-05-24T14:03:14.969Z", "buildSource": "pikasTech/HWLAB@390dcfb250655052ccedde529fc6e282667482af" }, { "serviceId": "hwlab-gateway-simu", "commitId": "390dcfb", "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:390dcfb", "imageTag": "390dcfb", "digest": "sha256:c65eb620951d6a3ceb93e1f8aa7f3f979b3f61f8ebd4ca1dc0f6dd68df692a71", "publishState": "published", "profile": "dev", "namespace": "hwlab-dev", "healthPath": "/health/live", "sourceState": "source-present", "publishEnabled": true, "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, "buildCreatedAt": "2026-05-24T14:03:14.969Z", "buildSource": "pikasTech/HWLAB@390dcfb250655052ccedde529fc6e282667482af" }, { "serviceId": "hwlab-box-simu", "commitId": "390dcfb", "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:390dcfb", "imageTag": "390dcfb", "digest": "sha256:536b5ff81b7866a0ba140036982a5ff21eb2b8b20a8e5b862f34d1ad1303e633", "publishState": "published", "profile": "dev", "namespace": "hwlab-dev", "healthPath": "/health/live", "sourceState": "source-present", "publishEnabled": true, "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, "buildCreatedAt": "2026-05-24T14:03:14.969Z", "buildSource": "pikasTech/HWLAB@390dcfb250655052ccedde529fc6e282667482af" }, { "serviceId": "hwlab-patch-panel", "commitId": "390dcfb", "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:390dcfb", "imageTag": "390dcfb", "digest": "sha256:818dc5874b8a31fe6df19cfe2c7aa78acd6466cd93309af209e2fc4850254de0", "publishState": "published", "profile": "dev", "namespace": "hwlab-dev", "healthPath": "/health/live", "sourceState": "source-present", "publishEnabled": true, "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, "buildCreatedAt": "2026-05-24T14:03:14.969Z", "buildSource": "pikasTech/HWLAB@390dcfb250655052ccedde529fc6e282667482af" }, { "serviceId": "hwlab-router", "commitId": "390dcfb", "image": "127.0.0.1:5000/hwlab/hwlab-router:390dcfb", "imageTag": "390dcfb", "digest": "sha256:bfee2b5c2b880d45334648e4f0020e76a2fe6a4ab5fe9f58b097df6058720eb2", "publishState": "published", "profile": "dev", "namespace": "hwlab-dev", "healthPath": "/health/live", "sourceState": "source-present", "publishEnabled": true, "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, "buildCreatedAt": "2026-05-24T14:03:14.969Z", "buildSource": "pikasTech/HWLAB@390dcfb250655052ccedde529fc6e282667482af" }, { "serviceId": "hwlab-tunnel-client", "commitId": "390dcfb", "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:390dcfb", "imageTag": "390dcfb", "digest": "sha256:51c19eb1f8a24699a3d12b129c5626e66cbbd5ad42b71e35bafe95ab46d0c45a", "publishState": "published", "profile": "dev", "namespace": "hwlab-dev", "healthPath": "/health/live", "sourceState": "source-present", "publishEnabled": true, "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, "buildCreatedAt": "2026-05-24T14:03:14.969Z", "buildSource": "pikasTech/HWLAB@390dcfb250655052ccedde529fc6e282667482af" }, { "serviceId": "hwlab-edge-proxy", "commitId": "390dcfb", "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:390dcfb", "imageTag": "390dcfb", "digest": "sha256:800cfa51a87de6f2eb1c3addd944090e27c9c67ffe07413aa87c062c29194885", "publishState": "published", "profile": "dev", "namespace": "hwlab-dev", "healthPath": "/health/live", "sourceState": "source-present", "publishEnabled": true, "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, "buildCreatedAt": "2026-05-24T14:03:14.969Z", "buildSource": "pikasTech/HWLAB@390dcfb250655052ccedde529fc6e282667482af" }, { "serviceId": "hwlab-cli", "commitId": "390dcfb", "image": "127.0.0.1:5000/hwlab/hwlab-cli:390dcfb", "imageTag": "390dcfb", "digest": "sha256:8d93b5c910827db12b979ff222471084ca50829dbf2ca3b1da8149c81ffbbbcc", "publishState": "published", "profile": "dev", "namespace": "hwlab-dev", "healthPath": "/health/live", "sourceState": "source-present", "publishEnabled": true, "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, "buildCreatedAt": "2026-05-24T14:03:14.969Z", "buildSource": "pikasTech/HWLAB@390dcfb250655052ccedde529fc6e282667482af" }, { "serviceId": "hwlab-agent-skills", "commitId": "390dcfb", "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:390dcfb", "imageTag": "390dcfb", "digest": "sha256:f199a956c220fdc6354c497effda01c348a44ace75ab83c658917204adc3f5bd", "publishState": "published", "profile": "dev", "namespace": "hwlab-dev", "healthPath": "/health/live", "sourceState": "source-present", "publishEnabled": true, "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, "buildCreatedAt": "2026-05-24T14:03:14.969Z", "buildSource": "pikasTech/HWLAB@390dcfb250655052ccedde529fc6e282667482af" } ], "serviceInventory": { "version": "v2", "serviceCount": 13, "requiredServiceCount": 13, "disabledServiceCount": 0, "requiredServiceIds": [ "hwlab-cloud-api", "hwlab-cloud-web", "hwlab-agent-mgr", "hwlab-agent-worker", "hwlab-gateway", "hwlab-gateway-simu", "hwlab-box-simu", "hwlab-patch-panel", "hwlab-router", "hwlab-tunnel-client", "hwlab-edge-proxy", "hwlab-cli", "hwlab-agent-skills" ], "disabledServiceIds": [], "services": [ { "serviceId": "hwlab-cloud-api", "publishEnabled": true, "artifactRequired": true, "artifactScope": "required", "runtimeKind": "node-command", "implementationState": "repo-entrypoint", "sourceState": "source-present", "entrypoint": "cmd/hwlab-cloud-api/main.mjs", "disabledReason": null }, { "serviceId": "hwlab-cloud-web", "publishEnabled": true, "artifactRequired": true, "artifactScope": "required", "runtimeKind": "cloud-web", "implementationState": "static-web-wrapper", "sourceState": "source-present", "entrypoint": "web/hwlab-cloud-web/index.html", "disabledReason": null }, { "serviceId": "hwlab-agent-mgr", "publishEnabled": true, "artifactRequired": true, "artifactScope": "required", "runtimeKind": "node-command", "implementationState": "repo-entrypoint", "sourceState": "source-present", "entrypoint": "cmd/hwlab-agent-mgr/main.mjs", "disabledReason": null }, { "serviceId": "hwlab-agent-worker", "publishEnabled": true, "artifactRequired": true, "artifactScope": "required", "runtimeKind": "node-command", "implementationState": "repo-entrypoint", "sourceState": "source-present", "entrypoint": "cmd/hwlab-agent-worker/main.mjs", "disabledReason": null }, { "serviceId": "hwlab-gateway", "publishEnabled": true, "artifactRequired": true, "artifactScope": "required", "runtimeKind": "node-command", "implementationState": "repo-entrypoint", "sourceState": "source-present", "entrypoint": "cmd/hwlab-gateway/main.mjs", "disabledReason": null }, { "serviceId": "hwlab-gateway-simu", "publishEnabled": true, "artifactRequired": true, "artifactScope": "required", "runtimeKind": "node-command", "implementationState": "repo-entrypoint", "sourceState": "source-present", "entrypoint": "cmd/hwlab-gateway-simu/main.mjs", "disabledReason": null }, { "serviceId": "hwlab-box-simu", "publishEnabled": true, "artifactRequired": true, "artifactScope": "required", "runtimeKind": "node-command", "implementationState": "repo-entrypoint", "sourceState": "source-present", "entrypoint": "cmd/hwlab-box-simu/main.mjs", "disabledReason": null }, { "serviceId": "hwlab-patch-panel", "publishEnabled": true, "artifactRequired": true, "artifactScope": "required", "runtimeKind": "node-command", "implementationState": "repo-entrypoint", "sourceState": "source-present", "entrypoint": "cmd/hwlab-patch-panel/main.mjs", "disabledReason": null }, { "serviceId": "hwlab-router", "publishEnabled": true, "artifactRequired": true, "artifactScope": "required", "runtimeKind": "node-command", "implementationState": "repo-entrypoint", "sourceState": "source-present", "entrypoint": "cmd/hwlab-router/main.mjs", "disabledReason": null }, { "serviceId": "hwlab-tunnel-client", "publishEnabled": true, "artifactRequired": true, "artifactScope": "required", "runtimeKind": "node-command", "implementationState": "repo-entrypoint", "sourceState": "source-present", "entrypoint": "cmd/hwlab-tunnel-client/main.mjs", "disabledReason": null }, { "serviceId": "hwlab-edge-proxy", "publishEnabled": true, "artifactRequired": true, "artifactScope": "required", "runtimeKind": "node-command", "implementationState": "repo-entrypoint", "sourceState": "source-present", "entrypoint": "cmd/hwlab-edge-proxy/main.mjs", "disabledReason": null }, { "serviceId": "hwlab-cli", "publishEnabled": true, "artifactRequired": true, "artifactScope": "required", "runtimeKind": "cli", "implementationState": "repo-entrypoint", "sourceState": "source-present", "entrypoint": "tools/hwlab-cli/bin/hwlab-cli.mjs", "disabledReason": null }, { "serviceId": "hwlab-agent-skills", "publishEnabled": true, "artifactRequired": true, "artifactScope": "required", "runtimeKind": "skills-bundle", "implementationState": "repo-bundle", "sourceState": "source-present", "entrypoint": "skills/hwlab-agent-runtime/SKILL.md", "disabledReason": null } ] } }