From 5d8a63a08c9853044b433c2d416b48ce164ee1ea Mon Sep 17 00:00:00 2001 From: Code Queue Review Date: Fri, 22 May 2026 17:02:15 +0000 Subject: [PATCH] docs: refresh latest-main blocked rollout reports --- .../dev-gate/dev-m5-gate-aggregator-v2.json | 100 ++- reports/dev-gate/dev-m5-gate-aggregator-v2.md | 18 +- reports/dev-gate/dev-preflight-report.json | 717 +++++++++++------- 3 files changed, 512 insertions(+), 323 deletions(-) diff --git a/reports/dev-gate/dev-m5-gate-aggregator-v2.json b/reports/dev-gate/dev-m5-gate-aggregator-v2.json index da93bfd5..11a07293 100644 --- a/reports/dev-gate/dev-m5-gate-aggregator-v2.json +++ b/reports/dev-gate/dev-m5-gate-aggregator-v2.json @@ -20,8 +20,8 @@ "pikasTech/HWLAB#46", "pikasTech/HWLAB#64" ], - "generatedAt": "2026-05-22T13:44:40.940Z", - "generatedFromCommit": "c7de4745f491", + "generatedAt": "2026-05-22T16:59:52.864Z", + "generatedFromCommit": "f64182b54fe6", "environment": "dev", "endpoint": "http://74.48.78.17:16667", "frontendEndpoint": "http://74.48.78.17:16666", @@ -68,7 +68,7 @@ "taskId": "dev-gate-preflight", "lifecycleState": "active", "status": "blocked", - "commitId": "8e89409dda5d" + "commitId": "f64182b54fe6" }, "devDeploy": { "path": "reports/dev-gate/dev-deploy-report.json", @@ -92,7 +92,7 @@ "taskId": "dev-edge-health", "lifecycleState": "active", "status": "blocked", - "commitId": "86d769525caf" + "commitId": "c7de4745f491" }, "devM2Smoke": { "path": "reports/dev-gate/dev-m2-deploy-smoke-active.json", @@ -188,7 +188,7 @@ "id": "artifact-publish-digests", "status": "blocked", "evidenceLevel": "BLOCKED", - "summary": "artifactState=published, ciPublished=true, registryVerified=true, sha256=13, not_published=0, targetCovered=false" + "summary": "artifactState=contract-skeleton, ciPublished=false, registryVerified=false, sha256=0, not_published=13, targetCovered=false" }, { "id": "d601-k3s-observability", @@ -319,9 +319,9 @@ "label": "artifact/desired-state source", "status": "blocked", "evidenceLevel": "BLOCKED", - "summary": "artifact targetCovered=false; artifactSource=7e29522b65c8; target=8e89409dda5d; desiredApplyMode=dry-run; mutationAttempted=false.", + "summary": "artifact targetCovered=false; artifactSource=7e29522b65c8; target=f64182b54fe6; desiredApplyMode=dry-run; mutationAttempted=false.", "evidence": [ - "artifactState=published", + "artifactState=contract-skeleton", "sourceStates=13 source-present, 0 intentionally-disabled", "desiredState=ready dry-run-only" ], @@ -456,7 +456,7 @@ "highestVisibleLevel": "DEV-LIVE", "liveEvidence": "pass", "evidenceCount": 7, - "blockerCount": 6, + "blockerCount": 7, "summary": "deploy/runtime readiness is blocked before live DEV; highest visible level is DEV-LIVE; status is blocked." }, { @@ -483,7 +483,7 @@ "highestVisibleLevel": "DRY-RUN", "liveEvidence": "missing_or_blocked", "evidenceCount": 2, - "blockerCount": 13, + "blockerCount": 15, "summary": "dry-run is green but live MVP gate is blocked; highest visible level is DRY-RUN; status is blocked." } ], @@ -556,7 +556,7 @@ "issue": "pikasTech/HWLAB#34", "taskId": "dev-gate-preflight", "reportPath": "reports/dev-gate/dev-preflight-report.json", - "commitId": "8e89409dda5d", + "commitId": "f64182b54fe6", "lifecycleState": "active", "level": "SOURCE", "status": "pass", @@ -572,8 +572,8 @@ ], "evidence": [ "source-contract-static=pass", - "artifact catalog state=published", - "catalog commit=7e29522" + "artifact catalog state=contract-skeleton", + "catalog commit=c7de474" ], "summary": "Deploy manifests, FRP/master-edge contracts, and safety boundary are source-readable and scoped to hwlab-dev." }, @@ -657,7 +657,7 @@ "issue": "pikasTech/HWLAB#36", "taskId": "dev-edge-health", "reportPath": "reports/dev-gate/dev-edge-health.json", - "commitId": "86d769525caf", + "commitId": "c7de4745f491", "lifecycleState": "active", "level": "DEV-LIVE", "status": "blocker", @@ -667,6 +667,7 @@ "node scripts/validate-dev-gate-report.mjs", "node --check scripts/dev-edge-health-smoke.mjs", "node --check scripts/src/dev-edge-health-smoke-lib.mjs", + "node --test scripts/src/dev-edge-health-smoke-lib.test.mjs", "node scripts/dev-edge-health-smoke.mjs --live --write-report" ], "evidence": [ @@ -1059,6 +1060,16 @@ "reportPath": "reports/dev-gate/dev-mvp-gate-report.json", "summary": "Public DEV route/frp is reachable on 16666/16667, but live MVP remains blocked by DB live readiness and the M3 hardware loop topology; no historical 6667 failure is counted as active evidence." }, + { + "priority": "P1", + "order": 3, + "type": "runtime_blocker", + "scope": "artifact-catalog", + "sourceIssue": "pikasTech/HWLAB#34", + "source": "reports/dev-gate/dev-preflight-report.json", + "summary": "deploy/artifact-catalog.dev.json does not prove published artifacts for origin/main f64182b; ciPublished=false, registryVerified=false, not_published=13.", + "nextTask": "Run the DEV artifact publish workflow, then record only real sha256 digests with `node scripts/refresh-artifact-catalog.mjs --target-ref origin/main --publish-report reports/dev-gate/dev-artifacts.json`; if publish is still blocked, keep not_published via `node scripts/refresh-artifact-catalog.mjs --target-ref origin/main --blocked`." + }, { "priority": "P1", "order": 3, @@ -1066,7 +1077,7 @@ "scope": "artifact-source-commit", "sourceIssue": "pikasTech/HWLAB#34", "source": "reports/dev-gate/dev-preflight-report.json", - "summary": "source commit origin/main 8e89409 is not covered by artifact source 7e29522; target changes since the artifact source touch artifact build inputs.", + "summary": "source commit origin/main f64182b is not covered by artifact source 7e29522; target changes since the artifact source touch artifact build inputs.", "nextTask": "Refresh without fake digests using `node scripts/refresh-artifact-catalog.mjs --target-ref origin/main --blocked`, or after a successful publish run `node scripts/refresh-artifact-catalog.mjs --target-ref origin/main --publish-report reports/dev-gate/dev-artifacts.json`." }, { @@ -1076,7 +1087,7 @@ "scope": "dev-artifact-publish", "sourceIssue": "pikasTech/HWLAB#34", "source": "reports/dev-gate/dev-preflight-report.json", - "summary": "reports/dev-gate/dev-artifacts.json does not prove all required HWLAB service artifacts for origin/main 8e89409; current status is published with 13/13 required services published and source states resolved: 13 source-present, 0 intentionally-disabled.", + "summary": "reports/dev-gate/dev-artifacts.json does not prove all required HWLAB service artifacts for origin/main f64182b; current status is published with 13/13 required services published and source states resolved: 13 source-present, 0 intentionally-disabled.", "nextTask": "Complete DEV artifact publishing for every enabled required HWLAB service at the artifact source commit, or prove the target commit has no artifact build input changes; keep disabled services marked not_published with reasons." }, { @@ -1096,7 +1107,7 @@ "scope": "cloud-api-db", "sourceIssue": "pikasTech/HWLAB#36", "source": "reports/dev-gate/dev-edge-health.json", - "summary": "cloud-api DB env is injected, but runtime health has not attempted a live DB connection" + "summary": "DB endpoint DNS resolution failed from the cloud-api runtime" }, { "priority": "P1", @@ -1105,7 +1116,7 @@ "scope": "cloud-api-db", "sourceIssue": "pikasTech/HWLAB#34", "source": "reports/dev-gate/dev-preflight-report.json", - "summary": "cloud-api DB env is injected, but runtime health has not attempted a live DB connection", + "summary": "DB endpoint DNS resolution failed from the cloud-api runtime", "nextTask": "Deploy cloud-api DB runtime readiness probe and/or repair DEV DB connectivity, then rerun the read-only health smoke without reading or printing the DB secret value." }, { @@ -1172,6 +1183,15 @@ "source": "reports/dev-gate/dev-mvp-gate-report.json", "summary": "Live M3 smoke reached DEV simulators, but patch-panel active DO1 -> DI1 connection is missing." }, + { + "priority": "P3", + "order": 99, + "type": "agent_blocker", + "scope": "code-agent-provider-secret", + "sourceIssue": "pikasTech/HWLAB#36", + "source": "reports/dev-gate/dev-edge-health.json", + "summary": "Code Agent provider Secret hwlab-code-agent-provider/openai-api-key is not present as key-presence evidence; #143 real provider-backed chat remains blocked" + }, { "priority": "P3", "order": 99, @@ -1193,6 +1213,24 @@ ] }, "blockers": [ + { + "id": "dev-gate-preflight:artifact-catalog", + "priority": "P1", + "type": "runtime_blocker", + "scope": "artifact-catalog", + "status": "open", + "source": "reports/dev-gate/dev-preflight-report.json", + "sourceIssue": "pikasTech/HWLAB#34", + "summary": "deploy/artifact-catalog.dev.json does not prove published artifacts for origin/main f64182b; ciPublished=false, registryVerified=false, not_published=13.", + "nextTask": "Run the DEV artifact publish workflow, then record only real sha256 digests with `node scripts/refresh-artifact-catalog.mjs --target-ref origin/main --publish-report reports/dev-gate/dev-artifacts.json`; if publish is still blocked, keep not_published via `node scripts/refresh-artifact-catalog.mjs --target-ref origin/main --blocked`.", + "unblockOrder": 3, + "unblocks": [ + "pikasTech/HWLAB#35", + "pikasTech/HWLAB#33", + "pikasTech/HWLAB#39" + ], + "rationale": "The gate cannot promote deploy or runtime observations without immutable image provenance and digests." + }, { "id": "dev-gate-preflight:artifact-source-commit", "priority": "P1", @@ -1201,7 +1239,7 @@ "status": "open", "source": "reports/dev-gate/dev-preflight-report.json", "sourceIssue": "pikasTech/HWLAB#34", - "summary": "source commit origin/main 8e89409 is not covered by artifact source 7e29522; target changes since the artifact source touch artifact build inputs.", + "summary": "source commit origin/main f64182b is not covered by artifact source 7e29522; target changes since the artifact source touch artifact build inputs.", "nextTask": "Refresh without fake digests using `node scripts/refresh-artifact-catalog.mjs --target-ref origin/main --blocked`, or after a successful publish run `node scripts/refresh-artifact-catalog.mjs --target-ref origin/main --publish-report reports/dev-gate/dev-artifacts.json`.", "unblockOrder": 3, "unblocks": [ @@ -1219,7 +1257,7 @@ "status": "open", "source": "reports/dev-gate/dev-preflight-report.json", "sourceIssue": "pikasTech/HWLAB#34", - "summary": "reports/dev-gate/dev-artifacts.json does not prove all required HWLAB service artifacts for origin/main 8e89409; current status is published with 13/13 required services published and source states resolved: 13 source-present, 0 intentionally-disabled.", + "summary": "reports/dev-gate/dev-artifacts.json does not prove all required HWLAB service artifacts for origin/main f64182b; current status is published with 13/13 required services published and source states resolved: 13 source-present, 0 intentionally-disabled.", "nextTask": "Complete DEV artifact publishing for every enabled required HWLAB service at the artifact source commit, or prove the target commit has no artifact build input changes; keep disabled services marked not_published with reasons.", "unblockOrder": 3, "unblocks": [ @@ -1258,7 +1296,7 @@ "status": "open", "source": "reports/dev-gate/dev-edge-health.json", "sourceIssue": "pikasTech/HWLAB#36", - "summary": "cloud-api DB env is injected, but runtime health has not attempted a live DB connection", + "summary": "DB endpoint DNS resolution failed from the cloud-api runtime", "unblockOrder": 5, "unblocks": [ "pikasTech/HWLAB#34", @@ -1275,7 +1313,7 @@ "status": "open", "source": "reports/dev-gate/dev-preflight-report.json", "sourceIssue": "pikasTech/HWLAB#34", - "summary": "cloud-api DB env is injected, but runtime health has not attempted a live DB connection", + "summary": "DB endpoint DNS resolution failed from the cloud-api runtime", "nextTask": "Deploy cloud-api DB runtime readiness probe and/or repair DEV DB connectivity, then rerun the read-only health smoke without reading or printing the DB secret value.", "unblockOrder": 5, "unblocks": [ @@ -1403,6 +1441,21 @@ ], "rationale": "M3 remains blocked until the real DEV hardware trusted loop proves DO1 -> patch-panel -> DI1 with operation, trace, audit, and evidence identifiers." }, + { + "id": "dev-edge-health:code-agent-provider-secret", + "priority": "P3", + "type": "agent_blocker", + "scope": "code-agent-provider-secret", + "status": "open", + "source": "reports/dev-gate/dev-edge-health.json", + "sourceIssue": "pikasTech/HWLAB#36", + "summary": "Code Agent provider Secret hwlab-code-agent-provider/openai-api-key is not present as key-presence evidence; #143 real provider-backed chat remains blocked", + "unblockOrder": 99, + "unblocks": [ + "pikasTech/HWLAB#39" + ], + "rationale": "Residual blocker that must be classified before claiming a green DEV gate." + }, { "id": "dev-m4-agent-loop:agent-mgr-health", "priority": "P3", @@ -1440,6 +1493,7 @@ "blockerOrder": 3, "priority": "P1", "scopes": [ + "artifact-catalog", "artifact-source-commit", "dev-artifact-publish" ], @@ -1450,7 +1504,7 @@ "pikasTech/HWLAB#39" ], "rationale": "The gate cannot promote deploy or runtime observations without immutable image provenance and digests.", - "action": "Refresh without fake digests using `node scripts/refresh-artifact-catalog.mjs --target-ref origin/main --blocked`, or after a successful publish run `node scripts/refresh-artifact-catalog.mjs --target-ref origin/main --publish-report reports/dev-gate/dev-artifacts.json`.", + "action": "Run the DEV artifact publish workflow, then record only real sha256 digests with `node scripts/refresh-artifact-catalog.mjs --target-ref origin/main --publish-report reports/dev-gate/dev-artifacts.json`; if publish is still blocked, keep not_published via `node scripts/refresh-artifact-catalog.mjs --target-ref origin/main --blocked`.", "evidenceRequired": "Artifact publish report with ciPublished=true, registryVerified=true, and sha256 digest for each frozen service ID." }, { @@ -1516,10 +1570,12 @@ "blockerOrder": 99, "priority": "P3", "scopes": [ + "code-agent-provider-secret", "agent-mgr-health", "skills-commit-version-injection" ], "sourceIssues": [ + "pikasTech/HWLAB#36", "pikasTech/HWLAB#37", "pikasTech/HWLAB#39" ], diff --git a/reports/dev-gate/dev-m5-gate-aggregator-v2.md b/reports/dev-gate/dev-m5-gate-aggregator-v2.md index c88994cb..08a2d202 100644 --- a/reports/dev-gate/dev-m5-gate-aggregator-v2.md +++ b/reports/dev-gate/dev-m5-gate-aggregator-v2.md @@ -1,7 +1,7 @@ # HWLAB M5 DEV Gate Aggregator v2 Status: blocked -Generated from: `c7de4745f491` +Generated from: `f64182b54fe6` Scope: DEV only, report-only Active frontend: `http://74.48.78.17:16666/` Active API/live: `http://74.48.78.17:16667/health/live` @@ -25,7 +25,7 @@ The latest accepted #99/#108 frontend DEV fact is revision `1e8805664970839b72be | D601 runner observability | blocked | DEV-LIVE | D601 public DEV endpoints are reachable, but the runner cannot read /etc/rancher/k3s/k3s.yaml; classify as #46 runner permission/mount or read-only observability gap, not D601 global offline. Alternate read-only cluster probes are readable. runnerKubeconfigReadable=false, runnerKubeconfigProbeExitCode=0, runnerKubeconfigProbeStderr=empty, d601PublicEndpointsReachable=true, d601K3sUnavailable=false. | Treat #46 runner kubeconfig/readonly gaps separately from D601 service health; rerun read-only observability after the mount or permission path is repaired. | | M3 hardware trusted loop | blocked | BLOCKED | No live DEV operation was attempted because read-only direct target checks did not prove the required patch-panel-owned M3 route. Blocker: DEV exposes two box-simu endpoints, but live identities are not the required distinct resources res_boxsimu_1 and res_boxsimu_2; observed resources=res_boxsimu_1. | Only a real DEV res_boxsimu_1:DO1 -> hwlab-patch-panel -> res_boxsimu_2:DI1 observation with operation/trace/audit/evidence can clear M3. | | M4 agent loop | blocked | BLOCKED | Blocked at DB live readiness before scheduling a DEV agent task. | Do not schedule or claim the agent loop as live until DB live and required runtime/evidence preconditions pass. | -| artifact/desired-state source | blocked | BLOCKED | artifact targetCovered=false; artifactSource=7e29522b65c8; target=8e89409dda5d; desiredApplyMode=dry-run; mutationAttempted=false. | Refresh artifact/source coverage for current origin/main and keep desired-state apply separate from read-only route proof. | +| artifact/desired-state source | blocked | BLOCKED | artifact targetCovered=false; artifactSource=7e29522b65c8; target=f64182b54fe6; desiredApplyMode=dry-run; mutationAttempted=false. | Refresh artifact/source coverage for current origin/main and keep desired-state apply separate from read-only route proof. | ## M0-M5 Level Classification @@ -55,7 +55,7 @@ The latest accepted #99/#108 frontend DEV fact is revision `1e8805664970839b72be | --- | --- | --- | --- | | m0-source-contract | pass | SOURCE | M0 contract checks are source-level evidence only. | | m1-local-smoke | pass | LOCAL | M1 local smoke is not a live DEV substitute. | -| artifact-publish-digests | blocked | BLOCKED | artifactState=published, ciPublished=true, registryVerified=true, sha256=13, not_published=0, targetCovered=false | +| artifact-publish-digests | blocked | BLOCKED | artifactState=contract-skeleton, ciPublished=false, registryVerified=false, sha256=0, not_published=13, targetCovered=false | | d601-k3s-observability | blocked | DEV-LIVE | D601 public DEV endpoints are reachable, but the runner cannot read /etc/rancher/k3s/k3s.yaml; classify as #46 runner permission/mount or read-only observability gap, not D601 global offline. Alternate read-only cluster probes are readable. runnerKubeconfigReadable=false, runnerKubeconfigProbeExitCode=0, runnerKubeconfigProbeStderr=empty, d601PublicEndpointsReachable=true, d601K3sUnavailable=false. | | dev-edge-frp-16667 | pass | DEV-LIVE | Committed edge report proves read-only public HTTP on :16667 /health and /health/live; this is route evidence, not DB/M3/M4/M5 acceptance. | | cloud-api-db-ready | blocked | BLOCKED | cloud-api DB status=degraded; ready=false; connected=false; liveDbEvidence=false. | @@ -75,11 +75,12 @@ The latest accepted #99/#108 frontend DEV fact is revision `1e8805664970839b72be | Priority | Order | Type | Scope | Summary | | --- | ---: | --- | --- | --- | -| P1 | 3 | contract_blocker | artifact-source-commit | source commit origin/main 8e89409 is not covered by artifact source 7e29522; target changes since the artifact source touch artifact build inputs. | -| P1 | 3 | runtime_blocker | dev-artifact-publish | reports/dev-gate/dev-artifacts.json does not prove all required HWLAB service artifacts for origin/main 8e89409; current status is published with 13/13 required services published and source states resolved: 13 source-present, 0 intentionally-disabled. | +| P1 | 3 | runtime_blocker | artifact-catalog | deploy/artifact-catalog.dev.json does not prove published artifacts for origin/main f64182b; ciPublished=false, registryVerified=false, not_published=13. | +| P1 | 3 | contract_blocker | artifact-source-commit | source commit origin/main f64182b is not covered by artifact source 7e29522; target changes since the artifact source touch artifact build inputs. | +| P1 | 3 | runtime_blocker | dev-artifact-publish | reports/dev-gate/dev-artifacts.json does not prove all required HWLAB service artifacts for origin/main f64182b; current status is published with 13/13 required services published and source states resolved: 13 source-present, 0 intentionally-disabled. | | P1 | 4 | observability_blocker | runner-kubeconfig-readonly-gap | The runner cannot read /etc/rancher/k3s/k3s.yaml; classify this as a runner permission/mount gap, not a D601 global outage. Alternate read-only cluster probes and public DEV endpoint probes are reported separately. | -| P1 | 5 | runtime_blocker | cloud-api-db | cloud-api DB env is injected, but runtime health has not attempted a live DB connection | -| P1 | 5 | network_blocker | cloud-api-db | cloud-api DB env is injected, but runtime health has not attempted a live DB connection | +| P1 | 5 | runtime_blocker | cloud-api-db | DB endpoint DNS resolution failed from the cloud-api runtime | +| P1 | 5 | network_blocker | cloud-api-db | DB endpoint DNS resolution failed from the cloud-api runtime | | P1 | 5 | runtime_blocker | cloud-api-db-health-gate | cloud-api DB runtime env is not ready; missing HWLAB_CLOUD_DB_URL, HWLAB_CLOUD_DB_SSL_MODE. | | P1 | 5 | runtime_blocker | db-live | cloud-api /health/live reports DB degraded; connected=false; ready=false. | | P1 | 5 | runtime_blocker | db-live | cloud-api /health/live reports DB degraded; db.ready=false, db.connected=false, and live DB evidence is not established. | @@ -87,12 +88,13 @@ The latest accepted #99/#108 frontend DEV fact is revision `1e8805664970839b72be | P0 | 6 | runtime_blocker | m3-gateway-simu-identity | DEV exposes two gateway-simu endpoints, but live gateway identities are not distinct; observed identities=gateway-a:gws_gateway-a. | | P0 | 6 | runtime_blocker | m3-patch-panel-wiring | DEV patch-panel is callable, but live wiring does not contain res_boxsimu_1:DO1 -> res_boxsimu_2:DI1; active=res_boxsim_alpha:uart0->res_boxsim_beta:uart0, res_boxsim_alpha:gpio0->res_boxsim_beta:gpio0; configured=res_boxsim_alpha:uart0->res_boxsim_beta:uart0, res_boxsim_alpha:gpio0->res_boxsim_beta:gpio0. | | P0 | 6 | runtime_blocker | m3-hardware-loop-runtime | Live M3 smoke reached DEV simulators, but patch-panel active DO1 -> DI1 connection is missing. | +| P3 | 99 | agent_blocker | code-agent-provider-secret | Code Agent provider Secret hwlab-code-agent-provider/openai-api-key is not present as key-presence evidence; #143 real provider-backed chat remains blocked | | P3 | 99 | agent_blocker | agent-mgr-health | hwlab-agent-mgr /health/live is degraded. | | P3 | 99 | agent_blocker | skills-commit-version-injection | DEV skills injection is incomplete: missing hwlab-agent-skills.HWLAB_SKILLS_VERSION, worker-dry-run.HWLAB_SKILL_VERSION_FROM_DEV. | ## Next Unblock Order -1. Refresh without fake digests using `node scripts/refresh-artifact-catalog.mjs --target-ref origin/main --blocked`, or after a successful publish run `node scripts/refresh-artifact-catalog.mjs --target-ref origin/main --publish-report reports/dev-gate/dev-artifacts.json`. +1. Run the DEV artifact publish workflow, then record only real sha256 digests with `node scripts/refresh-artifact-catalog.mjs --target-ref origin/main --publish-report reports/dev-gate/dev-artifacts.json`; if publish is still blocked, keep not_published via `node scripts/refresh-artifact-catalog.mjs --target-ref origin/main --blocked`. Evidence required: Artifact publish report with ciPublished=true, registryVerified=true, and sha256 digest for each frozen service ID. 2. Provide the approved read-only runner kubeconfig mount or document the intended alternate KUBECONFIG path, then rerun the read-only report. Evidence required: Read-only report with runnerKubeconfigReadable, runnerKubeconfigProbeExitCode/stderr, d601PublicEndpointsReachable, and d601K3sUnavailable recorded separately, plus direct M3 service target discovery before any DO write. diff --git a/reports/dev-gate/dev-preflight-report.json b/reports/dev-gate/dev-preflight-report.json index 3245124d..2396d332 100644 --- a/reports/dev-gate/dev-preflight-report.json +++ b/reports/dev-gate/dev-preflight-report.json @@ -24,10 +24,10 @@ ], "target": { "ref": "origin/main", - "commitId": "8e89409dda5d0b028de7f7b7b0e006a60bdd6d44", - "shortCommitId": "8e89409" + "commitId": "f64182b54fe6153a1ec0343cabf63b690df74f4e", + "shortCommitId": "f64182b" }, - "generatedAt": "2026-05-22T07:12:46.951Z", + "generatedAt": "2026-05-22T16:59:48.691Z", "mode": "read-only", "devOnly": true, "prodDisabled": true, @@ -60,8 +60,8 @@ "artifactIdentity": { "source": { "ref": "origin/main", - "commitId": "8e89409dda5d0b028de7f7b7b0e006a60bdd6d44", - "shortCommitId": "8e89409" + "commitId": "f64182b54fe6153a1ec0343cabf63b690df74f4e", + "shortCommitId": "f64182b" }, "artifactSource": { "source": "artifact-publish-report", @@ -75,209 +75,234 @@ "sourceCommitId": "7e29522b65c8a316b7c3fde12bebcb5f6baf8c33", "sourceShortCommitId": "7e29522", "targetRef": "origin/main", - "targetCommitId": "8e89409dda5d0b028de7f7b7b0e006a60bdd6d44", - "targetShortCommitId": "8e89409", + "targetCommitId": "f64182b54fe6153a1ec0343cabf63b690df74f4e", + "targetShortCommitId": "f64182b", "mode": "artifact-input-drift", "covered": false, "artifactBuildInputChanged": true, - "changedPathCount": 48, + "changedPathCount": 114, "changedArtifactInputPaths": [ + "cmd/hwlab-box-simu/main.mjs", + "cmd/hwlab-gateway-simu/main.mjs", + "cmd/hwlab-patch-panel/main.mjs", + "internal/cloud/code-agent-chat.mjs", + "internal/cloud/db-contract.mjs", + "internal/cloud/json-rpc.test.mjs", + "internal/cloud/server.mjs", + "internal/cloud/server.test.mjs", "internal/dev-report-lifecycle.mjs", "internal/mvp-gate/summary.mjs", + "internal/patchpanel/fixture.mjs", + "internal/patchpanel/model.test.mjs", "internal/protocol/index.mjs", "package.json", "scripts/dev-artifact-publish.mjs", - "web/hwlab-cloud-web/gate-summary.mjs" + "tools/hwlab-cli/lib/cli.mjs", + "web/hwlab-cloud-web/app.mjs", + "web/hwlab-cloud-web/gate-summary.mjs", + "web/hwlab-cloud-web/help.md", + "web/hwlab-cloud-web/index.html", + "web/hwlab-cloud-web/package.json", + "web/hwlab-cloud-web/runtime.mjs", + "web/hwlab-cloud-web/scripts/build.mjs", + "web/hwlab-cloud-web/scripts/check.mjs", + "web/hwlab-cloud-web/scripts/dist-contract.mjs", + "web/hwlab-cloud-web/scripts/m3-readonly-contract.mjs", + "web/hwlab-cloud-web/scripts/workbench-hardware-panel-contract.mjs", + "web/hwlab-cloud-web/styles.css", + "web/hwlab-cloud-web/third_party/marked/LICENSE", + "web/hwlab-cloud-web/third_party/marked/marked.esm.js", + "web/hwlab-cloud-web/workbench-hardware-panel.mjs" ], - "changedNonArtifactPathCount": 42, + "changedNonArtifactPathCount": 83, "reason": "target changes since the artifact source touch artifact build inputs" }, "deployManifest": { "path": "deploy/deploy.json", - "commitId": "7e29522", - "matchesSource": true, + "commitId": "c7de474", + "matchesSource": false, "matchesTarget": false }, "artifactCatalog": { "path": "deploy/artifact-catalog.dev.json", - "commitId": "7e29522", - "artifactState": "published", - "ciPublished": true, - "registryVerified": true, - "provenance": "reports/dev-gate/dev-artifacts.json", + "commitId": "c7de474", + "artifactState": "contract-skeleton", + "ciPublished": false, + "registryVerified": false, + "provenance": "not_available_until_publish", "digestCounts": { - "sha256": 13, - "notPublished": 0, + "sha256": 0, + "notPublished": 13, "invalid": 0 }, "requiredServiceCount": 13, "disabledServiceCount": 0, - "matchesSource": true, + "matchesSource": false, "matchesTarget": false }, "services": [ { "serviceId": "hwlab-cloud-api", - "commitId": "7e29522", - "matchesSource": true, + "commitId": "c7de474", + "matchesSource": false, "matchesTarget": false, - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:7e29522", - "imageTag": "7e29522", - "digest": "sha256:090b6f919be3b3c7594ca4073b193351689fc525f478b64d54d393725cb01ecf", - "publishState": "published", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:c7de474", + "imageTag": "c7de474", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true, - "notPublishedReason": null + "notPublishedReason": "publish_not_run" }, { "serviceId": "hwlab-cloud-web", - "commitId": "7e29522", - "matchesSource": true, + "commitId": "c7de474", + "matchesSource": false, "matchesTarget": false, - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:7e29522", - "imageTag": "7e29522", - "digest": "sha256:bc6e836b2bb796b30562ed3ae93d8534146a3b74a310906481c8641646d1b8f0", - "publishState": "published", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:c7de474", + "imageTag": "c7de474", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true, - "notPublishedReason": null + "notPublishedReason": "publish_not_run" }, { "serviceId": "hwlab-agent-mgr", - "commitId": "7e29522", - "matchesSource": true, + "commitId": "c7de474", + "matchesSource": false, "matchesTarget": false, - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:7e29522", - "imageTag": "7e29522", - "digest": "sha256:4d9b8944bc52012bb0a4a3a345f8939381d2804032e544d0c98f49fac0e46bfd", - "publishState": "published", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:c7de474", + "imageTag": "c7de474", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true, - "notPublishedReason": null + "notPublishedReason": "publish_not_run" }, { "serviceId": "hwlab-agent-worker", - "commitId": "7e29522", - "matchesSource": true, + "commitId": "c7de474", + "matchesSource": false, "matchesTarget": false, - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:7e29522", - "imageTag": "7e29522", - "digest": "sha256:2582176e2c35a2bfbce4edfd922749397d45f6f1f8c04d0394c501f7d87323ee", - "publishState": "published", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:c7de474", + "imageTag": "c7de474", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true, - "notPublishedReason": null + "notPublishedReason": "publish_not_run" }, { "serviceId": "hwlab-gateway", - "commitId": "7e29522", - "matchesSource": true, + "commitId": "c7de474", + "matchesSource": false, "matchesTarget": false, - "image": "127.0.0.1:5000/hwlab/hwlab-gateway:7e29522", - "imageTag": "7e29522", - "digest": "sha256:290341fd6e6f036aa953943072ad58e0d0cfcc0e13950e6090f941b3310755a6", - "publishState": "published", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway:c7de474", + "imageTag": "c7de474", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true, - "notPublishedReason": null + "notPublishedReason": "publish_not_run" }, { "serviceId": "hwlab-gateway-simu", - "commitId": "7e29522", - "matchesSource": true, + "commitId": "c7de474", + "matchesSource": false, "matchesTarget": false, - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:7e29522", - "imageTag": "7e29522", - "digest": "sha256:02627f880c7ddf2102e2255a43097d1f604cfb7a22215736e328287e27fc5f03", - "publishState": "published", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:c7de474", + "imageTag": "c7de474", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true, - "notPublishedReason": null + "notPublishedReason": "publish_not_run" }, { "serviceId": "hwlab-box-simu", - "commitId": "7e29522", - "matchesSource": true, + "commitId": "c7de474", + "matchesSource": false, "matchesTarget": false, - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:7e29522", - "imageTag": "7e29522", - "digest": "sha256:e02c270c71f83a2f4624722bb84616bea8374ef43439f27bdce310e4baa8dcca", - "publishState": "published", + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:c7de474", + "imageTag": "c7de474", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true, - "notPublishedReason": null + "notPublishedReason": "publish_not_run" }, { "serviceId": "hwlab-patch-panel", - "commitId": "7e29522", - "matchesSource": true, + "commitId": "c7de474", + "matchesSource": false, "matchesTarget": false, - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:7e29522", - "imageTag": "7e29522", - "digest": "sha256:f730323f83c62797f382932582a05df921045c86383dad7951f3d639b32456a9", - "publishState": "published", + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:c7de474", + "imageTag": "c7de474", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true, - "notPublishedReason": null + "notPublishedReason": "publish_not_run" }, { "serviceId": "hwlab-router", - "commitId": "7e29522", - "matchesSource": true, + "commitId": "c7de474", + "matchesSource": false, "matchesTarget": false, - "image": "127.0.0.1:5000/hwlab/hwlab-router:7e29522", - "imageTag": "7e29522", - "digest": "sha256:7c40c573078a9c325402bd47b2eb78a46c0c80564a228cf7c9fcf0cfba5bc6d2", - "publishState": "published", + "image": "127.0.0.1:5000/hwlab/hwlab-router:c7de474", + "imageTag": "c7de474", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true, - "notPublishedReason": null + "notPublishedReason": "publish_not_run" }, { "serviceId": "hwlab-tunnel-client", - "commitId": "7e29522", - "matchesSource": true, + "commitId": "c7de474", + "matchesSource": false, "matchesTarget": false, - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:7e29522", - "imageTag": "7e29522", - "digest": "sha256:b141dc88557b8f6391aa082fdb37c6f0db5bc3a76c97bb39ba00354a9208abd8", - "publishState": "published", + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:c7de474", + "imageTag": "c7de474", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true, - "notPublishedReason": null + "notPublishedReason": "publish_not_run" }, { "serviceId": "hwlab-edge-proxy", - "commitId": "7e29522", - "matchesSource": true, + "commitId": "c7de474", + "matchesSource": false, "matchesTarget": false, - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:7e29522", - "imageTag": "7e29522", - "digest": "sha256:792505139793c3f3da7769f9dc9d1cb3203ff92797305b62e8f12207c69a9831", - "publishState": "published", + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:c7de474", + "imageTag": "c7de474", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true, - "notPublishedReason": null + "notPublishedReason": "publish_not_run" }, { "serviceId": "hwlab-cli", - "commitId": "7e29522", - "matchesSource": true, + "commitId": "c7de474", + "matchesSource": false, "matchesTarget": false, - "image": "127.0.0.1:5000/hwlab/hwlab-cli:7e29522", - "imageTag": "7e29522", - "digest": "sha256:43d1c175091bfb462eddd7dd22a780d6485d86bdb052c36b78201606f48fadc1", - "publishState": "published", + "image": "127.0.0.1:5000/hwlab/hwlab-cli:c7de474", + "imageTag": "c7de474", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true, - "notPublishedReason": null + "notPublishedReason": "publish_not_run" }, { "serviceId": "hwlab-agent-skills", - "commitId": "7e29522", - "matchesSource": true, + "commitId": "c7de474", + "matchesSource": false, "matchesTarget": false, - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:7e29522", - "imageTag": "7e29522", - "digest": "sha256:c75510038dc33196dc254472e78101d545c0d777a7b33b531f02b39faf2588b5", - "publishState": "published", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:c7de474", + "imageTag": "c7de474", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true, - "notPublishedReason": null + "notPublishedReason": "publish_not_run" } ], "serviceCommitIds": [ - "7e29522" + "c7de474" ], "matchesSource": false, - "publishVerified": true, + "publishVerified": false, "refreshCommands": { "blocked": "node scripts/refresh-artifact-catalog.mjs --target-ref origin/main --blocked", "published": "node scripts/refresh-artifact-catalog.mjs --target-ref origin/main --publish-report reports/dev-gate/dev-artifacts.json" @@ -286,7 +311,7 @@ "registryCapabilities": { "version": "v1", "registryPrefix": "127.0.0.1:5000/hwlab", - "generatedAt": "2026-05-22T07:12:45.056Z", + "generatedAt": "2026-05-22T16:59:47.814Z", "classification": "degraded", "dimensions": { "processHttpAccess": { @@ -334,7 +359,7 @@ "names": "unidesk-artifact-registry", "ports": "127.0.0.1:5000->5000/tcp", "state": "running", - "status": "Up 30 hours" + "status": "Up 39 hours" } ], "pushAttempted": false, @@ -394,16 +419,16 @@ "imageID": "127.0.0.1:5000/hwlab/hwlab-box-simu@sha256:ae5fcc06a276918561c2d752f2221156bd2bd4db7fb93967ae76af97bfdc51bf" }, { - "pod": "hwlab-cloud-api-f48dcdfb-9n6zh", + "pod": "hwlab-cloud-api-74c969765d-kzvdd", "container": "hwlab-cloud-api", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:cb35ada", - "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-api@sha256:3946efdd7360409cea6a897cb03a6f3172f14819d3132df3aab821621909513f" + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:c7de474", + "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-api@sha256:86fe92c0dd5d5883851b38805e6f5acc49d2876552599c18f85480cf0d3bf981" }, { - "pod": "hwlab-cloud-web-cd9655b98-gxtmc", + "pod": "hwlab-cloud-web-7d48b84f4b-n6hw6", "container": "hwlab-cloud-web", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:cb35ada", - "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-web@sha256:868e2a11c56cc1a27c77de3fa71a7b092f21ae98a4052104e9071bd93960abfa" + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:c7de474", + "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-web@sha256:91cfacc1fc011a96bb47ff00d2ab09ee3c93003b7ec482308ec5ac35004e5627" }, { "pod": "hwlab-edge-proxy-567f978cdd-8fwc8", @@ -473,13 +498,13 @@ "id": "target-commit-pinning", "category": "contract", "status": "blocked", - "summary": "Source origin/main 8e89409 is not covered by artifact source 7e29522: target changes since the artifact source touch artifact build inputs.", + "summary": "Source origin/main f64182b is not covered by artifact source 7e29522: target changes since the artifact source touch artifact build inputs.", "evidence": [ { "source": { "ref": "origin/main", - "commitId": "8e89409dda5d0b028de7f7b7b0e006a60bdd6d44", - "shortCommitId": "8e89409" + "commitId": "f64182b54fe6153a1ec0343cabf63b690df74f4e", + "shortCommitId": "f64182b" }, "artifactSource": { "source": "artifact-publish-report", @@ -493,209 +518,234 @@ "sourceCommitId": "7e29522b65c8a316b7c3fde12bebcb5f6baf8c33", "sourceShortCommitId": "7e29522", "targetRef": "origin/main", - "targetCommitId": "8e89409dda5d0b028de7f7b7b0e006a60bdd6d44", - "targetShortCommitId": "8e89409", + "targetCommitId": "f64182b54fe6153a1ec0343cabf63b690df74f4e", + "targetShortCommitId": "f64182b", "mode": "artifact-input-drift", "covered": false, "artifactBuildInputChanged": true, - "changedPathCount": 48, + "changedPathCount": 114, "changedArtifactInputPaths": [ + "cmd/hwlab-box-simu/main.mjs", + "cmd/hwlab-gateway-simu/main.mjs", + "cmd/hwlab-patch-panel/main.mjs", + "internal/cloud/code-agent-chat.mjs", + "internal/cloud/db-contract.mjs", + "internal/cloud/json-rpc.test.mjs", + "internal/cloud/server.mjs", + "internal/cloud/server.test.mjs", "internal/dev-report-lifecycle.mjs", "internal/mvp-gate/summary.mjs", + "internal/patchpanel/fixture.mjs", + "internal/patchpanel/model.test.mjs", "internal/protocol/index.mjs", "package.json", "scripts/dev-artifact-publish.mjs", - "web/hwlab-cloud-web/gate-summary.mjs" + "tools/hwlab-cli/lib/cli.mjs", + "web/hwlab-cloud-web/app.mjs", + "web/hwlab-cloud-web/gate-summary.mjs", + "web/hwlab-cloud-web/help.md", + "web/hwlab-cloud-web/index.html", + "web/hwlab-cloud-web/package.json", + "web/hwlab-cloud-web/runtime.mjs", + "web/hwlab-cloud-web/scripts/build.mjs", + "web/hwlab-cloud-web/scripts/check.mjs", + "web/hwlab-cloud-web/scripts/dist-contract.mjs", + "web/hwlab-cloud-web/scripts/m3-readonly-contract.mjs", + "web/hwlab-cloud-web/scripts/workbench-hardware-panel-contract.mjs", + "web/hwlab-cloud-web/styles.css", + "web/hwlab-cloud-web/third_party/marked/LICENSE", + "web/hwlab-cloud-web/third_party/marked/marked.esm.js", + "web/hwlab-cloud-web/workbench-hardware-panel.mjs" ], - "changedNonArtifactPathCount": 42, + "changedNonArtifactPathCount": 83, "reason": "target changes since the artifact source touch artifact build inputs" }, "deployManifest": { "path": "deploy/deploy.json", - "commitId": "7e29522", - "matchesSource": true, + "commitId": "c7de474", + "matchesSource": false, "matchesTarget": false }, "artifactCatalog": { "path": "deploy/artifact-catalog.dev.json", - "commitId": "7e29522", - "artifactState": "published", - "ciPublished": true, - "registryVerified": true, - "provenance": "reports/dev-gate/dev-artifacts.json", + "commitId": "c7de474", + "artifactState": "contract-skeleton", + "ciPublished": false, + "registryVerified": false, + "provenance": "not_available_until_publish", "digestCounts": { - "sha256": 13, - "notPublished": 0, + "sha256": 0, + "notPublished": 13, "invalid": 0 }, "requiredServiceCount": 13, "disabledServiceCount": 0, - "matchesSource": true, + "matchesSource": false, "matchesTarget": false }, "services": [ { "serviceId": "hwlab-cloud-api", - "commitId": "7e29522", - "matchesSource": true, + "commitId": "c7de474", + "matchesSource": false, "matchesTarget": false, - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:7e29522", - "imageTag": "7e29522", - "digest": "sha256:090b6f919be3b3c7594ca4073b193351689fc525f478b64d54d393725cb01ecf", - "publishState": "published", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:c7de474", + "imageTag": "c7de474", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true, - "notPublishedReason": null + "notPublishedReason": "publish_not_run" }, { "serviceId": "hwlab-cloud-web", - "commitId": "7e29522", - "matchesSource": true, + "commitId": "c7de474", + "matchesSource": false, "matchesTarget": false, - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:7e29522", - "imageTag": "7e29522", - "digest": "sha256:bc6e836b2bb796b30562ed3ae93d8534146a3b74a310906481c8641646d1b8f0", - "publishState": "published", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:c7de474", + "imageTag": "c7de474", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true, - "notPublishedReason": null + "notPublishedReason": "publish_not_run" }, { "serviceId": "hwlab-agent-mgr", - "commitId": "7e29522", - "matchesSource": true, + "commitId": "c7de474", + "matchesSource": false, "matchesTarget": false, - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:7e29522", - "imageTag": "7e29522", - "digest": "sha256:4d9b8944bc52012bb0a4a3a345f8939381d2804032e544d0c98f49fac0e46bfd", - "publishState": "published", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:c7de474", + "imageTag": "c7de474", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true, - "notPublishedReason": null + "notPublishedReason": "publish_not_run" }, { "serviceId": "hwlab-agent-worker", - "commitId": "7e29522", - "matchesSource": true, + "commitId": "c7de474", + "matchesSource": false, "matchesTarget": false, - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:7e29522", - "imageTag": "7e29522", - "digest": "sha256:2582176e2c35a2bfbce4edfd922749397d45f6f1f8c04d0394c501f7d87323ee", - "publishState": "published", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:c7de474", + "imageTag": "c7de474", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true, - "notPublishedReason": null + "notPublishedReason": "publish_not_run" }, { "serviceId": "hwlab-gateway", - "commitId": "7e29522", - "matchesSource": true, + "commitId": "c7de474", + "matchesSource": false, "matchesTarget": false, - "image": "127.0.0.1:5000/hwlab/hwlab-gateway:7e29522", - "imageTag": "7e29522", - "digest": "sha256:290341fd6e6f036aa953943072ad58e0d0cfcc0e13950e6090f941b3310755a6", - "publishState": "published", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway:c7de474", + "imageTag": "c7de474", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true, - "notPublishedReason": null + "notPublishedReason": "publish_not_run" }, { "serviceId": "hwlab-gateway-simu", - "commitId": "7e29522", - "matchesSource": true, + "commitId": "c7de474", + "matchesSource": false, "matchesTarget": false, - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:7e29522", - "imageTag": "7e29522", - "digest": "sha256:02627f880c7ddf2102e2255a43097d1f604cfb7a22215736e328287e27fc5f03", - "publishState": "published", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:c7de474", + "imageTag": "c7de474", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true, - "notPublishedReason": null + "notPublishedReason": "publish_not_run" }, { "serviceId": "hwlab-box-simu", - "commitId": "7e29522", - "matchesSource": true, + "commitId": "c7de474", + "matchesSource": false, "matchesTarget": false, - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:7e29522", - "imageTag": "7e29522", - "digest": "sha256:e02c270c71f83a2f4624722bb84616bea8374ef43439f27bdce310e4baa8dcca", - "publishState": "published", + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:c7de474", + "imageTag": "c7de474", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true, - "notPublishedReason": null + "notPublishedReason": "publish_not_run" }, { "serviceId": "hwlab-patch-panel", - "commitId": "7e29522", - "matchesSource": true, + "commitId": "c7de474", + "matchesSource": false, "matchesTarget": false, - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:7e29522", - "imageTag": "7e29522", - "digest": "sha256:f730323f83c62797f382932582a05df921045c86383dad7951f3d639b32456a9", - "publishState": "published", + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:c7de474", + "imageTag": "c7de474", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true, - "notPublishedReason": null + "notPublishedReason": "publish_not_run" }, { "serviceId": "hwlab-router", - "commitId": "7e29522", - "matchesSource": true, + "commitId": "c7de474", + "matchesSource": false, "matchesTarget": false, - "image": "127.0.0.1:5000/hwlab/hwlab-router:7e29522", - "imageTag": "7e29522", - "digest": "sha256:7c40c573078a9c325402bd47b2eb78a46c0c80564a228cf7c9fcf0cfba5bc6d2", - "publishState": "published", + "image": "127.0.0.1:5000/hwlab/hwlab-router:c7de474", + "imageTag": "c7de474", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true, - "notPublishedReason": null + "notPublishedReason": "publish_not_run" }, { "serviceId": "hwlab-tunnel-client", - "commitId": "7e29522", - "matchesSource": true, + "commitId": "c7de474", + "matchesSource": false, "matchesTarget": false, - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:7e29522", - "imageTag": "7e29522", - "digest": "sha256:b141dc88557b8f6391aa082fdb37c6f0db5bc3a76c97bb39ba00354a9208abd8", - "publishState": "published", + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:c7de474", + "imageTag": "c7de474", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true, - "notPublishedReason": null + "notPublishedReason": "publish_not_run" }, { "serviceId": "hwlab-edge-proxy", - "commitId": "7e29522", - "matchesSource": true, + "commitId": "c7de474", + "matchesSource": false, "matchesTarget": false, - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:7e29522", - "imageTag": "7e29522", - "digest": "sha256:792505139793c3f3da7769f9dc9d1cb3203ff92797305b62e8f12207c69a9831", - "publishState": "published", + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:c7de474", + "imageTag": "c7de474", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true, - "notPublishedReason": null + "notPublishedReason": "publish_not_run" }, { "serviceId": "hwlab-cli", - "commitId": "7e29522", - "matchesSource": true, + "commitId": "c7de474", + "matchesSource": false, "matchesTarget": false, - "image": "127.0.0.1:5000/hwlab/hwlab-cli:7e29522", - "imageTag": "7e29522", - "digest": "sha256:43d1c175091bfb462eddd7dd22a780d6485d86bdb052c36b78201606f48fadc1", - "publishState": "published", + "image": "127.0.0.1:5000/hwlab/hwlab-cli:c7de474", + "imageTag": "c7de474", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true, - "notPublishedReason": null + "notPublishedReason": "publish_not_run" }, { "serviceId": "hwlab-agent-skills", - "commitId": "7e29522", - "matchesSource": true, + "commitId": "c7de474", + "matchesSource": false, "matchesTarget": false, - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:7e29522", - "imageTag": "7e29522", - "digest": "sha256:c75510038dc33196dc254472e78101d545c0d777a7b33b531f02b39faf2588b5", - "publishState": "published", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:c7de474", + "imageTag": "c7de474", + "digest": "not_published", + "publishState": "skeleton-only", "artifactRequired": true, - "notPublishedReason": null + "notPublishedReason": "publish_not_run" } ], "serviceCommitIds": [ - "7e29522" + "c7de474" ], "matchesSource": false, - "publishVerified": true, + "publishVerified": false, "refreshCommands": { "blocked": "node scripts/refresh-artifact-catalog.mjs --target-ref origin/main --blocked", "published": "node scripts/refresh-artifact-catalog.mjs --target-ref origin/main --publish-report reports/dev-gate/dev-artifacts.json" @@ -706,24 +756,24 @@ { "id": "artifact-catalog-publish-state", "category": "registry", - "status": "pass", - "summary": "Artifact catalog records CI publish, registry verification, and immutable service digests.", + "status": "blocked", + "summary": "Artifact catalog publish state is contract-skeleton; ciPublished=false, registryVerified=false, digests sha256=0, not_published=13, invalid=0.", "evidence": [ { "path": "deploy/artifact-catalog.dev.json", - "commitId": "7e29522", - "artifactState": "published", - "ciPublished": true, - "registryVerified": true, - "provenance": "reports/dev-gate/dev-artifacts.json", + "commitId": "c7de474", + "artifactState": "contract-skeleton", + "ciPublished": false, + "registryVerified": false, + "provenance": "not_available_until_publish", "digestCounts": { - "sha256": 13, - "notPublished": 0, + "sha256": 0, + "notPublished": 13, "invalid": 0 }, "requiredServiceCount": 13, "disabledServiceCount": 0, - "matchesSource": true, + "matchesSource": false, "matchesTarget": false } ] @@ -794,7 +844,7 @@ "names": "unidesk-artifact-registry", "ports": "127.0.0.1:5000->5000/tcp", "state": "running", - "status": "Up 30 hours" + "status": "Up 39 hours" } ], "pushAttempted": false, @@ -862,16 +912,16 @@ "imageID": "127.0.0.1:5000/hwlab/hwlab-box-simu@sha256:ae5fcc06a276918561c2d752f2221156bd2bd4db7fb93967ae76af97bfdc51bf" }, { - "pod": "hwlab-cloud-api-f48dcdfb-9n6zh", + "pod": "hwlab-cloud-api-74c969765d-kzvdd", "container": "hwlab-cloud-api", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:cb35ada", - "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-api@sha256:3946efdd7360409cea6a897cb03a6f3172f14819d3132df3aab821621909513f" + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:c7de474", + "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-api@sha256:86fe92c0dd5d5883851b38805e6f5acc49d2876552599c18f85480cf0d3bf981" }, { - "pod": "hwlab-cloud-web-cd9655b98-gxtmc", + "pod": "hwlab-cloud-web-7d48b84f4b-n6hw6", "container": "hwlab-cloud-web", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:cb35ada", - "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-web@sha256:868e2a11c56cc1a27c77de3fa71a7b092f21ae98a4052104e9071bd93960abfa" + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:c7de474", + "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-web@sha256:91cfacc1fc011a96bb47ff00d2ab09ee3c93003b7ec482308ec5ac35004e5627" }, { "pod": "hwlab-edge-proxy-567f978cdd-8fwc8", @@ -932,7 +982,7 @@ { "version": "v1", "registryPrefix": "127.0.0.1:5000/hwlab", - "generatedAt": "2026-05-22T07:12:45.056Z", + "generatedAt": "2026-05-22T16:59:47.814Z", "classification": "degraded", "dimensions": { "processHttpAccess": { @@ -980,7 +1030,7 @@ "names": "unidesk-artifact-registry", "ports": "127.0.0.1:5000->5000/tcp", "state": "running", - "status": "Up 30 hours" + "status": "Up 39 hours" } ], "pushAttempted": false, @@ -1040,16 +1090,16 @@ "imageID": "127.0.0.1:5000/hwlab/hwlab-box-simu@sha256:ae5fcc06a276918561c2d752f2221156bd2bd4db7fb93967ae76af97bfdc51bf" }, { - "pod": "hwlab-cloud-api-f48dcdfb-9n6zh", + "pod": "hwlab-cloud-api-74c969765d-kzvdd", "container": "hwlab-cloud-api", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:cb35ada", - "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-api@sha256:3946efdd7360409cea6a897cb03a6f3172f14819d3132df3aab821621909513f" + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:c7de474", + "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-api@sha256:86fe92c0dd5d5883851b38805e6f5acc49d2876552599c18f85480cf0d3bf981" }, { - "pod": "hwlab-cloud-web-cd9655b98-gxtmc", + "pod": "hwlab-cloud-web-7d48b84f4b-n6hw6", "container": "hwlab-cloud-web", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:cb35ada", - "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-web@sha256:868e2a11c56cc1a27c77de3fa71a7b092f21ae98a4052104e9071bd93960abfa" + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:c7de474", + "imageID": "127.0.0.1:5000/hwlab/hwlab-cloud-web@sha256:91cfacc1fc011a96bb47ff00d2ab09ee3c93003b7ec482308ec5ac35004e5627" }, { "pod": "hwlab-edge-proxy-567f978cdd-8fwc8", @@ -1112,7 +1162,7 @@ "id": "cloud-api-db-env-contract", "category": "db", "status": "pass", - "summary": "cloud-api DEV DB manifest declares the required env names and redacted Secret reference.", + "summary": "cloud-api DEV DB manifest declares the required env names, redacted Secret reference, and stable k3s DB DNS Service.", "evidence": [ { "staticContract": { @@ -1142,9 +1192,39 @@ "secretRef": null } ], + "dns": { + "ready": true, + "host": "cloud-api-db.hwlab-dev.svc.cluster.local", + "serviceName": "cloud-api-db", + "namespace": "hwlab-dev", + "port": 5432, + "portName": "postgres", + "selectorless": true, + "secretMaterialRead": false, + "liveDbEvidence": false, + "missing": [], + "actual": { + "deployServiceName": "cloud-api-db", + "deployServiceNamespace": "hwlab-dev", + "deployHost": "cloud-api-db.hwlab-dev.svc.cluster.local", + "deployPort": "5432", + "workloadServiceName": "cloud-api-db", + "workloadServiceNamespace": "hwlab-dev", + "workloadHost": "cloud-api-db.hwlab-dev.svc.cluster.local", + "workloadPort": "5432", + "serviceName": "cloud-api-db", + "serviceNamespace": "hwlab-dev", + "serviceType": "ClusterIP", + "serviceSelector": null, + "portName": "postgres", + "port": 5432, + "targetPort": "postgres" + } + }, "missingDeployEnv": [], "missingK8sEnv": [], "missingSecretRefs": [], + "missingDnsContract": [], "secretMaterialRead": false, "valuesRedacted": true, "liveDbEvidence": false, @@ -1159,6 +1239,7 @@ "connectionChecked": false, "connectionAttempted": false, "connectionResult": "not_attempted_missing_env", + "liveDbEvidence": false, "requiredEnv": [ { "name": "HWLAB_CLOUD_DB_URL", @@ -1201,8 +1282,14 @@ "durationMs": 0, "errorCode": null }, + "redaction": { + "valuesRedacted": true, + "endpointRedacted": true, + "valueRedacted": true, + "secretMaterialRead": false, + "secretRefsOnly": true + }, "blocker": "DB runtime config is missing HWLAB_CLOUD_DB_URL, HWLAB_CLOUD_DB_SSL_MODE", - "liveDbEvidence": false, "fixtureEvidence": false }, "fixtureEvidence": false, @@ -1244,9 +1331,39 @@ "secretRef": null } ], + "dns": { + "ready": true, + "host": "cloud-api-db.hwlab-dev.svc.cluster.local", + "serviceName": "cloud-api-db", + "namespace": "hwlab-dev", + "port": 5432, + "portName": "postgres", + "selectorless": true, + "secretMaterialRead": false, + "liveDbEvidence": false, + "missing": [], + "actual": { + "deployServiceName": "cloud-api-db", + "deployServiceNamespace": "hwlab-dev", + "deployHost": "cloud-api-db.hwlab-dev.svc.cluster.local", + "deployPort": "5432", + "workloadServiceName": "cloud-api-db", + "workloadServiceNamespace": "hwlab-dev", + "workloadHost": "cloud-api-db.hwlab-dev.svc.cluster.local", + "workloadPort": "5432", + "serviceName": "cloud-api-db", + "serviceNamespace": "hwlab-dev", + "serviceType": "ClusterIP", + "serviceSelector": null, + "portName": "postgres", + "port": 5432, + "targetPort": "postgres" + } + }, "missingDeployEnv": [], "missingK8sEnv": [], "missingSecretRefs": [], + "missingDnsContract": [], "secretMaterialRead": false, "valuesRedacted": true, "liveDbEvidence": false, @@ -1261,6 +1378,7 @@ "connectionChecked": false, "connectionAttempted": false, "connectionResult": "not_attempted_missing_env", + "liveDbEvidence": false, "requiredEnv": [ { "name": "HWLAB_CLOUD_DB_URL", @@ -1303,8 +1421,14 @@ "durationMs": 0, "errorCode": null }, + "redaction": { + "valuesRedacted": true, + "endpointRedacted": true, + "valueRedacted": true, + "secretMaterialRead": false, + "secretRefsOnly": true + }, "blocker": "DB runtime config is missing HWLAB_CLOUD_DB_URL, HWLAB_CLOUD_DB_SSL_MODE", - "liveDbEvidence": false, "fixtureEvidence": false }, "fixtureEvidence": false, @@ -1334,19 +1458,19 @@ "host": "74.48.78.17", "port": 16667, "status": "connected", - "durationMs": 228 + "durationMs": 206 }, { "host": "74.48.78.17", "port": 7000, "status": "connected", - "durationMs": 212 + "durationMs": 218 }, { "host": "74.48.78.17", "port": 7402, "status": "connected", - "durationMs": 216 + "durationMs": 207 } ], "kubernetesObservable": true @@ -1422,7 +1546,7 @@ "method": "GET", "status": 200, "statusText": "OK", - "body": "{\"serviceId\":\"hwlab-cloud-api\",\"environment\":\"dev\",\"status\":\"degraded\",\"service\":{\"id\":\"hwlab-cloud-api\",\"role\":\"cloud-api\",\"healthPath\":\"/health\",\"livePath\":\"/health/live\"},\"commit\":{\"id\":\"cb35ada\",\"source\":\"runtime-env\"},\"image\":{\"reference\":\"127.0.0.1:5000/hwlab/hwlab-cloud-api:cb35ada\",\"tag\":\"cb35ada\",\"digest\":\"unknown\"},\"endpoint\":\"http://74.48.78.17:16667\",\"observedAt\":\"2026-05-22T07:12:46.583Z\",\"db\":{\"contractVersion\":\"v1\",\"environment\":\"dev\",\"connected\":false,\"connectionChecked\":false,\"c" + "body": "{\"serviceId\":\"hwlab-cloud-api\",\"environment\":\"dev\",\"status\":\"degraded\",\"service\":{\"id\":\"hwlab-cloud-api\",\"role\":\"cloud-api\",\"healthPath\":\"/health\",\"livePath\":\"/health/live\"},\"commit\":{\"id\":\"c7de474\",\"source\":\"runtime-env\"},\"image\":{\"reference\":\"127.0.0.1:5000/hwlab/hwlab-cloud-api:c7de474\",\"tag\":\"c7de474\",\"digest\":\"unknown\"},\"endpoint\":\"http://74.48.78.17:16667\",\"observedAt\":\"2026-05-22T16:59:48.488Z\",\"db\":{\"contractVersion\":\"v1\",\"environment\":\"dev\",\"connected\":false,\"liveConnected\":false,\"liveD" } ] }, @@ -1434,105 +1558,105 @@ "evidence": [ { "serviceId": "hwlab-cloud-api", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:7e29522", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:c7de474", "ok": false, - "url": "http://127.0.0.1:5000/v2/hwlab/hwlab-cloud-api/manifests/7e29522", + "url": "http://127.0.0.1:5000/v2/hwlab/hwlab-cloud-api/manifests/c7de474", "method": "HEAD", "error": "fetch failed ECONNREFUSED 127.0.0.1 5000" }, { "serviceId": "hwlab-cloud-web", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:7e29522", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:c7de474", "ok": false, - "url": "http://127.0.0.1:5000/v2/hwlab/hwlab-cloud-web/manifests/7e29522", + "url": "http://127.0.0.1:5000/v2/hwlab/hwlab-cloud-web/manifests/c7de474", "method": "HEAD", "error": "fetch failed ECONNREFUSED 127.0.0.1 5000" }, { "serviceId": "hwlab-agent-mgr", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:7e29522", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:c7de474", "ok": false, - "url": "http://127.0.0.1:5000/v2/hwlab/hwlab-agent-mgr/manifests/7e29522", + "url": "http://127.0.0.1:5000/v2/hwlab/hwlab-agent-mgr/manifests/c7de474", "method": "HEAD", "error": "fetch failed ECONNREFUSED 127.0.0.1 5000" }, { "serviceId": "hwlab-agent-worker", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:7e29522", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:c7de474", "ok": false, - "url": "http://127.0.0.1:5000/v2/hwlab/hwlab-agent-worker/manifests/7e29522", + "url": "http://127.0.0.1:5000/v2/hwlab/hwlab-agent-worker/manifests/c7de474", "method": "HEAD", "error": "fetch failed ECONNREFUSED 127.0.0.1 5000" }, { "serviceId": "hwlab-gateway", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway:7e29522", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway:c7de474", "ok": false, - "url": "http://127.0.0.1:5000/v2/hwlab/hwlab-gateway/manifests/7e29522", + "url": "http://127.0.0.1:5000/v2/hwlab/hwlab-gateway/manifests/c7de474", "method": "HEAD", "error": "fetch failed ECONNREFUSED 127.0.0.1 5000" }, { "serviceId": "hwlab-gateway-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:7e29522", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:c7de474", "ok": false, - "url": "http://127.0.0.1:5000/v2/hwlab/hwlab-gateway-simu/manifests/7e29522", + "url": "http://127.0.0.1:5000/v2/hwlab/hwlab-gateway-simu/manifests/c7de474", "method": "HEAD", "error": "fetch failed ECONNREFUSED 127.0.0.1 5000" }, { "serviceId": "hwlab-box-simu", - "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:7e29522", + "image": "127.0.0.1:5000/hwlab/hwlab-box-simu:c7de474", "ok": false, - "url": "http://127.0.0.1:5000/v2/hwlab/hwlab-box-simu/manifests/7e29522", + "url": "http://127.0.0.1:5000/v2/hwlab/hwlab-box-simu/manifests/c7de474", "method": "HEAD", "error": "fetch failed ECONNREFUSED 127.0.0.1 5000" }, { "serviceId": "hwlab-patch-panel", - "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:7e29522", + "image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:c7de474", "ok": false, - "url": "http://127.0.0.1:5000/v2/hwlab/hwlab-patch-panel/manifests/7e29522", + "url": "http://127.0.0.1:5000/v2/hwlab/hwlab-patch-panel/manifests/c7de474", "method": "HEAD", "error": "fetch failed ECONNREFUSED 127.0.0.1 5000" }, { "serviceId": "hwlab-router", - "image": "127.0.0.1:5000/hwlab/hwlab-router:7e29522", + "image": "127.0.0.1:5000/hwlab/hwlab-router:c7de474", "ok": false, - "url": "http://127.0.0.1:5000/v2/hwlab/hwlab-router/manifests/7e29522", + "url": "http://127.0.0.1:5000/v2/hwlab/hwlab-router/manifests/c7de474", "method": "HEAD", "error": "fetch failed ECONNREFUSED 127.0.0.1 5000" }, { "serviceId": "hwlab-tunnel-client", - "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:7e29522", + "image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:c7de474", "ok": false, - "url": "http://127.0.0.1:5000/v2/hwlab/hwlab-tunnel-client/manifests/7e29522", + "url": "http://127.0.0.1:5000/v2/hwlab/hwlab-tunnel-client/manifests/c7de474", "method": "HEAD", "error": "fetch failed ECONNREFUSED 127.0.0.1 5000" }, { "serviceId": "hwlab-edge-proxy", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:7e29522", + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:c7de474", "ok": false, - "url": "http://127.0.0.1:5000/v2/hwlab/hwlab-edge-proxy/manifests/7e29522", + "url": "http://127.0.0.1:5000/v2/hwlab/hwlab-edge-proxy/manifests/c7de474", "method": "HEAD", "error": "fetch failed ECONNREFUSED 127.0.0.1 5000" }, { "serviceId": "hwlab-cli", - "image": "127.0.0.1:5000/hwlab/hwlab-cli:7e29522", + "image": "127.0.0.1:5000/hwlab/hwlab-cli:c7de474", "ok": false, - "url": "http://127.0.0.1:5000/v2/hwlab/hwlab-cli/manifests/7e29522", + "url": "http://127.0.0.1:5000/v2/hwlab/hwlab-cli/manifests/c7de474", "method": "HEAD", "error": "fetch failed ECONNREFUSED 127.0.0.1 5000" }, { "serviceId": "hwlab-agent-skills", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:7e29522", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:c7de474", "ok": false, - "url": "http://127.0.0.1:5000/v2/hwlab/hwlab-agent-skills/manifests/7e29522", + "url": "http://127.0.0.1:5000/v2/hwlab/hwlab-agent-skills/manifests/c7de474", "method": "HEAD", "error": "fetch failed ECONNREFUSED 127.0.0.1 5000" } @@ -1544,9 +1668,16 @@ "status": "open", "type": "contract_blocker", "scope": "artifact-source-commit", - "summary": "source commit origin/main 8e89409 is not covered by artifact source 7e29522; target changes since the artifact source touch artifact build inputs.", + "summary": "source commit origin/main f64182b is not covered by artifact source 7e29522; target changes since the artifact source touch artifact build inputs.", "nextTask": "Refresh without fake digests using `node scripts/refresh-artifact-catalog.mjs --target-ref origin/main --blocked`, or after a successful publish run `node scripts/refresh-artifact-catalog.mjs --target-ref origin/main --publish-report reports/dev-gate/dev-artifacts.json`." }, + { + "status": "open", + "type": "runtime_blocker", + "scope": "artifact-catalog", + "summary": "deploy/artifact-catalog.dev.json does not prove published artifacts for origin/main f64182b; ciPublished=false, registryVerified=false, not_published=13.", + "nextTask": "Run the DEV artifact publish workflow, then record only real sha256 digests with `node scripts/refresh-artifact-catalog.mjs --target-ref origin/main --publish-report reports/dev-gate/dev-artifacts.json`; if publish is still blocked, keep not_published via `node scripts/refresh-artifact-catalog.mjs --target-ref origin/main --blocked`." + }, { "status": "open", "type": "runtime_blocker", @@ -1558,14 +1689,14 @@ "status": "open", "type": "runtime_blocker", "scope": "dev-artifact-publish", - "summary": "reports/dev-gate/dev-artifacts.json does not prove all required HWLAB service artifacts for origin/main 8e89409; current status is published with 13/13 required services published and source states resolved: 13 source-present, 0 intentionally-disabled.", + "summary": "reports/dev-gate/dev-artifacts.json does not prove all required HWLAB service artifacts for origin/main f64182b; current status is published with 13/13 required services published and source states resolved: 13 source-present, 0 intentionally-disabled.", "nextTask": "Complete DEV artifact publishing for every enabled required HWLAB service at the artifact source commit, or prove the target commit has no artifact build input changes; keep disabled services marked not_published with reasons." }, { "status": "open", "type": "network_blocker", "scope": "cloud-api-db", - "summary": "cloud-api DB env is injected, but runtime health has not attempted a live DB connection", + "summary": "DB endpoint DNS resolution failed from the cloud-api runtime", "nextTask": "Deploy cloud-api DB runtime readiness probe and/or repair DEV DB connectivity, then rerun the read-only health smoke without reading or printing the DB secret value." } ],