79 lines
2.5 KiB
JSON
79 lines
2.5 KiB
JSON
{
|
|
"date": "2026-10-15",
|
|
"scope": "Production diagnosis using a read-only application account and read-only SSH/system/PostgreSQL inspection. No production deployment or configuration changes.",
|
|
"productionVersion": "2.0.0",
|
|
"map": {
|
|
"cause": "PostgreSQL polledAt text with explicit offset is rejected by the ISO-only map validator; the whole topology snapshot is discarded.",
|
|
"before": {
|
|
"serverValidationErrors": 4,
|
|
"field": "polledAt",
|
|
"error": "invalid_format"
|
|
},
|
|
"localFix": {
|
|
"preservesExplicitTimeZone": true,
|
|
"rejectsMissingZoneAndInvalidCalendarDate": true,
|
|
"exactPrivateResponseAccepted": {
|
|
"servers": 4,
|
|
"tunnels": 25,
|
|
"probes": 0
|
|
}
|
|
},
|
|
"checks": {
|
|
"unitPassed": 6,
|
|
"e2ePassed": 13,
|
|
"typescript": "passed",
|
|
"scopedEslint": "passed"
|
|
},
|
|
"deployed": false
|
|
},
|
|
"traffic": {
|
|
"confirmed": "REST history/list/detail load once per scope/retry; live SSE keeps updating separately. History can become stale while live rate is current.",
|
|
"calculationNotYetFullyAccepted": true,
|
|
"rawResponsesPrivate": true
|
|
},
|
|
"performance": {
|
|
"host": {
|
|
"vcpu": 1,
|
|
"memoryMiB": 1973,
|
|
"swapMiB": 0,
|
|
"loadAverage": [
|
|
4.62,
|
|
4.87,
|
|
5.09
|
|
],
|
|
"rootUsedPercent": 46
|
|
},
|
|
"sample": {
|
|
"postgresCpuPercent": 66.51,
|
|
"postgresMemory": "642.6MiB",
|
|
"backendCpuPercent": 3.26,
|
|
"cpuIdlePercent": 0,
|
|
"ioWaitPercent": [
|
|
34,
|
|
29
|
|
]
|
|
},
|
|
"schedulerRuns": {
|
|
"estimatedLiveRows": 1064090,
|
|
"tableSize": "853 MB",
|
|
"indexes": "primary key and (job_key, started_at), no finished_at index",
|
|
"observedActiveQuery": "DELETE FROM scheduler_runs WHERE finished_at < $1",
|
|
"wait": "IO/AioIoCompletion",
|
|
"retention": "30 days after every recorded scheduler job",
|
|
"explainEquivalentSelect": "Gather / Parallel Seq Scan"
|
|
},
|
|
"tcpConnectMsByAnonymousServerId": {
|
|
"1": 36,
|
|
"2": 3,
|
|
"3": 50,
|
|
"4": 6
|
|
},
|
|
"limits": [
|
|
"TCP connect success does not prove TLS/REST authentication or rule out previous failures.",
|
|
"The native HTTP client timeout also includes time queued in maxSockets=2; actual queue delay has not been measured.",
|
|
"Database temp-byte and deadlock counters are cumulative with an unknown reset epoch; not attributed to this release.",
|
|
"No proof that database pressure alone caused every REST timeout."
|
|
]
|
|
}
|
|
}
|