Files
pikasTech-HWLAB/fixtures/mvp/m5-e2e/dry-run-plan.json
T

1354 lines
38 KiB
JSON

{
"$schema": "https://hwlab.pikastech.local/fixtures/mvp/m5-e2e/dry-run-plan.schema.json",
"$id": "https://hwlab.pikastech.local/fixtures/mvp/m5-e2e/dry-run-plan.json",
"planVersion": "m5-v1",
"issue": "pikasTech/HWLAB#26",
"mode": "dry-run",
"environment": "dev",
"endpoint": "http://74.48.78.17:16667",
"safety": {
"allowNetwork": false,
"allowDeploy": false,
"allowBrowserE2E": false,
"allowSecrets": false,
"allowedSourceGlobs": [
"protocol/**",
"fixtures/mvp/m5-e2e/dev-acceptance-checklist.json",
"docs/reference/MVP-e2e-acceptance.md",
"fixtures/mvp/runtime.json",
"fixtures/mvp/m5-e2e/**"
],
"prohibitedActions": [
"real-dev-deploy",
"prod-deploy",
"prod-smoke",
"browser-e2e",
"heavyweight-e2e",
"secret-or-token-read",
"force-push",
"unidesk-runtime-substitution"
]
},
"m0ToM4Dependencies": [
{
"id": "m0-contract-audit",
"status": "contract_only",
"provides": [
"frozen service ids",
"protocol schemas",
"MVP E2E sequence contract"
],
"requiredFor": [
"step-dev-health",
"step-direct-hardware-call",
"step-agent-hardware-call",
"step-evidence"
]
},
{
"id": "m1-local-smoke",
"status": "contract_only",
"provides": [
"local parse and smoke boundary",
"dry-run safety posture"
],
"requiredFor": [
"step-dev-health",
"step-cleanup"
]
},
{
"id": "m2-cloud-core",
"status": "contract_only",
"provides": [
"project record",
"JSON-RPC envelope",
"audit surface"
],
"requiredFor": [
"step-audit",
"step-direct-hardware-call",
"step-agent-hardware-call"
]
},
{
"id": "m3-hardware-loop",
"status": "contract_only",
"provides": [
"gateway session",
"box resources",
"box capabilities",
"wiring config",
"patch-panel status"
],
"requiredFor": [
"step-gateway-box-status",
"step-wiring",
"step-direct-hardware-call",
"step-agent-hardware-call"
]
},
{
"id": "m4-agent-runtime",
"status": "contract_only",
"provides": [
"agent session",
"worker session",
"trace events",
"agent evidence",
"worker cleanup"
],
"requiredFor": [
"step-agent-session",
"step-agent-hardware-call",
"step-evidence",
"step-cleanup"
]
}
],
"artifacts": [
{
"serviceId": "hwlab-edge-proxy",
"commitId": "caa9ed0",
"image": "hwlab-edge-proxy",
"tag": "dry-run-caa9ed0",
"digest": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"healthTimestamp": "2026-05-21T00:00:00.000Z",
"observedBy": "fixture",
"dryRun": true,
"output": {
"routeId": "route_m5-dev",
"nextHopServiceId": "hwlab-tunnel-client"
}
},
{
"healthId": "hlt_m5-edge-route",
"serviceId": "hwlab-edge-proxy",
"component": "master edge proxy",
"status": "healthy",
"deployEnv": "dev",
"endpoint": "http://74.48.78.17:16667",
"healthTimestamp": "2026-05-21T00:00:00.000Z",
"observedBy": "fixture",
"dryRun": true,
"output": {
"routeId": "route_m5-dev",
"targetServiceId": "hwlab-tunnel-client"
}
},
{
"healthId": "hlt_m5-frp",
"serviceId": "hwlab-tunnel-client",
"component": "frp",
"status": "healthy",
"deployEnv": "dev",
"healthTimestamp": "2026-05-21T00:00:00.000Z",
"observedBy": "fixture",
"dryRun": true,
"output": {
"tunnelId": "tun_m5-d601",
"targetServiceId": "hwlab-router",
"namespace": "hwlab-dev"
}
},
{
"healthId": "hlt_m5-router",
"serviceId": "hwlab-router",
"component": "D601 router",
"status": "healthy",
"deployEnv": "dev",
"healthTimestamp": "2026-05-21T00:00:00.000Z",
"observedBy": "fixture",
"dryRun": true,
"output": {
"namespace": "hwlab-dev",
"routeTargetServiceIds": [
"hwlab-cloud-api",
"hwlab-cloud-web"
]
}
},
{
"healthId": "hlt_m5-cloud-api",
"serviceId": "hwlab-cloud-api",
"component": "Cloud API",
"status": "healthy",
"deployEnv": "dev",
"healthTimestamp": "2026-05-21T00:00:00.000Z",
"observedBy": "fixture",
"dryRun": true,
"output": {
"live": true,
"rpcProbe": "json-rpc-envelope"
}
},
{
"healthId": "hlt_m5-cloud-web",
"serviceId": "hwlab-cloud-web",
"component": "Cloud Web",
"status": "healthy",
"deployEnv": "dev",
"endpoint": "http://74.48.78.17:16667",
"healthTimestamp": "2026-05-21T00:00:00.000Z",
"observedBy": "fixture",
"dryRun": true,
"output": {
"directHardwareCall": false
}
},
{
"healthId": "hlt_m5-gateway",
"serviceId": "hwlab-gateway",
"component": "Gateway",
"status": "healthy",
"deployEnv": "dev",
"healthTimestamp": "2026-05-21T00:00:00.000Z",
"observedBy": "fixture",
"dryRun": true,
"output": {
"gatewaySessionId": "gws_m5-0001",
"patchPanelRequired": true
}
},
{
"healthId": "hlt_m5-gateway-simu",
"serviceId": "hwlab-gateway-simu",
"component": "Gateway simulator",
"status": "healthy",
"deployEnv": "dev",
"healthTimestamp": "2026-05-21T00:00:00.000Z",
"observedBy": "fixture",
"dryRun": true,
"output": {
"gatewaySessionId": "gws_m5-simu-0001",
"boxIds": [
"box_m5-control",
"box_m5-target"
]
}
},
{
"healthId": "hlt_m5-box-simu",
"serviceId": "hwlab-box-simu",
"component": "Box simulator",
"status": "healthy",
"deployEnv": "dev",
"healthTimestamp": "2026-05-21T00:00:00.000Z",
"observedBy": "fixture",
"dryRun": true,
"output": {
"resourceIds": [
"res_m5-control-relay",
"res_m5-target-board"
],
"patchPanelOnlyPropagation": true
}
},
{
"healthId": "hlt_m5-patch-panel",
"serviceId": "hwlab-patch-panel",
"component": "Patch panel",
"status": "healthy",
"deployEnv": "dev",
"healthTimestamp": "2026-05-21T00:00:00.000Z",
"observedBy": "fixture",
"dryRun": true,
"output": {
"patchPanelStatusId": "pps_m5-0001",
"wiringConfigId": "wir_m5-0001"
}
},
{
"healthId": "hlt_m5-agent-mgr",
"serviceId": "hwlab-agent-mgr",
"component": "Agent manager",
"status": "healthy",
"deployEnv": "dev",
"healthTimestamp": "2026-05-21T00:00:00.000Z",
"observedBy": "fixture",
"dryRun": true,
"output": {
"agentSessionId": "agt_m5-0001",
"workerLeak": false
}
},
{
"healthId": "hlt_m5-agent-worker",
"serviceId": "hwlab-agent-worker",
"component": "Agent worker",
"status": "healthy",
"deployEnv": "dev",
"healthTimestamp": "2026-05-21T00:00:00.000Z",
"observedBy": "fixture",
"dryRun": true,
"output": {
"workerSessionId": "wkr_m5-0001",
"scopedProjectId": "proj_m5-mvp-e2e"
}
},
{
"healthId": "hlt_m5-agent-skills",
"serviceId": "hwlab-agent-skills",
"component": "Agent skills",
"status": "healthy",
"deployEnv": "dev",
"healthTimestamp": "2026-05-21T00:00:00.000Z",
"observedBy": "fixture",
"dryRun": true,
"output": {
"skillName": "hwlab-agent-runtime"
}
},
{
"healthId": "hlt_m5-cli",
"serviceId": "hwlab-cli",
"component": "CLI",
"status": "healthy",
"deployEnv": "dev",
"endpoint": "http://74.48.78.17:16667",
"healthTimestamp": "2026-05-21T00:00:00.000Z",
"observedBy": "fixture",
"dryRun": true,
"output": {
"command": "hwlab-cli test e2e --env dev --mvp --dry-run"
}
}
],
"project": {
"projectId": "proj_m5-mvp-e2e",
"name": "HWLAB M5 MVP E2E Dry Run",
"description": "Static dry-run project that validates MVP E2E orchestration dependencies without touching DEV.",
"status": "active",
"environment": "dev",
"labels": {
"track": "mvp",
"milestone": "m5"
},
"createdBy": "service_hwlab-cli",
"createdAt": "2026-05-21T00:00:00.000Z",
"updatedAt": "2026-05-21T00:00:00.000Z"
},
"gatewaySessions": [
{
"gatewaySessionId": "gws_m5-0001",
"projectId": "proj_m5-mvp-e2e",
"serviceId": "hwlab-gateway",
"gatewayId": "gtw_m5-dev-boundary",
"endpoint": "http://74.48.78.17:16667/gateway",
"status": "connected",
"environment": "dev",
"startedAt": "2026-05-21T00:00:00.000Z",
"lastSeenAt": "2026-05-21T00:00:00.000Z",
"labels": {
"mode": "dry-run"
}
},
{
"gatewaySessionId": "gws_m5-simu-0001",
"projectId": "proj_m5-mvp-e2e",
"serviceId": "hwlab-gateway-simu",
"gatewayId": "gtw_m5-simu",
"status": "connected",
"environment": "dev",
"startedAt": "2026-05-21T00:00:00.000Z",
"lastSeenAt": "2026-05-21T00:00:00.000Z",
"labels": {
"mode": "dry-run"
}
}
],
"boxResources": [
{
"resourceId": "res_m5-control-relay",
"projectId": "proj_m5-mvp-e2e",
"gatewaySessionId": "gws_m5-0001",
"boxId": "box_m5-control",
"resourceType": "relay",
"name": "M5 control relay",
"state": "available",
"environment": "dev",
"metadata": {
"ports": [
"out1"
]
},
"createdAt": "2026-05-21T00:00:00.000Z",
"updatedAt": "2026-05-21T00:00:00.000Z"
},
{
"resourceId": "res_m5-target-board",
"projectId": "proj_m5-mvp-e2e",
"gatewaySessionId": "gws_m5-0001",
"boxId": "box_m5-target",
"resourceType": "board",
"name": "M5 target board",
"state": "available",
"environment": "dev",
"metadata": {
"ports": [
"reset"
]
},
"createdAt": "2026-05-21T00:00:00.000Z",
"updatedAt": "2026-05-21T00:00:00.000Z"
}
],
"boxCapabilities": [
{
"capabilityId": "cap_m5-relay-set",
"resourceId": "res_m5-control-relay",
"projectId": "proj_m5-mvp-e2e",
"name": "relay.set",
"description": "Set relay output state through the gateway and patch panel.",
"direction": "output",
"valueType": "boolean",
"constraints": {
"allowedValues": [
true,
false
]
},
"mutatesState": true,
"createdAt": "2026-05-21T00:00:00.000Z",
"updatedAt": "2026-05-21T00:00:00.000Z"
},
{
"capabilityId": "cap_m5-board-reset",
"resourceId": "res_m5-target-board",
"projectId": "proj_m5-mvp-e2e",
"name": "board.reset",
"description": "Receive a reset signal from the patch panel owned connection.",
"direction": "input",
"valueType": "boolean",
"constraints": {
"allowedValues": [
true,
false
]
},
"mutatesState": false,
"createdAt": "2026-05-21T00:00:00.000Z",
"updatedAt": "2026-05-21T00:00:00.000Z"
}
],
"wiringConfig": {
"wiringConfigId": "wir_m5-0001",
"projectId": "proj_m5-mvp-e2e",
"gatewaySessionId": "gws_m5-0001",
"name": "M5 relay to target board reset",
"status": "active",
"connections": [
{
"from": {
"resourceId": "res_m5-control-relay",
"port": "out1",
"capabilityId": "cap_m5-relay-set"
},
"to": {
"resourceId": "res_m5-target-board",
"port": "reset",
"capabilityId": "cap_m5-board-reset"
},
"mode": "exclusive"
}
],
"constraints": {
"patchPanelOwnsRouting": true,
"directBoxBypassAllowed": false
},
"createdAt": "2026-05-21T00:00:00.000Z",
"updatedAt": "2026-05-21T00:00:00.000Z"
},
"patchPanelStatus": {
"patchPanelStatusId": "pps_m5-0001",
"projectId": "proj_m5-mvp-e2e",
"gatewaySessionId": "gws_m5-0001",
"wiringConfigId": "wir_m5-0001",
"serviceId": "hwlab-patch-panel",
"state": "active",
"environment": "dev",
"activeConnections": [
{
"fromResourceId": "res_m5-control-relay",
"fromPort": "out1",
"toResourceId": "res_m5-target-board",
"toPort": "reset"
}
],
"observedAt": "2026-05-21T00:00:00.000Z",
"metadata": {
"dryRun": true,
"sourceWiringConfigId": "wir_m5-0001"
}
},
"agentSession": {
"agentSessionId": "agt_m5-0001",
"projectId": "proj_m5-mvp-e2e",
"serviceId": "hwlab-agent-mgr",
"status": "completed",
"environment": "dev",
"requestedBy": "user_m5-dry-run",
"goal": "Exercise the M5 MVP dry-run hardware call through an agent worker.",
"startedAt": "2026-05-21T00:00:00.000Z",
"completedAt": "2026-05-21T00:05:00.000Z",
"updatedAt": "2026-05-21T00:05:00.000Z",
"metadata": {
"dryRun": true,
"workerSessionId": "wkr_m5-0001",
"cleanupId": "cln_m5-worker"
}
},
"workerSession": {
"workerSessionId": "wkr_m5-0001",
"agentSessionId": "agt_m5-0001",
"projectId": "proj_m5-mvp-e2e",
"serviceId": "hwlab-agent-worker",
"gatewaySessionId": "gws_m5-0001",
"status": "completed",
"environment": "dev",
"startedAt": "2026-05-21T00:01:00.000Z",
"completedAt": "2026-05-21T00:05:00.000Z",
"updatedAt": "2026-05-21T00:05:00.000Z",
"metadata": {
"dryRun": true,
"scopedProjectId": "proj_m5-mvp-e2e",
"workspaceVolumeId": "vol_m5-agent"
}
},
"operations": [
{
"operationId": "op_m5-direct-0001",
"projectId": "proj_m5-mvp-e2e",
"gatewaySessionId": "gws_m5-0001",
"resourceId": "res_m5-control-relay",
"capabilityId": "cap_m5-relay-set",
"requestedBy": "user_m5-dry-run",
"input": {
"value": true,
"dryRun": true
},
"output": {
"accepted": true,
"patchPanelStatusId": "pps_m5-0001"
},
"status": "succeeded",
"environment": "dev",
"requestedAt": "2026-05-21T00:02:00.000Z",
"startedAt": "2026-05-21T00:02:10.000Z",
"completedAt": "2026-05-21T00:02:30.000Z",
"updatedAt": "2026-05-21T00:02:30.000Z"
},
{
"operationId": "op_m5-agent-0001",
"projectId": "proj_m5-mvp-e2e",
"gatewaySessionId": "gws_m5-0001",
"agentSessionId": "agt_m5-0001",
"workerSessionId": "wkr_m5-0001",
"resourceId": "res_m5-control-relay",
"capabilityId": "cap_m5-relay-set",
"requestedBy": "agent_m5-dry-run",
"input": {
"value": false,
"dryRun": true
},
"output": {
"accepted": true,
"patchPanelStatusId": "pps_m5-0001"
},
"status": "succeeded",
"environment": "dev",
"requestedAt": "2026-05-21T00:03:00.000Z",
"startedAt": "2026-05-21T00:03:10.000Z",
"completedAt": "2026-05-21T00:03:30.000Z",
"updatedAt": "2026-05-21T00:03:30.000Z"
}
],
"rpc": [
{
"name": "direct-hardware-request",
"operationId": "op_m5-direct-0001",
"request": {
"jsonrpc": "2.0",
"id": "req_m5-direct-0001",
"method": "hardware.operation.request",
"params": {
"projectId": "proj_m5-mvp-e2e",
"gatewaySessionId": "gws_m5-0001",
"resourceId": "res_m5-control-relay",
"capabilityId": "cap_m5-relay-set",
"input": {
"value": true,
"dryRun": true
}
},
"meta": {
"traceId": "trc_m5-direct-0001",
"serviceId": "hwlab-cloud-api",
"environment": "dev"
}
},
"response": {
"jsonrpc": "2.0",
"id": "req_m5-direct-0001",
"result": {
"accepted": true,
"operationId": "op_m5-direct-0001",
"gatewaySessionId": "gws_m5-0001"
},
"meta": {
"traceId": "trc_m5-direct-0001",
"serviceId": "hwlab-gateway",
"environment": "dev"
}
}
},
{
"name": "agent-hardware-request",
"operationId": "op_m5-agent-0001",
"request": {
"jsonrpc": "2.0",
"id": "req_m5-agent-0001",
"method": "hardware.operation.request",
"params": {
"projectId": "proj_m5-mvp-e2e",
"gatewaySessionId": "gws_m5-0001",
"agentSessionId": "agt_m5-0001",
"workerSessionId": "wkr_m5-0001",
"resourceId": "res_m5-control-relay",
"capabilityId": "cap_m5-relay-set",
"input": {
"value": false,
"dryRun": true
}
},
"meta": {
"traceId": "trc_m5-agent-0001",
"serviceId": "hwlab-agent-worker",
"environment": "dev"
}
},
"response": {
"jsonrpc": "2.0",
"id": "req_m5-agent-0001",
"result": {
"accepted": true,
"operationId": "op_m5-agent-0001",
"gatewaySessionId": "gws_m5-0001",
"agentSessionId": "agt_m5-0001",
"workerSessionId": "wkr_m5-0001"
},
"meta": {
"traceId": "trc_m5-agent-0001",
"serviceId": "hwlab-gateway",
"environment": "dev"
}
}
}
],
"traceEvents": [
{
"traceEventId": "tev_m5-direct-accepted",
"traceId": "trc_m5-direct-0001",
"projectId": "proj_m5-mvp-e2e",
"operationId": "op_m5-direct-0001",
"serviceId": "hwlab-cloud-api",
"level": "info",
"message": "Direct dry-run hardware operation accepted.",
"environment": "dev",
"metadata": {
"state": "accepted"
},
"occurredAt": "2026-05-21T00:02:00.000Z"
},
{
"traceEventId": "tev_m5-direct-dispatched",
"traceId": "trc_m5-direct-0001",
"projectId": "proj_m5-mvp-e2e",
"operationId": "op_m5-direct-0001",
"serviceId": "hwlab-gateway",
"level": "info",
"message": "Direct dry-run hardware operation dispatched to gateway.",
"environment": "dev",
"metadata": {
"state": "dispatched"
},
"occurredAt": "2026-05-21T00:02:05.000Z"
},
{
"traceEventId": "tev_m5-direct-executed",
"traceId": "trc_m5-direct-0001",
"projectId": "proj_m5-mvp-e2e",
"operationId": "op_m5-direct-0001",
"serviceId": "hwlab-patch-panel",
"level": "info",
"message": "Direct dry-run hardware operation executed by patch-panel-owned wiring.",
"environment": "dev",
"metadata": {
"state": "executed"
},
"occurredAt": "2026-05-21T00:02:20.000Z"
},
{
"traceEventId": "tev_m5-direct-completed",
"traceId": "trc_m5-direct-0001",
"projectId": "proj_m5-mvp-e2e",
"operationId": "op_m5-direct-0001",
"serviceId": "hwlab-cloud-api",
"level": "info",
"message": "Direct dry-run hardware operation completed.",
"environment": "dev",
"metadata": {
"state": "completed"
},
"occurredAt": "2026-05-21T00:02:30.000Z"
},
{
"traceEventId": "tev_m5-agent-accepted",
"traceId": "trc_m5-agent-0001",
"projectId": "proj_m5-mvp-e2e",
"agentSessionId": "agt_m5-0001",
"workerSessionId": "wkr_m5-0001",
"operationId": "op_m5-agent-0001",
"serviceId": "hwlab-agent-worker",
"level": "info",
"message": "Agent dry-run hardware operation accepted.",
"environment": "dev",
"metadata": {
"state": "accepted"
},
"occurredAt": "2026-05-21T00:03:00.000Z"
},
{
"traceEventId": "tev_m5-agent-dispatched",
"traceId": "trc_m5-agent-0001",
"projectId": "proj_m5-mvp-e2e",
"agentSessionId": "agt_m5-0001",
"workerSessionId": "wkr_m5-0001",
"operationId": "op_m5-agent-0001",
"serviceId": "hwlab-gateway",
"level": "info",
"message": "Agent dry-run hardware operation dispatched to gateway.",
"environment": "dev",
"metadata": {
"state": "dispatched"
},
"occurredAt": "2026-05-21T00:03:05.000Z"
},
{
"traceEventId": "tev_m5-agent-executed",
"traceId": "trc_m5-agent-0001",
"projectId": "proj_m5-mvp-e2e",
"agentSessionId": "agt_m5-0001",
"workerSessionId": "wkr_m5-0001",
"operationId": "op_m5-agent-0001",
"serviceId": "hwlab-patch-panel",
"level": "info",
"message": "Agent dry-run hardware operation executed by patch-panel-owned wiring.",
"environment": "dev",
"metadata": {
"state": "executed"
},
"occurredAt": "2026-05-21T00:03:20.000Z"
},
{
"traceEventId": "tev_m5-agent-completed",
"traceId": "trc_m5-agent-0001",
"projectId": "proj_m5-mvp-e2e",
"agentSessionId": "agt_m5-0001",
"workerSessionId": "wkr_m5-0001",
"operationId": "op_m5-agent-0001",
"serviceId": "hwlab-agent-worker",
"level": "info",
"message": "Agent dry-run hardware operation completed.",
"environment": "dev",
"metadata": {
"state": "completed"
},
"occurredAt": "2026-05-21T00:03:30.000Z"
}
],
"auditEvents": [
{
"auditId": "aud_m5-project-selected",
"traceId": "trc_m5-project",
"actorType": "user",
"actorId": "user_m5-dry-run",
"action": "project.select",
"targetType": "project",
"targetId": "proj_m5-mvp-e2e",
"projectId": "proj_m5-mvp-e2e",
"serviceId": "hwlab-cloud-api",
"environment": "dev",
"outcome": "succeeded",
"metadata": {
"dryRun": true
},
"occurredAt": "2026-05-21T00:00:00.000Z"
},
{
"auditId": "aud_m5-gateway-started",
"traceId": "trc_m5-gateway",
"actorType": "service",
"actorId": "service_hwlab-gateway",
"action": "gateway.session.start",
"targetType": "gateway_session",
"targetId": "gws_m5-0001",
"projectId": "proj_m5-mvp-e2e",
"gatewaySessionId": "gws_m5-0001",
"serviceId": "hwlab-gateway",
"environment": "dev",
"outcome": "succeeded",
"metadata": {
"dryRun": true
},
"occurredAt": "2026-05-21T00:00:30.000Z"
},
{
"auditId": "aud_m5-wiring-applied",
"traceId": "trc_m5-wiring",
"actorType": "service",
"actorId": "service_hwlab-patch-panel",
"action": "wiring.apply",
"targetType": "wiring_config",
"targetId": "wir_m5-0001",
"projectId": "proj_m5-mvp-e2e",
"gatewaySessionId": "gws_m5-0001",
"serviceId": "hwlab-patch-panel",
"environment": "dev",
"outcome": "succeeded",
"metadata": {
"patchPanelStatusId": "pps_m5-0001",
"dryRun": true
},
"occurredAt": "2026-05-21T00:01:00.000Z"
},
{
"auditId": "aud_m5-direct-operation",
"traceId": "trc_m5-direct-0001",
"actorType": "user",
"actorId": "user_m5-dry-run",
"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",
"serviceId": "hwlab-cloud-api",
"environment": "dev",
"outcome": "succeeded",
"metadata": {
"dryRun": true
},
"occurredAt": "2026-05-21T00:02:30.000Z"
},
{
"auditId": "aud_m5-agent-session",
"traceId": "trc_m5-agent-session",
"actorType": "agent",
"actorId": "agent_m5-dry-run",
"action": "agent.session.start",
"targetType": "agent_session",
"targetId": "agt_m5-0001",
"projectId": "proj_m5-mvp-e2e",
"workerSessionId": "wkr_m5-0001",
"serviceId": "hwlab-agent-mgr",
"environment": "dev",
"outcome": "succeeded",
"metadata": {
"dryRun": true
},
"occurredAt": "2026-05-21T00:02:45.000Z"
},
{
"auditId": "aud_m5-agent-operation",
"traceId": "trc_m5-agent-0001",
"actorType": "worker",
"actorId": "worker_m5-dry-run",
"action": "hardware.operation.request",
"targetType": "hardware_operation",
"targetId": "op_m5-agent-0001",
"projectId": "proj_m5-mvp-e2e",
"gatewaySessionId": "gws_m5-0001",
"workerSessionId": "wkr_m5-0001",
"operationId": "op_m5-agent-0001",
"serviceId": "hwlab-agent-worker",
"environment": "dev",
"outcome": "succeeded",
"metadata": {
"agentSessionId": "agt_m5-0001",
"dryRun": true
},
"occurredAt": "2026-05-21T00:03:30.000Z"
},
{
"auditId": "aud_m5-cleanup",
"traceId": "trc_m5-cleanup",
"actorType": "worker",
"actorId": "worker_m5-dry-run",
"action": "worker.cleanup",
"targetType": "worker_session",
"targetId": "wkr_m5-0001",
"projectId": "proj_m5-mvp-e2e",
"gatewaySessionId": "gws_m5-0001",
"workerSessionId": "wkr_m5-0001",
"serviceId": "hwlab-agent-worker",
"environment": "dev",
"outcome": "succeeded",
"metadata": {
"cleanupId": "cln_m5-worker",
"dryRun": true
},
"occurredAt": "2026-05-21T00:05:00.000Z"
}
],
"evidenceRecords": [
{
"evidenceId": "evi_m5-direct-0001",
"projectId": "proj_m5-mvp-e2e",
"operationId": "op_m5-direct-0001",
"kind": "trace",
"uri": "fixtures/mvp/m5-e2e/evidence/direct-operation.txt",
"mimeType": "text/plain",
"sha256": "4cd5cc2c942501b55f7a32f4184e9a1c920b31f13110f44ec68ddc0ad7dc1e34",
"sizeBytes": 180,
"serviceId": "hwlab-cloud-api",
"environment": "dev",
"metadata": {
"traceId": "trc_m5-direct-0001",
"dryRun": true
},
"createdAt": "2026-05-21T00:02:40.000Z"
},
{
"evidenceId": "evi_m5-agent-0001",
"projectId": "proj_m5-mvp-e2e",
"operationId": "op_m5-agent-0001",
"agentSessionId": "agt_m5-0001",
"workerSessionId": "wkr_m5-0001",
"kind": "trace",
"uri": "fixtures/mvp/m5-e2e/evidence/agent-operation.txt",
"mimeType": "text/plain",
"sha256": "96e7ffa99efd78b3d5d1b1dfd08be2f077f618dacf786b47f764794714c15c1c",
"sizeBytes": 178,
"serviceId": "hwlab-agent-worker",
"environment": "dev",
"metadata": {
"traceId": "trc_m5-agent-0001",
"dryRun": true
},
"createdAt": "2026-05-21T00:03:40.000Z"
}
],
"cleanup": [
{
"cleanupId": "cln_m5-worker",
"targetType": "worker_session",
"targetId": "wkr_m5-0001",
"status": "completed",
"serviceId": "hwlab-agent-worker",
"environment": "dev",
"requires": [
"op_m5-agent-0001",
"evi_m5-agent-0001"
],
"outputs": {
"workerSessionStatus": "completed",
"workspaceReleased": true,
"gatewaySessionClosed": false
},
"completedAt": "2026-05-21T00:05:00.000Z"
},
{
"cleanupId": "cln_m5-gateway-state",
"targetType": "gateway_session",
"targetId": "gws_m5-0001",
"status": "completed",
"serviceId": "hwlab-gateway",
"environment": "dev",
"requires": [
"op_m5-direct-0001",
"op_m5-agent-0001"
],
"outputs": {
"transientStateCleared": true,
"patchPanelStatePreservedForEvidence": true
},
"completedAt": "2026-05-21T00:05:10.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"
]
}
],
"expectedSequence": [
"step-dev-health",
"step-gateway-box-status",
"step-wiring",
"step-direct-hardware-call",
"step-audit",
"step-agent-session",
"step-agent-hardware-call",
"step-evidence",
"step-cleanup"
],
"realDevGate": {
"command": "hwlab-cli test e2e --env dev --mvp",
"requiresAllBlockersClear": true,
"requiresDryRunPass": true,
"requiresArtifactObservability": true,
"requiresD601RouteObservation": true,
"requiresHumanApprovalForRealDev": true
}
}