// Generated from reports/dev-gate/dev-mvp-gate-report.json and fixtures/mvp/m5-e2e/dry-run-plan.json. // Run node scripts/export-web-gate-summary.mjs after changing those fixtures. export const gateSummary = { "generatedFrom": { "gateReport": "reports/dev-gate/dev-mvp-gate-report.json", "m5Plan": "fixtures/mvp/m5-e2e/dry-run-plan.json" }, "issue": "pikasTech/HWLAB#56", "supports": [ "pikasTech/HWLAB#7", "pikasTech/HWLAB#9" ], "gateStatus": "blocked", "blocked": true, "acceptanceLevel": "dev_mvp_gate", "reportCommitId": "86d769525caf1db513b93cb67c2c8ee8863dd4b1", "dryRunOnly": true, "devOnly": true, "prodDisabled": true, "environment": "dev", "endpoint": "http://74.48.78.17:16667", "namespace": "hwlab-dev", "sourceSummary": "The DEV gate is anchored to the frozen matrix, gate contract, and M0-M5 milestone docs on origin/main.", "localSmoke": { "status": "pass", "commands": [ "node scripts/validate-contract.mjs", "node scripts/validate-m0-contract.mjs", "node scripts/validate-artifact-catalog.mjs", "node scripts/validate-runtime-boundary.mjs", "node scripts/validate-schema-drift-map.mjs", "node scripts/validate-evidence-chain.mjs", "node scripts/m1-contract-smoke.mjs", "node scripts/m2-dev-deploy-smoke.mjs --dry-run", "node scripts/m3-hardware-loop-smoke.mjs", "node scripts/m4-agent-loop-smoke.mjs" ], "evidence": [ "validated 15 JSON files and 13 service ids", "validated M0 contract examples: 7 JSON files, 13 service ids", "validated 13 DEV artifact catalog services at 24eb3bf", "validated HWLAB runtime boundary guard for 13 services; forbidden substitutes: unidesk-backend, provider-gateway, microservice-proxy", "validated schema drift map with 59 aligned fields and 12 gaps", "validated 2 evidence chain fixtures and 2 evidence records", "[m1-smoke] passed", "[m2-smoke] validated 11 service contracts", "[m2-smoke] mode=dry-run endpoint=http://74.48.78.17:16667", "[m2-smoke] no real DEV/PROD request was made", "M3 hardware loop smoke passed", "[m4-smoke] ok m4-agent-automation-loop-local-contract-smoke" ], "summary": "M0-M4 contract and smoke checks pass locally without contacting the live DEV ingress." }, "dryRun": { "status": "pass", "commands": [ "node tools/hwlab-cli/bin/hwlab-cli.mjs health", "node tools/hwlab-cli/bin/hwlab-cli.mjs test e2e --env dev --mvp --dry-run", "node scripts/m5-mvp-e2e-dry-run.mjs" ], "evidence": [ "hwlab-cli health -> status: ok, environment: dev, endpoint: http://74.48.78.17:16667, projects: 2", "hwlab-cli dry-run -> 9 steps, 13 artifacts, 14 health contracts, 2 hardware operations, 2 evidence records, 0 network calls", "M5 MVP E2E dry-run passed: 9 steps, 13 artifacts, 14 health contracts, 2 hardware operations, 2 evidence records, 0 network calls" ], "summary": "The M5 orchestration dry-run is green, but it remains fixture-only and does not establish a live DEV gate." }, "devPreconditions": { "status": "blocked", "classification": "DB live; hardware loop", "requirements": [ "http://74.48.78.17:16666/ returns the DEV browser entry", "http://74.48.78.17:16667/health returns HWLAB DEV edge JSON", "http://74.48.78.17:16667/health/live returns HWLAB cloud-api JSON with DB live readiness", "M3 hardware loop proves box-simu-1 DO1 -> box-simu-2 DI1 via patch-panel", "M4 agent runtime/evidence path is only attempted after DB live and M3 readiness are not blocked", "Keep the run DEV-only and avoid PROD, heavy e2e, secrets, restarts, or UniDesk substitution" ], "commands": [ "curl -fsS --max-time 8 http://74.48.78.17:16666/", "curl -fsS --max-time 8 http://74.48.78.17:16667/health/live", "curl -fsS --max-time 8 http://74.48.78.17:16667/health", "HWLAB_DEV_BOX_SIMU_1_URL=http://10.42.0.200:7201 HWLAB_DEV_BOX_SIMU_2_URL=http://10.42.0.208:7201 HWLAB_DEV_GATEWAY_SIMU_1_URL=http://10.42.0.209:7101 HWLAB_DEV_GATEWAY_SIMU_2_URL=http://10.42.0.204:7101 HWLAB_DEV_PATCH_PANEL_URL=http://10.42.0.205:7301 node scripts/dev-m3-hardware-loop-smoke.mjs --live --confirm-dev --confirmed-non-production", "node scripts/dev-m4-agent-loop-smoke.mjs --live --confirm-dev --confirmed-non-production" ], "evidence": [ "http://74.48.78.17:16666/ -> HTTP 200 text/html, title=HWLAB DEV MVP Gate", "http://74.48.78.17:16667/health -> HTTP 200 serviceId=hwlab-edge-proxy status=ok commit=cb35ada6860653b27269b0a57991184118cbf4b1", "http://74.48.78.17:16667/health/live -> HTTP 200 serviceId=hwlab-cloud-api status=degraded db.ready=false db.connected=false db.connectionChecked=false", "dev-edge-health active report -> blocked by DB live readiness, while public 16667 TCP/HTTP and frp control/tunnel health are reachable", "dev-m3-hardware-loop active report -> blocked, classification=hardware loop, summary=patch-panel active DO1 -> DI1 connection missing", "dev-m4-agent-loop active report -> blocked, classification=DB live, summary=cloud-api /health/live reports DB degraded; connected=false; ready=false" ], "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." }, "blockers": [ { "type": "runtime_blocker", "scope": "db-live", "status": "open", "summary": "cloud-api /health/live reports DB degraded; db.ready=false, db.connected=false, and live DB evidence is not established." }, { "type": "runtime_blocker", "scope": "m3-hardware-loop-runtime", "status": "open", "summary": "Live M3 smoke reached DEV simulators, but patch-panel active DO1 -> DI1 connection is missing." } ], "milestones": [ { "id": "M0", "status": "pass", "commandCount": 6, "evidenceCount": 6, "summary": "Frozen contract, artifact, boundary, drift, and evidence fixtures are parseable and aligned to the DEV boundary." }, { "id": "M1", "status": "pass", "commandCount": 1, "evidenceCount": 4, "summary": "The local M1 contract smoke passes." }, { "id": "M2", "status": "pass", "commandCount": 1, "evidenceCount": 3, "summary": "The deploy smoke remains fixture-only and validates the frozen route phases and artifact metadata." }, { "id": "M3", "status": "blocked", "commandCount": 2, "evidenceCount": 3, "summary": "Local M3 remains green, but active DEV-LIVE M3 is blocked by hardware loop topology." }, { "id": "M4", "status": "blocked", "commandCount": 2, "evidenceCount": 2, "summary": "Local M4 remains green, but active DEV-LIVE M4 is blocked at DB live readiness before agent runtime scheduling." }, { "id": "M5", "status": "blocked", "commandCount": 3, "evidenceCount": 4, "summary": "The M5 orchestration is green in dry-run mode, but active DEV-LIVE acceptance is blocked by DB live and hardware loop evidence." } ], "artifactCount": 13, "healthCount": 14, "gatewaySessionCount": 2, "boxResourceCount": 2, "patchPanelCount": 1, "operationCount": 2, "evidenceCount": 2, "traceCount": 8, "auditCount": 7, "cleanupCount": 2, "artifacts": [ { "serviceId": "hwlab-edge-proxy", "commitId": "caa9ed0", "image": "hwlab-edge-proxy", "tag": "dry-run-caa9ed0", "digest": "sha256:1111111111111111111111111111111111111111111111111111111111111111", "digestNotApplicableReason": null, "buildSource": "pikasTech/HWLAB@origin/main#dry-run-fixture", "deployEnv": "dev", "healthTimestamp": "2026-05-21T00:00:00.000Z" }, { "serviceId": "hwlab-tunnel-client", "commitId": "caa9ed0", "image": "hwlab-tunnel-client", "tag": "dry-run-caa9ed0", "digest": "sha256:2222222222222222222222222222222222222222222222222222222222222222", "digestNotApplicableReason": null, "buildSource": "pikasTech/HWLAB@origin/main#dry-run-fixture", "deployEnv": "dev", "healthTimestamp": "2026-05-21T00:00:00.000Z" }, { "serviceId": "hwlab-router", "commitId": "caa9ed0", "image": "hwlab-router", "tag": "dry-run-caa9ed0", "digest": "sha256:3333333333333333333333333333333333333333333333333333333333333333", "digestNotApplicableReason": null, "buildSource": "pikasTech/HWLAB@origin/main#dry-run-fixture", "deployEnv": "dev", "healthTimestamp": "2026-05-21T00:00:00.000Z" }, { "serviceId": "hwlab-cloud-api", "commitId": "caa9ed0", "image": "hwlab-cloud-api", "tag": "dry-run-caa9ed0", "digest": "sha256:4444444444444444444444444444444444444444444444444444444444444444", "digestNotApplicableReason": null, "buildSource": "pikasTech/HWLAB@origin/main#dry-run-fixture", "deployEnv": "dev", "healthTimestamp": "2026-05-21T00:00:00.000Z" }, { "serviceId": "hwlab-cloud-web", "commitId": "caa9ed0", "image": "hwlab-cloud-web-static-assets", "tag": "dry-run-caa9ed0", "digest": "not_applicable", "digestNotApplicableReason": "static asset digest is produced by the future DEV build pipeline, not this local dry-run fixture", "buildSource": "pikasTech/HWLAB@origin/main#dry-run-fixture", "deployEnv": "dev", "healthTimestamp": "2026-05-21T00:00:00.000Z" }, { "serviceId": "hwlab-gateway", "commitId": "caa9ed0", "image": "hwlab-gateway", "tag": "dry-run-caa9ed0", "digest": "sha256:5555555555555555555555555555555555555555555555555555555555555555", "digestNotApplicableReason": null, "buildSource": "pikasTech/HWLAB@origin/main#dry-run-fixture", "deployEnv": "dev", "healthTimestamp": "2026-05-21T00:00:00.000Z" }, { "serviceId": "hwlab-gateway-simu", "commitId": "caa9ed0", "image": "hwlab-gateway-simu", "tag": "dry-run-caa9ed0", "digest": "sha256:6666666666666666666666666666666666666666666666666666666666666666", "digestNotApplicableReason": null, "buildSource": "pikasTech/HWLAB@origin/main#dry-run-fixture", "deployEnv": "dev", "healthTimestamp": "2026-05-21T00:00:00.000Z" }, { "serviceId": "hwlab-box-simu", "commitId": "caa9ed0", "image": "hwlab-box-simu", "tag": "dry-run-caa9ed0", "digest": "sha256:7777777777777777777777777777777777777777777777777777777777777777", "digestNotApplicableReason": null, "buildSource": "pikasTech/HWLAB@origin/main#dry-run-fixture", "deployEnv": "dev", "healthTimestamp": "2026-05-21T00:00:00.000Z" }, { "serviceId": "hwlab-patch-panel", "commitId": "caa9ed0", "image": "hwlab-patch-panel", "tag": "dry-run-caa9ed0", "digest": "sha256:8888888888888888888888888888888888888888888888888888888888888888", "digestNotApplicableReason": null, "buildSource": "pikasTech/HWLAB@origin/main#dry-run-fixture", "deployEnv": "dev", "healthTimestamp": "2026-05-21T00:00:00.000Z" }, { "serviceId": "hwlab-agent-mgr", "commitId": "caa9ed0", "image": "hwlab-agent-mgr", "tag": "dry-run-caa9ed0", "digest": "sha256:9999999999999999999999999999999999999999999999999999999999999999", "digestNotApplicableReason": null, "buildSource": "pikasTech/HWLAB@origin/main#dry-run-fixture", "deployEnv": "dev", "healthTimestamp": "2026-05-21T00:00:00.000Z" }, { "serviceId": "hwlab-agent-worker", "commitId": "caa9ed0", "image": "hwlab-agent-worker", "tag": "dry-run-caa9ed0", "digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "digestNotApplicableReason": null, "buildSource": "pikasTech/HWLAB@origin/main#dry-run-fixture", "deployEnv": "dev", "healthTimestamp": "2026-05-21T00:00:00.000Z" }, { "serviceId": "hwlab-agent-skills", "commitId": "caa9ed0", "image": "hwlab-agent-runtime-skills", "tag": "dry-run-caa9ed0", "digest": "not_applicable", "digestNotApplicableReason": "skill bundle digest is produced by the future DEV build pipeline, not this local dry-run fixture", "buildSource": "pikasTech/HWLAB@origin/main#dry-run-fixture", "deployEnv": "dev", "healthTimestamp": "2026-05-21T00:00:00.000Z" }, { "serviceId": "hwlab-cli", "commitId": "caa9ed0", "image": "hwlab-cli-npm-package", "tag": "dry-run-caa9ed0", "digest": "not_applicable", "digestNotApplicableReason": "local CLI package is not containerized in this dry-run fixture", "buildSource": "pikasTech/HWLAB@origin/main#dry-run-fixture", "deployEnv": "dev", "healthTimestamp": "2026-05-21T00:00:00.000Z" } ], "health": [ { "healthId": "hlt_m5-dev-ingress", "serviceId": "hwlab-edge-proxy", "component": "DEV ingress", "status": "healthy", "deployEnv": "dev", "endpoint": "http://74.48.78.17:16667/health", "observedBy": "fixture", "dryRun": true, "healthTimestamp": "2026-05-21T00:00:00.000Z" }, { "healthId": "hlt_m5-edge-route", "serviceId": "hwlab-edge-proxy", "component": "master edge proxy", "status": "healthy", "deployEnv": "dev", "endpoint": "http://74.48.78.17:16667", "observedBy": "fixture", "dryRun": true, "healthTimestamp": "2026-05-21T00:00:00.000Z" }, { "healthId": "hlt_m5-frp", "serviceId": "hwlab-tunnel-client", "component": "frp", "status": "healthy", "deployEnv": "dev", "endpoint": null, "observedBy": "fixture", "dryRun": true, "healthTimestamp": "2026-05-21T00:00:00.000Z" }, { "healthId": "hlt_m5-router", "serviceId": "hwlab-router", "component": "D601 router", "status": "healthy", "deployEnv": "dev", "endpoint": null, "observedBy": "fixture", "dryRun": true, "healthTimestamp": "2026-05-21T00:00:00.000Z" }, { "healthId": "hlt_m5-cloud-api", "serviceId": "hwlab-cloud-api", "component": "Cloud API", "status": "healthy", "deployEnv": "dev", "endpoint": null, "observedBy": "fixture", "dryRun": true, "healthTimestamp": "2026-05-21T00:00:00.000Z" }, { "healthId": "hlt_m5-cloud-web", "serviceId": "hwlab-cloud-web", "component": "Cloud Web", "status": "healthy", "deployEnv": "dev", "endpoint": "http://74.48.78.17:16667", "observedBy": "fixture", "dryRun": true, "healthTimestamp": "2026-05-21T00:00:00.000Z" }, { "healthId": "hlt_m5-gateway", "serviceId": "hwlab-gateway", "component": "Gateway", "status": "healthy", "deployEnv": "dev", "endpoint": null, "observedBy": "fixture", "dryRun": true, "healthTimestamp": "2026-05-21T00:00:00.000Z" }, { "healthId": "hlt_m5-gateway-simu", "serviceId": "hwlab-gateway-simu", "component": "Gateway simulator", "status": "healthy", "deployEnv": "dev", "endpoint": null, "observedBy": "fixture", "dryRun": true, "healthTimestamp": "2026-05-21T00:00:00.000Z" }, { "healthId": "hlt_m5-box-simu", "serviceId": "hwlab-box-simu", "component": "Box simulator", "status": "healthy", "deployEnv": "dev", "endpoint": null, "observedBy": "fixture", "dryRun": true, "healthTimestamp": "2026-05-21T00:00:00.000Z" }, { "healthId": "hlt_m5-patch-panel", "serviceId": "hwlab-patch-panel", "component": "Patch panel", "status": "healthy", "deployEnv": "dev", "endpoint": null, "observedBy": "fixture", "dryRun": true, "healthTimestamp": "2026-05-21T00:00:00.000Z" }, { "healthId": "hlt_m5-agent-mgr", "serviceId": "hwlab-agent-mgr", "component": "Agent manager", "status": "healthy", "deployEnv": "dev", "endpoint": null, "observedBy": "fixture", "dryRun": true, "healthTimestamp": "2026-05-21T00:00:00.000Z" }, { "healthId": "hlt_m5-agent-worker", "serviceId": "hwlab-agent-worker", "component": "Agent worker", "status": "healthy", "deployEnv": "dev", "endpoint": null, "observedBy": "fixture", "dryRun": true, "healthTimestamp": "2026-05-21T00:00:00.000Z" }, { "healthId": "hlt_m5-agent-skills", "serviceId": "hwlab-agent-skills", "component": "Agent skills", "status": "healthy", "deployEnv": "dev", "endpoint": null, "observedBy": "fixture", "dryRun": true, "healthTimestamp": "2026-05-21T00:00:00.000Z" }, { "healthId": "hlt_m5-cli", "serviceId": "hwlab-cli", "component": "CLI", "status": "healthy", "deployEnv": "dev", "endpoint": "http://74.48.78.17:16667", "observedBy": "fixture", "dryRun": true, "healthTimestamp": "2026-05-21T00:00:00.000Z" } ], "topology": { "projectId": "prj_m3_hardware_loop", "projectStatus": "blocked", "gateways": [ { "gatewaySessionId": "gws_gwsimu_1", "serviceId": "hwlab-gateway-simu", "gatewayId": "gwsimu_1", "status": "connected", "environment": "dev", "endpoint": null }, { "gatewaySessionId": "gws_gwsimu_2", "serviceId": "hwlab-gateway-simu", "gatewayId": "gwsimu_2", "status": "connected", "environment": "dev", "endpoint": null } ], "boxResources": [ { "resourceId": "res_boxsimu_1", "gatewaySessionId": "gws_gwsimu_1", "boxId": "boxsimu_1", "resourceType": "simulator_endpoint", "name": "BOX-SIMU 1 source DO1", "state": "available", "environment": "dev" }, { "resourceId": "res_boxsimu_2", "gatewaySessionId": "gws_gwsimu_2", "boxId": "boxsimu_2", "resourceType": "simulator_endpoint", "name": "BOX-SIMU 2 target DI1", "state": "available", "environment": "dev" } ], "patchPanel": { "patchPanelStatusId": "pps_m3_hardware_loop", "serviceId": "hwlab-patch-panel", "state": "blocked", "environment": "dev", "activeConnectionCount": 1, "activeConnections": [ { "fromResourceId": "res_boxsimu_1", "fromPort": "DO1", "toResourceId": "res_boxsimu_2", "toPort": "DI1" } ] } }, "m5DryRunTopology": { "projectId": "proj_m5-mvp-e2e", "projectStatus": "active", "gateways": [ { "gatewaySessionId": "gws_m5-0001", "serviceId": "hwlab-gateway", "gatewayId": "gtw_m5-dev-boundary", "status": "connected", "environment": "dev", "endpoint": "http://74.48.78.17:16667/gateway" }, { "gatewaySessionId": "gws_m5-simu-0001", "serviceId": "hwlab-gateway-simu", "gatewayId": "gtw_m5-simu", "status": "connected", "environment": "dev", "endpoint": null } ], "boxResources": [ { "resourceId": "res_m5-control-relay", "gatewaySessionId": "gws_m5-0001", "boxId": "box_m5-control", "resourceType": "relay", "name": "M5 control relay", "state": "available", "environment": "dev" }, { "resourceId": "res_m5-target-board", "gatewaySessionId": "gws_m5-0001", "boxId": "box_m5-target", "resourceType": "board", "name": "M5 target board", "state": "available", "environment": "dev" } ], "patchPanel": { "patchPanelStatusId": "pps_m5-0001", "serviceId": "hwlab-patch-panel", "state": "active", "environment": "dev", "activeConnectionCount": 1, "activeConnections": [ { "fromResourceId": "res_m5-control-relay", "fromPort": "out1", "toResourceId": "res_m5-target-board", "toPort": "reset" } ] } }, "agent": { "agentSessionId": "agt_m5-0001", "agentServiceId": "hwlab-agent-mgr", "agentStatus": "completed", "workerSessionId": "wkr_m5-0001", "workerServiceId": "hwlab-agent-worker", "workerStatus": "completed", "projectId": "proj_m5-mvp-e2e", "environment": "dev", "cleanupId": "cln_m5-worker" }, "operations": [ { "operationId": "op_m5-direct-0001", "requestedBy": "user_m5-dry-run", "status": "succeeded", "resourceId": "res_m5-control-relay", "capabilityId": "cap_m5-relay-set", "agentSessionId": null, "workerSessionId": null, "environment": "dev", "dryRun": true, "requestedAt": "2026-05-21T00:02:00.000Z", "updatedAt": "2026-05-21T00:02:30.000Z" }, { "operationId": "op_m5-agent-0001", "requestedBy": "agent_m5-dry-run", "status": "succeeded", "resourceId": "res_m5-control-relay", "capabilityId": "cap_m5-relay-set", "agentSessionId": "agt_m5-0001", "workerSessionId": "wkr_m5-0001", "environment": "dev", "dryRun": true, "requestedAt": "2026-05-21T00:03:00.000Z", "updatedAt": "2026-05-21T00:03:30.000Z" } ], "auditEvents": [ { "auditId": "aud_m5-project-selected", "traceId": "trc_m5-project", "action": "project.select", "targetType": "project", "targetId": "proj_m5-mvp-e2e", "projectId": "proj_m5-mvp-e2e", "gatewaySessionId": null, "operationId": null, "workerSessionId": null, "serviceId": "hwlab-cloud-api", "environment": "dev", "outcome": "succeeded", "dryRun": true, "occurredAt": "2026-05-21T00:00:00.000Z" }, { "auditId": "aud_m5-gateway-started", "traceId": "trc_m5-gateway", "action": "gateway.session.start", "targetType": "gateway_session", "targetId": "gws_m5-0001", "projectId": "proj_m5-mvp-e2e", "gatewaySessionId": "gws_m5-0001", "operationId": null, "workerSessionId": null, "serviceId": "hwlab-gateway", "environment": "dev", "outcome": "succeeded", "dryRun": true, "occurredAt": "2026-05-21T00:00:30.000Z" }, { "auditId": "aud_m5-wiring-applied", "traceId": "trc_m5-wiring", "action": "wiring.apply", "targetType": "wiring_config", "targetId": "wir_m5-0001", "projectId": "proj_m5-mvp-e2e", "gatewaySessionId": "gws_m5-0001", "operationId": null, "workerSessionId": null, "serviceId": "hwlab-patch-panel", "environment": "dev", "outcome": "succeeded", "dryRun": true, "occurredAt": "2026-05-21T00:01:00.000Z" }, { "auditId": "aud_m5-direct-operation", "traceId": "trc_m5-direct-0001", "action": "hardware.operation.request", "targetType": "hardware_operation", "targetId": "op_m5-direct-0001", "projectId": "proj_m5-mvp-e2e", "gatewaySessionId": "gws_m5-0001", "operationId": "op_m5-direct-0001", "workerSessionId": null, "serviceId": "hwlab-cloud-api", "environment": "dev", "outcome": "succeeded", "dryRun": true, "occurredAt": "2026-05-21T00:02:30.000Z" }, { "auditId": "aud_m5-agent-session", "traceId": "trc_m5-agent-session", "action": "agent.session.start", "targetType": "agent_session", "targetId": "agt_m5-0001", "projectId": "proj_m5-mvp-e2e", "gatewaySessionId": null, "operationId": null, "workerSessionId": "wkr_m5-0001", "serviceId": "hwlab-agent-mgr", "environment": "dev", "outcome": "succeeded", "dryRun": true, "occurredAt": "2026-05-21T00:02:45.000Z" }, { "auditId": "aud_m5-agent-operation", "traceId": "trc_m5-agent-0001", "action": "hardware.operation.request", "targetType": "hardware_operation", "targetId": "op_m5-agent-0001", "projectId": "proj_m5-mvp-e2e", "gatewaySessionId": "gws_m5-0001", "operationId": "op_m5-agent-0001", "workerSessionId": "wkr_m5-0001", "serviceId": "hwlab-agent-worker", "environment": "dev", "outcome": "succeeded", "dryRun": true, "occurredAt": "2026-05-21T00:03:30.000Z" }, { "auditId": "aud_m5-cleanup", "traceId": "trc_m5-cleanup", "action": "worker.cleanup", "targetType": "worker_session", "targetId": "wkr_m5-0001", "projectId": "proj_m5-mvp-e2e", "gatewaySessionId": "gws_m5-0001", "operationId": null, "workerSessionId": "wkr_m5-0001", "serviceId": "hwlab-agent-worker", "environment": "dev", "outcome": "succeeded", "dryRun": true, "occurredAt": "2026-05-21T00:05:00.000Z" } ], "evidenceRecords": [ { "evidenceId": "evi_m5-direct-0001", "operationId": "op_m5-direct-0001", "agentSessionId": null, "workerSessionId": null, "kind": "trace", "uri": "fixtures/mvp/m5-e2e/evidence/direct-operation.txt", "sha256": "4cd5cc2c942501b55f7a32f4184e9a1c920b31f13110f44ec68ddc0ad7dc1e34", "serviceId": "hwlab-cloud-api", "environment": "dev", "traceId": "trc_m5-direct-0001", "dryRun": true, "createdAt": "2026-05-21T00:02:40.000Z" }, { "evidenceId": "evi_m5-agent-0001", "operationId": "op_m5-agent-0001", "agentSessionId": "agt_m5-0001", "workerSessionId": "wkr_m5-0001", "kind": "trace", "uri": "fixtures/mvp/m5-e2e/evidence/agent-operation.txt", "sha256": "96e7ffa99efd78b3d5d1b1dfd08be2f077f618dacf786b47f764794714c15c1c", "serviceId": "hwlab-agent-worker", "environment": "dev", "traceId": "trc_m5-agent-0001", "dryRun": true, "createdAt": "2026-05-21T00:03:40.000Z" } ], "steps": [ { "id": "step-dev-health", "order": 1, "title": "DEV health", "kind": "health", "requires": [], "inputs": [ "endpoint", "health:hlt_m5-dev-ingress", "health:hlt_m5-edge-route", "health:hlt_m5-frp", "health:hlt_m5-router", "health:hlt_m5-cloud-api", "health:hlt_m5-cloud-web" ], "outputs": [ "route_m5-dev", "tun_m5-d601", "hwlab-dev", "hwlab-cloud-api", "hwlab-cloud-web" ], "acceptanceStepIds": [ "static-contract-parse", "endpoint-freeze", "dev-ingress-health", "edge-route", "frp-tunnel", "d601-router", "cloud-surface" ] }, { "id": "step-gateway-box-status", "order": 2, "title": "gateway/box status", "kind": "status", "requires": [ "step-dev-health" ], "inputs": [ "gatewaySession:gws_m5-0001", "gatewaySession:gws_m5-simu-0001", "boxResource:res_m5-control-relay", "boxResource:res_m5-target-board", "capability:cap_m5-relay-set", "capability:cap_m5-board-reset" ], "outputs": [ "gws_m5-0001", "res_m5-control-relay", "res_m5-target-board", "cap_m5-relay-set", "cap_m5-board-reset" ], "acceptanceStepIds": [ "gateway-sim-patch-panel" ] }, { "id": "step-wiring", "order": 3, "title": "wiring", "kind": "wiring", "requires": [ "step-gateway-box-status" ], "inputs": [ "wiringConfig:wir_m5-0001", "patchPanelStatus:pps_m5-0001" ], "outputs": [ "wir_m5-0001", "pps_m5-0001" ], "acceptanceStepIds": [ "gateway-sim-patch-panel" ] }, { "id": "step-direct-hardware-call", "order": 4, "title": "direct hardware call", "kind": "hardware_operation", "requires": [ "step-wiring" ], "inputs": [ "rpc:direct-hardware-request", "operation:op_m5-direct-0001", "resource:res_m5-control-relay", "capability:cap_m5-relay-set", "patchPanelStatus:pps_m5-0001" ], "outputs": [ "op_m5-direct-0001", "trc_m5-direct-0001" ], "acceptanceStepIds": [ "gateway-sim-patch-panel" ] }, { "id": "step-audit", "order": 5, "title": "audit", "kind": "audit", "requires": [ "step-direct-hardware-call" ], "inputs": [ "audit:aud_m5-project-selected", "audit:aud_m5-gateway-started", "audit:aud_m5-wiring-applied", "audit:aud_m5-direct-operation" ], "outputs": [ "aud_m5-direct-operation" ], "acceptanceStepIds": [ "artifact-observability" ] }, { "id": "step-agent-session", "order": 6, "title": "agent session", "kind": "agent", "requires": [ "step-audit" ], "inputs": [ "agentSession:agt_m5-0001", "workerSession:wkr_m5-0001", "health:hlt_m5-agent-mgr", "health:hlt_m5-agent-worker", "health:hlt_m5-agent-skills" ], "outputs": [ "agt_m5-0001", "wkr_m5-0001" ], "acceptanceStepIds": [ "agent-runtime" ] }, { "id": "step-agent-hardware-call", "order": 7, "title": "agent hardware call", "kind": "hardware_operation", "requires": [ "step-agent-session", "step-wiring" ], "inputs": [ "rpc:agent-hardware-request", "operation:op_m5-agent-0001", "agentSession:agt_m5-0001", "workerSession:wkr_m5-0001", "resource:res_m5-control-relay", "capability:cap_m5-relay-set", "patchPanelStatus:pps_m5-0001" ], "outputs": [ "op_m5-agent-0001", "trc_m5-agent-0001" ], "acceptanceStepIds": [ "agent-runtime" ] }, { "id": "step-evidence", "order": 8, "title": "evidence", "kind": "evidence", "requires": [ "step-direct-hardware-call", "step-agent-hardware-call" ], "inputs": [ "trace:trc_m5-direct-0001", "trace:trc_m5-agent-0001", "evidence:evi_m5-direct-0001", "evidence:evi_m5-agent-0001" ], "outputs": [ "evi_m5-direct-0001", "evi_m5-agent-0001" ], "acceptanceStepIds": [ "agent-runtime", "artifact-observability" ] }, { "id": "step-cleanup", "order": 9, "title": "cleanup", "kind": "cleanup", "requires": [ "step-evidence" ], "inputs": [ "cleanup:cln_m5-worker", "cleanup:cln_m5-gateway-state", "audit:aud_m5-cleanup" ], "outputs": [ "cln_m5-worker", "cln_m5-gateway-state" ], "acceptanceStepIds": [ "agent-runtime" ] } ], "realDevGate": { "sourcePlanCommand": "hwlab-cli test e2e --env dev --mvp", "command": "hwlab-cli test e2e --env dev --mvp --live --confirm-dev --confirmed-non-production", "requiresAllBlockersClear": true, "requiresDryRunPass": true, "requiresArtifactObservability": true, "requiresD601RouteObservation": true, "requiresHumanApprovalForRealDev": true }, "safety": { "mode": "dry-run", "allowNetwork": false, "allowDeploy": false, "allowBrowserE2E": false, "allowSecrets": false, "prohibitedActions": [ "real-dev-deploy", "prod-deploy", "prod-smoke", "browser-e2e", "heavyweight-e2e", "secret-or-token-read", "force-push", "unidesk-runtime-substitution" ] } };