{
"request": "Evaluate the workload health of the provided app_code + component_code in its dev / nonprod environment ",
"references": [
"app_code:mzcld-demo",
"component_code:agentplat",
"project_id:moz-fx-mzcld-demo-nonprod"
],
"sourceContext": {}
}Unable to evaluate workload health for mzcld-demo/agentplat in the nonprod environment (project moz-fx-mzcld-demo-nonprod). Tenant context was successfully read and confirms the action envelope (min_replicas=1, max_replicas=3, restart_budget_per_hour=2), but every subsequent read call needed to correlate signals failed with permission errors: the Kubernetes API rejected the workload read (403, service account mzcld-demo-dev/mzcld-demo lacks 'get' on deployments in namespace mzcld-demo), the Prometheus/Cloud Monitoring API rejected all metrics queries (403, missing monitoring.timeSeries.list on the nonprod project), and Cloud Logging rejected the log query (403, no accessible log views). Because none of the required traffic, resource, or current-state signals could be retrieved, and the alert's failure pattern (if any) could not be confirmed via logs, no action can be responsibly proposed. Recommend fixing the service account/IAM bindings (deployments get/list in mzcld-demo namespace, monitoring.timeSeries.list on moz-fx-mzcld-demo-nonprod, and log view access) before this alert can be properly triaged.
[
{
"capability": "tenant.context.read",
"args": {
"tenant": "mzcld-demo"
},
"result": {
"tenant": "mzcld-demo",
"function": "webservices",
"risk_level": "low",
"owners": [
"workgroups/mzcld-demo"
],
"namespaces": [
"mzcld-demo"
],
"projects": [
"moz-fx-mzcld-demo-nonprod",
"moz-fx-mzcld-demo-prod"
],
"workloads": {
"agentplat": {
"kind": "Deployment",
"min_replicas": 1,
"max_replicas": 3,
"restart_budget_per_hour": 2
},
"mzcld-demo": {
"kind": "Deployment",
"min_replicas": 1,
"max_replicas": 3,
"restart_budget_per_hour": 2
}
},
"source": "https://github.com/mozilla/global-platform-admin/blob/main/tenants/mzcld-demo.yaml"
}
},
{
"capability": "k8s.workload.read",
"args": {
"namespace": "mzcld-demo",
"workload": "agentplat"
},
"result": {
"error": "k8s read mzcld-demo/agentplat failed: (403)\nReason: Forbidden\nHTTP response headers: HTTPHeaderDict({'Audit-Id': '50443bc6-4906-4e7a-9a9b-ec4683f2960b', 'Cache-Control': 'no-cache, private', 'Content-Type': 'application/json', 'X-Content-Type-Options': 'nosniff', 'X-Kubernetes-Pf-Flowschema-Uid': 'eab5f5d9-a9f6-4d1f-b07b-109061dd4ab6', 'X-Kubernetes-Pf-Prioritylevel-Uid': '77a566ac-7891-469e-a894-87edbc1d0f8e', 'Date': 'Thu, 23 Jul 2026 20:23:17 GMT', 'Content-Length': '372'})\nHTTP response body: {\"kind\":\"Status\",\"apiVersion\":\"v1\",\"metadata\":{},\"status\":\"Failure\",\"message\":\"deployments.apps \\\"agentplat\\\" is forbidden: User \\\"system:serviceaccount:mzcld-demo-dev:mzcld-demo\\\" cannot get resource \\\"deployments\\\" in API group \\\"apps\\\" in the namespace \\\"mzcld-demo\\\"\",\"reason\":\"Forbidden\",\"details\":{\"name\":\"agentplat\",\"group\":\"apps\",\"kind\":\"deployments\"},\"code\":403}\n\n"
}
},
{
"capability": "metrics.query",
"args": {
"metric": "request_rate",
"resource": "agentplat",
"project": "moz-fx-mzcld-demo-nonprod",
"namespace": "mzcld-demo",
"window": "30m"
},
"result": {
"error": "prometheus query failed: 403 Forbidden {\n \"error\": {\n \"code\": 403,\n \"message\": \"Permission 'monitoring.timeSeries.list' denied on resource 'projects/867614357840' (or it may not exist)\",\n \"status\": \"PERMISSION_DENIED\"\n }\n}"
}
},
{
"capability": "metrics.query",
"args": {
"metric": "p95_latency",
"resource": "agentplat",
"project": "moz-fx-mzcld-demo-nonprod",
"namespace": "mzcld-demo",
"window": "30m"
},
"result": {
"error": "prometheus query failed: 403 Forbidden {\n \"error\": {\n \"code\": 403,\n \"message\": \"Permission 'monitoring.timeSeries.list' denied on resource 'projects/867614357840' (or it may not exist)\",\n \"status\": \"PERMISSION_DENIED\"\n }\n}"
}
},
{
"capability": "metrics.query",
"args": {
"metric": "error_rate",
"resource": "agentplat",
"project": "moz-fx-mzcld-demo-nonprod",
"namespace": "mzcld-demo",
"window": "30m"
},
"result": {
"error": "prometheus query failed: 403 Forbidden {\n \"error\": {\n \"code\": 403,\n \"message\": \"Permission 'monitoring.timeSeries.list' denied on resource 'projects/867614357840' (or it may not exist)\",\n \"status\": \"PERMISSION_DENIED\"\n }\n}"
}
},
{
"capability": "metrics.query",
"args": {
"metric": "container_cpu_usage_seconds_total",
"resource": "agentplat",
"project": "moz-fx-mzcld-demo-nonprod",
"namespace": "mzcld-demo",
"window": "30m"
},
"result": {
"error": "prometheus query failed: 403 Forbidden {\n \"error\": {\n \"code\": 403,\n \"message\": \"Permission 'monitoring.timeSeries.list' denied on resource 'projects/867614357840' (or it may not exist)\",\n \"status\": \"PERMISSION_DENIED\"\n }\n}"
}
},
{
"capability": "metrics.query",
"args": {
"metric": "container_memory_working_set_bytes",
"resource": "agentplat",
"project": "moz-fx-mzcld-demo-nonprod",
"namespace": "mzcld-demo",
"window": "30m"
},
"result": {
"error": "prometheus query failed: 403 Forbidden {\n \"error\": {\n \"code\": 403,\n \"message\": \"Permission 'monitoring.timeSeries.list' denied on resource 'projects/867614357840' (or it may not exist)\",\n \"status\": \"PERMISSION_DENIED\"\n }\n}"
}
},
{
"capability": "logs.query",
"args": {
"resource": "agentplat",
"project": "moz-fx-mzcld-demo-nonprod",
"namespace": "mzcld-demo",
"window": "30m"
},
"result": {
"error": "cloud logging query failed: 403 Permission denied for all log views"
}
}
]{
"model": "claude-sonnet-5",
"input_tokens": 17132,
"output_tokens": 2422,
"estimated_cost_usd": 0.087726
}[]