Files
pikasTech-HWLAB/reports/dev-gate/dev-edge-health.json
T
2026-05-21 17:57:51 +00:00

152 lines
5.1 KiB
JSON

{
"$schema": "https://hwlab.pikastech.local/schemas/dev-gate-report.schema.json",
"$id": "https://hwlab.pikastech.local/reports/dev-gate/dev-edge-health.json",
"reportVersion": "v1",
"issue": "pikasTech/HWLAB#36",
"taskId": "dev-edge-health",
"commitId": "9b47ebe49f70",
"acceptanceLevel": "dev_edge_health",
"devOnly": true,
"prodDisabled": true,
"status": "not_run",
"generatedAt": "2026-05-21T17:57:41.742Z",
"namespace": "hwlab-dev",
"endpoint": "http://74.48.78.17:6667",
"sourceContract": {
"status": "pass",
"documents": [
"docs/dev-acceptance-matrix.md",
"docs/m0-contract-audit.md",
"docs/dev-edge-health.md",
"deploy/frp/README.md",
"deploy/master-edge/README.md"
],
"summary": "DEV edge health is pinned to the frozen HWLAB endpoint, frp reverse link, master edge proxy, and hwlab-dev services."
},
"validationCommands": [
"node --check scripts/validate-dev-gate-report.mjs",
"node scripts/validate-dev-gate-report.mjs",
"node --check scripts/dev-edge-health-smoke.mjs",
"node --check scripts/src/dev-edge-health-smoke-lib.mjs",
"node scripts/dev-edge-health-smoke.mjs --live --write-report"
],
"localSmoke": {
"status": "pass",
"commands": [
"node scripts/m1-contract-smoke.mjs"
],
"evidence": [
"npm run check includes internal/cloud/server.test.mjs and validates /health plus /health/live."
],
"summary": "Local cloud-api health checks pass and include service, commit, and image evidence fields."
},
"dryRun": {
"status": "not_run",
"commands": [
"node tools/hwlab-cli/bin/hwlab-cli.mjs test e2e --env dev --mvp --dry-run"
],
"evidence": [
"This edge-health task used the dedicated read-only smoke instead of the MVP e2e dry-run."
],
"summary": "MVP dry-run remains the generic gate command; edge health uses a narrower route smoke."
},
"devPreconditions": {
"status": "not_run",
"requirements": [
"http://74.48.78.17:6667/health returns HWLAB DEV JSON with service, commit, and image evidence",
"frps control on 74.48.78.17:7000 accepts the D601 frp client",
"hwlab-dev hwlab-edge-proxy, hwlab-tunnel-client, hwlab-router, and hwlab-cloud-api are observable",
"No PROD endpoint, secret read, restart, or UniDesk runtime substitute is used"
],
"summary": "live network probes require --live"
},
"blockers": [],
"edgeHealth": {
"generatedAt": "2026-05-21T17:57:41.742Z",
"mode": "contract-only",
"endpoint": "http://74.48.78.17:6667",
"status": "not_run",
"classification": "not_run",
"blocker": "live network probes require --live",
"contracts": {
"devEndpoint": "http://74.48.78.17:6667",
"frp": {
"frpcTargetsEdgeProxy": true,
"frpsTcpRemotePort6667": true,
"frpsUsesVhost6667": false,
"configRisk": "none"
},
"masterEdge": {
"endpoint": "http://74.48.78.17:6667",
"reverseLinkMode": "frp",
"reverseLinkClient": "hwlab-tunnel-client",
"publicPort": 6667
},
"deploy": {
"environment": "dev",
"namespace": "hwlab-dev",
"serviceCount": 13,
"edgeProxy": {
"serviceId": "hwlab-edge-proxy",
"image": "ghcr.io/pikastech/hwlab-edge-proxy:24eb3bf",
"namespace": "hwlab-dev",
"healthPath": "/health/live",
"profile": "dev",
"replicas": 1,
"env": {
"HWLAB_EDGE_LISTEN": "0.0.0.0:6667",
"HWLAB_EDGE_UPSTREAM": "http://hwlab-cloud-api.hwlab-dev.svc.cluster.local:6667"
}
},
"tunnelClient": {
"serviceId": "hwlab-tunnel-client",
"image": "ghcr.io/pikastech/hwlab-tunnel-client:24eb3bf",
"namespace": "hwlab-dev",
"healthPath": "/health/live",
"profile": "dev",
"replicas": 1,
"env": {
"HWLAB_TUNNEL_MODE": "frp-client",
"HWLAB_FRP_SERVER_ADDR": "74.48.78.17",
"HWLAB_FRP_PUBLIC_PORT": "6667"
}
},
"cloudApiDb": {
"status": "ready",
"ready": true,
"configReady": true,
"connected": false,
"connectionChecked": false,
"requiredEnv": [
{
"name": "HWLAB_CLOUD_DB_URL",
"present": true,
"redacted": true
},
{
"name": "HWLAB_CLOUD_DB_SSL_MODE",
"present": true,
"redacted": false
}
],
"missingEnv": [],
"secretRefs": [
{
"env": "HWLAB_CLOUD_DB_URL",
"secretName": "hwlab-cloud-api-dev-db",
"secretKey": "database-url",
"present": true,
"redacted": true
}
],
"liveDbEvidence": false,
"fixtureEvidence": false,
"secretMaterialRead": false,
"valuesRedacted": true,
"note": "Manifest-only DB env placeholder; this is not live DB evidence."
}
}
}
}
}