468 lines
14 KiB
JSON
468 lines
14 KiB
JSON
{
|
|
"issue": "pikasTech/HWLAB#311",
|
|
"mode": "dev-live",
|
|
"generatedAt": "2026-05-24T00:18:29.459Z",
|
|
"target": {
|
|
"environment": "dev",
|
|
"namespace": "hwlab-dev",
|
|
"prodAllowed": false,
|
|
"apiHealthUrl": "http://74.48.78.17:16667/health/live",
|
|
"apiV1Url": "http://74.48.78.17:16667/v1",
|
|
"m3Target": "api"
|
|
},
|
|
"actions": {
|
|
"healthLiveReadAttempted": true,
|
|
"v1ReadAttempted": true,
|
|
"m3MutationAttempted": true,
|
|
"m3MutationAllowed": true
|
|
},
|
|
"apiHealth": {
|
|
"check": "GET /health/live",
|
|
"httpStatus": 200,
|
|
"reachable": true,
|
|
"serviceId": "hwlab-cloud-api",
|
|
"environment": "dev",
|
|
"status": "ok",
|
|
"ready": true,
|
|
"runtime": {
|
|
"adapter": "postgres",
|
|
"durable": true,
|
|
"durableRequested": true,
|
|
"ready": true,
|
|
"status": "ready",
|
|
"blocker": null,
|
|
"liveRuntimeEvidence": true,
|
|
"requiredEvidence": "runtime_adapter_schema_migration_read_query",
|
|
"blockedLayer": null,
|
|
"gates": {
|
|
"ssl": {
|
|
"checked": true,
|
|
"ready": true,
|
|
"status": "ready",
|
|
"blocker": null
|
|
},
|
|
"auth": {
|
|
"checked": true,
|
|
"ready": true,
|
|
"status": "ready",
|
|
"blocker": null
|
|
},
|
|
"schema": {
|
|
"checked": true,
|
|
"ready": true,
|
|
"status": "ready",
|
|
"blocker": null
|
|
},
|
|
"migration": {
|
|
"checked": true,
|
|
"ready": true,
|
|
"status": "ready",
|
|
"blocker": null
|
|
},
|
|
"durability": {
|
|
"checked": true,
|
|
"ready": true,
|
|
"status": "ready",
|
|
"blocker": null
|
|
}
|
|
}
|
|
},
|
|
"runtimeDurableReadiness": {
|
|
"status": "ready",
|
|
"ready": true,
|
|
"classification": "runtime_durable_ready",
|
|
"reasonCode": "runtime_durable_ready",
|
|
"reason": "runtime durable ready; adapter=postgres; queryResult=durable_readiness_ready",
|
|
"impact": "M3 durable postflight may run because runtime persistence readiness is green.",
|
|
"safeNextAction": "Continue with repo-owned DEV CD postflight; do not read or print Secret values.",
|
|
"retryable": true,
|
|
"readonly": false,
|
|
"evidence": {
|
|
"adapter": "postgres",
|
|
"durable": true,
|
|
"runtimeReady": true,
|
|
"durabilityReady": true,
|
|
"liveRuntimeEvidence": true,
|
|
"blocker": null,
|
|
"blockedLayer": null,
|
|
"queryResult": "durable_readiness_ready",
|
|
"readyQueryResult": true,
|
|
"rawStatus": "ok",
|
|
"postgresRequired": true,
|
|
"gates": {
|
|
"ssl": {
|
|
"checked": true,
|
|
"ready": true,
|
|
"status": "ready",
|
|
"blocker": null
|
|
},
|
|
"auth": {
|
|
"checked": true,
|
|
"ready": true,
|
|
"status": "ready",
|
|
"blocker": null
|
|
},
|
|
"schema": {
|
|
"checked": true,
|
|
"ready": true,
|
|
"status": "ready",
|
|
"blocker": null
|
|
},
|
|
"migration": {
|
|
"checked": true,
|
|
"ready": true,
|
|
"status": "ready",
|
|
"blocker": null
|
|
},
|
|
"durability": {
|
|
"checked": true,
|
|
"ready": true,
|
|
"status": "ready",
|
|
"blocker": null
|
|
}
|
|
},
|
|
"secretMaterialRead": false
|
|
}
|
|
},
|
|
"db": {
|
|
"ready": true,
|
|
"connected": true,
|
|
"liveDbEvidence": true,
|
|
"endpointSource": "secret-url-host",
|
|
"connectionResult": "connected",
|
|
"endpointRedacted": true,
|
|
"valueRedacted": true,
|
|
"runtimeReadiness": {
|
|
"ready": true,
|
|
"status": "ready",
|
|
"blocker": null,
|
|
"queryResult": "durable_readiness_ready",
|
|
"requiredEvidence": "runtime_adapter_schema_migration_read_query"
|
|
}
|
|
},
|
|
"readiness": {
|
|
"ready": true,
|
|
"status": "ok",
|
|
"durabilityReady": true,
|
|
"durabilityBlockedLayer": null
|
|
},
|
|
"blockerCodes": [],
|
|
"m3IoControl": null,
|
|
"error": null
|
|
},
|
|
"apiV1": {
|
|
"check": "GET /v1",
|
|
"httpStatus": 200,
|
|
"reachable": true,
|
|
"serviceId": "hwlab-cloud-api",
|
|
"environment": null,
|
|
"status": "ok",
|
|
"ready": true,
|
|
"runtime": {
|
|
"adapter": "postgres",
|
|
"durable": true,
|
|
"durableRequested": true,
|
|
"ready": true,
|
|
"status": "ready",
|
|
"blocker": null,
|
|
"liveRuntimeEvidence": true,
|
|
"requiredEvidence": "runtime_adapter_schema_migration_read_query",
|
|
"blockedLayer": null,
|
|
"gates": {
|
|
"ssl": {
|
|
"checked": true,
|
|
"ready": true,
|
|
"status": "ready",
|
|
"blocker": null
|
|
},
|
|
"auth": {
|
|
"checked": true,
|
|
"ready": true,
|
|
"status": "ready",
|
|
"blocker": null
|
|
},
|
|
"schema": {
|
|
"checked": true,
|
|
"ready": true,
|
|
"status": "ready",
|
|
"blocker": null
|
|
},
|
|
"migration": {
|
|
"checked": true,
|
|
"ready": true,
|
|
"status": "ready",
|
|
"blocker": null
|
|
},
|
|
"durability": {
|
|
"checked": true,
|
|
"ready": true,
|
|
"status": "ready",
|
|
"blocker": null
|
|
}
|
|
}
|
|
},
|
|
"runtimeDurableReadiness": {
|
|
"status": "ready",
|
|
"ready": true,
|
|
"classification": "runtime_durable_ready",
|
|
"reasonCode": "runtime_durable_ready",
|
|
"reason": "runtime durable ready; adapter=postgres; queryResult=durable_readiness_ready",
|
|
"impact": "M3 durable postflight may run because runtime persistence readiness is green.",
|
|
"safeNextAction": "Continue with repo-owned DEV CD postflight; do not read or print Secret values.",
|
|
"retryable": true,
|
|
"readonly": false,
|
|
"evidence": {
|
|
"adapter": "postgres",
|
|
"durable": true,
|
|
"runtimeReady": true,
|
|
"durabilityReady": true,
|
|
"liveRuntimeEvidence": true,
|
|
"blocker": null,
|
|
"blockedLayer": null,
|
|
"queryResult": "durable_readiness_ready",
|
|
"readyQueryResult": true,
|
|
"rawStatus": "ok",
|
|
"postgresRequired": true,
|
|
"gates": {
|
|
"ssl": {
|
|
"checked": true,
|
|
"ready": true,
|
|
"status": "ready",
|
|
"blocker": null
|
|
},
|
|
"auth": {
|
|
"checked": true,
|
|
"ready": true,
|
|
"status": "ready",
|
|
"blocker": null
|
|
},
|
|
"schema": {
|
|
"checked": true,
|
|
"ready": true,
|
|
"status": "ready",
|
|
"blocker": null
|
|
},
|
|
"migration": {
|
|
"checked": true,
|
|
"ready": true,
|
|
"status": "ready",
|
|
"blocker": null
|
|
},
|
|
"durability": {
|
|
"checked": true,
|
|
"ready": true,
|
|
"status": "ready",
|
|
"blocker": null
|
|
}
|
|
},
|
|
"secretMaterialRead": false
|
|
}
|
|
},
|
|
"db": {
|
|
"ready": true,
|
|
"connected": true,
|
|
"liveDbEvidence": true,
|
|
"endpointSource": "secret-url-host",
|
|
"connectionResult": "connected",
|
|
"endpointRedacted": true,
|
|
"valueRedacted": true,
|
|
"runtimeReadiness": {
|
|
"ready": true,
|
|
"status": "ready",
|
|
"blocker": null,
|
|
"queryResult": "durable_readiness_ready",
|
|
"requiredEvidence": "runtime_adapter_schema_migration_read_query"
|
|
}
|
|
},
|
|
"readiness": {
|
|
"ready": true,
|
|
"status": "ok",
|
|
"durabilityReady": true,
|
|
"durabilityBlockedLayer": null
|
|
},
|
|
"blockerCodes": [],
|
|
"m3IoControl": {
|
|
"route": "/v1/m3/io",
|
|
"status": "available",
|
|
"enabled": true,
|
|
"contractVersion": "m3-io-control-v1",
|
|
"directFrontendGatewayOrBoxAccess": false,
|
|
"genericHardwareRpcExposedToFrontend": false
|
|
},
|
|
"error": null
|
|
},
|
|
"m3": {
|
|
"mode": "dev-live",
|
|
"status": "blocked",
|
|
"classification": "source_contract_failed",
|
|
"trustedGreen": false,
|
|
"result": "SOURCE/static contract failed.",
|
|
"operationCount": 4,
|
|
"persisted": true,
|
|
"persistenceContract": {
|
|
"contractVersion": "m3-do1-true-false-persisted-v1",
|
|
"requiredRoute": "res_boxsimu_1:DO1 -> hwlab-patch-panel -> res_boxsimu_2:DI1",
|
|
"requiredValues": [
|
|
true,
|
|
true,
|
|
false,
|
|
false
|
|
],
|
|
"ready": true,
|
|
"sequence": [
|
|
{
|
|
"id": "write-do1-true",
|
|
"action": "do.write",
|
|
"expectedValue": true,
|
|
"observedValue": true,
|
|
"status": "succeeded",
|
|
"idsPresent": true,
|
|
"valueMatches": true,
|
|
"evidenceGreen": true,
|
|
"persisted": true
|
|
},
|
|
{
|
|
"id": "read-di1-true",
|
|
"action": "di.read",
|
|
"expectedValue": true,
|
|
"observedValue": true,
|
|
"status": "succeeded",
|
|
"idsPresent": true,
|
|
"valueMatches": true,
|
|
"evidenceGreen": true,
|
|
"persisted": true
|
|
},
|
|
{
|
|
"id": "write-do1-false",
|
|
"action": "do.write",
|
|
"expectedValue": false,
|
|
"observedValue": false,
|
|
"status": "succeeded",
|
|
"idsPresent": true,
|
|
"valueMatches": true,
|
|
"evidenceGreen": true,
|
|
"persisted": true
|
|
},
|
|
{
|
|
"id": "read-di1-false",
|
|
"action": "di.read",
|
|
"expectedValue": false,
|
|
"observedValue": false,
|
|
"status": "succeeded",
|
|
"idsPresent": true,
|
|
"valueMatches": true,
|
|
"evidenceGreen": true,
|
|
"persisted": true
|
|
}
|
|
]
|
|
},
|
|
"operations": [
|
|
{
|
|
"id": "write-do1-true",
|
|
"action": "do.write",
|
|
"status": "succeeded",
|
|
"operationId": "op_m3_do_write_63f8e5ee-3d78-4df2-b54f-d46b0308bd2a",
|
|
"traceId": "trc_m3_io_e2e_write_do1_true_9d47c939-0464-437a-a2a5-90cff6714434",
|
|
"auditId": "aud_m3_do_write_63f8e5ee-3d78-4df2-b54f-d46b0308bd2a_succeeded",
|
|
"evidenceId": "evd_m3_do_write_63f8e5ee-3d78-4df2-b54f-d46b0308bd2a_succeeded",
|
|
"resultValue": true,
|
|
"evidenceState": {
|
|
"status": "green",
|
|
"durable": true,
|
|
"sourceKind": "DEV-LIVE",
|
|
"writeStatus": "persisted"
|
|
},
|
|
"blocker": null
|
|
},
|
|
{
|
|
"id": "read-di1-true",
|
|
"action": "di.read",
|
|
"status": "succeeded",
|
|
"operationId": "op_m3_di_read_73166d40-4572-4f6d-a96e-8e20f07a10dd",
|
|
"traceId": "trc_m3_io_e2e_read_di1_true_a81f0788-33ab-42e1-a16e-16e2c171db1b",
|
|
"auditId": "aud_m3_di_read_73166d40-4572-4f6d-a96e-8e20f07a10dd_succeeded",
|
|
"evidenceId": "evd_m3_di_read_73166d40-4572-4f6d-a96e-8e20f07a10dd_succeeded",
|
|
"resultValue": true,
|
|
"evidenceState": {
|
|
"status": "green",
|
|
"durable": true,
|
|
"sourceKind": "DEV-LIVE",
|
|
"writeStatus": "persisted"
|
|
},
|
|
"blocker": null
|
|
},
|
|
{
|
|
"id": "write-do1-false",
|
|
"action": "do.write",
|
|
"status": "succeeded",
|
|
"operationId": "op_m3_do_write_0c0af96e-09e0-4e08-ba3f-b1fdf1d4668a",
|
|
"traceId": "trc_m3_io_e2e_write_do1_false_9925768c-ca34-4b17-a9fa-344e7103ec97",
|
|
"auditId": "aud_m3_do_write_0c0af96e-09e0-4e08-ba3f-b1fdf1d4668a_succeeded",
|
|
"evidenceId": "evd_m3_do_write_0c0af96e-09e0-4e08-ba3f-b1fdf1d4668a_succeeded",
|
|
"resultValue": false,
|
|
"evidenceState": {
|
|
"status": "green",
|
|
"durable": true,
|
|
"sourceKind": "DEV-LIVE",
|
|
"writeStatus": "persisted"
|
|
},
|
|
"blocker": null
|
|
},
|
|
{
|
|
"id": "read-di1-false",
|
|
"action": "di.read",
|
|
"status": "succeeded",
|
|
"operationId": "op_m3_di_read_f656bcc9-3a3f-4aed-b59b-2d5d2edafff8",
|
|
"traceId": "trc_m3_io_e2e_read_di1_false_83b6a1c9-cd8f-402b-bee4-d4c7f3973832",
|
|
"auditId": "aud_m3_di_read_f656bcc9-3a3f-4aed-b59b-2d5d2edafff8_succeeded",
|
|
"evidenceId": "evd_m3_di_read_f656bcc9-3a3f-4aed-b59b-2d5d2edafff8_succeeded",
|
|
"resultValue": false,
|
|
"evidenceState": {
|
|
"status": "green",
|
|
"durable": true,
|
|
"sourceKind": "DEV-LIVE",
|
|
"writeStatus": "persisted"
|
|
},
|
|
"blocker": null
|
|
}
|
|
]
|
|
},
|
|
"blockers": [
|
|
{
|
|
"type": "runtime_blocker",
|
|
"scope": "m3-durable-postflight",
|
|
"status": "open",
|
|
"reason": "M3 true/false durable postflight did not produce trusted green persisted evidence.",
|
|
"impact": "M3 durable readiness cannot be accepted because trusted evidence is not green.",
|
|
"safeNextAction": "Fix the M3 control path or trusted-record persistence and rerun DEV runtime postflight.",
|
|
"retryable": true,
|
|
"summary": "M3 true/false durable postflight did not produce trusted green persisted evidence. Impact: M3 durable readiness cannot be accepted because trusted evidence is not green. Safe next action: Fix the M3 control path or trusted-record persistence and rerun DEV runtime postflight.",
|
|
"sourceIssue": "pikasTech/HWLAB#311",
|
|
"evidence": {
|
|
"classification": "source_contract_failed",
|
|
"trustedGreen": false,
|
|
"operationCount": 4
|
|
}
|
|
}
|
|
],
|
|
"safety": {
|
|
"devOnly": true,
|
|
"environment": "dev",
|
|
"prodAllowed": false,
|
|
"liveHttpReads": true,
|
|
"liveM3Writes": true,
|
|
"liveM3WritesRequireDurableRuntimeReady": true,
|
|
"readsKubernetesSecrets": false,
|
|
"writesKubernetesSecrets": false,
|
|
"secretValuesPrinted": false,
|
|
"dbUrlValueRedacted": true,
|
|
"endpointRedacted": true
|
|
},
|
|
"safetyRefusal": false,
|
|
"conclusion": {
|
|
"status": "blocked",
|
|
"summary": "DEV runtime postflight is blocked; M3 is skipped unless durable runtime readiness is proven first.",
|
|
"blockerCount": 1
|
|
}
|
|
}
|