1354 lines
38 KiB
JSON
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
|
|
}
|
|
}
|