Files
pikasTech-HWLAB/reports/dev-gate/dev-m3-hardware-loop.json
T
Lyon 357a68bb95 fix: layer dev DB readiness evidence
Refs #49

Merged by commander after reviewing Code Queue task codex_1779422762669_1. Adds redacted DB readiness layering and refreshes DEV endpoint/report evidence. Follow-up: deploy/verify the new readiness probe in DEV via standard image CI/CD.
2026-05-22 12:27:01 +08:00

199 lines
7.4 KiB
JSON

{
"$schema": "https://hwlab.pikastech.local/schemas/dev-m3-hardware-loop-report.schema.json",
"$id": "https://hwlab.pikastech.local/reports/dev-gate/dev-m3-hardware-loop.json",
"reportVersion": "v1",
"issue": "pikasTech/HWLAB#38",
"taskId": "dev-m3-hardware-loop",
"commitId": "70bb9168ead2",
"acceptanceLevel": "dev_m3_hardware_loop",
"devOnly": true,
"prodDisabled": true,
"sourceContract": {
"status": "pass",
"documents": [
"docs/dev-acceptance-matrix.md",
"docs/m3-hardware-loop.md",
"fixtures/mvp/m3-hardware-loop/topology.json"
],
"summary": "Source contracts define DEV-only M3 simulator wiring and prohibit fixture output as live evidence."
},
"validationCommands": [
"node --check scripts/dev-m3-hardware-loop-smoke.mjs",
"node --check scripts/validate-dev-m3-cardinality.mjs",
"node scripts/validate-dev-m3-cardinality.mjs",
"node scripts/dev-m3-hardware-loop-smoke.mjs --live --confirm-dev --confirmed-non-production",
"node --check scripts/validate-dev-gate-report.mjs",
"node scripts/validate-dev-gate-report.mjs"
],
"runtimeTarget": {
"endpoint": "http://74.48.78.17:16667",
"namespace": "hwlab-dev",
"environment": "dev",
"requiredBoxSimulators": 2,
"requiredGatewaySimulators": 2,
"realHardwareAllowed": false,
"prodAllowed": false
},
"safetyGates": {
"liveFlagRequired": true,
"confirmDevRequired": true,
"confirmedNonProductionRequired": true,
"prodForbidden": true,
"realHardwareForbidden": true,
"secretReadForbidden": true,
"forcePushForbidden": true,
"unideskRuntimeSubstitutionForbidden": true
},
"liveChecks": [
{
"id": "static-contract-parse",
"status": "pass",
"summary": "DEV M3 smoke contract files were readable before live probing.",
"evidence": [
"docs/dev-acceptance-matrix.md",
"docs/m3-hardware-loop.md"
]
},
{
"id": "endpoint-freeze",
"status": "pass",
"summary": "DEV endpoint is frozen at http://74.48.78.17:16667.",
"evidence": [
"http://74.48.78.17:16667"
]
},
{
"id": "dev-ingress-health",
"status": "blocked",
"blockerClass": "network_blocker",
"summary": "DEV ingress at http://74.48.78.17:16667 did not return reachable HWLAB DEV health.",
"evidence": [
"{\"url\":\"http://74.48.78.17:16667/health/live\",\"method\":\"GET\",\"startedAt\":\"2026-05-21T17:29:33.794Z\",\"observedAt\":\"2026-05-21T17:29:33.964Z\",\"reached\":false,\"ok\":false,\"error\":{\"name\":\"Error\",\"message\":\"connect ECONNREFUSED 74.48.78.17:16667\",\"code\":\"ECONNREFUSED\"}}",
"{\"url\":\"http://74.48.78.17:16667/health\",\"method\":\"GET\",\"startedAt\":\"2026-05-21T17:29:33.964Z\",\"observedAt\":\"2026-05-21T17:29:34.132Z\",\"reached\":false,\"ok\":false,\"error\":{\"name\":\"Error\",\"message\":\"connect ECONNREFUSED 74.48.78.17:16667\",\"code\":\"ECONNREFUSED\"}}",
"{\"url\":\"http://74.48.78.17:16667/live\",\"method\":\"GET\",\"startedAt\":\"2026-05-21T17:29:34.132Z\",\"observedAt\":\"2026-05-21T17:29:34.313Z\",\"reached\":false,\"ok\":false,\"error\":{\"name\":\"Error\",\"message\":\"connect ECONNREFUSED 74.48.78.17:16667\",\"code\":\"ECONNREFUSED\"}}",
"{\"url\":\"http://74.48.78.17:16667/v1\",\"method\":\"GET\",\"startedAt\":\"2026-05-21T17:29:34.314Z\",\"observedAt\":\"2026-05-21T17:29:34.479Z\",\"reached\":false,\"ok\":false,\"error\":{\"name\":\"Error\",\"message\":\"connect ECONNREFUSED 74.48.78.17:16667\",\"code\":\"ECONNREFUSED\"}}"
]
},
{
"id": "two-box-simu-online",
"status": "not_run",
"summary": "Stopped at DEV ingress per the DEV smoke matrix.",
"evidence": [
"No live DEV evidence collected for this check."
]
},
{
"id": "two-gateway-simu-online",
"status": "not_run",
"summary": "Stopped at DEV ingress per the DEV smoke matrix.",
"evidence": [
"No live DEV evidence collected for this check."
]
},
{
"id": "patch-panel-healthy",
"status": "not_run",
"summary": "Stopped at DEV ingress per the DEV smoke matrix.",
"evidence": [
"No live DEV evidence collected for this check."
]
},
{
"id": "wiring-do1-di1-applied",
"status": "not_run",
"summary": "Stopped at DEV ingress per the DEV smoke matrix.",
"evidence": [
"No live DEV evidence collected for this check."
]
},
{
"id": "direct-call-do-write-di-read",
"status": "not_run",
"summary": "Stopped at DEV ingress per the DEV smoke matrix.",
"evidence": [
"No live DEV evidence collected for this check."
]
},
{
"id": "audit-evidence-traceable",
"status": "not_run",
"summary": "Stopped at DEV ingress per the DEV smoke matrix.",
"evidence": [
"No live DEV evidence collected for this check."
]
}
],
"readOnlySupplementalEvidence": [
{
"id": "deploy-skeleton-m3-cardinality",
"status": "manifest-ready",
"blockerClass": null,
"source": "deploy/k8s/base/workloads.yaml",
"summary": "Checked-in DEV deploy skeleton declares M3 cardinality: two box simulators, two gateway simulators, and one patch panel.",
"evidence": {
"required": {
"hwlab-box-simu": 2,
"hwlab-gateway-simu": 2,
"hwlab-patch-panel": 1,
"wiring": "box-simu-1 DO1 -> box-simu-2 DI1"
},
"observed": {
"hwlab-box-simu": {
"replicas": 2,
"env": {
"HWLAB_BOX_ID": "boxsimu_1,boxsimu_2"
}
},
"hwlab-gateway-simu": {
"replicas": 2,
"env": {
"HWLAB_BOX_RESOURCES": "res_boxsimu_1,res_boxsimu_2"
}
},
"hwlab-patch-panel": {
"replicas": 1,
"env": {}
}
}
},
"validationCommand": "node scripts/validate-dev-m3-cardinality.mjs",
"requiredFollowUp": "Static DEV manifest cardinality is source-ready; live DEV M3 evidence still depends on edge/runtime reachability and direct DEV simulator targets."
}
],
"localRuntimeObservations": [
{
"id": "docker-hwlab-containers",
"status": "not_observed",
"command": "docker ps --format {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}",
"summary": "No running docker container name/image/port line contained hwlab-."
},
{
"id": "kubectl-hwlab-dev",
"status": "unavailable",
"command": "command -v kubectl",
"summary": "kubectl is not available in this runner, so hwlab-dev namespace state was not observed."
}
],
"liveOperation": {
"status": "not_run",
"operationId": "not_observed",
"traceId": "not_observed",
"auditId": "not_observed",
"evidenceId": "not_observed",
"summary": "No live do.write -> di.read operation was attempted because DEV ingress is blocked."
},
"blockers": [
{
"type": "network_blocker",
"scope": "dev-ingress-health",
"status": "open",
"summary": "Blocked at the #33 DEV runtime readiness condition: public DEV ingress does not accept HWLAB health requests, so #36/M3 hardware-loop checks were not reached."
}
],
"summary": {
"status": "blocked",
"observedAt": "2026-05-21T17:29:33.789Z",
"result": "No live DEV M3 evidence was produced; fixture-backed local evidence was not used as a substitute."
}
}